diff --git a/contrib/netcdf/4.4.1.1/CMakeLists.txt b/contrib/netcdf/4.4.1.1/CMakeLists.txt deleted file mode 100644 index e87f3de6f05..00000000000 --- a/contrib/netcdf/4.4.1.1/CMakeLists.txt +++ /dev/null @@ -1,1792 +0,0 @@ -## This is a CMake file, part of Unidata's netCDF package. -# Copyright 2012-2014, see the COPYRIGHT file for more information. -# - -################################## -# Set Project Properties -################################## - -#Minimum required CMake Version -cmake_minimum_required(VERSION 2.8.11) - -#Project Name -project(netCDF C) -set(PACKAGE "netCDF" 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(NC_VERSION_MAJOR 4) -SET(NC_VERSION_MINOR 4) -SET(NC_VERSION_PATCH 1) -SET(NC_VERSION_NOTE ".1") -SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE}) -SET(VERSION ${netCDF_VERSION}) -SET(NC_VERSION ${netCDF_VERSION}) -SET(netCDF_LIB_VERSION 11.4.0) -SET(netCDF_SO_VERSION 11) -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}") -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 -INCLUDE(GNUInstallDirs) - -IF(MSVC) - SET(GLOBAL PROPERTY USE_FOLDERS ON) -ENDIF() - -#Add custom CMake Module -SET(CMAKE_MODULE_PATH "${CMAKE_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/CheckCSourceRuns.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_C_LINKER_FLAG M_FLAG M_RESULT) - SET(T_REQ_FLAG "${CMAKE_REQUIRED_FLAGS}") - SET(CMAKE_REQUIRED_FLAGS "${M_FLAG}") - CHECK_C_SOURCE_COMPILES("int main() {return 0;}" ${M_RESULT}) - SET(CMAKE_REQUIRED_FLAGS "${T_REQ_FLAG}") -ENDMACRO() - -# Enable 'dist and distcheck'. -# File adapted from http://ensc.de/cmake/FindMakeDist.cmake -FIND_PACKAGE(MakeDist) -# End 'enable dist and distcheck' - -# 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. - -IF(DEFINED ENV{SOURCE_DATE_EPOCH}) - EXECUTE_PROCESS( - COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" - OUTPUT_VARIABLE CONFIG_DATE - ) -ELSE() - EXECUTE_PROCESS( - COMMAND date - OUTPUT_VARIABLE CONFIG_DATE - ) -ENDIF() -IF(CONFIG_DATE) - string(STRIP ${CONFIG_DATE} CONFIG_DATE) -ENDIF() -## -# Allow for extra dependencies. -## - -SET(EXTRA_DEPS "") - -################################ -# End Project Properties -################################ - - -################################ -# Set CTest Properties -################################ - - - -ENABLE_TESTING() -INCLUDE(CTest) - -# Copy the CTest customization file into binary directory, as required. -FILE(COPY ${CMAKE_SOURCE_DIR}/CTestCustom.cmake DESTINATION ${CMAKE_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) - -################################ -# End CTest Properties -################################ - - -################################ -# Compiler and Linker Configuration -################################ - -## -# Default building shared libraries. -# BUILD_SHARED_LIBS is provided by/used by -# CMake directly. -## -OPTION(BUILD_SHARED_LIBS "Configure netCDF as a shared library." ON) -IF(BUILD_SHARED_LIBS) - SET(CMAKE_POSITION_INDEPENDENT_CODE ON) -ENDIF() - -OPTION(NC_FIND_SHARED_LIBS "Find dynamically-built versions of dependent libraries" ${BUILD_SHARED_LIBS}) - -## -# We've had a request to allow for non-versioned shared libraries. -# This seems reasonable enough to accomodate. See -# https://github.com/Unidata/netcdf-c/issues/228 for more info. -## -OPTION(ENABLE_SHARED_LIBRARY_VERSION "Encode the library SO version in the file name of the generated library file." ON) - -# Set some default linux gcc & apple compiler options for -# debug builds. -IF(CMAKE_COMPILER_IS_GNUCC OR APPLE) - 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_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") - - # Check to see if -Wl,--no-undefined is supported. - CHECK_C_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_C_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_C_COMPILER_FLAG(-Wconversion CC_HAS_WCONVERSION) - CHECK_C_COMPILER_FLAG(-Wshorten-64-to-32 CC_HAS_SHORTEN_64_32) - - IF(CC_HAS_SHORTEN_64_32) - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshorten-64-to-32") - ENDIF() - IF(CC_HAS_WCONVERSION) - SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wconversion") - ENDIF() - - ENDIF(ENABLE_CONVERSION_WARNINGS) - -ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE) - -# End default linux gcc & apple compiler options. - -ADD_DEFINITIONS() - -# Suppress CRT Warnings. -# Only necessary for Windows -IF(MSVC) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) -ENDIF() - -##### -# System inspection checks -##### -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/oc2) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libsrc) -SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/libsrc) - -################################ -# 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_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir) - IF("${isSystemDir}" STREQUAL "-1") - SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") - ENDIF("${isSystemDir}" STREQUAL "-1") - -ENDIF() - -## -# End configuration for post-install RPath -## - -################################ -# Option checks -################################ - -# HDF5 cache variables. -SET(DEFAULT_CHUNK_SIZE 4194304 CACHE STRING "Default Chunk Cache Size.") -SET(DEFAULT_CHUNKS_IN_CACHE 10 CACHE STRING "Default number of chunks in cache.") -SET(CHUNK_CACHE_SIZE 4194304 CACHE STRING "Default Chunk Cache Size.") -SET(CHUNK_CACHE_NELEMS 1009 CACHE STRING "Default maximum number of elements in cache.") -SET(CHUNK_CACHE_PREEMPTION 0.75 CACHE STRING "Default file chunk cache preemption policy for HDf5 files(a number between 0 and 1, inclusive.") -SET(MAX_DEFAULT_CACHE_SIZE 67108864 CACHE STRING "Default maximum cache size.") -SET(NETCDF_LIB_NAME "" CACHE STRING "Default name of the netcdf library.") -SET(TEMP_LARGE "." CACHE STRING "Where to put large temp files if large file tests are run.") - -IF(NOT NETCDF_LIB_NAME STREQUAL "") - SET(MOD_NETCDF_NAME ON) -ENDIF() - -# Set the appropriate compiler/architecture for universal OSX binaries. -IF(${CMAKE_SYSTEM_NAME} EQUAL "Darwin") - SET(CMAKE_OSX_ARCHITECTURES i386;x86_64) -ENDIF(${CMAKE_SYSTEM_NAME} EQUAL "Darwin") - -# Option to use Static Runtimes in MSVC -IF(MSVC) - OPTION(NC_USE_STATIC_CRT "Use static CRT Libraries ('\\MT')." OFF) - IF(NC_USE_STATIC_CRT) - SET(USE_STATIC_CRT ON) - specify_static_crt_flag() - ENDIF() -ENDIF() - -# Option to build netCDF Version 2 -OPTION (ENABLE_V2_API "Build netCDF Version 2." ON) -SET(BUILD_V2 ${ENABLE_V2_API}) -IF(NOT ENABLE_V2_API) - SET(NO_NETCDF_2 ON) -ENDIF() - -# Option to build utilities -OPTION(BUILD_UTILITIES "Build ncgen, ncgen3, ncdump." ON) - -# Option to use MMAP -OPTION(ENABLE_MMAP "Use MMAP." OFF) -IF(ENABLE_MMAP) - CHECK_FUNCTION_EXISTS(mremap HAVE_MREMAP) - IF(NOT HAVE_MREMAP) - MESSAGE(WARNING "mremap not found: disabling MMAP support.") - SET(ENABLE_MMAP OFF) - ELSE() - SET(HAVE_MMAP ON) - SET(BUILD_MMAP ON) - SET(USE_MMAP ON) - ENDIF() -ENDIF() - -# Option to use examples. -OPTION(ENABLE_EXAMPLES "Build Examples" ON) - -# Option to use Diskless -OPTION(ENABLE_DISKLESS "Build Diskless." ON) -IF(ENABLE_DISKLESS) - SET(BUILD_DISKLESS ON) - SET(USE_DISKLESS ON) -ENDIF() - -# Option Logging, only valid for netcdf4. -OPTION(ENABLE_LOGGING "Enable Logging." OFF) -IF(ENABLE_LOGGING) - ADD_DEFINITIONS(-DLOGGING) - SET(LOGGING ON) -ENDIF() - -# Option to automatically build netcdf-fortran. -IF(NOT MSVC) - OPTION(ENABLE_REMOTE_FORTRAN_BOOTSTRAP "Download and build netcdf-fortran automatically (EXPERIMENTAL)." OFF) - IF(ENABLE_REMOTE_FORTRAN_BOOTSTRAP) - SET(BUILD_FORTRAN ON) - ENDIF() - IF(BUILD_FORTRAN) - CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/postinstall.sh.in" - "${CMAKE_BINARY_DIR}/postinstall.sh" - @ONLY) - - ADD_CUSTOM_TARGET(build-netcdf-fortran - COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a build" - DEPENDS netcdf - ) - - ADD_CUSTOM_TARGET(install-netcdf-fortran - COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a install" - DEPENDS build-netcdf-fortran - ) - - ENDIF(BUILD_FORTRAN) -ENDIF() - - -### -# Allow the user to specify libraries -# to link against, similar to automakes 'LIBS' variable. -### -SET(NC_EXTRA_DEPS "" CACHE STRING "Additional libraries to link against.") -IF(NC_EXTRA_DEPS) - STRING(REPLACE " " ";" DEPS_LIST ${NC_EXTRA_DEPS}) - FOREACH(_DEP ${DEPS_LIST}) - STRING(REGEX REPLACE "^-l" "" _LIB ${_DEP}) - FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}") - MESSAGE(${${_LIB}_DEP}) - IF(NOT "${_LIB}_DEP") - MESSAGE(FATAL_ERROR "Error finding ${_LIB}.") - ELSE() - MESSAGE(STATUS "Found ${_LIB}: ${${_LIB}_DEP}") - ENDIF() - SET(EXTRA_DEPS ${EXTRA_DEPS} "${${_LIB}_DEP}") - ENDFOREACH() - MESSAGE("Extra deps: ${EXTRA_DEPS}") - LIST(REMOVE_DUPLICATES EXTRA_DEPS) - SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${EXTRA_DEPS}) -ENDIF() -### -# End user-specified dependent libraries. -### - -# Option to use HDF4 -OPTION(ENABLE_HDF4 "Build netCDF-4 with HDF5 read capability(HDF4, HDF5 and Zlib required)." OFF) -IF(ENABLE_HDF4) - SET(USE_HDF4 ON) - # Check for include files, libraries. - - FIND_PATH(MFHDF_H_INCLUDE_DIR mfhdf.h) - IF(NOT MFHDF_H_INCLUDE_DIR) - MESSAGE(FATAL_ERROR "HDF4 Support specified, cannot find file mfhdf.h") - ELSE() - SET(HAVE_MFHDF_H ON CACHE BOOL "") - INCLUDE_DIRECTORIES(${MFHDF_H_INCLUDE_DIR}) - ENDIF() - - FIND_LIBRARY(HDF4_DF_LIB NAMES df libdf hdf) - IF(NOT HDF4_DF_LIB) - MESSAGE(FATAL_ERROR "Can't find or link to the hdf4 df library.") - ENDIF() - - FIND_LIBRARY(HDF4_MFHDF_LIB NAMES mfhdf libmfhdf) - IF(NOT HDF4_MFHDF_LIB) - MESSAGE(FATAL_ERROR "Can't find or link to the hdf4 mfhdf library.") - ENDIF() - - SET(HDF4_LIBRARIES ${HDF4_DF_LIB} ${HDF4_MFHDF_LIB}) - # End include files, libraries. - MESSAGE(STATUS "HDF4 libraries: ${HDF4_DF_LIB}, ${HDF4_MFHDF_LIB}") - - MESSAGE(STATUS "Seeking HDF4 jpeg dependency.") - - # Look for the jpeglib.h header file. - FIND_PATH(JPEGLIB_H_INCLUDE_DIR jpeglib.h) - IF(NOT JPEGLIB_H_INCLUDE_DIR) - MESSAGE(FATAL_ERROR "HDF4 Support enabled but cannot find jpeglib.h") - ELSE() - SET(HAVE_JPEGLIB_H ON CACHE BOOL "") - INCLUDE_DIRECTORIES(${JPEGLIB_H_INCLUDE_DIR}) - ENDIF() - - FIND_LIBRARY(JPEG_LIB NAMES jpeg libjpeg) - IF(NOT JPEG_LIB) - MESSAGE(FATAL_ERROR "HDF4 Support enabled but cannot find libjpeg") - ENDIF() - SET(HDF4_LIBRARIES ${JPEG_LIB} ${HDF4_LIBRARIES}) - MESSAGE(STATUS "Found JPEG libraries: ${JPEG_LIB}") - - # Option to enable HDF4 file tests. - OPTION(ENABLE_HDF4_FILE_TESTS "Run HDF4 file tests. This fetches sample HDF4 files from the Unidata ftp site to test with (requires curl)." ON) - IF(ENABLE_HDF4_FILE_TESTS) - FIND_PROGRAM(PROG_CURL NAMES curl) - IF(PROG_CURL) - SET(USE_HDF4_FILE_TESTS ON) - ELSE() - MESSAGE(STATUS "Unable to locate 'curl'. Disabling hdf4 file tests.") - SET(USE_HDF4_FILE_TESTS OFF) - ENDIF() - ENDIF() -ENDIF() - -# Option to Build DLL -IF(WIN32) - OPTION(ENABLE_DLL "Build a Windows DLL." ${BUILD_SHARED_LIBS}) - IF(ENABLE_DLL) - SET(BUILD_DLL ON CACHE BOOL "") - ADD_DEFINITIONS(-DDLL_NETCDF) - ADD_DEFINITIONS(-DDLL_EXPORT) - ENDIF() -ENDIF() -# Did the user specify a default minimum blocksize for posixio? -SET(NCIO_MINBLOCKSIZE 256 CACHE STRING "Minimum I/O Blocksize for netCDF classic and 64-bit offset format files.") - -# Build netCDF4 -OPTION(ENABLE_NETCDF_4 "Enable netCDF-4" ON) -IF(ENABLE_NETCDF_4) - SET(USE_NETCDF4 ON CACHE BOOL "") - SET(ENABLE_NETCDF_4 ON CACHE BOOL "") - SET(ENABLE_NETCDF4 ON CACHE BOOL "") -ENDIF() - -# Option for building RPC -OPTION(ENABLE_RPC "Enable RPC Client and Server." OFF) -IF(ENABLE_RPC) - SET(BUILD_RPC ON CACHE BOOL "") -ENDIF() - -## -# Option to Enable HDF5 -# -# The HDF5 cmake variables differ between platform (linux/osx and Windows), -# as well as between HDF5 versions. As a result, this section is a bit convoluted. -# -# Note that the behavior seems much more stable across HDF5 versions under linux, -# so we do not have to do as much version-based tweaking. -# -# At the end of it, we should have the following defined: -# -# * HDF5_C_LIBRARY -# * HDF5_HL_LIBRARY -# * HDF5_LIBRARIES -# * HDF5_INCLUDE_DIR -# * -## -OPTION(USE_HDF5 "Use HDF5." ${ENABLE_NETCDF_4}) -IF(USE_HDF5 OR ENABLE_NETCDF_4) - SET(USE_HDF5 ON) - SET(USE_NETCDF4 ON) - ## - # Accommodate developers who have hdf5 libraries and - # headers on their system, but do not have a the hdf - # .cmake files. If this is the case, they should - # specify HDF5_HL_LIB, HDF5_LIB, HDF5_INCLUDE_DIR manually. - ## - IF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) - SET(HDF5_LIBRARIES ${HDF5_C_LIBRARY} ${HDF5_HL_LIBRARY}) - SET(HDF5_C_LIBRARIES ${HDF5_C_LIBRARY}) - SET(HDF5_HL_LIBRARIES ${HDF5_HL_LIBRARY}) - INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR}) - MESSAGE(STATUS "Using HDF5 C Library: ${HDF5_C_LIBRARY}") - MESSAGE(STATUS "Using HDF5 HL LIbrary: ${HDF5_HL_LIBRARY}") - ELSE(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) # We are seeking out HDF5 with Find Package. - ### - # For now we assume that if we are building netcdf - # as a shared library, we will use hdf5 as a shared - # library. If we are building netcdf statically, - # we will use a static library. This can be toggled - # by explicitely modifying NC_FIND_SHARED_LIBS. - ## - IF(NC_FIND_SHARED_LIBS) - SET(NC_HDF5_LINK_TYPE "shared") - SET(NC_HDF5_LINK_TYPE_UPPER "SHARED") - ADD_DEFINITIONS(-DH5_BUILT_AS_DYNAMIC_LIB) - ELSE(NC_FIND_SHARED_LIBS) - SET(NC_HDF5_LINK_TYPE "static") - SET(NC_HDF5_LINK_TYPE_UPPER "STATIC") - ADD_DEFINITIONS(-DH5_BUILT_AS_STATIC_LIB) - ENDIF(NC_FIND_SHARED_LIBS) - - ##### - # First, find the C and HL libraries. - # - # This has been updated to reflect what is in the hdf5 - # examples, even though the previous version of what we - # had worked. - ##### - IF(MSVC) - SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME}) - FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL NO_MODULES REQUIRED ${NC_HDF5_LINK_TYPE}) - ELSE(MSVC) - FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED) - ENDIF(MSVC) - - ## - # Next, check the HDF5 version. This will inform which - # HDF5 variables we need to munge. - ## - - ## - # Assert HDF5 version meets minimum required version. - ## - SET(HDF5_VERSION_REQUIRED 1.8.10) - - IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION) - SET(HDF5_VERSION ${HDF5_VERSION_STRING}) - ENDIF() - - IF("${HDF5_VERSION}" STREQUAL "") - MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}") - ELSE() - IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED}) - MESSAGE(FATAL_ERROR - "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.") - ELSE() - MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}") - ENDIF() - ENDIF() - - ## - # Include the HDF5 include directory. - ## - IF(HDF5_INCLUDE_DIRS AND NOT HDF5_INCLUDE_DIR) - SET(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_DIRS}) - ENDIF() - MESSAGE(STATUS "Using HDF5 include dir: ${HDF5_INCLUDE_DIR}") - INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR}) - - ### - # This is the block where we figure out what the appropriate - # variables are, and we ensure that we end up with - # HDF5_C_LIBRARY, HDF5_HL_LIBRARY and HDF5_LIBRARIES. - ### - IF(MSVC) - ## - # HDF5 1.8.15 defined HDF5_LIBRARIES. - ## - IF(${HDF5_VERSION} VERSION_LESS "1.8.16") - SET(HDF5_C_LIBRARY hdf5) - ENDIF(${HDF5_VERSION} VERSION_LESS "1.8.16") - - IF(${HDF5_VERSION} VERSION_GREATER "1.8.15") - IF(NOT HDF5_LIBRARIES AND HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY AND HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY) - SET(HDF5_C_LIBRARY ${HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) - SET(HDF5_HL_LIBRARY ${HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) - SET(HDF5_LIBRARIES ${HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY} ${HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) - ENDIF() - ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15") - - ELSE(MSVC) - - # Depending on the install, either HDF5_hdf_library or - # HDF5_C_LIBRARIES may be defined. We must check for either. - IF(HDF5_C_LIBRARIES AND NOT HDF5_hdf5_LIBRARY) - SET(HDF5_hdf5_LIBRARY ${HDF5_C_LIBRARIES}) - ENDIF() - - ENDIF(MSVC) - ENDIF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) - - ### - # The following options are not used in Windows. - ### - IF(NOT MSVC) - # Find out if HDF5 was built with parallel support. - # Do that by checking for the targets H5Pget_fapl_mpiposx and - # H5Pget_fapl_mpio in ${HDF5_LIB}. - CHECK_LIBRARY_EXISTS(hdf5 H5Pget_fapl_mpiposix "" HDF5_IS_PARALLEL_MPIPOSIX) - CHECK_LIBRARY_EXISTS(hdf5 H5Pget_fapl_mpio "" HDF5_IS_PARALLEL_MPIO) - IF(HDF5_IS_PARALLEL_MPIPOSIX OR HDF5_IS_PARALLEL_MPIO) - SET(HDF5_PARALLEL ON) - ELSE() - SET(HDF5_PARALLEL OFF) - ENDIF() - - IF(HDF5_IS_PARALLEL_MPIO) - SET(USE_PARALLEL_MPIO ON) - ENDIF() - - IF(HDF5_IS_PARALLEL_MPIPOSIX) - SET(USE_PARALLEL_POSIX ON) - ENDIF() - - OPTION(ENABLE_DYNAMIC_LOADING "Enable Dynamic Loading" ON) - IF(ENABLE_DYNAMIC_LOADING) - SET(USE_LIBDL ON CACHE BOOL "") - ENDIF() - SET(HDF5_C_LIBRARY hdf5) - ENDIF(NOT MSVC) - - #Check to see if H5Z_SZIP exists in HDF5_Libraries. If so, we must use szip. - CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY} H5P_SZIP "" USE_SZIP) - IF(USE_SZIP) - FIND_LIBRARY(SZIP NAMES szip sz) - IF(SZIP) - SET(SZIP_LIBRARY ${SZIP}) - SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SZIP}) - ELSE() - MESSAGE(FATAL_ERROR "HDF5 Requires SZIP, but cannot find libszip or libsz.") - ENDIF() - ENDIF() - - CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY} H5free_memory "" HDF5_HAS_H5FREE) - CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY} H5Pset_libver_bounds "" HDF5_HAS_LIBVER_BOUNDS) - - IF(HDF5_PARALLEL) - SET(HDF5_CC h5pcc) - ELSE() - SET(HDF5_CC h5cc) - ENDIF() - - # Starting with hdf5 1.8.11, dynamic loading is an option. - # In case hdf5 has a dependency on libdl, the user must specify - # -DENABLE_DYNAMIC_LOADING=ON when configuring netcdf. - IF(USE_LIBDL) - FIND_LIBRARY(LIBDL NAMES dl dld) - FIND_PATH(LIBDL_INCLUDE_DIR dlfcn.h) - IF(NOT LIBDL) - MESSAGE(ERROR "Cannot find libdl, but dynamic loading was specified.") - ENDIF() - IF(NOT LIBDL_INCLUDE_DIR) - MESSAGE(ERROR "Cannot find dlfcn.h, but dynamic loading was specified.") - ENDIF() - MESSAGE(STATUS "Found libdl: ${LIBDL}") - SET(HAVE_LIBDL ON) - INCLUDE_DIRECTORIES(${LIBDL_INCLUDE_DIR}) - ENDIF() - - SET(H5_USE_16_API 1) - OPTION(NC_ENABLE_HDF_16_API "Enable HDF5 1.6.x Compatibility(Required)" ON) - IF(NOT NC_ENABLE_HDF_16_API) - SET(H5_USE_16_API 0) - ENDIF() - - # Check for ZLib, but only if using HDF5. - FIND_PACKAGE(ZLIB) - IF(NOT ZLIB_LIBRARY) - MESSAGE(FATAL_ERROR "HDF5 Support specified, cannot find ZLib.") - ENDIF() - SET(USE_ZLIB ON) - INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS}) - -ENDIF(USE_HDF5 OR ENABLE_NETCDF_4) - - -# Option to Build DAP Client -OPTION(ENABLE_DAP "Enable DAP Client." ON) -IF(ENABLE_DAP) - SET(USE_DAP ON) - FIND_PACKAGE(CURL) - IF(NOT CURL_LIBRARY) - MESSAGE(FATAL_ERROR "DAP Support specified, CURL libraries are not found.") - ENDIF() - - ADD_DEFINITIONS(-DCURL_STATICLIB=1) - INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) - - # Check to see if CURLOPT_USERNAME is defined. - # It is present starting version 7.19.1. - CHECK_C_SOURCE_COMPILES(" - #include - int main() {int x = CURLOPT_USERNAME;}" HAVE_CURLOPT_USERNAME) - - # Check to see if CURLOPT_PASSWORD is defined. - # It is present starting version 7.19.1. - CHECK_C_SOURCE_COMPILES(" - #include - int main() {int x = CURLOPT_PASSWORD;}" HAVE_CURLOPT_PASSWORD) - - # Check to see if CURLOPT_KEYPASSWD is defined. - # It is present starting version 7.16.4. - CHECK_C_SOURCE_COMPILES(" - #include - int main() {int x = CURLOPT_KEYPASSWD;}" HAVE_CURLOPT_KEYPASSWD) - - # Check to see if CURLINFO_RESPONSE_CODE is defined. - # It showed up in curl 7.10.7. - CHECK_C_SOURCE_COMPILES(" - #include - int main() {int x = CURLINFO_RESPONSE_CODE;}" HAVE_CURLINFO_RESPONSE_CODE) - - # Check to see if CURLOPT_CHUNK_BGN_FUNCTION is defined. - # It showed up in curl 7.21.0. - CHECK_C_SOURCE_COMPILES(" - #include - int main() {int x = CURLOPT_CHUNK_BGN_FUNCTION;}" HAVE_CURLOPT_CHUNK_BGN_FUNCTION) - - - -ENDIF() - -# Check to see if libtool supports - -# Check for the math library so it can be explicitly linked. -IF(NOT WIN32) - FIND_LIBRARY(HAVE_LIBM NAMES math m libm) - MESSAGE(STATUS "Found Math library: ${HAVE_LIBM}") - IF(NOT HAVE_LIBM) - MESSAGE(FATAL_ERROR "Unable to find the math library.") - ENDIF() -ENDIF() - -# Option to Enable DAP long tests, remote tests. -OPTION(ENABLE_DAP_LONG_TESTS "Enable DAP long tests." OFF) -OPTION(ENABLE_DAP_REMOTE_TESTS "Enable DAP remote tests." ON) - -IF(ENABLE_DAP_REMOTE_TESTS) - OPTION(ENABLE_DAP_AUTH_TESTS "Enable DAP remote authorization tests." OFF) -ENDIF() - - -# If netCDF4 and DAP, Option for DAP groups. -IF(ENABLE_NETCDF_4 AND USE_DAP) - OPTION(ENABLE_DAP_GROUPS "Whether netcdf4 group names should be enabled." ON) -ELSE() - SET(ENABLE_DAP_GROUPS OFF CACHE BOOL "Whether netcdf4 group names should be enabled.") -ENDIF() - -# Enable some developer-only tests -OPTION(ENABLE_EXTRA_TESTS "Enable Extra tests. Some may not work because of known issues. Developers only." OFF) -IF(ENABLE_EXTRA_TESTS) - SET(EXTRA_TESTS ON) -ENDIF() - -# Option to use bundled XGetopt in place of getopt(). This is mostly useful -# for MSVC builds. If not building utilities, getopt() isn't required at all. -IF(MSVC) - OPTION(ENABLE_XGETOPT "Enable bundled XGetOpt instead of external getopt()." ON) - IF(ENABLE_XGETOPT) - SET(USE_X_GETOPT ON CACHE BOOL "") - ENDIF() -ENDIF() - -SET(MATH "") -IF(NOT WIN32) - - # STDIO instead of posixio. - OPTION(ENABLE_STDIO "If true, use stdio instead of posixio (ex. on the Cray)" OFF) - IF(ENABLE_STDIO) - SET(USE_STDIO ON CACHE BOOL "") - ENDIF() - - # FFIO insteaad of PosixIO - OPTION(ENABLE_FFIO "If true, use ffio instead of posixio" OFF) - IF(ENABLE_FFIO) - SET(USE_FFIO ON CACHE BOOL "") - ENDIF() -ENDIF() - -## -# Enable Tests -## -OPTION(ENABLE_TESTS "Enable basic tests, run with 'make test'." ON) -IF(ENABLE_TESTS) - SET(BUILD_TESTSETS ON CACHE BOOL "") - - # Options for CTest-based tests, dashboards. - SET(NC_CTEST_PROJECT_NAME "netcdf-c" CACHE STRING "Project Name for CTest-based testing purposes.") - SET(NC_CTEST_DROP_SITE "my.cdash.org" CACHE STRING "Dashboard location for CTest-based testing purposes.") - SET(NC_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(NC_CTEST_SITE "${HOSTNAME}" CACHE STRING "Hostname of test machine.") - ENDIF() - - IF(NC_CTEST_SITE) - SET(SITE "${NC_CTEST_SITE}" CACHE STRING "") - ENDIF() - - # Create a CTestConfig file from the template. - CONFIGURE_FILE("${netCDF_SOURCE_DIR}/CTestConfig.cmake.in" - "${netCDF_SOURCE_DIR}/CTestConfig.cmake" - @ONLY - ) - - ### - # This option dictates whether or not to turn on - # tests which are known to fail. This is not the - # same thing as an 'expected failure'. Rather, these - # are tests that will need to be fixed eventually. - # - # By placing them here, we can occasionaly turn this - # flag on and see if any known failures have been - # fixed in the course of code improvement/other bug - # fixes. - # - # To use this, simply add as a fencepost around tests - # which are known to fail. - ### - - OPTION(ENABLE_FAILING_TESTS "Run tests which are known to fail, check to see if any have been fixed." OFF) - - ### - # End known-failures. - ### - MARK_AS_ADVANCED(ENABLE_FAILING_TESTS) -ENDIF() - -### -# Option to enable extreme numbers during testing. -### -OPTION(ENABLE_EXTREME_NUMBERS "Enable extreme numbers during testing, such as MAX_INT-1" ON) -IF(ENABLE_EXTREME_NUMBERS) - SET(USE_EXTREME_NUMBERS ON) -ENDIF() - -# Enable Large file tests -IF(ENABLE_LARGE_FILE_TESTS) - SET(LARGE_FILE_TESTS ON) -ENDIF() - -# Location for large file tests. -SET(TEMP_LARGE "." CACHE STRING "Location to store large file tests.") - -OPTION(ENABLE_FSYNC "Enable experimental fsync code." OFF) -IF(ENABLE_FSYNC) - SET(USE_FSYNC ON) -ENDIF() - -# Temporary -OPTION (ENABLE_JNA "Enable jna bug fix code." OFF) -IF(ENABLE_JNA) - SET(JNA ON) -ENDIF() - -# Linux specific large file support flags. -# Modelled after check in CMakeLists.txt for hdf5. -OPTION(ENABLE_LARGE_FILE_SUPPORT "Enable large file support." ON) -IF(ENABLE_LARGE_FILE_SUPPORT) - IF(MSVC) - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") - SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE") - SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /LARGEADDRESSAWARE") - ELSE() - SET(_FILE_OFFSET_BITS 64) - SET(_LARGEFILE64_SOURCE TRUE) - SET(_LARGEFILE_SOURCE TRUE) - ENDIF() -ENDIF() - -OPTION(ENABLE_EXAMPLE_TESTS "Run extra example tests. Requires GNU Sed. Ignored if netCDF-4 is not Enabled" OFF) -IF(NOT ENABLE_NETCDF_4 AND ENABLE_EXAMPLE_TESTS) - SET(ENABLE_EXAMPLE_TESTS OFF) -ENDIF() - -# Enable Parallel (different than pnetcdf). -SET(STATUS_PARALLEL "OFF") -OPTION(ENABLE_PARALLEL4 "Build netCDF-4 with parallel IO" "${HDF5_PARALLEL}") -IF(ENABLE_PARALLEL4 AND ENABLE_NETCDF_4) - IF(NOT HDF5_PARALLEL) - SET(USE_PARALLEL OFF CACHE BOOL "") - MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.") - ELSE() - SET(HDF5_PARALLEL ON CACHE BOOL "") - SET(USE_PARALLEL ON CACHE BOOL "") - SET(USE_PARALLEL4 ON CACHE BOOL "") - SET(STATUS_PARALLEL "ON") - ENDIF() -ENDIF() - - -# Options to enable parallel IO, tests. -SET(STATUS_PNETCDF "OFF") -OPTION(ENABLE_PNETCDF "Build with parallel I/O for classic and 64-bit offset files using parallel-netcdf." OFF) - -IF(ENABLE_PNETCDF) - # Check for ncmpi_create in libpnetcdf, define USE_PNETCDF - # Does the user want to turn on PNETCDF read ability? - SET(USE_PNETCDF ON CACHE BOOL "") - FIND_LIBRARY(PNETCDF NAMES pnetcdf) - FIND_PATH(PNETCDF_INCLUDE_DIR pnetcdf.h) - IF(NOT PNETCDF) - MESSAGE(STATUS "Cannot find PNetCDF library. Disabling PNetCDF support.") - SET(USE_PNETCDF OFF CACHE BOOL "") - ELSE(NOT PNETCDF) - SET(USE_PARALLEL ON CACHE BOOL "") - - # Check PNetCDF version. Must be >= 1.6.0 - set(pnetcdf_h "${PNETCDF_INCLUDE_DIR}/pnetcdf.h" ) - message(STATUS "PNetCDF include file ${pnetcdf_h} will be searched for version") - file(STRINGS "${pnetcdf_h}" pnetcdf_major_string REGEX "^#define PNETCDF_VERSION_MAJOR") - string(REGEX REPLACE "[^0-9]" "" pnetcdf_major "${pnetcdf_major_string}") - file(STRINGS "${pnetcdf_h}" pnetcdf_minor_string REGEX "^#define PNETCDF_VERSION_MINOR") - string(REGEX REPLACE "[^0-9]" "" pnetcdf_minor "${pnetcdf_minor_string}") - file(STRINGS "${pnetcdf_h}" pnetcdf_sub_string REGEX "^#define PNETCDF_VERSION_SUB") - string(REGEX REPLACE "[^0-9]" "" pnetcdf_sub "${pnetcdf_sub_string}") - set(pnetcdf_version "${pnetcdf_major}.${pnetcdf_minor}.${pnetcdf_sub}") - message(STATUS "Found PNetCDF version ${pnetcdf_version}") - - if(${pnetcdf_version} VERSION_GREATER "1.6.0") - SET(STATUS_PNETCDF "ON") - INCLUDE_DIRECTORIES(${PNETCDF_INCLUDE_DIR}) - SET(HAVE_LIBPNETCDF ON) - # pnetcdf => parallel - SET(STATUS_PARALLEL ON) - SET(USE_PARALLEL ON) - MESSAGE(STATUS "Using PNetCDF Library: ${PNETCDF}") - ELSE() - MESSAGE(WARNING "ENABLE_PNETCDF requires version 1.6.1 or later; found version ${pnetcdf_version}. PNetCDF is disabled") - ENDIF() - ENDIF(NOT PNETCDF) -ENDIF() - -# Enable Parallel Tests. -OPTION(ENABLE_PARALLEL_TESTS "Enable Parallel IO Tests. Ignored if netCDF4 is not enabled, or if there is no parallel I/O Support." ${USE_PARALLEL}) -IF(ENABLE_PARALLEL_TESTS AND USE_PARALLEL) - SET(TEST_PARALLEL ON CACHE BOOL "") - IF(USE_NETCDF4) - SET(TEST_PARALLEL4 ON CACHE BOOL "") - ENDIF() -ENDIF() - -# Determine whether or not to generate documentation. -OPTION(ENABLE_DOXYGEN "Enable generation of doxygen-based documentation." OFF) -IF(ENABLE_DOXYGEN) - FIND_PACKAGE(Doxygen REQUIRED) - # Offer the option to build internal documentation. - OPTION(ENABLE_INTERNAL_DOCS "Build internal documentation. This is of interest to developers only." OFF) - IF(ENABLE_INTERNAL_DOCS) - SET(BUILD_INTERNAL_DOCS YES CACHE STRING "") - ELSE() - SET(BUILD_INTERNAL_DOCS NO CACHE STRING "") - ENDIF() - - ### - # - # If we are building release documentation, we need to set some - # variables that will be used in the Doxygen.in template. - ### - OPTION(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS "Build release documentation. This is of interest only to the netCDF developers." OFF) - IF(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS) - SET(DOXYGEN_CSS_FILE "${CMAKE_SOURCE_DIR}/docs/release.css" CACHE STRING "") - SET(DOXYGEN_HEADER_FILE "${CMAKE_SOURCE_DIR}/docs/release_header.html" CACHE STRING "") - SET(DOXYGEN_SEARCHENGINE "NO" CACHE STRING "") - SET(ENABLE_DOXYGEN_SERVER_BASED_SEARCH NO CACHE STRING "") - ELSE() - SET(DOXYGEN_CSS_FILE "" CACHE STRING "") - SET(DOXYGEN_HEADER_FILE "" CACHE STRING "") - SET(DOXYGEN_SEARCHENGINE "YES" CACHE STRING "") - - # If not using release document configuration, - # provide an option for server-based search. - OPTION(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH "Configure Doxygen with server-based search." OFF) - IF(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) - SET(DOXYGEN_SERVER_BASED_SEARCH "YES" CACHE STRING "") - ELSE() - SET(DOXYGEN_SERVER_BASED_SEARCH "NO" CACHE STRING "") - ENDIF(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) - - - ENDIF(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS) - # Option to turn on the TODO list in the doxygen-generated documentation. - OPTION(DOXYGEN_ENABLE_TASKS "Turn on test, todo, bug lists in documentation. This is of interest to developers only." OFF) - IF(DOXYGEN_ENABLE_TASKS) - SET(SHOW_DOXYGEN_TAG_LIST YES CACHE STRING "") - ELSE(DOXYGEN_ENABLE_TASKS) - SET(SHOW_DOXYGEN_TODO_LIST NO CACHE STRING "") - ENDIF(DOXYGEN_ENABLE_TASKS) - - OPTION(ENABLE_DOXYGEN_PDF_OUTPUT "[EXPERIMENTAL] Turn on PDF output for Doxygen-generated documentation." OFF) - - IF(ENABLE_DOXYGEN_PDF_OUTPUT) - SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "YES" CACHE STRING "") - ELSE() - SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "NO" CACHE STRING "") - ENDIF() - - FIND_PROGRAM(NC_DOT NAMES dot) - # Specify whether or not 'dot' was found on the system path. - IF(NC_DOT) - SET(HAVE_DOT YES CACHE STRING "") - ELSE(NC_DOT) - SET(HAVE_DOT NO CACHE STRING "") - ENDIF(NC_DOT) -ENDIF() - -# By default, MSVC has a stack size of 1000000. -# Allow a user to override this. -IF(MSVC) - SET(NC_MSVC_STACK_SIZE 40000000 CACHE STRING "Default stack size for MSVC-based projects.") - # By default, CMake sets the stack to 1000000. - # Remove this limitation. - # See here for more details: - # http://www.cmake.org/pipermail/cmake/2009-April/028710.html - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") - SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") - SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") -ENDIF() - -# Set some of the options as advanced. -MARK_AS_ADVANCED(ENABLE_INTERNAL_DOCS VALGRIND_TESTS ENABLE_COVERAGE_TESTS ) -MARK_AS_ADVANCED(ENABLE_DAP_REMOTE_TESTS ENABLE_DAP_LONG_TESTS USE_REMOTE_CDASH) -MARK_AS_ADVANCED(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS DOXYGEN_ENABLE_TASKS ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) -MARK_AS_ADVANCED(ENABLE_SHARED_LIBRARY_VERSION) - -################################ -# Option checks -################################ - -#### -# Check to see if char is signed or unsigned. -#### - -SET(SIGNED_TEST_SOURCE "\n - #include \n - int main(void) {\n - char is_signed = (char) - 1;\n - if(is_signed < 0)\n - return 1;\n - else\n - return 0;\n -}\n") - -CHECK_C_SOURCE_RUNS("${SIGNED_TEST_SOURCE}" __CHAR_UNSIGNED__) - -# Library include checks -CHECK_INCLUDE_FILE("math.h" HAVE_MATH_H) -CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) -# Solve a compatibility issue in ncgen/, which checks -# for NO_UNISTD_H -IF(NOT HAVE_UNISTD_H) - SET(YY_NO_UNISTD_H TRUE) -ENDIF() - -CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H) -CHECK_INCLUDE_FILE("malloc.h" HAVE_MALLOC_H) -CHECK_INCLUDE_FILE("ctype.h" HAVE_CTYPE_H) -CHECK_INCLUDE_FILE("dirent.h" HAVE_DIRENT_H) -CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) -CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H) -CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) -CHECK_INCLUDE_FILE("getopt.h" HAVE_GETOPT_H) -CHECK_INCLUDE_FILE("stdbool.h" HAVE_STDBOOL_H) -CHECK_INCLUDE_FILE("locale.h" HAVE_LOCAL_H) -CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H) -CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H) -CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) -CHECK_INCLUDE_FILE("stdarg.h" HAVE_STDARG_H) -CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) -CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H) -CHECK_INCLUDE_FILE("sys/dir.h" HAVE_SYS_DIR_H) -CHECK_INCLUDE_FILE("sys/ndir.h" HAVE_SYS_NDIR_H) -CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) -CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) -CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) -CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H) -CHECK_INCLUDE_FILE("sys/wait.h" HAVE_SYS_WAIT_H) -CHECK_INCLUDE_FILE("sys/resource.h" HAVE_SYS_RESOURCE_H) -CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) -CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) -CHECK_INCLUDE_FILE("pstdint.h" HAVE_PSTDINT_H) -CHECK_INCLUDE_FILE("endian.h" HAVE_ENDIAN_H) -CHECK_INCLUDE_FILE("BaseTsd.h" HAVE_BASETSD_H) -CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H) - -# Type checks -CHECK_TYPE_SIZE("void*" SIZEOF_VOIDSTAR) -CHECK_TYPE_SIZE("char" SIZEOF_CHAR) -CHECK_TYPE_SIZE("double" SIZEOF_DOUBLE) -CHECK_TYPE_SIZE("float" SIZEOF_FLOAT) -CHECK_TYPE_SIZE("int" SIZEOF_INT) -CHECK_TYPE_SIZE("long" SIZEOF_LONG) -CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG) -CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T) -CHECK_TYPE_SIZE("off64_t" SIZEOF_OFF64_T) -CHECK_TYPE_SIZE("short" SIZEOF_SHORT) -CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T) -CHECK_TYPE_SIZE("ssize_t" SIZEOF_SSIZE_T) -# __int64 is used on Windows for large file support. -CHECK_TYPE_SIZE("__int64" SIZEOF___INT_64) -CHECK_TYPE_SIZE("uchar" SIZEOF_UCHAR) -CHECK_TYPE_SIZE("int64_t" SIZEOF_INT64_T) -CHECK_TYPE_SIZE("uint64_t" SIZEOF_UINT64_T) - -# On windows systems, we redefine off_t as __int64 -# to enable LFS. This is true on 32 and 64 bit system.s -# We must redefine SIZEOF_OFF_T to match. -IF(MSVC AND SIZEOF___INT_64) - SET(SIZEOF_OFF_T ${SIZEOF___INT_64}) -ENDIF() - -IF(SIZEOF_SSIZE_T) - SET(HAVE_SSIZE_T 1) -ELSE() - CHECK_TYPE_SIZE("SSIZE_T" SIZEOF_SSIZE_T) - IF(SIZEOF_SSIZE_T) - SET(HAVE_SSIZE_T 1) - ENDIF() -ENDIF() - -# Check for various functions. -CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC) -CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT) -CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR) -CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) -CHECK_FUNCTION_EXISTS(strchr HAVE_STRCHR) -CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR) -CHECK_FUNCTION_EXISTS(strcat HAVE_STRCAT) -CHECK_FUNCTION_EXISTS(strcpy HAVE_STRCPY) -CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP) -CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP) -CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP) -CHECK_FUNCTION_EXISTS(strtod HAVE_STRTOD) -CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) -CHECK_FUNCTION_EXISTS(strtoull HAVE_STROULL) -CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR) -CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) -CHECK_FUNCTION_EXISTS(rand HAVE_RAND) -CHECK_FUNCTION_EXISTS(random HAVE_RANDOM) -CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) -CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC) -CHECK_FUNCTION_EXISTS(MPI_Comm_f2C HAVE_MPI_COMM_F2C) -CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) -CHECK_FUNCTION_EXISTS(getpagesize HAVE_GETPAGESIZE) -CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) -CHECK_FUNCTION_EXISTS(getrlimit HAVE_GETRLIMIT) -CHECK_FUNCTION_EXISTS(_filelengthi64 HAVE_FILE_LENGTH_I64) - -##### -# End system inspection checks. -##### - -################################ -# Define Utility Macros -################################ - -# Macro to append files to the EXTRA_DIST files. -SET(EXTRA_DIST "") -MACRO(ADD_EXTRA_DIST files) - FOREACH(F ${files}) - SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/${F}) - SET(EXTRA_DIST ${EXTRA_DIST} PARENT_SCOPE) - ENDFOREACH() -ENDMACRO() - -# A basic script used to convert m4 files -FIND_PROGRAM(NC_M4 NAMES m4) -IF(NC_M4) - SET(HAVE_M4 TRUE) -ENDIF() - -MACRO(GEN_m4 filename) - -IF(HAVE_M4) - # If m4 is available, remove generated file if it exists. - IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c) - FILE(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c) - ENDIF() - - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c - COMMAND ${NC_M4} - ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c - VERBATIM - ) -ENDIF(HAVE_M4) -ENDMACRO(GEN_m4) - -# Binary tests, but ones which depend on value of 'TEMP_LARGE' being defined. -MACRO(add_bin_env_temp_large_test prefix F) - ADD_EXECUTABLE(${prefix}_${F} ${F}.c) - TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf) - IF(MSVC) - SET_TARGET_PROPERTIES(${prefix}_${F} - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - ENDIF() - - ADD_TEST(${prefix}_${F} bash "-c" "TEMP_LARGE=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}") - IF(MSVC) - SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests") - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDMACRO() - - -# Tests which are binary, but depend on a particular environmental variable. -MACRO(add_bin_env_test prefix F) - ADD_EXECUTABLE(${prefix}_${F} ${F}.c) - TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf) - IF(MSVC) - SET_TARGET_PROPERTIES(${prefix}_${F} - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - ENDIF() - - ADD_TEST(${prefix}_${F} bash "-c" "TOPSRCDIR=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}") - IF(MSVC) - SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests") - ENDIF() -ENDMACRO() - -# Build a binary used by a script, but don't make a test out of it. -MACRO(build_bin_test F) - ADD_EXECUTABLE(${F} ${F}.c) - TARGET_LINK_LIBRARIES(${F} netcdf ${ALL_TLL_LIBS}) - IF(MSVC) - SET_TARGET_PROPERTIES(${F} - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDMACRO() - -# Binary tests which are used by a script looking for a specific name. -MACRO(add_bin_test_no_prefix F) - build_bin_test(${F}) - ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F}) - IF(MSVC) - SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/") - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDMACRO() - -# Binary tests which are used by a script looking for a specific name. -MACRO(build_bin_test_no_prefix F) - build_bin_test(${F}) - IF(MSVC) - SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/") - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDMACRO() - -MACRO(add_bin_test prefix F) - ADD_EXECUTABLE(${prefix}_${F} ${F}.c) - TARGET_LINK_LIBRARIES(${prefix}_${F} - ${ALL_TLL_LIBS} - netcdf - ) - IF(MSVC) - SET_TARGET_PROPERTIES(${prefix}_${F} - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - ENDIF() - ADD_TEST(${prefix}_${F} ${EXECUTABLE_OUTPUT_PATH}/${prefix}_${F}) - IF(MSVC) - SET_PROPERTY(TEST ${prefix}_${F} PROPERTY FOLDER "tests/") - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDMACRO() - -# A cmake script to print out information at the end of the configuration step. -MACRO(print_conf_summary) - MESSAGE("") - MESSAGE("") - MESSAGE("Configuration Summary:") - MESSAGE("") - MESSAGE(STATUS "Building Shared Libraries: ${BUILD_SHARED_LIBS}") - MESSAGE(STATUS "Building netCDF-4: ${ENABLE_NETCDF_4}") - MESSAGE(STATUS "Building DAP Support: ${ENABLE_DAP}") - MESSAGE(STATUS "Building Utilities: ${BUILD_UTILITIES}") - IF(CMAKE_PREFIX_PATH) - MESSAGE(STATUS "CMake Prefix Path: ${CMAKE_PREFIX_PATH}") - ENDIF() - MESSAGE("") - - IF(${STATUS_PNETCDF} OR ${STATUS_PARALLEL}) - MESSAGE("Building Parallel NetCDF") - MESSAGE(STATUS "Using pnetcdf: ${STATUS_PNETCDF}") - MESSAGE(STATUS "Using Parallel IO: ${STATUS_PARALLEL}") - MESSAGE("") - ENDIF() - - MESSAGE("Tests Enabled: ${ENABLE_TESTS}") - IF(ENABLE_TESTS) - MESSAGE(STATUS "DAP Remote Tests: ${ENABLE_DAP_REMOTE_TESTS}") - MESSAGE(STATUS "DAP AUTH Tests: ${ENABLE_DAP_AUTH_TESTS}") - MESSAGE(STATUS "Extra Tests: ${ENABLE_EXTRA_TESTS}") - MESSAGE(STATUS "Coverage Tests: ${ENABLE_COVERAGE_TESTS}") - MESSAGE(STATUS "Parallel Tests: ${ENABLE_PARALLEL_TESTS}") - MESSAGE(STATUS "Large File Tests: ${ENABLE_LARGE_FILE_TESTS}") - MESSAGE(STATUS "Extreme Numbers: ${ENABLE_EXTREME_NUMBERS}") - ENDIF() - - MESSAGE("") - MESSAGE("Compiler:") - MESSAGE("") - MESSAGE(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") - MESSAGE(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") - MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") - IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}") - ENDIF() - IF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE") - MESSAGE(STATUS "CMAKE_C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}") - ENDIF() - - MESSAGE(STATUS "Linking against: ${ALL_TLL_LIBS}") - - MESSAGE("") -ENDMACRO() -## -# Shell script Macro -## -# Determine if 'bash' is on the system. -## - -FIND_PROGRAM(HAVE_BASH NAMES bash) -IF(HAVE_BASH) - MESSAGE(STATUS "Found bash: ${HAVE_BASH}") -ELSE() - MESSAGE(STATUS "Bash shell not found; disabling shell script tests.") -ENDIF() - -MACRO(add_sh_test prefix F) - IF(HAVE_BASH) - ADD_TEST(${prefix}_${F} bash "-c" "export srcdir=${CMAKE_CURRENT_SOURCE_DIR};export TOPSRCDIR=${CMAKE_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}/${F}.sh") - ENDIF() -ENDMACRO() - -# Macro for replacing '/MD' with '/MT'. -# Used only on Windows, /MD tells VS to use the shared -# CRT libs, MT tells VS to use the static CRT libs. -# -# Taken From: -# http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F -# -MACRO(specify_static_crt_flag) - SET(vars - CMAKE_C_FLAGS - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_MINSIZEREL - CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO) - - FOREACH(flag_var ${vars}) - IF(${flag_var} MATCHES "/MD") - STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - ENDIF() - ENDFOREACH() - - FOREACH(flag_var ${vars}) - MESSAGE(STATUS " '${flag_var}': ${${flag_var}}") - ENDFOREACH() - MESSAGE(STATUS "") -ENDMACRO() - -# 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_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 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() - -################################ -# End Macro Definitions -################################ - -# Create config.h file. -configure_file("${netCDF_SOURCE_DIR}/config.h.cmake.in" - "${netCDF_BINARY_DIR}/config.h") -ADD_DEFINITIONS(-DHAVE_CONFIG_H) -INCLUDE_DIRECTORIES(${netCDF_BINARY_DIR}) -# End autotools-style checs for config.h - -##### -# Set core names of the libraries. -##### -SET(netCDF_LIB_CORENAME "netcdf") - -##### -# Set the true names of all the libraries, if customized by external project -##### -# Recurse into other subdirectories. -add_subdirectory("include") -add_subdirectory(libdispatch) -add_subdirectory(libsrc) - -IF(USE_PNETCDF) - add_subdirectory(libsrcp) -ENDIF(USE_PNETCDF) - -IF(USE_HDF5) - add_subdirectory(libsrc4) -ENDIF(USE_HDF5) - -IF(USE_DAP) - ADD_SUBDIRECTORY(oc2) - ADD_SUBDIRECTORY(libdap2) -ENDIF() - -add_subdirectory(liblib) - -# For tests and utilities, we are no longer -# exporting symbols but rather importing them. -IF(BUILD_DLL) - REMOVE_DEFINITIONS(-DDLL_EXPORT) -ENDIF() - -# Enable Utilities. -IF(BUILD_UTILITIES) - INCLUDE_DIRECTORIES(ncdump) - ADD_SUBDIRECTORY(ncgen) - ADD_SUBDIRECTORY(ncgen3) - ADD_SUBDIRECTORY(ncdump) -ENDIF() - -# Enable tests -IF(ENABLE_TESTS) - IF(ENABLE_V2_API) - ADD_SUBDIRECTORY(nctest) - ENDIF() - ADD_SUBDIRECTORY(nc_test) - IF(USE_NETCDF4) - INCLUDE_DIRECTORIES(h5_test) - ADD_SUBDIRECTORY(nc_test4) - ADD_SUBDIRECTORY(h5_test) - ENDIF() - IF(USE_DAP AND ENABLE_DAP_REMOTE_TESTS) - ADD_SUBDIRECTORY(ncdap_test) - ENDIF() - - IF(ENABLE_EXAMPLES) - ADD_SUBDIRECTORY(examples) - ENDIF() -ENDIF() - -# Code to generate an export header -#GENERATE_EXPORT_HEADER(netcdf -# BASE_NAME netcdf -# EXPORT_MACRO_NAME netcdf_EXPORT -# EXPORT_FILE_NAME netcdf_Export.h -# STATIC_DEFINE netcdf_BUILT_AS_STATIC -#) - -##### -# Build doxygen documentation, if need be. -##### -ADD_SUBDIRECTORY(docs) - -## -# Brute force, grab all of the dlls from the depency directory, -# install them in the binary dir. Grab all of the .libs, put them -# in the libdir. -## -IF(MSVC) - FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/lib/*.lib) - INSTALL(FILES ${COPY_FILES} - DESTINATION ${CMAKE_INSTALL_LIBDIR} - COMPONENT dependencies) - - FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/bin/*.dll) - STRING(REGEX REPLACE "msv[.*].dll" "" COPY_FILES "${COPY_FILES}") - INSTALL(FILES ${COPY_FILES} - DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT dependencies) - - #INSTALL(DIRECTORY ${CMAKE_PREFIX_PATH} DESTINATION "deps" COMPONENT dependencies) - # INSTALL(FILES ${ALL_TLL_LIBS} - # DESTINATION ${CMAKE_INSTALL_LIBDIR} - # COMPONENT dependencies) -ENDIF() - -# Subdirectory CMakeLists.txt files should specify their own -# 'install' files. -# Including 'CPack' kicks everything off. -INCLUDE(InstallRequiredSystemLibraries) -CONFIGURE_FILE( - ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake - @ONLY - ) - -### -# Create pkgconfig files. -### - -IF(NOT DEFINED CMAKE_INSTALL_LIBDIR) - SET(CMAKE_INSTALL_LIBDIR lib) -ENDIF(NOT DEFINED CMAKE_INSTALL_LIBDIR) - -# Set -SET(prefix ${CMAKE_INSTALL_PREFIX}) -SET(exec_prefix ${CMAKE_INSTALL_PREFIX}) -SET(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) -SET(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) -SET(CC ${CMAKE_C_COMPILER}) - -# Process all dependency libraries and create a string -# used when parsing netcdf.pc.in - -FOREACH(_LIB ${ALL_TLL_LIBS}) - GET_FILENAME_COMPONENT(_LIB_NAME ${_LIB} NAME_WE) - STRING(REGEX REPLACE "^lib" "" _NAME ${_LIB_NAME}) - LIST(APPEND NC_LIBS "-l${_NAME}") - GET_FILENAME_COMPONENT(_LIB_DIR ${_LIB} PATH) - LIST(APPEND LINKFLAGS "-L${_LIB_DIR}") -ENDFOREACH() - -SET(NC_LIBS "-lnetcdf ${NC_LIBS}") - -STRING(REPLACE ";" " " NC_LIBS "${NC_LIBS}") -STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}") - -LIST(REMOVE_DUPLICATES NC_LIBS) -LIST(REMOVE_DUPLICATES LINKFLAGS) - -configure_file( - ${netCDF_SOURCE_DIR}/netcdf.pc.in - ${netCDF_BINARY_DIR}/netcdf.pc @ONLY) - -FILE(MAKE_DIRECTORY ${netCDF_BINARY_DIR}/tmp) -configure_file("${netCDF_SOURCE_DIR}/nc-config.cmake.in" - "${netCDF_BINARY_DIR}/tmp/nc-config" @ONLY) -FILE(COPY "${netCDF_BINARY_DIR}/tmp/nc-config" - DESTINATION ${netCDF_BINARY_DIR}/ - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -INSTALL(FILES ${netCDF_BINARY_DIR}/netcdf.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - COMPONENT utilities) - -INSTALL(PROGRAMS ${netCDF_BINARY_DIR}/nc-config - DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT utilities) - -### -# End pkgconfig, nc-config file creation. -### - -## -# Print the configuration summary -## -print_conf_summary() - -# Enable Makedist files. -ADD_MAKEDIST() -ENABLE_MAKEDIST(README.md COPYRIGHT RELEASE_NOTES.md INSTALL INSTALL.cmake test_prog.c lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in cmake_uninstall.cmake.in netcdf-config-version.cmake.in netcdf-config.cmake.in FixBundle.cmake.in nc-config.cmake.in configure configure.ac install-sh config.h.in config.sub CTestConfig.cmake.in) - -##### -# Configure and print the libnetcdf.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_BINARY_DIR}") - -SET(CC_VERSION "${CMAKE_C_COMPILER}") - -# Build *FLAGS for libnetcdf.settings. -SET(CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}") -SET(CPPFLAGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_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 " "" TMP_NC_LIBS "${NC_LIBS}") -SET(LIBS "${TMP_NC_LIBS}") - -is_enabled(ENABLE_V2_API HAS_NC2) -is_enabled(ENABLE_NETCDF_4 HAS_NC4) -is_enabled(ENABLE_HDF4 HAS_HDF4) -is_enabled(ENABLE_NETCDF_4 HAS_HDF5) -is_enabled(USE_SZIP HAS_SZIP) -is_enabled(STATUS_PNETCDF HAS_PNETCDF) -is_enabled(STATUS_PARALLEL HAS_PARALLEL) -is_enabled(ENABLE_PARALLEL4 HAS_PARALLEL4) -is_enabled(USE_DAP HAS_DAP) -is_enabled(USE_DISKLESS HAS_DISKLESS) -is_enabled(USE_MMAP HAS_MMAP) -is_enabled(JNA HAS_JNA) - -# Generate file from template. -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf.settings.in" - "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.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.settings" - LIBNETCDF_SETTINGS) -MESSAGE(${LIBNETCDF_SETTINGS}) - -# Install libnetcdf.settings file into same location -# as the libraries. -INSTALL(FILES "${netCDF_BINARY_DIR}/libnetcdf.settings" - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT libraries) - -##### -# End libnetcdf.settings section. -##### - -##### -# Create 'netcdf_meta.h' include file. -##### -configure_file( - ${netCDF_SOURCE_DIR}/include/netcdf_meta.h.in - ${netCDF_SOURCE_DIR}/include/netcdf_meta.h @ONLY) - -FILE(COPY ${netCDF_SOURCE_DIR}/include/netcdf_meta.h - DESTINATION ${netCDF_BINARY_DIR}/include/) - -#### -# Export files -#### - -# Create CMake package configuration files. With these, other packages using -# cmake should be able to find netcdf using find_package and find_library. -# The EXPORT call is paired with one in liblib. -set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/netCDF) - -install(EXPORT netCDFTargets - DESTINATION ${ConfigPackageLocation} - COMPONENT headers - ) - -include(CMakePackageConfigHelpers) -CONFIGURE_PACKAGE_CONFIG_FILE( - "${CMAKE_CURRENT_SOURCE_DIR}/netCDFConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" - INSTALL_DESTINATION "${ConfigPackageLocation}" - NO_CHECK_REQUIRED_COMPONENTS_MACRO - PATH_VARS - CMAKE_INSTALL_PREFIX - CMAKE_INSTALL_INCLUDEDIR - CMAKE_INSTALL_LIBDIR - ) - -INSTALL( - FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" - DESTINATION "${ConfigPackageLocation}" - COMPONENT headers - ) - -# Create export configuration -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" - VERSION ${netCDF_VERSION} - COMPATIBILITY SameMajorVersion - ) - -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" - DESTINATION ${ConfigPackageLocation} - COMPONENT headers - ) - -#### -# End export files -#### - - - -# CPack inclusion must come last. -# INCLUDE(CPack) -INCLUDE(CMakeInstallation.cmake) diff --git a/contrib/netcdf/4.4.1.1/Makefile.am b/contrib/netcdf/4.4.1.1/Makefile.am deleted file mode 100644 index c1e9613257d..00000000000 --- a/contrib/netcdf/4.4.1.1/Makefile.am +++ /dev/null @@ -1,226 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005-2013, see the COPYRIGHT file for more information. - -# This is the main automake file for netCDF. It builds the different -# netcdf directories. Not all directories are built, depending on the -# options selected during configure. - -# This directory stores libtool macros, put there by aclocal. -ACLOCAL_AMFLAGS = -I m4 - -# These files get added to the distribution. -EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c \ - lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt \ - config.h.cmake.in cmake_uninstall.cmake.in \ - FixBundle.cmake.in \ - nc-config.cmake.in RELEASE_NOTES.md CTestCustom.cmake \ - CTestConfig.cmake.in libnetcdf.settings.in netCDFConfig.cmake.in \ - CMakeInstallation.cmake - -# Doxygen doesn't build nicely in vpath builds. -# Don't do this; it wipes out any exported values -#DISTCHECK_CONFIGURE_FLAGS = --disable-doxygen - -pkgconfigdir=$(libdir)/pkgconfig -pkgconfig_DATA = netcdf.pc - -# We need a way to automatically generate INSTALL from -# docs/install.doc, now that we've switched from texinfo to doxygen. -# INSTALL: -# non-existent-doxygen-to-text-utility < docs/install.doc > INSTALL - -# Does the user want to build the V2 API? -if BUILD_V2 -V2_TEST = nctest -endif - -# Does the user want to build ncgen/ncdump? -if BUILD_UTILITIES -NCGEN3 = ncgen3 -NCGEN = ncgen -NCDUMP = ncdump -endif - -# Does the user want to build the examples? -if BUILD_EXAMPLES -EXAMPLES = examples -endif - -# Is the user building netCDF-4? -if USE_NETCDF4 -H5_TEST_DIR = h5_test -LIBSRC4_DIR = libsrc4 -NC_TEST4 = nc_test4 -endif - -# Build the opendap client? -if BUILD_DAP -OCLIB = oc2 -DAP2 = libdap2 -#if BUILD_UTILITIES -NCDAPTESTDIR = ncdap_test -#endif # BUILD_UTILITIES -endif - -# Build pnetcdf -if USE_PNETCDF -LIBSRCP = libsrcp -endif - -# Build UDUNITS? -#if BUILD_UDUNITS -#UDUNITS = udunits -#endif - -# Build libcf? -#if BUILD_LIBCF -#LIBCF = libcf -#endif - -# Define Test directories -if BUILD_TESTSETS -TESTDIRS = $(V2_TEST) nc_test $(NC_TEST4) $(NCDAPTESTDIR) -endif - -# This is the list of subdirs for which Makefiles will be constructed -# and run. ncgen must come before ncdump, because their tests -# depend on it. -SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \ -$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBSRCP) liblib \ -$(NCGEN3) $(NCGEN) $(NCDUMP) \ -$(TESTDIRS) \ -docs $(EXAMPLES) \ -$(UDUNITS) $(LIBCF) - -# Remove these generated files, for a distclean. -DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings - -# The nc-config script helps the user build programs with netCDF. -bin_SCRIPTS = nc-config - -# What needs to go in the binrary dist? -BINFILES = README_BINARIES.txt -BINFILES += include/netcdf.h share/man/man3/netcdf.3 lib/libnetcdf.a -BINFILES += libnetcdf.settings -ZIPBINFILES = ${prefix}/include/netcdf.h ${prefix}/share/man/man3/netcdf.3 ${prefix}/lib/libnetcdf.a - -if BUILD_UTILITIES -BINFILES += bin/ncgen3$(EXEEXT) bin/ncgen$(EXEEXT) bin/ncdump$(EXEEXT) \ -share/man/man1/ncgen.1 share/man/man1/ncdump.1 -ZIPBINFILES += ${prefix}/bin/ncgen3$(EXEEXT) ${prefix}/bin/ncgen$(EXEEXT) ${prefix}/bin/ncdump$(EXEEXT) \ -${prefix}/share/man/man1/ncgen.1 ${prefix}/share/man/man1/ncdump.1 -endif - -if BUILD_DLL -BINFILES += bin/libnetcdf-7.dll lib/libnetcdf.dll.a lib/libnetcdf.a \ -lib/libnetcdf.la lib/netcdfdll.def -ZIPBINFILES += ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${prefix}/lib/libnetcdf.a \ -${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def -endif # BUILD_DLL - -# install libnetcdf.settings in lib directory. -settingsdir=$(libdir) -settings_DATA=libnetcdf.settings - -#### -# Provide an entry to rebuild all the m4 generated files -# List of files to create: WARNING leave off the extension -#### - -MM4= ./nc_test/test_put ./nc_test/test_get \ - ./libsrc/netcdf ./libsrc/putget ./libsrc/ncx \ - ./libsrc/t_ncxx ./libsrc/attr - -mm4:: - for m in ${MM4} ; do \ - b=`basename $$m` ; d=`dirname $$m`;\ - pushd $$d; m4 -s $${b}.m4 > $${b}.c ; popd; done - - -##### -# If ENABLE_FORTRAN was turned on, -# we have new make targets, build-netcdf-fortran and -# install-netcdf-fortran. -##### - - -### -# build-netcdf-fortran -### -if BUILD_FORTRAN - -build-netcdf-fortran: - echo "Downloading and Building NetCDF-Fortran" - chmod u+x $(abs_top_builddir)/postinstall.sh - sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build" - -### -# install-netcdf-fortran -### -install-netcdf-fortran: - echo "Installing NetCDF-Fortran" - chmod u+x $(abs_top_builddir)/postinstall.sh - sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install" - -endif - -# At Unidata, package up binaries. -ftpbin: install - echo "Getting binaries from ${prefix}" - ls -l ${prefix} - echo "These are the binaries for netCDF @PACKAGE_VERSION@." > ${prefix}/README_BINARIES.txt - echo "For this build: CC=$(CC) CXX=$(CXX)" >> ${prefix}/README_BINARIES.txt - echo "CFLAGS=$(CFLAGS) CXXFLAGS=$(CXXFLAGS)" >> ${prefix}/README_BINARIES.txt - echo "FCFLAGS=$(FCFLAGS) F77FLAGS=$(F77FLAGS) $F90FLAGS=$(F90FLAGS)" >> ${prefix}/README_BINARIES.txt - which tar - echo "PATH: $(PATH)" - tar cf @BINFILE_NAME@ -C ${prefix} ${BINFILES} - gzip -f @BINFILE_NAME@ - zip -j netcdf_${VERSION}.zip ${ZIPBINFILES} - -check_nc_config: - $(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs` - ./test_prog - - -install-data-hook: - -# if BUILD_FORTRAN -# chmod u+x $(abs_top_builddir)/postinstall.sh -# sh -c "$(abs_top_builddir)/postinstall.sh -t autotools" -#endif - -if BUILD_DLL - cp liblib/netcdfdll.def $(DESTDIR)${prefix}/bin -endif # BUILD_DLL - @echo '' - @echo '+-------------------------------------------------------------+' - @echo '| Congratulations! You have successfully installed netCDF! |' - @echo '| |' - @echo '| You can use script "nc-config" to find out the relevant |' - @echo '| compiler options to build your application. Enter |' - @echo '| |' - @echo '| nc-config --help |' - @echo '| |' - @echo '| for additional information. |' - @echo '| |' - @echo '| CAUTION: |' - @echo '| |' - @echo '| If you have not already run "make check", then we strongly |' - @echo '| recommend you do so. It does not take very long. |' - @echo '| |' - @echo '| Before using netCDF to store important data, test your |' - @echo '| build with "make check". |' - @echo '| |' - @echo '| NetCDF is tested nightly on many platforms at Unidata |' - @echo '| but your platform is probably different in some ways. |' - @echo '| |' - @echo '| If any tests fail, please see the netCDF web site: |' - @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 '| tools for use in geoscience education and research. |' - @echo '| http://www.unidata.ucar.edu |' - @echo '+-------------------------------------------------------------+' - @echo '' diff --git a/contrib/netcdf/4.4.1.1/Makefile.in b/contrib/netcdf/4.4.1.1/Makefile.in deleted file mode 100644 index 699bef0f0b3..00000000000 --- a/contrib/netcdf/4.4.1.1/Makefile.in +++ /dev/null @@ -1,1203 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005-2013, see the COPYRIGHT file for more information. - -# This is the main automake file for netCDF. It builds the different -# netcdf directories. Not all directories are built, depending on the -# options selected during configure. - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@BUILD_UTILITIES_TRUE@am__append_1 = bin/ncgen3$(EXEEXT) bin/ncgen$(EXEEXT) bin/ncdump$(EXEEXT) \ -@BUILD_UTILITIES_TRUE@share/man/man1/ncgen.1 share/man/man1/ncdump.1 - -@BUILD_UTILITIES_TRUE@am__append_2 = ${prefix}/bin/ncgen3$(EXEEXT) ${prefix}/bin/ncgen$(EXEEXT) ${prefix}/bin/ncdump$(EXEEXT) \ -@BUILD_UTILITIES_TRUE@${prefix}/share/man/man1/ncgen.1 ${prefix}/share/man/man1/ncdump.1 - -@BUILD_DLL_TRUE@am__append_3 = bin/libnetcdf-7.dll lib/libnetcdf.dll.a lib/libnetcdf.a \ -@BUILD_DLL_TRUE@lib/libnetcdf.la lib/netcdfdll.def - -@BUILD_DLL_TRUE@am__append_4 = ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${prefix}/lib/libnetcdf.a \ -@BUILD_DLL_TRUE@${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def - -subdir = . -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = nc-config netcdf.pc libnetcdf.settings \ - postinstall.sh -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" \ - "$(DESTDIR)$(settingsdir)" -SCRIPTS = $(bin_SCRIPTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(pkgconfig_DATA) $(settings_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir distdir-am dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = include oc2 h5_test libdispatch libsrc libsrc4 libdap2 \ - libsrcp liblib ncgen3 ncgen ncdump nctest nc_test nc_test4 \ - ncdap_test docs examples -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/libnetcdf.settings.in $(srcdir)/nc-config.in \ - $(srcdir)/netcdf.pc.in $(srcdir)/postinstall.sh.in compile \ - config.guess config.sub install-sh ltmain.sh missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz -GZIP_ENV = --best -DIST_TARGETS = dist-xz dist-bzip2 dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# This directory stores libtool macros, put there by aclocal. -ACLOCAL_AMFLAGS = -I m4 - -# These files get added to the distribution. -EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c \ - lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt \ - config.h.cmake.in cmake_uninstall.cmake.in \ - FixBundle.cmake.in \ - nc-config.cmake.in RELEASE_NOTES.md CTestCustom.cmake \ - CTestConfig.cmake.in libnetcdf.settings.in netCDFConfig.cmake.in \ - CMakeInstallation.cmake - - -# Doxygen doesn't build nicely in vpath builds. -# Don't do this; it wipes out any exported values -#DISTCHECK_CONFIGURE_FLAGS = --disable-doxygen -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = netcdf.pc - -# We need a way to automatically generate INSTALL from -# docs/install.doc, now that we've switched from texinfo to doxygen. -# INSTALL: -# non-existent-doxygen-to-text-utility < docs/install.doc > INSTALL - -# Does the user want to build the V2 API? -@BUILD_V2_TRUE@V2_TEST = nctest - -# Does the user want to build ncgen/ncdump? -@BUILD_UTILITIES_TRUE@NCGEN3 = ncgen3 -@BUILD_UTILITIES_TRUE@NCGEN = ncgen -@BUILD_UTILITIES_TRUE@NCDUMP = ncdump - -# Does the user want to build the examples? -@BUILD_EXAMPLES_TRUE@EXAMPLES = examples - -# Is the user building netCDF-4? -@USE_NETCDF4_TRUE@H5_TEST_DIR = h5_test -@USE_NETCDF4_TRUE@LIBSRC4_DIR = libsrc4 -@USE_NETCDF4_TRUE@NC_TEST4 = nc_test4 - -# Build the opendap client? -@BUILD_DAP_TRUE@OCLIB = oc2 -@BUILD_DAP_TRUE@DAP2 = libdap2 -#if BUILD_UTILITIES -@BUILD_DAP_TRUE@NCDAPTESTDIR = ncdap_test -#endif # BUILD_UTILITIES - -# Build pnetcdf -@USE_PNETCDF_TRUE@LIBSRCP = libsrcp - -# Build UDUNITS? -#if BUILD_UDUNITS -#UDUNITS = udunits -#endif - -# Build libcf? -#if BUILD_LIBCF -#LIBCF = libcf -#endif - -# Define Test directories -@BUILD_TESTSETS_TRUE@TESTDIRS = $(V2_TEST) nc_test $(NC_TEST4) $(NCDAPTESTDIR) - -# This is the list of subdirs for which Makefiles will be constructed -# and run. ncgen must come before ncdump, because their tests -# depend on it. -SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \ -$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBSRCP) liblib \ -$(NCGEN3) $(NCGEN) $(NCDUMP) \ -$(TESTDIRS) \ -docs $(EXAMPLES) \ -$(UDUNITS) $(LIBCF) - - -# Remove these generated files, for a distclean. -DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings - -# The nc-config script helps the user build programs with netCDF. -bin_SCRIPTS = nc-config - -# What needs to go in the binrary dist? -BINFILES = README_BINARIES.txt include/netcdf.h \ - share/man/man3/netcdf.3 lib/libnetcdf.a libnetcdf.settings \ - $(am__append_1) $(am__append_3) -ZIPBINFILES = ${prefix}/include/netcdf.h \ - ${prefix}/share/man/man3/netcdf.3 ${prefix}/lib/libnetcdf.a \ - $(am__append_2) $(am__append_4) - -# install libnetcdf.settings in lib directory. -settingsdir = $(libdir) -settings_DATA = libnetcdf.settings - -#### -# Provide an entry to rebuild all the m4 generated files -# List of files to create: WARNING leave off the extension -#### -MM4 = ./nc_test/test_put ./nc_test/test_get \ - ./libsrc/netcdf ./libsrc/putget ./libsrc/ncx \ - ./libsrc/t_ncxx ./libsrc/attr - -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -nc-config: $(top_builddir)/config.status $(srcdir)/nc-config.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -netcdf.pc: $(top_builddir)/config.status $(srcdir)/netcdf.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -libnetcdf.settings: $(top_builddir)/config.status $(srcdir)/libnetcdf.settings.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -postinstall.sh: $(top_builddir)/config.status $(srcdir)/postinstall.sh.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) -install-settingsDATA: $(settings_DATA) - @$(NORMAL_INSTALL) - @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(settingsdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(settingsdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(settingsdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(settingsdir)" || exit $$?; \ - done - -uninstall-settingsDATA: - @$(NORMAL_UNINSTALL) - @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(settingsdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz - $(am__post_remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(SCRIPTS) $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(settingsdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA install-settingsDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-binSCRIPTS - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA \ - uninstall-settingsDATA - -.MAKE: $(am__recursive_targets) all install-am install-data-am \ - install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-libtool distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-binSCRIPTS install-data \ - install-data-am install-data-hook install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-settingsDATA install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-binSCRIPTS uninstall-pkgconfigDATA \ - uninstall-settingsDATA - -.PRECIOUS: Makefile - - -mm4:: - for m in ${MM4} ; do \ - b=`basename $$m` ; d=`dirname $$m`;\ - pushd $$d; m4 -s $${b}.m4 > $${b}.c ; popd; done - -##### -# If ENABLE_FORTRAN was turned on, -# we have new make targets, build-netcdf-fortran and -# install-netcdf-fortran. -##### - -### -# build-netcdf-fortran -### - -@BUILD_FORTRAN_TRUE@build-netcdf-fortran: -@BUILD_FORTRAN_TRUE@ echo "Downloading and Building NetCDF-Fortran" -@BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh -@BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build" - -### -# install-netcdf-fortran -### -@BUILD_FORTRAN_TRUE@install-netcdf-fortran: -@BUILD_FORTRAN_TRUE@ echo "Installing NetCDF-Fortran" -@BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh -@BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install" - -# At Unidata, package up binaries. -ftpbin: install - echo "Getting binaries from ${prefix}" - ls -l ${prefix} - echo "These are the binaries for netCDF @PACKAGE_VERSION@." > ${prefix}/README_BINARIES.txt - echo "For this build: CC=$(CC) CXX=$(CXX)" >> ${prefix}/README_BINARIES.txt - echo "CFLAGS=$(CFLAGS) CXXFLAGS=$(CXXFLAGS)" >> ${prefix}/README_BINARIES.txt - echo "FCFLAGS=$(FCFLAGS) F77FLAGS=$(F77FLAGS) $F90FLAGS=$(F90FLAGS)" >> ${prefix}/README_BINARIES.txt - which tar - echo "PATH: $(PATH)" - tar cf @BINFILE_NAME@ -C ${prefix} ${BINFILES} - gzip -f @BINFILE_NAME@ - zip -j netcdf_${VERSION}.zip ${ZIPBINFILES} - -check_nc_config: - $(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs` - ./test_prog - -install-data-hook: - -# if BUILD_FORTRAN -# chmod u+x $(abs_top_builddir)/postinstall.sh -# sh -c "$(abs_top_builddir)/postinstall.sh -t autotools" -#endif - -@BUILD_DLL_TRUE@ cp liblib/netcdfdll.def $(DESTDIR)${prefix}/bin - @echo '' - @echo '+-------------------------------------------------------------+' - @echo '| Congratulations! You have successfully installed netCDF! |' - @echo '| |' - @echo '| You can use script "nc-config" to find out the relevant |' - @echo '| compiler options to build your application. Enter |' - @echo '| |' - @echo '| nc-config --help |' - @echo '| |' - @echo '| for additional information. |' - @echo '| |' - @echo '| CAUTION: |' - @echo '| |' - @echo '| If you have not already run "make check", then we strongly |' - @echo '| recommend you do so. It does not take very long. |' - @echo '| |' - @echo '| Before using netCDF to store important data, test your |' - @echo '| build with "make check". |' - @echo '| |' - @echo '| NetCDF is tested nightly on many platforms at Unidata |' - @echo '| but your platform is probably different in some ways. |' - @echo '| |' - @echo '| If any tests fail, please see the netCDF web site: |' - @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 '| tools for use in geoscience education and research. |' - @echo '| http://www.unidata.ucar.edu |' - @echo '+-------------------------------------------------------------+' - @echo '' - -# 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/contrib/netcdf/4.4.1.1/acinclude.m4 b/contrib/netcdf/4.4.1.1/acinclude.m4 deleted file mode 100644 index b88246a154f..00000000000 --- a/contrib/netcdf/4.4.1.1/acinclude.m4 +++ /dev/null @@ -1,751 +0,0 @@ -dnl $Id: acinclude.m4,v 1.34 2009/10/14 21:12:01 dmh Exp $ -dnl UD macros for netcdf configure - - -dnl Convert a string to all uppercase. -dnl -define([uppercase], -[translit($1, abcdefghijklmnopqrstuvwxyz, ABCDEFGHIJKLMNOPQRSTUVWXYZ)]) - -dnl -dnl Check for an nm(1) utility. -dnl -AC_DEFUN([UD_PROG_NM], -[ - case "${NM-unset}" in - unset) AC_CHECK_PROGS(NM, nm, nm) ;; - *) AC_CHECK_PROGS(NM, $NM nm, nm) ;; - esac - AC_MSG_CHECKING(nm flags) - case "${NMFLAGS-unset}" in - unset) NMFLAGS= ;; - esac - AC_MSG_RESULT($NMFLAGS) - AC_SUBST(NMFLAGS) -]) - -dnl -dnl Check for an m4(1) preprocessor utility. -dnl -AC_DEFUN([UD_PROG_M4], -[ - case "${M4-unset}" in - unset) AC_CHECK_PROGS(M4, m4 gm4, m4) ;; - *) AC_CHECK_PROGS(M4, $M4 m4 gm4, m4) ;; - esac - AC_MSG_CHECKING(m4 flags) - case "${M4FLAGS-unset}" in - unset) M4FLAGS=-B10000 ;; - esac - AC_MSG_RESULT($M4FLAGS) - AC_SUBST(M4FLAGS) -]) - -dnl -dnl Set the top-level source-directory. -dnl -AC_DEFUN([UD_SRCDIR], -[ - AC_MSG_CHECKING(for top-level source-directory) - SRCDIR=`(cd $srcdir && pwd)` - AC_MSG_RESULT($SRCDIR) - AC_SUBST(SRCDIR) -]) - - -dnl -dnl like AC_LONG_DOUBLE, except checks for 'long long' -dnl -AC_DEFUN([UD_C_LONG_LONG], -[AC_MSG_CHECKING(for long long) -AC_CACHE_VAL(ac_cv_c_long_long, -[if test "$GCC" = yes; then - ac_cv_c_long_long=yes -else -AC_TRY_RUN([int main() { -long long foo = 0; -exit(sizeof(long long) < sizeof(long)); }], -ac_cv_c_long_long=yes, ac_cv_c_long_long=no, :) -fi])dnl -AC_MSG_RESULT($ac_cv_c_long_long) -if test "$ac_cv_c_long_long" = yes; then - AC_DEFINE([HAVE_LONG_LONG], [], [have long long type]) -fi -]) - -dnl UD_CHECK_SIZEOF(TYPE) -AC_DEFUN([UD_CHECK_SIZEOF], -[changequote(<<, >>)dnl -dnl The name to #define. -define(<>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl -dnl The cache variable name. -define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl -changequote([, ])dnl -AC_MSG_CHECKING(size of $1) -AC_CACHE_VAL(AC_CV_NAME, -[AC_TRY_RUN([#include -#include -#if STDC_HEADERS -#include -#endif -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof($1)); - exit(0); -}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, AC_CV_NAME=0)])dnl -AC_MSG_RESULT($AC_CV_NAME) -AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [type size]) -undefine([AC_TYPE_NAME])dnl -undefine([AC_CV_NAME])dnl -]) - - -dnl -dnl UD_CHECK_IEEE -dnl If the 'double' is not an IEEE double -dnl or the 'float' is not and IEEE single, -dnl define NO_IEEE_FLOAT -dnl -AC_DEFUN([UD_CHECK_IEEE], -[ -AC_MSG_CHECKING(for IEEE floating point format) -AC_TRY_RUN([#ifndef NO_FLOAT_H -#include -#endif - -#define EXIT_NOTIEEE 1 -#define EXIT_MAYBEIEEE 0 - -int -main() -{ -#if defined(FLT_RADIX) && FLT_RADIX != 2 - return EXIT_NOTIEEE; -#elif defined(DBL_MAX_EXP) && DBL_MAX_EXP != 1024 - return EXIT_NOTIEEE; -#elif defined(DBL_MANT_DIG) && DBL_MANT_DIG != 53 - return EXIT_NOTIEEE; -#elif defined(FLT_MAX_EXP) && !(FLT_MAX_EXP == 1024 || FLT_MAX_EXP == 128) - return EXIT_NOTIEEE; -#elif defined(FLT_MANT_DIG) && !(FLT_MANT_DIG == 53 || FLT_MANT_DIG == 24) - return EXIT_NOTIEEE; -#else - /* (assuming eight bit char) */ - if(sizeof(double) != 8) - return EXIT_NOTIEEE; - if(!(sizeof(float) == 4 || sizeof(float) == 8)) - return EXIT_NOTIEEE; - - return EXIT_MAYBEIEEE; -#endif -}],ac_cv_c_ieeefloat=yes, ac_cv_c_ieeefloat=no, :) -AC_MSG_RESULT($ac_cv_c_ieeefloat) -if test "$ac_cv_c_ieeefloat" = no; then - AC_DEFINE([NO_IEEE_FLOAT], [], [no IEEE float on this platform]) -fi -]) - -dnl Check for utility for generating makefile dependencies. -dnl Should only be used at the UPC. -dnl -AC_DEFUN([UD_PROG_CC_MAKEDEPEND], -[ - AC_MSG_CHECKING(how to make dependencies) - case `uname -s` in - IRIX*|OSF1) - CC_MAKEDEPEND='cc -M' - ;; - SunOS) - case `uname -r` in - 4*) - CC_MAKEDEPEND='cc -M' - ;; - 5*|*) - CC_MAKEDEPEND='cc -xM' - ;; - esac - ;; - ULTRIX) - case `uname -m` in - RISC) - CC_MAKEDEPEND='cc -M' - ;; - VAX) # Can't handle prototypes in netcdf.h - ;; - esac - ;; - AIX) # Writes to .u files rather than standard out - ;; - HP-UX) # Writes escaped newlines to standard error - ;; - esac - case "${CC_MAKEDEPEND}" in - '') - CC_MAKEDEPEND=false - ;; - esac - AC_MSG_RESULT($CC_MAKEDEPEND) - AC_SUBST(CC_MAKEDEPEND) -]) - -dnl Check for a Fortran type equivalent to a netCDF type. -dnl -dnl UD_CHECK_FORTRAN_NCTYPE(forttype, possibs, nctype) -dnl -AC_DEFUN([UD_CHECK_FORTRAN_NCTYPE], -[ - AC_MSG_CHECKING(for Fortran-equivalent to netCDF \"$3\") - for type in $2; do - cat >conftest.f <conftest.f <conftest.c < -#include -void main() -{ -$3 values[[]] = {0, $4, 0, $5, 0}; -$3 minval, maxval; -void $FCALLSCSUB($3*, $3*, $3*); -$FCALLSCSUB(values, &minval, &maxval); -exit(!(minval == $4 && maxval == $5)); -} -EOF - doit='$CC -o conftest ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} conftest.c conftestf.o ${LIBS}' - if AC_TRY_EVAL(doit); then - doit=./conftest - if AC_TRY_EVAL(doit); then - AC_MSG_RESULT($2) - $1=$2 - AC_DEFINE_UNQUOTED($1,$2, [take a guess]) - else - AC_MSG_RESULT(no equivalent type) - unset $1 - fi - else - AC_MSG_ERROR(Could not compile-and-link conftest.c and conftestf.o) - fi - else - AC_MSG_ERROR(Could not compile conftest.f) - fi - rm -f conftest* -]) - - -dnl Check for a Fortran data type. -dnl -dnl UD_CHECK_FORTRAN_TYPE(varname, ftypes) -dnl -AC_DEFUN([UD_CHECK_FORTRAN_TYPE], -[ - for ftype in $2; do - AC_MSG_CHECKING(for Fortran \"$ftype\") - cat >conftest.f <conftest.f <<\EOF - call sub() - end -EOF - doit='$FC -c ${FFLAGS} conftest.f' - if AC_TRY_EVAL(doit); then - FCALLSCSUB=`$NM $NMFLAGS conftest.o | awk ' - /SUB_/{print "SUB_";exit} - /SUB/ {print "SUB"; exit} - /sub_/{print "sub_";exit} - /sub/ {print "sub"; exit}'` - case "$FCALLSCSUB" in - '') AC_MSG_ERROR(not found) - ;; - *) AC_MSG_RESULT($FCALLSCSUB) - ;; - esac - else - AC_MSG_ERROR(Could not compile conftest.f) - fi - rm -f conftest* - ;; - esac -]) - - -dnl Check for a C type equivalent to a Fortran type. -dnl -dnl UD_CHECK_CTYPE_FORTRAN(ftype, ctypes, fmacro_root) -dnl -AC_DEFUN([UD_CHECK_CTYPE_FORTRAN], -[ - cat >conftestf.f <conftest.c </dev/null || echo dummy_system` - FTPBINDIR=${FTPDIR-/home/ftp}/pub/binary/$system - ;; - esac - AC_SUBST(FTPBINDIR)dnl - AC_MSG_RESULT($FTPBINDIR) -]) - - -dnl -dnl -dnl - -dnl -dnl These headers won't get C style comments -dnl -dnl UD_CONFIG_HEADER(HEADER-TO-CREATE ...) -AC_DEFUN([UD_CONFIG_HEADER], -[define(UD_LIST_HEADER, $1)]) - - -dnl -dnl Print which compilers are going to be used, the flags, and their -dnl locations. This is all to assist in debugging, and help with -dnl support questions. -dnl -AC_DEFUN([UD_DISPLAY_RESULTS], -[ -AC_MSG_CHECKING(CPPFLAGS) -AC_MSG_RESULT($CPPFLAGS) -AC_MSG_CHECKING(CC CFLAGS) -AC_MSG_RESULT($CC $CFLAGS) -ud_type_cc=`type $CC` -AC_MSG_CHECKING(type $CC) -AC_MSG_RESULT($ud_type_cc) - -AC_MSG_CHECKING(CXX) -if test -n "$CXX"; then - AC_MSG_RESULT($CXX) - AC_MSG_CHECKING(CXXFLAGS) - AC_MSG_RESULT($CXXFLAGS) - ud_type_CXX=`type $CXX` - AC_MSG_CHECKING(type $CXX) - AC_MSG_RESULT($ud_type_CXX) -else - AC_MSG_RESULT(unset) -fi - -AC_MSG_CHECKING(FC) -if test -n "$FC"; then - AC_MSG_RESULT($FC) - AC_MSG_CHECKING(FFLAGS) - AC_MSG_RESULT($FFLAGS) - ud_type_fc=`type $FC` - AC_MSG_CHECKING(type $FC) - AC_MSG_RESULT($ud_type_fc) -else - AC_MSG_RESULT(unset) -fi - -AC_MSG_CHECKING(F90) -if test -n "$F90"; then - AC_MSG_RESULT($F90) - AC_MSG_CHECKING(FCFLAGS) - AC_MSG_RESULT($FCFLAGS) - ud_type_F90=`type $F90` - AC_MSG_CHECKING(type $F90) - AC_MSG_RESULT($ud_type_F90) -else - AC_MSG_RESULT(unset) -fi - -AC_MSG_CHECKING(AR) -if test -n "$AR"; then - AC_MSG_RESULT($AR) - AC_MSG_CHECKING(AR_FLAGS) - AC_MSG_RESULT($AR_FLAGS) - ud_type_AR=`type $AR` - AC_MSG_CHECKING(type $AR) - AC_MSG_RESULT($ud_type_AR) -else - AC_MSG_RESULT(unset) -fi - -AC_MSG_CHECKING(NM) -if test -n "$NM"; then - AC_MSG_RESULT($NM) - AC_MSG_CHECKING(NMFLAGS) - AC_MSG_RESULT($NMFLAGS) -# ud_type_NM=`type $NM` -# AC_MSG_CHECKING(type $NM) -# AC_MSG_RESULT($ud_type_NM) -else - AC_MSG_RESULT(unset) -fi - -]) - -# AC_PROG_FC_MOD -# --------------- -AC_DEFUN([AC_PROG_FC_UPPERCASE_MOD], -[ -AC_LANG_PUSH(Fortran) -AC_MSG_CHECKING([if Fortran 90 compiler capitalizes .mod filenames]) - cat <conftest.f90 - module conftest - end module conftest -EOF -ac_try='$F90 ${F90FLAGS} conftest.f90 ${F90LIBS}>&AS_MESSAGE_LOG_FD' -AC_TRY_EVAL(ac_try) -if test -f CONFTEST.mod ; then - ac_cv_prog_f90_uppercase_mod=yes - rm -f CONFTEST.mod -else - ac_cv_prog_f90_uppercase_mod=no -fi -AC_MSG_RESULT($ac_cv_prog_f90_uppercase_mod) -#rm -f conftest* -AC_LANG_POP(Fortran) -]) - -# [AC_LANG_CONFTEST([AC_LANG_SOURCE([ module conftest -# end module])]) -# ac_try='$F90 -o conftest ${F90FLAGS} conftest.f90 ${F90LIBS}>&AS_MESSAGE_LOG_FD' -# if AC_TRY_EVAL(ac_try) && -# test -f CONFTEST.mod ; then -# ac_cv_prog_f90_uppercase_mod=yes -# rm -f CONFTEST.mod -# else -# ac_cv_prog_f90_uppercase_mod=no -# fi -# rm -f conftest* - - -AC_DEFUN([AX_F90_MODULE_FLAG],[ -AC_CACHE_CHECK([fortran 90 modules inclusion flag], -ax_cv_f90_modflag, -[AC_LANG_PUSH(Fortran) -i=0 -while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do - i=`expr $i + 1` -done -mkdir tmpdir_$i -cd tmpdir_$i -AC_COMPILE_IFELSE([AC_LANG_SOURCE([module conftest_module - contains - subroutine conftest_routine - write(*,'(a)') 'gotcha!' - end subroutine conftest_routine - end module conftest_module]) - ],[],[]) -cd .. -ax_cv_f90_modflag="not found" -for ax_flag in "-I" "-M" "-p"; do - if test "$ax_cv_f90_modflag" = "not found" ; then - ax_save_FCFLAGS="$FCFLAGS" - FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([program conftest_program - use conftest_module - call conftest_routine - end program conftest_program]) - ],[ax_cv_f90_modflag="$ax_flag"],[]) - FCFLAGS="$ax_save_FCFLAGS" - fi -done -rm -fr tmpdir_$i -if test "$ax_flag" = "not found" ; then - AC_MSG_ERROR([unable to find compiler flag for modules inclusion]) -fi -AC_LANG_POP(Fortran) -])]) - -# AX_C_FLOAT_WORDS_BIGENDIAN -# added by: -# Warren Turkal -# -# Copyright © 2006 Daniel Amelang -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice and -# this notice are preserved. -# -# This macro will detect if double variables are words packed in big endian -# order while the bits in the words are arranged in little endian order. This -# macro was added to support the ARM architecture. The FLOAT_WORDS_BIGENDIAN -# macro will be set to 1 if the word order is big endian. If the word order is -# not big endian, FLOAT_WORDS_BIGENDIAN will be not be set. -AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN], - [AC_CACHE_CHECK(whether float word ordering is bigendian, - ax_cv_c_float_words_bigendian, [ - -ax_cv_c_float_words_bigendian=unknown -AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - -double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; - -]])], [ - -if grep noonsees conftest.$ac_objext >/dev/null ; then - ax_cv_c_float_words_bigendian=yes -fi -if grep seesnoon conftest.$ac_objext >/dev/null ; then - if test "$ax_cv_c_float_words_bigendian" = unknown; then - ax_cv_c_float_words_bigendian=no - else - ax_cv_c_float_words_bigendian=unknown - fi -fi - -])]) - -case $ax_cv_c_float_words_bigendian in - yes) - m4_default([$1], - [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1, - [Define to 1 if your system stores words within floats - with the most significant word first])]) ;; - no) - $2 ;; - *) - m4_default([$3], - [AC_MSG_ERROR([ - -Unknown float word ordering. You need to manually preset -ax_cv_c_float_words_bigendian=no (or yes) according to your system. - - ])]) ;; -esac - -])# AX_C_FLOAT_WORDS_BIGENDIAN - diff --git a/contrib/netcdf/4.4.1.1/aclocal.m4 b/contrib/netcdf/4.4.1.1/aclocal.m4 deleted file mode 100644 index 4efb5e51b7d..00000000000 --- a/contrib/netcdf/4.4.1.1/aclocal.m4 +++ /dev/null @@ -1,1177 +0,0 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- - -# Copyright (C) 1996-2018 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.16' -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.16.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - AS_CASE([$CONFIG_FILES], - [*\'*], [eval set x "$CONFIG_FILES"], - [*], [set x $CONFIG_FILES]) - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`AS_DIRNAME(["$am_mf"])` - am_filepart=`AS_BASENAME(["$am_mf"])` - AM_RUN_LOG([cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles]) || am_rc=$? - done - if test $am_rc -ne 0; then - AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking).]) - fi - AS_UNSET([am_dirpart]) - AS_UNSET([am_filepart]) - AS_UNSET([am_mf]) - AS_UNSET([am_rc]) - rm -f conftest-deps.mk -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking is enabled. -# This creates each '.Po' and '.Plo' makefile fragment that we'll need in -# order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). 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: - -Please tell bug-automake@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: . - -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 -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless 'enable' is passed literally. -# For symmetry, 'disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -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@_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 -] -) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check whether make has an 'include' directive that can support all -# the idioms we need for our automatic dependency tracking code. -AC_DEFUN([AM_MAKE_INCLUDE], -[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) - AS_CASE([$?:`cat confinc.out 2>/dev/null`], - ['0:this is the am__doit target'], - [AS_CASE([$s], - [BSD], [am__include='.include' am__quote='"'], - [am__include='include' am__quote=''])]) - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -AC_MSG_RESULT([${_am_result}]) -AC_SUBST([am__include])]) -AC_SUBST([am__quote])]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -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])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2018 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) -m4_include([acinclude.m4]) diff --git a/contrib/netcdf/4.4.1.1/config.h.cmake.in b/contrib/netcdf/4.4.1.1/config.h.cmake.in deleted file mode 100644 index 0fb66a38be8..00000000000 --- a/contrib/netcdf/4.4.1.1/config.h.cmake.in +++ /dev/null @@ -1,307 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -/* Eliminate a number of warnings which come up based on deprecated - POSIX naming conventions. */ -#ifdef _MSC_VER - -#if _MSC_VER>=1900 - #define STDC99 -#endif -/* Define O_BINARY so that the appropriate flags -are set when opening a binary file on Windows. */ - -/* Disable a few warnings under Visual Studio, for the - time being. */ - #include - #pragma warning( disable: 4018 4996 4244 4305 ) - #define unlink _unlink - #define open _open - #define close _close - #define read _read - #define lseek _lseeki64 - - #define fstat _fstat64 - - #define off_t __int64 - #define _off_t __int64 - - #ifndef _OFF_T_DEFINED - #define _OFF_T_DEFINED - #endif - -#ifdef _WIN32 - #ifndef strcasecmp - #define strcasecmp _stricmp - #endif - - #ifndef snprintf - #if _MSC_VER<1900 - #define snprintf _snprintf - #endif - #endif -#endif - - - #define strdup _strdup - #define fdopen _fdopen - #define write _write - #define strtoll _strtoi64 -#endif - - -/* Cache Size, other variables for HDF5 */ -#define DEFAULT_CHUNK_SIZE ${DEFAULT_CHUNK_SIZE} -#define DEFAULT_CHUNKS_IN_CACHE ${DEFAULT_CHUNKS_IN_CACHE} -#define CHUNK_CACHE_SIZE ${CHUNK_CACHE_SIZE} -#define CHUNK_CACHE_NELEMS ${CHUNK_CACHE_NELEMS} -#define CHUNK_CACHE_PREEMPTION ${CHUNK_CACHE_PREEMPTION} -#define MAX_DEFAULT_CACHE_SIZE ${MAX_DEFAULT_CACHE_SIZE} -#define NCIO_MINBLOCKSIZE ${NCIO_MINBLOCKSIZE} - -#ifndef _FILE_OFFSET_BITS -#cmakedefine _FILE_OFFSET_BITS ${_FILE_OFFSET_BITS} -#cmakedefine _LARGEFILE64_SOURCE -#cmakedefine _LARGEFILE_SOURCE -#endif - -#define PACKAGE_VERSION "${VERSION}" -#cmakedefine VERSION "${VERSION}" -#cmakedefine NC_VERSION "${VERSION}" -/* For HDF5 use. */ -#cmakedefine H5_USE_16_API 1 - -/* Enable Logging, only valid for netcdf 4. */ -#cmakedefine LOGGING 1 - -/* Various other options. */ -#cmakedefine BUILD_V2 1 -#cmakedefine NO_NETCDF_2 1 -#cmakedefine USE_FSYNC 1 -#cmakedefine JNA 1 -#cmakedefine ENABLE_DOXYGEN 1 -#cmakedefine ENABLE_INTERNAL_DOCS 1 -#cmakedefine VALGRIND_TESTS 1 -#cmakedefine ENABLE_CDMREMOTE 1 -#cmakedefine USE_DAP 1 -#cmakedefine ENABLE_DAP 1 -#cmakedefine ENABLE_DAP_GROUPS 1 -#cmakedefine ENABLE_DAP_REMOTE_TESTS 1 -#cmakedefine EXTRA_TESTS -#cmakedefine USE_NETCDF4 1 -#cmakedefine USE_LIBDL 1 -#cmakedefine USE_HDF4 1 -#cmakedefine USE_HDF5 1 -#cmakedefine USE_FFIO 1 -#cmakedefine USE_PARALLEL_POSIX 1 -#cmakedefine USE_PARALLEL_MPIO 1 -#cmakedefine HDF5_HAS_H5FREE 1 -#cmakedefine HDF5_HAS_LIBVER_BOUNDS 1 -#cmakedefine HDF5_PARALLEL 1 -#cmakedefine USE_PARALLEL 1 -#cmakedefine USE_PARALLEL4 1 -#cmakedefine USE_PNETCDF 1 -#cmakedefine USE_MMAP 1 -#cmakedefine ENABLE_FILEINFO 1 -#cmakedefine TEST_PARALLEL ${TEST_PARALLEL} -#cmakedefine BUILD_RPC 1 -#cmakedefine USE_DISKLESS 1 -#cmakedefine USE_SZIP 1 -#cmakedefine USE_ZLIB 1 -#cmakedefine USE_X_GETOPT 1 -#cmakedefine ENABLE_EXTREME_NUMBERS -#cmakedefine LARGE_FILE_TESTS 1 -#cmakedefine HAVE_DECL_ISFINITE 1 -#cmakedefine HAVE_DECL_ISNAN 1 -#cmakedefine HAVE_CURLOPT_USERNAME 1 -#cmakedefine HAVE_CURLOPT_PASSWORD 1 -#cmakedefine HAVE_CURLOPT_KEYPASSWD 1 -#cmakedefine HAVE_CURLINFO_RESPONSE_CODE 1 -#cmakedefine HAVE_CURLOPT_CHUNK_BGN_FUNCTION 1 -#cmakedefine HAVE_DECL_SIGNBIT 1 -#cmakedefine HAVE_DOPRNT -#cmakedefine HAVE_ALLOCA -#cmakedefine HAVE_SSIZE_T 1 -#cmakedefine HAVE_LIBPNETCDF 1 -#cmakedefine HAVE_LIBDL 1 - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_ALLOCA_H @HAVE_ALLOCA_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_CTYPE_H @HAVE_CTYPE_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_DIRENT_H @HAVE_DIRENT_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UNISTD_H @HAVE_UNISTD_H@ -#cmakedefine YY_NO_UNISTD_H @YY_NO_UNISTD_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_DLFCN_H @HAVE_DLFCN_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_ERRNO_H @HAVE_ERRNO_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FCNTL_H @HAVE_FCNTL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_GETOPT_H @HAVE_GETOPT_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDARG_H @HAVE_STDARG_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_HDF5_H @HAVE_HDF5_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_HDF5_HL_H @HAVE_HDF5_HL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDBOOL_H @HAVE_STDBOOL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_LOCAL_H @HAVE_LOCAL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDINT_H @HAVE_STDINT_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDIO_H @HAVE_STDIO_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDLIB_H @HAVE_STDLIB_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRINGS_H @HAVE_STRINGS_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SIGNAL_H @HAVE_SIGNAL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_DIR_H @HAVE_SYS_DIR_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_NDIR_H @HAVE_SYS_NDIR_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_PARAM_H @HAVE_SYS_PARAM_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_STAT_H @HAVE_SYS_STAT_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TIME_H @HAVE_SYS_TIME_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_RESOURCE_H @HAVE_SYS_RESOURCE_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TYPES_H @HAVE_SYS_TYPES_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_WAIT_H @HAVE_SYS_WAIT_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_INTTYPES_H @HAVE_INTTYPES_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FCNTL_H @HAVE_FCNTL_H@ - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MALLOC_H @HAVE_MALLOC_H@ - -/* Define to 1 if you have the BaseTsd.h header file. */ -#cmakedefine HAVE_BASETSD_H @HAVE_BASETSD_H@ - -/* Define if we have filelengthi64. */ -#cmakedefine HAVE_FILE_LENGTH_I64 @HAVE_FILE_LENGTH_I64@ - -/* Define whether char is signed by default. */ -#ifndef __CHAR_UNSIGNED__ -#cmakedefine __CHAR_UNSIGNED__ -#endif - -/* The size of `void*` as computed by sizeof. */ -#cmakedefine SIZEOF_VOIDSTAR @SIZEOF_VOIDSTAR@ -/* The size of `char` as computed by sizeof. */ -#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@ -/* The size of `double` as computed by sizeof. */ -#cmakedefine SIZEOF_DOUBLE @SIZEOF_DOUBLE@ -/* The size of `float` as computed by sizeof. */ -#cmakedefine SIZEOF_FLOAT @SIZEOF_FLOAT@ -/* The size of `int` as computed by sizeof. */ -#cmakedefine SIZEOF_INT @SIZEOF_INT@ -/* The size of `long` as computed by sizeof. */ -#cmakedefine SIZEOF_LONG @SIZEOF_LONG@ -/* The size of `long long` as computed by sizeof. */ -#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@ -/* The size of `off_t` as computed by sizeof. */ -#cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@ -/* The size of `short` as computed by sizeof. */ -#cmakedefine SIZEOF_OFF64_T @SIZEOF_OFF64_T@ -#cmakedefine SIZEOF_SHORT @SIZEOF_SHORT@ -/* The size of `size_t` as computed by sizeof. */ -#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@ -/* The size of `ssize_t` as computed by sizeof. */ -#cmakedefine SIZEOF_SSIZE_T @SIZEOF_SSIZE_T@ -/* The size of `uchar` as computed by sizeof. */ -#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@ -/* The size of `__int64` found on Windows systems. */ -#cmakedefine SIZEOF___INT64 @SIZEOF___INT64@ - - - -#cmakedefine TEMP_LARGE "@TEMP_LARGE@" - -/* Set if we have strdup */ -#cmakedefine HAVE_STRDUP -#cmakedefine HAVE_STRNDUP -#cmakedefine HAVE_STRLCAT -#cmakedefine HAVE_STRERROR -#cmakedefine HAVE_SNPRINTF -#cmakedefine HAVE_STRCHR -#cmakedefine HAVE_STRRCHR -#cmakedefine HAVE_STRCAT -#cmakedefine HAVE_STRCPY -#cmakedefine HAVE_STRDUP -#cmakedefine HAVE_STRCASECMP -#cmakedefine HAVE_STRTOD -#cmakedefine HAVE_STRTOLL -#cmakedefine HAVE_STROULL -#cmakedefine HAVE_STRSTR -#cmakedefine HAVE_MKSTEMP -#cmakedefine HAVE_RAND -#cmakedefine HAVE_RANDOM -#cmakedefine HAVE_GETTIMEOFDAY -#cmakedefine HAVE_MPI_COMM_F2C -#cmakedefine HAVE_MEMMOVE -#cmakedefine HAVE_MMAP -#cmakedefine HAVE_GETPAGESIZE -#cmakedefine HAVE_SYSCONF -#cmakedefine HAVE_MREMAP -#cmakedefine HAVE_DECL_ISINF - -#cmakedefine HAVE_GETRLIMIT -#cmakedefine HAVE_FSYNC - -#cmakedefine HAVE_H5PGET_FAPL_MPIPOSIX 1 -#cmakedefine HAVE_H5PSET_DEFLATE -#cmakedefine HAVE_H5Z_SZIP - - -/* Specifies if various libraries are present. */ -#cmakedefine HAVE_LIBM 1 - -/* Define to 1 if the system has the type `uchar'.*/ -#cmakedefine HAVE_UCHAR - -/* Misc defines copied from autotools config.h.in */ -#cmakedefine CRAY_STACKSEG_END -#cmakedefine DLL_EXPORT -#cmakedefine DLL_NETCDF - -#include -#endif diff --git a/contrib/netcdf/4.4.1.1/configure.ac b/contrib/netcdf/4.4.1.1/configure.ac deleted file mode 100644 index 1097b45ef0b..00000000000 --- a/contrib/netcdf/4.4.1.1/configure.ac +++ /dev/null @@ -1,1366 +0,0 @@ -# -*- Autoconf -*- -## Process this file with autoconf to produce a configure script. - -# This is part of Unidata's netCDF package. Copyright 2005-2012, see -# the COPYRIGHT file for more information. - -# Recall that ${VAR-exp} expands to $VAR if var is set (even to null), -# and to exp otherwise. - -## This puts the cvs ID tag in the output configure script. -AC_REVISION([$Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp $]) - -# Running autoconf on this file will trigger a warning if -# autoconf is not at least the specified version. -AC_PREREQ([2.59]) - -# Initialize with name, version, and support email address. -AC_INIT([netCDF], [4.4.1.1], [support-netcdf@unidata.ucar.edu]) - -## -# Prefer an empty CFLAGS variable instead of the default -g -O2. -# See: -# * http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/C-Compiler.html#C-Compiler -## -: ${CFLAGS=""} - -AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4 -AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=4 -AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=1 -AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE=".1" - -##### -# Set some variables used to generate a libnetcdf.settings file, -# pattered after the files generated by libhdf4, libhdf5. -##### - -# Create the VERSION file, which contains the package version from -# AC_INIT. -echo AC_PACKAGE_VERSION>VERSION -AC_SUBST(PACKAGE_VERSION) - -AC_MSG_NOTICE([netCDF AC_PACKAGE_VERSION]) - -# Keep libtool macros in an m4 directory. -AC_CONFIG_MACRO_DIR([m4]) - -# Configuration Date -if test "x$SOURCE_DATE_EPOCH" != "x" ; then - AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date -u -d "${SOURCE_DATE_EPOCH}"`" -else - AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date`" -fi - -# Find out about the host we're building on. -AC_CANONICAL_HOST - -# Find out about the target we're building for. -AC_CANONICAL_TARGET - -AC_CONFIG_HEADERS([config.h]) - -## -# Some files need to exist in build directories -# that do not correspond to their source directory, or -# the test program makes an assumption about where files -# live. AC_CONFIG_LINKS provides a mechanism to link/copy files -# if an out-of-source build is happening. -## - -AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat1.nc:nc_test4/ref_hdf5_compat1.nc]) -AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat2.nc:nc_test4/ref_hdf5_compat2.nc]) -AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat3.nc:nc_test4/ref_hdf5_compat3.nc]) - -# This call is required by automake. -AM_INIT_AUTOMAKE(m4_esyscmd([case `automake --version | head -n 1` in - *1.11*) echo foreign dist-xz dist-bzip2 color-tests subdir-objects 1.11;; - *) echo foreign dist-xz dist-bzip2 color-tests subdir-objects 1.11 serial-tests;; - esac])) - -# use silent rules - automake 1.11 -AM_SILENT_RULES(yes) - -AM_MAINTAINER_MODE() - -# Check for the existence of this file before proceeding. -AC_CONFIG_SRCDIR([include/netcdf.h]) - -AC_MSG_NOTICE([checking user options]) - -# If --enable-dll is specified the DLL will be built. This only works -# on mingw. -AC_MSG_CHECKING([whether a win32 DLL is desired]) -AC_ARG_ENABLE([dll], - [AS_HELP_STRING([--enable-dll], - [build a win32 DLL (only works on mingw)])]) -test "x$enable_dll" = xyes || enable_dll=no -AC_MSG_RESULT([$enable_dll]) -if test "x$enable_dll" = xyes; then - AC_DEFINE(DLL_NETCDF, 1, [set this only when building a DLL under MinGW]) - AC_DEFINE(DLL_EXPORT, 1, [set this only when building a DLL under MinGW]) -fi -AM_CONDITIONAL(BUILD_DLL, [test x$enable_dll = xyes]) - -# Did the user specify a default minimum blocksize (NCIO_MINBLOCKSIZE) for posixio? -AC_MSG_CHECKING([whether a NCIO_MINBLOCKSIZE was specified]) -AC_ARG_WITH([minblocksize], - [AS_HELP_STRING([--with-minblocksize=], - [Specify minimum I/O blocksize for netCDF classic and 64-bit offset format files.])], - [NCIO_MINBLOCKSIZE=$with_minblocksize], [NCIO_MINBLOCKSIZE=256]) -AC_MSG_RESULT([$NCIO_MINBLOCKSIZE]) -AC_DEFINE_UNQUOTED([NCIO_MINBLOCKSIZE], [$NCIO_MINBLOCKSIZE], [min blocksize for posixio.]) - -### -# 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]) - -AC_ARG_ENABLE([doxygen-tasks], - [AS_HELP_STRING([--enable-doxygen-tasks], - [Enable Doxygen-generated test, todo and bug list documentation. Developers only.])]) -test "x$enable_doxygen_tasks" = xyes || enable_doxygen_tasks=no -AM_CONDITIONAL([SHOW_DOXYGEN_TAG_LIST], [test "x$enable_doxygen_tasks" = xyes]) -AC_SUBST([SHOW_DOXYGEN_TAG_LIST], [$enable_doxygen_tasks]) - -### -# Determine if we should build documentation -# configured for releases on the Unidata web server. -### -AC_ARG_ENABLE([doxygen-build-release-docs], - [AS_HELP_STRING([--enable-doxygen-build-release-docs], - [Build release documentation. This is of interest only to developers.])]) -test "x$enable_doxygen_build_release_docs" = xyes || enable_doxygen_build_release_docs=no -AM_CONDITIONAL([DOXYGEN_BUILD_RELEASE_DOCS], [test "x$enable_doxygen_build_release_docs" = xyes]) - -if test $enable_doxygen_build_release_docs = yes; then - AC_SUBST([DOXYGEN_CSS_FILE], ["release.css"]) - AC_SUBST([DOXYGEN_HEADER_FILE], ["release_header.html"]) - AC_SUBST([DOXYGEN_SEARCHENGINE], ["NO"]) -else - AC_SUBST([DOXYGEN_CSS_FILE], []) - AC_SUBST([DOXYGEN_HEADER_FILE], []) - AC_SUBST([DOXYGEN_SEARCHENGINE], ["YES"]) -fi - -AC_ARG_ENABLE([doxygen-pdf-output], - [AS_HELP_STRING([--enable-doxygen-pdf-output], - [Build netCDF library documentation in PDF format. Experimental.])]) - AM_CONDITIONAL([NC_ENABLE_DOXYGEN_PDF_OUTPUT], [test "x$enable_doxygen_pdf_output" = xyes]) -AC_SUBST([NC_ENABLE_DOXYGEN_PDF_OUTPUT], [$enable_doxygen_pdf_output]) - -AC_ARG_ENABLE([dot], - [AS_HELP_STRING([--enable-dot], - [Use dot (provided by graphviz) to generate charts and graphs in the doxygen-based documentation.])]) - test "x$enable_dot" = xyes || enable_dot=no - -AC_ARG_ENABLE([internal-docs], - [AS_HELP_STRING([--enable-internal-docs], - [Include documentation of library internals. This is of interest only to those developing the netCDF library.])]) -test "x$enable_internal_docs" = xyes || enable_internal_docs=no -AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs]) - -AC_MSG_CHECKING([if fsync support is enabled]) -AC_ARG_ENABLE([fsync], - [AS_HELP_STRING([--enable-fsync], - [enable fsync support])], - [], - [enable_fsync=no]) -test "x$enable_fsync" = xno || enable_fsync=yes -AC_MSG_RESULT($enable_fsync) -if test "x$enable_fsync" = xyes ; then -AC_DEFINE([USE_FSYNC], [1], [if true, include experimental fsync code]) -fi - -# Temporary until JNA bug is fixed (which is probably never). -# See Jira NCF-298 -AC_MSG_CHECKING([if jna bug workaround is enabledd]) -AC_ARG_ENABLE([jna], - [AS_HELP_STRING([--enable-jna], - [enable jna bug workaround])], - [], - [enable_jna=no]) -test "x$enable_jna" = xno || enable_jna=yes -AC_MSG_RESULT($enable_jna) -if test "x$enable_jna" = xyes ; then -AC_DEFINE([JNA], [1], [if true, include jna bug workaround code]) -fi - -# Does the user want to run extra tests with valgrind? -AC_MSG_CHECKING([whether extra valgrind tests should be run]) -AC_ARG_ENABLE([valgrind-tests], - [AS_HELP_STRING([--enable-valgrind-tests], - [build with valgrind-tests (valgrind is required, static builds only)])]) -test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no -AC_MSG_RESULT($enable_valgrind_tests) - -# Does the user want to build netcdf-4? -AC_MSG_CHECKING([whether we should build netCDF-4]) -AC_ARG_ENABLE([netcdf-4], [AS_HELP_STRING([--disable-netcdf-4], - [do not build with netcdf-4 (else HDF5 and zlib required)])]) -test "x$enable_netcdf_4" = xno || enable_netcdf_4=yes - -# Synonym -AC_ARG_ENABLE([netcdf4], [AS_HELP_STRING([--disable-netcdf4], - [(just a synonym for --disable-netcdf-4)])]) -test "x$enable_netcdf4" = xno || enable_netcdf4=yesi -if test "x$enable_netcdf4" = xno ; then -enable_netcdf_4=no -fi -AC_MSG_RESULT([$enable_netcdf_4]) - -# Does the user require dynamic loading? -# This is only for those hdf5 installs that support it. -AC_MSG_CHECKING([do we require hdf5 dynamic-loading support]) -AC_ARG_ENABLE([dynamic-loading], [AS_HELP_STRING([--enable-dynamic-loading], - [enable dynamic loading for use with supported hdf5 installs (libdl, HDF5 required)])]) -test "x$enable_dynamic_loading" = xno || enable_dynamic_loading=yes -AC_MSG_RESULT([$enable_dynamic_loading]) - -# Does the user want to turn on HDF4 read ability? -AC_MSG_CHECKING([whether reading of HDF4 SD files is to be enabled]) -AC_ARG_ENABLE([hdf4], [AS_HELP_STRING([--enable-hdf4], - [build netcdf-4 with HDF4 read capability (HDF4, HDF5 and zlib required)])]) -test "x$enable_hdf4" = xyes || enable_hdf4=no -AC_MSG_RESULT($enable_hdf4) - -# Does the user want to turn on extra HDF4 file tests? -AC_MSG_CHECKING([whether to fetch some sample HDF4 files from Unidata ftp site to test HDF4 reading (requires wget)]) -AC_ARG_ENABLE([hdf4-file-tests], [AS_HELP_STRING([--enable-hdf4-file-tests], - [get some HDF4 files from Unidata ftp site and test that they can be read])]) -test "x$enable_hdf4" = xyes -a "x$enable_hdf4_file_tests" = xyes || enable_hdf4_file_tests=no -if test "x$enable_hdf4_file_tests" = xyes; then - AC_DEFINE([USE_HDF4_FILE_TESTS], 1, [If true, use use wget to fetch some sample HDF4 data, and then test against it.]) -fi -AC_MSG_RESULT($enable_hdf4_file_tests) - -# Does the user want to try to install netcdf-fortran -# automatically? -AC_MSG_CHECKING([whether we should attempt to install netcdf-fortran (EXPERIMENTAL)]) -AC_ARG_ENABLE([fortran], [AS_HELP_STRING([--enable-remote-fortran-bootstrap], - [Download and install netcdf-fortran (EXPERIMENTAL)])]) -test "x$enable_remote_fortran_bootstrap" = xyes || enable_remote_fortran_bootstrap=no -AC_MSG_RESULT([$enable_remote_fortran_bootstrap]) - -# Does the user want to run extra example tests -AC_MSG_CHECKING([whether extra example tests should be run]) -AC_ARG_ENABLE([extra-example-tests], - [AS_HELP_STRING([--enable-extra-example-tests], - [Run extra example tests; requires GNU sed. Ignored if \ - netCDF-4 is not enabled.])]) -test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no -AC_MSG_RESULT($enable_extra_example_tests) - -# Does the user want to run extra parallel tests when parallel netCDF-4 is built? -AC_MSG_CHECKING([whether parallel IO tests should be run]) -AC_ARG_ENABLE([parallel-tests], - [AS_HELP_STRING([--enable-parallel-tests], - [Run extra parallel IO tests. Ignored if \ - netCDF-4 is not enabled, or built on a system \ - without parallel I/O support.])]) -test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no -AC_MSG_RESULT($enable_parallel_tests) - -# Did the user specify a default chunk size? -AC_MSG_CHECKING([whether a default chunk size in bytes was specified]) -AC_ARG_WITH([default-chunk-size], - [AS_HELP_STRING([--with-default-chunk-size=], - [Specify default size of chunks in bytes.])], - [DEFAULT_CHUNK_SIZE=$with_default_chunk_size], [DEFAULT_CHUNK_SIZE=4194304]) -AC_MSG_RESULT([$DEFAULT_CHUNK_SIZE]) -AC_DEFINE_UNQUOTED([DEFAULT_CHUNK_SIZE], [$DEFAULT_CHUNK_SIZE], [default chunk size in bytes]) - -# Did the user specify a max per-var cache size? -AC_MSG_CHECKING([whether a maximum per-variable cache size for HDF5 was specified]) -AC_ARG_WITH([max-default-cache-size], - [AS_HELP_STRING([--with-max-default-cache-size=], - [Specify maximum size (in bytes) for the default per-var chunk cache.])], - [MAX_DEFAULT_CACHE_SIZE=$with_max_default_cache_size], [MAX_DEFAULT_CACHE_SIZE=67108864]) -AC_MSG_RESULT([$MAX_DEFAULT_CACHE_SIZE]) -AC_DEFINE_UNQUOTED([MAX_DEFAULT_CACHE_SIZE], [$MAX_DEFAULT_CACHE_SIZE], [max size of the default per-var chunk cache.]) - -# Did the user specify a number of chunks in default per-var cache size? -AC_MSG_CHECKING([whether a number of chunks for the default per-variable cache was specified]) -AC_ARG_WITH([default-chunks-in-cache], - [AS_HELP_STRING([--with-default-chunks-in-cache=], - [Specify the number of chunks to store in default per-variable cache.])], - [DEFAULT_CHUNKS_IN_CACHE=$with_default_chunks_in_cache], [DEFAULT_CHUNKS_IN_CACHE=10]) -AC_MSG_RESULT([$DEFAULT_CHUNKS_IN_CACHE]) -AC_DEFINE_UNQUOTED([DEFAULT_CHUNKS_IN_CACHE], [$DEFAULT_CHUNKS_IN_CACHE], [num chunks in default per-var chunk cache.]) - -# Did the user specify a default cache size? -AC_MSG_CHECKING([whether a default file cache size for HDF5 was specified]) -AC_ARG_WITH([chunk-cache-size], - [AS_HELP_STRING([--with-chunk-cache-size=], - [Specify default file cache chunk size for HDF5 files in bytes.])], - [CHUNK_CACHE_SIZE=$with_chunk_cache_size], [CHUNK_CACHE_SIZE=4194304]) -AC_MSG_RESULT([$CHUNK_CACHE_SIZE]) -AC_DEFINE_UNQUOTED([CHUNK_CACHE_SIZE], [$CHUNK_CACHE_SIZE], [default file chunk cache size in bytes.]) - -# Did the user specify a default cache nelems? -AC_MSG_CHECKING([whether a default file cache maximum number of elements for HDF5 was specified]) -AC_ARG_WITH([chunk-cache-nelems], - [AS_HELP_STRING([--with-chunk-cache-nelems=], - [Specify default maximum number of elements in the file chunk cache chunk for HDF5 files (should be prime number).])], - [CHUNK_CACHE_NELEMS=$with_chunk_cache_nelems], [CHUNK_CACHE_NELEMS=1009]) -AC_MSG_RESULT([$CHUNK_CACHE_NELEMS]) -AC_DEFINE_UNQUOTED([CHUNK_CACHE_NELEMS], [$CHUNK_CACHE_NELEMS], [default file chunk cache nelems.]) - -# Did the user specify a default cache preemption? -AC_MSG_CHECKING([whether a default cache preemption for HDF5 was specified]) -AC_ARG_WITH([chunk-cache-preemption], - [AS_HELP_STRING([--with-chunk-cache-preemption=], - [Specify default file chunk cache preemption policy for HDF5 files (a number between 0 and 1, inclusive).])], - [CHUNK_CACHE_PREEMPTION=$with_chunk_cache_preemption], [CHUNK_CACHE_PREEMPTION=0.75]) -AC_MSG_RESULT([$CHUNK_CACHE_PREEMPTION]) -AC_DEFINE_UNQUOTED([CHUNK_CACHE_PREEMPTION], [$CHUNK_CACHE_PREEMPTION], [default file chunk cache preemption policy.]) - -# Does the user want to enable netcdf-4 logging? -AC_MSG_CHECKING([whether netCDF-4 logging is enabled]) -AC_ARG_ENABLE([logging], - [AS_HELP_STRING([--enable-logging], - [enable logging capability (only applies when netCDF-4 is built). \ - This debugging features is only of interest to netCDF developers. \ - Ignored if netCDF-4 is not enabled.])]) -test "x$enable_logging" = xyes || enable_logging=no -AC_MSG_RESULT([$enable_logging]) - -## Capture the state of the --enable-dap flag -AC_MSG_CHECKING([whether DAP client is to be built]) -AC_ARG_ENABLE([dap], - [AS_HELP_STRING([--disable-dap], - [build without DAP client support.])]) -test "x$enable_dap" = xno || enable_dap=yes -AC_MSG_RESULT($enable_dap) - -# Curl support is required if and only if any of these flags are set: -# 1. --enable-dap - -if test "x$enable_dap" = "xyes" ; then -require_curl=yes -else -require_curl=no -fi - -# See if the user provided us with a curl library -# Do an initial lib test for curl, but suppress the default action -AC_CHECK_LIB([curl],[curl_easy_setopt],[found_curl=yes],[found_curl=no]) -#AC_CHECK_LIB([curl.dll],[curl_easy_setopt]) -# If curl is required but there is no curl, then complain -if test $require_curl = yes ; then - # Removed. Why assume no curl if we are building DLL? - #if test $enable_dll = yes ; then - # AC_MSG_NOTICE([libcurl not found; continuing]) - #elif test $found_curl = no ; then - if test $found_curl = no ; then - AC_MSG_NOTICE([libcurl not found; disabling remote protocol(s) support]) - enable_dap=no - elif test $found_curl = yes ; then - # Redo the check lib to actually add -lcurl - #AC_CHECK_LIB([curl], [curl_easy_setopt]) - AC_SEARCH_LIBS([curl_easy_setopt],[curl curl.dll], [], []) - fi -fi - -# Default is now to always do the short remote tests -AC_MSG_CHECKING([whether dap remote testing should be enabled (default off)]) -AC_ARG_ENABLE([dap-remote-tests], - [AS_HELP_STRING([--disable-dap-remote-tests], - [disable dap remote tests])], - [], - [enable_dap_remote_tests=no]) # BSK - disabled by default - - -test "x$enable_dap_remote_tests" = xno || enable_dap_remote_tests=yes -if test "x$enable_dap" = "xno" ; then - enable_dap_remote_tests=no -fi -AC_MSG_RESULT($enable_dap_remote_tests) - -# Default is now to do the remote authorization tests -AC_MSG_CHECKING([whether dap remote authorization testing should be enabled (default off)]) -AC_ARG_ENABLE([dap-auth-tests], - [AS_HELP_STRING([--enable-dap-auth-tests], - [enable dap remote authorization tests])]) -test "x$enable_dap_auth_tests" = xyes || enable_dap_auth_tests=no -# dap must be enabled -if test "x$enable_dap" = "xno" ; then - enable_dap_auth_tests=no -fi -# if remote tests are disabled, then so is this -if test "x$enable_dap_remote_tests" = "xno" ; then - enable_dap_remote_tests=no -fi -AC_MSG_RESULT($enable_dap_auth_tests) - -# Control if groups are supported in [netcdf4]dap2 code -AC_MSG_CHECKING([whether [netcdf4] group names should be enabled (default on)]) -AC_ARG_ENABLE([dap-groups], - [AS_HELP_STRING([--disable-dap-groups], - [disable [netcdf4] dap group names])]) -test "x$enable_groups" = xno || enable_dap_groups=yes -if test "x$enable_dap" = "xno" -o "x$enable_enable_netcdf_4" = "xno" ; then - AC_MSG_NOTICE([dap groups disabled because dap disabled or netcdf-4 disabled]) - enable_dap_groups=no -fi -AC_MSG_RESULT($enable_dap_groups) -if test "x$enable_dap_groups" = xyes; then -AC_DEFINE([ENABLE_DAP_GROUPS], [1], [if true, enable DAP group names]) -fi - -# Set the config.h flags -if test "x$enable_dap" = xyes; then - AC_DEFINE([USE_DAP], [1], [if true, build DAP Client]) - AC_DEFINE([ENABLE_DAP], [1], [if true, build DAP Client]) -fi - -if test "x$enable_dap_remote_tests" = xyes; then - AC_DEFINE([ENABLE_DAP_REMOTE_TESTS], [1], [if true, do remote tests]) -fi - -AC_MSG_CHECKING([whether the time-consuming dap tests should be enabled (default off)]) -AC_ARG_ENABLE([dap-long-tests], - [AS_HELP_STRING([--enable-dap-long-tests], - [enable dap long tests])]) -test "x$enable_dap_long_tests" = xyes || enable_dap_long_tests=no -if test "x$enable_dap_remote_tests" = "xno" ; then - enable_dap_long_tests=no -fi -AC_MSG_RESULT([$enable_dap_long_tests]) - -AM_CONDITIONAL(INTERNAL_OCLIB,[test "x" = "x"]) - -# Does the user want to do some extra tests? -AC_MSG_CHECKING([whether netCDF extra tests should be run (developers only)]) -AC_ARG_ENABLE([extra-tests], - [AS_HELP_STRING([--enable-extra-tests], - [enable some extra tests that may not pass because of known issues])]) -test "x$enable_extra_tests" = xno || enable_extra_tests=yes -AC_MSG_RESULT($enable_extra_tests) -if test "x$enable_extra_tests" = xyes; then - AC_DEFINE([EXTRA_TESTS], [1], [if true, run extra tests which may not work yet]) -fi -AM_CONDITIONAL(EXTRA_TESTS, [test x$enable_extra_tests = xyes]) - -# Does the user want to use the ffio module? -AC_MSG_CHECKING([whether FFIO will be used]) -AC_ARG_ENABLE([ffio], - [AS_HELP_STRING([--enable-ffio], - [use ffio instead of posixio (ex. on the Cray)])]) -test "x$enable_ffio" = xyes || enable_ffio=no -AC_MSG_RESULT($enable_ffio) -if test "x$enable_ffio" = xyes; then - AC_DEFINE([USE_FFIO], [1], [if true, use ffio instead of posixio]) -fi -AM_CONDITIONAL(USE_FFIO, [test x$enable_ffio = xyes]) - -# Does the user want to use the stdio module? -AC_MSG_CHECKING([whether STDIO will be used]) -AC_ARG_ENABLE([stdio], - [AS_HELP_STRING([--enable-stdio], - [use stdio instead of posixio (ex. on the Cray)])]) -test "x$enable_stdio" = xyes || enable_stdio=no -AC_MSG_RESULT($enable_stdio) -if test "x$enable_stdio" = xyes; then - AC_DEFINE([USE_STDIO], [1], [if true, use stdio instead of posixio]) -fi -AM_CONDITIONAL(USE_STDIO, [test x$enable_stdio = xyes]) - -# Does the user want to enable the user-provided NEC-SX vectorization -# patch. -dnl AC_MSG_CHECKING([whether netCDF NEC-SX vectorization patch is enabled]) -dnl AC_ARG_ENABLE([sx-vectorization], -dnl [AS_HELP_STRING([--enable-sx-vectorization], -dnl [enable a user-provided performance patch to allow \ -dnl vectorization of type conversions on NEC SX machines.])]) -dnl test "x$enable_sx_vectorization" = xyes || enable_sx_vectorization=no -dnl AC_MSG_RESULT([$enable_sx_vectorization]) -dnl if test "x$enable_sx_vectorization" = xyes; then -dnl AC_DEFINE([SX_VECTORIZATION], 1, [if true, turn on vectorization patch for NEC SX]) -dnl fi - -nc_build_c=yes -nc_build_v2=yes -nc_build_utilities=yes -nc_build_tests=yes -nc_build_examples=yes - -# Does the user want to build examples? -AC_MSG_CHECKING([whether examples should be built]) -AC_ARG_ENABLE([examples], - [AS_HELP_STRING([--disable-examples], - [don't build the netCDF examples during make check \ - (examples are treated as extra tests by netCDF)])]) -test "x$enable_examples" = xno && nc_build_examples=no -AC_MSG_RESULT($nc_build_examples) -AM_CONDITIONAL(BUILD_EXAMPLES, [test x$nc_build_examples = xyes]) - -# Does the user want to disable the V2 API? -AC_MSG_CHECKING([whether v2 netCDF API should be built]) -AC_ARG_ENABLE([v2], - [AS_HELP_STRING([--disable-v2], - [turn off the netCDF version 2 API])]) -test "x$enable_v2" = xno && nc_build_v2=no -AC_MSG_RESULT($nc_build_v2) -AM_CONDITIONAL(BUILD_V2, [test x$nc_build_v2 = xyes]) -if test "x$nc_build_v2" = xno; then - AC_DEFINE_UNQUOTED(NO_NETCDF_2, 1, [do not build the netCDF version 2 API]) -else - AC_DEFINE_UNQUOTED(USE_NETCDF_2, 1, [build the netCDF version 2 API]) -fi - -# Does the user want to disable ncgen/ncdump/nccopy? -AC_MSG_CHECKING([whether the ncgen/ncdump/nccopy should be built]) -AC_ARG_ENABLE([utilities], - [AS_HELP_STRING([--disable-utilities], - [don't build netCDF utilities ncgen, ncdump, and nccopy])]) -test "x$nc_build_c" = xno && enable_utilities=no -test "x$enable_utilities" = xno && nc_build_utilities=no -AC_MSG_RESULT($nc_build_utilities) -AM_CONDITIONAL(BUILD_UTILITIES, [test x$nc_build_utilities = xyes]) - -# Does the user want to disable all tests? -AC_MSG_CHECKING([whether test should be built and run]) -AC_ARG_ENABLE([testsets], - [AS_HELP_STRING([--disable-testsets], - [don't build or run netCDF tests])], - [], - enable_testsets=no) # BSK - disabled by default - -test "x$enable_testsets" = xno || enable_testsets=yes -nc_build_tests=$enable_testsets -AC_MSG_RESULT($nc_build_tests) -AM_CONDITIONAL(BUILD_TESTSETS, [test x$nc_build_tests = xyes]) - -# Does the user want to run tests for large files (> 2GiB)? -AC_MSG_CHECKING([whether large file (> 2GB) tests should be run]) -AC_ARG_ENABLE([large-file-tests], - [AS_HELP_STRING([--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])]) -test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no -AC_MSG_RESULT($enable_large_file_tests) -AM_CONDITIONAL(LARGE_FILE_TESTS, [test x$enable_large_file_tests = xyes]) -if test "x$enable_large_file_tests" = xyes; then - AC_DEFINE([LARGE_FILE_TESTS], [1], [do large file tests]) -fi - -# Does the user want to run benchmarks? -AC_MSG_CHECKING([whether benchmarks should be run (experimental)]) -AC_ARG_ENABLE([benchmarks], - [AS_HELP_STRING([--enable-benchmarks], - [Run benchmarks. This is an experimental feature. You must fetch - sample data files from the Unidata ftp site to use these benchmarks. - The benchmarks are a bunch of extra tests, which are timed. We use these - tests to check netCDF performance.])]) -test "x$enable_benchmarks" = xyes || enable_benchmarks=no -AC_MSG_RESULT($enable_benchmarks) -AM_CONDITIONAL(BUILD_BENCHMARKS, [test x$enable_benchmarks = xyes]) - -# Does the user want to use extreme numbers in testing. -AC_MSG_CHECKING([whether extreme numbers should be used in tests]) -AC_ARG_ENABLE([extreme-numbers], - [AS_HELP_STRING([--disable-extreme-numbers], - [don't use extreme numbers during testing, such as MAX_INT - 1])]) -case "$host_cpu $host_os" in - *386*solaris*) - test "x$enable_extreme_numbers" = xyes || enable_extreme_numbers=no - ;; - *) - test "x$enable_extreme_numbers" = xno || enable_extreme_numbers=yes - ;; -esac -AC_MSG_RESULT($enable_extreme_numbers) - -if test "x$enable_extreme_numbers" = xyes; then - AC_DEFINE(USE_EXTREME_NUMBERS, 1, [set this to use extreme numbers in tests]) -fi - -# If the env. variable TEMP_LARGE is set, or if -# --with-temp-large=, use it as a place for the large -# (i.e. > 2 GiB) files created during the large file testing. -AC_MSG_CHECKING([where to put large temp files if large file tests are run]) -AC_ARG_WITH([temp-large], - [AS_HELP_STRING([--with-temp-large=], - [specify directory where large files (i.e. >2 GB) \ - will be written, if large files tests are run with - --enable-large-file-tests])], - [TEMP_LARGE=$with_temp_large]) -TEMP_LARGE=${TEMP_LARGE-.} -AC_MSG_RESULT($TEMP_LARGE) -#AC_SUBST(TEMP_LARGE) -AC_DEFINE_UNQUOTED([TEMP_LARGE], ["$TEMP_LARGE"], [Place to put very large netCDF test files.]) - -# According to the autoconf mailing list gurus, we must test for -# compilers unconditionally. That is, we can't skip looking for the -# fortran compilers, just because the user doesn't want fortran. This -# is due to a limitation in autoconf. - -# Find the C compiler. -AC_MSG_NOTICE([finding C compiler]) - -## Compiler with version information. This consists of the full path -## name of the compiler and the reported version number. -AC_SUBST([CC_VERSION]) -## Strip anything that looks like a flag off of $CC -CC_NOFLAGS=`echo $CC | sed 's/ -.*//'` - -if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then - CC_VERSION="$CC" -else - CC_VERSION="$CC"; - for x in `echo $PATH | sed -e 's/:/ /g'`; do - if test -x $x/$CC_NOFLAGS; then - CC_VERSION="$x/$CC" - break - fi - done -fi -if test -n "$cc_version_info"; then - CC_VERSION="$CC_VERSION ( $cc_version_info)" -fi - - -AC_PROG_CC -AM_PROG_CC_C_O -AC_C_CONST - -# CURLOPT_USERNAME is not defined until curl version 7.19.1 -# CURLOPT_PASSWORD is not defined until curl version 7.19.1 -# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4 -# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7 -# CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0 - -# Save/restore CFLAGS -SAVECFLAGS="$CFLAGS" -CFLAGS="${curl_cflags}" - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( -[#include "curl/curl.h"], -[[int x = CURLOPT_USERNAME;]])], - [haveusername=yes], - [haveusername=no]) -AC_MSG_CHECKING([whether CURLOPT_USERNAME is defined]) -AC_MSG_RESULT([${haveusername}]) -if test $haveusername = yes; then - AC_DEFINE([HAVE_CURLOPT_USERNAME],[1],[Is CURLOPT_USERNAME defined]) -fi - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( -[#include "curl/curl.h"], -[[int x = CURLOPT_PASSWORD;]])], - [havepassword=yes], - [havepassword=no]) -AC_MSG_CHECKING([whether CURLOPT_PASSWORD is defined]) -AC_MSG_RESULT([${havepassword}]) -if test $havepassword = yes; then - AC_DEFINE([HAVE_CURLOPT_PASSWORD],[1],[Is CURLOPT_PASSWORD defined]) -fi - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( -[#include "curl/curl.h"], -[[int x = CURLOPT_KEYPASSWD;]])], - [havekeypassword=yes], - [havekeypassword=no]) -AC_MSG_CHECKING([whether CURLOPT_KEYPASSWD is defined]) -AC_MSG_RESULT([${havekeypassword}]) -if test $havekeypassword = yes; then - AC_DEFINE([HAVE_CURLOPT_KEYPASSWD],[1],[Is CURLOPT_KEYPASSWD defined]) -fi - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( -[#include "curl/curl.h"], -[[int x = CURLINFO_RESPONSE_CODE;]])], - [haveresponsecode=yes], - [haveresponsecode=no]) -AC_MSG_CHECKING([whether CURLINFO_RESPONSE_CODE is defined]) -AC_MSG_RESULT([${haveresponsecode}]) -if test $haveresponsecode = yes; then - AC_DEFINE([HAVE_CURLINFO_RESPONSE_CODE],[1],[Is CURLINFO_RESPONSE_CODE defined]) -fi - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( -[#include "curl/curl.h"], -[[int x = CURLOPT_CHUNK_BGN_FUNCTION;]])], - [havebgnfunction=yes], - [havebgnfunction=no]) -AC_MSG_CHECKING([whether CURLOPT_CHUNK_BGN_FUNCTION is defined]) -AC_MSG_RESULT([${havebgnfunction}]) -if test $havebgnfunction = yes; then - AC_DEFINE([HAVE_CURLOPT_CHUNK_BGN_FUNCTION],[1],[Is CURLOPT_CHUNK_BGN_FUNCTION defined]) -fi - -CFLAGS="$SAVECFLAGS" - -# Set up libtool. -AC_MSG_NOTICE([setting up libtool]) -LT_PREREQ([2.2]) -LT_INIT(win32-dll) - -# Valgrind tests don't work with shared builds because of some libtool -# weirdness. -if test "x$enable_shared" = xyes; then - if test $enable_valgrind_tests = yes; then - AC_MSG_ERROR([No valgrind tests with shared libraries]) - fi -fi - -AC_MSG_NOTICE([finding other utilities]) - -# Is m4 installed? If not, bail. -AC_CHECK_PROGS([NC_M4], [m4]) -if test -z "$NC_M4"; then - AC_MSG_ERROR([Cannot find m4 utility. Install m4 and try again.]) -fi - -# 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 - -# Find the install program. -AC_PROG_INSTALL - -# Check to see if any macros must be set to enable large (>2GB) files. -AC_SYS_LARGEFILE - -AC_MSG_NOTICE([displaying some results]) - -## This next macro just prints some results for debugging -## support issues. -UD_DISPLAY_RESULTS - -# For nightly build testing, output CC, FC, etc. -echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt - -AC_MSG_NOTICE([checking types, headers, and functions]) - -AC_CHECK_HEADER(stdlib.h, ,AC_DEFINE([NO_STDLIB_H], [], [no stdlib.h])) -AC_CHECK_HEADER(sys/types.h, ,AC_DEFINE([NO_SYS_TYPES_H], [], [no sys_types.h])) -AC_CHECK_HEADERS([sys/param.h]) -#AC_CHECK_HEADERS([locale.h]) -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_HEADER_SYS_WAIT -AC_HEADER_TIME -AC_CHECK_HEADERS([locale.h stdio.h stdarg.h errno.h ctype.h fcntl.h malloc.h stdlib.h string.h strings.h unistd.h sys/stat.h getopt.h sys/time.h]) -AC_FUNC_VPRINTF - -# Do sys/resource.h separately -#AC_CHECK_HEADERS([sys/resource.h],[havesysresource=1],[havesysresource=0]) -#if test "x$enable_dll" != xyes ; then -AC_CHECK_HEADERS([sys/resource.h]) -#fi - -# Check for that conforms to C99 requirements -AC_HEADER_STDBOOL - -# Check for these functions... -AC_CHECK_FUNCS([strlcat strerror snprintf strchr strrchr strcat strcpy \ - strdup strcasecmp strtod strtoll strtoull strstr \ - mkstemp rand random memcmp \ - getrlimit gettimeofday fsync MPI_Comm_f2c]) - -# Does the user want to use NC_DISKLESS? -AC_MSG_CHECKING([whether in-memory files are enabled]) -AC_ARG_ENABLE([diskless], - [AS_HELP_STRING([--disable-diskless], - [disable support for in-memory (NC_DISKLESS) files])]) -test "x$enable_diskless" = xno || enable_diskless=yes -AC_MSG_RESULT($enable_diskless) - -# Check for enable DAP -if test "x$enable_dap" = "xyes" -a "xenable_diskless" = xno ; then -AC_MSG_NOTICE([--enable-dap requires --enable-diskless]) -AC_MSG_NOTICE([dap support disabled]) -fi - -# check for useful, but not essential, memio support -AC_CHECK_FUNCS([memmove getpagesize sysconf]) - -# Does the user want to allow use of mmap for NC_DISKLESS? -AC_MSG_CHECKING([whether mmap is enabled for in-memory files]) -AC_ARG_ENABLE([mmap], - [AS_HELP_STRING([--enable-mmap], - [allow mmap for in-memory files])]) -test "x$enable_mmap" = xyes || enable_mmap=no -AC_MSG_RESULT($enable_mmap) - -# check for mmap and mremap availability before committing to use mmap -AC_FUNC_MMAP -AC_CHECK_FUNCS([mremap]) - -if test "x$ac_cv_func_mmap_fixed_mapped" != xyes -o "x$ac_cv_func_mremap" != xyes ; then - echo "mmap function or mremap function is not available: disabling mmap" - enable_mmap=no -fi - -# Setup the diskless and mmap conditionals -if test "x$enable_diskless" = xyes ; then - AC_DEFINE([USE_DISKLESS], [1], [if true, include NC_DISKLESS code]) - if test "x$enable_mmap" = xyes; then - AC_DEFINE([USE_MMAP], [1], [if true, use mmap for in-memory files]) - fi -fi - -AC_FUNC_ALLOCA -AC_CHECK_DECLS([isnan, isinf, isfinite, signbit],,,[#include ]) -AC_STRUCT_ST_BLKSIZE -UD_CHECK_IEEE -AC_TYPE_SIZE_T -AC_TYPE_OFF_T -AC_CHECK_TYPES([size_t, ssize_t, ptrdiff_t, uchar, longlong, ushort, uint, int64, uint64]) -AC_C_CHAR_UNSIGNED -AC_C_BIGENDIAN - -### -# Crude hack to work around an issue -# in Cygwin. -### -SLEEPCMD="" -PLTFORMOUT="$(uname | cut -d '_' -f 1)" -if test "$PLTFORMOUT" = "CYGWIN"; then - SLEEPCMD="sleep 5" - AC_MSG_NOTICE([Pausing between sizeof() checks to mitigate a Cygwin issue.]) -fi - -$SLEEPCMD -AC_CHECK_SIZEOF(short) -$SLEEPCMD -AC_CHECK_SIZEOF(int) -$SLEEPCMD -AC_CHECK_SIZEOF(long) -$SLEEPCMD -AC_CHECK_SIZEOF(long long) -$SLEEPCMD -AC_CHECK_SIZEOF(float) -$SLEEPCMD -AC_CHECK_SIZEOF(double) -$SLEEPCMD -AC_CHECK_SIZEOF(off_t) -$SLEEPCMD -AC_CHECK_SIZEOF(size_t) -$SLEEPCMD -AC_CHECK_SIZEOF(unsigned long long) - -$SLEEPCMD -if test "$ac_cv_type_ushort" = yes ; then - AC_CHECK_SIZEOF(ushort) -else - AC_CHECK_SIZEOF(unsigned short int) -fi - -$SLEEPCMD -if test "$ac_cv_type_uint" = yes ; then - AC_CHECK_SIZEOF(uint) -else - AC_CHECK_SIZEOF(unsigned int) -fi - -$SLEEPCMD -AC_CHECK_SIZEOF(unsigned long long) - -$SLEEPCMD -if test "$ac_cv_type_ushort" = yes ; then - AC_CHECK_SIZEOF(ushort) -else - AC_CHECK_SIZEOF(unsigned short int) -fi -$SLEEPCMD -if test "$ac_cv_type_uint" = yes ; then - AC_CHECK_SIZEOF(uint) -else - AC_CHECK_SIZEOF(unsigned int) -fi -$SLEEPCMD -AC_CHECK_SIZEOF(ptrdiff_t) - - -if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then - AC_SEARCH_LIBS([deflate], [zlibwapi zlibstat zlib zlib1 z], [], [ - AC_MSG_ERROR([Can't find or link to the z library. Turn off netCDF-4 and \ - opendap with --disable-netcdf-4 --disable-dap, or see config.log for errors.])]) -fi - -# We need the math library -AC_CHECK_LIB([m], [floor], [], -[AC_MSG_ERROR([Can't find or link to the math library.])]) - -if test "x$enable_netcdf_4" = xyes; then - - AC_DEFINE([USE_NETCDF4], [1], [if true, build netCDF-4]) - AC_DEFINE([H5_USE_16_API], [1], [use HDF5 1.6 API]) - - # The user may have built HDF5 with libdl (dynamic loading support). - if test "x$enable_dynamic_loading" = xyes; then - AC_CHECK_HEADERS([dlfcn.h], [], [nc_dlfcn_h_missing=yes]) - if test "x$nc_dlfcn_h_missing" = xyes; then - AC_MSG_ERROR([Cannot find dlfcn.h, yet --enable-dynamic-loading was used.]) - fi - AC_CHECK_LIB([dl],[dlopen], [], [AC_MSG_ERROR([Can't find or link against libdf. See config.log for errors.])]) - AC_DEFINE([USE_LIBDL],[1], [if true, enable dynamic loading support]) - fi - - # Check for the main hdf5 and hdf5_hl library. - - AC_SEARCH_LIBS([H5Fflush], [hdf5dll hdf5], [], - [AC_MSG_ERROR([Can't find or link to the hdf5 library. Use --disable-netcdf-4, or see config.log for errors.])]) - AC_SEARCH_LIBS([H5DSis_scale], [hdf5_hldll hdf5_hl], [], - [AC_MSG_ERROR([Can't find or link to the hdf5 high-level. Use --disable-netcdf-4, or see config.log for errors.])]) - - AC_CHECK_HEADERS([hdf5.h], [], [AC_MSG_ERROR([Compiling a test with HDF5 failed. Either hdf5.h cannot be found, or config.log should be checked for other reason.])]) - AC_CHECK_FUNCS([H5Pget_fapl_mpiposix H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory]) - - # The user may have parallel HDF5 based on MPI POSIX. - if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then - AC_DEFINE([USE_PARALLEL_POSIX], [1], [if true, compile in parallel netCDF-4 based on MPI/POSIX]) - fi - - # The user may have parallel HDF5 based on MPI mumble mumble. - if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then - AC_DEFINE([USE_PARALLEL_MPIO], [1], [if true, compile in parallel netCDF-4 based on MPI/IO]) - fi - - # If parallel is available in hdf5, enable it in the C code. Also add some stuff to netcdf.h. - hdf5_parallel=no - if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then - hdf5_parallel=yes - fi - AC_MSG_CHECKING([whether parallel io is enabled in hdf5]) - AC_MSG_RESULT([$hdf5_parallel]) - - # The user must have built HDF5 with the ZLIB library. - if test "x$ac_cv_func_H5Pset_deflate" = xyes; then - AC_DEFINE([USE_ZLIB], [1], [if true, compile in zlib compression in netCDF-4 variables]) - else - AC_MSG_ERROR([HDF5 must be built with zlib for netCDF-4]) - fi - - # The user may have built HDF5 with the SZLIB library. - if test "x$ac_cv_func_H5Z_SZIP" = xyes; then - AC_SEARCH_LIBS([SZ_Compress], [szip sz], [], []) - AC_DEFINE([USE_SZIP], [1], [if true, compile in szip compression in netCDF-4 variables]) - fi - - if test "x$ac_cv_func_H5free_memory" = xyes; then - AC_DEFINE([HDF5_HAS_H5FREE], [1], [if true, H5free_memory() will be used to free hdf5-allocated memory in nc4file.]) - fi - - if test "x$ac_cv_func_H5Pset_libver_bounds" = xyes; then - AC_DEFINE([HDF5_HAS_LIBVER_BOUNDS], [1], [if true, netcdf4 file properties will be set using H5Pset_libver_bounds]) - fi - - # If the user wants hdf4 built in, check it out. - if test "x$enable_hdf4" = xyes; then - AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes]) - if test "x$nc_mfhdf_h_missing" = xyes; then - AC_MSG_ERROR([Cannot find mfhdf.h, yet --enable-hdf4 was used.]) - fi - AC_CHECK_LIB([df], [Hclose], [], [AC_MSG_ERROR([Can't find or link to the hdf4 df library. See config.log for errors.])]) - AC_CHECK_LIB([mfhdf], [SDcreate], [], [AC_MSG_ERROR([Can't find or link to the hdf4 mfhdf library. See config.log for errors.])]) - - AC_CHECK_LIB([jpeg], [jpeg_set_quality], [], [AC_MSG_ERROR([Can't find or link to the jpeg library (required by hdf4). See config.log for errors.])]) - - AC_DEFINE([USE_HDF4], [1], [if true, use HDF4 too]) - fi -fi - -# There are several cases for parallelism: -# 1. pnetcdf enabled => we want to parallelism for CDF-1,CDF-2,and CDF-5 -# 2. hdf5 has mpio enabled -# a. do not want to use it for netcdf4 -# b. do want to use it for netcdf4 - -# Should we suppress parallel io for netcdf-4? -if test "x$enable_netcdf_4" = xyes ; then - AC_MSG_CHECKING([whether parallel I/O is enabled for netcdf-4]) - AC_ARG_ENABLE([parallel4], [AS_HELP_STRING([--disable-parallel4], - [disable parallel I/O for netcdf-4, even if it's enabled in libhdf5] )]) - test "x$enable_parallel4" = xno || enable_parallel4=yes - AC_MSG_RESULT($enable_parallel4) -else - enable_parallel4=no -fi -if test "x$hdf5_parallel" = xno; then - # hdf5 does not support parallel io, so disable parallel4 - enable_parallel4=no - AC_MSG_WARN([Parallel io disabled for netcdf-4 because hdf5 does not support]) -fi - -# We have already tested for parallel io in netcdf4 -# Now do it for netcdf-3 -# Does the user want parallel I/O for classic and 64-bit offset files using parallel-netcdf (pnetcdf)? -AC_MSG_CHECKING([whether parallel I/O for classic files is to be enabled]) -AC_ARG_ENABLE([pnetcdf], [AS_HELP_STRING([--enable-pnetcdf], - [build with parallel I/O for classic files])]) -test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no -AC_MSG_RESULT($enable_pnetcdf) - -# See if the pnetcdf lib is available and of the -# right version (1.6.0 or later) - -if test "x$enable_pnetcdf" = xyes; then - pnetcdf_conflict=no - AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],[pnetcdf_conflict=yes]) - - # Pnetcdf did not support utf-8 until 1.6.0 - - # Save/restore CFLAGS - SAVELIBS=$LIBS - LIBS="$LIBS -lpnetcdf" - AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], - [[ - int major = PNETCDF_VERSION_MAJOR; - int minor = PNETCDF_VERSION_MINOR; - int version = major*1000 + minor; - int ok = (version >= (1*1000 + 6)); - return (ok?0:1);]])], - [pnetcdf16=yes], - [pnetcdf16=no]) - CFLAGS="$SAVECFLAGS" - LIBS="$SAVELIBS" - AC_MSG_CHECKING([Is libpnetcdf version 1.6.0 or later?]) - AC_MSG_RESULT([$pnetcdf16]) - if test x$pnetcdf16 = xno; then - AC_MSG_WARN([--enable-pnetcdf requires version 1.6.0 or later; disabling]) - pnetcdf_conflict=yes - fi -fi - -if test "x$pnetcdf_conflict" = xyes ; then - AC_MSG_WARN([Cannot link to pnetcdf library, --enable-pnetcdf disabled.]) - enable_pnetcdf=no -fi - -# Now, set enable_parallel if either pnetcdf or parallel4 is set -if test "x$enable_pnetcdf" = xyes -o "x$enable_parallel4" = xyes; then -enable_parallel=yes -else -enable_parallel=no -fi - -if test "x$hdf5_parallel" = xyes; then - # Provide more precise parallel control - AC_DEFINE([HDF5_PARALLEL], [1], [if true, hdf5 has parallelism enabled]) -fi - -# Set config flags -if test "x$enable_parallel4" = xyes; then - # Provide more precise parallel control - AC_DEFINE([USE_PARALLEL4], [1], [if true, parallel netcdf-4 is in use]) -fi - -if test "x$enable_pnetcdf" = xyes; then - AC_DEFINE([USE_PNETCDF], [1], [if true, parallel netCDF is used]) -fi - -# If enable_parallel is in use, enable it in the C code. Also add some stuff to netcdf.h. -if test "x$enable_parallel" = xyes; then - AC_DEFINE([USE_PARALLEL], [1], [if true, pnetcdf or parallel netcdf-4 is in use]) -fi - -# Check for downloading/building fortran via postinstall script. -if test "x$enable_remote_fortran_bootstrap" = xyes; then - AC_DEFINE([BUILD_FORTRAN], 1, [If true, will attempt to download and build netcdf-fortran.]) -fi - -# No logging for netcdf-3. -if test "x$enable_netcdf_4" = xno; then - enable_logging=no -fi -if test "x$enable_logging" = xyes; then - AC_DEFINE([LOGGING], 1, [If true, turn on logging.]) -fi - - -# Like other libraries, udunits and libcf -# are no long part of the netcdf distribution. - -#AC_MSG_CHECKING([whether udunits is to be built]) -#AC_ARG_WITH([udunits], -# [AS_HELP_STRING([--with-udunits], -# [Build udunits2 package.])]) -#test "x$with_udunits" = xyes || with_udunits=no -#AC_MSG_RESULT($with_udunits) -#AM_CONDITIONAL(BUILD_UDUNITS, [test "x$with_udunits" = xyes]) - - -# Does the user want to also build the libcf library? -#AC_MSG_CHECKING([whether libcf is to be built]) -#AC_ARG_WITH([libcf], -# [AS_HELP_STRING([--with-libcf], -# [build and install libcf library, a library for \ -# handling data in conformance with the Climate and \ -# Forecast conventions. (Requires netCDF-4 and HDF5)])]) -#test "x$with_libcf" = xyes || with_libcf=no -#AC_MSG_RESULT($with_libcf) -#AM_CONDITIONAL(BUILD_LIBCF, [test "x$with_libcf" = xyes]) - -#AC_CONFIG_SUBDIRS([udunits libcf]) - - -# Automake conditionals need to be called, whether the answer is yes -# or no. -AM_CONDITIONAL(BUILD_PARALLEL, [test x$enable_parallel = xyes]) -AM_CONDITIONAL(TEST_PARALLEL4, [test "x$enable_parallel4" = xyes -a "x$enable_parallel_tests" = xyes]) -AM_CONDITIONAL(BUILD_DAP, [test "x$enable_dap" = xyes]) -AM_CONDITIONAL(USE_DAP, [test "x$enable_dap" = xyes]) # Alias -AM_CONDITIONAL(ENABLE_DAP_REMOTE_TESTS, [test "x$enable_dap_remote_tests" = xyes]) -AM_CONDITIONAL(ENABLE_DAP_AUTH_TESTS, [test "x$enable_dap_auth_tests" = xyes]) -AM_CONDITIONAL(ENABLE_DAP_LONG_TESTS, [test "x$enable_dap_long_tests" = xyes]) -AM_CONDITIONAL(EXTRA_EXAMPLE_TESTS, [test "x$enable_extra_example_tests" = xyes]) -AM_CONDITIONAL(USE_SZIP, [test "x$ac_cv_func_H5Z_SZIP" = xyes]) -AM_CONDITIONAL(USE_PNETCDF_DIR, [test ! "x$PNETCDFDIR" = x]) -AM_CONDITIONAL(USE_LOGGING, [test "x$enable_logging" = xyes]) -AM_CONDITIONAL(CROSS_COMPILING, [test "x$cross_compiling" = xyes]) -AM_CONDITIONAL(USE_VALGRIND_TESTS, [test "x$enable_valgrind_tests" = xyes]) -AM_CONDITIONAL(USE_NETCDF4, [test x$enable_netcdf_4 = xyes]) -AM_CONDITIONAL(USE_HDF4, [test x$enable_hdf4 = xyes]) -AM_CONDITIONAL(USE_HDF4_FILE_TESTS, [test x$enable_hdf4_file_tests = xyes]) -AM_CONDITIONAL(USE_RENAMEV3, [test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes]) -AM_CONDITIONAL(BUILD_FORTRAN, [test x$enable_remote_fortran_bootstrap = xyes]) -AM_CONDITIONAL(USE_PNETCDF, [test x$enable_pnetcdf = xyes]) -AM_CONDITIONAL(USE_DISPATCH, [test x$enable_dispatch = xyes]) -AM_CONDITIONAL(BUILD_DISKLESS, [test x$enable_diskless = xyes]) -AM_CONDITIONAL(BUILD_MMAP, [test x$enable_mmap = xyes]) -AM_CONDITIONAL(BUILD_DOCS, [test x$enable_doxygen = xyes]) -AM_CONDITIONAL(SHOW_DOXYGEN_TAG_LIST, [test x$enable_doxygen_tasks = xyes]) - -# If the machine doesn't have a long long, and we want netCDF-4, then -# we've got problems! -if test "x$enable_netcdf_4" = xyes; then - AC_TYPE_LONG_LONG_INT - AC_TYPE_UNSIGNED_LONG_LONG_INT -dnl if test ! "x$ac_cv_type_long_long_int" = xyes -o ! "x$ac_cv_type_unsigned_long_long_int" = xyes; then -dnl AC_MSG_ERROR([This platform does not support long long types. These are required for netCDF-4.]) -dnl fi -fi - -# Create the file name for a "make ftpbin" which is used to generate a -# binary distribution. For each release we generate binary releases on -# the thousands of machines in Unidata's vast underground complex at -# an undisclosed location in the Rocky Mountains. The binary -# distributions, along with the 25-foot thick cement slabs and the -# giant springs, will help distribute netCDF even after a catastrophic -# meteor strike. -AC_MSG_CHECKING([what to call the output of the ftpbin target]) -BINFILE_NAME=binary-netcdf-$PACKAGE_VERSION -test "x$enable_netcdf_4" = xno && BINFILE_NAME=${BINFILE_NAME}_nc3 -BINFILE_NAME=${BINFILE_NAME}.tar -AC_SUBST(BINFILE_NAME) -AC_MSG_RESULT([$BINFILE_NAME $FC $CXX]) - -## -# Bugfix for Cygwin. -## -AC_MSG_CHECKING([if libtool needs -no-undefined flag to build shared libraries]) -case "`uname`" in - CYGWIN*|MINGW*|AIX*) - ## Add in the -no-undefined flag to LDFLAGS for libtool. - AC_MSG_RESULT([yes]) - NOUNDEFINED=" -no-undefined" - ;; - *) - ## Don't add anything - AC_MSG_RESULT([no]) - ;; -esac - -AC_MSG_CHECKING([value of LIBS]) -AC_MSG_RESULT([$LIBS]) - -# Flags for nc-config script; by design $prefix, $includir, $libdir, -# etc. are left as shell variables in the script so as to facilitate -# relocation -if test "x$with_netcdf_c_lib" = x ; then - NC_LIBS="-lnetcdf" -else - NC_LIBS="$with_netcdf_c_lib" -fi -if test "x$enable_shared" != xyes; then - NC_LIBS="$LDFLAGS $NC_LIBS $LIBS" -fi - -case "x$target_os" in -xsolaris*) - NEWNCLIBS="" - for x in $NC_LIBS ; do - case "$x" in - -L*) r=`echo "$x" | sed -e 's|^-L|-R|'` - NEWNCLIBS="$NEWNCLIBS $x $r" - ;; - *) NEWNCLIBS="$NEWNCLIBS $x" ;; - esac - done - NC_LIBS="$NEWNCLIBS" - ;; -*);; -esac - -NC_FLIBS="-lnetcdff $NC_LIBS" - -# temporary to deal with a JNA problem -AC_MSG_CHECKING([If compilation is for use with JNA]) -AC_ARG_ENABLE([jna], - [AS_HELP_STRING([--enable-jna], - [enable jna bug fix])], - [], - [enable_jna=no]) -test "x$enable_jna" = xno || enable_jna=yes -AC_MSG_RESULT($enable_jna) -if test "x$enable_jna" = xyes ; then -AC_DEFINE([JNA], [1], [if true, include JNA bug fix]) -fi - -AC_SUBST(NC_LIBS,[$NC_LIBS]) -AC_SUBST(HAS_DAP,[$enable_dap]) -AC_SUBST(HAS_NC2,[$nc_build_v2]) -AC_SUBST(HAS_NC4,[$enable_netcdf_4]) -AC_SUBST(HAS_HDF4,[$enable_hdf4]) -AC_SUBST(HAS_PNETCDF,[$enable_pnetcdf]) -AC_SUBST(HAS_HDF5,[$enable_netcdf_4]) -AC_SUBST(HAS_LOGGING, [$enable_logging]) -AC_SUBST(HAS_SZLIB,[$ac_cv_func_H4Z_SZIP]) -AC_SUBST(HAS_PARALLEL,[$enable_parallel]) -AC_SUBST(HAS_PARALLEL4,[$enable_parallel4]) -AC_SUBST(HAS_DISKLESS,[$enable_diskless]) -AC_SUBST(HAS_MMAP,[$enable_mmap]) -AC_SUBST(HAS_JNA,[$enable_jna]) - -# Include some specifics for netcdf on windows. -#AH_VERBATIM([_WIN32_STRICMP], -AH_BOTTOM( -[/* Define strcasecmp, snprintf on Win32 systems. */ -#ifdef _WIN32 - #define strcasecmp _stricmp - #define snprintf _snprintf -#endif]) - -# Access netcdf specific version of config.h -AH_BOTTOM([#include "ncconfigure.h"]) - -################################################## -# Uncomment this to keep a copy of autoconf defines at this point, for -# debugging purposes. -# cp confdefs.h my_config.h - -##### -# Create output variables from various -# shell variables, for use in generating -# libnetcdf.settings. -##### -AC_SUBST([enable_shared]) -AC_SUBST([enable_static]) -AC_SUBST([CFLAGS]) -AC_SUBST([CPPFLAGS]) -AC_SUBST([LDFLAGS]) -AC_SUBST([AM_CFLAGS]) -AC_SUBST([AM_CPPFLAGS]) -AC_SUBST([AM_LDFLAGS]) -AC_SUBST([NOUNDEFINED]) - -# Args: -# 1. netcdf_meta.h variable -# 2. conditional variable that is yes or no. -# 3. default condition -# -# example: AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[]) # Because it checks for no. -# AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes]) -AC_DEFUN([AX_SET_META],[ - if [ test "x$2" = x$3 ]; then - AC_SUBST([$1]) $1=1 - else - AC_SUBST([$1]) $1=0 - fi -]) - -##### -# Define values used in include/netcdf_meta.h -##### -AC_SUBST([NC_VERSION]) NC_VERSION=$VERSION -AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[yes]) -AX_SET_META([NC_HAS_NC4],[$enable_netcdf_4],[yes]) -AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes]) -AX_SET_META([NC_HAS_HDF5],[$enable_netcdf_4],[yes]) -AX_SET_META([NC_HAS_SZIP],[$ac_cv_func_H5Z_SZIP],[yes]) -AX_SET_META([NC_HAS_DAP],[$enable_dap],[yes]) -AX_SET_META([NC_HAS_DISKLESS],[$enable_diskless],[yes]) -AX_SET_META([NC_HAS_MMAP],[$enable_mmap],[yes]) -AX_SET_META([NC_HAS_JNA],[$enable_jna],[yes]) -AX_SET_META([NC_HAS_PNETCDF],[$enable_pnetcdf],[yes]) -AX_SET_META([NC_HAS_PARALLEL],[$enable_parallel],[yes]) -AX_SET_META([NC_HAS_PARALLEL4],[$enable_parallel4],[yes]) - -##### -# End netcdf_meta.h definitions. -##### - -AC_MSG_NOTICE([generating header files and makefiles]) -AC_CONFIG_FILES([Makefile - nc-config - netcdf.pc - libnetcdf.settings - postinstall.sh - include/netcdf_meta.h - include/Makefile - h5_test/Makefile - docs/Makefile - docs/images/Makefile - libsrc/Makefile - libsrc4/Makefile - libsrcp/Makefile - nctest/Makefile - nc_test4/Makefile - nc_test/Makefile - ncdump/Makefile - ncgen3/Makefile - ncgen/Makefile - examples/Makefile - examples/C/Makefile - examples/CDL/Makefile - oc2/Makefile - libdap2/Makefile - libdispatch/Makefile - liblib/Makefile - ncdump/cdl/Makefile - ncdump/expected/Makefile - ncdap_test/Makefile - ncdap_test/testdata3/Makefile - ncdap_test/expected3/Makefile - ncdap_test/expected4/Makefile - ncdap_test/expectremote3/Makefile - ncdap_test/expectremote4/Makefile - ], - [test -f nc-config && chmod 755 nc-config]) -AC_OUTPUT() - -cat libnetcdf.settings diff --git a/contrib/netcdf/4.4.1.1/depcomp b/contrib/netcdf/4.4.1.1/depcomp deleted file mode 100755 index 65cbf7093a1..00000000000 --- a/contrib/netcdf/4.4.1.1/depcomp +++ /dev/null @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2018 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The second -e expression handles DOS-style file names with drive - # letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E \ - | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - | sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/contrib/netcdf/4.4.1.1/docs/CMakeLists.txt b/contrib/netcdf/4.4.1.1/docs/CMakeLists.txt deleted file mode 100644 index f4c5092ca04..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/CMakeLists.txt +++ /dev/null @@ -1,79 +0,0 @@ -##### -# Build doxygen documentation, if need be. -##### -IF(ENABLE_DOXYGEN) - # The following is redundant but does not hurt anything. - - FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.html ${CMAKE_CURRENT_SOURCE_DIR}/images ${CMAKE_CURRENT_SOURCE_DIR}/*.doc ${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${CMAKE_CURRENT_SOURCE_DIR}/*.m4 ${CMAKE_CURRENT_SOURCE_DIR}/*.texi ${CMAKE_SOURCE_DIR}/oc2/auth.html.in) - FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) - - # Set abs_top_srcdir to work with the autotools - # doxyfile template. - SET(abs_top_srcdir ${CMAKE_SOURCE_DIR}) - SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR}) - - # Create general and guide 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 - COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/auth.html ${CMAKE_CURRENT_BINARY_DIR}/html - COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/obsolete/fan_utils.html ${CMAKE_CURRENT_BINARY_DIR}/html - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API Documentation" VERBATIM) - - # Create auth.html with some sed commands. - ADD_CUSTOM_TARGET(oc2-auth - - cat ${CMAKE_SOURCE_DIR}/oc2/auth.html.in | sed -e "//d" | sed -e "s|^||" | sed -e "s|zz|netcdf|g" -e "s|ZZ|netCDF|g" | sed -e "/stylesheet/r${CMAKE_SOURCE_DIR}/oc2/oc.css" -e "/stylesheet/d" > ${CMAKE_CURRENT_SOURCE_DIR}/auth.html - COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/auth.html ${CMAKE_CURRENT_BINARY_DIR}/html - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - - # If ENABLE_DOXYGEN_LATEX_OUTPUT is true, automatically build - # the PDF files. - IF(ENABLE_DOXYGEN_PDF_OUTPUT) - # Process 'main' netcdf documentation. - FIND_PROGRAM(NC_MAKE NAMES make) - FIND_PROGRAM(NC_PDFLATEX NAMES pdflatex) - IF(NOT NC_MAKE OR NOT NC_PDFLATEX) - MESSAGE(WARNING "Unable to locate 'make' and/or 'pdflatex' program. Unable to build pdf documentation.") - ELSE() - ADD_CUSTOM_TARGET(doc_all_pdf ALL - make - COMMAND mv refman.pdf ../netcdf.pdf - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/latex_main" - COMMENT "Building NetCDF PDF Documentation" VERBATIM - ) - - INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/netcdf.pdf" - "${CMAKE_CURRENT_BINARY_DIR}/netcdf-guide.pdf" - "${CMAKE_CURRENT_BINARY_DIR}/netcdf-tutorial.pdf" - DESTINATION "${CMAKE_INSTALL_DOCDIR}/pdf" - - COMPONENT documentation) - - ENDIF() - - ENDIF() - - - # Copy the image files used by markdown documentation - # manually. - FILE(GLOB IMG_FILES ${CMAKE_CURRENT_BINARY_DIR}/images/*.jpg - ${CMAKE_CURRENT_BINARY_DIR}/images/*.png) - - FILE(COPY ${IMG_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html) - - INSTALL(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" - DESTINATION "${CMAKE_INSTALL_DOCDIR}/html" - COMPONENT documentation) - -ENDIF(ENABLE_DOXYGEN) - -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am netcdf.m4 DoxygenLayout.xml Doxyfile.in Doxyfile.guide.in footer.html mainpage.dox tutorial.dox dispatch.dox guide.dox types.dox notes.md cdl.dox architecture.dox internal.dox install-fortran.dox Doxyfile.in.cmake windows-binaries.md building-with-cmake.md install.md) - -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/docs/Makefile.am b/contrib/netcdf/4.4.1.1/docs/Makefile.am deleted file mode 100644 index 4d8f7e58de1..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/Makefile.am +++ /dev/null @@ -1,74 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005-2011, see the COPYRIGHT file for more information. -# This file builds the netcdf documentation. - - -# These files will be included with the dist. -EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \ - mainpage.dox tutorial.dox dispatch.dox \ - guide.dox types.dox cdl.dox \ - architecture.dox internal.dox windows-binaries.md \ - building-with-cmake.md CMakeLists.txt \ - groups.dox install.md notes.md install-fortran.md \ - all-error-codes.md cmake_faq.md credits.md software.md \ - auth.html obsolete/fan_utils.html bestpractices.md - -# Turn off parallel builds in this directory. -.NOTPARALLEL: - -# To build documentation you must have M4 in their path. -M4=m4 - -SUBDIRS = images - -if BUILD_DOCS - -# Copy man pages. -#directory = $(top_srcdir)/docs/man/man3/ -#dist_man_MANS = $(docsdirectory)/man_page_1.3 $(directory)/man_page_2.3 -# $(directory)/man_page_1.3: doxyfile.stamp -# $(directory)/man_page_2.3: doxyfile.stamp - -# Note: in order to work with distcheck, -# the Doxyfile needs to be preprocessed -# to insert actual location of $(srcdir) -#BUILT_SOURCES = Doxyfile.tmp - -#Doxyfile.tmp: Doxyfile -# sed -e 's|$$[({]rootdir[})]|$(abs_top_srcdir)|g' ./Doxyfile.tmp - -all-local: doxyfile.stamp -clean-local: - rm -rf $(top_builddir)/docs/man - rm -rf $(top_builddir)/docs/html - rm -rf $(top_builddir)/docs/latex -endif - -# Timestamp to prevent rebuilds. -# We must do this twice. The first time -# builds the tag files. The second time -# includes them in the documentation. - -doxyfile.stamp: - $(DOXYGEN) Doxyfile \ - cp auth.html obsolete/fan_utils.html html - -CLEANFILES = doxyfile.stamp html latex man - -# This builds the docs from source, if necessary, and tars up -# everything needed for the website. Run this and copy the resulting -# tarball to the /contents/netcdf/docs directory to update the on-line -# docs. -web-tarball: doxyfile.stamp - cd html; tar cf ../netcdf_docs.tar * - gzip -f netcdf_docs.tar - -# When oc2/auth.html.in is changed, you should generate auth.html -# using the following process. -oc2-auth: - cat ${top_srcdir}/oc2/auth.html.in \ - | sed -e '//d' \ - | sed -e 's|^||' \ - | sed -e 's|zz|netcdf|g' -e 's|ZZ|netCDF|g' \ - | sed -e '/stylesheet/r${top_srcdir}/oc2/oc.css' -e '/stylesheet/d' \ - > auth.html diff --git a/contrib/netcdf/4.4.1.1/docs/Makefile.in b/contrib/netcdf/4.4.1.1/docs/Makefile.in deleted file mode 100644 index 0b358a6a4ee..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/Makefile.in +++ /dev/null @@ -1,750 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005-2011, see the COPYRIGHT file for more information. -# This file builds the netcdf documentation. -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = Doxyfile -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir distdir-am -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# These files will be included with the dist. -EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \ - mainpage.dox tutorial.dox dispatch.dox \ - guide.dox types.dox cdl.dox \ - architecture.dox internal.dox windows-binaries.md \ - building-with-cmake.md CMakeLists.txt \ - groups.dox install.md notes.md install-fortran.md \ - all-error-codes.md cmake_faq.md credits.md software.md \ - auth.html obsolete/fan_utils.html bestpractices.md - - -# To build documentation you must have M4 in their path. -M4 = m4 -SUBDIRS = images -CLEANFILES = doxyfile.stamp html latex man -all: all-recursive - -.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 -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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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 - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -@BUILD_DOCS_FALSE@all-local: -all-am: Makefile all-local -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - 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." -@BUILD_DOCS_FALSE@clean-local: -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ - check check-am clean clean-generic clean-libtool clean-local \ - cscopelist-am ctags ctags-am distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am - -.PRECIOUS: Makefile - - -# Turn off parallel builds in this directory. -.NOTPARALLEL: - -# Copy man pages. -#directory = $(top_srcdir)/docs/man/man3/ -#dist_man_MANS = $(docsdirectory)/man_page_1.3 $(directory)/man_page_2.3 -# $(directory)/man_page_1.3: doxyfile.stamp -# $(directory)/man_page_2.3: doxyfile.stamp - -# Note: in order to work with distcheck, -# the Doxyfile needs to be preprocessed -# to insert actual location of $(srcdir) -#BUILT_SOURCES = Doxyfile.tmp - -#Doxyfile.tmp: Doxyfile -# sed -e 's|$$[({]rootdir[})]|$(abs_top_srcdir)|g' ./Doxyfile.tmp - -@BUILD_DOCS_TRUE@all-local: doxyfile.stamp -@BUILD_DOCS_TRUE@clean-local: -@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/man -@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/html -@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/latex - -# Timestamp to prevent rebuilds. -# We must do this twice. The first time -# builds the tag files. The second time -# includes them in the documentation. - -doxyfile.stamp: - $(DOXYGEN) Doxyfile \ - cp auth.html obsolete/fan_utils.html html - -# This builds the docs from source, if necessary, and tars up -# everything needed for the website. Run this and copy the resulting -# tarball to the /contents/netcdf/docs directory to update the on-line -# docs. -web-tarball: doxyfile.stamp - cd html; tar cf ../netcdf_docs.tar * - gzip -f netcdf_docs.tar - -# When oc2/auth.html.in is changed, you should generate auth.html -# using the following process. -oc2-auth: - cat ${top_srcdir}/oc2/auth.html.in \ - | sed -e '//d' \ - | sed -e 's|^||' \ - | sed -e 's|zz|netcdf|g' -e 's|ZZ|netCDF|g' \ - | sed -e '/stylesheet/r${top_srcdir}/oc2/oc.css' -e '/stylesheet/d' \ - > auth.html - -# 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/contrib/netcdf/4.4.1.1/docs/all-error-codes.md b/contrib/netcdf/4.4.1.1/docs/all-error-codes.md deleted file mode 100644 index ff2c35d9750..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/all-error-codes.md +++ /dev/null @@ -1,98 +0,0 @@ -NetCDF Error Code Listing {#nc-error-codes} -================== - -\tableofcontents - -# NetCDF-3 Error Codes {#nc3-error-codes} - -~~~~ -#define NC_NOERR 0 // No Error -#define NC_EBADID (-33) // Not a netcdf id -#define NC_ENFILE (-34) // Too many netcdfs open -#define NC_EEXIST (-35) // netcdf file exists && NC_NOCLOBBER -#define NC_EINVAL (-36) // Invalid Argument -#define NC_EPERM (-37) // Write to read only -#define NC_ENOTINDEFINE (-38) // Operation not allowed in data mode -#define NC_EINDEFINE (-39) // Operation not allowed in define mode -#define NC_EINVALCOORDS (-40) // Index exceeds dimension bound -#define NC_EMAXDIMS (-41) // NC_MAX_DIMS exceeded -#define NC_ENAMEINUSE (-42) // String match to name in use -#define NC_ENOTATT (-43) // Attribute not found -#define NC_EMAXATTS (-44) // NC_MAX_ATTRS exceeded -#define NC_EBADTYPE (-45) // Not a netcdf data type -#define NC_EBADDIM (-46) // Invalid dimension id or name -#define NC_EUNLIMPOS (-47) // NC_UNLIMITED in the wrong index -#define NC_EMAXVARS (-48) // NC_MAX_VARS exceeded -#define NC_ENOTVAR (-49) // Variable not found -#define NC_EGLOBAL (-50) // Action prohibited on NC_GLOBAL varid -#define NC_ENOTNC (-51) // Not a netcdf file -#define NC_ESTS (-52) // In Fortran, string too short -#define NC_EMAXNAME (-53) // NC_MAX_NAME exceeded -#define NC_EUNLIMIT (-54) // NC_UNLIMITED size already in use -#define NC_ENORECVARS (-55) // nc_rec op when there are no record vars -#define NC_ECHAR (-56) // Attempt to convert between text & numbers -#define NC_EEDGE (-57) // Edge+start exceeds dimension bound -#define NC_ESTRIDE (-58) // Illegal stride -#define NC_EBADNAME (-59) // Attribute or variable name contains illegal characters - -// N.B. following must match value in ncx.h - -#define NC_ERANGE (-60) // Math result not representable -#define NC_ENOMEM (-61) // Memory allocation (malloc) failure -#define NC_EVARSIZE (-62) // One or more variable sizes violate format constraints -#define NC_EDIMSIZE (-63) // Invalid dimension size -#define NC_ETRUNC (-64) // File likely truncated or possibly corrupted -~~~~ - -# NetCDF-4 Error Codes {#nc4-error-codes} - -NetCDF-4 uses all error codes from NetCDF-3 (see section [NetCDF-3 Error -Codes](#NetCDF_002d3-Error-Codes)). The following additional error codes -were added for new errors unique to netCDF-4. - -~~~~ -#define NC_EHDFERR (-101) -#define NC_ECANTREAD (-102) -#define NC_ECANTWRITE (-103) -#define NC_ECANTCREATE (-104) -#define NC_EFILEMETA (-105) -#define NC_EDIMMETA (-106) -#define NC_EATTMETA (-107) -#define NC_EVARMETA (-108) -#define NC_ENOCOMPOUND (-109) -#define NC_EATTEXISTS (-110) -#define NC_ENOTNC4 (-111) // Attempting netcdf-4 operation on netcdf-3 file. -#define NC_ESTRICTNC3 (-112) // Attempting netcdf-4 operation on strict nc3 netcdf-4 file. -#define NC_EBADGRPID (-113) // Bad group id. Bad! -#define NC_EBADTYPEID (-114) // Bad type id. -#define NC_EBADFIELDID (-115) // Bad field id. -#define NC_EUNKNAME (-116) -~~~~ - -# DAP Error Codes {#dap-error-codes} - -If the DAP client is enabled, then the following additional error codes -may occur. - -~~~~ -#define NC_EDAP (-66) // Generic DAP error -#define NC_ECURL (-67) // Generic libcurl error -#define NC_EIO (-68) // Generic IO error -#define NC_ENODATA (-69) // Attempt to access variable with no data -#define NC_EDAPSVC (-70) // DAP Server side error -#define NC_EDAS (-71) // Malformed or inaccessible DAS -#define NC_EDDS (-72) // Malformed or inaccessible DDS -#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS -#define NC_EDAPURL (-74) // Malformed DAP URL -#define NC_EDAPCONSTRAINT (-75) // Malformed DAP Constraint -#define NC_EDAP (-66) // Generic DAP error -#define NC_ECURL (-67) // Generic libcurl error -#define NC_EIO (-68) // Generic IO error -#define NC_ENODATA (-69) // Attempt to access variable with no data -#define NC_EDAPSVC (-70) // DAP Server side error -#define NC_EDAS (-71) // Malformed or inaccessible DAS -#define NC_EDDS (-72) // Malformed or inaccessible DDS -#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS -#define NC_EDAPURL (-74) // Malformed DAP URL -#define NC_EDAPCONSTRAINT (-75) // Malformed DAP Constraint -~~~~ diff --git a/contrib/netcdf/4.4.1.1/docs/auth.html b/contrib/netcdf/4.4.1.1/docs/auth.html deleted file mode 100644 index c617e86c27f..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/auth.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - - - - - -

netCDF Authorization Support

-
-

Author: Dennis Heimbigner

-

Address: http://www.unidata.ucar.edu/staff/dmh/

-

Draft: 11/21/2014

-

Last Revised: 10/24/2015

-
- -

Table of Contents

-
    -
  1. Introduction -
  2. URL-Based Authentication -
  3. RC File Authentication -
  4. Redirection-Based Authentication -
  5. URL Constrained RC File Entries -
  6. Client-Side Certificates -
  7. Appendix A. All RC-File Keys -
  8. Appendix B. ESG Access in Detail -
- -

Introduction

-netCDF can support user authorization using the facilities provided by the curl -library. This includes basic password authentication as well as -certificate-based authorization. -

-With some exceptions (e.g. see the section on redirection) -The libcurl authorization mechanisms can be accessed in two ways -

    -
  1. Inserting the username and password into the url, or -
  2. Accessing information from a so-called rc file named either -.daprc or .dodsrc -
- -

URL-Based Authentication

-For simple password based authentication, it is possible to -directly insert the username and the password into a url in this form. -
-    http://username:password@host/...
-
-This username and password will be used if the server asks for -authentication. Note that only simple password authentication -is supported in this format. -Specifically note that redirection based -authorization will not work with this because the username and password -will only be used on the initial request, not the redirection - -

RC File Authentication

-The netcdf library supports an rc file mechanism to allow the passing -of a number of parameters to libnetcdf and libcurl. -

-The file must be called one of the following names: -".daprc" or ".dodsrc" -If both .daprc and .dodsrc exist, then -the .daprc file will take precedence. -

-The rc file is searched for first in the current directory -and then in the home directory (as defined by the HOME environment -variable). -

-The rc file format is a series of lines of the general form: -

-[<host:port>]<key>=<value>
-
-where the bracket-enclosed host:port is optional and will be discussed -subsequently. -

-The currently defined set of authorization-related keys are as follows. -The second column is the affected curl_easy_setopt option(s), if any. - -
KeyAffected curl_easy_setopt OptionsNotes -
HTTP.COOKIEJARCURLOPT_COOKIEJAR -
HTTP.COOKIEFILECURLOPT_COOKIEJARAlias for CURLOPT_COOKIEJAR -
HTTP.PROXY_SERVERCURLOPT_PROXY, CURLOPT_PROXYPORT, CURLOPT_PROXYUSERPWD -
HTTP.SSL.CERTIFICATECURLOPT_SSLCERT -
HTTP.SSL.KEYCURLOPT_SSLKEY -
HTTP.SSL.KEYPASSWORDCURLOPT_KEYPASSWORD -
HTTP.SSL.CAINFOCURLOPT_SSLCAINFO -
HTTP.SSL.CAPATHCURLOPT_SSLCAPATH -
HTTP.SSL.VERIFYPEERCURLOPT_SSL_VERIFYPEER -
HTTP.SSL.VALIDATECURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST -
HTTP.CREDENTIALS.USERPASSWORDCURLOPT_USERPASSWORD -
HTTP.NETRCN.A.Specify path of the .netrc file -
- - -

Password Authentication

-The key -HTTP.CREDENTIALS.USERPASSWORD -can be used to set the simple password authentication. -This is an alternative to setting it in the url. -The value must be of the form "username:password". -See redirection authorization -for important additional information. - -

Cookie Jar

-The HTTP.COOKIEJAR key -specifies the name of file from which -to read cookies (CURLOPT_COOKIEJAR) and also -the file into which to store cookies (CURLOPT_COOKIEFILE). -The same value is used for both CURLOPT values. -It defaults to in-memory storage. -See redirection authorization -for important additional information. - -

Certificate Authentication

-HTTP.SSL.CERTIFICATE -specifies a file path for a file containing a PEM cerficate. -This is typically used for client-side authentication. -

-HTTP.SSL.KEY is essentially the same as HTTP.SSL.CERTIFICATE -and should always have the same value. -

-HTTP.SSL.KEYPASSWORD -specifies the password for accessing the HTTP.SSL.CERTIFICAT/HTTP.SSL.key file. -

-HTTP.SSL.CAPATH -specifies the path to a directory containing -trusted certificates for validating server sertificates. -

-HTTP.SSL.VALIDATE -is a boolean (1/0) value that if true (1) -specifies that the client should verify the server's presented certificate. -

-HTTP.PROXY_SERVER -specifies the url for accessing the proxy: -e.g. http://[username:password@]host[:port] -

-HTTP.NETRC -specifies the absolute path of the .netrc file. -See redirection authorization -for information about using .netrc. - -

Redirection-Based Authentication

-Some sites provide authentication by using a third party site -to do the authentication. Examples include ESG and URS. -

-The process is usually as follows. -

    -
  1. The client contacts the server of interest (SOI), the actual data provider -using, typically http protocol. -
  2. The SOI sends a redirect to the client to connect to the e.g. URS system -using the 'https' protocol (note the use of https instead of http). -
  3. The client authenticates with URS. -
  4. URS sends a redirect (with authorization information) to send -the client back to the SOI to actually obtain the data. -
-

-It turns out that libcurl uses the password in the .daprc file — or from the url — -only for the initial connection. This causes problems because -the redirected connection is the one that actually requires the password. -This is where .netrc comes in. Libcurl will use .netrc for -the redirected connection. It is possible to cause libcurl to use -the .daprc password always, but this introduces a security hole -because it may send the initial user+pwd to the redirection site. -In summary, if you are using redirection, then you must create a .netrc -file to hold the password for the site to which the redirection is sent. -

-The format of this .netrc file will contain content that -typically look like this. -

-machine mmmmmm login xxxxxx password yyyyyy
-
-where the machine, mmmmmm, is the hostname of the machine to -which the client is redirected for authorization, and the -login and password are those needed to authenticate on that machine. -

-The .netrc file can be specified by -putting the following line in your .daprc/.dodsrc file. -

-HTTP.NETRC=<path to netrc file>
-
- -

-One final note. In using this, it is almost certain that you will -need to specify a real cookie jar file (HTTP.COOKIEJAR) so that the -redirect site can pass back authorization information. - -

URL Constrained RC File Entries

-Each line of the rc file can begin with -a host+port enclosed in square brackets. -The form is "host:port". -If the port is not specified -then the form is just "host". -The reason that more of the url is not used is that -libcurl's authorization grain is not any finer than host level. -

-Examples. -

-[remotetest.unidata.ucar.edu]HTTP.VERBOSE=1
-or
-[fake.ucar.edu:9090]HTTP.VERBOSE=0
-
-If the url request from, say, the netcdf_open method -has a host+port matching one of the prefixes in the rc file, then -the corresponding entry will be used, otherwise ignored. -

-For example, the URL -

-http://remotetest.unidata.ucar.edu/thredds/dodsC/testdata/testData.nc
-
-will have HTTP.VERBOSE set to 1. -

-Similarly, -

-http://fake.ucar.edu:9090/dts/test.01
-
-will have HTTP.VERBOSE set to 0. - -

Client-Side Certificates

-Some systems, notably ESG (Earth System Grid), requires -the use of client-side certificates, as well as being -re-direction based. -This requires setting the following entries: -
    -
  • HTTP.COOKIEJAR — a file path for storing cookies across re-direction. -
  • HTTP.NETRC — the path to the netrc file. -
  • HTTP.SSL.CERTIFICATE — the file path for the client side certificate file. -
  • HTTP.SSL.KEY — this should have the same value as HTTP.SSL.CERTIFICATE. -
  • HTTP.SSL.CAPATH — the path to a "certificates" directory. -
  • HTTP.SSL.VALIDATE — force validation of the server certificate. -
-Note that the first two are to support re-direction based authentication. - -

Appendix A. All RC-File Keys

-For completeness, this is the list of all rc-file keys. -If this documentation is out of date with respect to the actual code, -the code is definitive. - -
Keycurl_easy_setopt Option -
HTTP.DEFLATECUROPT_DEFLATE
with value "deflate,gzip" -
HTTP.VERBOSE CUROPT_VERBOSE -
HTTP.TIMEOUTCUROPT_TIMEOUT -
HTTP.USERAGENTCUROPT_USERAGENT -
HTTP.COOKIEJARCUROPT_COOKIEJAR -
HTTP.COOKIE_JARCUROPT_COOKIEJAR -
HTTP.PROXY_SERVERCURLOPT_PROXY,
CURLOPT_PROXYPORT,
CURLOPT_PROXYUSERPWD -
HTTP.SSL.CERTIFICATECUROPT_SSLCERT -
HTTP.SSL.KEYCUROPT_SSLKEY -
HTTP.SSL.KEYPASSWORDCUROPT_KEYPASSWORD -
HTTP.SSL.CAINFOCUROPT_SSLCAINFO -
HTTP.SSL.CAPATHCUROPT_SSLCAPATH -
HTTP.SSL.VERIFYPEERCUROPT_SSL_VERIFYPEER -
HTTP.CREDENTIALS.USERPASSWORDCUROPT_USERPASSWORD -
HTTP.NETRCCURLOPT_NETRC,CURLOPT_NETRC_FILE -
- - -

Appendix B. URS Access in Detail

-It is possible to use the NASA Earthdata Login System (URS) -with netcdf by using using the process specified in the -redirection based authorization section. -In order to access URS controlled datasets, however, it is necessary to -register as a user with NASA at the -https://uat.urs.earthdata.nasa.gov/ -website. - -

Appendix C. ESG Access in Detail

-It is possible to access Earth Systems Grid (ESG) datasets -from ESG servers through the netCDF API using the techniques -described in the section on Client-Side Certificates. -

-In order to access ESG datasets, however, it is necessary to -register as a user with ESG and to setup your environment -so that proper authentication is established between an netcdf -client program and the ESG data server. Specifically, it -is necessary to use what is called "client-side keys" to -enable this authentication. Normally, when a client accesses -a server in a secure fashion (using "https"), the server -provides an authentication certificate to the client. -With client-side keys, the client must also provide a -certificate to the server so that the server can know with -whom it is communicating. -

-The netcdf library uses the curl library and it is that -underlying library that must be properly configured. - -

Terminology

-The key elements for client-side keys requires the constructions of -two "stores" on the client side. -
    -
  • Keystore - a repository to hold the client side key. -
  • Truststore - a repository to hold a chain of certificates - that can be used to validate the certificate - sent by the server to the client. -
-The server actually has a similar set of stores, but the client -need not be concerned with those. - -

Initial Steps

- -The first step is to obtain authorization from ESG. -Note that this information may evolve over time, and -may be out of date. -This discussion is in terms of BADC and NCSA. You will need -to substitute as necessary. -
    -
  1. Register at http://badc.nerc.ac.uk/register - to obtain access to badc and to obtain an openid, - which will looks something like: -
    https://ceda.ac.uk/openid/Firstname.Lastname
    -
  2. Ask BADC for access to whatever datasets are of interest. -

    -

  3. Obtain short term credentials at - http://grid.ncsa.illinois.edu/myproxy/MyProxyLogon/ - You will need to download and run the MyProxyLogon - program. - This will create a keyfile in, typically, the directory ".globus". - The keyfile will have a name similar to this: "x509up_u13615" - The other elements in ".globus" are certificates to use in - validating the certificate your client gets from the server. -

    -

  4. Obtain the program source ImportKey.java - from this location: http://www.agentbob.info/agentbob/79-AB.html - (read the whole page, it will help you understand the remaining steps). -
- -

Building the KeyStore

-You will have to modify the keyfile in the previous step -and then create a keystore and install the key and a certificate. -The commands are these: -
-    openssl pkcs8 -topk8 -nocrypt -in x509up_u13615 -inform PEM -out key.der -outform DER
-
-    openssl x509 -in x509up_u13615 -inform PEM -out cert.der -outform DER
-
-    java -classpath  -Dkeypassword="" -Dkeystore=./ key.der cert.der
-
-Note, the file names "key.der" and "cert.der" can be whatever you choose. -It is probably best to leave the .der extension, though. - -

Building the TrustStore

-Building the truststore is a bit tricky because as provided, the -certificates in ".globus" need some massaging. See the script below -for the details. The primary command is this, which is executed for every -certificate, c, in globus. It sticks the certificate into the file -named "truststore" -
-  keytool -trustcacerts -storepass "password" -v -keystore "truststore"  -importcert -file "${c}"
-
- -

Running the C Client

- -Refer to the section on Client-Side Certificates. -The keys specified there must be set in the rc file to support -ESG access. -
    -
  • HTTP.COOKIEJAR=~/.dods_cookies -
  • HTTP.NETRC=~/.netrc -
  • HTTP.SSL.CERTIFICATE=~/esgkeystore -
  • HTTP.SSL.KEY=~/esgkeystore -
  • HTTP.SSL.CAPATH=~/.globus -
  • HTTP.SSL.VALIDATE=1 -
-Of course, the file paths above are suggestions only; -you can modify as needed. -The HTTP.SSL.CERTIFICATE and HTTP.SSL.KEY -entries should have same value, which is the file path for the -certificate produced by MyProxyLogon. The HTTP.SSL.CAPATH entry -should be the path to the "certificates" directory produced by -MyProxyLogon. -

-As noted, also uses re-direction based authentication. -So, when it receives an initial connection from a client, it -redirects to a separate authentication server. When that -server has authenticated the client, it redirects back to -the original url to complete the request. - -

Script for creating Stores

-The following script shows in detail how to actually construct the key -and trust stores. It is specific to the format of the globus file -as it was when ESG support was first added. It may have changed -since then, in which case, you will need to seek some help -in fixing this script. It would help if you communicated -what you changed to the author so this document can be updated. -
-#!/bin/sh -x
-KEYSTORE="esgkeystore"
-TRUSTSTORE="esgtruststore"
-GLOBUS="globus"
-TRUSTROOT="certificates"
-CERT="x509up_u13615"
-TRUSTROOTPATH="$GLOBUS/$TRUSTROOT"
-CERTFILE="$GLOBUS/$CERT"
-PWD="password"
-
-D="-Dglobus=$GLOBUS"
-CCP="bcprov-jdk16-145.jar" 
-CP="./build:${CCP}" 
-JAR="myproxy.jar"
-
-# Initialize needed directories
-rm -fr build
-mkdir build
-rm -fr $GLOBUS
-mkdir $GLOBUS
-rm -f $KEYSTORE
-rm -f $TRUSTSTORE
-
-# Compile MyProxyCmd and ImportKey
-javac -d ./build -classpath "$CCP" *.java
-javac -d ./build ImportKey.java
-
-# Execute MyProxyCmd
-java -cp "$CP myproxy.MyProxyCmd
-
-# Build the keystore
-openssl pkcs8 -topk8 -nocrypt -in $CERTFILE -inform PEM -out key.der -outform DER
-openssl x509 -in $CERTFILE -inform PEM -out cert.der -outform DER
-java -Dkeypassword=$PWD -Dkeystore=./${KEYSTORE} -cp ./build ImportKey key.der cert.der
-
-# Clean up the certificates in the globus directory
-for c in ${TRUSTROOTPATH}/*.0 ; do
-    alias=`basename $c .0`
-    sed -e '0,/---/d' <$c >/tmp/${alias}
-    echo "-----BEGIN CERTIFICATE-----" >$c       
-    cat /tmp/${alias} >>$c
-done
- 
-# Build the truststore
-for c in ${TRUSTROOTPATH}/*.0 ; do
-    alias=`basename $c .0`
-    echo "adding: $TRUSTROOTPATH/${c}"
-    echo "alias: $alias"
-    yes | keytool -trustcacerts -storepass "$PWD" -v -keystore ./$TRUSTSTORE -alias $alias -importcert -file "${c}"
-done
-exit
-
- - - diff --git a/contrib/netcdf/4.4.1.1/docs/cmake_faq.md b/contrib/netcdf/4.4.1.1/docs/cmake_faq.md deleted file mode 100644 index 8bce7898447..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/cmake_faq.md +++ /dev/null @@ -1,69 +0,0 @@ -CMake-Related Frequently-Asked-Questions (FAQ) {#cmake_faq} -============================================== - -Below are a list of commonly-asked questions regarding NetCDF and CMake. - -## How can I see the options available to CMake? {#listoptions} - - $ cmake [path to source tree] -L - This will show the basic options. - $ cmake [path to source tree] -LA - This will show the basic and advanced options. - - -## How do I specify how to build a shared or static library? {#sharedstatic} - - This is controlled with the internal `cmake` option, `BUILD_SHARED_LIBS`. - - $ cmake [Source Directory] -DBUILD_SHARED_LIBS=[ON/OFF] - - -## Can I build both shared and static libraries at the same time with cmake? {#sharedstaticboth} - - Not at this time; it is required to instead build first one version, and then the other, if you need both. - - ## What if I want to link against multiple libraries in a non-standard location? {#nonstdloc} - - You can specify the path to search when looking for dependencies and header files using the `CMAKE_PREFIX_PATH` variable: - - * Windows: - - $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=c:\shared\libs\ - - - * Linux/Unix/OSX: - - $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=/usr/custom_library_locations/ - - -## How can I specify linking against a particular library? {#partlib} - - It depends on the library. To specify a custom `ZLib`, for example, you would do the following: - - $ cmake [Source Directory] -DZLIB_LIBRARY=/path/to/my/zlib.lib - - - `HDF5` is more complex, since it requires both the `hdf5` and `hdf5_hl` libraries. You would specify custom `HDF5` libraries as follows: - - $ cmake [Source Directory] -DHDF5_LIB=/path/to/hdf5.lib \ - -DHDF5_HL_LIB=/path/to/hdf5_hl.lib \ - -DHDF5_INCLUDE_DIR=/path/to/hdf5/include - - - Alternatively, you may specify: - - $ cmake [Source Directory] \ - -DHDF5_LIBRARIES="/path/to/hdf5.lib;/path/to/hdf5_hl.lib" \ - -DHDF5_INCLUDE_DIR=/path/to/hdf5/include/ - - -## How can I specify a Parallel Build using HDF5 {#parallelhdf} - - If cmake is having problems finding the parallel `HDF5` install, you can specify the location manually: - - - $ cmake [Source Directory] -DENABLE_PARALLEL=ON \ - -DHDF5_LIB=/usr/lib64/openmpi/lib/libhdf5.so \ - -DHDF5_HL_LIB=/usr/lib64/openmpi/lib/libhdf5.hl.so \ - -DHDF5_INCLUDE_DIR=/usr/include/openmpi-x86_64 \ - - - You will, of course, need to use the location of the libraries specific to your development environment. diff --git a/contrib/netcdf/4.4.1.1/docs/dispatch.dox b/contrib/netcdf/4.4.1.1/docs/dispatch.dox deleted file mode 100644 index 08f283ac083..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/dispatch.dox +++ /dev/null @@ -1,27 +0,0 @@ -/*! \file -Documentation for the dispatch system - -\internal - -\defgroup dispatch The Dispatch Layer - -The dispatch layer is a way to add read/write modules to the netCDF -library. - -Dispatch modules, plugged into the netCDF library, will allow netCDF -programs to read and write other, perhaps quite local, formats. - -This should be of particular interest to anyone contemplating the -conversion of large data collections to netCDF in order to gain access -to those data in netCDF-oriented tools and software systems. Instead -of converting the data, a read module could be written which would -read the data as if it were in netCDF. This would give netCDF tools -read-only access to data in this format, transparently to the tool. - -This mechanism is already used within the netCDF library to handle the -netCDF-4/HDF5 files, and the remote data access features. - -Conceptually, the dispatch layer provides the same capabilities as the -IOSP in the netCDF-Java library. However, unlike Java, C does not -provide the advanced features to make this seemless. -*/ diff --git a/contrib/netcdf/4.4.1.1/docs/images/Makefile.in b/contrib/netcdf/4.4.1.1/docs/images/Makefile.in deleted file mode 100644 index ec5e022def3..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/images/Makefile.in +++ /dev/null @@ -1,500 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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/images -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = aqua.jpg chunking2.png compatibility3.png compression.png \ -groups.png nc4-model.png ncatts.png nc-classic-uml.png nccoords.png \ -ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png \ -deptree.jpg InstallTreeWindows.png - -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/images/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign docs/images/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/docs/internal.dox b/contrib/netcdf/4.4.1.1/docs/internal.dox deleted file mode 100644 index 0eda133ce26..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/internal.dox +++ /dev/null @@ -1,314 +0,0 @@ -/** \file - -\internal - -\page nc_dispatch Internal Dispatch Table Architecture - -This document describes the architecture and details of the netCDF -internal dispatch mechanism. The idea is that when a user opens or -creates a netcdf file, a specific dispatch table is -chosen. Subsequent netcdf API calls are then channeled through that -dispatch table to the appropriate function for implementing that API -call. - -At least the following dispatch tables are supported. -- netcdf classic files (netcdf-3) -- netcdf enhanced files (netcdf-4) -- OPeNDAP to netcdf-3 -- OPeNDAP to netcdf-4 - -Internal Dispatch Tables -- \subpage adding_dispatch -- \subpage dispatch_notes -- \subpage put_vara_dispatch -- \subpage put_attr_dispatch - - -The dispatch table represents a distillation of the netcdf API down to -a minimal set of internal operations. The format of the dispatch table -is defined in the file libdispatch/ncdispatch.h. Every new dispatch -table must define this minimal set of operations. - -\page adding_dispatch Adding a New Dispatch Table - -\tableofcontents - -In order to make this process concrete, let us assume we plan to add -an in-memory implementation of netcdf-3. - -\section dispatch_step1 Step 1. - -Define a –enable flag and an AM_CONFIGURE flag in configure.ac. We -will use the flags –enable-netcdfm and USE_NETCDFM respectively. - -\section dispatch_step2 Step 2. - -Choose some prefix of characters to identify the new dispatch -system. In effect we are defining a name-space. For our in-memory -system, we will choose "NCM" and "ncm". NCM is used for non-static -procedures to be entered into the dispatch table and ncm for all other -non-static procedures. - -\section dispatch_step3 Step 3. - -Modify file libdispatch/ncdispatch.h as follows. - - Add a index for this implementation: - -\code - #define NC_DISPATCH_NCM 5 -\endcode - - Define an external reference to the in-memory dispatch table. - -\code - #ifdef USE_NETCDFM - extern NC_Dispatch* NCM_dispatch_table; - #endif -\endcode - -\section dispatch_step4 Step 4. - -Modify file libdispatch/netcdf.c as follows. - - Add a ptr to the in-memory dispatch table. - -\code - #ifdef USE_NETCDFM - NC_Dispatch* NCM_dispatch_table = NULL; - #endif -\endcode - - Add includes for any necessary header files as needed. - -\section dispatch_step5 Step 5. - -Define the functions necessary to fill in the dispatch table. As a -rule, we assume that a new directory is defined, libsrcm, say. Within -this directory, we need to define Makefile.am, the source files -containing the dispatch table and the functions to be placed in the -dispatch table – call them ncmdispatch.c and ncmdispatch.h. Look at -libsrc/nc3dispatch.[ch] for an example. - -As part of the ncmdispatch.c file, you must define the following. - -\code - NC_Dispatch NCM_dispatcher = { - NC_DISPATCH_NCM, - NCM_create, - NCM_open, - ... - }; - - int - NCM_initialize(void) - { - NCM_dispatch_table = &NCM_dispatcher; - return NC_NOERR; - } -\endcode - -Assuming that the in-memory library does not require any external -libraries, then the Makefile.am will look something like this. - -\code - NCM_SOURCES = ncmdispatch.c ncmdispatch.h ... - AM_CPPFLAGS += -I$(top_srcdir)/libsrc -I$(top_srcdir)/libdispatch - libnetcdfm_la_SOURCES = $(NCM_SOURCES) - noinst_LTLIBRARIES = libnetcdfm.la -\endcode - -\section dispatch_step6 Step 6. - -Provide for the inclusion of this library in the final libnetcdf -library. This is accomplished by modifying liblib/Makefile.am by -adding something like the following. - -\code - if USE_NETCDFM - libnetcdf_la_LIBADD += $(top_builddir)/libsrcm/libnetcdfm.la - endif -\endcode - -\section dispatch_step7 Step 7. - -Modify the NC_initialize function in liblib/stub.c by adding -appropriate references to the NCM dispatch function. - -\code - #ifdef USE_NETCDFM - extern int NCM_initialize(void); - #endif - ... - int NC_initialize(void) - { - ... - #ifdef USE_DAP - if((stat = NCM_initialize())) return stat; - #endif - ... - } -\endcode - -\section dispatch_step8 Step 8. - -Add a directory of tests; ncm_test, say. The file ncm_test/Makefile.am -will look something like this. - -\code - # These files are created by the tests. - CLEANFILES = ... - # These are the tests which are always run. - TESTPROGRAMS = test1 test2 ... - test1_SOURCES = test1.c ... - ... - # Set up the tests. - check_PROGRAMS = $(TESTPROGRAMS) - TESTS = $(TESTPROGRAMS) - # Any extra files required by the tests - EXTRA_DIST = ... -\endcode - -\section dispatch_step9 Step 9. - -Provide for libnetcdfm to be constructed by adding the following to -the top-level Makefile.am. - -\code - if USE_NETCDFM - NCM=libsrcm - NCMTESTDIR=ncm_test - endif - ... - SUBDIRS = ... $(DISPATCHDIR) $(NCM) ... $(NCMTESTDIR) -\endcode - -\section choosing_dispatch_table Choosing a Dispatch Table - -The dispatch table is chosen in the NC_create and the NC_open -procedures in libdispatch/netcdf.c. The decision is currently based on -the following pieces of information. - -The file path – this can be used to detect, for example, a DAP url -versus a normal file system file. - -The mode argument – this can be used to detect, for example, what kind -of file to create: netcdf-3, netcdf-4, 64-bit netcdf-3, etc. For -nc_open and when the file path references a real file, the contents of -the file can also be used to determine the dispatch table. Although -currently not used, this code could be modified to also use other -pieces of information such as environment variables. - -In addition to the above, there is one additional mechanism to force -the use of a specific dispatch table. The procedure -"NC_set_dispatch_override()" can be invoked to specify a dispatch -table. - -When adding a new dispatcher, it is necessary to modify NC_create and -NC_open in libdispatch/netcdf.c to detect when it is appropriate to -use the NCM dispatcher. Some possibilities are as follows. -- Add a new mode flag: say NC_NETCDFM. -- Use an environment variable. -- Define a special file path format that indicates the need to use a - special dispatch table. - -\section special_dispatch Special Dispatch Table Signatures. - -Several of the entries in the dispatch table are significantly -different than those of the external API. - -\section create_open_dispatch Create/Open - -The create table entry and the open table entry have the following -signatures respectively. - -\code - int (*create)(const char *path, int cmode, - size_t initialsz, int basepe, size_t *chunksizehintp, - int useparallel, MPI_Comm comm, MPI_Info info, - struct NC_Dispatch*, struct NC** ncp); -\endcode - -\code - int (*open)(const char *path, int mode, - int basepe, size_t *chunksizehintp, - int use_parallel, MPI_Comm comm, MPI_Info info, - NC_Dispatch*, NC** ncp); -\endcode - -The key difference is that these are the union of all the possible -create/open signatures from the netcdf.h API. Note especially the last -two parameters. The dispatch table is included in case the create -function (e.g. NCM_create) needs to invoke other dispatch -functions. The very last parameter is a pointer to a pointer to an NC -instance. It is expected that the create function will allocate and -fill in an instance of an "NC" object and return a pointer to it in -the ncp parameter. - -\page dispatch_notes Dispatch Programming Notes - -As with the existing code, and when MPI is not being used, the comm -and info parameters should be passed in as 0. This is taken care of in -the nc_open() and nc_create() API procedures in libdispatch/netcdf.c. - -In fact, the object returned in the ncp parameter does not actually -have to be an instance of struct NC. It only needs to "look like it -for the first few fields. This is, in effect, a fake version of -subclassing. Let us suppose that the NCM_create function uses a struct -NCM object. The initial part of the definition of NCM must match the -fields at the beginning of struct NC between the comments BEGIN_COMMON -and END_COMMON. So, we would have the following. - -\code - typedef struct NCM { - /*BEGIN COMMON*/ - int ext_ncid; /* uid «« 16 */ - int int_ncid; /* unspecified other id */ - struct NC_Dispatch* dispatch; - #ifdef USE_DAP - struct NCDRNO* drno; - #endif - /*END COMMON*/ - ... - } NCM; -\endcode - -This allows the pointer to the NCM object to be cast as an instance of -NC* and its pointer returned in the ncp file. Eventually, this will be -replaced with a separate structure containing the common fields. - -\page put_vara_dispatch Accessing Data with put_vara() and get_vara() - -\code - int (*put_vara)(int ncid, int varid, const size_t *start, const size_t *count, - const void *value, nc_type memtype); -\endcode - -\code - int (*get_vara)(int ncid, int varid, const size_t *start, const size_t *count, - void *value, nc_type memtype); -\endcode - -Most of the parameters are similar to the netcdf API parameters. The -last parameter, however, is the type of the data in -memory. Additionally, instead of using an "int islong" parameter, the -memtype will be either ::NC_INT or ::NC_INT64, depending on the value -of sizeof(long). This means that even netcdf-3 code must be prepared -to encounter the ::NC_INT64 type. - -\page put_attr_dispatch Accessing Attributes with put_attr() and get_attr() - -\code - int (*get_att)(int ncid, int varid, const char *name, - void *value, nc_type memtype); -\endcode - -\code - int (*put_att)(int ncid, int varid, const char *name, nc_type datatype, size_t len, - const void *value, nc_type memtype); -\endcode - -Again, the key difference is the memtype parameter. As with -put/get_vara, it used ::NC_INT64 to encode the long case. - -*/ diff --git a/contrib/netcdf/4.4.1.1/docs/software.md b/contrib/netcdf/4.4.1.1/docs/software.md deleted file mode 100644 index ac42931e7a8..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/software.md +++ /dev/null @@ -1,2580 +0,0 @@ -Software for Manipulating or Displaying NetCDF Data {#software} -=================================================== - -[TOC] - -This document provides references to software packages that may be used for manipulating or displaying [netCDF](/software/netcdf/) data. We include information about both freely-available and licensed (commercial) software that can be used with netCDF data. We rely on developers to help keep this list up-to-date. If you know of corrections or additions, please [send them to us (mailto:support@unidata.ucar.edu). Where practical, we would like to include WWW links to information about these packages in the HTML version of this document. - -Other useful guides to utilities that can handle netCDF data include ARM's list of [ARM-tested netCDF data tools](http://science.arm.gov/%7ecflynn/ARM_Tested_Tools/), which includes some downloadable binaries and the NOAA Geophysical Fluid Dynamics Laboratory [guide to netCDF utilities](http://nomads.gfdl.noaa.gov/sandbox/products/vis/data/netcdf/GFDL_VG_NetCDF_Utils.html). - ------------------------------------------------------------------------- - - -Freely Available Software {#freely} -========================= - -ANDX and ANAX {#ANDX} ------------------------------------- - -The ARM Program has developed [ANDX (ARM NetCDF Data eXtract)](http://engineering.arm.gov/~sbeus/andx-web/html/), a command-line utility designed for routine examination and extraction of data from netcdf files. Data can be displayed graphically (line-plot, scatter-plot, overlay, color-intensity, etc.) or extracted as ASCII data. Whether displayed graphically or extracted as ASCII, results can be saved to disk or viewed on screen. - -[ANAX (ARM NetCDF ASCII eXtract)](http://science.arm.gov/~cflynn/ARM_Tested_Tools/) is a scaled-down version of ANDX -- it is designed to only extract ASCII data. All features of ANDX pertaining to non-graphic data extraction are included in ANAX. - -ANTS {#ANTS} ---------------------------- - -The ARM Program has developed [ANTS (ARM NetCDF Tool Suite)](http://science.arm.gov/~cflynn/ANTS/), a collection of netCDF tools and utilities providing various means of creating and modifying netcdf files. ANTS is based on nctools written by Chuck Denham. The utilities within nctools were modified to compile with version 3.5 of the netCDF library, the command syntax was modified for consistency with other tools, and changes were made to accommodate ARM standard netCDF. - -The original functions from nctools were intended mainly for the creation, definition, and copying of fundamental netCDF elements. ARM added others which focus on manipulation of data within existing netCDF files. Additional functions have special support for multi-dimensional data such as "slicing" cross sections from multi-dimensional variable data or joining lesser-dimensional fields to form multi-dimensional structures. Functions have been added to support execution of arithmetic and logical operations, bundling or splitting netCDF files, comparing the structure or content of files, and so on. - -Essentially every type of netCDF library function call is exercised in ANTS. In this way then, this open-source collection of tools also represents a library of coding examples for fundamental netCDF tasks. See the [website](http://science.arm.gov/~cflynn/ANTS/) for more information. - -ARGOS {#ARGOS} ------------------------------ - -[ARGOS](http://www.lapeth.ethz.ch/argos/index.html) (interActive thRee-dimensional Graphics ObServatory) is a new IDL-based interactive 3D visualization tool, developed by [David N. Bresch](http://www.lapeth.ethz.ch/~david/index.html) and [Mark A. Liniger](http://www.lapeth.ethz.ch/~mark/index.html) at the Institute for Atmospheric Science at the Swiss Federal Institute of Technology, ETH, Zürich. - -A highly optimized graphical user interface allows quick and elegant creation of even complex 3D graphics (volume rendering, isosurfaces,...), including Z-buffered overlays (with hidden lines), light and data shading, Xray images, 3D trajectories, animations and virtual flights around your data, all documented in a full on-line [html-help](http://www.lapeth.ethz.ch/argos/argos_general.html). The netCDF data format is preferred, but any other format can be read by providing an IDL (or FORTRAN or C or C++) interface. Some toolboxes (for atmospheric model output, trajectory display, radar data) have already been written, others might easily be added (in IDL, FORTRAN or C code). All interactive activities are tracked in a script, allowing quick reconstruction of anything done as well as running ARGOS in batch script mode. - -Information about [copyright and licensing conditions](http://www.lapeth.ethz.ch/argos/argos_copyright.html) are available. For further information and installation, please E-mail to: bresch@atmos.umnw.ethz.ch - -CDAT {#CDAT} ---------------------------- - -The [Climate Data Analysis Tool (CDAT)](http://cdat.sf.net), developed -by the [Program for Climate Model Diagnosis and Intercomparison -(PCMDI)](http://www-pcmdi.llnl.gov/) at Lawrence Livermore National -Laboratory, provides the capabilities needed to analyze model data, -perform complex mathematical calculations, and graphically display the -results. It provides the necessary tools to diagnose, validate, and -intercompare large observational and global climate model data sets. -It includes the ability to ingest large climate datasets in netCDF, HDF, -DRS, and GrADS/GRIB format; the Visualization and Computation System -(VCS) module, visually displays and animates ingested or created data; -and the Library of AMIP Data Transmission Standards (LATS) module -outputs data in the machine-independent netCDF or GrADS/GRIB file -formats. - -In addition, the Command Line Interface (CLI) module allows CDAT to -receive argument and function input via the command line, and the -Graphical User Interface (GUI) allows CDAT to receive argument and -function input via a point-and-click environment. - -The software, which runs as a standalone process or within PCMDI's -Visualization and Computation System (VCS), provides climate scientists -with an easy and fast method to read different file formats, and to -analyze and graphically display climate data in an integrated fashion. -CDAT includes a set of pre-defined functions to allow the user to -manipulate the data and send the output to a file which can be viewed as -an image, or as a collection of images in an animation. The software has -a gradual learning curve, allowing the novice user to quickly obtain -useful results. - -CDFconvert {#CDFconvert} ---------------------------------------- - -The [MRG CDFconvert -package](http://www.atmos.albany.edu/facstaff/rmctc/cdf_cvt/) provided -by the Mesoscale Research Group, McGill University/SUNY Albany, is -designed to address data conversion issues for gridded datasets stored -under the -[COARDS](http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html) -convention. CDFconvert converts regular Cylindrical Equidistant -(Lat/Long) and Gaussian (Spherical) netCDF grids into either the -Canadian [RPN Standard -File](http://www.cmc.ec.gc.ca/rpn/modcom/si/libraries/rmnlib/fstd/index.html) -or [GEMPAK](/software/gempak/index.html) file formats. MRG CDFconvert -has the flexibility to handle netCDF files generated by a number of -sources, including NCEP and ECMWF. User-definable conversion tables make -the extension of the package to different datasets possible. - -cdfsync {#cdfsync} ---------------------------------- - -Joe Sirott of NOAA's Pacific Marine Environmental Laboratory has -developed cdfsync, a program that allows users to rapidly synchronize a -set of netCDF files over a network. Fast synchronization times are -achieved by only transmitting the differences between files. It is built -on the Open Source [rsync](http://samba.anu.edu.au/rsync/) program, but -contains a number of optimizations including: - -- Special handling of netCDF files for faster synchronization - calculations -- Much faster updates of large numbers of small netCDF files -- In-place updates of large netCDF files - -The latest version should run on Linux variants and Solaris. - -More information is available at the [cdfsync -website](http://www.epic.noaa.gov/epic/software/cdfsync/). - -CDO (Climate Data Operators) {#CDO} --------------------------------------------------- - -Uwe Schulzweida at the Max Planck Institute for Meteorology has -developed [CDO](http://code.zmaw.de/projects/cdo), a collection of -Operators to manipulate and analyze Climate Data files. Supported file -formats include netCDF and GRIB. There are more than 350 operators -available. The following table provides a brief overview of the main -categories. - -- File information (info, sinfo, diff, ...) -- File operations (copy, cat, merge, split\*, ...) -- Selection (selcode, selvar, sellevel, seltimestep, ...) -- Missing values (setctomiss, setmisstoc, setrtomiss) -- Arithmetic (add, sub, mul, div, ...) -- Mathematical functions (sqrt, exp, log, sin, cos, ...) -- Comparison (eq, ne, le, lt, ge, gt, ...) -- Conditions (ifthen, ifnotthen, ifthenc, ifnotthenc) -- Field statistics (fldsum, fldavg, fldstd, fldmin, fldmax, ...) -- Vertical statistics (vertsum, vertavg, vertstd, vertmin, ...) -- Time range statistics (timavg, yearavg, monavg, dayavg, ...) -- Field interpolation (remapbil, remapcon, remapdis, ...) -- Vertical interpolation (ml2pl, ml2hl) -- Time interpolation (inttime, intyear) - -As an example of use of CDO, converting from GRIB to netCDF can be as -simple as - - cdo -f nc copy file.grb file.nc - -or with relative time axis (for usage with GrADS) - cdo -r -f nc copy file.grb file.nc - -or using ECMWF reanalysis on a reduced grid - cdo -R -f nc copy file.grb file.nc - -More information is available on the [CDO -homepage](http://code.zmaw.de/projects/cdo). - -CIDS Tools {#CIDS_Tools} ---------------------------------------- - -The Center for Clouds Chemistry and Climate -([C4](http://www-c4.ucsd.edu/)) Integrated Data Systems -([CIDS](http://www-c4.ucsd.edu/~cids/)) group has developed several -useful netCDF utilities: -- cdf2idl: Writes an IDL script to read a NetCDF file. -- cdf2c: Writes C code to read a NetCDF file. -- cdf2fortran: Writes FORTRAN source code to read a NetCDF file. -- cdf2asc: Dumps NetCDF data to an ASCII file. - -The source for these utilities can be downloaded from [CIDS NetCDF -Visualization Tools -site](http://www-c4.ucsd.edu/~cids/software/visual.html). - -CSIRO MATLAB/netCDF interface {#CSIRO-MATLAB} ------------------------------------------------------------- - -The [CSIRO MATLAB/netCDF interface](http://www.marine.csiro.au/sw/matlab-netcdf.html) is now -available from the [CSIRO Marine Laboratories](http://www.marine.csiro.au). -The CSIRO MATLAB/netCDF interface is run from within MATLAB and has a -simple syntax. It has options for automatically handling missing values, -scale factors, and permutation of hyperslabs. It is, however, limited to -retrieving data from, and information about, existing netCDF files. - -The basis of the interface is a machine-dependent mex-file called -mexcdf53. Rather than call the mex-file directly users are advised to -employ both [Chuck Denham's netCDF toolbox](#NC4ML5) and the CSIRO -MATLAB/netCDF interface described here. For read-only access to existing -netCDF data, the CSIRO interface has a simpler syntax than the netCDF -Toolbox, but the latter may also be used to create and manipulate netCDF -variables and datasets. - -EPIC {#EPIC} ---------------------------- - -NOAA's Pacific Marine Environmental Laboratory -([PMEL](http://www.pmel.noaa.gov/)) has developed the -[EPIC](http://www.pmel.noaa.gov/epic/) software package for -oceanographic data. EPIC provides graphical display and data field -manipulation for multi-dimensional netCDF files (up to 4 dimensions). -PMEL has been using this software on Unix and VMS several years. At -present, they have: - -- a data file I/O library ( - [epslib](http://www.pmel.noaa.gov/epic/eps-manual/epslib_toc.html), - which is layered on top of the netCDF library). -- epslib allows transparent access to multiple data file formats -- a [MATLAB MexEPS - interface](http://www.epic.noaa.gov/epic/software/mexeps.htm) for - using any supported EPIC file with MATLAB -- [suite of EPIC - programs](http://www.epic.noaa.gov/epic/software/ep_programs.htm) - for graphics and analysis of hydrographic profile data and time - series data. - -This software was developed on Sun/Unix and is also supported for -DEC/Ultrix and VAX/VMS as a system for data management, display and -analysis system for observational oceanographic time series and -hydrographic data. The EPIC software includes over 50 programs for -oceanographic display and analysis, as well as utilities for putting -in-situ or observational data on-line (with on-the-fly graphics and data -download) on the WWW. -The developers are interested in coordinating with others who may be -developing oceanographic software for use with netCDF files. The EPIC -software is available via anonymous FTP from ftp.noaapmel.gov in the -epic/ and /eps directories. To obtain the EPIC software, please see Web -pages at . For -information about EPIC, please see the Web pages at -. Contact epic@pmel.noaa.gov, -or Nancy Soreide, nns@noaapmel.gov, for more information. - -Excel Use ------------------------------------- - -Several packages are available for accessing netCDF data from Microsoft -Excel, including the [netcdf4excel](#netcdf4excel) add-in for Excel, and -a [Scientific Dataset (SDS) Library](#SDS) that supports a DataSetEditor -add-in for Excel to view and modify various forms of data, including -netCDF. - -EzGet {#EzGet} ------------------------------ - -A FORTRAN library called -[EzGet](http://www-pcmdi.llnl.gov/ktaylor/ezget/ezget.html) has been -developed at [PCMDI](http://www-pcmdi.llnl.gov/PCMDI.html) to facilitate -retrieval of modeled and observed climate data stored in popular formats -including [DRS](http://www-pcmdi.llnl.gov/drach/DRS.html), -[netCDF](/software/netcdf/), [GrADS](http://grads.iges.org/grads), and, -if a control file is supplied, -[GRIB](ftp://nic.fb4.noaa.gov/pub/nws/nmc/docs/gribed1/). You can -specify how the data should be structured and whether it should undergo -a grid transformation before you receive it, even when you know little -about the original structure of the stored data (e.g., its original -dimension order, grid, and domain). -The EzGet library comprises a set of subroutines that can be linked to -any FORTRAN program. EzGet reads files through the -[cdunif](http://www-pcmdi.llnl.gov/drach/cdunif.html) interface, but use -of EzGet does not require familiarity with cdunif. The main advantages -of using EzGet instead of the lower level cdunif library include: - -- Substantial error trapping capabilities and detailed error messages -- Versatile capability of conveniently selecting data from specified - regions (e.g., oceans, North America, all land areas north of 45 - degrees latitude, etc.) -- Ability to map data to a new grid at the time it is retrieved by - EzGet -- Automatic creation of \`\`weights'' for use in subsequent averaging - or masking of data -- Increased control in specifying the domain of the data to be - retrieved. - -For more information about EzGet, including instructions for downloading -the documentation or software, see the EzGet home page at -. For questions or -comments on EzGet, contact Karl Taylor (taylor13@llnl.gov). - -FAN -------------------------- - -[FAN (File Array Notation)](fan_utils.html) is Harvey -Davies' package for extracting and manipulating array data from netCDF -files. The package includes the three utilities nc2text, text2nc, and -ncrob for printing selected data from netCDF arrays, copying ASCII data -into netCDF arrays, and performing various operations (sum, mean, max, -min, product, ...) on netCDF arrays. A library (fanlib) is also included -that supports the use of FAN from C programs. The package is available -via anonymous FTP from -. Questions and -comments may be sent to Harvey Davies, harvey.davies@csiro.au. - -FERRET {#FERRET} -------------------------------- - -[FERRET](http://ferret.wrc.noaa.gov/Ferret/) is an interactive computer -visualization and analysis environment designed to meet the needs of -oceanographers and meteorologists analyzing large and complex gridded -data sets. It is available by anonymous ftp from abyss.pmel.noaa.gov for -a number of computer systems: SUN (Solaris and SUNOS), DECstation -(Ultrix and OSF/1), SGI, VAX/VMS and Macintosh (limited support), and -IBM RS-6000 (soon to be released). -FERRET offers a Mathematica-like approach to analysis; new variables may -be defined interactively as mathematical expressions involving data set -variables. Calculations may be applied over arbitrarily shaped regions. -Fully documented graphics are produced with a single command. Graphics -styles included line plots, scatter plots, contour plots, color-filled -contour plots, vector plots, wire frame plots, etc. Detailed controls -over plot characteristics, page layout and overlays are provided. NetCDF -is supported both as an input and an output format. - -Many excellent software packages have been developed recently for -scientific visualization. The features that make FERRET distinctive -among these packages are Mathematica-like flexibility, geophysical -formatting (latitude/longitude/date), "intelligent" connection to its -data base, special memory management for very large calculations, and -symmetrical processing in 4 dimensions. Contact Steve Hankin, -hankin@noaapmel.gov, for more information. - -Fimex {#fimex} ------------------------------ - -Heiko Klein (Norwegian Meteorological Institute) has developed the -[fimex](https://wiki.met.no/fimex/start) (File Interpolation, -Manipulation, and EXtraction) C++ library for gridded geospatial data. -It converts between several data formats (currently netCDF, NcML, GRIB1 -or GRIB2, and felt). Fimex also enables you to change the projection and -interpolation of scalar and vector grids, to subset the gridded data, -and to extract only parts of the files. Fimex supports a growing list of -other [features](https://wiki.met.no/fimex/features), including support -for most NcML features and for netCDF-4 compression. - -For simple usage, Fimex also comes with the command line program fimex. - -Documentation and downloads are available from the [fimex web -site](http://wiki.met.no/fimex/). - -FWTools (GIS Binary Kit for Windows and Linux) {#fwtools} ------------------------------------------------------------------------- - -[FWTools](http://fwtools.maptools.org/) is Frank Warmerdam's set of Open -Source GIS binaries for Windows (win32) and Linux (x86 32bit) systems. -The kits are intended to be easy for end users to install and get going -with, and include OpenEV, GDAL, MapServer, PROJ.4 and OGDI as well as -some supporting components. FWTools aims to track the latest development -versions of the packages included as opposed to official releases, "to -give folks a chance to use the *latest and greatest*". - -GDAL {#GDAL} ---------------------------- - -Frank Warmerdam's [GDAL](http://www.remotesensing.org/gdal/index.html) -is a translator library for raster geospatial data formats that is -released under an X/MIT style Open Source license. As a library, it -presents a [single abstract data -model](http://www.remotesensing.org/gdal/gdal_datamodel.html) to the -calling application for all supported formats. The related -[OGR](http://www.remotesensing.org/gdal/ogr) library (which lives within -the GDAL source tree) provides a similar capability for simple features -vector data. - -GDAL is in active use in several projects, and includes roughly 40 -format drivers, including a translator for netCDF (read/write). Other -translators include GeoTIFF (read/write), Erdas Imagine (read/write), -ESRI .BIL (read), .aux labeled raw (read/write), DTED (read), SDTS DEM -(read), CEOS (read), JPEG (read/write), PNG (read/write), Geosoft GXF -(read) and Arc/Info Binary Grid (read). A full list is available in -[Supported -Formats](http://www.remotesensing.org/gdal/formats_list.html). - -GDAL has recently included support for the netCDF-4 enhanced data model -and netCDF-4 format, as well as improved support for recent additions to -the CF conventions. - -As an example of the use of GDAL, converting an ArcInfo ASCII grid to -netCDF (GMT conventions) as easy as: - - gdal_translate arc_ascii.grd -of GMT gmt_grid.nc - -GDL (GNU Data Language) {#GDL} ---------------------------------------------- - -[GDL](http://gnudatalanguage.sourceforge.net/) is a free implementation -of most of the programming language supported by [IDL](#IDL) -(Interactive Data Language). GDL supports the netCDF-3 API. - -Gfdnavi (Geophysical fluid data navigator) {#Gfdnavi} --------------------------------------------------------------------- - -[Gfdnavi](http://www.gfd-dennou.org/arch/davis/gfdnavi/index.en.htm) is -a web-based tool to archive, share, distribute, analyze, and visualize -geophysical fluid data and knowledge. The software is under development -by members of the GFD Dennou Club, including T. Horinouchi (RISH, Kyoto -U.), S. Nishizawa (RIMS, Kyoto U.), and colleagues. Gfdnavi uses a -metadata database for managing and analyzing data and visualizations. It -also permits publishing data for web access and will soon support access -to data on other Gfdnavi servers. Web service APIs are now under -development. A presentation [Introducing -Gfdnavi](http://www.gfd-dennou.org/arch/davis/gfdnavi/presen/2007-03-05_GfdnaviIntro.En/pub/) -describes the architecture and shows examples of use. - -Gfdnavi is dependent on two technologies: - -- [Ruby on Rails](http://www.rubyonrails.com/), a framework for web - applications, and -- [the Dennou Ruby Project](http://ruby.gfd-dennou.org/), a collection - of tools for geophysical data. These tools include - [GPhys](http://ruby.gfd-dennou.org/products/gphys/) software to - handle GRIB, GrADS, and netCDF data uniformly. - -As an example of this technology, Takuji Kubota has established [a -Gfdnavi server](http://www.gsmap.aero.osakafu-u.ac.jp/gfdnavi/) for the -Global Satellite Mapping of Precipitation -([GSMaP](http://www.radar.aero.osakafu-u.ac.jp/~gsmap/index_english.html)) -project. - -GMT {#GMT} -------------------------- - -[GMT](http://gmt.soest.hawaii.edu/) (Generic Mapping Tools) is an open -source collection of about 60 tools for manipulating geographic and -Cartesian data sets (including filtering, trend fitting, gridding, -projecting, etc.) and producing Encapsulated PostScript File (EPS) -illustrations ranging from simple x-y plots via contour maps to -artificially illuminated surfaces and 3-D perspective views. GMT -supports 30 map projections and transformations and comes with support -data such as coastlines, rivers, and political boundaries. GMT is -developed and maintained by Paul Wessel and Walter H. F. Smith with help -from a global set of volunteers, and is supported by the National -Science Foundation. It is released under the GNU General Public License. - -The package can access COARDS-compliant netCDF grids as well as ASCII, -native binary, or user-defined formats. The GMT package is available via -anonymous ftp from several servers; see -[gmt.soest.hawaii.edu](http://gmt.soest.hawaii.edu) for installation -information. - -Grace {#Grace} ------------------------------ - -[Grace](http://plasma-gate.weizmann.ac.il/Grace/) is a tool to make -two-dimensional plots of scientific data, including 1D netCDF variables. -It runs under the X Window System and OSF Motif (recent versions of -LessTif are, by and large, fine, too). Grace runs on practically any -version of Unix. As well, it has been successfully ported to VMS, OS/2 -and Win9\*/NT (some functionality may be missing, though). Grace is a -descendant of ACE/gr. -A few features of Grace are: - -- User defined scaling, tick marks, labels, symbols, line styles, - colors. -- Batch mode for unattended plotting. -- Read and write parameters used during a session. -- Regressions, splines, running averages, DFT/FFT, - cross/auto-correlation, ... -- Support for dynamic module loading. -- Hardcopy support for PostScript, PDF, GIF, and PNM formats. -- Device-independent Type1 font rastering. -- Ability to read or write netCDF data. - -GrADS {#GrADS} ------------------------------ - -[GrADS](http://grads.iges.org/grads/grads.html) (Grid Analysis and -Display System) is an interactive desktop tool from -[COLA/IGES](http://grads.iges.org/cola.html) that is currently in use -worldwide for the analysis and display of earth science data. GrADS is -implemented on all commonly available UNIX workstations, Apple -Macintosh, and DOS or Linux based PCs, and is freely available via -anonymous ftp. GrADS provides an integrated environment for access, -manipulation, and display of earth science data in several forms, -including GRIB and netCDF. For more information, see the [GrADS User's -Guide](http://grads.iges.org/grads/gadoc/users.html). - -Gri -------------------------- - -Gri is an extensible plotting language for producing scientific graphs, -such as x-y plots, contour plots, and image plots. Dan Kelley of -Dalhousie University is the author of Gri, which can read data from -netCDF files as well as ASCII and native binary data. For more -information on Gri, see the URL . - -GXSM {#GXSM} ---------------------------- - -The GXSM is the Gnome X Scanning Microscopy project, it is a bit more -than just a piece of software (the GXSM itself), there is full hardware -support for DSP cards including open source DSP software and a growing -set of SPM related electronics. For more information, see -. - -HDF interface {#HDF_interface} ---------------------------------------------- - -The National Center for Supercomputing Applications (NCSA) has added the -netCDF interface to their [Hierarchical Data Format -(HDF)](http://hdf.ncsa.uiuc.edu/) software. HDF is an extensible data -format for self-describing files. A substantial set of applications and -utilities based on HDF is available; these support raster-image -manipulation and display and browsing through multidimensional -scientific data. An implementation is now available that provides the -netCDF interface to HDF. With this software, it is possible to use the -netCDF calling interface to place data into an HDF file. The netCDF -calling interface has not changed and netCDF files stored in XDR format -are readable, so existing programs and data will still be usable -(although programs will need to be relinked to the new library). There -is currently no support for the mixing of HDF and netCDF structures. For -example, a raster image can exist in the same file as a netCDF object, -but you have to use the Raster Image interface to read the image and the -netCDF interface to read the netCDF object. The other HDF interfaces are -currently being modified to allow multi-file access, closer integration -with the netCDF interface will probably be delayed until the end of that -project. -Eventually, it will be possible to integrate netCDF objects with the -rest of the HDF tool suite. Such an integration will then allow tools -written for netCDF and tools written for HDF to both interact -intelligently with the new data files. - -HDF-EOS to netCDF converter {#HDF-EOS} ------------------------------------------------------ - -The Goddard Earth Sciences Data and Information Services Center ([GES -DISC](http://disc.gsfc.nasa.gov)) has developed an on-the-fly HDF-EOS to -netCDF/CF converter for the following products, making them easier to -use in the [Unidata IDV](#IDV) and -[McIDAS-V](http://www.ssec.wisc.edu/mcidas/software/v/): - -- AIRS Level 2 (scene) profiles of moisture, air temperature and trace - gases -- AIRS Level 3 (global grid) profiles of moisture, air temperature and - trace gases -- OMI UV-B at the surface -- TOMS ozone and aerosols - -[Instructions](http://disc.gsfc.nasa.gov/services/NetCDFConversionforIDVandMcIDAS-V.shtml) -are available for searching and converting these data. More information -on AIRS products is available at -. - -HIPHOP {#HIPHOP} -------------------------------- - -[HIPHOP](http://www.knmi.nl/onderzk/atmosam/English/Service/hiphop/hiphop.html), -developed by Dominik Brunner, is a widget based IDL application that -largely facilitates the visualization and analysis of 2D, 3D, and 4D -atmospheric science data, in particular atmospheric tracer distributions -and meteorological fields. -Graphical output of (atmospheric model) data can be quickly generated in -a large number of different ways, including horizontal maps at selected -model or pressure levels, vertical north-south, east-west, or slant -cross-sections (including zonal averages), time slices, animations, etc. -It also allows mathematical operations on the existing fields to -generate new fields for further analysis, and it can be run as a batch -application. - -The program handles data in netCDF, HDF and GRIB format. Interfaces to -other data formats (e.g. ASCII and binary data) can be added easily. - -Beginning with Version 4.0, it also supports the ability to overlay -meteorological fields on a number of different satellite images, and to -draw air parcel trajectories. - -Hyperslab OPerator Suite (HOPS) {#HOPS} ---------------------------------------------------------------------------------- - -Hyperslab OPerator Suite -([HOPS](http://www.cgd.ucar.edu/gds/svn/hyperslab.html)), developed by -R. Saravanan at NCAR, is a bilingual, multi-platform software package -for processing data in netCDF files conforming to the NCAR-CCM format or -the NCAR Ocean Model format. HOPS is implemented in [IDL](#IDL), the -widely-used commercial interpreted language, and also in -[Yorick](ftp://ftp-icf.llnl.gov/pub/Yorick/), a public-domain -interpreted language that is freely available from the Lawrence -Livermore National Laboratory. The IDL version of HOPS should run on any -platform supported by IDL. The Yorick version too runs on most common -UNIX platforms, such as Sun, SGI, Cray, and LINUX computers. -HOPS is not a monolithic program, but a suite of operators that act on -data units called "hyperslabs". The design of HOPS is object-oriented, -rather than procedure-oriented; the operators treat the numeric data and -the associated meta-data (like coordinate information) as a single -object. - -Note that HOPS is not a general purpose netCDF utility and works only -for the NCAR CSM netCDF formats. For more information, check the [HOPS -home page](http://www.cgd.ucar.edu/gds/svn/hyperslab.html). - -iCDF (imports chromatographic netCDF data into MATLAB) {#iCDF} ------------------------------------------------------------------------------ - -Klavs M. Sørensen, Thomas Skov and Rasmus Bro (Faculty of Life Sciences, -University of Copenhagen) have developed -[iCDF](http://www.models.life.ku.dk/source/iCDF/index.asp), a free and -documented toolbox for importing chromatographic data in the -netCDF-based format that most manufacturers of chromatographic software -support. - -The iCDF software is currently for XC-MS data (X: GC, LC, HPLC), but -soon it will be able to import data using other detectors as well. It -can be used to open netCDF files from many different instruments (e.g. -Agilent, Bruker) and many chromatographic software packages (e.g. -ChemStation). - -For more information, see the paper - -> Skov T and Bro R. (2008) Solving fundamental problems in -> chromatographic analysis Analytical and Bioanalytical Chemistry, 390 -> (1): 281-285. - -IDV (Integrated Data Viewer) {#IDV} --------------------------------------------------- - -Unidata's [Integrated Data Viewer (IDV)](/software/idv/) is a Java -application (for Java 1.4 or later) that can be used to display a -variety of netCDF files, particularly well formatted, geolocated -datasets. Features include: - -- Access to local and remote netCDF files and a variety of [other data - formats](/software/idv/docs/userguide/data/DataSources.html) -- Slicing and probing of multidimensional data -- Support for netCDF conventions (CF, COARDS, NUWG, AWIPS) -- InstallAnywhere installers for easy download and installation -- Save display state to a bundle for easy recreation of views -- Support for non-gridded data through the [Common Data Model - (CDM)](/software/netcdf-java/CDM/) - -The IDV uses the [VisAD Java -library](http://www.ssec.wisc.edu/~billh/visad.html) for interactive and -collaborative visualization and analysis and the [netCDF Java -library](/software/netcdf-java/) for reading and manipulating netCDF -files. - -Ingrid {#Ingrid} -------------------------------- - -[Ingrid](http://ingrid.ldgo.columbia.edu/), by M. Benno Blumenthal -\, is designed to manipulate large datasets -and model input/output. It can read data from its data catalog, a netCDF -file, or a directly attached model, and output the data, either by -feeding it to a model, creating a netCDF file, or creating plots and -other representations of the data. - -Ingrid has a number of filters which allow simple data manipulations, -such as adding two datasets together, smoothing, averaging, and -regridding to a new coordinate. In addition to netCDF, it also reads -HDF, CDF, VOGL, and SGI GL. - -Ingrid is currently running as a WWW daemon that can be accessed through - to see some of its -capabilities on a climate data catalog maintained by the [Climate -Group](http://rainbow.ldeo.columbia.edu/) of the [Lamont-Doherty Earth -Observatory](http://www.ldeo.columbia.edu/) of Columbia University. To -quote the introduction: - -> The Data Catalog is both a catalog and a library of datasets, i.e. it -> both helps you figure out which data you want, and helps you work with -> the data. The interface allows you to make plots, tables, and files -> from any dataset, its subsets, or processed versions thereof. -> -> This data server is designed to make data accessible to people using -> WWW clients (viewers) and to serve as a data resource for WWW -> documents. Since most documents cannot use raw data, the server is -> able to deliver the data in a variety of ways: as data files (netCDF -> and HDF), as tables (html), and in a variety of plots (line, contour, -> color, vector) and plot formats (PostScript and gif). Processing of -> the data, particularly averaging, can be requested as well. -> -> The Data Viewer in particular demonstrates the power of the Ingrid -> daemon. - -Ingrid currently runs on Linux, for which binaries are available. CVS -access to the current source can be arranged. - - Intel Array Visualizer {#IntelArrayVisualizer} --------------------------------------------------------------- - -The [Intel® Array -Visualizer](http://www.intel.com/cd/software/products/asmo-na/eng/compilers/226277.htm) -and Intel® Array Viewer are available as [free -downloads](http://www.intel.com/cd/software/products/asmo-na/eng/compilers/226277.htm) -for Windows platforms. They offer an application and a set of software -tools and components, which include C, Fortran, and .Net libraries, for -developing scientific visualization applications and for creating -interactive graphs of array data in various formats, including HDF and -netCDF. - -IVE {#IVE} -------------------------- - -[IVE (Interactive Visualization -Environment)](http://www.atmos.washington.edu/ive/) is a software -package designed to interactively display and analyze gridded data. IVE -assumes the data to be displayed are contained in one- two-, three- or -four-dimensional arrays. By default, the numbers within these arrays are -assumed to represent grid point values of some field variable (such as -pressure) on a rectangular evenly spaced grid. IVE is, nevertheless, -capable of displaying data on arbitrary curvilinear grids. - -If the data points are not evenly spaced on a rectangular grid, IVE must -be informed of the grid structure, either by specifying "attributes" in -the data input or by specifying the coordinate transform in a user -supplied subroutine. Stretched rectangular grids (which occur when the -stretching along a given coordinate is a function only of the value of -that coordinate) can be accommodated by specifying one-dimensional -arrays containing the grid-point locations along the stretched -coordinate as part of the IVE input data. Staggered meshes can also be -accommodated by setting "attributes" in the input data. The structure of -more complicated curvilinear grids must be communicated to IVE via user -supplied "transforms," which define the mapping between physical space -and the array indices. - -Since four-dimensional data cannot be directly displayed on a flat -computer screen, it is necessary to reduced the dimensionality of the -data before it is displayed. One of IVE's primary capabilities involves -dimension reduction or "data slicing." IVE allows the user to display -lower-dimensional subsets of the data by fixing a coordinate or by -averaging over the coordinate. - -IVE currently has the capability to display - -- scalar fields as - - 2D scalar plots - - 1D scalar plots - - vertical soundings - - a single point value -- vector fields as 2D vector plots - -IVE lets you overlay plots, loop plots, and control a wide variety of -display parameters. - -IVE also can perform algebraic computations on the gridded data and can -calculate derivatives. More complicated computations can be performed in -user supplied subroutines. - -IVE uses NetCDF for the data input format, and uses the [NCAR Graphics -Library](http://ngwww.ucar.edu/ng/) to produce graphical output. IVE is -[available](http://www.atmos.washington.edu/ive/getting.html) as source -via anonymous ftp; and as binary on request for licensees of NCAR -graphics. - -JSON format with the ncdump-json utility {#JSON} ---------------------------------------------------------------- - -Josep Llodrà has developed a program to output the contents of a -netCDF-3 or netCDF-4 file in JSON (JavaScript Object Notation). It is -based on Unidata's NCDUMP utility, and it keeps the original ncdump -functionality, unless the "-j" option is used to specify JSON output. - -The program and source are available from - . - -Java interface {#Java_interface} ------------------------------------------------ - -The [NetCDF-Java 4.2 Library](/software/netcdf-java/) is a Java -interface to netCDF files, as well as to many other types of scientific -data formats. It is freely available and the source code is released -under the (MIT-style) netCDF C library license. Previous versions use -the GNU Lesser General Public License (LGPL). - -The library implements a Common Data Model -([CDM](/software/netcdf-java/CDM/)), a generalization of the netCDF, -OpenDAP and HDF5 data models. The library is a prototype for the -netCDF-4 project, which provides a C language API for the "data access -layer" of the CDM, on top of the HDF5 file format. The NetCDF-Java -library is a 100% Java framework for *reading* netCDF and other file -formats into the CDM, as well as *writing* to the netCDF-3 file format. -The library also implements -[NcML](http://www.unidata.ucar.edu/software/netcdf/ncml/), which allows -you to add metadata to CDM datasets, as well as to create virtual -datasets through aggregation. - -Kst (2D plotting tool) {#KST} --------------------------------------------- - -[Kst](http://kst-plot.kde.org) is an open-source, cross-platform 2D -plotting tool focused on performance and ease of use. Packages for -Windows, various Linux distributions and Mac OS X are -[available](http://sourceforge.net/projects/kst/files/), as well as the -complete source code and CMake-based build files. A more detailed -presentation of Kst can be found on the web page at -, including numerous screenshots and all the -useful download links. - -Kst is characterized by the following features: - -- Outstanding performance: curves with millions of points are no - problem -- Plotting of live streams -- Out-of-the box support for a variety of formats (currently ASCII, - netCDF, dirfile, Qimage-supported types, fits images) -- User-friendly with a modern and consistent user interface -- A set of unique tools to boost efficiency, including a data import - wizard, capacity to edit multiple objects at once or the "Change - Data File" tool to compare multiple experiments easily -- An active community -- Easily expandable for new data formats or data analysis algorithms - thanks to a plugin-based architecture -- Available on Windows, Linux, and Mac OSX - -Labview interface {#Labview-API} ------------------------------------------------ - -A netCDF Labview interface, implemented in the Labview programming -language is available. The software includes A graphical user interface -for editing netCDF data and conversion to other data formats. The -package was developed and is maintained by L. F. Hwang of Sun Yat-sen -University in China. For more information and to download the source -code, see the [NetCDFLabview web -site](https://sourceforge.net/projects/netcdflabview/). - -MBDyn (MultiBody Dynamics) #{MBDyn} --------------------------------------------------- - -[MBDyn](http://www.aero.polimi.it/~mbdyn/) is an open-source MultiBody -Dynamics analysis system developed at the Dipartimento di Ingegneria -Aerospaziale of the University "Politecnico di Milano", Italy. It uses -netCDF as its primary output format. - -MBDyn features the integrated multidisciplinary analysis of multibody, -multiphysics systems, including nonlinear mechanics of rigid and -flexible constrained bodies, smart materials, electric networks, active -control, hydraulic networks, essential fixed-wing and rotorcraft -aerodynamics. It allows users to simulate the behavior of heterogeneous -mechanical, aero-servo-elastic systems based on first principles -equations. It is being actively developed and used in the aerospace and -automotive fields for dynamics analysis and simulation of complex -systems. Dynamic linking of user-defined modules is heavily exploited to -let users extend the feature library. - -Max_diff_nc ${Maxdiffnc} -------------------------------------------- - -This is a program which compares two NetCDF files. Variables with the -same ID in the two files are assumed to be of the same type and have the -same shape. For each such couple of variables, the program computes the -maximum of the absolute value of the difference, and the maximum of the -absolute value of the relative difference. The program also tells you at -what location (the subscript list of the array) the maximum difference -is reached. - -The web page for this program is: - - -This is a freely available tool. - -MeteoExplorer {#MeteoExplorer} ---------------------------------------------- - -[MeteoExplorer](http://www.eastmodelsoft.com/index_en.htm), developed by -Lianqing Yu at China Meteorological Administration, is a cross-platform -software application for analyzing and rendering atmospheric science and -geoscience data. It supports popular data formats including WMO -GRIB1/GRIB2, NetCDF, and MICAPS, and provides basic GIS functionalities. -Developed with C++, Meteo Explorer targets multiple computing platforms -including Microsoft Windows, GNU Linux, and SGI IRIX operating systems. - -The primary features include: - -- Graphics layer management (navigation and animation) -- Objective analysis of physical elements in surface or upperair - soundings data -- Isoline analysis and shading of grid field -- Streamline analysis of wind field -- Computation of physics elements -- NetCDF data process and display -- GRIB1/GRIB2 data process and display -- MICAPS data process and display -- Satellite nephogram data display and animation, support AWX, GPF and - HDF format -- Interactive composition of synoptic chart (command undo/redo, - automatic save) -- Map zoom, pan, projection and clipping -- Full screen display and zoom to area -- Quick navigation via thumbnail view of graphics layers -- Save screen shot as image file (support formats: BMP, JPG, PNG) -- Vector graphics exported to clipboard or saved as EMF file (Windows - version only) -- Remote desktop connection support -- System configuration (dynamic menu) -- Fast switch of user interface language on the fly - -For more information, please visit [MeteoExplorer's home -page](http://www.eastmodelsoft.com/software/mexplorer.htm) or contact -the support staff via meteoexplorer@hotmail.com . - -MeteoInfo {#MeteoInfo} -------------------------------------- - -For better cross-platform support, -[MeteoInfo](http://www.meteothinker.com) has recently been re-developed -using Unidata's NetCDF Java library. MeteoInfo is GIS software for -visualization and analysis of spatial and meteorological data. The Java -edition can be run in Windows, Mac OS, Linux, and Unix systems. The -Groovy script engine was coupled in the software, so users can write -Groovy script to run the software automatically for analysis with -complex steps. - -Download: - -Java 6 is needed to run the software. - -MexEPS {#MexEPS} -------------------------------- - -[PMEL](http://www.pmel.noaa.gov/) has developed a MATLAB interface, -[MexEPS](http://www.epic.noaa.gov/epic/software/mexeps.htm), which -supports several netCDF file conventions, including [those adopted by -PMEL](ftp://ftp.unidata.ucar.edu/pub/netcdf/Conventions/PMEL-EPIC/). -Many styles of time axes are supported and time manipulation routines -ease the use of the time axis in MATLAB. The MexEPS package supports the -following data formats: -- reading, writing and editing netCDF files; -- reading and writing Classic EPIC files -- reading formatted ASCII files - -It includes: -- VARIABLE, AXIS, ATTRIBUTE manipulation routines -- TIME manipulation - - TIME enters MATLAB as YYMMDDhhmmss.fff - - Can be converted to netCDF udunits time convention (e.g. days - *since* 1990-01-01 00:00:00) -- [MATLAB help](ftp://ftp.pmel.noaa.gov/eps/mexeps/help-m/) and - [example scripts](ftp://ftp.pmel.noaa.gov/eps/mexeps/examples/) - using MexEPS -- **ASCII2MAT** mexFunction, which reads a formatted file into MATLAB - as a matrix - -The MexEPS package is freely available in PMEL's anonymous ftp directory - - -If you have any questions or comments, please contact the author, Willa -Zhu [(willa@pmel.noaa.gov)](mailto:willa@pmel.noaa.gov) or Nancy Soreide -(nns@pmel.noaa.gov). - -MEXNC and SNCTOOLS {#MEXNC} ------------------------------------------- - -John Evans of Rutgers University maintains MEXNC and developed SNCTOOLS. -[MEXNC](http://mexcdf.sourceforge.net/) is a mexfile interface to NetCDF -files for MATLAB that has roughly a one-to-one equivalence with the C -API for netCDF. -[SNCTOOLS](http://mexcdf.sourceforge.net/tutorial/index.html) is a set -of higher-level m-files that sit atop MEXNC, shielding the user from -such low level netCDF details as file IDs, variable IDs, and dimension -IDs. The general philosophy behind SNCTOOLS is providing the ability to -read and write data without trying to invent a new syntax. - -Mirone (Windows MATLAB-based display) {#Mirone} --------------------------------------------------------------- - -Joaquim Luis of Universidade do Algarve has developed -[Mirone](http://w3.ualg.pt/~jluis/mirone/), a Windows MATLAB-based -framework tool that allows the display and manipulation of a large -number of grid/images formats through its interface with the -[GDAL](http://remotesensing.org/gdal/) library. Its main purpose is to -provide users with an easy-to-use graphical interface to manipulate -[GMT](http://gmt.soest.hawaii.edu/) grids. In addition it offers a wide -range of tools dedicated to topics in the earth sciences, including -tools for multibeam mission planning, elastic deformation studies, -tsunami propagation modeling, earth magnetic field computations and -magnetic Parker inversions, Euler rotations and poles computations, -plate tectonic reconstructions, and seismicity and focal mechanism -plotting. The high quality mapping and cartographic capabilities for -which GMT is renowned is guaranteed through Mirone's ability to -automatically generate GMT cshell scripts and dos batch files. - -Although Mirone is written in MATLAB, a stand-alone version to run under -Windows is also provided. Regrettably this version is not as efficient -as the native MATLAB code but provides a solution for users that don't -have MATLAB. - -Also see\ - J. F. Luis. Mirone: A multi-purpose tool for exploring grid data. -Computers & Geosciences, 33, 31-41, 2007. - -ncBrowse {#ncBrowse} ------------------------------------ - -Donald Denbo of NOAA's Pacific Marine Environmental Laboratory has -developed and made available -[ncBrowse](http://www.epic.noaa.gov/java/ncBrowse), a Java application -(JDK1.2) that provides flexible, interactive graphical displays of data -and attributes from a wide range of netCDF data file conventions. -Features include: - -- Designed to work with arbitrary netCDF files. -- Browses file using the EPIC and COARDS conventions. -- Provides a "tree" view of the netCDF file. -- Handles character variables. -- Handles dimensions without an associated variable. -- Uses sgt graphics to perform 1 and 2 dimensional cuts through data. -- Save to file single variable as a "cdl" text file. -- InstallAnywhere scripts for UNIX, Win32, and MacOS. -- Currently uses Java 2 and Swing. - -ncBrowse will run on any UNIX or Windows machine with a Java 2 (JDK1.2) -virtual machine installed. Automated installation scripts are available -for Windows and UNIX. Additional information on ncBrowse and download -instructions are available at . - -Questions and suggestions should be directed to -\<[dwd@pmel.noaa.gov\>](mailto:dwd@pmel.noaa.gov). If you have problems -reading a netCDF file with ncBrowse, please send him a copy of the file -and he'll get ncBrowse to read it! - -nccmp {#nccmp} ------------------------------ - -Remik Ziemlinski of the NOAA Geophysical Fluid Dynamics Laboratory has -developed [nccmp](http://nccmp.sourceforge.net/), a tool to compare two -netCDF files. It can use MPI, include/exclude specific variables or -metadata and operates quickly. Highly recommended for regression testing -with large datasets. See the Web site -for more information. - -NCL {#NCL} -------------------------- - -The [NCAR Command Language (NCL)](http://www.ncl.ucar.edu/) is an -intepreted programming language for scientific data analysis and -visualization developed and maintained in NCAR's [Computational and -Information Systems Laboratory](http://www.cisl.ucar.edu/). - -NCL has many features common to modern programming languages, including -types, variables, operators, expressions, conditional statements, loops, -and functions and procedures. NCL also has features that are not found -in other programming languages, including those that handle the -manipulation of metadata, the configuration of visualizations, the -import of data from a variety of data formats, and an algebra that -supports array operations. - -NCL has robust file input and output capabilities. It allows different -datasets of different formats (netCDF, netCDF-4 classic, HDF4, HDF4-EOS, -GRIB-1, and GRIB-2) to be imported into one uniform and consistent data -manipulation environment, which internally is the netCDF data format. -NCL doesn't place any restrictions or conventions on the organization of -input netCDF files. - -NCL comes with many useful built-in functions and procedures for -processing and manipulating data. There are over 600 functions and -procedures that include routines for use specifically with climate and -model data, empirical orthogonal functions, Fourier coefficients, -wavelets, singular value decomposition, 1-, 2-, and 3-dimensional -interpolation, approximation, and regridding, and computer analysis of -scalar and vector global geophysical quantities. - -The visualizations are publication-quality and highly customizable, with -hundreds of options available for tweaking the looks of your graphics. -NCL can generate contours, XY plots, vectors, streamlines, and can -overlay these plots on many different map projections. There are also -specialized functions for generating histograms, wind roses, meteograms, -skew-T plots, weather maps. - -Included with the software are two command line tools: "ncl\_convert2nc" -for converting GRIB-1/2 or HDF files to netCDF files, and -"ncl\_filedump" which will dump the contents of a file format that NCL -recognizes (netCDF, GRIB-1/2, HDF, etc). - -NCL is available under an open source license or in binary form for -several popular UNIX platforms, including (but not limited to) Linux, -MacOSX, and Windows/Cygwin. - -Documentation and additional information on NCL are available from the -[NCL website](http://www.ncl.ucar.edu/), which contains hundreds of -[application examples](http://www.ncl.ucar.edu/Applications/) for one to -download. You can also contact Mary Haley, at for more -information. - -NCO {#NCO} -------------------------- - -[NCO](http://nco.sourceforge.net) (netCDF operators) is a package of -command line operators that work on generic netCDF or HDF4 files: -- ncap2 - arithmetic processor -- ncatted - attribute editor -- ncbo - binary operator -- ncdiff - differencer -- ncea - ensemble averager -- ncecat - ensemble concatenator -- ncflint - file interpolator -- ncks - kitchen sink (extract, cut, paste, print data) -- ncpdq - permute dimensions quickly -- ncra - running averager -- ncrcat - record concatenator -- ncrename - renamer -- ncwa - weighted averager - -All operators may now be [OPeNDAP](http://www.opendap.org) clients. OPeNDAP -enables network transparent data access to any OPeNDAP server. Thus -OPeNDAP-enabled NCO can operate on remote files accessible through any -OPeNDAP server without transferring the files. Only the required data -(e.g., the variable or hyperslab specified) are transferred. - -The source code is freely available from the [NCO home -page](http://nco.sourceforge.net/), as is the NCO User's Guide. - -For more information, contact the author, Charlie Zender. - -ncregrid {#ncregrid} ------------------------------------ - -Patrick Jöckel of the Max Planck Institute for Chemistry has developed -**ncregrid**, a tool (written in FORTRAN-90) for data transfer of -gridded 2- and 3-dimensional (spatial) geophysical/geochemical scalar -fields between grids of different resolutions. The algorithm handles -data on rectangular latitude/longitude grids (not necessarily evenly -spaced) and vertical pressure hybrid grids of arbitrary resolution. The -input/output data format is netCDF. ncregrid is freely available without -any warranty under the GNU public license (GPL). ncregrid can be used as -a "stand-alone" program, and/or linked as an interface to a model, in -order to re-grid automatically the input from an arbitrary grid space -onto the required grid resolution. - -More information is available on the web-page: -. - -nctoolbox (a MATLAB common data model interface) {#nctoolbox} ----------------------------------------------------------------------------- - -[nctoolbox](http://nctoolbox.github.io/nctoolbox/) is a MATLAB interface -that provides read-only access to [Common Data -Model](/software/netcdf-java/CDM/index.html) datasets. Under the hood, -nctoolbox uses Unidata's NetCDF-Java as the data access layer. This -allows nctoolbox to access to netCDF, OPeNDAP, HDF5, GRIB, GRIB2, HDF4, -and many (15+) other file formats and services using the same API. It -works with MATLAB 2008a and later. The nctoolbox software was developed -by Brian Schlining (MBARI), Rich Signell (USGS), Sachin Kumar Bhate -(freelance), and Alex Crosby (RPS/ASA). - -ncdx {#ncdx} ---------------------------- - -Patrick Jöckel of the Max Planck Institute for Chemistry has developed -**ncdx**, a tool (written in FORTRAN-90) that scans a netCDF file and -makes it [OpenDX](#OpenDX) compliant. ncdx is freely available without -any warranty under the GNU public license (GPL). More information is -available on the web-page: -. - -ncensemble {#ncensemble} ---------------------------------------- - -Alan Iwi, of Rutherford Appleton Laboratory, offers this command line -ensemble statistics utility. More information is available on the -web-page: . - -ncview {#ncview} -------------------------------- - -[Ncview](http://meteora.ucsd.edu/~pierce/ncview_home_page.html) is a -visual browser for netCDF files. Typically you would use ncview to get a -quick and easy, push-button look at your netCDF files. You can view -simple movies of the data, view along various dimensions, take a look at -the actual data values, change color maps, invert the data, etc. It runs -on UNIX platforms under X11, R4 or higher. For more information, check -out the [README](http://meteora.ucsd.edu/~pierce/docs/ncview.README) -file; you can also see a representative [screen -image](http://meteora.ucsd.edu/~pierce/docs/ncview.gif) (GIF, 66K) of -ncview in action. -The source may be downloaded from . -For more information, please contact the author, David W. Pierce at -. - -netcdf4-js {#netcdf4-js} -------------------------------- -[netcdf4-js](https://www.npmjs.com/package/netcdf4) is a NodeJS addon for reading and writing the files in the Network Common Data Form (NetCDF) version <= 4, built upon the C-library for netcdf. It isavailable from npmjs at the link above, or directly from the [GitHub Repository](https://github.com/swillner/netcdf4-js). - -NetCDF Toolbox for MATLAB-5 {#matlab5} ----------------------------------------------------- - -The [NetCDF Toolbox for MATLAB-5](http://mexcdf.sourceforge.net/), -originally developed by Charles R. Denham, combined netCDF-3 with -[MATLAB](http://www.mathworks.com/products/matlab/) to form an interface -that used MATLAB operator-syntax for arithmetic, logical, and -subscripting operations on netCDF entities. The NetCDF Toolbox is in -bug-fix-only mode, and is maintained by John.G.Evans.NE@gmail.com, on -the [MEXNC, SNCTOOLS, and the NetCDF Toolbox](http://mexcdf.sf.net) web -page. - -ncvtk {#ncvtk} ------------------------------ - -[Ncvtk](http://ncvtk.sourceforge.net/) is a program for exploring -planetary data stored in a NetCDF file. The NetCDF file should loosely -follow the [CF metadata -conventions](http://www.cgd.ucar.edu/cms/eaton/cf-metadata/). - -Ncvtk was designed from the ground up with the aim of offering a high -degree of interactivity to scientists who have a need to explore -structured, three-dimensional, time-dependent climate data on the -sphere. A graphical user interface allows users to interact with their -data via color/transparency/contour/vector plots, apply vertical slices, -probe data, apply an external sun light, overlay hydrographic and -geopolitical data, rotate, zoom, etc. with minimal fuss. - -Ncvtk is written in python and is based on the [Visualization Toolkit -(VTK)](http://public.kitware.com/VTK/). Like python and VTK, Ncvtk is -highly portable and known to run on Windows and Linux (i386, ia64, -EMT64) platforms. More information about Ncvtk is available at -. - -Ivan Shmakov's netcdf tools {#netcdf_tools} ----------------------------------------------------------- - -The NetCDF tools is a free software package consisting of a few tools -operating on NetCDF and, by utilizing the compatibility API, HDF4 files, -which are intended to be usable from Shell scripts. - -The currently packaged tools are: - -- a couple of simple shell wrappers over the respective NetCDF - functions (ncattget and ncattput); -- a more sophisticated ncget tool. - -The ncget tool implements functionalilty that is similar to hdp dumpsds -(for NetCDF, which lacks such a tool), or complements it in the case of -HDF4. It can be seen as a complement to the ncdump tool (included in -both the NetCDF and HDF4 distributions) as well. - -This tool allows a selected part of a NetCDF variable or an HDF4 -scientific data set (SDS) to be extracted in either an ASCII or binary -form, applying the transformation specified by the usual scale\_factor -and add\_offset attributes. It allows one to feed the data contained in -NetCDF variables (or HDF4 SDS) to the tools designed to operate on -either ASCII (text) or raw (binary) data. - -This version of the package is the first one to be announced to the -public. It has some known bugs and limitations, but it's proved to be -quite usable. A [project -page](http://freshmeat.net/projects/netcdf-tools) on freshmeat.net. The -[source](http://waterlily.siamics.net/~ivan/src/netcdf-tools-0.1-rc1.tar.gz) -is also available. - -netcdf4excel (add-in for MS Excel) {#netcdf4excel} ------------------------------------------------------------------ - -Alexander Bruhns has developed [a netCDF add-in written in Visual Basic -for MS Excel](http://code.google.com/p/netcdf4excel/). This add-in -simplifies the use of NetCDF data in Excel, providing a ready to use -solution for manipulating this type of data. - -For developers, the open-source (GPL V3 license) can be downloaded -directly or checked out with Mercurial. - -The add-in is written in VBA 6.0 (so it won't work with Office 2010 64 -bits) and is designed for Excel 2007 running with the Microsoft Windows -operating system. It supports opening netCDF classic format data with -Excel for read or write access. - -More details are available on the [netcdf4excel web -site](http://code.google.com/p/netcdf4excel/). - -NetCDF95 alternative Fortran API {#netcdf95} ------------------------------------------------------------ - -Lionel Guez has developed and made feely available -[NetCDF95](http://web.lmd.jussieu.fr/~lglmd/NetCDF95), a new alternative -Fortran interface to the NetCDF library. Compared to the -Unidata-provided Fortran 90 netCDF interface, the NetCDF95 interface is -meant to be easier to use and more secure. - -Objective-C API {#Objective-C} ---------------------------------------------- - -Tom Moore has an Objective-C API, available here: -[www.paleoterra.com/software](http://www.paleoterra.com/software). The -netCDF Framework is an open source (Argonne Open Source License) MacOSX -application framework that provides an Objective-C interface to the NCAR -netCDF library version 3. The framework is available both as source code -and universal compiles (works on both PPC and Intel macs). The source -code has also been compiled by users for the GNUStep environment. -Version 2 of the framework will provide classes for accessing multiple -netCDF files, working with in-memory data slabs using standard notation, -and some support for multithreading. - -### Mark Tracy's Objective-C API - -Mark Tracy has written [NetcdfStep](http://www.mt-se.com/nc_1.html), an -Objective-C API for netCDF that uses Objective-C Foundation Classes. - -NetcdfStep is framework for using the netCDF library in object-oriented -programming with Objective-C. It now supports the full functionality of -netCDF 3.6.2. - -A [complete Mac OS X -distribution](http://www.mt-se.com/pub/NetcdfStep-1.0.2.zip) including -pre-built static library and [online -documentation](http://www.mt-se.com/netcdfstep_doc/) are available. -Applications linked to this framework have no external dependencies -(other than Mac OS X itself). A [source-code only -distribution](http://www.mt-se.com/pub/NetcdfStep-GNUstep-0.6.1.tar.gz) -synced up to version 0.6.1 is available for GNUstep for use on Linux and -other Unix platforms. - -Octave interface {#NCMEX} ----------------------------------------- - -The ARM Program has contributed NCMEX for Octave, a port of Chuck -Denham's MATLAB NCMEX to [Octave](http://www.octave.org). The calling -syntax is identical, so scripts using NCMEX in MATLAB should in theory -be portable to Octave. In order to build NCMEX, a compiled C NetCDF -library must already be installed. - -In addition to the base NetCDF library interface, this package includes -a simple toolbox to automate the reading and writing of NetCDf files -within Octave using NCMEX. These tools as well as the source for NCMEX -are available from - (NOTE: this .tar -file contains other Octave extension functions besides NCMEX.) - -Also see [Octcdf](http://ocgmod1.marine.usf.edu/octcdf/), a netCDF -toolbox for Octave. - -For installation instructions, see the README file inside the .tar file. - -Octave interface (Barth) {#Octave} -------------------------------------------------- - -Alexander Barth has contributed the following: - -Octcdf is a netCDF toolbox for [Octave](http://www.octave.org/) which -uses the same operator syntax as the [matlab netCDF -toolbox](http://mexcdf.sourceforge.net/netcdf_toolbox.html) of Charles -R. Denham. NetCDF dimensions, attributes and variables are Octave -objects and can be accessed, sliced and changed just as regular -variables. Unlike most netCDF toolboxes for matlab, it does not depend -on the NCMEX wrapper around the netCDF interface. This octave toolbox is -written in C++ calling directly the netCDF library. The octcdf toolbox -can also be used to download data from an OpenDAP server. The octcdf -source code is available at -. -It was also included in the Octave Repository -[octave-forge](http://octave.sourceforge.net/). - -OPeNDAP (formerly DODS) {#OPeNDAP} -------------------------------------------------- - -The [OPeNDAP](http://opendap.org/) (formerly known as DODS) is an -Open-source Project for a Network Data Access Protocol that makes local -data and subsets of local data accessible to remote locations -independent of the local storage format. OPeNDAP also provides tools for -transforming existing applications into OPeNDAP clients, enabling them -to remotely access OPeNDAP served data. OPeNDAP is based on existing -data access tools; rather than developing a self contained system, it -makes extensive use of existing data access APIs. - -OPeNDAP can be used to make netCDF data files available over the -Internet and it can also be used to adapt existing software which use -the netCDF API (by re-linking) to read data served by an OPeNDAP data -server. In principle, any program written using netCDF can be adapted to -read data from an OPeNDAP server - in other words any program which uses -netCDF can become a client in the OPeNDAP client-server system. Included -in the source and binary distributions are two freely available programs -that have already been modified (re-linked). - -With a client program accessing data from a netCDF server, it is -possible to access a small subset of a large dataset over the Internet -without copying the entire dataset (as you would have to do with FTP or -AFS). The client can see changes to the netCDF dataset, e.g. when new -records are added (which would not be possible with FTP). Finally, the -client can also access cross-sections of variable data without paging -large amounts of data across the network (as you would have to do with -NFS, for example). - -OPeNDAP software is freely available in both source form or binary form -for selected platforms. - -OpenDX {#OpenDX} -------------------------------- - -[OpenDX](http://www.opendx.org/about.html) (formerly IBM Data Explorer, -also known as simply DX) is a general-purpose software package for data -visualization and analysis. It employs a data-flow driven client-server -execution model and provides a graphical program editor that allows the -user to create a visualization using a point and click interface. -DX runs on 7 major UNIX platforms as well as Windows 95/NT and is -designed to take full advantage of multi-processor systems from IBM, SGI -and Sun. - -DX is built upon an internal data model, which describes and provides -uniform access services for any data brought into, generated by, or -exported from the software. This data model supports a number of -different classes of scientific data, which can be described by their -shape (size and number of dimensions), rank (e.g., scalar, vector, -tensor), type (float, integer, byte, etc. or real, complex, quaternion), -where the data are located in space (positions), how the locations are -related to each other (connections), aggregates or groups (e.g., -hierarchies, series, composites, multizone grids, etc.). It also -supports those entities required for graphics and imaging operations -within the context of Data Explorer. Regular and irregular, deformed or -curvilinear, structured and unstructured data as well as "missing" or -invalid data are supported. - -The details of the data model are hidden at the user level. As a result -DX operations or modules are polymorphic and appear typeless. The DX -Import module, which reads data for use within Data Explorer directly -utilizes data in netCDF as well as other formats (e.g., HDF, CDF). One -or more variables may be selected as well as step(s) of a time series. -Data in conventional netCDFs are directly imported. Since the DX data -model is more comprehensive than the netCDF data model, a methodology to -extend netCDF via attribute conventions (e.g., for unstructured meshes, -non-scalar data and hierarchies) for use with Data Explorer is -available. - -DX supports a number of realization techniques for generating renderable -geometry from data. These include color and opacity mapping (e.g., for -surface and volume rendering), contours and isosurfaces, histograms, -two-dimensional and three-dimensional plotting, surface deformation, -etc. for scalar data. For vector data, arrow plots, streamlines, -streaklines, etc. are provided. Realizations may be annotated with -ribbons, tubes, axes, glyphs, text and display of data locations, meshes -and boundaries. Data probing, picking, arbitrary surface and volume -sampling, and arbitrary cutting/mapping planes are supported. - -DX supports a number of non-graphical functions such as point-wise -mathematical expressions (e.g., arithmetic, transcendental, boolean, -type conversion, etc.), univariate statistics and image processing -(e.g., transformation, filter, warp, edge detection, convolution, -equalization, blending, morphological operations, etc.). Field/vector -operations such as divergence, gradient and curl, dot and cross -products, etc. are provided. Non-gridded or scattered data may be -interpolated to an arbitrary grid or triangulated, depending on the -analysis requirements. The length, area or volume of various geometries -may also be computed. Tools for data manipulation such as removal of -data points, subsetting by position, sub/supersampling, grid -construction, mapping, interpolation, regridding, transposition, etc. -are available. - -Tools for doing cartographic projections and registration as well as -earth, space and environmental sciences examples are available at -Cornell University via info.tc.cornell.edu. Also see the [ncdx](#ncdx) -tool for making netCDF files OpenDX compliant. - -Panoply {#Panoply} ---------------------------------- - -[Panoply](http://www.giss.nasa.gov/tools/panoply/) is an application -that plots geo-gridded and other arrays from netCDF, HDF, GRIB, and -other datasets. Features include: - -- Slice and plot geo-gridded latitude-longitude, latitude-vertical, - longitude-vertical, or time-latitude arrays from larger - multidimensional variables. -- Two arrays may be combined in one plot by differencing, summing, or - averaging. -- Lon-lat data may be plotted as global maps (using any of over 75 map - projections) or as zonal average plots. -- Overlay continent outlines or masks on lon-lat plots. -- Use your favorite CPT, GGR, PAL, or ACT color table for scale - colorbar. -- Save plots to disk in GIF, JPEG, PNG or TIFF bitmap images or as PDF - or PostScript graphics files. -- Export lon-lat map plots in KMZ format. -- Export animations as AVI or MOV video or as a collection of - invididual frame images. -- Explore remote THREDDS and OpenDAP catalogs and open datasets served - from them. - -Panoply requires that your computer have a Java SE 6 runtime -environment, or better, installed. - -Panoply is developed at the NASA Goddard Institute for Space Studies. -Questions and suggestions should be directed to [Dr. Robert B. -Schmunk](http://www.giss.nasa.gov/staff/rschmunk.html). - -Parallel-NetCDF {#Parallel-NetCDF} -------------------------------------------------- - -A group of researchers at Northwestern University and Argonne National -Laboratory (Jianwei Li, Wei-keng Liao, Alok Choudhary, Robert Ross, -Rajeev Thakur, William Gropp, and Rob Latham) have designed and -implemented a new [parallel interface for writing and reading netCDF -data](http://www.mcs.anl.gov/parallel-netcdf/), tailored for use on high -performance platforms with parallel I/O. The implementation builds on -the MPI-IO interface, providing portability to most platforms in use and -allowing users to leverage the many optimizations built into MPI-IO -implementations. Testing so far has been on Linux platforms with ROMIO -and IBM SP machines using IBM's MPI. - -Documentation and code for Parallel-NetCDF is now available for testing. -Although a few interfaces are not implemented yet, the current -implementation is complete enough to provide significant I/O performance -improvements on parallel platforms, as described in a [technical -report](ftp://info.mcs.anl.gov/pub/tech_reports/reports/P1048.pdf). -Users are invited to test Parallel-NetCDF in their applications. - -Paraview and vtkCSCSNetCDF {#Paraview} ------------------------------------------------------ - - - -ParaView is an application designed with the need to visualize large -data sets in mind. The goals of the ParaView project include the -following: - -- Develop an open-source, multi-platform visualization application. -- Support distributed computation models to process large data sets. -- Create an open, flexible, and intuitive user interface. -- Develop an extensible architecture based on open standards. - -ParaView runs on distributed and shared memory parallel as well as -single processor systems and has been successfully tested on Windows, -Linux and various Unix workstations and clusters. Under the hood, -ParaView uses the Visualization Toolkit as the data processing and -rendering engine and has a user interface written using a unique blend -of Tcl/Tk and C++. - -A vtk/ParaView reader for netCDF files can be found here. - -Perl interfaces {#Perl} --------------------------------------- - -There are two netCDF interfaces for Perl: -- [PDL::NetCDF](http://search.cpan.org/~dhunt/PDL-NetCDF-4.05/netcdf.pd), - Doug Hunt's perl interface which uses the PDL (perl data language) - extension. -- [NetCDFPerl](/software/netcdf-perl/), Steve Emmerson's extension - module, based on version 2 of the netCDF package. Uses perl lists - for representing netCDF variables. - -PolyPaint+ {#PolyPaint} ---------------------------------------- - -[PolyPaint+](http://lasp.colorado.edu/polypaint/home.html) is an -interactive scientific visualization tool that displays complex -structures within three-dimensional data fields. It provides both color -shaded-surface display and simple volumetric rendering in either index -or true color. For shaded surface rendering, the PolyPaint+ routines -first compute the polygon set that describes a desired surface within -the 3D data volume. These polygons are then rendered as continuously -shaded surfaces. PolyPaint+ contains a wide variety of options that -control lighting, viewing, and shading. Objects rendered volumetrically -may be viewed along with shaded surfaces. Additional data sets can be -overlaid on shaded surfaces by color coding the data according to a -specified color ramp. 3D visualizations can be viewed in stereo for -added depth perspective. -Currently supported 3D visualizations are the following: - -- Shaded isosurface -- Transparent contour shells or isosurfaces at varying levels -- Volumetric or density plot -- Planes -- Contour ribbons -- Topographic surface from 2D geographic data sets - -3D data volumes may be sliced in the X, Y, or Z plane using an -interactive cutting plane. A cross section of the data volume can be -viewed in a 2D window as a 2D contour plot, a vector plot, a raster -image or a combination of these options superimposed. Map outlines can -be used as a background for 2D cross section plots of geographic data. -All data is projected according to the coordinates specified by the user -for the cross section window. - -The user interface provides direct manipulation tools for specifying the -eye position, center of view, light sources, and color ramps. Subsetting -of data can be done easily by selecting the data by index or geographic -coordinate. On-line contextual help provides easy access to more detail -about the software. Tutorials which range from very simple -visualizations to complex combinations of data sets provide the user -with a quick learning tool. - -Currently PolyPaint+ accepts only data which is in the NetCDF file -format. A file conversion utility which converts from raw binary data to -netCDf is a part of the application. - -PolyPaint+ is a joint effort of the University of Colorado and NCAR -(National Center for Atmospheric Research) funded by the NASA AISRP -program. A beta version of PolyPaint+ is currently available free of -charge using FTP or for a nominal fee which would cover tape -distribution. A license agreement must be signed in order to use it. - -You may order by... - -- TELEPHONE : 303-492-7289 (Margi Klemp) : 303-497-8159 (Bill Boyd) -- U.S. MAIL : - - Margi Klemp - University of Colorado / LASP - 1234 Innovation Dr. - Boulder, CO 80303 - USA - -- E-MAIL : margi@aries.colorado.edu - -Pomegranate {#Pomegranate} ------------------------------------------ - -The P9E Team at NASA JPL has developed -[Pomegranate](http://pomegranate.jpl.nasa.gov/), a python application -that "webifies" science data files. Supported formats include netCDF, -HDF4, HDF5, GRIB and FITS. - -Pomegranate can be installed on web servers as either a WSGI or CGI -application to provide webification (w10n) services. To learn more about -w10n of science data files, please visit . A -brief [help](http://pomegranate.jpl.nasa.gov/test/help.txt) document -describes how to use the [demo -directory](http://pomegranate.jpl.nasa.gov/test) to browse or download -metadata or data in netCDF, JSON, or other formats by clicking on data -folder and document icons. - -Pomegranate can also be used as a standalone library or command line -application. This greatly simplifies the retrieval of metadata and data -from files in supported formats. - -Pomegranate is open source software and can be downloaded from -. - -PyNGL and PyNIO {#PyNGL} ---------------------------------------- - -NCAR's Computational and Information Systems Laboratory has developed -[PyNGL](http://www.pyngl.ucar.edu/), a python package for scientific -visualization and data analysis and -[PyNIO](http://www.pyngl.ucar.edu/Nio.shtml), a Python package -supporting access to a variety of data formats using an interface -modelled on netCDF. - -Python interfaces {#Python} ------------------------------------------- - -Python is an interpreted, object-oriented language that is supported on -a wide range of hardware and operating systems. Python information and -sources can be obtained from . There are now -several netCDF interfaces for Python. - -Jeff Whitaker of the NOAA Earth System Research Lab has developed a -netCDF-4 module for python: . -Most new features of netCDF-4 are implemented, such as multiple -unlimited dimensions, groups and zlib data compression. All the new -numeric data types (such as 64-bit and unsigned integer types) are -implemented. Compound and variable length (vlen) data types are -supported, but the enum and opaque data types are not. Mixtures of -compound and vlen data types (compound types containing vlens, and vlens -containing compound types) are not supported. - -[xray](#xray) is a higher-level interface that uses netcdf4-python -internally to implement a pandas-like package for N-D labelled arrays -for scientific data. - -André Gosselin of the Institut Maurice-Lamontagne, Péches & Océans -Canada, has implemented pycdf, a new Python interface to the netCDF -library. It is available from , -where you will find the install files, installation instructions, -extensive documentation in text and html format, and examples. pycdf -requires the Numeric python package, and installs through the simple -"python setyp.py install" command. - -Bill Noon (noon@snow.cit.cornell.edu) has implemented another netCDF -Python module that allows easy creation, access, and browsing of netCDF -data. The bindings also use the [udunits library](/software/udunits/) to -do unit conversions. More information and source for Noon's Python -netCDF module are available from -. - -The package from Konrad Hinsen has been integrated into his -[ScientificPython](https://sourcesup.cru.fr/projects/scientific-py/) -package. - -Dave Brown of NCAR's Computational and Information Systems Laboratory -has developed [PyNIO](http://www.pyngl.ucar.edu/Nio.shtml), a Python -package that allows read and/or write access to a variety of data -formats using an interface modelled on netCDF. Currently supported -formats include netCDF, HDF4, GRIB1 and GRIB2 (read only), and HDF-EOS 2 -Grid and Swath data (read only). - -Vicente Galiano of Miguel Hernandez University has developed a Python -interface to PnetCDF. This Python's package called "PyPnetCDF" allows -access to NetCDF files using MPI and the library pnetCDF developed by -http://www.mcs.anl.gov/parallel-netcdf/. The tools are very similar to -Konrad Hinsen's NetCDF package to Python but can read and write in a -parallel way. For more information, see: -. - -Pupynere (PUre PYthon NEtcdf REader) Roberto -De Almeida has developed -[pupynere](http://pypi.python.org/pypi/pupynere/), a PUre PYthon NEtcdf -REader that allows read-access to netCDF files using the same syntax as -the Scientific.IO.NetCDF Python module. Even though it's written in -Python, the module is up to 40% faster than Scientific.IO.NetCDF and -pynetcdf. - -R interface {#R} -------------------------------- - -The R Project for Statistical Computing has developed -[R](http://www.R-project.org/), a language and environment for -statistical computing and graphics. It provides a wide variety of -statistical and graphical techniques, including linear and nonlinear -modelling, statistical tests, time series analysis, classification, and -clustering. - -David Pierce has contributed the [ncdf4 -package](http://cran.r-project.org/web/packages/ncdf4/index.html) for -reading netCDF data into R and for creating new netCDF dimensions, -variables, and files, or manipulating existing netCDF files from R. - -Pavel Michna has contributed another package, -[RNetCDF](http://cran.r-project.org/web/packages/RNetCDF/index.html), -that also provides access to netCDF data and to udunits calendar -functions from R. - -Robert Hijmans (with additional contributors) has created the [R raster -package](http://cran.r-project.org/web/packages/raster/index.html) for -geographic data analysis and modeling. The raster package can be used -for reading, writing, manipulating, analyzing and modeling gridded -spatial data. The package is especially useful for large datasets that -don't fit into memory, because data is processed in chunks. See -[Introduction to the 'raster' -package](http://cran.r-project.org/web/packages/raster/vignettes/Raster.pdf) -for more information. - -Quantum GIS (QGIS) {#QGIS} ------------------------------------------ - -[Quantum GIS](http://www.qgis.org/) (QGIS) is an Open Source Geographic Information System (GIS) licensed under the GNU General Public License. QGIS is an official project of the Open Source Geospatial Foundation (OSGeo). It runs on Linux, Unix, Mac OSX, and Windows and supports numerous vector, raster, and database formats and functionalities. QGIS supports a desktop, browser, server, and client for viewing, editing, analysis, serving, and accessing data. Its server complies with the OGC WMS 1.3 standard. In addition to PostGIS and SpatiaLite formats, it can access data in vector formats supported by the OGR library as well as most raster formats supported by the GDAL library, including netCDF. For a more detailed list of features of the QGIS desktop, browser, server, and client, see the [QGIS features page](http://www.qgis.org/en/about-qgis/features.html). - -QGIS also supports displaying netCDF using the [Crayfish plugin in QGIS](http://www.lutraconsulting.co.uk/blog/2016/04/14/crayfish-2-2/). The project repository may be found [here](https://github.com/lutraconsulting/qgis-crayfish-plugin). - -Ruby interface {#Ruby} -------------------------------------- - -A group at the Research Institute for Sustainable Humanosphere (RISH) of -Kyoto University has developed a [netCDF interface for -Ruby](http://www.gfd-dennou.org/arch/ruby/products/ruby-netcdf/), an -interpreted, object-oriented scripting language. This interface is -intended to cover all the functionality of the C library for netCDF. -Also available are combination functions such as iterators (which offer -abstract ways to scan files and variables). Numeric arrays are handled -by the "NArray" multi-dimensional array class, which is becoming the de -facto standard multi-dimensional array for Ruby. See also the Ruby-based -[GPhys software and Gfdnavi tool](#Gfdnavi) for accessing GRIB, GrADS, -and netCDF data uniformly. - -More information about Ruby is available from the [Ruby web -site](http://www.ruby-lang.org/). - -Scientific DataSet (SDS) Library {#SDS} ------------------------------------------------------- - -The [Scientific DataSet Library and Tools -project](http://sds.codeplex.com), developed jointly by Microsoft -Research Cambridge and Moscow State University, is aimed at manipulation -and visualization of multidimensional data sets. - -Scientific DataSet (or SDS in short) is a .NET class library for -manipulating scientific data and their metadata. SDS provides a unified -API for convenient access to various data storages. Three types of -storages are supported by the first release: NetCDF files, CSV text -files and volatile in-memory datasets. SDS uses native NetCDF library -built from version 4.0.1 both for 32 and 64-bit Windows platforms. New -storage types can be added to SDS infractructure as plugins. Support for -accessing TIFF image files from SDS as 2D arrays will be available soon -as a separate CodePlex project. - -Three applications are built on top of SDS: - -- sds command line utility. It allows users to examine data set - schema, copy data sets, modify their metadata. -- DataSetViewer application for visualization of data sets. - DataSetViewer is both a standalone application and Windows - Presentation Foundation Control that can be built into your - applications. DataSetViewer has support for interactive slicing of - multidimensional data along any dimension. -- DataSetEditor add-in for Microsoft Office Excel. DataSetEditor - provides ability to view and modify the contents of any data set as - Excel worksheets. - -You can read the Getting Started document at - -for a more detailed introduction to the Scientific DataSet software. A -Windows Installation package for SDS binaries along with DataSet Viewer -and DataSet Editor are available also. You can also build core class -libraries and the sds utility under Mono. You may use, copy, and -reproduce this software for any non-commercial purpose. For further -details see license at . - -The SDS project is in beta phase and keeps evolving. You are welcome to -join discussions or report issues at the CodePlex site: -. - -sciNetCDF {#scinetcdf} -------------------------------------------------------------- -[sciNetCDF](https://atoms.scilab.org/toolboxes/scinetcdf) - -In the context of the IASI-NG project, CNES is responsible for the development -of a Scilab/NetCDF4 interface, which CNES wanted to make available to the entire -scientific community. - -The toolbox sciNetCDF is the result of this collaboration. It can read and write -NetCDF files of any version (version 4 of the format is used by default for -writing). - -The toolbox provides high level functions to read/write NetCDF files natively in -Scilab in a friendly manner (data is converted automatically from Scilab to -NetCDF and inversely). -These functions are: -- nccreate -- ncwrite -- ncread -- ncwriteatt -- ncreadatt -- ncdisp - -It provides also a low level interface to all the NetCDF C library functions - - -Apache Spatial Information System (SIS) {#SIS} -------------------------------------------------------------- - -[Apache Spatial Information System -(SIS)](https://builds.apache.org/job/sis-trunk/site/index.html) is a -Java library for developing geospatial applications. SIS enables -representation of coordinates for searching, data clustering, archiving, -or any other relevant spatial needs. The library is an implementation of -GeoAPI 3.0 interfaces and can be used for desktop or server -applications. - -SIS provides data structures for geographic data and associated metadata -along with methods to manipulate those data structures. The SIS metadata -module forms the base of the library and enables the creation of -metadata objects which comply with the ISO 19115 metadata model and -which can be read from or written to ISO 19139 compliant XML documents. -The SIS referencing module will enable the construction of geodetic data -structures for geospatial referencing based on the ISO 19111 model such -as axis, projection and coordinate reference system definitions, along -with the associated operations which enable the mathematical conversion -of coordinates between different systems of reference. The SIS storage -modules will provide a common approach to the reading and writing of -grid coverages applicable to simple imagery and multidimensional data -structures. - -SIS supports creating ISO 19115 metadata from metadata in a netCDF store -from a given file, URL, stream, or NetcdfFile object. SIS netCDF storage -is intended to be a bridge between NetCDF Climate and Forecast (CF) -conventions and ISO 19115 metadata. - -SIS is under development as an Apache project. Release 0.3 is currently -available for download. - -Tcl/Tk interfaces {#TclTk} ------------------------------------------- - -Dan Schmitt has developed [cdftcl](http://cnrit.tamu.edu/rsg/cdftcl/), a -[Tcl/Tk](http://www.scriptics.com/) interface for netCDF. It allows the -use of "wildcards" (\*) or ranges (1-4) in the subscript notation, and -use of name references instead of variable IDs. Contact dan@computer.org -for more information. - -Tcl-nap {#Tcl-nap} ---------------------------------- - -[Tcl-nap](http://tcl-nap.sourceforge.net) (n-dimensional array -processor) is a loadable extension of Tcl which provides a powerful and -efficient facility for processing data in the form of n-dimensional -arrays. It has been designed to provide an array-processing facility -with much of the functionality of languages such as -[APL](http://www.acm.org/sigapl/), Fortran-90, [IDL](#IDL), -[J](http://www.jsoftware.com/), [matlab](http://www.mathworks.com), and -[octave](http://www.octave.org/). - -Support is provided for data based on n-dimensional grids, where the -dimensions correspond to continuous spatial coordinates. There are -interfaces to the HDF and netCDF file formats commonly used for such -data, especially in Earth sciences such as Oceanography and Meteorology. - -The internal data structure is called a NAO (n-dimensional array object) -and contains similar information to that of HDF SDSs and netCDF -variables. - -Tcl-nap was developed as part of the [CSIRO CAPS -project](http://www.dar.csiro.au/rs/avhrr_processing_software.htm), but -can be loaded and used without the (satellite oriented) CAPS extension. - -Visual Basic and VB.net interfaces {#VB} -------------------------------------------------------- - -Carsten Wieczorrek has developed code in VB 6 to export chromatographic -data into the netcdf/ANDI format. The application writes netCDF files -that can be read by CHROMELEON, for example. For others interested in -programming with netcdf.dll from VB 6, see Wieczorrek's web page on -[netCDF and VB 6.0](http://www.mn-net.com/netcdf_vb6) and for VB.net, -see [netCDF and VB.net](http://www.mn-net.com/netcdf_vbnet). - -VisAD {#VisAD} ------------------------------ - -[VisAD](http://www.ssec.wisc.edu/~billh/visad.html) is a Java class -library for interactive and collaborative visualization and analysis of -numerical data. It combines: -- The use of pure Java for platform independence and to support data - sharing and real-time collaboration among geographically distributed - users. Support for distributed computing is integrated at the lowest - levels of the system using Java RMI distributed objects. -- A general mathematical data model that can be adapted to virtually - any numerical data, that supports data sharing among different - users, different data sources and different scientific disciplines, - and that provides transparent access to data independent of storage - format and location (i.e., memory, disk or remote). The data model - has been adapted to netCDF, FITS, HDF-EOS, McIDAS, Vis5D, GIF and - JPEG file formats. -- A general display model that supports interactive 3-D, data fusion, - multiple data views, direct manipulation, collaboration, and virtual - reality. The display model has been adapted to Java3D and Java2D and - used in an ImmersaDesk virtual reality display. -- Data analysis and computation integrated with visualization to - support computational steering and other complex interaction modes. -- Support for two distinct communities: developers who create domain- - specific systems based on VisAD, and users of those domain-specific - systems. VisAD is designed to support a wide variety of user - interfaces, ranging from simple data browser applets to complex - applications that allow groups of scientists to collaboratively - develop data analysis algorithms. -- Developer extensibility in as many ways as possible. - -VisAD was written by programmers at the [SSEC Visualization -Project](http://www.ssec.wisc.edu/~billh/vis.html) at the University of -Wisconsin-Madison [Space Science and Engineering -Center](http://www.ssec.wisc.edu/), and the [Unidata Program -Center](/index.html). - -WebWinds {#WebWinds} ------------------------------------ - -[WebWinds](http://www.openchannelsoftware.com/projects/WebWinds/) is a -free Java-based science visualization and analysis package. In addition -to several new analysis tools, the current fourth version does automatic -scripting. This allows - -1. a user to rapidly and automatically create and store a session, - either for his own use, or for use by a collaborator on another - machine; -2. a data provider to automatically create a specialized analysis - environment which can be downloaded (as a small script file) along - with a dataset from a Website; and -3. realtime collaboration or sharing of sessions over (even - low-bandwidth) networks, including the Internet. - -This scripting requires no knowledge of the scripting language syntax. -Several sample script files are included with the distribution. - -In addition, this version contains a capability to geo-reference some -data and to read ASCII data in tabular format. Also new is the ability -to output data in numerical form (e.g. NetCDF) and a context sensitive, -integrated help system. - -As with earlier versions, data in several different formats, including -NetCDF, can be read in easily from your local machine or from the Web. -In addition, most data can be subset or subsampled on load, making it -possible to visualize very large multidimensional and/or multispectral -datasets. The package includes several step-by-step examples. -Installation of the software (including Java) on the PC or Mac is a -process requiring one file to be downloaded and opened. If you need help -getting started, a remote tutorial is available once you've downloaded -the package. - -WebWinds is \`point and click' rather than language driven and it runs -well on Unix, Windows (95/98/NT) and Mac platforms. It currently -requires JDK 1.1. To download a copy of this release, go to - - -xray (Python N-D labelled arrays) {#xray} --------------------------------------------------------- - -[xray](http://xray.readthedocs.org/en/stable/index.html) is an open -source project and Python package that aims to bring the labeled data -power of [pandas](http://pandas.pydata.org/) to the physical sciences, -by providing N-dimensional variants of the core pandas data structures, -Series and DataFrame: the xray DataArray and Dataset. - -xray adopts the [Common Data -Model](http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/CDM) -for self-describing scientific data in widespread use in the Earth -sciences (e.g., netCDF and OPeNDAP): xray.Dataset is an in-memory -representation of a netCDF file. - -xray is being developed by Stephan Hoyer, Alex Kleeman, and [other -contributors](https://github.com/xray/xray/graphs/contributors). - -Zebra {#Zebra} ------------------------------ - -[Zebra](http://www.atd.ucar.edu/rdp/zebra.html) (formerly named Zeb) is -a system for data ingest, storage, integration and display, designed to -operate in both real time and postprocessing modes. Zebra was developed -by Jonathan Corbet and others in NCAR's [Research Data -Program](http://www.atd.ucar.edu/rdp/rdp_home.html). -Zebra's primary use is for the superpositioning of observational data -sets (such as those collected by satellite, radar, mesonet and aircraft) -and analysis products (such as model results, dual-Doppler synthesis or -algorithm output). Data may be overlaid on a variety of display types, -including constant altitude planes, vertical cross-sections, X-Y graphs, -Skew-T plots and time-height profiles. The fields for display, color -tables, contour intervals and various other display options are defined -using an icon based user-interface. This highly flexible system allows -scientific investigators to interactively superimpose and highlight -diverse data sets; thus aiding data interpretation. - -Data handling capabilities permit external analysis programs to be -easily linked with display and data storage processes. The data store -accepts incoming data, stores it on disk, and makes it available to -processes which need it. An application library is available for data -handling. The library functions allow data storage, retrieval and -queries using a single applications interface, regardless of the data's -source and organization. NetCDF data that conforms to Zebra conventions -is supported by this interface. - -Zebra is currently available to the university research community -through the NCAR/ATD Research Data Program. Email requests to -rdp-support@atd.ucar.edu. More information is on the web page -http://www.atd.ucar.edu/rdp/zebra.html. - ------------------------------------------------------------------------- - -User-Contributed Software {#user} -================================================ - -Unidata makes available a separate -[catalog](/software/netcdf/Contrib.html) to a -[directory](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/) of freely -available, user-contributed software and documentation related to the -netCDF library. This software may be retrieved by anonymous FTP. We -haven't necessarily used or tested this software; we make it available -"as is". - -The criteria for inclusion in the netcdf/contrib/ directory of -user-contributed software are: - -- General usefulness to a significant part of the netCDF community -- Small size -- Infrequent need for updates -- Free availability - ------------------------------------------------------------------------- - -Commercial or Licensed Packages {#commercial} -=============================== - -ASA ViewNcDap {#ViewNcDap} ------------------------------------------ - -Applied Science Associates, Inc. has made the ASA View NC/Dap -application freely available for -[download](http://www.asascience.com/downloads). ViewNcDap is a -stand-alone research-based tool (with included demonstration data) that -allows a user to visualize four dimensional NetCDF and OPeNDAP data. -ViewNcDap is a Windows application that includes temporal/time step -functionality for viewing animations of data that include temporal -information. The application may be used to visualize a variety of -time-varying geospatial scientific data in a simple map framework. It -handles CF conventions and includes some aliasing features that could -permit additional formats to be read. It should not be considered a GIS -system, but is used to quickly preview a variety of data on a simple -map. Data may also be filtered and saved to a local netCDF file. - -Avizo {#Avizo} ------------------------------ - -[Avizo](http://www.avizo3d.com/) software is a powerful tool for 3D data -visualization and analysis. It offers a comprehensive feature set that -addresses visualization, processing, analysis, communication and -presentation. [Avizo Green -Edition](http://www.vsg3d.com/vsg_prod_avizo_green.php) includes an -advanced set of features dedicated to climate, oceanography, -environmental or earth-mapped data. It provides high-level support for -the netCDF format, a dedicated Earth visualization module, and a set of -advanced geographical projections applicable to a wide range of fast 2D -and 3D data representations. - -For more information, see [www.avizo3d.com](http://www.avizo3d.com/). - -AVS {#AVS} -------------------------- - -[AVS](ftp://testavs.ncsc.org/avs/Info/WHAT_IS_AVS) (Application -Visualization System) is a visualization application software and -development environment. An AVS module has been written that allows -multi-dimensional netCDF data sets to read into AVS as uniform or -rectilinear field files. The AVS user can point and click to specify the -name of the variable in the selected netCDF file, as well as selecting -the hyperslab. If 1D coordinate variables exist (a variable that has the -same name as a dimension) then the coordinate variable will be used to -specify the coordinates of resulting rectilinear field file. If no -coordinate variable exists, then the resulting field file will be -uniform. Once in AVS, there are hundreds of analysis and display modules -available for image processing, isosurface rendering, arbitrary slicing, -alpha blending, streamline and vorticity calculation, particle -advection, etc. AVS runs on many different platforms (Stardent, DEC, -Cray, Convex, E and S, SET, Sun, IBM, SGI, HP, FPS and WaveTracer), and -it has a flexible data model capable of handling multidimensional data -on non-Cartesian grids. -The module source code and documentation is available from the -[International AVS Center](http://iac.ncsc.org/), in the - -directory. - -See also the information on [DDI](#DDI) for another way to use netCDF -data with AVS. - -Barrodale UFI {#BCS-UFI} ---------------------------------------- - -[Barrodale Computing Services Ltd.](http://www.barrodale.com) (BCS) has -developed a product that addresses one of the main objections heard from -"technologists" (e.g., scientists, engineers, and other researchers) who -avoid using databases to manage their data: "my very large data files -are too cumbersome/difficult/slow/costly to load into a database". In -addition to netCDF, these files come in a variety of formats (HDF5, -GRIB, NITFS, FITS, etc.). - -This BCS product is called the [Universal File Interface -(UFI)](http://www.barrodale.com/bcs/universal-file-interface-ufi); it's -a database extension based on the IBM Informix Virtual Table Interface -(VTI). *(Please continue reading even if you don't have Informix running -on your system, because IBM has just made available, at no charge, the -[Innovator-C -Edition](http://www-01.ibm.com/software/data/informix/innovator-c-edition/) -of Informix.)* A demo that uses UFI to access wind speeds can be seen -[here](http://www.barrodale.com/bcs/universal-file-interface-animation). - -VTI is a technology that supports making external datasets appear as -tables to SQL queries and statements. UFI is a BCS database extension -for delivering the contents of external data files as though they were -rows in a database table. UFI makes a file look like a set of database -tables, so "UFI managed tables" are actually virtual database tables. -Consequently, users of UFI can perform SQL queries on their files -without having to first load them into a database. - -DioVISTA/Storm {#DioVISTAStorm} ------------------------------------------------ - -[DioVISTA/Storm](http://www.hitachi-power-solutions.com/products/product03/p03_61.html) -is a commercial software package that visualizes content of netCDF files -as a time series of grids, isosurfaces, and arrows on a 3D virtual -earth. Its user interface is similar to standard 3D earth visualizing -software. It displays OGC KML files, Shapefiles, and online map -resources through OGC Web Tile Map Services (WTMS). It supports CF -Conventions version 1.6 (lon-lat-alt-time axis and trajectory). Its -first version was released on Aug 5 2014. - -Environmental WorkBench {#Environmental_WorkBench} ------------------------------------------------------------------ - -[SuperComputer Systems Engineering and Services -Company](http://www.ssesco.com/) (SSESCO) has developed the -[Environmental WorkBench](http://www.ssesco.com/files/ewb.html) (EWB), -an easy to use visualization and analysis application targeted at -environmental data. The EWB currently has numerous users in the fields -of meteorological research, air quality work, and groundwater -remediation. -EWB system features include: - -- Random access file structure using the netCDF-based public domain - MeRAF file system with support for gridded, discrete (non-grid-based - observation), and particle types -- Support for geo-referenced or Cartesian coordinate systems -- Object oriented Graphical User Interface (GUI) that is very easy to - use -- Tools for converting model and observational data sets and data - writers to netCDF -- Interactive rotation/translation of scenes in 3D space -- Time sequencing controls to step forward/backward, animate - sequentially, or go to a chosen time step; including multiple - asynchronous or non-uniform time steps -- Interactive slicers to select cross sections through 3D data sets -- Display operators available on the slices, including - - Contour lines with selectable contour levels - - Color shading by data value with variable transparency level - - Arrow and streamline representation for vector quantities - - Positional reference lines at user selected intervals - - Color coded shapes at each grid node -- Multiple 3D isosurfaces at selected parameters and values with - variable transparency -- Display of particle positions with coloring by type, height, and - source -- Display of discrete data using colored spheres and labels for scalar - data and arrows for vectors (with arrowheads or meteorological - style) -- Multiple user definable color maps to which isosurface and colored - field shading may be separately assigned -- On screen annotation for generation of report ready figures -- Image export in any of the common image formats (gif, tiff, - encapsulated postscript, etc.) -- Graceful handling of missing or bad data values by all the graphics - rendering routines -- Automatic data synchronization to allow automatic screen updating as - new data arrives in real-time from a model or set of sensors -- Two and three dimensional interpolation from scattered observations - to a grid, using the Natural Neighbor Method. This robust volume - based method yields results far superior to distance weighting - schemes. - -Systems currently supported include Win95, WinNT, OS/2, IBM RS/6000, -Silicon Graphics, HP and SUN workstations. - -SSESCO has implemented a meta-file layer on top of the netCDF library, -called MeRAF. It handles multiple netCDF files as well as automatic -max-min calculations, time-varying gridded, particle, and discrete data, -logical groupings for discrete data, and an overall simplified and -flexible interface for storing scientific data. MeRAF is being used by -the DOE at the Hanford-Meteorological Site for observational data and -will be used for their weather-modeling. - -ESRI {#ESRI} ---------------------------- - -[ESRI ArcGIS](http://www.esri.com/software/arcgis/index.html) version -9.2 and later support [accessing netCDF time-based and multidimensional -data](http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=An_overview_of_data_support_in_ArcGIS) -that follows CF or COARDS conventions for associating spatial locations -with data. A selected slice of netCDF data may be displayed in ArcGIS as -a raster layer, feature layer, or table. You can also drag a netCDF file -from Windows Explorer and drop it in an ESRI application such as ArcMap. - -FME {#FME} -------------------------- - -[FME](http://www.safe.com/fme), developed by [Safe Software -Inc.](http://www.safe.com), is a tool for transforming data for exchange -between over [300 different formats and -models](http://www.safe.com/fme/format-search/), including netCDF. FME's -read and write support for netCDF allows users to move data into the -netCDF common standard, regardless of its source, and conversely enables -end-users to consume netCDF data for use in their preferred systems. For -more information visit . - -HDF Explorer {#HDF-Explorer} -------------------------------------------- - -[HDF Explorer](http://www.space-research.org/) is a data visualization -program that reads the HDF, HDF5 and netCDF data file formats (including -netCDF classic format data). HDF Explorer runs in the Microsoft Windows -operating systems. - -HDF Explorer offers a simple yet powerful interface for the -visualization of HDF and netCDF data. The data is just a click of the -mouse away. Data is first viewed in a tree-like interface, and then -optionally loaded and visualized in a variety of ways. HDF Explorer -features include fast access to data, grid, scalar and vector views. It -also allows exporting your data either as an ASCII text file or a bitmap -image. - -IDL Interface {#IDL} ------------------------------------ - -[IDL](http://www.exelisvis.com/ProductsServices/IDL.aspx) (Interactive -Data Language) is a scientific computing environment, developed and -supported by [Excelis Visual Information -Solutions](http://www.exelisvis.com/), that combines mathematics, -advanced data visualization, scientific graphics, and a graphical user -interface toolkit to analyze and visualize scientific data. Designed for -use by scientists and scientific application developers, IDL's -array-oriented, fourth-generation programming language allows you to -prototype and develop complete applications. IDL now supports data in -netCDF format. -As an example, here is how to read data from a netCDF variable named GP -in a file named "data/aprin.nc" into an IDL variable named gp using the -IDL language: - - id = ncdf_open('data/april.nc') - ncdf_varget,id, ncdf_varid( id, 'GP'), gp - -Now you can visualize the data in the gp variable in a large variety of -ways and use it in other computations in IDL. You can FTP a demo version -of IDL, including the netCDF interface, by following the instructions in -pub/idl/README available via anonymous FTP from gateway.rsinc.com or -boulder.colorado.edu. -Other software packages that use or interoperate with IDL to access -netCDF data includes [ARGOS](#ARGOS), [CIDS Tools](#CIDS_Tools), -[DDI](#DDI), [HIPHOP](#HIPHOP), [Hyperslab OPerator Suite -(HOPS)](Hyperslab_OPerator_Suite_(HOPS)), and [Noesys](Noesys). - -InterFormat {#InterFormat} ------------------------------------------ - -[InterFormat](http://www.radio-logic.com/) is a medical image format -conversion program with both Motif and character interfaces. InterFormat -can automatically identify and convert most popular medical image -formats and write output files in many standard medical image formats, -or in formats such as netCDF that are suitable for input to leading -scientific visualization packages. InterFormat runs on UNIX -workstations; a version for OpenVMS is also available. A separate -external module for [IBM Data Explorer](#OpenDX) is available for use in -IBM Data Explorer's Visual Program Editor. -For more details about the formats handled, program features, and -pricing, see the Radio-Logic web site at -[\](http://www.radio-logic.com). - -IRIS Explorer Module {#IRIS_Explorer_Module} ------------------------------------------------------------ - -The Atmospheric and Oceanic Sciences Group at the National Center for -Supercomputing Applications (NCSA) and the Mesoscale Dynamics and -Precipitation Branch at NASA-Goddard Space Flight Center have developed -the NCSA PATHFINDER module set for [IRIS -Explorer](http://www.nag.co.uk:70/1h/Welcome_IEC). Two of the modules, -[ReadDFG](http://redrock.ncsa.uiuc.edu/PATHFINDER/pathrel2/explorer/ReadDFG/ReadDFG.html) -(to output Grids), and -[ReadDF](http://redrock.ncsa.uiuc.edu/PATHFINDER/pathrel2/explorer/ReadDF/ReadDF.html) -(to output Lattices) are capable of reading from NCSA HDF files, -MFHDF/3.3 files, and Unidata netCDF files. A user-friendly interface -provides control and information about the contents of the files. - -For ReadDF, the format translation is handled transparently. Up to five -unique lattices may be generated from the file (as these files can -contain multiple data fields) using a single module. A variety of -dimensionalities and data types are supported also. Multiple variables -may be combined in a single lattice to generate vector data. All three -Explorer coordinate systems are supported. - -With ReadDFG, user selected variables from the file are output in up to -five PATHFINDER grids. Each grid can consist of scalar data from one -variable or vector data from multiple variables. Coordinate information -from the file is also included in the grids. Any number of dimensions in -any of the Explorer coordinate types are supported. - -For more information on the NCSA PATHFINDER project and other available -modules, visit the WWW/Mosaic PATHFINDER Home Page at - The -ReadDF module may be downloaded either via the WWW server or anonymous -ftp at redrock.ncsa.uiuc.edu in the /pub/PATHFINDER directory. For more -information please send email to: pathfinder@redrock.ncsa.uiuc.edu - -See also the information on [DDI](#DDI) for another way to use netCDF -data with IRIS Explorer. - -LeoNetCDF {#LeoNetCDF} -------------------------------------- - -[LeoNetCDF](http://www.leokrut.com/leonetcdf.html) is a Windows -application (Windows95/NT and higher) for editing netCDF files. It can -display content of netCDF files in tree style control and permits -editing its parameters in a standard Windows interface environment. - -Mathematica {#Mathematica} ------------------------------------------ - -[Mathematica](http://www.wolfram.com/products/mathematica/index.html) is -a technical computing environment that provides advanced numerical and -symbolic computation and visualization. As of version 6, Mathematica -adds classic [netCDF -data](http://reference.wolfram.com/mathematica/ref/format/NetCDF.html) -to the many forms of data it can import, export, and visualize. - -MATLAB {#MATLAB} -------------------------------- - -[MATLAB](http://www.mathworks.com/products/matlab/) is an integrated -technical computing environment that combines numeric computation, -advanced graphics and visualization, and a high-level programming -language. Versions 7.7 and later of MATLAB have built-in support for -reading and writing netCDF data. MATLAB version 2012a includes the -netCDF 4.1.2 library with OPeNDAP client support turned on, so remote -access to netCDF and other data formats supported by OPeNDAP servers is -available. -For earlier versions, several freely-available software packages that -implement a MATLAB/netCDF interface are available: -[nctoolbox](#nctoolbox), [NetCDF Toolbox for MATLAB-5](#NC4ML5), -[MexEPS](#MexEPS), the [CSIRO MATLAB/netCDF interface](#CSIRO-MATLAB), -[NetCDF -reader](http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=15177&objectType=file), -and [fanmat](/software/netcdf/Contrib.html). - - - -Noesys {#Neosys} -------------------------------- - -[Noesys](http://www.rsinc.com/NOeSYS/index.cfm) is software for desktop -science data access and visualization. Available for both Windows and -Power Macintosh platforms, Noesys allows users to access, process, -organize and visualize large amounts of technical data. -Noesys can be used to: - -- Access and organize complex technical data -- Export data objects to text and binary -- View and edit large multidimensional data sets (up to 7D) in a - spreadsheet-like environment -- Manipulate and process data using - [IDL®](http://www.exelisvis.com/ProductsServices/IDL.aspx), the - Interactive Data Language, from Research Systems, Inc. -- Interactively visualize column, matrix, and volumetric data sets -- Image global datasets as various map projections -- Create various projections from partial data or partial projections - from global data (Windows only) -- View and Edit HDF-EOS grid object data -- Subset datasets and data tables with a GUI dialog -- Change and save the number format of datasets and data table fields -- Drag and Drop HDF objects between files to organize or subset files -- Attach text annotations directly to the data file -- Add new data objects to files and create hierarchical groups -- Edit or create new color palettes -- Generate publication-quality graphics for data presentation - -Noesys has an interface to IDL®, allowing data to move back and forth -between Noesys and IDL with the click of a mouse. Noesys includes the -visual data analysis tools, Transform, T3D and Plot, for menu driven -plotting, rendering, and image analysis. Noesys can import HDF, HDF-EOS, -netCDF, ASCII, Binary, DTED, GeoTIFF, SDTS, TIFF, PICT, and BMP files, -create annotations, macros, images, projections and color palettes -specific to the data and save it the result as an HDF file. Noesys also -includes an HDF-EOS Grid Editor. Noesys runs on Windows 95/98 & NT and -Power Macintosh OS. More details and information about ordering Noesys -are available from -[\](http://www.rsinc.com/NOeSYS/index.cfm). - -Origin {#Origin} -------------------------------- - -Ryan Toomey reports: - -Our website is - -A general description of Origin: Origin includes a suite of features -that cater to the needs of scientists and engineers alike. Multi-sheet -workbooks, publication-quality graphics, and standardized analysis tools -provide a tightly integrated workspace for you to import data, create -and annotate graphs, explore and analyze data, and publish your work. To -ensure that Origin meets your data analysis requirements, intuitive -tools for advanced statistics, regression, nonlinear curve fitting, -signal processing, image processing and peak analysis are built-in. -Since any analysis operation can be set to automatically recalculate, -you can reuse your projects as templates for future work, thereby -simplifying your daily routine. - -A general description of OriginPro: OriginPro offers all of the features -of Origin plus extended analysis tools for statistics, 3D fitting, image -processing and signal processing. - -A general description of OriginLab Corporation: "OriginLab Corporation -produces professional data analysis and graphing software for scientists -and engineers. Our products are designed to be easy-to-use, yet have the -power and versatility to provide for the most demanding user." - -PPLUS {#PPLUS} ------------------------------ - -[Plot-Plus (PPLUS)](http://dwd6.home.mindspring.com/) is a general -purpose scientific graphics package, which is used in several PMEL -applications. It will read most standard ascii or binary files, as well -as netCDF file format, which used by the TOGA-TAO Project and the EPIC -system for management display and analysis. PPLUS is an interactive, -command driven, scientific graphics package which includes features such -as Mercator projection, Polar Stereographic projection, color or gray -scale area-fill contour plotting, and support for many devices: -X-windows, PostScript, HP, Tektronix, and others. This powerful and -flexible package recognizes netCDF data format, and it can extract axis -lables and graph titles from the data files. The user can customize a -plots, or combine several plots into a composite. Plots are of -publication quality. The PPLUS graphics package is used for all the TAO -workstation displays, including the animations. The animations are -created by generating a PPLUS plot for each frame, transforming the -PPLUS metacode files into HDF format with the PPLUS m2hdf filter, and -then displaying the resulting bit maps as an animation with the -XDataSlice utility, which is freely available on Internet from the -National Center for Supercomputing Applications, at -anonymous@ftp.ncsa.uiuc.edu (141.142.20.50). There is also a new m2gif -utility which produces GIF files from PPLUS metacode files. -PPLUS is supported for most Unix systems and for VAX/VMS, and is in use -at many oceanographic institutes in the US (e.g., (PMEL, Harvard, WHOI, -Scripps, NCAR, NASA, University of Rhode Island, University of Oregon, -Texas A&M...) and also internationally (Japan, Germany, Australia, -Korea...). - -Plot Plus is now available at no charge. It does require licensing on a -per computer basis, but the license is at no cost. For more information -about licensing, see -[http://dwd6.home.mindspring.com/pplus_license.html/](http://dwd6.home.mindspring.com/pplus_license.html); -source and documentation are available via anonymous FTP from - and -. - - Email: plot_plus@halcyon.com - Postal mail: c/o Donald Denbo - 2138 N 186th St - Shoreline, WA 98133 - Fax and Voice: (206) 366-0624 - -PV-Wave {#PV-Wave} ---------------------------------- - -[PV-Wave](http://www.vni.com/products/wave/index.html) is a software -environment from [Visual Numerics](http://www.vni.com/) for solving -problems requiring the application of graphics, mathematics, numerics -and statistics to data and equations. -PV-WAVE uses a fourth generation language (4GL) that analyzes and -displays data as you enter commands. PV-WAVE includes integrated -graphics, numerics, data I/O, and data management. The latest version of -PV-Wave supports data access in numerous formats, including netCDF. - -See also the information on [DDI](#DDI) for another way to use netCDF -data with PV-Wave. - -Slicer Dicer {#SlicerDicer} ------------------------------------------- - -[Slicer Dicer](http://www.slicerdicer.com/) is a volumetric data -visualization tool, currently available for Windows and under -development for other platforms. The Slicer Dicer Web site includes a -complete list of features, an on-line user's guide, and examples of -Slicer Dicer output. Visualizations features include: -- Perspective view of data rendered on interactively selected - orthogonal slices, oblique slices, blocks (arbitrary rectilinear - sub-volumes), cutouts, isosurfaces, and projected volumes (projected - maximum, minimum, maximum absolute, or minimum absolute). -- Optional annotations: caption, axes ticks and labels (default - "pretty" ticks, or override to place ticks where you want them), - color legend, data-cube outline. -- Animation modes: slices, space, time (any parametric dimension), - transparency, oblique slice orientation, rotation. Built-in - animation viewer supports speed and image size controls, - single-step, forward, backward, loop, and back-and-forth modes. -- Select color scale from 25+ built in color tables, or import from - palette file. Any data level or range of levels can be painted with - an arbitrary color. -- Any data level or range of levels can be rendered as either opaque - or transparent. - -Surfer {#Surfer} ------------------------------------------- - -[Surfer](http://www.goldensoftware.com/products/surfer) is a 3D -visualization, contouring, and surface modeling package that runs -under Microsoft Windows. Surfer is useful for terrain modeling, -bathymetric modeling, landscape visualization, surface analysis, -contour mapping, watershed and 3D surface mapping, gridding, -volumetrics, and more. A sophisticated interpolation engine transforms -XYZ data into publication-quality maps. Surfer imports from and -exports to a multitude of file formats, including NetCDF grids. - -vGeo {#vGeo} ---------------------------- - -[vGeo](http://www.vrco.com/products/vgeo/vgeo.html) (Virtual Global -Explorer and Observatory) is an end-user product from -[VRCO](http://www.vrco.com/) designed to import and visualize multiple -disparate data sets, including computer simulations, observed -measurements, images, model objects, and more. vGeo is available for -IRIX, Linux and Windows platforms and supports displays ranging from -desktop monitors to multi-walled projection systems. It accepts data in -a variety of formats, including netCDF, and allows the user to specify -how multiple files and variables are mapped into a data source. 3D -graphics are built from the underlying data in real-time, and the user -has interactive control of graphics, navigation, animation, and more. - -VISAGE and Decimate {#VISAGE_and_Decimate} ---------------------------------------------------------- - -[VISAGE](http://www.crd.ge.com/esl/cgsp/projects/visage/) -(VISualization, Animation, and Graphics Environment) is a turnkey 3D -visualization system developed at General Electric Corporate Research -and Development, (Schroeder, WJ et al, "VISAGE: An Object-Oriented -Scientific Visualization System", Proceedings of Visualization \`92 -Conference). VISAGE is designed to interface with a wide variety of -data, and uses netCDF as the preferred format. - -VISAGE is used at GE Corporate R & D, GE Aircraft Engine, GE Canada, GE -Power Generation, as well as ETH Zurich, Switzerland, MQS In Chieti, -Italy, and Rensselaer Polytechnic Institute in Troy, New York. - -GE has another application called "Decimate" that does polygon -reduction/decimation (Schroeder,WJ et al, "Decimation of Triangle -Meshes", Proceedings of SIGGRAPH \`92). This application uses netCDF as -a preferred format. Decimate is currently licensed to Cyberware, Inc., -makers of 3D laser digitizing hardware. Decimate is currently bundled -with the scanners, and will soon be available as a commercial product. - -Voyager {#Voyager} ---------------------------------- - -[Makai Voyager](http://voyager.makai.com/), developed by Makai Ocean -Engineering, Inc., is 3D/4D geospatial visualization software that -enables users to import, fuse, view, and analyze large earth, ocean, and -atmosphere scientific data as it is collected or simulated in a global -geo-referenced GIS platform. The key differentiator of Makai Voyager is -its level-of-detail (LOD) technology that enables users to stream big -data rapidly over a network or the web. - -Features in Makai Voyager Version 1.2 include: - -- Preprocessing LiDAR, GIS, & volumetric data from common formats into - streamable files -- Volume rendering for large 4D (3D + time) data, such as NetCDF -- Analysis tools and customizable graphs -- WMS and other streamable formats - -Individual or group licenses are available for Windows (32- and 64-bit), -Linux, and Mac OS X. A full-featured 30-day trial version of Makai -Voyager is [available for download](http://voyager.makai.com). diff --git a/contrib/netcdf/4.4.1.1/docs/windows-binaries.md b/contrib/netcdf/4.4.1.1/docs/windows-binaries.md deleted file mode 100644 index fb25cc6e277..00000000000 --- a/contrib/netcdf/4.4.1.1/docs/windows-binaries.md +++ /dev/null @@ -1,70 +0,0 @@ -Installing and Using netCDF-C Libraries in Windows {#winbin} -================================================== - -\brief NetCDF-C Libraries in a Windows Environment may be used under multiple sets of circumstances. - -[TOC] - -There are several development environments available for programmers who develop on Windows. - -* `Microsoft Visual Studio ` -* `MSYS/MinGW` -* `Cygwin` - -For developers using `Microsoft Visual Studio`, you may download using the Windows build instructions, or you may download the pre-built netCDF-C libraries from this page. - -For developers using `MSYS/MinGW` or `Cygwin`, you may build netCDF-C using the Linux/Unix build instructions. - -> For complex builds that include netCDF-4 and/or DAP support this may prove tricky, as it is time consuming to collect all of the dependencies. In these cases it may be easier to use the pre-built `netcdf` packages provided by the `MSYS` and `Cygwin` environments. - -Users who prefer to build the netCDF-C libraries from source in a Windows environment using Microsoft Visual Studio are referred to \ref netCDF-CMake - -# Getting pre-built netCDF-C Libraries for Visual Studio {#msvc-prebuilt} - -These libraries have been built using Visual Studio 2012. The downloads are installer packages which contain the netCDF-C libraries and utilities (ncgen, ncgen3, ncdump and nccopy), as well as the associated dependencies. - - -## Included Dependencies {#msvc-inc-deps} - -The included dependencies and versions are as follows: - -* `libhdf5`: 1.8.17 -* `libcurl`: 7.35.0 -* `zlib`: 1.2.8 - -## Latest Release (netCDF-C 4.4.1.1) {#msvc-latest-release} - -Configuration | 32-bit | 64-bit | -:-------------------|:-------- |:-------| -netCDF 3 | [netCDF4.4.1.1-NC3-32.exe][r1] | [netCDF4.4.1.1-NC3-64.exe][r6] -netCDF3+DAP | [netCDF4.4.1.1-NC3-DAP-32.exe][r2] | [netCDF4.4.1.1-NC3-DAP-64.exe][r6] -netCDF4 | [netCDF4.4.1.1-NC4-32.exe][r3] | [netCDF4.4.1.1-NC4-64.exe][r7] -netCDF4+DAP | [netCDF4.4.1.1-NC4-DAP-32.exe][r4] | [netCDF4.4.1.1-NC4-DAP-64.exe][r8] - -# Using the netCDF-C Libraries with Visual Studio {#msvc-using} - -In order to use the netcdf libraries, you must ensure that the .dll files (along with any dependencies from deps/shared/bin) are on the system path. In order to compile a program using these libraries, you must first link your program against the appropriate 'import' (.lib) libraries. - -## Install Hierarchy {#msvc-install-hierarchy} - -When installed, the netCDF libraries are placed in the specified locations, along with the netCDF-C utilities and dependencies. - -
- -
- -# Notes {#msvc-notes} - -*The following points should be considered when using the netCDF-C libraries on Windows.* - -1. When building the netCDF-C libraries with netCDF4 support, using the `Debug` libraries may cause extraneous warnings. These warnings are related to cross-dll memory management, and appear to be harmless. You can safely ignore them by using the `Release` libraries. [NCF-220] - - -[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC3-32.exe -[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC3-DAP-32.exe -[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC4-32.exe -[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC4-DAP-32.exe -[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC3-64.exe -[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC3-DAP-64.exe -[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC4-64.exe -[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.1.1-NC4-DAP-64.exe diff --git a/contrib/netcdf/4.4.1.1/examples/C/CMakeLists.txt b/contrib/netcdf/4.4.1.1/examples/C/CMakeLists.txt deleted file mode 100644 index da628444439..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/C/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(exam_C_tests simple_xy_wr simple_xy_rd sfc_pres_temp_wr sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd) -SET(exam_C_tests_source "") -FOREACH(F ${exam_C_tests}) - set(exam_C_tests_source ${exam_C_test_source} ${F}.c) -ENDFOREACH() - -FOREACH(F ${exam_C_tests}) - add_bin_test(C_tests ${F}) -ENDFOREACH() - - -## Specify files to be distributed by 'make dist' -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") - - -SET(CLEANFILES sfc_pres_temp.nc simple_xy.nc pres_temp_4D.nc simple_nc4.nc simple_xy_nc4.nc) -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") - diff --git a/contrib/netcdf/4.4.1.1/examples/C/Makefile.am b/contrib/netcdf/4.4.1.1/examples/C/Makefile.am deleted file mode 100644 index 72a84f4c862..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/C/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -# This is a automake file, part of Unidata's netCDF package. -# Copyright 2006, see the COPYRIGHT file for more information. - -# This file builds the C examples. - -# $Id: Makefile.am,v 1.26 2010/05/29 00:17:41 dmh Exp $ - -LDADD = -lm -AM_CPPFLAGS = -I$(top_srcdir)/include -AM_LDFLAGS = - -# These are the netCDF-3 examples. -TESTPROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr \ -sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd - -# To build netcdf-4, or not to build netcdf-4, that is the question... -if USE_NETCDF4 -# These are the extra netCDF-4 examples. -TESTPROGRAMS += simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \ -simple_xy_nc4_rd -endif #USE_NETCDF4 - -if USE_PNETCDF -# These are the extra netCDF-4 examples. -TESTPROGRAMS += parallel_vara -endif #USE_PNETCDF - -AM_CPPFLAGS += -I$(top_builddir)/liblib -AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la - -check_PROGRAMS = $(TESTPROGRAMS) -TESTS = $(TESTPROGRAMS) - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -if USE_VALGRIND_TESTS -TESTS += run_valgrind_tests.sh -endif # USE_VALGRIND_TESTS -if USE_NETCDF4 -if USE_VALGRIND_TESTS -TESTS += run_nc4_valgrind_tests.sh -endif # USE_VALGRIND_TESTS -endif # USE_NETCDF4 - -# These files are created by the tests. -CLEANFILES = sfc_pres_temp.nc simple_xy.nc pres_temp_4D.nc \ -simple_nc4.nc simple_xy_nc4.nc testfile.nc - -EXTRA_DIST = run_valgrind_tests.sh run_nc4_valgrind_tests.sh CMakeLists.txt diff --git a/contrib/netcdf/4.4.1.1/examples/C/Makefile.in b/contrib/netcdf/4.4.1.1/examples/C/Makefile.in deleted file mode 100644 index fc12d253cc5..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/C/Makefile.in +++ /dev/null @@ -1,933 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# This is a automake file, part of Unidata's netCDF package. -# Copyright 2006, see the COPYRIGHT file for more information. - -# This file builds the C examples. - -# $Id: Makefile.am,v 1.26 2010/05/29 00:17:41 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ - -# To build netcdf-4, or not to build netcdf-4, that is the question... -# These are the extra netCDF-4 examples. -@USE_NETCDF4_TRUE@am__append_1 = simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \ -@USE_NETCDF4_TRUE@simple_xy_nc4_rd - - -# These are the extra netCDF-4 examples. -@USE_PNETCDF_TRUE@am__append_2 = parallel_vara -check_PROGRAMS = $(am__EXEEXT_3) -TESTS = $(am__EXEEXT_3) $(am__append_3) $(am__append_4) - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -@USE_VALGRIND_TESTS_TRUE@am__append_3 = run_valgrind_tests.sh -@USE_NETCDF4_TRUE@@USE_VALGRIND_TESTS_TRUE@am__append_4 = run_nc4_valgrind_tests.sh -subdir = examples/C -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@USE_NETCDF4_TRUE@am__EXEEXT_1 = simple_nc4_wr$(EXEEXT) \ -@USE_NETCDF4_TRUE@ simple_nc4_rd$(EXEEXT) \ -@USE_NETCDF4_TRUE@ simple_xy_nc4_wr$(EXEEXT) \ -@USE_NETCDF4_TRUE@ simple_xy_nc4_rd$(EXEEXT) -@USE_PNETCDF_TRUE@am__EXEEXT_2 = parallel_vara$(EXEEXT) -am__EXEEXT_3 = simple_xy_wr$(EXEEXT) simple_xy_rd$(EXEEXT) \ - sfc_pres_temp_wr$(EXEEXT) sfc_pres_temp_rd$(EXEEXT) \ - pres_temp_4D_wr$(EXEEXT) pres_temp_4D_rd$(EXEEXT) \ - $(am__EXEEXT_1) $(am__EXEEXT_2) -parallel_vara_SOURCES = parallel_vara.c -parallel_vara_OBJECTS = parallel_vara.$(OBJEXT) -parallel_vara_LDADD = $(LDADD) -parallel_vara_DEPENDENCIES = -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -pres_temp_4D_rd_SOURCES = pres_temp_4D_rd.c -pres_temp_4D_rd_OBJECTS = pres_temp_4D_rd.$(OBJEXT) -pres_temp_4D_rd_LDADD = $(LDADD) -pres_temp_4D_rd_DEPENDENCIES = -pres_temp_4D_wr_SOURCES = pres_temp_4D_wr.c -pres_temp_4D_wr_OBJECTS = pres_temp_4D_wr.$(OBJEXT) -pres_temp_4D_wr_LDADD = $(LDADD) -pres_temp_4D_wr_DEPENDENCIES = -sfc_pres_temp_rd_SOURCES = sfc_pres_temp_rd.c -sfc_pres_temp_rd_OBJECTS = sfc_pres_temp_rd.$(OBJEXT) -sfc_pres_temp_rd_LDADD = $(LDADD) -sfc_pres_temp_rd_DEPENDENCIES = -sfc_pres_temp_wr_SOURCES = sfc_pres_temp_wr.c -sfc_pres_temp_wr_OBJECTS = sfc_pres_temp_wr.$(OBJEXT) -sfc_pres_temp_wr_LDADD = $(LDADD) -sfc_pres_temp_wr_DEPENDENCIES = -simple_nc4_rd_SOURCES = simple_nc4_rd.c -simple_nc4_rd_OBJECTS = simple_nc4_rd.$(OBJEXT) -simple_nc4_rd_LDADD = $(LDADD) -simple_nc4_rd_DEPENDENCIES = -simple_nc4_wr_SOURCES = simple_nc4_wr.c -simple_nc4_wr_OBJECTS = simple_nc4_wr.$(OBJEXT) -simple_nc4_wr_LDADD = $(LDADD) -simple_nc4_wr_DEPENDENCIES = -simple_xy_nc4_rd_SOURCES = simple_xy_nc4_rd.c -simple_xy_nc4_rd_OBJECTS = simple_xy_nc4_rd.$(OBJEXT) -simple_xy_nc4_rd_LDADD = $(LDADD) -simple_xy_nc4_rd_DEPENDENCIES = -simple_xy_nc4_wr_SOURCES = simple_xy_nc4_wr.c -simple_xy_nc4_wr_OBJECTS = simple_xy_nc4_wr.$(OBJEXT) -simple_xy_nc4_wr_LDADD = $(LDADD) -simple_xy_nc4_wr_DEPENDENCIES = -simple_xy_rd_SOURCES = simple_xy_rd.c -simple_xy_rd_OBJECTS = simple_xy_rd.$(OBJEXT) -simple_xy_rd_LDADD = $(LDADD) -simple_xy_rd_DEPENDENCIES = -simple_xy_wr_SOURCES = simple_xy_wr.c -simple_xy_wr_OBJECTS = simple_xy_wr.$(OBJEXT) -simple_xy_wr_LDADD = $(LDADD) -simple_xy_wr_DEPENDENCIES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/parallel_vara.Po \ - ./$(DEPDIR)/pres_temp_4D_rd.Po ./$(DEPDIR)/pres_temp_4D_wr.Po \ - ./$(DEPDIR)/sfc_pres_temp_rd.Po \ - ./$(DEPDIR)/sfc_pres_temp_wr.Po ./$(DEPDIR)/simple_nc4_rd.Po \ - ./$(DEPDIR)/simple_nc4_wr.Po ./$(DEPDIR)/simple_xy_nc4_rd.Po \ - ./$(DEPDIR)/simple_xy_nc4_wr.Po ./$(DEPDIR)/simple_xy_rd.Po \ - ./$(DEPDIR)/simple_xy_wr.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = parallel_vara.c pres_temp_4D_rd.c pres_temp_4D_wr.c \ - sfc_pres_temp_rd.c sfc_pres_temp_wr.c simple_nc4_rd.c \ - simple_nc4_wr.c simple_xy_nc4_rd.c simple_xy_nc4_wr.c \ - simple_xy_rd.c simple_xy_wr.c -DIST_SOURCES = parallel_vara.c pres_temp_4D_rd.c pres_temp_4D_wr.c \ - sfc_pres_temp_rd.c sfc_pres_temp_wr.c simple_nc4_rd.c \ - simple_nc4_wr.c simple_xy_nc4_rd.c simple_xy_nc4_wr.c \ - simple_xy_rd.c simple_xy_wr.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/liblib -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ -LDADD = -lm - -# These are the netCDF-3 examples. -TESTPROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr \ - sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd \ - $(am__append_1) $(am__append_2) - -# These files are created by the tests. -CLEANFILES = sfc_pres_temp.nc simple_xy.nc pres_temp_4D.nc \ -simple_nc4.nc simple_xy_nc4.nc testfile.nc - -EXTRA_DIST = run_valgrind_tests.sh run_nc4_valgrind_tests.sh CMakeLists.txt -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(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 examples/C/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign examples/C/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -parallel_vara$(EXEEXT): $(parallel_vara_OBJECTS) $(parallel_vara_DEPENDENCIES) $(EXTRA_parallel_vara_DEPENDENCIES) - @rm -f parallel_vara$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(parallel_vara_OBJECTS) $(parallel_vara_LDADD) $(LIBS) - -pres_temp_4D_rd$(EXEEXT): $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_DEPENDENCIES) $(EXTRA_pres_temp_4D_rd_DEPENDENCIES) - @rm -f pres_temp_4D_rd$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_LDADD) $(LIBS) - -pres_temp_4D_wr$(EXEEXT): $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_DEPENDENCIES) $(EXTRA_pres_temp_4D_wr_DEPENDENCIES) - @rm -f pres_temp_4D_wr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_LDADD) $(LIBS) - -sfc_pres_temp_rd$(EXEEXT): $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_DEPENDENCIES) $(EXTRA_sfc_pres_temp_rd_DEPENDENCIES) - @rm -f sfc_pres_temp_rd$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_LDADD) $(LIBS) - -sfc_pres_temp_wr$(EXEEXT): $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_DEPENDENCIES) $(EXTRA_sfc_pres_temp_wr_DEPENDENCIES) - @rm -f sfc_pres_temp_wr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_LDADD) $(LIBS) - -simple_nc4_rd$(EXEEXT): $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_DEPENDENCIES) $(EXTRA_simple_nc4_rd_DEPENDENCIES) - @rm -f simple_nc4_rd$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_LDADD) $(LIBS) - -simple_nc4_wr$(EXEEXT): $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_DEPENDENCIES) $(EXTRA_simple_nc4_wr_DEPENDENCIES) - @rm -f simple_nc4_wr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_LDADD) $(LIBS) - -simple_xy_nc4_rd$(EXEEXT): $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_DEPENDENCIES) $(EXTRA_simple_xy_nc4_rd_DEPENDENCIES) - @rm -f simple_xy_nc4_rd$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_LDADD) $(LIBS) - -simple_xy_nc4_wr$(EXEEXT): $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_DEPENDENCIES) $(EXTRA_simple_xy_nc4_wr_DEPENDENCIES) - @rm -f simple_xy_nc4_wr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_LDADD) $(LIBS) - -simple_xy_rd$(EXEEXT): $(simple_xy_rd_OBJECTS) $(simple_xy_rd_DEPENDENCIES) $(EXTRA_simple_xy_rd_DEPENDENCIES) - @rm -f simple_xy_rd$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_xy_rd_OBJECTS) $(simple_xy_rd_LDADD) $(LIBS) - -simple_xy_wr$(EXEEXT): $(simple_xy_wr_OBJECTS) $(simple_xy_wr_DEPENDENCIES) $(EXTRA_simple_xy_wr_DEPENDENCIES) - @rm -f simple_xy_wr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(simple_xy_wr_OBJECTS) $(simple_xy_wr_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel_vara.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pres_temp_4D_rd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pres_temp_4D_wr.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfc_pres_temp_rd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfc_pres_temp_wr.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_nc4_rd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_nc4_wr.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_xy_nc4_rd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_xy_nc4_wr.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_xy_rd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_xy_wr.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/parallel_vara.Po - -rm -f ./$(DEPDIR)/pres_temp_4D_rd.Po - -rm -f ./$(DEPDIR)/pres_temp_4D_wr.Po - -rm -f ./$(DEPDIR)/sfc_pres_temp_rd.Po - -rm -f ./$(DEPDIR)/sfc_pres_temp_wr.Po - -rm -f ./$(DEPDIR)/simple_nc4_rd.Po - -rm -f ./$(DEPDIR)/simple_nc4_wr.Po - -rm -f ./$(DEPDIR)/simple_xy_nc4_rd.Po - -rm -f ./$(DEPDIR)/simple_xy_nc4_wr.Po - -rm -f ./$(DEPDIR)/simple_xy_rd.Po - -rm -f ./$(DEPDIR)/simple_xy_wr.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/parallel_vara.Po - -rm -f ./$(DEPDIR)/pres_temp_4D_rd.Po - -rm -f ./$(DEPDIR)/pres_temp_4D_wr.Po - -rm -f ./$(DEPDIR)/sfc_pres_temp_rd.Po - -rm -f ./$(DEPDIR)/sfc_pres_temp_wr.Po - -rm -f ./$(DEPDIR)/simple_nc4_rd.Po - -rm -f ./$(DEPDIR)/simple_nc4_wr.Po - -rm -f ./$(DEPDIR)/simple_xy_nc4_rd.Po - -rm -f ./$(DEPDIR)/simple_xy_nc4_wr.Po - -rm -f ./$(DEPDIR)/simple_xy_rd.Po - -rm -f ./$(DEPDIR)/simple_xy_wr.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/examples/C/run_nc4_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/examples/C/run_nc4_valgrind_tests.sh deleted file mode 100755 index 42f89773dae..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/C/run_nc4_valgrind_tests.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind, for netCDF-4. - -# $Id: run_valgrind_tests.sh,v 1.9 2010/01/26 20:24:18 ed Exp $ - -set -e -echo "" -echo "Testing netCDF-4 test programs with valgrind..." - -# These are my test programs. -list='simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr '\ -'simple_xy_nc4_rd ' - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/C/run_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/examples/C/run_valgrind_tests.sh deleted file mode 100755 index 3b2b9cd3a14..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/C/run_valgrind_tests.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -# $Id: run_valgrind_tests.sh,v 1.9 2010/01/26 20:24:18 ed Exp $ - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='simple_xy_wr simple_xy_rd sfc_pres_temp_wr '\ -'sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd ' - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/CMakeLists.txt b/contrib/netcdf/4.4.1.1/examples/CDL/CMakeLists.txt deleted file mode 100644 index de802279abd..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CDL/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(CDL_EXAMPLE_TESTS create_sample_files do_comps) - -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) - -FOREACH(F ${CDL_EXAMPLE_TESTS}) - add_sh_test(cdl ${F}) -ENDFOREACH() - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} simple_xy.cdl sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt Makefile.am create_sample_files.sh do_comps.sh) - -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") - - -SET(CLEANFILES simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc) -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") - diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.am b/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.am deleted file mode 100644 index 0747616cda0..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2006, see the COPYRIGHT file for more information. - -# This file builds CDL examples. - -# $Id: Makefile.am,v 1.3 2009/05/19 11:56:50 ed Exp $ - -# All we do is run two shell scripts, which create the sample files -# and then compare them with the C versions of the examples. -#if !BUILD_DLL -TESTS = create_sample_files.sh do_comps.sh -#endif - -# Ship the scripts needed to create the sample files and compare them. -EXTRA_DIST = do_comps.sh create_sample_files.sh simple_xy.cdl \ -sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt - -# Clean up files created during the process. -CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc - diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.in b/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.in deleted file mode 100644 index 36d0ec492a5..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CDL/Makefile.in +++ /dev/null @@ -1,633 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2006, see the COPYRIGHT file for more information. - -# This file builds CDL examples. - -# $Id: Makefile.am,v 1.3 2009/05/19 11:56:50 ed Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = examples/CDL -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# All we do is run two shell scripts, which create the sample files -# and then compare them with the C versions of the examples. -#if !BUILD_DLL -TESTS = create_sample_files.sh do_comps.sh -#endif - -# Ship the scripts needed to create the sample files and compare them. -EXTRA_DIST = do_comps.sh create_sample_files.sh simple_xy.cdl \ -sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt - - -# Clean up files created during the process. -CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc -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 examples/CDL/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign examples/CDL/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: all all-am check check-TESTS check-am clean clean-generic \ - clean-libtool 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/examples/CDL/create_sample_files.sh b/contrib/netcdf/4.4.1.1/examples/CDL/create_sample_files.sh deleted file mode 100755 index f2fa5a52925..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CDL/create_sample_files.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# This shell script creates the netCDF example files from CDL scipts. -# $Id: create_sample_files.sh,v 1.2 2006/07/14 18:39:45 ed Exp $ - -set -e -echo "" -echo "*** Creating example data files from CDL scripts." -echo "*** creating simple_xy.nc..." -../../ncgen/ncgen -b -o simple_xy.nc $srcdir/simple_xy.cdl - -echo "*** checking sfc_pres_temp.nc..." -../../ncgen/ncgen -b -o sfc_pres_temp.nc $srcdir/sfc_pres_temp.cdl - -echo "*** checking pres_temp_4D.nc..." -../../ncgen/ncgen -b -o pres_temp_4D.nc $srcdir/pres_temp_4D.cdl - -echo "*** All example creations worked!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/do_comps.sh b/contrib/netcdf/4.4.1.1/examples/CDL/do_comps.sh deleted file mode 100755 index faaa6fa4cb0..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CDL/do_comps.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# This shell script runs the cmp test on the example programs. -# $Id: do_comps.sh,v 1.1 2006/06/27 17:44:54 ed Exp $ - -set -e -echo "" -echo "*** Testing that the CDL examples produced same files as C examples." -echo "*** checking simple_xy.nc..." -cmp simple_xy.nc ../C/simple_xy.nc - -echo "*** checking sfc_pres_temp.nc..." -cmp sfc_pres_temp.nc ../C/sfc_pres_temp.nc - -echo "*** checking pres_temp_4D.nc..." -cmp pres_temp_4D.nc ../C/pres_temp_4D.nc - -echo "*** All CDL example comparisons worked!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/CMakeLists.txt b/contrib/netcdf/4.4.1.1/examples/CMakeLists.txt deleted file mode 100644 index 6c6c7ba2eb3..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -ADD_SUBDIRECTORY(C) - -IF(BUILD_UTILITIES) - ADD_SUBDIRECTORY(CDL) -ENDIF() - -SET(CUR_EXTRA_DIST CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") - - diff --git a/contrib/netcdf/4.4.1.1/examples/Makefile.in b/contrib/netcdf/4.4.1.1/examples/Makefile.in deleted file mode 100644 index 1a3ac06695a..00000000000 --- a/contrib/netcdf/4.4.1.1/examples/Makefile.in +++ /dev/null @@ -1,688 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This is the main automake file for netCDF. It builds the different -# netcdf directories. Not all directories are built, depending on the -# options selected during configure. -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = examples -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir distdir-am -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = C CDL -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Build ncgen/ncdump. -@BUILD_UTILITIES_TRUE@CDL_DIR = CDL - -# These are the subdirectories that will be built. -SUBDIRS = C $(CDL_DIR) -EXTRA_DIST = CMakeLists.txt -all: all-recursive - -.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 examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign examples/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/h5_test/CMakeLists.txt b/contrib/netcdf/4.4.1.1/h5_test/CMakeLists.txt deleted file mode 100644 index f27db4727c5..00000000000 --- a/contrib/netcdf/4.4.1.1/h5_test/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(H5TESTS tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_rd_cmp tst_h_vl tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 tst_h_enums tst_h_dimscales4) - -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h5 ${CMAKE_CURRENT_SOURCE_DIR}/*.nc) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) - -FOREACH(CTEST ${H5TESTS}) - ADD_EXECUTABLE(${CTEST} ${CTEST}.c) - TARGET_LINK_LIBRARIES(${CTEST} - netcdf - ${HDF5_HL_LIBRARIES} - ${HDF5_C_LIBRARIES} - ) - ADD_TEST(${CTEST} ${EXECUTABLE_OUTPUT_PATH}/${CTEST}) -ENDFOREACH() - - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} ref_tst_h_compounds.h5 ref_tst_h_compounds2.h5 ref_tst_compounds.nc CMakeLists.txt Makefile.am) - -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/h5_test/Makefile.am b/contrib/netcdf/4.4.1.1/h5_test/Makefile.am deleted file mode 100644 index a05b69c7e18..00000000000 --- a/contrib/netcdf/4.4.1.1/h5_test/Makefile.am +++ /dev/null @@ -1,52 +0,0 @@ -# This is part of the netCDF package. -# Copyright 2011 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# This entire directory will be skipped, unless the configure script -# is run with --enable-netcdf-4. This directory contains tests that -# only use HDF5; these tests don't use netCDF at all. -# -# If one of these tests fails, then netCDF-4 will not work correctly. - -# Set AM_CPPFLAGS and AM_LDFLAGS based on user choices. -include $(top_srcdir)/lib_flags.am - -# These programs test HDF5 to make sure it will do (some of) the stuff -# that netCDF-4 needs. -H5TESTS = tst_h_files tst_h_files2 tst_h_files4 tst_h_atts \ -tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps \ -tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_rd_cmp tst_h_vl \ -tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints \ -tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 \ -tst_h_enums tst_h_dimscales4 #tst_h_filters - -# If benchmarks were turned on, build and run a bunch more tests. -if BUILD_BENCHMARKS -H5TESTS += tst_h_mem -endif # BUILD_BENCHMARKS - -# List of tests to compile. -check_PROGRAMS = $(H5TESTS) - -# List of tests to run. -TESTS = $(H5TESTS) - -# The parallel program is run from a script. -if TEST_PARALLEL4 -check_PROGRAMS += tst_h_par -TESTS += run_par_tests.sh -endif - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -if USE_VALGRIND_TESTS -TESTS += run_valgrind_tests.sh -endif # USE_VALGRIND_TESTS - -# We must include these files in the distribution. -EXTRA_DIST = run_par_tests.sh run_valgrind_tests.sh \ -ref_tst_h_compounds.h5 ref_tst_h_compounds2.h5 run_par_tests.sh \ -run_valgrind_tests.sh ref_tst_compounds.nc h5_err_macros.h CMakeLists.txt - -# Clean up test results. -CLEANFILES = tst_h_*.h5 diff --git a/contrib/netcdf/4.4.1.1/h5_test/Makefile.in b/contrib/netcdf/4.4.1.1/h5_test/Makefile.in deleted file mode 100644 index 6a7a0fb91eb..00000000000 --- a/contrib/netcdf/4.4.1.1/h5_test/Makefile.in +++ /dev/null @@ -1,1137 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# This is part of the netCDF package. -# Copyright 2011 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# This entire directory will be skipped, unless the configure script -# is run with --enable-netcdf-4. This directory contains tests that -# only use HDF5; these tests don't use netCDF at all. -# -# If one of these tests fails, then netCDF-4 will not work correctly. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# If benchmarks were turned on, build and run a bunch more tests. -@BUILD_BENCHMARKS_TRUE@am__append_3 = tst_h_mem -check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) -TESTS = $(am__EXEEXT_2) $(am__append_5) $(am__append_6) - -# The parallel program is run from a script. -@TEST_PARALLEL4_TRUE@am__append_4 = tst_h_par -@TEST_PARALLEL4_TRUE@am__append_5 = run_par_tests.sh - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -@USE_VALGRIND_TESTS_TRUE@am__append_6 = run_valgrind_tests.sh -subdir = h5_test -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@BUILD_BENCHMARKS_TRUE@am__EXEEXT_1 = tst_h_mem$(EXEEXT) -am__EXEEXT_2 = tst_h_files$(EXEEXT) tst_h_files2$(EXEEXT) \ - tst_h_files4$(EXEEXT) tst_h_atts$(EXEEXT) tst_h_atts3$(EXEEXT) \ - tst_h_atts4$(EXEEXT) tst_h_vars$(EXEEXT) tst_h_vars2$(EXEEXT) \ - tst_h_vars3$(EXEEXT) tst_h_grps$(EXEEXT) \ - tst_h_compounds$(EXEEXT) tst_h_compounds2$(EXEEXT) \ - tst_h_wrt_cmp$(EXEEXT) tst_h_rd_cmp$(EXEEXT) tst_h_vl$(EXEEXT) \ - tst_h_opaques$(EXEEXT) tst_h_strings$(EXEEXT) \ - tst_h_strings1$(EXEEXT) tst_h_strings2$(EXEEXT) \ - tst_h_ints$(EXEEXT) tst_h_dimscales$(EXEEXT) \ - tst_h_dimscales1$(EXEEXT) tst_h_dimscales2$(EXEEXT) \ - tst_h_dimscales3$(EXEEXT) tst_h_enums$(EXEEXT) \ - tst_h_dimscales4$(EXEEXT) $(am__EXEEXT_1) -@TEST_PARALLEL4_TRUE@am__EXEEXT_3 = tst_h_par$(EXEEXT) -tst_h_atts_SOURCES = tst_h_atts.c -tst_h_atts_OBJECTS = tst_h_atts.$(OBJEXT) -tst_h_atts_LDADD = $(LDADD) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -tst_h_atts3_SOURCES = tst_h_atts3.c -tst_h_atts3_OBJECTS = tst_h_atts3.$(OBJEXT) -tst_h_atts3_LDADD = $(LDADD) -tst_h_atts4_SOURCES = tst_h_atts4.c -tst_h_atts4_OBJECTS = tst_h_atts4.$(OBJEXT) -tst_h_atts4_LDADD = $(LDADD) -tst_h_compounds_SOURCES = tst_h_compounds.c -tst_h_compounds_OBJECTS = tst_h_compounds.$(OBJEXT) -tst_h_compounds_LDADD = $(LDADD) -tst_h_compounds2_SOURCES = tst_h_compounds2.c -tst_h_compounds2_OBJECTS = tst_h_compounds2.$(OBJEXT) -tst_h_compounds2_LDADD = $(LDADD) -tst_h_dimscales_SOURCES = tst_h_dimscales.c -tst_h_dimscales_OBJECTS = tst_h_dimscales.$(OBJEXT) -tst_h_dimscales_LDADD = $(LDADD) -tst_h_dimscales1_SOURCES = tst_h_dimscales1.c -tst_h_dimscales1_OBJECTS = tst_h_dimscales1.$(OBJEXT) -tst_h_dimscales1_LDADD = $(LDADD) -tst_h_dimscales2_SOURCES = tst_h_dimscales2.c -tst_h_dimscales2_OBJECTS = tst_h_dimscales2.$(OBJEXT) -tst_h_dimscales2_LDADD = $(LDADD) -tst_h_dimscales3_SOURCES = tst_h_dimscales3.c -tst_h_dimscales3_OBJECTS = tst_h_dimscales3.$(OBJEXT) -tst_h_dimscales3_LDADD = $(LDADD) -tst_h_dimscales4_SOURCES = tst_h_dimscales4.c -tst_h_dimscales4_OBJECTS = tst_h_dimscales4.$(OBJEXT) -tst_h_dimscales4_LDADD = $(LDADD) -tst_h_enums_SOURCES = tst_h_enums.c -tst_h_enums_OBJECTS = tst_h_enums.$(OBJEXT) -tst_h_enums_LDADD = $(LDADD) -tst_h_files_SOURCES = tst_h_files.c -tst_h_files_OBJECTS = tst_h_files.$(OBJEXT) -tst_h_files_LDADD = $(LDADD) -tst_h_files2_SOURCES = tst_h_files2.c -tst_h_files2_OBJECTS = tst_h_files2.$(OBJEXT) -tst_h_files2_LDADD = $(LDADD) -tst_h_files4_SOURCES = tst_h_files4.c -tst_h_files4_OBJECTS = tst_h_files4.$(OBJEXT) -tst_h_files4_LDADD = $(LDADD) -tst_h_grps_SOURCES = tst_h_grps.c -tst_h_grps_OBJECTS = tst_h_grps.$(OBJEXT) -tst_h_grps_LDADD = $(LDADD) -tst_h_ints_SOURCES = tst_h_ints.c -tst_h_ints_OBJECTS = tst_h_ints.$(OBJEXT) -tst_h_ints_LDADD = $(LDADD) -tst_h_mem_SOURCES = tst_h_mem.c -tst_h_mem_OBJECTS = tst_h_mem.$(OBJEXT) -tst_h_mem_LDADD = $(LDADD) -tst_h_opaques_SOURCES = tst_h_opaques.c -tst_h_opaques_OBJECTS = tst_h_opaques.$(OBJEXT) -tst_h_opaques_LDADD = $(LDADD) -tst_h_par_SOURCES = tst_h_par.c -tst_h_par_OBJECTS = tst_h_par.$(OBJEXT) -tst_h_par_LDADD = $(LDADD) -tst_h_rd_cmp_SOURCES = tst_h_rd_cmp.c -tst_h_rd_cmp_OBJECTS = tst_h_rd_cmp.$(OBJEXT) -tst_h_rd_cmp_LDADD = $(LDADD) -tst_h_strings_SOURCES = tst_h_strings.c -tst_h_strings_OBJECTS = tst_h_strings.$(OBJEXT) -tst_h_strings_LDADD = $(LDADD) -tst_h_strings1_SOURCES = tst_h_strings1.c -tst_h_strings1_OBJECTS = tst_h_strings1.$(OBJEXT) -tst_h_strings1_LDADD = $(LDADD) -tst_h_strings2_SOURCES = tst_h_strings2.c -tst_h_strings2_OBJECTS = tst_h_strings2.$(OBJEXT) -tst_h_strings2_LDADD = $(LDADD) -tst_h_vars_SOURCES = tst_h_vars.c -tst_h_vars_OBJECTS = tst_h_vars.$(OBJEXT) -tst_h_vars_LDADD = $(LDADD) -tst_h_vars2_SOURCES = tst_h_vars2.c -tst_h_vars2_OBJECTS = tst_h_vars2.$(OBJEXT) -tst_h_vars2_LDADD = $(LDADD) -tst_h_vars3_SOURCES = tst_h_vars3.c -tst_h_vars3_OBJECTS = tst_h_vars3.$(OBJEXT) -tst_h_vars3_LDADD = $(LDADD) -tst_h_vl_SOURCES = tst_h_vl.c -tst_h_vl_OBJECTS = tst_h_vl.$(OBJEXT) -tst_h_vl_LDADD = $(LDADD) -tst_h_wrt_cmp_SOURCES = tst_h_wrt_cmp.c -tst_h_wrt_cmp_OBJECTS = tst_h_wrt_cmp.$(OBJEXT) -tst_h_wrt_cmp_LDADD = $(LDADD) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/tst_h_atts.Po \ - ./$(DEPDIR)/tst_h_atts3.Po ./$(DEPDIR)/tst_h_atts4.Po \ - ./$(DEPDIR)/tst_h_compounds.Po ./$(DEPDIR)/tst_h_compounds2.Po \ - ./$(DEPDIR)/tst_h_dimscales.Po ./$(DEPDIR)/tst_h_dimscales1.Po \ - ./$(DEPDIR)/tst_h_dimscales2.Po \ - ./$(DEPDIR)/tst_h_dimscales3.Po \ - ./$(DEPDIR)/tst_h_dimscales4.Po ./$(DEPDIR)/tst_h_enums.Po \ - ./$(DEPDIR)/tst_h_files.Po ./$(DEPDIR)/tst_h_files2.Po \ - ./$(DEPDIR)/tst_h_files4.Po ./$(DEPDIR)/tst_h_grps.Po \ - ./$(DEPDIR)/tst_h_ints.Po ./$(DEPDIR)/tst_h_mem.Po \ - ./$(DEPDIR)/tst_h_opaques.Po ./$(DEPDIR)/tst_h_par.Po \ - ./$(DEPDIR)/tst_h_rd_cmp.Po ./$(DEPDIR)/tst_h_strings.Po \ - ./$(DEPDIR)/tst_h_strings1.Po ./$(DEPDIR)/tst_h_strings2.Po \ - ./$(DEPDIR)/tst_h_vars.Po ./$(DEPDIR)/tst_h_vars2.Po \ - ./$(DEPDIR)/tst_h_vars3.Po ./$(DEPDIR)/tst_h_vl.Po \ - ./$(DEPDIR)/tst_h_wrt_cmp.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c tst_h_compounds.c \ - tst_h_compounds2.c tst_h_dimscales.c tst_h_dimscales1.c \ - tst_h_dimscales2.c tst_h_dimscales3.c tst_h_dimscales4.c \ - tst_h_enums.c tst_h_files.c tst_h_files2.c tst_h_files4.c \ - tst_h_grps.c tst_h_ints.c tst_h_mem.c tst_h_opaques.c \ - tst_h_par.c tst_h_rd_cmp.c tst_h_strings.c tst_h_strings1.c \ - tst_h_strings2.c tst_h_vars.c tst_h_vars2.c tst_h_vars3.c \ - tst_h_vl.c tst_h_wrt_cmp.c -DIST_SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c \ - tst_h_compounds.c tst_h_compounds2.c tst_h_dimscales.c \ - tst_h_dimscales1.c tst_h_dimscales2.c tst_h_dimscales3.c \ - tst_h_dimscales4.c tst_h_enums.c tst_h_files.c tst_h_files2.c \ - tst_h_files4.c tst_h_grps.c tst_h_ints.c tst_h_mem.c \ - tst_h_opaques.c tst_h_par.c tst_h_rd_cmp.c tst_h_strings.c \ - tst_h_strings1.c tst_h_strings2.c tst_h_vars.c tst_h_vars2.c \ - tst_h_vars3.c tst_h_vl.c tst_h_wrt_cmp.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Set AM_CPPFLAGS and AM_LDFLAGS based on user choices. - -# These programs test HDF5 to make sure it will do (some of) the stuff -# that netCDF-4 needs. -H5TESTS = tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 \ - tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps \ - tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_rd_cmp \ - tst_h_vl tst_h_opaques tst_h_strings tst_h_strings1 \ - tst_h_strings2 tst_h_ints tst_h_dimscales tst_h_dimscales1 \ - tst_h_dimscales2 tst_h_dimscales3 tst_h_enums tst_h_dimscales4 \ - $(am__append_3) - -# We must include these files in the distribution. -EXTRA_DIST = run_par_tests.sh run_valgrind_tests.sh \ -ref_tst_h_compounds.h5 ref_tst_h_compounds2.h5 run_par_tests.sh \ -run_valgrind_tests.sh ref_tst_compounds.nc h5_err_macros.h CMakeLists.txt - - -# Clean up test results. -CLEANFILES = tst_h_*.h5 -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 h5_test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign h5_test/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -tst_h_atts$(EXEEXT): $(tst_h_atts_OBJECTS) $(tst_h_atts_DEPENDENCIES) $(EXTRA_tst_h_atts_DEPENDENCIES) - @rm -f tst_h_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_atts_OBJECTS) $(tst_h_atts_LDADD) $(LIBS) - -tst_h_atts3$(EXEEXT): $(tst_h_atts3_OBJECTS) $(tst_h_atts3_DEPENDENCIES) $(EXTRA_tst_h_atts3_DEPENDENCIES) - @rm -f tst_h_atts3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_atts3_OBJECTS) $(tst_h_atts3_LDADD) $(LIBS) - -tst_h_atts4$(EXEEXT): $(tst_h_atts4_OBJECTS) $(tst_h_atts4_DEPENDENCIES) $(EXTRA_tst_h_atts4_DEPENDENCIES) - @rm -f tst_h_atts4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_atts4_OBJECTS) $(tst_h_atts4_LDADD) $(LIBS) - -tst_h_compounds$(EXEEXT): $(tst_h_compounds_OBJECTS) $(tst_h_compounds_DEPENDENCIES) $(EXTRA_tst_h_compounds_DEPENDENCIES) - @rm -f tst_h_compounds$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_compounds_OBJECTS) $(tst_h_compounds_LDADD) $(LIBS) - -tst_h_compounds2$(EXEEXT): $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_DEPENDENCIES) $(EXTRA_tst_h_compounds2_DEPENDENCIES) - @rm -f tst_h_compounds2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_LDADD) $(LIBS) - -tst_h_dimscales$(EXEEXT): $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_DEPENDENCIES) $(EXTRA_tst_h_dimscales_DEPENDENCIES) - @rm -f tst_h_dimscales$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_LDADD) $(LIBS) - -tst_h_dimscales1$(EXEEXT): $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_DEPENDENCIES) $(EXTRA_tst_h_dimscales1_DEPENDENCIES) - @rm -f tst_h_dimscales1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_LDADD) $(LIBS) - -tst_h_dimscales2$(EXEEXT): $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_DEPENDENCIES) $(EXTRA_tst_h_dimscales2_DEPENDENCIES) - @rm -f tst_h_dimscales2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_LDADD) $(LIBS) - -tst_h_dimscales3$(EXEEXT): $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_DEPENDENCIES) $(EXTRA_tst_h_dimscales3_DEPENDENCIES) - @rm -f tst_h_dimscales3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_LDADD) $(LIBS) - -tst_h_dimscales4$(EXEEXT): $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_DEPENDENCIES) $(EXTRA_tst_h_dimscales4_DEPENDENCIES) - @rm -f tst_h_dimscales4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_LDADD) $(LIBS) - -tst_h_enums$(EXEEXT): $(tst_h_enums_OBJECTS) $(tst_h_enums_DEPENDENCIES) $(EXTRA_tst_h_enums_DEPENDENCIES) - @rm -f tst_h_enums$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_enums_OBJECTS) $(tst_h_enums_LDADD) $(LIBS) - -tst_h_files$(EXEEXT): $(tst_h_files_OBJECTS) $(tst_h_files_DEPENDENCIES) $(EXTRA_tst_h_files_DEPENDENCIES) - @rm -f tst_h_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_files_OBJECTS) $(tst_h_files_LDADD) $(LIBS) - -tst_h_files2$(EXEEXT): $(tst_h_files2_OBJECTS) $(tst_h_files2_DEPENDENCIES) $(EXTRA_tst_h_files2_DEPENDENCIES) - @rm -f tst_h_files2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_files2_OBJECTS) $(tst_h_files2_LDADD) $(LIBS) - -tst_h_files4$(EXEEXT): $(tst_h_files4_OBJECTS) $(tst_h_files4_DEPENDENCIES) $(EXTRA_tst_h_files4_DEPENDENCIES) - @rm -f tst_h_files4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_files4_OBJECTS) $(tst_h_files4_LDADD) $(LIBS) - -tst_h_grps$(EXEEXT): $(tst_h_grps_OBJECTS) $(tst_h_grps_DEPENDENCIES) $(EXTRA_tst_h_grps_DEPENDENCIES) - @rm -f tst_h_grps$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_grps_OBJECTS) $(tst_h_grps_LDADD) $(LIBS) - -tst_h_ints$(EXEEXT): $(tst_h_ints_OBJECTS) $(tst_h_ints_DEPENDENCIES) $(EXTRA_tst_h_ints_DEPENDENCIES) - @rm -f tst_h_ints$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_ints_OBJECTS) $(tst_h_ints_LDADD) $(LIBS) - -tst_h_mem$(EXEEXT): $(tst_h_mem_OBJECTS) $(tst_h_mem_DEPENDENCIES) $(EXTRA_tst_h_mem_DEPENDENCIES) - @rm -f tst_h_mem$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_mem_OBJECTS) $(tst_h_mem_LDADD) $(LIBS) - -tst_h_opaques$(EXEEXT): $(tst_h_opaques_OBJECTS) $(tst_h_opaques_DEPENDENCIES) $(EXTRA_tst_h_opaques_DEPENDENCIES) - @rm -f tst_h_opaques$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_opaques_OBJECTS) $(tst_h_opaques_LDADD) $(LIBS) - -tst_h_par$(EXEEXT): $(tst_h_par_OBJECTS) $(tst_h_par_DEPENDENCIES) $(EXTRA_tst_h_par_DEPENDENCIES) - @rm -f tst_h_par$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_par_OBJECTS) $(tst_h_par_LDADD) $(LIBS) - -tst_h_rd_cmp$(EXEEXT): $(tst_h_rd_cmp_OBJECTS) $(tst_h_rd_cmp_DEPENDENCIES) $(EXTRA_tst_h_rd_cmp_DEPENDENCIES) - @rm -f tst_h_rd_cmp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_rd_cmp_OBJECTS) $(tst_h_rd_cmp_LDADD) $(LIBS) - -tst_h_strings$(EXEEXT): $(tst_h_strings_OBJECTS) $(tst_h_strings_DEPENDENCIES) $(EXTRA_tst_h_strings_DEPENDENCIES) - @rm -f tst_h_strings$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_strings_OBJECTS) $(tst_h_strings_LDADD) $(LIBS) - -tst_h_strings1$(EXEEXT): $(tst_h_strings1_OBJECTS) $(tst_h_strings1_DEPENDENCIES) $(EXTRA_tst_h_strings1_DEPENDENCIES) - @rm -f tst_h_strings1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_strings1_OBJECTS) $(tst_h_strings1_LDADD) $(LIBS) - -tst_h_strings2$(EXEEXT): $(tst_h_strings2_OBJECTS) $(tst_h_strings2_DEPENDENCIES) $(EXTRA_tst_h_strings2_DEPENDENCIES) - @rm -f tst_h_strings2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_strings2_OBJECTS) $(tst_h_strings2_LDADD) $(LIBS) - -tst_h_vars$(EXEEXT): $(tst_h_vars_OBJECTS) $(tst_h_vars_DEPENDENCIES) $(EXTRA_tst_h_vars_DEPENDENCIES) - @rm -f tst_h_vars$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_vars_OBJECTS) $(tst_h_vars_LDADD) $(LIBS) - -tst_h_vars2$(EXEEXT): $(tst_h_vars2_OBJECTS) $(tst_h_vars2_DEPENDENCIES) $(EXTRA_tst_h_vars2_DEPENDENCIES) - @rm -f tst_h_vars2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_vars2_OBJECTS) $(tst_h_vars2_LDADD) $(LIBS) - -tst_h_vars3$(EXEEXT): $(tst_h_vars3_OBJECTS) $(tst_h_vars3_DEPENDENCIES) $(EXTRA_tst_h_vars3_DEPENDENCIES) - @rm -f tst_h_vars3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_vars3_OBJECTS) $(tst_h_vars3_LDADD) $(LIBS) - -tst_h_vl$(EXEEXT): $(tst_h_vl_OBJECTS) $(tst_h_vl_DEPENDENCIES) $(EXTRA_tst_h_vl_DEPENDENCIES) - @rm -f tst_h_vl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_vl_OBJECTS) $(tst_h_vl_LDADD) $(LIBS) - -tst_h_wrt_cmp$(EXEEXT): $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_DEPENDENCIES) $(EXTRA_tst_h_wrt_cmp_DEPENDENCIES) - @rm -f tst_h_wrt_cmp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_atts3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_atts4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_compounds.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_compounds2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_dimscales.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_dimscales1.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_dimscales2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_dimscales3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_dimscales4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_enums.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_files2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_files4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_grps.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_ints.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_mem.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_opaques.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_par.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_rd_cmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_strings.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_strings1.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_strings2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_vars.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_vars2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_vars3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_vl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_wrt_cmp.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/tst_h_atts.Po - -rm -f ./$(DEPDIR)/tst_h_atts3.Po - -rm -f ./$(DEPDIR)/tst_h_atts4.Po - -rm -f ./$(DEPDIR)/tst_h_compounds.Po - -rm -f ./$(DEPDIR)/tst_h_compounds2.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales1.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales2.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales3.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales4.Po - -rm -f ./$(DEPDIR)/tst_h_enums.Po - -rm -f ./$(DEPDIR)/tst_h_files.Po - -rm -f ./$(DEPDIR)/tst_h_files2.Po - -rm -f ./$(DEPDIR)/tst_h_files4.Po - -rm -f ./$(DEPDIR)/tst_h_grps.Po - -rm -f ./$(DEPDIR)/tst_h_ints.Po - -rm -f ./$(DEPDIR)/tst_h_mem.Po - -rm -f ./$(DEPDIR)/tst_h_opaques.Po - -rm -f ./$(DEPDIR)/tst_h_par.Po - -rm -f ./$(DEPDIR)/tst_h_rd_cmp.Po - -rm -f ./$(DEPDIR)/tst_h_strings.Po - -rm -f ./$(DEPDIR)/tst_h_strings1.Po - -rm -f ./$(DEPDIR)/tst_h_strings2.Po - -rm -f ./$(DEPDIR)/tst_h_vars.Po - -rm -f ./$(DEPDIR)/tst_h_vars2.Po - -rm -f ./$(DEPDIR)/tst_h_vars3.Po - -rm -f ./$(DEPDIR)/tst_h_vl.Po - -rm -f ./$(DEPDIR)/tst_h_wrt_cmp.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/tst_h_atts.Po - -rm -f ./$(DEPDIR)/tst_h_atts3.Po - -rm -f ./$(DEPDIR)/tst_h_atts4.Po - -rm -f ./$(DEPDIR)/tst_h_compounds.Po - -rm -f ./$(DEPDIR)/tst_h_compounds2.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales1.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales2.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales3.Po - -rm -f ./$(DEPDIR)/tst_h_dimscales4.Po - -rm -f ./$(DEPDIR)/tst_h_enums.Po - -rm -f ./$(DEPDIR)/tst_h_files.Po - -rm -f ./$(DEPDIR)/tst_h_files2.Po - -rm -f ./$(DEPDIR)/tst_h_files4.Po - -rm -f ./$(DEPDIR)/tst_h_grps.Po - -rm -f ./$(DEPDIR)/tst_h_ints.Po - -rm -f ./$(DEPDIR)/tst_h_mem.Po - -rm -f ./$(DEPDIR)/tst_h_opaques.Po - -rm -f ./$(DEPDIR)/tst_h_par.Po - -rm -f ./$(DEPDIR)/tst_h_rd_cmp.Po - -rm -f ./$(DEPDIR)/tst_h_strings.Po - -rm -f ./$(DEPDIR)/tst_h_strings1.Po - -rm -f ./$(DEPDIR)/tst_h_strings2.Po - -rm -f ./$(DEPDIR)/tst_h_vars.Po - -rm -f ./$(DEPDIR)/tst_h_vars2.Po - -rm -f ./$(DEPDIR)/tst_h_vars3.Po - -rm -f ./$(DEPDIR)/tst_h_vl.Po - -rm -f ./$(DEPDIR)/tst_h_wrt_cmp.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/h5_test/run_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/h5_test/run_valgrind_tests.sh deleted file mode 100755 index 7ab78266aa2..00000000000 --- a/contrib/netcdf/4.4.1.1/h5_test/run_valgrind_tests.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='tst_h_files tst_h_files2 tst_h_files4 tst_h_atts '\ -'tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps '\ -'tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_rd_cmp tst_h_vl '\ -'tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints '\ -'tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 '\ -'tst_h_enums' - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_rd_cmp.c b/contrib/netcdf/4.4.1.1/h5_test/tst_h_rd_cmp.c deleted file mode 100644 index b46daffda2c..00000000000 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_rd_cmp.c +++ /dev/null @@ -1,62 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2007 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test HDF5 compound types. -*/ - -#include "h5_err_macros.h" -#include - -#define FILE_NAME "tst_h_wrt_cmp.h5" -#define DIM1_LEN 3 -#define COMPOUND_NAME "cmp" -#define VAR_NAME "var" - -int -main() -{ - hid_t fileid, access_plist, spaceid, typeid; - hid_t datasetid; - struct s1 { - unsigned char c1; - double d; - } data[DIM1_LEN]; - int i; - - printf("\n*** Checking HDF5 compound types (we're almost there kids).\n"); - printf("*** Checking packing of HDF5 compound types..."); - - /* Open file. */ - if ((access_plist = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; - if (H5Pset_fclose_degree(access_plist, H5F_CLOSE_STRONG)) ERR; - if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, access_plist)) < 0) ERR; - - /* Open dataset. */ - if ((datasetid = H5Dopen1(fileid, VAR_NAME)) < 0) ERR; - - /* Check space. */ - if ((spaceid = H5Dget_space(datasetid)) < 0) ERR; - if (H5Sget_simple_extent_ndims(spaceid) != 1) ERR; - if (H5Sget_simple_extent_npoints(spaceid) != DIM1_LEN) ERR; - - /* Get type. */ - if ((typeid = H5Dget_type(datasetid)) < 0) ERR; - -/* if ((native_type = H5Tget_native_type(typeid, H5T_DIR_DEFAULT)) < 0) ERR;*/ - - /* Read the data. */ - if (H5Dread(datasetid, typeid, H5S_ALL, H5S_ALL, H5P_DEFAULT, - data) < 0) ERR; - - /* Check the data. */ - for (i=0; i - -#define FILE_NAME "tst_h_wrt_cmp.h5" -#define DIM1_LEN 3 -#define COMPOUND_NAME "cmp" -#define VAR_NAME "var" - -int -main() -{ - hid_t fileid, access_plist, spaceid, typeid; - hid_t datasetid; - hsize_t dims[1]; - char dummy[] = " "; - struct s1 - { - unsigned char c1; - double d; - } data[DIM1_LEN]; - int i; - - /* Initialize our data space. This is required to keep valgrind - * happy. It makes no difference to the execution of the - * program. */ - for (i = 0; i < DIM1_LEN; i++) - memcpy((void *)(&data[i]), (void *)dummy, sizeof(struct s1)); - - /* Now init our values. */ - for (i = 0; i < DIM1_LEN; i++) - { - data[i].c1 = 126; - data[i].d = -9999999; - } - - printf("\n*** Checking HDF5 compound types (even more so).\n"); - printf("*** Checking packing of HDF5 compound types..."); - - /* Open file and create group. */ - if ((access_plist = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; - if (H5Pset_fclose_degree(access_plist, H5F_CLOSE_STRONG)) ERR; - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, - access_plist)) < 0) ERR; - - /* Create a simple compound type. */ - if ((typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s1))) < 0) ERR; - if (H5Tinsert(typeid, "c1", HOFFSET(struct s1, c1), H5T_NATIVE_UCHAR) < 0) ERR; - if (H5Tinsert(typeid, "d", HOFFSET(struct s1, d), H5T_NATIVE_DOUBLE) < 0) ERR; - if (H5Tcommit(fileid, COMPOUND_NAME, typeid) < 0) ERR; - - /* Create a space. */ - dims[0] = DIM1_LEN; - if ((spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; - - /* Create a dataset of this compound type. */ - if ((datasetid = H5Dcreate(fileid, VAR_NAME, typeid, spaceid, - H5P_DEFAULT)) < 0) ERR; - - /* Write some data. */ - if (H5Dwrite(datasetid, typeid, H5S_ALL, H5S_ALL, H5P_DEFAULT, - data) < 0) ERR; - - /* Release all resources. */ - if (H5Pclose(access_plist) < 0) ERR; - if (H5Tclose(typeid) < 0) ERR; - if (H5Sclose(spaceid) < 0) ERR; - if (H5Fclose(fileid) < 0) ERR; - - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/include/CMakeLists.txt b/contrib/netcdf/4.4.1.1/include/CMakeLists.txt deleted file mode 100644 index 1cc7580e380..00000000000 --- a/contrib/netcdf/4.4.1.1/include/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -##### -# Installation of various netCDF headers. -##### - -INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT headers) - -INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_mem.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT headers) - -INSTALL(FILES ${netCDF_BINARY_DIR}/include/netcdf_meta.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT headers) - -IF(ENABLE_PNETCDF OR ENABLE_PARALLEL4) - INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_par.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - COMPONENT headers) -ENDIF() - - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} Makefile.am CMakeLists.txt) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/include/Makefile.am b/contrib/netcdf/4.4.1.1/include/Makefile.am deleted file mode 100644 index aebb8e48394..00000000000 --- a/contrib/netcdf/4.4.1.1/include/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2010, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build the include -# directory. - -include_HEADERS = netcdf.h netcdf_meta.h - -if BUILD_PARALLEL -include_HEADERS += netcdf_par.h -endif - -if BUILD_DISKLESS -include_HEADERS += netcdf_mem.h -endif - -noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h \ -nclist.h ncuri.h utf8proc.h ncdispatch.h ncdimscale.h \ -netcdf_f.h err_macros.h ncbytes.h nchashmap.h ceconstraints.h rnd.h \ -nclog.h ncconfigure.h nc4internal.h nctime.h nc3dispatch.h nc3internal.h \ -onstack.h nc_hashmap.h - -if USE_NETCDF4 -noinst_HEADERS += ncaux.h -endif - -EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in diff --git a/contrib/netcdf/4.4.1.1/include/Makefile.in b/contrib/netcdf/4.4.1.1/include/Makefile.in deleted file mode 100644 index aa184e6e08d..00000000000 --- a/contrib/netcdf/4.4.1.1/include/Makefile.in +++ /dev/null @@ -1,641 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2010, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build the include -# directory. - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@BUILD_PARALLEL_TRUE@am__append_1 = netcdf_par.h -@BUILD_DISKLESS_TRUE@am__append_2 = netcdf_mem.h -@USE_NETCDF4_TRUE@am__append_3 = ncaux.h -subdir = include -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__include_HEADERS_DIST) \ - $(am__noinst_HEADERS_DIST) $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = netcdf_meta.h -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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__include_HEADERS_DIST = netcdf.h netcdf_meta.h netcdf_par.h \ - netcdf_mem.h -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(includedir)" -am__noinst_HEADERS_DIST = nc_logging.h nc_tests.h fbits.h nc.h \ - nclist.h ncuri.h utf8proc.h ncdispatch.h ncdimscale.h \ - netcdf_f.h err_macros.h ncbytes.h nchashmap.h ceconstraints.h \ - rnd.h nclog.h ncconfigure.h nc4internal.h nctime.h \ - nc3dispatch.h nc3internal.h onstack.h nc_hashmap.h ncaux.h -HEADERS = $(include_HEADERS) $(noinst_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/netcdf_meta.h.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ -include_HEADERS = netcdf.h netcdf_meta.h $(am__append_1) \ - $(am__append_2) -noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h nclist.h ncuri.h \ - utf8proc.h ncdispatch.h ncdimscale.h netcdf_f.h err_macros.h \ - ncbytes.h nchashmap.h ceconstraints.h rnd.h nclog.h \ - ncconfigure.h nc4internal.h nctime.h nc3dispatch.h \ - nc3internal.h onstack.h nc_hashmap.h $(am__append_3) -EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in -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 include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): -netcdf_meta.h: $(top_builddir)/config.status $(srcdir)/netcdf_meta.h.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-includeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-includeHEADERS install-info install-info-am \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-includeHEADERS - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/include/err_macros.h b/contrib/netcdf/4.4.1.1/include/err_macros.h deleted file mode 100644 index 5d52eb16ed7..00000000000 --- a/contrib/netcdf/4.4.1.1/include/err_macros.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Common includes, defines, etc., for test code in the libsrc4 and - nc_test4 directories. -*/ - -#ifndef _ERR_MACROS_H -#define _ERR_MACROS_H - -#include -#include -#include -#include -#include - -/* Err is used to keep track of errors within each set of tests, - * total_err is the number of errors in the entire test program, which - * generally cosists of several sets of tests. */ -static int total_err = 0, err = 0; - -#if 0 -/* This is handy for print statements. */ -static char *format_name[] = {"", "classic", "64-bit offset", "netCDF-4", - "netCDF-4 classic model"}; -#endif - -/* This macro prints an error message with line number and name of - * test program. */ -#define ERR do { \ -fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ -err++; \ -fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ - __FILE__, __LINE__); \ -return 2; \ -} while (0) - -/* This macro prints an error message with line number and name of - * test program, and then exits the program. */ - -#define ERR_RET do { \ -fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ -fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ - __FILE__, __LINE__); \ -return 2; \ -} while (0) - -#define ERR_GOTO do { \ -fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ -fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ - __FILE__, __LINE__); \ -goto error; \ -} while (0) - -int ERR_report(int stat, const char* file, int line) -{ - fflush(stdout); - fprintf(stderr, "Sorry! Unexpected result, %s, line: %d; status=%d\n", - file,line,stat); - fflush(stdout); - return 1; -} - -#define ERRSTAT(stat) {err+=ERR_report(stat,__FILE__,__LINE__);} - - -/* After a set of tests, report the number of errors, and increment - * total_err. */ -#define SUMMARIZE_ERR do { \ - if (err) \ - { \ - printf("%d failures\n", err); \ - total_err += err; \ - err = 0; \ - } \ - else \ - printf("ok.\n"); \ -} while (0) - -/* If extra memory debugging is not in use (as it usually isn't), - * define away the nc_exit function, which may be in some tests. */ -#ifndef EXTRA_MEM_DEBUG -#define nc_exit() -#endif - -/* This macro prints out our total number of errors, if any, and exits - * with a 0 if there are not, or a 2 if there were errors. Make will - * stop if a non-zero value is returned from a test program. */ -#define FINAL_RESULTS do { \ - if (total_err) \ - { \ - printf("%d errors detected! Sorry!\n", total_err); \ - return 2; \ - } \ - printf("*** Tests successful!\n"); \ - return 0; \ -} while (0) - -#endif /* _ERR_MACROS_H */ diff --git a/contrib/netcdf/4.4.1.1/include/nc4internal.h b/contrib/netcdf/4.4.1.1/include/nc4internal.h deleted file mode 100644 index bfd36780058..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nc4internal.h +++ /dev/null @@ -1,485 +0,0 @@ -/** \file - This header file contains the definitions of structs used to hold - netCDF file metadata in memory. - - Copyright 2005-2011 University Corporation for Atmospheric - Research/Unidata. -*/ - -#ifndef _NC4INTERNAL_ -#define _NC4INTERNAL_ - -#include "config.h" -#include -#include -#include -#include -#include -#include - - -#include "ncdimscale.h" -#include "nc_logging.h" - -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif /* USE_PARALLEL */ -#include "netcdf.h" -#include "netcdf_f.h" - -/* Always needed */ -#include "nc.h" - -#ifdef USE_HDF4 -#include -#endif - -#define FILE_ID_MASK (0xffff0000) -#define GRP_ID_MASK (0x0000ffff) -#define ID_SHIFT (16) - -typedef enum {GET, PUT} NC_PG_T; -typedef enum {VAR, DIM, ATT} NC_OBJ_T; - -#define NC_MAX_HDF5_NAME (NC_MAX_NAME + 10) -#define NC_V2_ERR (-1) - -/* The name of the root group. */ -#define NC_GROUP_NAME "/" - -#define MEGABYTE 1048576 - -/* - * limits of the external representation - */ -#define X_SCHAR_MIN (-128) -#define X_SCHAR_MAX 127 -#define X_UCHAR_MAX 255U -#define X_SHORT_MIN (-32768) -#define X_SHRT_MIN X_SHORT_MIN /* alias compatible with limits.h */ -#define X_SHORT_MAX 32767 -#define X_SHRT_MAX X_SHORT_MAX /* alias compatible with limits.h */ -#define X_USHORT_MAX 65535U -#define X_USHRT_MAX X_USHORT_MAX /* alias compatible with limits.h */ -#define X_INT_MIN (-2147483647-1) -#define X_INT_MAX 2147483647 -#define X_LONG_MIN X_INT_MIN -#define X_LONG_MAX X_INT_MAX -#define X_UINT_MAX 4294967295U -#ifdef WIN32 /* Windows, of course, has to be a *little* different. */ -#define X_FLOAT_MAX 3.402823466e+38f -#else -#define X_FLOAT_MAX 3.40282347e+38f -#endif /* WIN32 */ -#define X_FLOAT_MIN (-X_FLOAT_MAX) -#define X_DOUBLE_MAX 1.7976931348623157e+308 -#define X_DOUBLE_MIN (-X_DOUBLE_MAX) - -/* These have to do with creating chuncked datasets in HDF5. */ -#define NC_HDF5_UNLIMITED_DIMSIZE (0) -#define NC_HDF5_CHUNKSIZE_FACTOR (10) -#define NC_HDF5_MIN_CHUNK_SIZE (2) - -#define NC_EMPTY_SCALE "NC_EMPTY_SCALE" - -/* This is an attribute I had to add to handle multidimensional - * coordinate variables. */ -#define COORDINATES "_Netcdf4Coordinates" -#define COORDINATES_LEN (NC_MAX_NAME * 5) - -/* This is used when the user defines a non-coordinate variable with - * same name as a dimension. */ -#define NON_COORD_PREPEND "_nc4_non_coord_" - -/* An attribute in the HDF5 root group of this name means that the - * file must follow strict netCDF classic format rules. */ -#define NC3_STRICT_ATT_NAME "_nc3_strict" - -/* If this attribute is present on a dimscale variable, use the value - * as the netCDF dimid. */ -#define NC_DIMID_ATT_NAME "_Netcdf4Dimid" - -/* Boolean type, to make the code easier to read */ -typedef enum {NC_FALSE = 0, NC_TRUE = 1} nc_bool_t; - -/*Forward*/ -struct NCFILEINFO; - -/* Generic doubly-linked list node */ -typedef struct NC_LIST_NODE -{ - void *next; - void *prev; -} NC_LIST_NODE_T; - -/* This is a struct to handle the dim metadata. */ -typedef struct NC_DIM_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - size_t len; - uint32_t hash; - int dimid; - nc_bool_t unlimited; /* True if the dimension is unlimited */ - nc_bool_t extended; /* True if the dimension needs to be extended */ - nc_bool_t too_long; /* True if len is too big to fit in local size_t. */ - hid_t hdf_dimscaleid; - HDF5_OBJID_T hdf5_objid; - struct NC_VAR_INFO *coord_var; /* The coord var, if it exists. */ -} NC_DIM_INFO_T; - -typedef struct NC_ATT_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - int len; - nc_bool_t dirty; /* True if attribute modified */ - nc_bool_t created; /* True if attribute already created */ - nc_type nc_typeid; /* netCDF type of attribute's data */ - hid_t native_hdf_typeid; /* Native HDF5 datatype for attribute's data */ - int attnum; - void *data; - nc_vlen_t *vldata; /* only used for vlen */ - char **stdata; /* only for string type. */ -} NC_ATT_INFO_T; - -/* This is a struct to handle the var metadata. */ -typedef struct NC_VAR_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - char *hdf5_name; /* used if different from name */ - int ndims; - int *dimids; - NC_DIM_INFO_T **dim; - int varid; - int natts; - uint32_t hash; - nc_bool_t is_new_var; /* True if variable is newly created */ - nc_bool_t was_coord_var; /* True if variable was a coordinate var, but either the dim or var has been renamed */ - nc_bool_t became_coord_var; /* True if variable _became_ a coordinate var, because either the dim or var has been renamed */ - nc_bool_t fill_val_changed; /* True if variable's fill value changes after it has been created */ - nc_bool_t attr_dirty; /* True if variable's attributes are dirty and should be rewritten */ - nc_bool_t created; /* Variable has already been created (_not_ that it was just created) */ - nc_bool_t written_to; /* True if variable has data written to it */ - struct NC_TYPE_INFO *type_info; - hid_t hdf_datasetid; - NC_ATT_INFO_T *att; - nc_bool_t no_fill; /* True if no fill value is defined for var */ - void *fill_value; - size_t *chunksizes; - nc_bool_t contiguous; /* True if variable is stored contiguously in HDF5 file */ - int parallel_access; /* Type of parallel access for I/O on variable (collective or independent) */ - nc_bool_t dimscale; /* True if var is a dimscale */ - nc_bool_t *dimscale_attached; /* Array of flags that are true if dimscale is attached for that dim index */ - HDF5_OBJID_T *dimscale_hdf5_objids; - nc_bool_t deflate; /* True if var has deflate filter applied */ - int deflate_level; - nc_bool_t shuffle; /* True if var has shuffle filter applied */ - nc_bool_t fletcher32; /* True if var has fletcher32 filter applied */ - nc_bool_t szip; /* True if var has szip filter applied */ - int options_mask; - int pixels_per_block; - size_t chunk_cache_size, chunk_cache_nelems; - float chunk_cache_preemption; -#ifdef USE_HDF4 - /* Stuff below is for hdf4 files. */ - int sdsid; - int hdf4_data_type; -#endif /* USE_HDF4 */ - /* Stuff below for diskless data files. */ - void *diskless_data; -} NC_VAR_INFO_T; - -typedef struct NC_FIELD_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - nc_type nc_typeid; - hid_t hdf_typeid; - hid_t native_hdf_typeid; - size_t offset; - char *name; - int fieldid; /* ID (index?) of field */ - int ndims; - int *dim_size; -} NC_FIELD_INFO_T; - -typedef struct NC_ENUM_MEMBER_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - void *value; -} NC_ENUM_MEMBER_INFO_T; - -typedef struct NC_TYPE_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - nc_type nc_typeid; /* netCDF type ID, equivalent to a pre-defined type - * for atomic types, but a dynamically - * defined value for user-defined types (stored - * as named datatypes in the HDF5 file). - */ - unsigned rc; /* Ref. count of objects using this type */ - hid_t hdf_typeid; /* HDF5 type ID, in the file */ - hid_t native_hdf_typeid; /* HDF5 type ID, in memory */ - int endianness; /* What endianness for the type? */ - /* (Set for integer types as well as "complex" - * types, like compound/enum/vlen, used for the - * endianness of the fields and/or base type) - */ - size_t size; /* Size of the type in memory, in bytes */ - nc_bool_t committed; /* True when datatype is committed in the file */ - nc_type nc_type_class; /* NC_VLEN, NC_COMPOUND, NC_OPAQUE, or NC_ENUM - * NOTE: NC_INT is used for all integer types, - * NC_FLOAT is used for all floating-point - * types, and NC_STRING is also used for - * fixed- and variable-length strings. - * (NC_CHAR is used for characters though) - * - * This is somewhat redundant with the - * nc_type field, but allows the code to - * have a single location to look at for - * the "kind" of a type. - */ - - /* Information for each type or class */ - union { - struct { - int num_members; - NC_ENUM_MEMBER_INFO_T *enum_member; - nc_type base_nc_typeid; - hid_t base_hdf_typeid; - } e; /* Enum */ - struct { - int num_fields; - NC_FIELD_INFO_T *field; - } c; /* Compound */ - struct { - nc_type base_nc_typeid; - hid_t base_hdf_typeid; - } v; /* Variable-length */ - } u; /* Union of structs, for each type/class */ -} NC_TYPE_INFO_T; - -/* This holds information for one group. Groups reproduce with - * parthenogenesis. */ -typedef struct NC_GRP_INFO -{ - NC_LIST_NODE_T l; /* Use generic doubly-linked list (must be first) */ - char *name; - hid_t hdf_grpid; - int nc_grpid; - struct NC_HDF5_FILE_INFO *nc4_info; - struct NC_GRP_INFO *parent; - struct NC_GRP_INFO *children; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - NC_ATT_INFO_T *att; - NC_TYPE_INFO_T *type; - int nvars; - int ndims; - int natts; -} NC_GRP_INFO_T; - -/* These constants apply to the cmode parameter in the - * HDF5_FILE_INFO_T defined below. */ -#define NC_CREAT 2 /* in create phase, cleared by ncendef */ -#define NC_INDEF 8 /* in define mode, cleared by ncendef */ -#define NC_NSYNC 0x10 /* synchronise numrecs on change */ -#define NC_HSYNC 0x20 /* synchronise whole header on change */ -#define NC_NDIRTY 0x40 /* numrecs has changed */ -#define NC_HDIRTY 0x80 /* header info has changed */ - - -/* This is the metadata we need to keep track of for each - netcdf-4/HDF5 file. */ -typedef struct NC_HDF5_FILE_INFO -{ - NC* controller; - hid_t hdfid; -#ifdef USE_PARALLEL4 - MPI_Comm comm; /* Copy of MPI Communicator used to open the file */ - MPI_Info info; /* Copy of MPI Information Object used to open the file */ -#endif - int flags; - int cmode; - int nvars; - int ndims; - int natts; - nc_bool_t parallel; /* True if file is open for parallel access */ - nc_bool_t redef; /* True if redefining an existing file */ - int fill_mode; /* Fill mode for vars - Unused internally currently */ - nc_bool_t no_write; /* true if nc_open has mode NC_NOWRITE. */ - NC_GRP_INFO_T *root_grp; - short next_nc_grpid; - NC_TYPE_INFO_T *type; - int next_typeid; - int next_dimid; -#ifdef USE_HDF4 - nc_bool_t hdf4; /* True for HDF4 file */ - int sdid; -#endif /* USE_HDF4 */ - struct NCFILEINFO* fileinfo; -} NC_HDF5_FILE_INFO_T; - - -/* Defined in lookup3.c */ -extern uint32_t hash_fast(const void *key, size_t length); - -/* These functions convert between netcdf and HDF5 types. */ -int nc4_get_typelen_mem(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, - int is_long, size_t *len); -int nc4_convert_type(const void *src, void *dest, - const nc_type src_type, const nc_type dest_type, - const size_t len, int *range_error, - const void *fill_value, int strict_nc3, int src_long, - int dest_long); - -/* These functions do HDF5 things. */ -int rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid); -int rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid); -int nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset); -int nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp, - const size_t *countp, nc_type xtype, int is_long, void *op); -int nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp, - const size_t *countp, nc_type xtype, int is_long, void *op); -int nc4_rec_match_dimscales(NC_GRP_INFO_T *grp); -int nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp); -int nc4_rec_write_metadata(NC_GRP_INFO_T *grp, nc_bool_t bad_coord_order); -int nc4_rec_write_groups_types(NC_GRP_INFO_T *grp); -int nc4_enddef_netcdf4_file(NC_HDF5_FILE_INFO_T *h5); -int nc4_reopen_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var); -int nc4_adjust_var_cache(NC_GRP_INFO_T *grp, NC_VAR_INFO_T * var); - -/* The following functions manipulate the in-memory linked list of - metadata, without using HDF calls. */ -int nc4_find_nc_grp_h5(int ncid, NC **nc, NC_GRP_INFO_T **grp, - NC_HDF5_FILE_INFO_T **h5); -int nc4_find_grp_h5(int ncid, NC_GRP_INFO_T **grp, NC_HDF5_FILE_INFO_T **h5); -int nc4_find_nc4_grp(int ncid, NC_GRP_INFO_T **grp); -NC_GRP_INFO_T *nc4_find_nc_grp(int ncid); -NC_GRP_INFO_T *nc4_rec_find_grp(NC_GRP_INFO_T *start_grp, int target_nc_grpid); -NC *nc4_find_nc_file(int ncid, NC_HDF5_FILE_INFO_T**); -int nc4_find_dim(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T **dim, NC_GRP_INFO_T **dim_grp); -int nc4_find_var(NC_GRP_INFO_T *grp, const char *name, NC_VAR_INFO_T **var); -int nc4_find_dim_len(NC_GRP_INFO_T *grp, int dimid, size_t **len); -int nc4_find_type(const NC_HDF5_FILE_INFO_T *h5, int typeid1, NC_TYPE_INFO_T **type); -NC_TYPE_INFO_T *nc4_rec_find_nc_type(const NC_GRP_INFO_T *start_grp, nc_type target_nc_typeid); -NC_TYPE_INFO_T *nc4_rec_find_hdf_type(NC_GRP_INFO_T *start_grp, hid_t target_hdf_typeid); -NC_TYPE_INFO_T *nc4_rec_find_named_type(NC_GRP_INFO_T *start_grp, char *name); -NC_TYPE_INFO_T *nc4_rec_find_equal_type(NC_GRP_INFO_T *start_grp, int ncid1, NC_TYPE_INFO_T *type); -int nc4_find_nc_att(int ncid, int varid, const char *name, int attnum, - NC_ATT_INFO_T **att); -int nc4_find_g_var_nc(NC *nc, int ncid, int varid, - NC_GRP_INFO_T **grp, NC_VAR_INFO_T **var); -int nc4_find_grp_att(NC_GRP_INFO_T *grp, int varid, const char *name, int attnum, - NC_ATT_INFO_T **att); -int nc4_get_hdf_typeid(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, - hid_t *hdf_typeid, int endianness); -int nc4_get_typeclass(const NC_HDF5_FILE_INFO_T *h5, nc_type xtype, - int *type_class); - -/* Free various types */ -int nc4_type_free(NC_TYPE_INFO_T *type); - -/* These list functions add and delete vars, atts. */ -int nc4_nc4f_list_add(NC *nc, const char *path, int mode); -int nc4_var_list_add(NC_VAR_INFO_T **list, NC_VAR_INFO_T **var); -int nc4_var_list_del(NC_VAR_INFO_T **list, NC_VAR_INFO_T *var); -int nc4_dim_list_add(NC_DIM_INFO_T **list, NC_DIM_INFO_T **dim); -int nc4_dim_list_del(NC_DIM_INFO_T **list, NC_DIM_INFO_T *dim); -int nc4_att_list_add(NC_ATT_INFO_T **list, NC_ATT_INFO_T **att); -int nc4_type_list_add(NC_GRP_INFO_T *grp, size_t size, const char *name, - NC_TYPE_INFO_T **type); -int nc4_field_list_add(NC_FIELD_INFO_T **list, int fieldid, const char *name, - size_t offset, hid_t field_hdf_typeid, hid_t native_typeid, - nc_type xtype, int ndims, const int *dim_sizesp); -void nc4_file_list_del(NC *nc); -int nc4_att_list_del(NC_ATT_INFO_T **list, NC_ATT_INFO_T *att); -int nc4_grp_list_add(NC_GRP_INFO_T **list, int new_nc_grpid, NC_GRP_INFO_T *parent_grp, - NC *nc, char *name, NC_GRP_INFO_T **grp); -int nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp); -int nc4_enum_member_add(NC_ENUM_MEMBER_INFO_T **list, size_t size, - const char *name, const void *value); - -/* Break & reform coordinate variables */ -int nc4_break_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T *dim); -int nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T *dim); - -/* Check and normalize names. */ -int NC_check_name(const char *name); -int nc4_check_name(const char *name, char *norm_name); -int nc4_normalize_name(const char *name, char *norm_name); -int nc4_check_dup_name(NC_GRP_INFO_T *grp, char *norm_name); - -/* HDF5 initialization */ -extern int nc4_hdf5_initialized; -extern void nc4_hdf5_initialize(void); - -/* This is only included if --enable-logging is used for configure; it - prints info about the metadata to stderr. */ -#ifdef LOGGING -int log_metadata_nc(NC *nc); -#endif - -/* Define accessors for the dispatchdata */ -#define NC4_DATA(nc) ((NC_HDF5_FILE_INFO_T*)(nc)->dispatchdata) -#define NC4_DATA_SET(nc,data) ((nc)->dispatchdata = (void*)(data)) - -/* Reserved Attributes */ -extern const char* NC_RESERVED_VARATT_LIST[]; -extern const char* NC_RESERVED_ATT_LIST[]; -extern const char* NC_RESERVED_SPECIAL_LIST[]; -#define NC_ATT_REFERENCE_LIST "REFERENCE_LIST" -#define NC_ATT_CLASS "CLASS" -#define NC_ATT_DIMENSION_LIST "DIMENSION_LIST" -#define NC_ATT_NAME "NAME" -#define NC_ATT_COORDINATES COORDINATES /*defined above*/ -#define NC_ATT_FORMAT "_Format" - -/**************************************************/ -/** -For netcdf4 files, capture state information about the following: -1. Global: netcdf library version -2. Global: hdf5 library version -3. Per file: superblock version -4. Per File: was it created by netcdf-4? -5. Per file: _NCProperties attribute -*/ - -#define NCPROPS "_NCProperties" -#define NCPROPS_VERSION (1) -#define NCPROPSSEP '|' - -/* Currently used properties */ -#define NCPVERSION "version" /* Of the properties format */ -#define NCPHDF5LIBVERSION "hdf5libversion" -#define NCPNCLIBVERSION "netcdflibversion" - -/* Other hidden attributes */ -#define ISNETCDF4ATT "_IsNetcdf4" -#define SUPERBLOCKATT "_SuperblockVersion" - -struct NCFILEINFO { - int superblockversion; - /* Following is filled from NCPROPS attribute or from global version */ - struct NCPROPINFO { - int version; /* 0 => not defined */ - char hdf5ver[NC_MAX_NAME+1]; - char netcdfver[NC_MAX_NAME+1]; - } propattr; -}; - -extern struct NCPROPINFO globalpropinfo; - -extern int NC4_fileinfo_init(void); /*libsrc4/ncinfo.c*/ -extern int NC4_get_fileinfo(struct NC_HDF5_FILE_INFO* info, struct NCPROPINFO*); /*libsrc4/ncinfo.c*/ -extern int NC4_put_propattr(struct NC_HDF5_FILE_INFO* info); /*libsrc4/ncinfo.c*/ -extern int NC4_buildpropinfo(struct NCPROPINFO* info,char** propdatap); - -extern int NC4_hdf5get_libversion(unsigned*,unsigned*,unsigned*);/*libsrc4/nc4hdf.c*/ -extern int NC4_hdf5get_superblock(struct NC_HDF5_FILE_INFO*, int*);/*libsrc4/nc4hdf.c*/ -extern int NC4_isnetcdf4(struct NC_HDF5_FILE_INFO*); /*libsrc4/nc4hdf.c*/ - -#endif /* _NETCDF4_ */ diff --git a/contrib/netcdf/4.4.1.1/include/nc_hashmap.h b/contrib/netcdf/4.4.1.1/include/nc_hashmap.h deleted file mode 100644 index 848cf421029..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nc_hashmap.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef HASHMAP_H_INCLUDED -#define HASHMAP_H_INCLUDED -#include - -/** Hashmap structure (forward declaration) */ -struct s_hashmap; -typedef struct s_hashmap NC_hashmap; - - - -#endif diff --git a/contrib/netcdf/4.4.1.1/include/nc_logging.h b/contrib/netcdf/4.4.1.1/include/nc_logging.h deleted file mode 100644 index a6d68cd50a6..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nc_logging.h +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2010, University Corporation for Atmospheric Research. See - COPYRIGHT file for copying and redistribution conditions. - - This file is part of netcdf-4, a netCDF-like interface for HDF5, or - a HDF5 backend for netCDF, depending on your point of view. - - This file contains macros and prototyes relating to logging. - - $Id: nc_logging.h,v 1.1 2010/06/01 15:34:49 ed Exp $ -*/ - -#ifndef _NCLOGGING_ -#define _NCLOGGING_ - -#include -#include - -#ifdef LOGGING - -/* To log something... */ -void nc_log(int severity, const char *fmt, ...); -void nc_log_hdf5(void); - -#define LOG(e) nc_log e - -/* To log based on error code, and set retval. */ -#define BAIL2(e) \ - do { \ - retval = e; \ - LOG((0, "file %s, line %d.\n%s", __FILE__, __LINE__, nc_strerror(e))); \ - nc_log_hdf5(); \ - } while (0) - -/* To set retval and jump to exit, without logging error message. */ -#define BAIL_QUIET(e) \ - do { \ - retval = e; \ - goto exit; \ - } while (0) - -#else /* LOGGING */ - -/* These definitions will be used unless LOGGING is defined. */ - -#define LOG(e) - -#define BAIL2(e) \ - do { \ - retval = e; \ - } while (0) - -#define BAIL_QUIET BAIL - -#define nc_set_log_level(e) - -#endif /* LOGGING */ - -/* To log an error message (if 'LOGGING' is defined), set retval, and jump to exit. */ -#define BAIL(e) \ - do { \ - BAIL2(e); \ - goto exit; \ - } while (0) - -#endif /* _NCLOGGING_ */ - diff --git a/contrib/netcdf/4.4.1.1/include/nc_tests.h b/contrib/netcdf/4.4.1.1/include/nc_tests.h deleted file mode 100644 index 8ac5bc77f1f..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nc_tests.h +++ /dev/null @@ -1,46 +0,0 @@ -/** \internal -\file -Common includes, defines, etc., for test code in the libsrc4 and -nc_test4 directories. - -This is part of the netCDF package. Copyright 2005 University -Corporation for Atmospheric Research/Unidata. See \ref copyright file -for conditions of use. -*/ - -#ifndef _NC_TESTS_H -#define _NC_TESTS_H - -#include -#include -#include -#include -#include -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif -#include "netcdf.h" -//#include "err_macros.h" - - -#define NC_TESTS_MAX_DIMS 1024 /**< NC_MAX_DIMS for tests. Allows different NC_MAX_DIMS values without breaking this test with a heap or stack overflow. */ - -/** Useful define for tests. */ -/** \{ */ -#define MEGABYTE 1048576 -#define HALF_MEG (MEGABYTE/2) -#define MILLION 1000000 -#define SIXTEEN_MEG 16777216 -#define FOUR_MEG (SIXTEEN_MEG/4) -#define THIRTY_TWO_MEG (SIXTEEN_MEG * 2) -#define SIXTY_FOUR_MEG (SIXTEEN_MEG * 4) -#define ONE_TWENTY_EIGHT_MEG (SIXTEEN_MEG * 8) -/** \} */ - -#ifdef USE_PNETCDF -#define TEST_PNETCDF 1 -#else -#undef TEST_PNETCDF -#endif - -#endif /* _NC_TESTS_H */ diff --git a/contrib/netcdf/4.4.1.1/include/ncaux.h b/contrib/netcdf/4.4.1.1/include/ncaux.h deleted file mode 100644 index 4583967f2e5..00000000000 --- a/contrib/netcdf/4.4.1.1/include/ncaux.h +++ /dev/null @@ -1,25 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id$ - * $Header$ - *********************************************************************/ - -#ifndef NCAUX_H -#define NCAUX_H - -#define NCAUX_ALIGN_C 0 -#define NCAUX_ALIGN_UNIFORM 1 - -extern int ncaux_begin_compound(int ncid, const char *name, int alignmode, - void** tag); - -extern int ncaux_end_compound(void* tag, nc_type* typeid); - -extern int ncaux_abort_compound(void* tag); - -extern int ncaux_add_field(void* tag, const char *name, nc_type field_type, - int ndims, const int* dimsizes); - -#endif /*NCAUX_H*/ - diff --git a/contrib/netcdf/4.4.1.1/include/ncbytes.h b/contrib/netcdf/4.4.1.1/include/ncbytes.h deleted file mode 100644 index 382bd0fb2ea..00000000000 --- a/contrib/netcdf/4.4.1.1/include/ncbytes.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef NCBYTES_H -#define NCBYTES_H 1 - -typedef struct NCbytes { - int nonextendible; /* 1 => fail if an attempt is made to extend this buffer*/ - unsigned long alloc; - unsigned long length; - char* content; -} NCbytes; - -#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) -#define EXTERNC extern "C" -#else -#define EXTERNC extern -#endif - -EXTERNC NCbytes* ncbytesnew(void); -EXTERNC void ncbytesfree(NCbytes*); -EXTERNC int ncbytessetalloc(NCbytes*,unsigned long); -EXTERNC int ncbytessetlength(NCbytes*,unsigned long); -EXTERNC int ncbytesfill(NCbytes*, char fill); - -/* Produce a duplicate of the contents*/ -EXTERNC char* ncbytesdup(NCbytes*); -/* Extract the contents and leave buffer empty */ -EXTERNC char* ncbytesextract(NCbytes*); - -/* Return the ith byte; -1 if no such index */ -EXTERNC int ncbytesget(NCbytes*,unsigned long); -/* Set the ith byte */ -EXTERNC int ncbytesset(NCbytes*,unsigned long,char); - -/* Append one byte */ -EXTERNC int ncbytesappend(NCbytes*,char); /* Add at Tail */ -/* Append n bytes */ -EXTERNC int ncbytesappendn(NCbytes*,const void*,unsigned long); /* Add at Tail */ - -/* Null terminate the byte string without extending its length (for debugging) */ -EXTERNC int ncbytesnull(NCbytes*); - -/* Concatenate a null-terminated string to the end of the buffer */ -EXTERNC int ncbytescat(NCbytes*,const char*); - -/* Set the contents of the buffer; mark the buffer as non-extendible */ -EXTERNC int ncbytessetcontents(NCbytes*, char*, unsigned long); - -/* Following are always "in-lined"*/ -#define ncbyteslength(bb) ((bb)!=NULL?(bb)->length:0) -#define ncbytesalloc(bb) ((bb)!=NULL?(bb)->alloc:0) -#define ncbytescontents(bb) (((bb)!=NULL && (bb)->content!=NULL)?(bb)->content:(char*)"") -#define ncbytesextend(bb,len) ncbytessetalloc((bb),(len)+(bb->alloc)) -#define ncbytesclear(bb) ((bb)!=NULL?(bb)->length=0:0) -#define ncbytesavail(bb,n) ((bb)!=NULL?((bb)->alloc - (bb)->length) >= (n):0) - -#endif /*NCBYTES_H*/ diff --git a/contrib/netcdf/4.4.1.1/include/ncconfigure.h b/contrib/netcdf/4.4.1.1/include/ncconfigure.h deleted file mode 100644 index d1ef846f2f7..00000000000 --- a/contrib/netcdf/4.4.1.1/include/ncconfigure.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2010 University Corporation for Atmospheric - * Research/Unidata. See COPYRIGHT file for more info. - * - * This header file is for the parallel I/O functions of netCDF. - * - */ -/* "$Id: netcdf_par.h,v 1.1 2010/06/01 15:46:49 ed Exp $" */ - -#ifndef NCCONFIGURE_H -#define NCCONFIGURE_H 1 - -/* -This is included in bottom -of config.h. It is where, -typically, alternatives to -missing functions should be -defined. -*/ - -#ifndef HAVE_STRDUP -extern char* strdup(const char*); -#endif - -/* #if HAVE_BASETSD_H */ -/* #ifndef ssize_t */ -/* #ifndef SSIZE_T */ -/* #include */ -/* #endif */ -/* #define ssize_t SSIZE_T */ -/* #endif */ -/* #endif */ - - - -/* handle null arguments */ -#ifndef nulldup -#ifdef HAVE_STRDUP -#define nulldup(s) ((s)==NULL?NULL:strdup(s)) -#else -char *nulldup(const char* s); -#endif -#endif - - -#ifndef nulldup -#define nulldup(s) ((s)==NULL?NULL:strdup(s)) -#endif -#ifndef nulllen -#define nulllen(s) ((s)==NULL?0:strlen(s)) -#endif -#ifndef nullfree -#define nullfree(s) {if((s)!=NULL) {free(s);} else {}} -#endif - -#ifndef HAVE_UCHAR -typedef unsigned char uchar; -#endif - -#ifndef HAVE_LONGLONG -typedef long long longlong; -typedef unsigned long long ulonglong; -#endif - -#ifndef HAVE_USHORT -typedef unsigned short ushort; -#endif - -#ifndef HAVE_UINT -typedef unsigned int uint; -#endif - -#endif /* NCCONFIGURE_H */ diff --git a/contrib/netcdf/4.4.1.1/include/ncdispatch.h b/contrib/netcdf/4.4.1.1/include/ncdispatch.h deleted file mode 100644 index 2f292e03bc5..00000000000 --- a/contrib/netcdf/4.4.1.1/include/ncdispatch.h +++ /dev/null @@ -1,408 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ - -/* $Id: ncdispatch.h,v 1.18 2010/06/01 20:11:59 dmh Exp $ */ -/* $Header: /upc/share/CVS/netcdf-3/libdispatch/ncdispatch.h,v 1.18 2010/06/01 20:11:59 dmh Exp $ */ - -#ifndef _DISPATCH_H -#define _DISPATCH_H - -#include "config.h" -#include -#include -#include -#include -#if defined(HDF5_PARALLEL) || defined(USE_PNETCDF) -#include -#endif -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif -#include "netcdf.h" -#include "nc.h" -#include "ncuri.h" - -#define longtype ((sizeof(long) == sizeof(int) ? NC_INT : NC_INT64)) - -#define X_INT_MAX 2147483647 - -/* Given a filename, check its magic number */ -#define MAGIC_NUMBER_LEN 4 -#define MAGIC_HDF5_FILE 1 -#define MAGIC_HDF4_FILE 2 -#define MAGIC_CDF1_FILE 1 /* std classic format */ -#define MAGIC_CDF2_FILE 2 /* classic 64 bit */ - -/* Define the mappings from fcn name types - to corresponding NC types. */ -#define T_text NC_CHAR -#define T_schar NC_BYTE -#define T_char NC_CHAR -#define T_short NC_SHORT -#define T_int NC_INT -#define T_float NC_FLOAT -#define T_double NC_DOUBLE -#define T_ubyte NC_UBYTE -#define T_ushort NC_USHORT -#define T_uint NC_UINT -#define T_longlong NC_INT64 -#define T_ulonglong NC_UINT64 -#ifdef USE_NETCDF4 -#define T_string NC_STRING -#endif - -/* Synthetic type to handle special memtypes */ -#define T_uchar NC_UBYTE -#define T_long longtype -#define T_ulong ulongtype - -/**************************************************/ -#if 0 -/* Define the known classes of dispatchers */ -/* Flags may be or'd => powers of 2*/ -#define NC_DISPATCH_NC3 1 -#define NC_DISPATCH_NC4 2 -#define NC_DISPATCH_NCD 4 -#define NC_DISPATCH_NCP 8 -#endif - -/* Define a type for use when doing e.g. nc_get_vara_long, etc. */ -/* Should matche values in libsrc4/netcdf.h */ -#ifndef NC_UINT64 -#define NC_UBYTE 7 /* unsigned 1 byte int */ -#define NC_USHORT 8 /* unsigned 2-byte int */ -#define NC_UINT 9 /* unsigned 4-byte int */ -#define NC_INT64 10 /* signed 8-byte int */ -#define NC_UINT64 11 /* unsigned 8-byte int */ -#define NC_STRING 12 /* char* */ -#endif - -/* Define the range of Atomic types */ -#define ATOMICTYPEMAX4 NC_STRING -#define ATOMICTYPEMAX3 NC_DOUBLE -#define ATOMICTYPEMAX5 NC_UINT64 - -/* Define an alias for int to indicate an error return */ -typedef int NCerror; - -#if !defined HDF5_PARALLEL && !defined USE_PNETCDF -typedef int MPI_Comm; -typedef int MPI_Info; -#define MPI_COMM_WORLD 0 -#define MPI_INFO_NULL 0 -#endif - -/* Define a struct to hold the MPI info so it can be passed down the - * call stack. This is used internally by the netCDF library. It - * should not be used by netcdf users. */ -typedef struct NC_MPI_INFO { - MPI_Comm comm; - MPI_Info info; -} NC_MPI_INFO; - -typedef struct NC_MEM_INFO { - size_t size; - void* memory; -} NC_MEM_INFO; - -/* Define known dispatch tables and initializers */ - -/*Forward*/ -typedef struct NC_Dispatch NC_Dispatch; - -extern int NCDISPATCH_initialize(void); -extern int NCDISPATCH_finalize(void); - -extern NC_Dispatch* NC3_dispatch_table; -extern int NC3_initialize(void); -extern int NC3_finalize(void); - -#ifdef USE_DAP -extern NC_Dispatch* NCD2_dispatch_table; -extern int NCD2_initialize(void); -extern int NCD2_finalize(void); -#endif - -#ifdef USE_PNETCDF -extern NC_Dispatch* NCP_dispatch_table; -extern int NCP_initialize(void); -extern int NCP_finalize(void); -#endif - -#ifdef USE_NETCDF4 -extern NC_Dispatch* NC4_dispatch_table; -extern int NC4_initialize(void); -extern int NC4_finalize(void); -#endif - -#ifdef USE_DAP -extern NC_Dispatch* NCD4_dispatch_table; -extern int NCD4_initialize(void); -extern int NCD4_finalize(void); -#endif - -/* Vectors of ones and zeros */ -extern size_t nc_sizevector0[NC_MAX_VAR_DIMS]; -extern size_t nc_sizevector1[NC_MAX_VAR_DIMS]; -extern ptrdiff_t nc_ptrdiffvector1[NC_MAX_VAR_DIMS]; - -/**************************************************/ -/* Forward */ -#ifndef USE_NETCDF4 -/* Taken from libsrc4/netcdf.h */ -struct nc_vlen_t; -#define NC_NETCDF4 0x1000 -#define NC_CLASSIC_MODEL 0x0100 -#define NC_ENOPAR (-114) -#endif /*!USE_NETCDF4*/ - -struct NC; - - -int NC_create(const char *path, int cmode, - size_t initialsz, int basepe, size_t *chunksizehintp, - int useparallel, void* parameters, - int *ncidp); -int NC_open(const char *path, int cmode, - int basepe, size_t *chunksizehintp, - int useparallel, void* parameters, - int *ncidp); - -/* Expose the default vars and varm dispatch entries */ -extern int NCDEFAULT_get_vars(int, int, const size_t*, - const size_t*, const ptrdiff_t*, void*, nc_type); -extern int NCDEFAULT_put_vars(int, int, const size_t*, - const size_t*, const ptrdiff_t*, const void*, nc_type); -extern int NCDEFAULT_get_varm(int, int, const size_t*, - const size_t*, const ptrdiff_t*, const ptrdiff_t*, - void*, nc_type); -extern int NCDEFAULT_put_varm(int, int, const size_t*, - const size_t*, const ptrdiff_t*, const ptrdiff_t*, - const void*, nc_type); - -/**************************************************/ -/* Forward */ -struct NCHDR; - -struct NC_Dispatch { - -int model; /* one of the NC_FORMATX #'s */ - -int (*create)(const char *path, int cmode, - size_t initialsz, int basepe, size_t *chunksizehintp, - int use_parallel, void* parameters, - struct NC_Dispatch* table, NC* ncp); -int (*open)(const char *path, int mode, - int basepe, size_t *chunksizehintp, - int use_parallel, void* parameters, - struct NC_Dispatch* table, NC* ncp); - -int (*redef)(int); -int (*_enddef)(int,size_t,size_t,size_t,size_t); -int (*sync)(int); -int (*abort)(int); -int (*close)(int); -int (*set_fill)(int,int,int*); -int (*inq_base_pe)(int,int*); -int (*set_base_pe)(int,int); -int (*inq_format)(int,int*); -int (*inq_format_extended)(int,int*,int*); - -int (*inq)(int,int*,int*,int*,int*); -int (*inq_type)(int, nc_type, char*, size_t*); - -int (*def_dim)(int, const char*, size_t, int*); -int (*inq_dimid)(int, const char*, int*); -int (*inq_dim)(int, int, char*, size_t*); -int (*inq_unlimdim)(int ncid, int *unlimdimidp); -int (*rename_dim)(int, int, const char*); - -int (*inq_att)(int, int, const char*, nc_type*, size_t*); -int (*inq_attid)(int, int, const char*, int*); -int (*inq_attname)(int, int, int, char*); -int (*rename_att)(int, int, const char*, const char*); -int (*del_att)(int, int, const char*); -int (*get_att)(int, int, const char*, void*, nc_type); -int (*put_att)(int, int, const char*, nc_type, size_t, const void*, nc_type); - -int (*def_var)(int, const char*, nc_type, int, const int*, int*); -int (*inq_varid)(int, const char*, int*); -int (*rename_var)(int, int, const char*); - -int (*get_vara)(int, int, const size_t*, const size_t*, void*, nc_type); -int (*put_vara)(int, int, const size_t*, const size_t*, const void*, nc_type); - -/* Added to solve Ferret performance problem with Opendap */ -int (*get_vars)(int, int, const size_t*, const size_t*, const ptrdiff_t*, void*, nc_type); -int (*put_vars)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const void*, nc_type); - -int (*get_varm)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const ptrdiff_t*, void*, nc_type); -int (*put_varm)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const ptrdiff_t*, const void*, nc_type); - -int (*inq_var_all)(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp, - int *shufflep, int *deflatep, int *deflate_levelp, - int *fletcher32p, int *contiguousp, size_t *chunksizesp, - int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp); - -int (*var_par_access)(int, int, int); - -/* Note the following may still be invoked by netcdf client code - even when the file is a classic file; they will just return an error or - be ignored. -*/ -#ifdef USE_NETCDF4 -int (*show_metadata)(int); -int (*inq_unlimdims)(int, int*, int*); -int (*inq_ncid)(int, const char*, int*); -int (*inq_grps)(int, int*, int*); -int (*inq_grpname)(int, char*); -int (*inq_grpname_full)(int, size_t*, char*); -int (*inq_grp_parent)(int, int*); -int (*inq_grp_full_ncid)(int, const char*, int*); -int (*inq_varids)(int, int* nvars, int*); -int (*inq_dimids)(int, int* ndims, int*, int); -int (*inq_typeids)(int, int* ntypes, int*); -int (*inq_type_equal)(int, nc_type, int, nc_type, int*); -int (*def_grp)(int, const char*, int*); -int (*rename_grp)(int, const char*); -int (*inq_user_type)(int, nc_type, char*, size_t*, nc_type*, size_t*, int*); -int (*inq_typeid)(int, const char*, nc_type*); - -int (*def_compound)(int, size_t, const char*, nc_type*); -int (*insert_compound)(int, nc_type, const char*, size_t, nc_type); -int (*insert_array_compound)(int, nc_type, const char*, size_t, nc_type, int, const int*); -int (*inq_compound_field)(int, nc_type, int, char*, size_t*, nc_type*, int*, int*); -int (*inq_compound_fieldindex)(int, nc_type, const char*, int*); -int (*def_vlen)(int, const char*, nc_type base_typeid, nc_type*); -int (*put_vlen_element)(int, int, void*, size_t, const void*); -int (*get_vlen_element)(int, int, const void*, size_t*, void*); -int (*def_enum)(int, nc_type, const char*, nc_type*); -int (*insert_enum)(int, nc_type, const char*, const void*); -int (*inq_enum_member)(int, nc_type, int, char*, void*); -int (*inq_enum_ident)(int, nc_type, long long, char*); -int (*def_opaque)(int, size_t, const char*, nc_type*); -int (*def_var_deflate)(int, int, int, int, int); -int (*def_var_fletcher32)(int, int, int); -int (*def_var_chunking)(int, int, int, const size_t*); -int (*def_var_fill)(int, int, int, const void*); -int (*def_var_endian)(int, int, int); -int (*set_var_chunk_cache)(int, int, size_t, size_t, float); -int (*get_var_chunk_cache)(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp); -#endif /*USE_NETCDF4*/ - -}; - -/* Following functions must be handled as non-dispatch */ -#ifdef NONDISPATCH -void (*nc_advise)(const char*cdf_routine_name,interr,const char*fmt,...); -void (*nc_set_log_level)(int); -const char* (*nc_inq_libvers)(void); -const char* (*nc_strerror)(int); -int (*nc_delete)(const char*path); -int (*nc_delete_mp)(const char*path,intbasepe); -int (*nc_initialize)(); -int (*nc_finalize)(); -#endif /*NONDISPATCH*/ - -/* Define the common fields for NC and NC_FILE_INFO_T etc */ -typedef struct NCcommon { - int ext_ncid; /* uid << 16 */ - int int_ncid; /* unspecified other id */ - struct NC_Dispatch* dispatch; - void* dispatchdata; /* per-protocol instance data */ - char* path; /* as specified at open or create */ -} NCcommon; - -extern size_t NC_atomictypelen(nc_type xtype); -extern char* NC_atomictypename(nc_type xtype); - -#ifdef OBSOLETE -/* Provide a dispatch table overlay facility */ -extern int NC_dispatch_overlay(const NC_Dispatch* overlay, - const NC_Dispatch* base, - NC_Dispatch* merge); - -/* Get/set the override dispatch table */ -extern NC_Dispatch* NC_get_dispatch_override(void); -extern void NC_set_dispatch_override(NC_Dispatch*); -#endif - -/* Does the path look like a url? */ -extern int NC_testurl(const char* path); -/* Return model (0 or 3 or 4) as specified by the url */ -extern int NC_urlmodel(const char* path); - -/* allow access url parse and params without exposing nc_url.h */ -extern int NCDAP_urlparse(const char* s, void** dapurl); -extern void NCDAP_urlfree(void* dapurl); -extern const char* NCDAP_urllookup(void* dapurl, const char* param); - -/* Test for specific set of servers */ -#if defined(DLL_NETCDF) /* Defined when library is a DLL */ -# if defined(DLL_EXPORT) /* Define when building the library. */ -# define MSC_NCDISPATCH_EXTRA __declspec(dllexport) -# else -# define MSC_NCDISPATCH_EXTRA __declspec(dllimport) -# endif -#else -# define MSC_NCDISPATCH_EXTRA -#endif - -#define NCD_EXTERNL MSC_NCDISPATCH_EXTRA extern - -NCD_EXTERNL char* NC_findtestserver(const char*, const char**); -NCD_EXTERNL int nc_open_mem(const char*, int, size_t, void*, int*); -NCD_EXTERNL int nc_finalize(); - -/* Ping a specific server */ -extern int NCDAP_ping(const char*); - -/* Misc */ - -extern int NC_getshape(int ncid, int varid, int ndims, size_t* shape); -extern int NC_is_recvar(int ncid, int varid, size_t* nrecs); -extern int NC_inq_recvar(int ncid, int varid, int* nrecdims, int* is_recdim); - -#define nullstring(s) (s==NULL?"(null)":s) - - -#undef TRACECALLS -#ifdef TRACECALLS -#include -#define TRACE(fname) fprintf(stderr,"call: %s\n",#fname) -#else -#define TRACE(fname) -#endif - -extern size_t NC_coord_zero[NC_MAX_VAR_DIMS]; -extern size_t NC_coord_one[NC_MAX_VAR_DIMS]; - -extern int NC_argc; -extern char* NC_argv[]; -extern int NC_initialized; - -NCD_EXTERNL int nc_initialize(); - - -/** -Certain functions are in the dispatch table, -but not in the netcdf.h API. These need to -be exposed for use in delegation such as -in libdap2. -*/ -extern int -NCDISPATCH_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp, - int *shufflep, int *deflatep, int *deflate_levelp, - int *fletcher32p, int *contiguousp, size_t *chunksizesp, - int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp); - -extern int -NCDISPATCH_get_att(int ncid, int varid, const char* name, void* value, nc_type t); - -#endif /* _DISPATCH_H */ diff --git a/contrib/netcdf/4.4.1.1/include/nchashmap.h b/contrib/netcdf/4.4.1.1/include/nchashmap.h deleted file mode 100644 index 0d676f7a288..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nchashmap.h +++ /dev/null @@ -1,59 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ -#ifndef NCHASHMAP_H -#define NCHASHMAP_H 1 - -#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) -#define externC extern "C" -#else -#define externC extern -#endif - -#include "nclist.h" - -/* Define the type of the elements in the hashmap*/ -typedef unsigned long nchashid; - -externC int nchashnull(void*); - -typedef struct NChashmap { - size_t alloc; - size_t size; /* # of pairs still in table*/ - NClist** table; -} NChashmap; - -externC NChashmap* nchashnew(void); -externC NChashmap* nchashnew0(size_t); -externC int nchashfree(NChashmap*); - -/* Insert a (ncnchashid,void*) pair into the table*/ -/* Fail if already there*/ -externC int nchashinsert(NChashmap*, nchashid nchash, void* value); - -/* Insert a (nchashid,void*) pair into the table*/ -/* Overwrite if already there*/ -externC int nchashreplace(NChashmap*, nchashid nchash, void* value); - -/* lookup a nchashid and return found/notfound*/ -externC int nchashlookup(NChashmap*, nchashid nchash, void** valuep); - -/* lookup a nchashid and return 0 or the value*/ -externC void* nchashget(NChashmap*, nchashid nchash); - -/* remove a nchashid*/ -externC int nchashremove(NChashmap*, nchashid nchash); - -/* Return the ith pair; order is completely arbitrary*/ -/* Can be expensive*/ -externC int nchashith(NChashmap*, int i, nchashid*, void**); - -externC int nchashkeys(NChashmap* hm, nchashid** keylist); - -/* return the # of pairs in table*/ -#define nchashsize(hm) ((hm)?(hm)->size:0) - -#endif /*NCHASHMAP_H*/ - diff --git a/contrib/netcdf/4.4.1.1/include/nclist.h b/contrib/netcdf/4.4.1.1/include/nclist.h deleted file mode 100644 index 1bd7a1663c8..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nclist.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ -#ifndef NCLIST_H -#define NCLIST_H 1 - -/* Define the type of the elements in the list*/ - -#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) -#define EXTERNC extern "C" -#else -#define EXTERNC extern -#endif - -EXTERNC int nclistnull(void*); - -typedef struct NClist { - unsigned long alloc; - unsigned long length; - void** content; -} NClist; - -EXTERNC NClist* nclistnew(void); -EXTERNC int nclistfree(NClist*); -EXTERNC int nclistsetalloc(NClist*,unsigned long); -EXTERNC int nclistsetlength(NClist*,unsigned long); - -/* Set the ith element */ -EXTERNC int nclistset(NClist*,unsigned long,void*); -/* Get value at position i */ -EXTERNC void* nclistget(NClist*,unsigned long);/* Return the ith element of l */ -/* Insert at position i; will push up elements i..|seq|. */ -EXTERNC int nclistinsert(NClist*,unsigned long,void*); -/* Remove element at position i; will move higher elements down */ -EXTERNC void* nclistremove(NClist* l, unsigned long i); - -/* Tail operations */ -EXTERNC int nclistpush(NClist*,void*); /* Add at Tail */ -EXTERNC void* nclistpop(NClist*); -EXTERNC void* nclisttop(NClist*); - -/* Duplicate and return the content (null terminate) */ -EXTERNC void** nclistdup(NClist*); - -/* Look for value match */ -EXTERNC int nclistcontains(NClist*, void*); - -/* Remove element by value; only removes first encountered */ -EXTERNC int nclistelemremove(NClist* l, void* elem); - -/* remove duplicates */ -EXTERNC int nclistunique(NClist*); - -/* Create a clone of a list */ -EXTERNC NClist* nclistclone(NClist*); - -/* Following are always "in-lined"*/ -#define nclistclear(l) nclistsetlength((l),0) -#define nclistextend(l,len) nclistsetalloc((l),(len)+(l->alloc)) -#define nclistcontents(l) ((l)==NULL?NULL:(l)->content) -#define nclistlength(l) ((l)==NULL?0:(l)->length) - -#endif /*NCLIST_H*/ diff --git a/contrib/netcdf/4.4.1.1/include/nclog.h b/contrib/netcdf/4.4.1.1/include/nclog.h deleted file mode 100644 index 4b8a0c7efa3..00000000000 --- a/contrib/netcdf/4.4.1.1/include/nclog.h +++ /dev/null @@ -1,31 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ - -#ifndef NCLOG_H -#define NCLOG_H - -#define NCENVFLAG "NCLOGFILE" - -/* Suggested tag values */ -#define NCLOGNOTE 0 -#define NCLOGWARN 1 -#define NCLOGERR 2 -#define NCLOGDBG 3 - -extern void ncloginit(void); -extern int ncsetlogging(int tf); -extern int nclogopen(const char* file); -extern void nclogclose(void); - -/* The tag value is an arbitrary integer */ -extern void nclog(int tag, const char* fmt, ...); -extern void nclogtext(int tag, const char* text); -extern void nclogtextn(int tag, const char* text, size_t count); - -/* Provide printable names for tags */ -extern void nclogsettags(char** tagset, char* dfalt); - -#endif /*NCLOG_H*/ diff --git a/contrib/netcdf/4.4.1.1/include/ncuri.h b/contrib/netcdf/4.4.1.1/include/ncuri.h deleted file mode 100644 index 670985945f3..00000000000 --- a/contrib/netcdf/4.4.1.1/include/ncuri.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef NCURI_H -#define NCURI_H - -/*! This is an open structure meaning - it is ok to directly access its fields*/ -typedef struct NCURI { - char* uri; /* as passed by the caller */ - char* params; /* all params */ - char** paramlist; /*! entry not found; 1=>found; result holds value (may be null). - In any case, the result is imutable and should not be free'd. -*/ -extern int ncurilookup(NCURI*, const char* param, const char** result); - -extern char* ncuriencode(char* s, char* allowable); -extern char* ncuridecode(char* s); -extern char* ncuridecodeonly(char* s, char*); - -#endif /*NCURI_H*/ diff --git a/contrib/netcdf/4.4.1.1/include/netcdf.h b/contrib/netcdf/4.4.1.1/include/netcdf.h deleted file mode 100644 index 2d506e7d31c..00000000000 --- a/contrib/netcdf/4.4.1.1/include/netcdf.h +++ /dev/null @@ -1,1978 +0,0 @@ -/*! \file - -Main header file for the C API. - -Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 -University Corporation for Atmospheric Research/Unidata. - -See \ref copyright file for more info. -*/ - -#ifndef _NETCDF_ -#define _NETCDF_ - -#include /* size_t, ptrdiff_t */ -#include /* netcdf functions sometimes return system errors */ - -/* Required for alloca on Windows */ -#if defined(_WIN32) || defined(_WIN64) -#include -#endif - -#ifdef _WIN64 -#include -#endif - -/*! The nc_type type is just an int. */ -typedef int nc_type; - -#if defined(__cplusplus) -extern "C" { -#endif - -/* - * The netcdf external data types - */ -#define NC_NAT 0 /**< Not A Type */ -#define NC_BYTE 1 /**< signed 1 byte integer */ -#define NC_CHAR 2 /**< ISO/ASCII character */ -#define NC_SHORT 3 /**< signed 2 byte integer */ -#define NC_INT 4 /**< signed 4 byte integer */ -#define NC_LONG NC_INT /**< \deprecated required for backward compatibility. */ -#define NC_FLOAT 5 /**< single precision floating point number */ -#define NC_DOUBLE 6 /**< double precision floating point number */ -#define NC_UBYTE 7 /**< unsigned 1 byte int */ -#define NC_USHORT 8 /**< unsigned 2-byte int */ -#define NC_UINT 9 /**< unsigned 4-byte int */ -#define NC_INT64 10 /**< signed 8-byte int */ -#define NC_UINT64 11 /**< unsigned 8-byte int */ -#define NC_STRING 12 /**< string */ - -#define NC_MAX_ATOMIC_TYPE NC_STRING - -/* The following are use internally in support of user-defines - * types. They are also the class returned by nc_inq_user_type. */ -#define NC_VLEN 13 /**< vlen (variable-length) types */ -#define NC_OPAQUE 14 /**< opaque types */ -#define NC_ENUM 15 /**< enum types */ -#define NC_COMPOUND 16 /**< compound types */ - -/* Define the first user defined type id (leave some room) */ -#define NC_FIRSTUSERTYPEID 32 - -/** Default fill value. This is used unless _FillValue attribute - * is set. These values are stuffed into newly allocated space as - * appropriate. The hope is that one might use these to notice that a - * particular datum has not been set. */ -/**@{*/ -#define NC_FILL_BYTE ((signed char)-127) -#define NC_FILL_CHAR ((char)0) -#define NC_FILL_SHORT ((short)-32767) -#define NC_FILL_INT (-2147483647L) -#define NC_FILL_FLOAT (9.9692099683868690e+36f) /* near 15 * 2^119 */ -#define NC_FILL_DOUBLE (9.9692099683868690e+36) -#define NC_FILL_UBYTE (255) -#define NC_FILL_USHORT (65535) -#define NC_FILL_UINT (4294967295U) -#define NC_FILL_INT64 ((long long)-9223372036854775806LL) -#define NC_FILL_UINT64 ((unsigned long long)18446744073709551614ULL) -#define NC_FILL_STRING ((char *)"") -/**@}*/ - -/*! Max or min values for a type. Nothing greater/smaller can be - * stored in a netCDF file for their associated types. Recall that a C - * compiler may define int to be any length it wants, but a NC_INT is - * *always* a 4 byte signed int. On a platform with 64 bit ints, - * there will be many ints which are outside the range supported by - * NC_INT. But since NC_INT is an external format, it has to mean the - * same thing everywhere. */ -/**@{*/ -#define NC_MAX_BYTE 127 -#define NC_MIN_BYTE (-NC_MAX_BYTE-1) -#define NC_MAX_CHAR 255 -#define NC_MAX_SHORT 32767 -#define NC_MIN_SHORT (-NC_MAX_SHORT - 1) -#define NC_MAX_INT 2147483647 -#define NC_MIN_INT (-NC_MAX_INT - 1) -#define NC_MAX_FLOAT 3.402823466e+38f -#define NC_MIN_FLOAT (-NC_MAX_FLOAT) -#define NC_MAX_DOUBLE 1.7976931348623157e+308 -#define NC_MIN_DOUBLE (-NC_MAX_DOUBLE) -#define NC_MAX_UBYTE NC_MAX_CHAR -#define NC_MAX_USHORT 65535U -#define NC_MAX_UINT 4294967295U -#define NC_MAX_INT64 (9223372036854775807LL) -#define NC_MIN_INT64 (-9223372036854775807LL-1) -#define NC_MAX_UINT64 (18446744073709551615ULL) -#define X_INT64_MAX (9223372036854775807LL) -#define X_INT64_MIN (-X_INT64_MAX - 1) -#define X_UINT64_MAX (18446744073709551615ULL) -/**@}*/ - -/** Name of fill value attribute. If you wish a variable to use a - * different value than the above defaults, create an attribute with - * the same type as the variable and this reserved name. The value you - * give the attribute will be used as the fill value for that - * variable. */ -#define _FillValue "_FillValue" -#define NC_FILL 0 /**< Argument to nc_set_fill() to clear NC_NOFILL */ -#define NC_NOFILL 0x100 /**< Argument to nc_set_fill() to turn off filling of data. */ - -/* Define the ioflags bits for nc_create and nc_open. - currently unused: - 0x0002 - 0x0040 - 0x0080 - and the whole upper 16 bits -*/ - -#define NC_NOWRITE 0x0000 /**< Set read-only access for nc_open(). */ -#define NC_WRITE 0x0001 /**< Set read-write access for nc_open(). */ -#define NC_CLOBBER 0x0000 /**< Destroy existing file. Mode flag for nc_create(). */ -#define NC_NOCLOBBER 0x0004 /**< Don't destroy existing file. Mode flag for nc_create(). */ - -#define NC_DISKLESS 0x0008 /**< Use diskless file. Mode flag for nc_open() or nc_create(). */ -#define NC_MMAP 0x0010 /**< Use diskless file with mmap. Mode flag for nc_open() or nc_create(). */ - -#define NC_64BIT_DATA 0x0020 /**< CDF-5 format: classic model but 64 bit dimensions and sizes */ -#define NC_CDF5 NC_64BIT_DATA /**< Alias NC_CDF5 to NC_64BIT_DATA */ - -#define NC_CLASSIC_MODEL 0x0100 /**< Enforce classic model on netCDF-4. Mode flag for nc_create(). */ -#define NC_64BIT_OFFSET 0x0200 /**< Use large (64-bit) file offsets. Mode flag for nc_create(). */ - -/** \deprecated The following flag currently is ignored, but use in - * nc_open() or nc_create() may someday support use of advisory - * locking to prevent multiple writers from clobbering a file - */ -#define NC_LOCK 0x0400 - -/** Share updates, limit caching. -Use this in mode flags for both nc_create() and nc_open(). */ -#define NC_SHARE 0x0800 - -#define NC_NETCDF4 0x1000 /**< Use netCDF-4/HDF5 format. Mode flag for nc_create(). */ - -/** Turn on MPI I/O. -Use this in mode flags for both nc_create() and nc_open(). */ -#define NC_MPIIO 0x2000 -/** Turn on MPI POSIX I/O. -Use this in mode flags for both nc_create() and nc_open(). */ -#define NC_MPIPOSIX 0x4000 /**< \deprecated As of libhdf5 1.8.13. */ - -#define NC_INMEMORY 0x8000 /**< Read from memory. Mode flag for nc_open() or nc_create(). */ - -#define NC_PNETCDF (NC_MPIIO) /**< Use parallel-netcdf library; alias for NC_MPIIO. */ - -/** Format specifier for nc_set_default_format() and returned - * by nc_inq_format. This returns the format as provided by - * the API. See nc_inq_format_extended to see the true file format. - * Starting with version 3.6, there are different format netCDF files. - * 4.0 introduces the third one. \see netcdf_format - */ -/**@{*/ -#define NC_FORMAT_CLASSIC (1) -/* After adding CDF5 support, this flag - is somewhat confusing. So, it is renamed. - Note that the name in the contributed code - NC_FORMAT_64BIT was renamed to NC_FORMAT_CDF2 -*/ -#define NC_FORMAT_64BIT_OFFSET (2) -#define NC_FORMAT_64BIT (NC_FORMAT_64BIT_OFFSET) /**< \deprecated Saved for compatibility. Use NC_FORMAT_64BIT_OFFSET or NC_FORMAT_64BIT_DATA, from netCDF 4.4.0 onwards. */ -#define NC_FORMAT_NETCDF4 (3) -#define NC_FORMAT_NETCDF4_CLASSIC (4) -#define NC_FORMAT_64BIT_DATA (5) - -/* Alias */ -#define NC_FORMAT_CDF5 NC_FORMAT_64BIT_DATA - -/**@}*/ - -/** Extended format specifier returned by nc_inq_format_extended() - * Added in version 4.3.1. This returns the true format of the - * underlying data. - * The function returns two values - * 1. a small integer indicating the underlying source type - * of the data. Note that this may differ from what the user - * sees from nc_inq_format() because this latter function - * returns what the user can expect to see thru the API. - * 2. A mode value indicating what mode flags are effectively - * set for this dataset. This usually will be a superset - * of the mode flags used as the argument to nc_open - * or nc_create. - * More or less, the #1 values track the set of dispatch tables. - * The #1 values are as follows. - * Note that CDF-5 returns NC_FORMAT_NC3, but sets the mode flag properly. - */ -/**@{*/ - -#define NC_FORMATX_NC3 (1) -#define NC_FORMATX_NC_HDF5 (2) /**< netCDF-4 subset of HDF5 */ -#define NC_FORMATX_NC4 NC_FORMATX_NC_HDF5 /**< alias */ -#define NC_FORMATX_NC_HDF4 (3) /**< netCDF-4 subset of HDF4 */ -#define NC_FORMATX_PNETCDF (4) -#define NC_FORMATX_DAP2 (5) -#define NC_FORMATX_DAP4 (6) -#define NC_FORMATX_UNDEFINED (0) - - /* To avoid breaking compatibility (such as in the python library), - we need to retain the NC_FORMAT_xxx format as well. This may come - out eventually, as the NC_FORMATX is more clear that it's an extended - format specifier.*/ - -#define NC_FORMAT_NC3 NC_FORMATX_NC3 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC3 */ -#define NC_FORMAT_NC_HDF5 NC_FORMATX_NC_HDF5 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC_HDF5 */ -#define NC_FORMAT_NC4 NC_FORMATX_NC4 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC4 */ -#define NC_FORMAT_NC_HDF4 NC_FORMATX_NC_HDF4 /**< \deprecated As of 4.4.0, use NC_FORMATX_HDF4 */ -#define NC_FORMAT_PNETCDF NC_FORMATX_PNETCDF /**< \deprecated As of 4.4.0, use NC_FORMATX_PNETCDF */ -#define NC_FORMAT_DAP2 NC_FORMATX_DAP2 /**< \deprecated As of 4.4.0, use NC_FORMATX_DAP2 */ -#define NC_FORMAT_DAP4 NC_FORMATX_DAP4 /**< \deprecated As of 4.4.0, use NC_FORMATX_DAP4 */ -#define NC_FORMAT_UNDEFINED NC_FORMATX_UNDEFINED /**< \deprecated As of 4.4.0, use NC_FORMATX_UNDEFINED */ - -/**@}*/ - -/** Let nc__create() or nc__open() figure out a suitable buffer size. */ -#define NC_SIZEHINT_DEFAULT 0 - -/** In nc__enddef(), align to the buffer size. */ -#define NC_ALIGN_CHUNK ((size_t)(-1)) - -/** Size argument to nc_def_dim() for an unlimited dimension. */ -#define NC_UNLIMITED 0L - -/** Attribute id to put/get a global attribute. */ -#define NC_GLOBAL -1 - -/** -Maximum for classic library. - -In the classic netCDF model there are maximum values for the number of -dimensions in the file (\ref NC_MAX_DIMS), the number of global or per -variable attributes (\ref NC_MAX_ATTRS), the number of variables in -the file (\ref NC_MAX_VARS), and the length of a name (\ref -NC_MAX_NAME). - -These maximums are enforced by the interface, to facilitate writing -applications and utilities. However, nothing is statically allocated -to these sizes internally. - -These maximums are not used for netCDF-4/HDF5 files unless they were -created with the ::NC_CLASSIC_MODEL flag. - -As a rule, NC_MAX_VAR_DIMS <= NC_MAX_DIMS. -*/ -/**@{*/ -#define NC_MAX_DIMS 65536 /* BSK changed from 1024 for ExodusII */ -#define NC_MAX_ATTRS 8192 -#define NC_MAX_VARS 524288 /* BSK changed from 8192 for ExodusII */ -#define NC_MAX_NAME 256 -#define NC_MAX_VAR_DIMS 1024 /**< max per variable dimensions */ -/**@}*/ - -/** This is the max size of an SD dataset name in HDF4 (from HDF4 documentation).*/ -#define NC_MAX_HDF4_NAME 64 - -/** In HDF5 files you can set the endianness of variables with - nc_def_var_endian(). This define is used there. */ -/**@{*/ -#define NC_ENDIAN_NATIVE 0 -#define NC_ENDIAN_LITTLE 1 -#define NC_ENDIAN_BIG 2 -/**@}*/ - -/** In HDF5 files you can set storage for each variable to be either - * contiguous or chunked, with nc_def_var_chunking(). This define is - * used there. */ -/**@{*/ -#define NC_CHUNKED 0 -#define NC_CONTIGUOUS 1 -/**@}*/ - -/** In HDF5 files you can set check-summing for each variable. -Currently the only checksum available is Fletcher-32, which can be set -with the function nc_def_var_fletcher32. These defines are used -there. */ -/**@{*/ -#define NC_NOCHECKSUM 0 -#define NC_FLETCHER32 1 -/**@}*/ - -/**@{*/ -/** Control the HDF5 shuffle filter. In HDF5 files you can specify - * that a shuffle filter should be used on each chunk of a variable to - * improve compression for that variable. This per-variable shuffle - * property can be set with the function nc_def_var_deflate(). */ -#define NC_NOSHUFFLE 0 -#define NC_SHUFFLE 1 -/**@}*/ - -/** The netcdf version 3 functions all return integer error status. - * These are the possible values, in addition to certain values from - * the system errno.h. - */ -#define NC_ISSYSERR(err) ((err) > 0) - -#define NC_NOERR 0 /**< No Error */ -#define NC2_ERR (-1) /**< Returned for all errors in the v2 API. */ - -/** Not a netcdf id. - -The specified netCDF ID does not refer to an -open netCDF dataset. */ -#define NC_EBADID (-33) -#define NC_ENFILE (-34) /**< Too many netcdfs open */ -#define NC_EEXIST (-35) /**< netcdf file exists && NC_NOCLOBBER */ -#define NC_EINVAL (-36) /**< Invalid Argument */ -#define NC_EPERM (-37) /**< Write to read only */ - -/** Operation not allowed in data mode. This is returned for netCDF -classic or 64-bit offset files, or for netCDF-4 files, when they were -been created with ::NC_CLASSIC_MODEL flag in nc_create(). */ -#define NC_ENOTINDEFINE (-38) - -/** Operation not allowed in define mode. - -The specified netCDF is in define mode rather than data mode. - -With netCDF-4/HDF5 files, this error will not occur, unless -::NC_CLASSIC_MODEL was used in nc_create(). - */ -#define NC_EINDEFINE (-39) - -/** Index exceeds dimension bound. - -The specified corner indices were out of range for the rank of the -specified variable. For example, a negative index or an index that is -larger than the corresponding dimension length will cause an error. */ -#define NC_EINVALCOORDS (-40) - -/** NC_MAX_DIMS exceeded. Max number of dimensions exceeded in a -classic or 64-bit offset file, or an netCDF-4 file with -::NC_CLASSIC_MODEL on. */ -#define NC_EMAXDIMS (-41) - -#define NC_ENAMEINUSE (-42) /**< String match to name in use */ -#define NC_ENOTATT (-43) /**< Attribute not found */ -#define NC_EMAXATTS (-44) /**< NC_MAX_ATTRS exceeded */ -#define NC_EBADTYPE (-45) /**< Not a netcdf data type */ -#define NC_EBADDIM (-46) /**< Invalid dimension id or name */ -#define NC_EUNLIMPOS (-47) /**< NC_UNLIMITED in the wrong index */ - -/** NC_MAX_VARS exceeded. Max number of variables exceeded in a -classic or 64-bit offset file, or an netCDF-4 file with -::NC_CLASSIC_MODEL on. */ -#define NC_EMAXVARS (-48) - -/** Variable not found. - -The variable ID is invalid for the specified netCDF dataset. */ -#define NC_ENOTVAR (-49) -#define NC_EGLOBAL (-50) /**< Action prohibited on NC_GLOBAL varid */ -#define NC_ENOTNC (-51) /**< Not a netcdf file */ -#define NC_ESTS (-52) /**< In Fortran, string too short */ -#define NC_EMAXNAME (-53) /**< NC_MAX_NAME exceeded */ -#define NC_EUNLIMIT (-54) /**< NC_UNLIMITED size already in use */ -#define NC_ENORECVARS (-55) /**< nc_rec op when there are no record vars */ -#define NC_ECHAR (-56) /**< Attempt to convert between text & numbers */ - -/** Start+count exceeds dimension bound. - -The specified edge lengths added to the specified corner would have -referenced data out of range for the rank of the specified -variable. For example, an edge length that is larger than the -corresponding dimension length minus the corner index will cause an -error. */ -#define NC_EEDGE (-57) -#define NC_ESTRIDE (-58) /**< Illegal stride */ -#define NC_EBADNAME (-59) /**< Attribute or variable name contains illegal characters */ -/* N.B. following must match value in ncx.h */ - -/** Math result not representable. - -One or more of the values are out of the range of values representable -by the desired type. */ -#define NC_ERANGE (-60) -#define NC_ENOMEM (-61) /**< Memory allocation (malloc) failure */ -#define NC_EVARSIZE (-62) /**< One or more variable sizes violate format constraints */ -#define NC_EDIMSIZE (-63) /**< Invalid dimension size */ -#define NC_ETRUNC (-64) /**< File likely truncated or possibly corrupted */ -#define NC_EAXISTYPE (-65) /**< Unknown axis type. */ - -/* Following errors are added for DAP */ -#define NC_EDAP (-66) /**< Generic DAP error */ -#define NC_ECURL (-67) /**< Generic libcurl error */ -#define NC_EIO (-68) /**< Generic IO error */ -#define NC_ENODATA (-69) /**< Attempt to access variable with no data */ -#define NC_EDAPSVC (-70) /**< DAP server error */ -#define NC_EDAS (-71) /**< Malformed or inaccessible DAS */ -#define NC_EDDS (-72) /**< Malformed or inaccessible DDS */ -#define NC_EDATADDS (-73) /**< Malformed or inaccessible DATADDS */ -#define NC_EDAPURL (-74) /**< Malformed DAP URL */ -#define NC_EDAPCONSTRAINT (-75) /**< Malformed DAP Constraint*/ -#define NC_ETRANSLATION (-76) /**< Untranslatable construct */ -#define NC_EACCESS (-77) /**< Access Failure */ -#define NC_EAUTH (-78) /**< Authorization Failure */ - -/* Misc. additional errors */ -#define NC_ENOTFOUND (-90) /**< No such file */ -#define NC_ECANTREMOVE (-91) /**< Can't remove file */ - -/* The following was added in support of netcdf-4. Make all netcdf-4 - error codes < -100 so that errors can be added to netcdf-3 if - needed. */ -#define NC4_FIRST_ERROR (-100) - -/** Error at HDF5 layer. */ -#define NC_EHDFERR (-101) -#define NC_ECANTREAD (-102) /**< Can't read. */ -#define NC_ECANTWRITE (-103) /**< Can't write. */ -#define NC_ECANTCREATE (-104) /**< Can't create. */ -#define NC_EFILEMETA (-105) /**< Problem with file metadata. */ -#define NC_EDIMMETA (-106) /**< Problem with dimension metadata. */ -#define NC_EATTMETA (-107) /**< Problem with attribute metadata. */ -#define NC_EVARMETA (-108) /**< Problem with variable metadata. */ -#define NC_ENOCOMPOUND (-109) /**< Not a compound type. */ -#define NC_EATTEXISTS (-110) /**< Attribute already exists. */ -#define NC_ENOTNC4 (-111) /**< Attempting netcdf-4 operation on netcdf-3 file. */ - -/** Attempting netcdf-4 operation on strict nc3 netcdf-4 file. */ -#define NC_ESTRICTNC3 (-112) -#define NC_ENOTNC3 (-113) /**< Attempting netcdf-3 operation on netcdf-4 file. */ -#define NC_ENOPAR (-114) /**< Parallel operation on file opened for non-parallel access. */ -#define NC_EPARINIT (-115) /**< Error initializing for parallel access. */ -#define NC_EBADGRPID (-116) /**< Bad group ID. */ -#define NC_EBADTYPID (-117) /**< Bad type ID. */ -#define NC_ETYPDEFINED (-118) /**< Type has already been defined and may not be edited. */ -#define NC_EBADFIELD (-119) /**< Bad field ID. */ -#define NC_EBADCLASS (-120) /**< Bad class. */ -#define NC_EMAPTYPE (-121) /**< Mapped access for atomic types only. */ -#define NC_ELATEFILL (-122) /**< Attempt to define fill value when data already exists. */ -#define NC_ELATEDEF (-123) /**< Attempt to define var properties, like deflate, after enddef. */ -#define NC_EDIMSCALE (-124) /**< Problem with HDF5 dimscales. */ -#define NC_ENOGRP (-125) /**< No group found. */ -#define NC_ESTORAGE (-126) /**< Can't specify both contiguous and chunking. */ -#define NC_EBADCHUNK (-127) /**< Bad chunksize. */ -#define NC_ENOTBUILT (-128) /**< Attempt to use feature that was not turned on when netCDF was built. */ -#define NC_EDISKLESS (-129) /**< Error in using diskless access. */ -#define NC_ECANTEXTEND (-130) /**< Attempt to extend dataset during ind. I/O operation. */ -#define NC_EMPI (-131) /**< MPI operation failed. */ - -#define NC4_LAST_ERROR (-131) - -/* This is used in netCDF-4 files for dimensions without coordinate - * vars. */ -#define DIM_WITHOUT_VARIABLE "This is a netCDF dimension but not a netCDF variable." - -/* This is here at the request of the NCO team to support our - * mistake of having chunksizes be first ints, then size_t. Doh! */ -#define NC_HAVE_NEW_CHUNKING_API 1 - - -/*Errors for all remote access methods(e.g. DAP and CDMREMOTE)*/ -#define NC_EURL (NC_EDAPURL) /* Malformed URL */ -#define NC_ECONSTRAINT (NC_EDAPCONSTRAINT) /* Malformed Constraint*/ - - -/* - * The Interface - */ - -/* Declaration modifiers for DLL support (MSC et al) */ -#if defined(DLL_NETCDF) /* define when library is a DLL */ -# if defined(DLL_EXPORT) /* define when building the library */ -# define MSC_EXTRA __declspec(dllexport) -# else -# define MSC_EXTRA __declspec(dllimport) -# endif -#include -#else -#define MSC_EXTRA -#endif /* defined(DLL_NETCDF) */ - -# define EXTERNL MSC_EXTRA extern - -#if defined(DLL_NETCDF) /* define when library is a DLL */ -EXTERNL int ncerr; -EXTERNL int ncopts; -#endif - -EXTERNL const char * -nc_inq_libvers(void); - -EXTERNL const char * -nc_strerror(int ncerr); - -EXTERNL int -nc__create(const char *path, int cmode, size_t initialsz, - size_t *chunksizehintp, int *ncidp); - -EXTERNL int -nc_create(const char *path, int cmode, int *ncidp); - -EXTERNL int -nc__open(const char *path, int mode, - size_t *chunksizehintp, int *ncidp); - -EXTERNL int -nc_open(const char *path, int mode, int *ncidp); - -/* Learn the path used to open/create the file. */ -EXTERNL int -nc_inq_path(int ncid, size_t *pathlen, char *path); - -/* Given an ncid and group name (NULL gets root group), return - * locid. */ -EXTERNL int -nc_inq_ncid(int ncid, const char *name, int *grp_ncid); - -/* Given a location id, return the number of groups it contains, and - * an array of their locids. */ -EXTERNL int -nc_inq_grps(int ncid, int *numgrps, int *ncids); - -/* Given locid, find name of group. (Root group is named "/".) */ -EXTERNL int -nc_inq_grpname(int ncid, char *name); - -/* Given ncid, find full name and len of full name. (Root group is - * named "/", with length 1.) */ -EXTERNL int -nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); - -/* Given ncid, find len of full name. */ -EXTERNL int -nc_inq_grpname_len(int ncid, size_t *lenp); - -/* Given an ncid, find the ncid of its parent group. */ -EXTERNL int -nc_inq_grp_parent(int ncid, int *parent_ncid); - -/* Given a name and parent ncid, find group ncid. */ -EXTERNL int -nc_inq_grp_ncid(int ncid, const char *grp_name, int *grp_ncid); - -/* Given a full name and ncid, find group ncid. */ -EXTERNL int -nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid); - -/* Get a list of ids for all the variables in a group. */ -EXTERNL int -nc_inq_varids(int ncid, int *nvars, int *varids); - -/* Find all dimids for a location. This finds all dimensions in a - * group, or any of its parents. */ -EXTERNL int -nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents); - -/* Find all user-defined types for a location. This finds all - * user-defined types in a group. */ -EXTERNL int -nc_inq_typeids(int ncid, int *ntypes, int *typeids); - -/* Are two types equal? */ -EXTERNL int -nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2, - nc_type typeid2, int *equal); - -/* Create a group. its ncid is returned in the new_ncid pointer. */ -EXTERNL int -nc_def_grp(int parent_ncid, const char *name, int *new_ncid); - -/* Rename a group */ -EXTERNL int -nc_rename_grp(int grpid, const char *name); - -/* Here are functions for dealing with compound types. */ - -/* Create a compound type. */ -EXTERNL int -nc_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp); - -/* Insert a named field into a compound type. */ -EXTERNL int -nc_insert_compound(int ncid, nc_type xtype, const char *name, - size_t offset, nc_type field_typeid); - -/* Insert a named array into a compound type. */ -EXTERNL int -nc_insert_array_compound(int ncid, nc_type xtype, const char *name, - size_t offset, nc_type field_typeid, - int ndims, const int *dim_sizes); - -/* Get the name and size of a type. */ -EXTERNL int -nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size); - -/* Get the id of a type from the name. */ -EXTERNL int -nc_inq_typeid(int ncid, const char *name, nc_type *typeidp); - -/* Get the name, size, and number of fields in a compound type. */ -EXTERNL int -nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *sizep, - size_t *nfieldsp); - -/* Get the name of a compound type. */ -EXTERNL int -nc_inq_compound_name(int ncid, nc_type xtype, char *name); - -/* Get the size of a compound type. */ -EXTERNL int -nc_inq_compound_size(int ncid, nc_type xtype, size_t *sizep); - -/* Get the number of fields in this compound type. */ -EXTERNL int -nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp); - -/* Given the xtype and the fieldid, get all info about it. */ -EXTERNL int -nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, char *name, - size_t *offsetp, nc_type *field_typeidp, int *ndimsp, - int *dim_sizesp); - -/* Given the typeid and the fieldid, get the name. */ -EXTERNL int -nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, - char *name); - -/* Given the xtype and the name, get the fieldid. */ -EXTERNL int -nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, - int *fieldidp); - -/* Given the xtype and fieldid, get the offset. */ -EXTERNL int -nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, - size_t *offsetp); - -/* Given the xtype and the fieldid, get the type of that field. */ -EXTERNL int -nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, - nc_type *field_typeidp); - -/* Given the xtype and the fieldid, get the number of dimensions for - * that field (scalars are 0). */ -EXTERNL int -nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, - int *ndimsp); - -/* Given the xtype and the fieldid, get the sizes of dimensions for - * that field. User must have allocated storage for the dim_sizes. */ -EXTERNL int -nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, - int *dim_sizes); - -/** This is the type of arrays of vlens. */ -typedef struct { - size_t len; /**< Length of VL data (in base type units) */ - void *p; /**< Pointer to VL data */ -} nc_vlen_t; - -/** Calculate an offset for creating a compound type. This calls a - * mysterious C macro which was found carved into one of the blocks of - * the Newgrange passage tomb in County Meath, Ireland. This code has - * been carbon dated to 3200 B.C.E. */ -#define NC_COMPOUND_OFFSET(S,M) (offsetof(S,M)) - -/* Create a variable length type. */ -EXTERNL int -nc_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type *xtypep); - -/* Find out about a vlen. */ -EXTERNL int -nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t *datum_sizep, - nc_type *base_nc_typep); - -/* When you read VLEN type the library will actually allocate the - * storage space for the data. This storage space must be freed, so - * pass the pointer back to this function, when you're done with the - * data, and it will free the vlen memory. */ -EXTERNL int -nc_free_vlen(nc_vlen_t *vl); - -EXTERNL int -nc_free_vlens(size_t len, nc_vlen_t vlens[]); - -/* Put or get one element in a vlen array. */ -EXTERNL int -nc_put_vlen_element(int ncid, int typeid1, void *vlen_element, - size_t len, const void *data); - -EXTERNL int -nc_get_vlen_element(int ncid, int typeid1, const void *vlen_element, - size_t *len, void *data); - -/* When you read the string type the library will allocate the storage - * space for the data. This storage space must be freed, so pass the - * pointer back to this function, when you're done with the data, and - * it will free the string memory. */ -EXTERNL int -nc_free_string(size_t len, char **data); - -/* Find out about a user defined type. */ -EXTERNL int -nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size, - nc_type *base_nc_typep, size_t *nfieldsp, int *classp); - -/* Write an attribute of any type. */ -EXTERNL int -nc_put_att(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const void *op); - -/* Read an attribute of any type. */ -EXTERNL int -nc_get_att(int ncid, int varid, const char *name, void *ip); - -/* Enum type. */ - -/* Create an enum type. Provide a base type and a name. At the moment - * only ints are accepted as base types. */ -EXTERNL int -nc_def_enum(int ncid, nc_type base_typeid, const char *name, - nc_type *typeidp); - -/* Insert a named value into an enum type. The value must fit within - * the size of the enum type, the name size must be <= NC_MAX_NAME. */ -EXTERNL int -nc_insert_enum(int ncid, nc_type xtype, const char *name, - const void *value); - -/* Get information about an enum type: its name, base type and the - * number of members defined. */ -EXTERNL int -nc_inq_enum(int ncid, nc_type xtype, char *name, nc_type *base_nc_typep, - size_t *base_sizep, size_t *num_membersp); - -/* Get information about an enum member: a name and value. Name size - * will be <= NC_MAX_NAME. */ -EXTERNL int -nc_inq_enum_member(int ncid, nc_type xtype, int idx, char *name, - void *value); - - -/* Get enum name from enum value. Name size will be <= NC_MAX_NAME. */ -EXTERNL int -nc_inq_enum_ident(int ncid, nc_type xtype, long long value, char *identifier); - -/* Opaque type. */ - -/* Create an opaque type. Provide a size and a name. */ -EXTERNL int -nc_def_opaque(int ncid, size_t size, const char *name, nc_type *xtypep); - -/* Get information about an opaque type. */ -EXTERNL int -nc_inq_opaque(int ncid, nc_type xtype, char *name, size_t *sizep); - -/* Write entire var of any type. */ -EXTERNL int -nc_put_var(int ncid, int varid, const void *op); - -/* Read entire var of any type. */ -EXTERNL int -nc_get_var(int ncid, int varid, void *ip); - -/* Write one value. */ -EXTERNL int -nc_put_var1(int ncid, int varid, const size_t *indexp, - const void *op); - -/* Read one value. */ -EXTERNL int -nc_get_var1(int ncid, int varid, const size_t *indexp, void *ip); - -/* Write an array of values. */ -EXTERNL int -nc_put_vara(int ncid, int varid, const size_t *startp, - const size_t *countp, const void *op); - -/* Read an array of values. */ -EXTERNL int -nc_get_vara(int ncid, int varid, const size_t *startp, - const size_t *countp, void *ip); - -/* Write slices of an array of values. */ -EXTERNL int -nc_put_vars(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const void *op); - -/* Read slices of an array of values. */ -EXTERNL int -nc_get_vars(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - void *ip); - -/* Write mapped slices of an array of values. */ -EXTERNL int -nc_put_varm(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const void *op); - -/* Read mapped slices of an array of values. */ -EXTERNL int -nc_get_varm(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, void *ip); - -/* Extra netcdf-4 stuff. */ - -/* Set compression settings for a variable. Lower is faster, higher is - * better. Must be called after nc_def_var and before nc_enddef. */ -EXTERNL int -nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, - int deflate_level); - -/* Find out compression settings of a var. */ -EXTERNL int -nc_inq_var_deflate(int ncid, int varid, int *shufflep, - int *deflatep, int *deflate_levelp); - -/* Find out szip settings of a var. */ -EXTERNL int -nc_inq_var_szip(int ncid, int varid, int *options_maskp, int *pixels_per_blockp); - -/* Set fletcher32 checksum for a var. This must be done after nc_def_var - and before nc_enddef. */ -EXTERNL int -nc_def_var_fletcher32(int ncid, int varid, int fletcher32); - -/* Inquire about fletcher32 checksum for a var. */ -EXTERNL int -nc_inq_var_fletcher32(int ncid, int varid, int *fletcher32p); - -/* Define chunking for a variable. This must be done after nc_def_var - and before nc_enddef. */ -EXTERNL int -nc_def_var_chunking(int ncid, int varid, int storage, const size_t *chunksizesp); - -/* Inq chunking stuff for a var. */ -EXTERNL int -nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp); - -/* Define fill value behavior for a variable. This must be done after - nc_def_var and before nc_enddef. */ -EXTERNL int -nc_def_var_fill(int ncid, int varid, int no_fill, const void *fill_value); - -/* Inq fill value setting for a var. */ -EXTERNL int -nc_inq_var_fill(int ncid, int varid, int *no_fill, void *fill_valuep); - -/* Define the endianness of a variable. */ -EXTERNL int -nc_def_var_endian(int ncid, int varid, int endian); - -/* Learn about the endianness of a variable. */ -EXTERNL int -nc_inq_var_endian(int ncid, int varid, int *endianp); - -/* Set the fill mode (classic or 64-bit offset files only). */ -EXTERNL int -nc_set_fill(int ncid, int fillmode, int *old_modep); - -/* Set the default nc_create format to NC_FORMAT_CLASSIC, - * NC_FORMAT_64BIT, NC_FORMAT_NETCDF4, etc */ -EXTERNL int -nc_set_default_format(int format, int *old_formatp); - -/* Set the cache size, nelems, and preemption policy. */ -EXTERNL int -nc_set_chunk_cache(size_t size, size_t nelems, float preemption); - -/* Get the cache size, nelems, and preemption policy. */ -EXTERNL int -nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp); - -/* Set the per-variable cache size, nelems, and preemption policy. */ -EXTERNL int -nc_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, - float preemption); - -/* Get the per-variable cache size, nelems, and preemption policy. */ -EXTERNL int -nc_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp, - float *preemptionp); - -EXTERNL int -nc_redef(int ncid); - -/* Is this ever used? Convert to parameter form */ -EXTERNL int -nc__enddef(int ncid, size_t h_minfree, size_t v_align, - size_t v_minfree, size_t r_align); - -EXTERNL int -nc_enddef(int ncid); - -EXTERNL int -nc_sync(int ncid); - -EXTERNL int -nc_abort(int ncid); - -EXTERNL int -nc_close(int ncid); - -EXTERNL int -nc_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp); - -EXTERNL int -nc_inq_ndims(int ncid, int *ndimsp); - -EXTERNL int -nc_inq_nvars(int ncid, int *nvarsp); - -EXTERNL int -nc_inq_natts(int ncid, int *nattsp); - -EXTERNL int -nc_inq_unlimdim(int ncid, int *unlimdimidp); - -/* The next function is for NetCDF-4 only */ -EXTERNL int -nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp); - -/* Added in 3.6.1 to return format of netCDF file. */ -EXTERNL int -nc_inq_format(int ncid, int *formatp); - -/* Added in 4.3.1 to return additional format info */ -EXTERNL int -nc_inq_format_extended(int ncid, int *formatp, int* modep); - -/* Begin _dim */ - -EXTERNL int -nc_def_dim(int ncid, const char *name, size_t len, int *idp); - -EXTERNL int -nc_inq_dimid(int ncid, const char *name, int *idp); - -EXTERNL int -nc_inq_dim(int ncid, int dimid, char *name, size_t *lenp); - -EXTERNL int -nc_inq_dimname(int ncid, int dimid, char *name); - -EXTERNL int -nc_inq_dimlen(int ncid, int dimid, size_t *lenp); - -EXTERNL int -nc_rename_dim(int ncid, int dimid, const char *name); - -/* End _dim */ -/* Begin _att */ - -EXTERNL int -nc_inq_att(int ncid, int varid, const char *name, - nc_type *xtypep, size_t *lenp); - -EXTERNL int -nc_inq_attid(int ncid, int varid, const char *name, int *idp); - -EXTERNL int -nc_inq_atttype(int ncid, int varid, const char *name, nc_type *xtypep); - -EXTERNL int -nc_inq_attlen(int ncid, int varid, const char *name, size_t *lenp); - -EXTERNL int -nc_inq_attname(int ncid, int varid, int attnum, char *name); - -EXTERNL int -nc_copy_att(int ncid_in, int varid_in, const char *name, int ncid_out, int varid_out); - -EXTERNL int -nc_rename_att(int ncid, int varid, const char *name, const char *newname); - -EXTERNL int -nc_del_att(int ncid, int varid, const char *name); - -/* End _att */ -/* Begin {put,get}_att */ -EXTERNL int -nc_put_att_text(int ncid, int varid, const char *name, - size_t len, const char *op); - -EXTERNL int -nc_get_att_text(int ncid, int varid, const char *name, char *ip); - -EXTERNL int -nc_put_att_string(int ncid, int varid, const char *name, - size_t len, const char **op); - -EXTERNL int -nc_get_att_string(int ncid, int varid, const char *name, char **ip); - -EXTERNL int -nc_put_att_uchar(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const unsigned char *op); - -EXTERNL int -nc_get_att_uchar(int ncid, int varid, const char *name, unsigned char *ip); - -EXTERNL int -nc_put_att_schar(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const signed char *op); - -EXTERNL int -nc_get_att_schar(int ncid, int varid, const char *name, signed char *ip); - -EXTERNL int -nc_put_att_short(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const short *op); - -EXTERNL int -nc_get_att_short(int ncid, int varid, const char *name, short *ip); - -EXTERNL int -nc_put_att_int(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const int *op); - -EXTERNL int -nc_get_att_int(int ncid, int varid, const char *name, int *ip); - -EXTERNL int -nc_put_att_long(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const long *op); - -EXTERNL int -nc_get_att_long(int ncid, int varid, const char *name, long *ip); - -EXTERNL int -nc_put_att_float(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const float *op); - -EXTERNL int -nc_get_att_float(int ncid, int varid, const char *name, float *ip); - -EXTERNL int -nc_put_att_double(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const double *op); - -EXTERNL int -nc_get_att_double(int ncid, int varid, const char *name, double *ip); - -EXTERNL int -nc_put_att_ushort(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const unsigned short *op); - -EXTERNL int -nc_get_att_ushort(int ncid, int varid, const char *name, unsigned short *ip); - -EXTERNL int -nc_put_att_uint(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const unsigned int *op); - -EXTERNL int -nc_get_att_uint(int ncid, int varid, const char *name, unsigned int *ip); - -EXTERNL int -nc_put_att_longlong(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const long long *op); - -EXTERNL int -nc_get_att_longlong(int ncid, int varid, const char *name, long long *ip); - -EXTERNL int -nc_put_att_ulonglong(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const unsigned long long *op); - -EXTERNL int -nc_get_att_ulonglong(int ncid, int varid, const char *name, - unsigned long long *ip); - - -/* End {put,get}_att */ -/* Begin _var */ - -EXTERNL int -nc_def_var(int ncid, const char *name, nc_type xtype, int ndims, - const int *dimidsp, int *varidp); - -EXTERNL int -nc_inq_var(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp); - -EXTERNL int -nc_inq_varid(int ncid, const char *name, int *varidp); - -EXTERNL int -nc_inq_varname(int ncid, int varid, char *name); - -EXTERNL int -nc_inq_vartype(int ncid, int varid, nc_type *xtypep); - -EXTERNL int -nc_inq_varndims(int ncid, int varid, int *ndimsp); - -EXTERNL int -nc_inq_vardimid(int ncid, int varid, int *dimidsp); - -EXTERNL int -nc_inq_varnatts(int ncid, int varid, int *nattsp); - -EXTERNL int -nc_rename_var(int ncid, int varid, const char *name); - -EXTERNL int -nc_copy_var(int ncid_in, int varid, int ncid_out); - -#ifndef ncvarcpy -/* support the old name for now */ -#define ncvarcpy(ncid_in, varid, ncid_out) ncvarcopy((ncid_in), (varid), (ncid_out)) -#endif - -/* End _var */ -/* Begin {put,get}_var1 */ - -EXTERNL int -nc_put_var1_text(int ncid, int varid, const size_t *indexp, const char *op); - -EXTERNL int -nc_get_var1_text(int ncid, int varid, const size_t *indexp, char *ip); - -EXTERNL int -nc_put_var1_uchar(int ncid, int varid, const size_t *indexp, - const unsigned char *op); - -EXTERNL int -nc_get_var1_uchar(int ncid, int varid, const size_t *indexp, - unsigned char *ip); - -EXTERNL int -nc_put_var1_schar(int ncid, int varid, const size_t *indexp, - const signed char *op); - -EXTERNL int -nc_get_var1_schar(int ncid, int varid, const size_t *indexp, - signed char *ip); - -EXTERNL int -nc_put_var1_short(int ncid, int varid, const size_t *indexp, - const short *op); - -EXTERNL int -nc_get_var1_short(int ncid, int varid, const size_t *indexp, - short *ip); - -EXTERNL int -nc_put_var1_int(int ncid, int varid, const size_t *indexp, const int *op); - -EXTERNL int -nc_get_var1_int(int ncid, int varid, const size_t *indexp, int *ip); - -EXTERNL int -nc_put_var1_long(int ncid, int varid, const size_t *indexp, const long *op); - -EXTERNL int -nc_get_var1_long(int ncid, int varid, const size_t *indexp, long *ip); - -EXTERNL int -nc_put_var1_float(int ncid, int varid, const size_t *indexp, const float *op); - -EXTERNL int -nc_get_var1_float(int ncid, int varid, const size_t *indexp, float *ip); - -EXTERNL int -nc_put_var1_double(int ncid, int varid, const size_t *indexp, const double *op); - -EXTERNL int -nc_get_var1_double(int ncid, int varid, const size_t *indexp, double *ip); - -EXTERNL int -nc_put_var1_ushort(int ncid, int varid, const size_t *indexp, - const unsigned short *op); - -EXTERNL int -nc_get_var1_ushort(int ncid, int varid, const size_t *indexp, - unsigned short *ip); - -EXTERNL int -nc_put_var1_uint(int ncid, int varid, const size_t *indexp, - const unsigned int *op); - -EXTERNL int -nc_get_var1_uint(int ncid, int varid, const size_t *indexp, - unsigned int *ip); - -EXTERNL int -nc_put_var1_longlong(int ncid, int varid, const size_t *indexp, - const long long *op); - -EXTERNL int -nc_get_var1_longlong(int ncid, int varid, const size_t *indexp, - long long *ip); - -EXTERNL int -nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp, - const unsigned long long *op); - -EXTERNL int -nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp, - unsigned long long *ip); - -EXTERNL int -nc_put_var1_string(int ncid, int varid, const size_t *indexp, - const char **op); - -EXTERNL int -nc_get_var1_string(int ncid, int varid, const size_t *indexp, - char **ip); - -/* End {put,get}_var1 */ -/* Begin {put,get}_vara */ - -EXTERNL int -nc_put_vara_text(int ncid, int varid, const size_t *startp, - const size_t *countp, const char *op); - -EXTERNL int -nc_get_vara_text(int ncid, int varid, const size_t *startp, - const size_t *countp, char *ip); - -EXTERNL int -nc_put_vara_uchar(int ncid, int varid, const size_t *startp, - const size_t *countp, const unsigned char *op); - -EXTERNL int -nc_get_vara_uchar(int ncid, int varid, const size_t *startp, - const size_t *countp, unsigned char *ip); - -EXTERNL int -nc_put_vara_schar(int ncid, int varid, const size_t *startp, - const size_t *countp, const signed char *op); - -EXTERNL int -nc_get_vara_schar(int ncid, int varid, const size_t *startp, - const size_t *countp, signed char *ip); - -EXTERNL int -nc_put_vara_short(int ncid, int varid, const size_t *startp, - const size_t *countp, const short *op); - -EXTERNL int -nc_get_vara_short(int ncid, int varid, const size_t *startp, - const size_t *countp, short *ip); - -EXTERNL int -nc_put_vara_int(int ncid, int varid, const size_t *startp, - const size_t *countp, const int *op); - -EXTERNL int -nc_get_vara_int(int ncid, int varid, const size_t *startp, - const size_t *countp, int *ip); - -EXTERNL int -nc_put_vara_long(int ncid, int varid, const size_t *startp, - const size_t *countp, const long *op); - -EXTERNL int -nc_get_vara_long(int ncid, int varid, - const size_t *startp, const size_t *countp, long *ip); - -EXTERNL int -nc_put_vara_float(int ncid, int varid, - const size_t *startp, const size_t *countp, const float *op); - -EXTERNL int -nc_get_vara_float(int ncid, int varid, - const size_t *startp, const size_t *countp, float *ip); - -EXTERNL int -nc_put_vara_double(int ncid, int varid, const size_t *startp, - const size_t *countp, const double *op); - -EXTERNL int -nc_get_vara_double(int ncid, int varid, const size_t *startp, - const size_t *countp, double *ip); - -EXTERNL int -nc_put_vara_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, const unsigned short *op); - -EXTERNL int -nc_get_vara_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, unsigned short *ip); - -EXTERNL int -nc_put_vara_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, const unsigned int *op); - -EXTERNL int -nc_get_vara_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, unsigned int *ip); - -EXTERNL int -nc_put_vara_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, const long long *op); - -EXTERNL int -nc_get_vara_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, long long *ip); - -EXTERNL int -nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, const unsigned long long *op); - -EXTERNL int -nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, unsigned long long *ip); - -EXTERNL int -nc_put_vara_string(int ncid, int varid, const size_t *startp, - const size_t *countp, const char **op); - -EXTERNL int -nc_get_vara_string(int ncid, int varid, const size_t *startp, - const size_t *countp, char **ip); - -/* End {put,get}_vara */ -/* Begin {put,get}_vars */ - -EXTERNL int -nc_put_vars_text(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const char *op); - -EXTERNL int -nc_get_vars_text(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - char *ip); - -EXTERNL int -nc_put_vars_uchar(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const unsigned char *op); - -EXTERNL int -nc_get_vars_uchar(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - unsigned char *ip); - -EXTERNL int -nc_put_vars_schar(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const signed char *op); - -EXTERNL int -nc_get_vars_schar(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - signed char *ip); - -EXTERNL int -nc_put_vars_short(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const short *op); - -EXTERNL int -nc_get_vars_short(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - short *ip); - -EXTERNL int -nc_put_vars_int(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const int *op); - -EXTERNL int -nc_get_vars_int(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - int *ip); - -EXTERNL int -nc_put_vars_long(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const long *op); - -EXTERNL int -nc_get_vars_long(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - long *ip); - -EXTERNL int -nc_put_vars_float(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const float *op); - -EXTERNL int -nc_get_vars_float(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - float *ip); - -EXTERNL int -nc_put_vars_double(int ncid, int varid, - const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, - const double *op); - -EXTERNL int -nc_get_vars_double(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - double *ip); - -EXTERNL int -nc_put_vars_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const unsigned short *op); - -EXTERNL int -nc_get_vars_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - unsigned short *ip); - -EXTERNL int -nc_put_vars_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const unsigned int *op); - -EXTERNL int -nc_get_vars_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - unsigned int *ip); - -EXTERNL int -nc_put_vars_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const long long *op); - -EXTERNL int -nc_get_vars_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - long long *ip); - -EXTERNL int -nc_put_vars_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const unsigned long long *op); - -EXTERNL int -nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - unsigned long long *ip); - -EXTERNL int -nc_put_vars_string(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const char **op); - -EXTERNL int -nc_get_vars_string(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - char **ip); - -/* End {put,get}_vars */ -/* Begin {put,get}_varm */ - -EXTERNL int -nc_put_varm_text(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const char *op); - -EXTERNL int -nc_get_varm_text(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, char *ip); - -EXTERNL int -nc_put_varm_uchar(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const unsigned char *op); - -EXTERNL int -nc_get_varm_uchar(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, unsigned char *ip); - -EXTERNL int -nc_put_varm_schar(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const signed char *op); - -EXTERNL int -nc_get_varm_schar(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, signed char *ip); - -EXTERNL int -nc_put_varm_short(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const short *op); - -EXTERNL int -nc_get_varm_short(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, short *ip); - -EXTERNL int -nc_put_varm_int(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const int *op); - -EXTERNL int -nc_get_varm_int(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, int *ip); - -EXTERNL int -nc_put_varm_long(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const long *op); - -EXTERNL int -nc_get_varm_long(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, long *ip); - -EXTERNL int -nc_put_varm_float(int ncid, int varid,const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const float *op); - -EXTERNL int -nc_get_varm_float(int ncid, int varid,const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, float *ip); - -EXTERNL int -nc_put_varm_double(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t *imapp, const double *op); - -EXTERNL int -nc_get_varm_double(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, double *ip); - -EXTERNL int -nc_put_varm_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const unsigned short *op); - -EXTERNL int -nc_get_varm_ushort(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, unsigned short *ip); - -EXTERNL int -nc_put_varm_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const unsigned int *op); - -EXTERNL int -nc_get_varm_uint(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, unsigned int *ip); - -EXTERNL int -nc_put_varm_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const long long *op); - -EXTERNL int -nc_get_varm_longlong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, long long *ip); - -EXTERNL int -nc_put_varm_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const unsigned long long *op); - -EXTERNL int -nc_get_varm_ulonglong(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, unsigned long long *ip); - -EXTERNL int -nc_put_varm_string(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const char **op); - -EXTERNL int -nc_get_varm_string(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, char **ip); - -/* End {put,get}_varm */ -/* Begin {put,get}_var */ - -EXTERNL int -nc_put_var_text(int ncid, int varid, const char *op); - -EXTERNL int -nc_get_var_text(int ncid, int varid, char *ip); - -EXTERNL int -nc_put_var_uchar(int ncid, int varid, const unsigned char *op); - -EXTERNL int -nc_get_var_uchar(int ncid, int varid, unsigned char *ip); - -EXTERNL int -nc_put_var_schar(int ncid, int varid, const signed char *op); - -EXTERNL int -nc_get_var_schar(int ncid, int varid, signed char *ip); - -EXTERNL int -nc_put_var_short(int ncid, int varid, const short *op); - -EXTERNL int -nc_get_var_short(int ncid, int varid, short *ip); - -EXTERNL int -nc_put_var_int(int ncid, int varid, const int *op); - -EXTERNL int -nc_get_var_int(int ncid, int varid, int *ip); - -EXTERNL int -nc_put_var_long(int ncid, int varid, const long *op); - -EXTERNL int -nc_get_var_long(int ncid, int varid, long *ip); - -EXTERNL int -nc_put_var_float(int ncid, int varid, const float *op); - -EXTERNL int -nc_get_var_float(int ncid, int varid, float *ip); - -EXTERNL int -nc_put_var_double(int ncid, int varid, const double *op); - -EXTERNL int -nc_get_var_double(int ncid, int varid, double *ip); - -EXTERNL int -nc_put_var_ushort(int ncid, int varid, const unsigned short *op); - -EXTERNL int -nc_get_var_ushort(int ncid, int varid, unsigned short *ip); - -EXTERNL int -nc_put_var_uint(int ncid, int varid, const unsigned int *op); - -EXTERNL int -nc_get_var_uint(int ncid, int varid, unsigned int *ip); - -EXTERNL int -nc_put_var_longlong(int ncid, int varid, const long long *op); - -EXTERNL int -nc_get_var_longlong(int ncid, int varid, long long *ip); - -EXTERNL int -nc_put_var_ulonglong(int ncid, int varid, const unsigned long long *op); - -EXTERNL int -nc_get_var_ulonglong(int ncid, int varid, unsigned long long *ip); - -EXTERNL int -nc_put_var_string(int ncid, int varid, const char **op); - -EXTERNL int -nc_get_var_string(int ncid, int varid, char **ip); - -/* Begin Deprecated, same as functions with "_ubyte" replaced by "_uchar" */ -EXTERNL int -nc_put_att_ubyte(int ncid, int varid, const char *name, nc_type xtype, - size_t len, const unsigned char *op); -EXTERNL int -nc_get_att_ubyte(int ncid, int varid, const char *name, - unsigned char *ip); -EXTERNL int -nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp, - const unsigned char *op); -EXTERNL int -nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp, - unsigned char *ip); -EXTERNL int -nc_put_vara_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, const unsigned char *op); -EXTERNL int -nc_get_vara_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, unsigned char *ip); -EXTERNL int -nc_put_vars_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const unsigned char *op); -EXTERNL int -nc_get_vars_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - unsigned char *ip); -EXTERNL int -nc_put_varm_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, const unsigned char *op); -EXTERNL int -nc_get_varm_ubyte(int ncid, int varid, const size_t *startp, - const size_t *countp, const ptrdiff_t *stridep, - const ptrdiff_t * imapp, unsigned char *ip); -EXTERNL int -nc_put_var_ubyte(int ncid, int varid, const unsigned char *op); -EXTERNL int -nc_get_var_ubyte(int ncid, int varid, unsigned char *ip); -/* End Deprecated */ - -#ifdef LOGGING - -/* Set the log level. 0 shows only errors, 1 only major messages, - * etc., to 5, which shows way too much information. */ -EXTERNL int -nc_set_log_level(int new_level); - -/* Use this to turn off logging by calling - nc_log_level(NC_TURN_OFF_LOGGING) */ -#define NC_TURN_OFF_LOGGING (-1) - -#else /* not LOGGING */ - -#define nc_set_log_level(e) - -#endif /* LOGGING */ - -/* Show the netCDF library's in-memory metadata for a file. */ -EXTERNL int -nc_show_metadata(int ncid); - -/* End {put,get}_var */ - -/* #ifdef _CRAYMPP */ -/* - * Public interfaces to better support - * CRAY multi-processor systems like T3E. - * A tip of the hat to NERSC. - */ -/* - * It turns out we need to declare and define - * these public interfaces on all platforms - * or things get ugly working out the - * FORTRAN interface. On !_CRAYMPP platforms, - * these functions work as advertised, but you - * can only use "processor element" 0. - */ - -EXTERNL int -nc__create_mp(const char *path, int cmode, size_t initialsz, int basepe, - size_t *chunksizehintp, int *ncidp); - -EXTERNL int -nc__open_mp(const char *path, int mode, int basepe, - size_t *chunksizehintp, int *ncidp); - -EXTERNL int -nc_delete(const char *path); - -EXTERNL int -nc_delete_mp(const char *path, int basepe); - -EXTERNL int -nc_set_base_pe(int ncid, int pe); - -EXTERNL int -nc_inq_base_pe(int ncid, int *pe); - -/* #endif _CRAYMPP */ - -/* This v2 function is used in the nc_test program. */ -EXTERNL int -nctypelen(nc_type datatype); - -/* Begin v2.4 backward compatibility */ -/* - * defining NO_NETCDF_2 to the preprocessor - * turns off backward compatibility declarations. - */ -#ifndef NO_NETCDF_2 - -/** Backward compatible alias. */ -/**@{*/ -#define FILL_BYTE NC_FILL_BYTE -#define FILL_CHAR NC_FILL_CHAR -#define FILL_SHORT NC_FILL_SHORT -#define FILL_LONG NC_FILL_INT -#define FILL_FLOAT NC_FILL_FLOAT -#define FILL_DOUBLE NC_FILL_DOUBLE - -#define MAX_NC_DIMS NC_MAX_DIMS -#define MAX_NC_ATTRS NC_MAX_ATTRS -#define MAX_NC_VARS NC_MAX_VARS -#define MAX_NC_NAME NC_MAX_NAME -#define MAX_VAR_DIMS NC_MAX_VAR_DIMS -/**@}*/ - - -/* - * Global error status - */ -EXTERNL int ncerr; - -#define NC_ENTOOL NC_EMAXNAME /* Backward compatibility */ -#define NC_EXDR (-32) /* */ -#define NC_SYSERR (-31) - -/* - * Global options variable. - * Used to determine behavior of error handler. - */ -#define NC_FATAL 1 -#define NC_VERBOSE 2 - -EXTERNL int ncopts; /* default is (NC_FATAL | NC_VERBOSE) */ - -EXTERNL void -nc_advise(const char *cdf_routine_name, int err, const char *fmt,...); - -/* - * C data type corresponding to a netCDF NC_LONG argument, - * a signed 32 bit object. - * - * This is the only thing in this file which architecture dependent. - */ -typedef int nclong; - -EXTERNL int -nccreate(const char* path, int cmode); - -EXTERNL int -ncopen(const char* path, int mode); - -EXTERNL int -ncsetfill(int ncid, int fillmode); - -EXTERNL int -ncredef(int ncid); - -EXTERNL int -ncendef(int ncid); - -EXTERNL int -ncsync(int ncid); - -EXTERNL int -ncabort(int ncid); - -EXTERNL int -ncclose(int ncid); - -EXTERNL int -ncinquire(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimp); - -EXTERNL int -ncdimdef(int ncid, const char *name, long len); - -EXTERNL int -ncdimid(int ncid, const char *name); - -EXTERNL int -ncdiminq(int ncid, int dimid, char *name, long *lenp); - -EXTERNL int -ncdimrename(int ncid, int dimid, const char *name); - -EXTERNL int -ncattput(int ncid, int varid, const char *name, nc_type xtype, - int len, const void *op); - -EXTERNL int -ncattinq(int ncid, int varid, const char *name, nc_type *xtypep, int *lenp); - -EXTERNL int -ncattget(int ncid, int varid, const char *name, void *ip); - -EXTERNL int -ncattcopy(int ncid_in, int varid_in, const char *name, int ncid_out, - int varid_out); - -EXTERNL int -ncattname(int ncid, int varid, int attnum, char *name); - -EXTERNL int -ncattrename(int ncid, int varid, const char *name, const char *newname); - -EXTERNL int -ncattdel(int ncid, int varid, const char *name); - -EXTERNL int -ncvardef(int ncid, const char *name, nc_type xtype, - int ndims, const int *dimidsp); - -EXTERNL int -ncvarid(int ncid, const char *name); - -EXTERNL int -ncvarinq(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp); - -EXTERNL int -ncvarput1(int ncid, int varid, const long *indexp, const void *op); - -EXTERNL int -ncvarget1(int ncid, int varid, const long *indexp, void *ip); - -EXTERNL int -ncvarput(int ncid, int varid, const long *startp, const long *countp, - const void *op); - -EXTERNL int -ncvarget(int ncid, int varid, const long *startp, const long *countp, - void *ip); - -EXTERNL int -ncvarputs(int ncid, int varid, const long *startp, const long *countp, - const long *stridep, const void *op); - -EXTERNL int -ncvargets(int ncid, int varid, const long *startp, const long *countp, - const long *stridep, void *ip); - -EXTERNL int -ncvarputg(int ncid, int varid, const long *startp, const long *countp, - const long *stridep, const long *imapp, const void *op); - -EXTERNL int -ncvargetg(int ncid, int varid, const long *startp, const long *countp, - const long *stridep, const long *imapp, void *ip); - -EXTERNL int -ncvarrename(int ncid, int varid, const char *name); - -EXTERNL int -ncrecinq(int ncid, int *nrecvarsp, int *recvaridsp, long *recsizesp); - -EXTERNL int -ncrecget(int ncid, long recnum, void **datap); - -EXTERNL int -ncrecput(int ncid, long recnum, void *const *datap); - -/* EXTERNL int nc_finalize(); */ - -/* End v2.4 backward compatibility */ -#endif /*!NO_NETCDF_2*/ - -#if defined(__cplusplus) -} -#endif - -/* Temporary hack to shut up warnings */ -#ifndef __MINGW32_VERSION -#define END_OF_MAIN() -#endif - -/* Define two hard-coded functionality-related - macros, but this is not going to be - standard practice. */ -#ifndef NC_HAVE_RENAME_GRP -#define NC_HAVE_RENAME_GRP /*!< rename_grp() support. */ -#endif - -#ifndef NC_HAVE_INQ_FORMAT_EXTENDED -#define NC_HAVE_INQ_FORMAT_EXTENDED /*!< inq_format_extended() support. */ -#endif - -#define NC_HAVE_META_H - -#endif /* _NETCDF_ */ diff --git a/contrib/netcdf/4.4.1.1/include/netcdf_mem.h b/contrib/netcdf/4.4.1.1/include/netcdf_mem.h deleted file mode 100644 index 12f6bfaa8f0..00000000000 --- a/contrib/netcdf/4.4.1.1/include/netcdf_mem.h +++ /dev/null @@ -1,39 +0,0 @@ -/*! \file netcdf_mem.h - * - * Main header file for in-memory (diskless) functionality. - * - * Copyright 2010 University Corporation for Atmospheric - * Research/Unidata. See COPYRIGHT file for more info. - * - * See \ref copyright file for more info. - * - */ - -#ifndef NETCDF_MEM_H -#define NETCDF_MEM_H 1 - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Declaration modifiers for DLL support (MSC et al) */ -#if defined(DLL_NETCDF) /* define when library is a DLL */ -# if defined(DLL_EXPORT) /* define when building the library */ -# define MSC_EXTRA __declspec(dllexport) -# else -# define MSC_EXTRA __declspec(dllimport) -# endif -#include -#else -#define MSC_EXTRA -#endif /* defined(DLL_NETCDF) */ - -# define EXTERNL MSC_EXTRA extern - -EXTERNL int nc_open_mem(const char* path, int mode, size_t size, void* memory, int* ncidp); - -#if defined(__cplusplus) -} -#endif - -#endif /* NETCDF_MEM_H */ diff --git a/contrib/netcdf/4.4.1.1/include/netcdf_meta.h b/contrib/netcdf/4.4.1.1/include/netcdf_meta.h deleted file mode 100644 index 76b62f3252a..00000000000 --- a/contrib/netcdf/4.4.1.1/include/netcdf_meta.h +++ /dev/null @@ -1,52 +0,0 @@ -/*! \file netcdf_meta.h - * - * Meta information for libnetcdf which can be used by other packages which - * depend on libnetcdf. - * - * This file is automatically generated by the build system - * at configure time, and contains information related to - * how libnetcdf was built. It will not be required to - * include this file unless you want to probe the capabilities - * of libnetcdf. This should ideally only happen when configuring - * a project which depends on libnetcdf. At configure time, - * the dependant project can set its own macros which can be used - * in conditionals. - * - * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 - * University Corporation for Atmospheric Research/Unidata. - * See \ref copyright file for more info. - */ - -#ifndef NETCDF_META_H -#define NETCDF_META_H - -#define NC_VERSION_MAJOR 4 /*!< netcdf-c major version. */ -#define NC_VERSION_MINOR 4 /*!< netcdf-c minor version. */ -#define NC_VERSION_PATCH 1 /*!< netcdf-c patch version. */ -#define NC_VERSION_NOTE ".1" /*!< netcdf-c note. May be blank. */ - -/*! netcdf-c version string. - * - * The format of the netcdf-c version string is as follows: - * \code - * NC_VERSION_MAJOR.NC_VERSION_MINOR.NC_VERSION_PATCH.NC_VERSION_NOTE - * \endcode - * Note that the trailing NC_VERSION_NOTE may be empty. It serves for - * identifiers such as '-rc1', etc. - */ -#define NC_VERSION "4.4.1.1" - -#define NC_HAS_NC2 1 /*!< API version 2 support. */ -#define NC_HAS_NC4 1 /*!< API version 4 support. */ -#define NC_HAS_HDF4 0 /*!< hdf4 support. */ -#define NC_HAS_HDF5 1 /*!< hdf5 support. */ -#define NC_HAS_SZIP 1 /*!< szip support (hdf5 only) */ -#define NC_HAS_DAP 1 /*!< DAP support. */ -#define NC_HAS_DISKLESS 1 /*!< diskless support. */ -#define NC_HAS_MMAP 0 /*!< mmap support. */ -#define NC_HAS_JNA 0 /*!< jna support. */ -#define NC_HAS_PNETCDF 0 /*!< pnetcdf support. */ -#define NC_HAS_PARALLEL 0 /*!< parallel IO support via hdf5 and/or pnetcdf. */ - -#endif diff --git a/contrib/netcdf/4.4.1.1/include/netcdf_meta.h.in b/contrib/netcdf/4.4.1.1/include/netcdf_meta.h.in deleted file mode 100644 index 3281cbf3cd8..00000000000 --- a/contrib/netcdf/4.4.1.1/include/netcdf_meta.h.in +++ /dev/null @@ -1,52 +0,0 @@ -/*! \file netcdf_meta.h - * - * Meta information for libnetcdf which can be used by other packages which - * depend on libnetcdf. - * - * This file is automatically generated by the build system - * at configure time, and contains information related to - * how libnetcdf was built. It will not be required to - * include this file unless you want to probe the capabilities - * of libnetcdf. This should ideally only happen when configuring - * a project which depends on libnetcdf. At configure time, - * the dependant project can set its own macros which can be used - * in conditionals. - * - * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 - * University Corporation for Atmospheric Research/Unidata. - * See \ref copyright file for more info. - */ - -#ifndef NETCDF_META_H -#define NETCDF_META_H - -#define NC_VERSION_MAJOR @NC_VERSION_MAJOR@ /*!< netcdf-c major version. */ -#define NC_VERSION_MINOR @NC_VERSION_MINOR@ /*!< netcdf-c minor version. */ -#define NC_VERSION_PATCH @NC_VERSION_PATCH@ /*!< netcdf-c patch version. */ -#define NC_VERSION_NOTE "@NC_VERSION_NOTE@" /*!< netcdf-c note. May be blank. */ - -/*! netcdf-c version string. - * - * The format of the netcdf-c version string is as follows: - * \code - * NC_VERSION_MAJOR.NC_VERSION_MINOR.NC_VERSION_PATCH.NC_VERSION_NOTE - * \endcode - * Note that the trailing NC_VERSION_NOTE may be empty. It serves for - * identifiers such as '-rc1', etc. - */ -#define NC_VERSION "@NC_VERSION@" - -#define NC_HAS_NC2 @NC_HAS_NC2@ /*!< API version 2 support. */ -#define NC_HAS_NC4 @NC_HAS_NC4@ /*!< API version 4 support. */ -#define NC_HAS_HDF4 @NC_HAS_HDF4@ /*!< hdf4 support. */ -#define NC_HAS_HDF5 @NC_HAS_HDF5@ /*!< hdf5 support. */ -#define NC_HAS_SZIP @NC_HAS_SZIP@ /*!< szip support (hdf5 only) */ -#define NC_HAS_DAP @NC_HAS_DAP@ /*!< DAP support. */ -#define NC_HAS_DISKLESS @NC_HAS_DISKLESS@ /*!< diskless support. */ -#define NC_HAS_MMAP @NC_HAS_MMAP@ /*!< mmap support. */ -#define NC_HAS_JNA @NC_HAS_JNA@ /*!< jna support. */ -#define NC_HAS_PNETCDF @NC_HAS_PNETCDF@ /*!< pnetcdf support. */ -#define NC_HAS_PARALLEL @NC_HAS_PARALLEL@ /*!< parallel IO support via hdf5 and/or pnetcdf. */ - -#endif diff --git a/contrib/netcdf/4.4.1.1/include/rnd.h b/contrib/netcdf/4.4.1.1/include/rnd.h deleted file mode 100644 index 4021a4d3225..00000000000 --- a/contrib/netcdf/4.4.1.1/include/rnd.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - */ -/* $Id: rnd.h,v 2.13 1996/12/11 05:46:54 davis Exp $ */ -#ifndef _RNDUP - -/* useful for aligning memory */ -#define _RNDUP(x, unit) ((((x) + (unit) - 1) / (unit)) \ - * (unit)) -#define _RNDDOWN(x, unit) ((x) - ((x)%(unit))) - -#define M_RND_UNIT (sizeof(double)) -#define M_RNDUP(x) _RNDUP(x, M_RND_UNIT) -#define M_RNDDOWN(x) __RNDDOWN(x, M_RND_UNIT) - -#endif diff --git a/contrib/netcdf/4.4.1.1/include/utf8proc.h b/contrib/netcdf/4.4.1.1/include/utf8proc.h deleted file mode 100644 index 9d9bf82ec8e..00000000000 --- a/contrib/netcdf/4.4.1.1/include/utf8proc.h +++ /dev/null @@ -1,401 +0,0 @@ -/* - * Copyright (c) 2006-2007 Jan Behrens, FlexiGuided GmbH, Berlin - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - - -/* - * File name: utf8proc.h - * Version: 1.1.1 - * Last changed: 2007-07-22 - * Changed 2008-05-16 by rkr to add config.h and replacement for stdbool.h - * for pre-C99 compilers that don't support bool. - * Changed 2008-06-05 by rkr to add utf8proc_check(str, options) function for - * for just checking UTF-8 validity - * Description: - * Header files for libutf8proc, which is a mapping tool for UTF-8 strings - * with following features: - * - decomposing and composing of strings - * - replacing compatibility characters with their equivalents - * - stripping of "default ignorable characters" - * like SOFT-HYPHEN or ZERO-WIDTH-SPACE - * - folding of certain characters for string comparison - * (e.g. HYPHEN U+2010 and MINUS U+2212 to ASCII "-") - * (see "LUMP" option) - * - optional rejection of strings containing non-assigned code points - * - stripping of control characters - * - stripping of character marks (accents, etc.) - * - transformation of LF, CRLF, CR and NEL to line-feed (LF) - * or to the unicode chararacters for paragraph separation (PS) - * or line separation (LS). - * - unicode case folding (for case insensitive string comparisons) - * - rejection of illegal UTF-8 data - * (i.e. UTF-8 encoded UTF-16 surrogates) - * - support for korean hangul characters - * Unicode Version 5.0.0 is supported. - */ - - -#ifndef UTF8PROC_H -#define UTF8PROC_H - - -#include "config.h" - -#include -#ifdef HAVE_STDBOOL_H -#include -#else -# if ! HAVE__BOOL -# ifdef __cplusplus -typedef bool _Bool; -# else -typedef unsigned char _Bool; -# endif -# endif -#ifndef _Bool -# define bool _Bool -#endif -# define false 0 -# define true 1 -# define __bool_true_false_are_defined 1 -#endif -#include -#ifdef HAVE_INTTYPES_H -#include -#elif defined(_MSC_VER) && defined(HAVE_STDINT_H) -#include -#else /* HAVE_INTTYPES_H */ -#include -#endif /* HAVE_INTTYPES_H */ -#include - -#ifndef HAVE_SSIZE_T -#define ssize_t int -#endif - -#ifndef SSIZE_MAX -#define SSIZE_MAX (SIZE_MAX/2) -#endif - -#define UTF8PROC_NULLTERM (1<<0) -#define UTF8PROC_STABLE (1<<1) -#define UTF8PROC_COMPAT (1<<2) -#define UTF8PROC_COMPOSE (1<<3) -#define UTF8PROC_DECOMPOSE (1<<4) -#define UTF8PROC_IGNORE (1<<5) -#define UTF8PROC_REJECTNA (1<<6) -#define UTF8PROC_NLF2LS (1<<7) -#define UTF8PROC_NLF2PS (1<<8) -#define UTF8PROC_NLF2LF (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS) -#define UTF8PROC_STRIPCC (1<<9) -#define UTF8PROC_CASEFOLD (1<<10) -#define UTF8PROC_CHARBOUND (1<<11) -#define UTF8PROC_LUMP (1<<12) -#define UTF8PROC_STRIPMARK (1<<13) -/* - * Flags being regarded by several functions in the library: - * NULLTERM: The given UTF-8 input is NULL terminated. - * STABLE: Unicode Versioning Stability has to be respected. - * COMPAT: Compatibility decomposition - * (i.e. formatting information is lost) - * COMPOSE: Return a result with composed characters. - * DECOMPOSE: Return a result with decomposed characters. - * IGNORE: Strip "default ignorable characters" - * REJECTNA: Return an error, if the input contains unassigned - * code points. - * NLF2LS: Indicating that NLF-sequences (LF, CRLF, CR, NEL) are - * representing a line break, and should be converted to the - * unicode character for line separation (LS). - * NLF2PS: Indicating that NLF-sequences are representing a paragraph - * break, and should be converted to the unicode character for - * paragraph separation (PS). - * NLF2LF: Indicating that the meaning of NLF-sequences is unknown. - * STRIPCC: Strips and/or convers control characters. - * NLF-sequences are transformed into space, except if one of - * the NLF2LS/PS/LF options is given. - * HorizontalTab (HT) and FormFeed (FF) are treated as a - * NLF-sequence in this case. - * All other control characters are simply removed. - * CASEFOLD: Performs unicode case folding, to be able to do a - * case-insensitive string comparison. - * CHARBOUND: Inserts 0xFF bytes at the beginning of each sequence which - * is representing a single grapheme cluster (see UAX#29). - * LUMP: Lumps certain characters together - * (e.g. HYPHEN U+2010 and MINUS U+2212 to ASCII "-"). - * (See lump.txt for details.) - * If NLF2LF is set, this includes a transformation of - * paragraph and line separators to ASCII line-feed (LF). - * STRIPMARK: Strips all character markings - * (non-spacing, spacing and enclosing) (i.e. accents) - * NOTE: this option works only with COMPOSE or DECOMPOSE - */ - -#define UTF8PROC_ERROR_NOMEM -1 -#define UTF8PROC_ERROR_OVERFLOW -2 -#define UTF8PROC_ERROR_INVALIDUTF8 -3 -#define UTF8PROC_ERROR_NOTASSIGNED -4 -#define UTF8PROC_ERROR_INVALIDOPTS -5 -/* - * Error codes being returned by almost all functions: - * ERROR_NOMEM: Memory could not be allocated. - * ERROR_OVERFLOW: The given string is too long to be processed. - * ERROR_INVALIDUTF8: The given string is not a legal UTF-8 string. - * ERROR_NOTASSIGNED: The REJECTNA flag was set, - * and an unassigned code point was found. - * ERROR_INVALIDOPTS: Invalid options have been used. - */ - -typedef int16_t utf8proc_propval_t; -typedef struct utf8proc_property_struct { - utf8proc_propval_t category; - utf8proc_propval_t combining_class; - utf8proc_propval_t bidi_class; - utf8proc_propval_t decomp_type; - const int32_t *decomp_mapping; - unsigned bidi_mirrored:1; - int32_t uppercase_mapping; - int32_t lowercase_mapping; - int32_t titlecase_mapping; - int32_t comb1st_index; - int32_t comb2nd_index; - unsigned comp_exclusion:1; - unsigned ignorable:1; - unsigned control_boundary:1; - unsigned extend:1; - const int32_t *casefold_mapping; -} utf8proc_property_t; - -#define UTF8PROC_CATEGORY_LU 1 -#define UTF8PROC_CATEGORY_LL 2 -#define UTF8PROC_CATEGORY_LT 3 -#define UTF8PROC_CATEGORY_LM 4 -#define UTF8PROC_CATEGORY_LO 5 -#define UTF8PROC_CATEGORY_MN 6 -#define UTF8PROC_CATEGORY_MC 7 -#define UTF8PROC_CATEGORY_ME 8 -#define UTF8PROC_CATEGORY_ND 9 -#define UTF8PROC_CATEGORY_NL 10 -#define UTF8PROC_CATEGORY_NO 11 -#define UTF8PROC_CATEGORY_PC 12 -#define UTF8PROC_CATEGORY_PD 13 -#define UTF8PROC_CATEGORY_PS 14 -#define UTF8PROC_CATEGORY_PE 15 -#define UTF8PROC_CATEGORY_PI 16 -#define UTF8PROC_CATEGORY_PF 17 -#define UTF8PROC_CATEGORY_PO 18 -#define UTF8PROC_CATEGORY_SM 19 -#define UTF8PROC_CATEGORY_SC 20 -#define UTF8PROC_CATEGORY_SK 21 -#define UTF8PROC_CATEGORY_SO 22 -#define UTF8PROC_CATEGORY_ZS 23 -#define UTF8PROC_CATEGORY_ZL 24 -#define UTF8PROC_CATEGORY_ZP 25 -#define UTF8PROC_CATEGORY_CC 26 -#define UTF8PROC_CATEGORY_CF 27 -#define UTF8PROC_CATEGORY_CS 28 -#define UTF8PROC_CATEGORY_CO 29 -#define UTF8PROC_CATEGORY_CN 30 -#define UTF8PROC_BIDI_CLASS_L 1 -#define UTF8PROC_BIDI_CLASS_LRE 2 -#define UTF8PROC_BIDI_CLASS_LRO 3 -#define UTF8PROC_BIDI_CLASS_R 4 -#define UTF8PROC_BIDI_CLASS_AL 5 -#define UTF8PROC_BIDI_CLASS_RLE 6 -#define UTF8PROC_BIDI_CLASS_RLO 7 -#define UTF8PROC_BIDI_CLASS_PDF 8 -#define UTF8PROC_BIDI_CLASS_EN 9 -#define UTF8PROC_BIDI_CLASS_ES 10 -#define UTF8PROC_BIDI_CLASS_ET 11 -#define UTF8PROC_BIDI_CLASS_AN 12 -#define UTF8PROC_BIDI_CLASS_CS 13 -#define UTF8PROC_BIDI_CLASS_NSM 14 -#define UTF8PROC_BIDI_CLASS_BN 15 -#define UTF8PROC_BIDI_CLASS_B 16 -#define UTF8PROC_BIDI_CLASS_S 17 -#define UTF8PROC_BIDI_CLASS_WS 18 -#define UTF8PROC_BIDI_CLASS_ON 19 -#define UTF8PROC_DECOMP_TYPE_FONT 1 -#define UTF8PROC_DECOMP_TYPE_NOBREAK 2 -#define UTF8PROC_DECOMP_TYPE_INITIAL 3 -#define UTF8PROC_DECOMP_TYPE_MEDIAL 4 -#define UTF8PROC_DECOMP_TYPE_FINAL 5 -#define UTF8PROC_DECOMP_TYPE_ISOLATED 6 -#define UTF8PROC_DECOMP_TYPE_CIRCLE 7 -#define UTF8PROC_DECOMP_TYPE_SUPER 8 -#define UTF8PROC_DECOMP_TYPE_SUB 9 -#define UTF8PROC_DECOMP_TYPE_VERTICAL 10 -#define UTF8PROC_DECOMP_TYPE_WIDE 11 -#define UTF8PROC_DECOMP_TYPE_NARROW 12 -#define UTF8PROC_DECOMP_TYPE_SMALL 13 -#define UTF8PROC_DECOMP_TYPE_SQUARE 14 -#define UTF8PROC_DECOMP_TYPE_FRACTION 15 -#define UTF8PROC_DECOMP_TYPE_COMPAT 16 - -extern const int8_t utf8proc_utf8class[256]; - -const char *utf8proc_errmsg(ssize_t errcode); -/* - * Returns a static error string for the given error code. - */ - -ssize_t utf8proc_iterate(const uint8_t *str, ssize_t strlen, int32_t *dst); -/* - * Reads a single char from the UTF-8 sequence being pointed to by 'str'. - * The maximum number of bytes read is 'strlen', unless 'strlen' is - * negative. - * If a valid unicode char could be read, it is stored in the variable - * being pointed to by 'dst', otherwise that variable will be set to -1. - * In case of success the number of bytes read is returned, otherwise a - * negative error code is returned. - */ - -bool utf8proc_codepoint_valid(int32_t uc); -/* - * Returns 1, if the given unicode code-point is valid, otherwise 0. - */ - -ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst); -/* - * Encodes the unicode char with the code point 'uc' as an UTF-8 string in - * the byte array being pointed to by 'dst'. This array has to be at least - * 4 bytes long. - * In case of success the number of bytes written is returned, - * otherwise 0. - * This function does not check if 'uc' is a valid unicode code point. - */ - -const utf8proc_property_t *utf8proc_get_property(int32_t uc); -/* - * Returns a pointer to a (constant) struct containing information about - * the unicode char with the given code point 'uc'. - * If the character is not existent a pointer to a special struct is - * returned, where 'category' is a NULL pointer. - * WARNING: The parameter 'uc' has to be in the range of 0x0000 to - * 0x10FFFF, otherwise the program might crash! - */ - -ssize_t utf8proc_decompose_char( - int32_t uc, int32_t *dst, ssize_t bufsize, - int options, int *last_boundclass -); -/* - * Writes a decomposition of the unicode char 'uc' into the array being - * pointed to by 'dst'. - * Following flags in the 'options' field are regarded: - * REJECTNA: an unassigned unicode code point leads to an error - * IGNORE: "default ignorable" chars are stripped - * CASEFOLD: unicode casefolding is applied - * COMPAT: replace certain characters with their - * compatibility decomposition - * CHARBOUND: Inserts 0xFF bytes before each grapheme cluster - * LUMP: lumps certain different characters together - * STRIPMARK: removes all character marks - * The pointer 'last_boundclass' has to point to an integer variable which - * is storing the last character boundary class, if the CHARBOUND option - * is used. - * In case of success the number of chars written is returned, - * in case of an error, a negative error code is returned. - * If the number of written chars would be bigger than 'bufsize', - * the buffer (up to 'bufsize') has inpredictable data, and the needed - * buffer size is returned. - * WARNING: The parameter 'uc' has to be in the range of 0x0000 to - * 0x10FFFF, otherwise the program might crash! - */ - -ssize_t utf8proc_decompose( - const uint8_t *str, ssize_t strlen, - int32_t *buffer, ssize_t bufsize, int options -); -/* - * Does the same as 'utf8proc_decompose_char', but acts on a whole UTF-8 - * string, and orders the decomposed sequences correctly. - * If the NULLTERM flag in 'options' is set, processing will be stopped, - * when a NULL byte is encounted, otherwise 'strlen' bytes are processed. - * The result in form of unicode code points is written into the buffer - * being pointed to by 'buffer', having the length of 'bufsize' entries. - * In case of success the number of chars written is returned, - * in case of an error, a negative error code is returned. - * If the number of written chars would be bigger than 'bufsize', - * the buffer (up to 'bufsize') has inpredictable data, and the needed - * buffer size is returned. - */ - -ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options); -/* - * Reencodes the sequence of unicode characters given by the pointer - * 'buffer' and 'length' as UTF-8. - * The result is stored in the same memory area where the data is read. - * Following flags in the 'options' field are regarded: - * NLF2LS: converts LF, CRLF, CR and NEL into LS - * NLF2PS: converts LF, CRLF, CR and NEL into PS - * NLF2LF: converts LF, CRLF, CR and NEL into LF - * STRIPCC: strips or converts all non-affected control characters - * COMPOSE: tries to combine decomposed characters into composite - * characters - * STABLE: prohibits combining characters which would violate - * the unicode versioning stability - * In case of success the length of the resulting UTF-8 string is - * returned, otherwise a negative error code is returned. - * WARNING: The amount of free space being pointed to by 'buffer', has to - * exceed the amount of the input data by one byte, and the - * entries of the array pointed to by 'str' have to be in the - * range of 0x0000 to 0x10FFFF, otherwise the program might - * crash! - */ - -ssize_t utf8proc_map( - const uint8_t *str, ssize_t strlen, uint8_t **dstptr, int options -); -/* - * Maps the given UTF-8 string being pointed to by 'str' to a new UTF-8 - * string, which is allocated dynamically, and afterwards pointed to by - * the pointer being pointed to by 'dstptr'. - * If the NULLTERM flag in the 'options' field is set, the length is - * determined by a NULL terminator, otherwise the parameter 'strlen' is - * evaluated to determine the string length, but in any case the result - * will be NULL terminated (though it might contain NULL characters - * before). Other flags in the 'options' field are passed to the functions - * defined above, and regarded as described. - * In case of success the length of the new string is returned, - * otherwise a negative error code is returned. - * NOTICE: The memory of the new UTF-8 string will have been allocated with - * 'malloc', and has theirfore to be freed with 'free'. - */ - -uint8_t *utf8proc_NFD(const uint8_t *str); -uint8_t *utf8proc_NFC(const uint8_t *str); -uint8_t *utf8proc_NFKD(const uint8_t *str); -uint8_t *utf8proc_NFKC(const uint8_t *str); -/* - * Returns a pointer to newly allocated memory of a NFD, NFC, NFKD or NFKC - * normalized version of the null-terminated string 'str'. - */ - -ssize_t utf8proc_check(const uint8_t *str); -/* - * Just checks UTF-8 string for validity, returns 0 if valid or one of - * the negative UTF8PROC_ERROR_* codes if invalid or memory exhausted - * checking. Assumes null-terminated string str and UTF8PROC_STABLE - * option. - */ - -#endif - diff --git a/contrib/netcdf/4.4.1.1/libdap2/CMakeLists.txt b/contrib/netcdf/4.4.1.1/libdap2/CMakeLists.txt deleted file mode 100644 index 42e4083c3d5..00000000000 --- a/contrib/netcdf/4.4.1.1/libdap2/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -SET(dap2_SOURCES constraints.c dapcvt.c dapalign.c dapodom.c daputil.c ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c ncd2dispatch.c getvara.c dceconstraints.c dcetab.c dceparse.c dcelex.c) - -add_library(dap2 OBJECT ${dap2_SOURCES}) - -### -# Options related to the man page generation. -### - -### -# The C API man page. -### - -set(man_MANS netcdf.3) - -set(ARGS_MANPAGE -DAPI=C) - -IF (USE_NETCDF4) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) -ENDIF(USE_NETCDF4) - -IF (BUILD_DAP) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) -ENDIF(BUILD_DAP) - -IF (BUILD_PARALLEL) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) -ENDIF(BUILD_PARALLEL) - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} dce.y CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/libdap2/Makefile.am b/contrib/netcdf/4.4.1.1/libdap2/Makefile.am deleted file mode 100755 index 4a5a7ec1192..00000000000 --- a/contrib/netcdf/4.4.1.1/libdap2/Makefile.am +++ /dev/null @@ -1,65 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to libdap2. Whatever that -# is! - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -# We may have to add to these later. -DISTCLEANFILES = -MAINTAINERCLEANFILES = -CLEANFILES = -EXTRA_DIST = CMakeLists.txt - -LDADD= - -SRC= constraints.c dapcvt.c dapalign.c dapodom.c daputil.c \ -ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c \ -ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \ -dceparse.c dcelex.c - -HDRS= nccommon.h constraints.h ncd2dispatch.h ncdap.h dapalign.h \ -dapodom.h getvara.h dapnc.h daputil.h dapdebug.h dapdump.h \ -dceconstraints.h dcetab.h dceparselex.h - -if USE_NETCDF4 -#SRC += cdf4.c constraints4.c ncd4dispatch.c ncdap4.c getvara4.c -#HDRS +=constraints4.h ncd4dispatch.h ncdap4.h -endif - -if BUILD_DAP - -if USE_NETCDF4 -AM_CPPFLAGS += -I$(top_srcdir)/libsrc4 -endif - -# Build convenience library -noinst_LTLIBRARIES = libdap2.la -libdap2_la_SOURCES = $(SRC) $(HDRS) -libdap2_la_CPPFLAGS = $(AM_CPPFLAGS) -libdap2_la_LIBADD = - -#if USE_NETCDF4 -#LDADD += ${top_builddir}/libsrc4/libnetcdf4.la -#endif -# -#LDADD += ${top_builddir}/libsrc/libnetcdf3.la \ -# ${top_builddir}/oc2/liboc.la \ -# ${top_builddir}/libdispatch/libdispatch.la -# -endif # BUILD_DAP - -# These rule are used if someone wants to rebuild the grammar files. -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -EXTRA_DIST += dce.y - -makece:: - bison -v -d -t -p dce dce.y - rm -f dcetab.c dcetab.h - sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.c - sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/Makefile.in b/contrib/netcdf/4.4.1.1/libdap2/Makefile.in deleted file mode 100644 index 968573b3465..00000000000 --- a/contrib/netcdf/4.4.1.1/libdap2/Makefile.in +++ /dev/null @@ -1,923 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to libdap2. Whatever that -# is! - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -#SRC += cdf4.c constraints4.c ncd4dispatch.c ncdap4.c getvara4.c -#HDRS +=constraints4.h ncd4dispatch.h ncdap4.h -@BUILD_DAP_TRUE@@USE_NETCDF4_TRUE@am__append_3 = -I$(top_srcdir)/libsrc4 -subdir = libdap2 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libdap2_la_DEPENDENCIES = -am__libdap2_la_SOURCES_DIST = constraints.c dapcvt.c dapalign.c \ - dapodom.c daputil.c ncdaperr.c cdf.c cache.c dapdump.c \ - dapdebug.c dapattr.c ncd2dispatch.c getvara.c dceconstraints.c \ - dcetab.c dceparse.c dcelex.c nccommon.h constraints.h \ - ncd2dispatch.h ncdap.h dapalign.h dapodom.h getvara.h dapnc.h \ - daputil.h dapdebug.h dapdump.h dceconstraints.h dcetab.h \ - dceparselex.h -am__objects_1 = libdap2_la-constraints.lo libdap2_la-dapcvt.lo \ - libdap2_la-dapalign.lo libdap2_la-dapodom.lo \ - libdap2_la-daputil.lo libdap2_la-ncdaperr.lo libdap2_la-cdf.lo \ - libdap2_la-cache.lo libdap2_la-dapdump.lo \ - libdap2_la-dapdebug.lo libdap2_la-dapattr.lo \ - libdap2_la-ncd2dispatch.lo libdap2_la-getvara.lo \ - libdap2_la-dceconstraints.lo libdap2_la-dcetab.lo \ - libdap2_la-dceparse.lo libdap2_la-dcelex.lo -am__objects_2 = -@BUILD_DAP_TRUE@am_libdap2_la_OBJECTS = $(am__objects_1) \ -@BUILD_DAP_TRUE@ $(am__objects_2) -libdap2_la_OBJECTS = $(am_libdap2_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -@BUILD_DAP_TRUE@am_libdap2_la_rpath = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libdap2_la-cache.Plo \ - ./$(DEPDIR)/libdap2_la-cdf.Plo \ - ./$(DEPDIR)/libdap2_la-constraints.Plo \ - ./$(DEPDIR)/libdap2_la-dapalign.Plo \ - ./$(DEPDIR)/libdap2_la-dapattr.Plo \ - ./$(DEPDIR)/libdap2_la-dapcvt.Plo \ - ./$(DEPDIR)/libdap2_la-dapdebug.Plo \ - ./$(DEPDIR)/libdap2_la-dapdump.Plo \ - ./$(DEPDIR)/libdap2_la-dapodom.Plo \ - ./$(DEPDIR)/libdap2_la-daputil.Plo \ - ./$(DEPDIR)/libdap2_la-dceconstraints.Plo \ - ./$(DEPDIR)/libdap2_la-dcelex.Plo \ - ./$(DEPDIR)/libdap2_la-dceparse.Plo \ - ./$(DEPDIR)/libdap2_la-dcetab.Plo \ - ./$(DEPDIR)/libdap2_la-getvara.Plo \ - ./$(DEPDIR)/libdap2_la-ncd2dispatch.Plo \ - ./$(DEPDIR)/libdap2_la-ncdaperr.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libdap2_la_SOURCES) -DIST_SOURCES = $(am__libdap2_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ - $(am__append_3) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. - -# We may have to add to these later. -DISTCLEANFILES = -MAINTAINERCLEANFILES = -CLEANFILES = - -#if USE_NETCDF4 -#LDADD += ${top_builddir}/libsrc4/libnetcdf4.la -#endif -# -#LDADD += ${top_builddir}/libsrc/libnetcdf3.la \ -# ${top_builddir}/oc2/liboc.la \ -# ${top_builddir}/libdispatch/libdispatch.la -# - -# These rule are used if someone wants to rebuild the grammar files. -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* -EXTRA_DIST = CMakeLists.txt dce.y -LDADD = -SRC = constraints.c dapcvt.c dapalign.c dapodom.c daputil.c \ -ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c \ -ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \ -dceparse.c dcelex.c - -HDRS = nccommon.h constraints.h ncd2dispatch.h ncdap.h dapalign.h \ -dapodom.h getvara.h dapnc.h daputil.h dapdebug.h dapdump.h \ -dceconstraints.h dcetab.h dceparselex.h - - -# Build convenience library -@BUILD_DAP_TRUE@noinst_LTLIBRARIES = libdap2.la -@BUILD_DAP_TRUE@libdap2_la_SOURCES = $(SRC) $(HDRS) -@BUILD_DAP_TRUE@libdap2_la_CPPFLAGS = $(AM_CPPFLAGS) -@BUILD_DAP_TRUE@libdap2_la_LIBADD = -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 libdap2/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libdap2/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libdap2.la: $(libdap2_la_OBJECTS) $(libdap2_la_DEPENDENCIES) $(EXTRA_libdap2_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(am_libdap2_la_rpath) $(libdap2_la_OBJECTS) $(libdap2_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-cache.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-cdf.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-constraints.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapalign.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapattr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapcvt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapdebug.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapdump.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dapodom.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-daputil.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dceconstraints.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dcelex.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dceparse.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-dcetab.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-getvara.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-ncd2dispatch.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdap2_la-ncdaperr.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libdap2_la-constraints.lo: constraints.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-constraints.lo -MD -MP -MF $(DEPDIR)/libdap2_la-constraints.Tpo -c -o libdap2_la-constraints.lo `test -f 'constraints.c' || echo '$(srcdir)/'`constraints.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-constraints.Tpo $(DEPDIR)/libdap2_la-constraints.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='constraints.c' object='libdap2_la-constraints.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-constraints.lo `test -f 'constraints.c' || echo '$(srcdir)/'`constraints.c - -libdap2_la-dapcvt.lo: dapcvt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapcvt.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapcvt.Tpo -c -o libdap2_la-dapcvt.lo `test -f 'dapcvt.c' || echo '$(srcdir)/'`dapcvt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapcvt.Tpo $(DEPDIR)/libdap2_la-dapcvt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapcvt.c' object='libdap2_la-dapcvt.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapcvt.lo `test -f 'dapcvt.c' || echo '$(srcdir)/'`dapcvt.c - -libdap2_la-dapalign.lo: dapalign.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapalign.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapalign.Tpo -c -o libdap2_la-dapalign.lo `test -f 'dapalign.c' || echo '$(srcdir)/'`dapalign.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapalign.Tpo $(DEPDIR)/libdap2_la-dapalign.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapalign.c' object='libdap2_la-dapalign.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapalign.lo `test -f 'dapalign.c' || echo '$(srcdir)/'`dapalign.c - -libdap2_la-dapodom.lo: dapodom.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapodom.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapodom.Tpo -c -o libdap2_la-dapodom.lo `test -f 'dapodom.c' || echo '$(srcdir)/'`dapodom.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapodom.Tpo $(DEPDIR)/libdap2_la-dapodom.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapodom.c' object='libdap2_la-dapodom.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapodom.lo `test -f 'dapodom.c' || echo '$(srcdir)/'`dapodom.c - -libdap2_la-daputil.lo: daputil.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-daputil.lo -MD -MP -MF $(DEPDIR)/libdap2_la-daputil.Tpo -c -o libdap2_la-daputil.lo `test -f 'daputil.c' || echo '$(srcdir)/'`daputil.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-daputil.Tpo $(DEPDIR)/libdap2_la-daputil.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daputil.c' object='libdap2_la-daputil.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-daputil.lo `test -f 'daputil.c' || echo '$(srcdir)/'`daputil.c - -libdap2_la-ncdaperr.lo: ncdaperr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-ncdaperr.lo -MD -MP -MF $(DEPDIR)/libdap2_la-ncdaperr.Tpo -c -o libdap2_la-ncdaperr.lo `test -f 'ncdaperr.c' || echo '$(srcdir)/'`ncdaperr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-ncdaperr.Tpo $(DEPDIR)/libdap2_la-ncdaperr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncdaperr.c' object='libdap2_la-ncdaperr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncdaperr.lo `test -f 'ncdaperr.c' || echo '$(srcdir)/'`ncdaperr.c - -libdap2_la-cdf.lo: cdf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-cdf.lo -MD -MP -MF $(DEPDIR)/libdap2_la-cdf.Tpo -c -o libdap2_la-cdf.lo `test -f 'cdf.c' || echo '$(srcdir)/'`cdf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-cdf.Tpo $(DEPDIR)/libdap2_la-cdf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cdf.c' object='libdap2_la-cdf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cdf.lo `test -f 'cdf.c' || echo '$(srcdir)/'`cdf.c - -libdap2_la-cache.lo: cache.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-cache.lo -MD -MP -MF $(DEPDIR)/libdap2_la-cache.Tpo -c -o libdap2_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-cache.Tpo $(DEPDIR)/libdap2_la-cache.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='libdap2_la-cache.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c - -libdap2_la-dapdump.lo: dapdump.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapdump.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapdump.Tpo -c -o libdap2_la-dapdump.lo `test -f 'dapdump.c' || echo '$(srcdir)/'`dapdump.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapdump.Tpo $(DEPDIR)/libdap2_la-dapdump.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapdump.c' object='libdap2_la-dapdump.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdump.lo `test -f 'dapdump.c' || echo '$(srcdir)/'`dapdump.c - -libdap2_la-dapdebug.lo: dapdebug.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapdebug.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapdebug.Tpo -c -o libdap2_la-dapdebug.lo `test -f 'dapdebug.c' || echo '$(srcdir)/'`dapdebug.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapdebug.Tpo $(DEPDIR)/libdap2_la-dapdebug.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapdebug.c' object='libdap2_la-dapdebug.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdebug.lo `test -f 'dapdebug.c' || echo '$(srcdir)/'`dapdebug.c - -libdap2_la-dapattr.lo: dapattr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapattr.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapattr.Tpo -c -o libdap2_la-dapattr.lo `test -f 'dapattr.c' || echo '$(srcdir)/'`dapattr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapattr.Tpo $(DEPDIR)/libdap2_la-dapattr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapattr.c' object='libdap2_la-dapattr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapattr.lo `test -f 'dapattr.c' || echo '$(srcdir)/'`dapattr.c - -libdap2_la-ncd2dispatch.lo: ncd2dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-ncd2dispatch.lo -MD -MP -MF $(DEPDIR)/libdap2_la-ncd2dispatch.Tpo -c -o libdap2_la-ncd2dispatch.lo `test -f 'ncd2dispatch.c' || echo '$(srcdir)/'`ncd2dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-ncd2dispatch.Tpo $(DEPDIR)/libdap2_la-ncd2dispatch.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncd2dispatch.c' object='libdap2_la-ncd2dispatch.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncd2dispatch.lo `test -f 'ncd2dispatch.c' || echo '$(srcdir)/'`ncd2dispatch.c - -libdap2_la-getvara.lo: getvara.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-getvara.lo -MD -MP -MF $(DEPDIR)/libdap2_la-getvara.Tpo -c -o libdap2_la-getvara.lo `test -f 'getvara.c' || echo '$(srcdir)/'`getvara.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-getvara.Tpo $(DEPDIR)/libdap2_la-getvara.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getvara.c' object='libdap2_la-getvara.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-getvara.lo `test -f 'getvara.c' || echo '$(srcdir)/'`getvara.c - -libdap2_la-dceconstraints.lo: dceconstraints.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dceconstraints.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dceconstraints.Tpo -c -o libdap2_la-dceconstraints.lo `test -f 'dceconstraints.c' || echo '$(srcdir)/'`dceconstraints.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dceconstraints.Tpo $(DEPDIR)/libdap2_la-dceconstraints.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dceconstraints.c' object='libdap2_la-dceconstraints.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceconstraints.lo `test -f 'dceconstraints.c' || echo '$(srcdir)/'`dceconstraints.c - -libdap2_la-dcetab.lo: dcetab.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dcetab.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dcetab.Tpo -c -o libdap2_la-dcetab.lo `test -f 'dcetab.c' || echo '$(srcdir)/'`dcetab.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dcetab.Tpo $(DEPDIR)/libdap2_la-dcetab.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcetab.c' object='libdap2_la-dcetab.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcetab.lo `test -f 'dcetab.c' || echo '$(srcdir)/'`dcetab.c - -libdap2_la-dceparse.lo: dceparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dceparse.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dceparse.Tpo -c -o libdap2_la-dceparse.lo `test -f 'dceparse.c' || echo '$(srcdir)/'`dceparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dceparse.Tpo $(DEPDIR)/libdap2_la-dceparse.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dceparse.c' object='libdap2_la-dceparse.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceparse.lo `test -f 'dceparse.c' || echo '$(srcdir)/'`dceparse.c - -libdap2_la-dcelex.lo: dcelex.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dcelex.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dcelex.Tpo -c -o libdap2_la-dcelex.lo `test -f 'dcelex.c' || echo '$(srcdir)/'`dcelex.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dcelex.Tpo $(DEPDIR)/libdap2_la-dcelex.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcelex.c' object='libdap2_la-dcelex.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcelex.lo `test -f 'dcelex.c' || echo '$(srcdir)/'`dcelex.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -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) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libdap2_la-cache.Plo - -rm -f ./$(DEPDIR)/libdap2_la-cdf.Plo - -rm -f ./$(DEPDIR)/libdap2_la-constraints.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapalign.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapattr.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapcvt.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapdebug.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapdump.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapodom.Plo - -rm -f ./$(DEPDIR)/libdap2_la-daputil.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dceconstraints.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dcelex.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dceparse.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dcetab.Plo - -rm -f ./$(DEPDIR)/libdap2_la-getvara.Plo - -rm -f ./$(DEPDIR)/libdap2_la-ncd2dispatch.Plo - -rm -f ./$(DEPDIR)/libdap2_la-ncdaperr.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libdap2_la-cache.Plo - -rm -f ./$(DEPDIR)/libdap2_la-cdf.Plo - -rm -f ./$(DEPDIR)/libdap2_la-constraints.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapalign.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapattr.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapcvt.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapdebug.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapdump.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dapodom.Plo - -rm -f ./$(DEPDIR)/libdap2_la-daputil.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dceconstraints.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dcelex.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dceparse.Plo - -rm -f ./$(DEPDIR)/libdap2_la-dcetab.Plo - -rm -f ./$(DEPDIR)/libdap2_la-getvara.Plo - -rm -f ./$(DEPDIR)/libdap2_la-ncd2dispatch.Plo - -rm -f ./$(DEPDIR)/libdap2_la-ncdaperr.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -makece:: - bison -v -d -t -p dce dce.y - rm -f dcetab.c dcetab.h - sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.c - sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.h - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapalign.c b/contrib/netcdf/4.4.1.1/libdap2/dapalign.c deleted file mode 100644 index 63d642a6172..00000000000 --- a/contrib/netcdf/4.4.1.1/libdap2/dapalign.c +++ /dev/null @@ -1,331 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* -This code is a variantion of the H5detect.c code from HDF5. -Author: D. Heimbigner 10/7/2008 -*/ -#include "config.h" -#ifndef OFFSETTEST -#include "ncdap.h" -#else -#include -#include -#include -#endif - -#include "dapnc.h" -#include "dapdebug.h" -#include "dapalign.h" - -typedef struct nccalignvlen_t { - size_t len; - void* p; -} nccalignvlen_t; - -#ifdef OFFSETTEST -typedef int nc_type; -#define NC_NAT 0 /* NAT = 'Not A Type' (c.f. NaN) */ -#define NC_BYTE 1 /* signed 1 byte integer */ -#define NC_CHAR 2 /* ISO/ASCII character */ -#define NC_SHORT 3 /* signed 2 byte integer */ -#define NC_INT 4 /* signed 4 byte integer */ -#define NC_FLOAT 5 /* single precision floating point number */ -#define NC_DOUBLE 6 /* double precision floating point number */ -#define NC_UBYTE 7 /* unsigned 1 byte int */ -#define NC_USHORT 8 /* unsigned 2-byte int */ -#define NC_UINT 9 /* unsigned 4-byte int */ -#define NC_INT64 10 /* signed 8-byte int */ -#define NC_UINT64 11 /* unsigned 8-byte int */ -#define NC_STRING 12 /* string */ -#define NC_VLEN 13 -#define NC_OPAQUE 14 -#endif - -/* -The heart of this is the following macro, -which computes the offset of a field x -when preceded by a char field. -The assumptions appear to be as follows: -1. the offset produced in this situation indicates - the alignment for x relative in such a way that it - depends only on the types that precede it in the struct. -2. the compiler does not reorder fields. -3. arrays are tightly packed. -4. nested structs are alignd according to their first member - (this actually follows from C language requirement that - a struct can legally be cast to an instance of its first member). -Given the alignments for the various common primitive types, -it is assumed that one can use them anywhere to construct -the layout of a struct of such types. -It seems to work for HDF5 for a wide variety of machines. -*/ - -#define COMP_ALIGNMENT(DST,TYPE) {\ - struct {char f1; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - - -#define NCCTYPECOUNT (NCCTYPENCVLEN+1) - -static NCtypealignvec vec[NCCTYPECOUNT]; -static NCtypealignset set; -static int dapaligninit = 0; - -unsigned int -ncctypealignment(int nctype) -{ - NCtypealignment* align = NULL; - int index = 0; - if(!dapaligninit) compute_nccalignments(); - switch (nctype) { - case NC_BYTE: index = NCCTYPEUCHAR; break; - case NC_CHAR: index = NCCTYPECHAR; break; - case NC_SHORT: index = NCCTYPESHORT; break; - case NC_INT: index = NCCTYPEINT; break; - case NC_FLOAT: index = NCCTYPEFLOAT; break; - case NC_DOUBLE: index = NCCTYPEDOUBLE; break; - case NC_UBYTE: index = NCCTYPEUCHAR; break; - case NC_USHORT: index = NCCTYPEUSHORT; break; - case NC_UINT: index = NCCTYPEUINT; break; - case NC_INT64: index = NCCTYPELONGLONG; break; - case NC_UINT64: index = NCCTYPEULONGLONG; break; - case NC_STRING: index = NCCTYPEPTR; break; - case NC_VLEN: index = NCCTYPENCVLEN; break; - case NC_OPAQUE: index = NCCTYPEUCHAR; break; - default: -#ifndef OFFSETTEST - PANIC1("nctypealignment: bad type code: %d",nctype); -#else - return 0; -#endif - } - align = &vec[index]; - return align->alignment; -} - - -void -compute_nccalignments(void) -{ - /* Compute the alignments for all the common C data types*/ - /* First for the struct*/ - /* initialize*/ - memset((void*)&set,0,sizeof(set)); - memset((void*)vec,0,sizeof(vec)); - - COMP_ALIGNMENT(set.charalign,char); - COMP_ALIGNMENT(set.ucharalign,unsigned char); - COMP_ALIGNMENT(set.shortalign,short); - COMP_ALIGNMENT(set.ushortalign,unsigned short); - COMP_ALIGNMENT(set.intalign,int); - COMP_ALIGNMENT(set.uintalign,unsigned int); - COMP_ALIGNMENT(set.longalign,long); - COMP_ALIGNMENT(set.ulongalign,unsigned long); - COMP_ALIGNMENT(set.longlongalign,long long); - COMP_ALIGNMENT(set.ulonglongalign,unsigned long long); - COMP_ALIGNMENT(set.floatalign,float); - COMP_ALIGNMENT(set.doublealign,double); - COMP_ALIGNMENT(set.ptralign,void*); - COMP_ALIGNMENT(set.ncvlenalign,nccalignvlen_t); - - /* Then the vector*/ - COMP_ALIGNMENT(vec[NCCTYPECHAR],char); - COMP_ALIGNMENT(vec[NCCTYPEUCHAR],unsigned char); - COMP_ALIGNMENT(vec[NCCTYPESHORT],short); - COMP_ALIGNMENT(vec[NCCTYPEUSHORT],unsigned short); - COMP_ALIGNMENT(vec[NCCTYPEINT],int); - COMP_ALIGNMENT(vec[NCCTYPEUINT],unsigned int); - COMP_ALIGNMENT(vec[NCCTYPELONG],long); - COMP_ALIGNMENT(vec[NCCTYPEULONG],unsigned long); - COMP_ALIGNMENT(vec[NCCTYPELONGLONG],long long); - COMP_ALIGNMENT(vec[NCCTYPEULONGLONG],unsigned long long); - COMP_ALIGNMENT(vec[NCCTYPEFLOAT],float); - COMP_ALIGNMENT(vec[NCCTYPEDOUBLE],double); - COMP_ALIGNMENT(vec[NCCTYPEPTR],void*); - COMP_ALIGNMENT(vec[NCCTYPENCVLEN],nccalignvlen_t); - - dapaligninit = 1; -} - -/* Compute padding */ -int -nccpadding(unsigned long offset, int alignment) -{ - int pad,rem; - rem = (alignment==0?0:(offset % alignment)); - pad = (rem==0?0:(alignment - rem)); - return pad; -} - -#ifdef OFFSETTEST - -#define COMP_ALIGNMENT1(DST,TYPE1,TYPE) {\ - struct {TYPE1 f1; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -#define COMP_ALIGNMENT2(DST,TYPE1,TYPE2,TYPE) {\ - struct {TYPE1 f1, TYPE2 f2; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -#define COMP_SIZE0(DST,TYPE1,TYPE2) {\ - struct {TYPE1 c; TYPE2 x;} tmp; \ - DST = sizeof(tmp); } - -static char* -padname(char* name) -{ -#define MAX 20 - if(name == NULL) name = "null"; - int len = strlen(name); - if(len > MAX) len = MAX; - char* s = (char*)malloc(MAX+1); - memset(s,' ',MAX); - s[MAX+1] = '\0'; - strncpy(s,name,len); - return s; -} - -static void -verify(NCtypealignvec* vec) -{ - int i,j; - NCtypealignvec* vec16; - NCtypealignvec* vec32; - int* sizes8; - int* sizes16; - int* sizes32; - - vec16 = (NCtypealignvec*)malloc(sizeof(NCtypealignvec)*NCCTYPECOUNT); - vec32 = (NCtypealignvec*)malloc(sizeof(NCtypealignvec)*NCCTYPECOUNT); - sizes8 = (int*)malloc(sizeof(int)*NCCTYPECOUNT); - sizes16 = (int*)malloc(sizeof(int)*NCCTYPECOUNT); - sizes32 = (int*)malloc(sizeof(int)*NCCTYPECOUNT); - - COMP_SIZE0(sizes8[1],char,char); - COMP_SIZE0(sizes8[2],unsigned char,char); - COMP_SIZE0(sizes8[3],short,char); - COMP_SIZE0(sizes8[4],unsigned short,char); - COMP_SIZE0(sizes8[5],int,char); - COMP_SIZE0(sizes8[6],unsigned int,char); - COMP_SIZE0(sizes8[7],long,char); - COMP_SIZE0(sizes8[8],unsigned long,char); - COMP_SIZE0(sizes8[9],long long,char); - COMP_SIZE0(sizes8[10],unsigned long long,char); - COMP_SIZE0(sizes8[11],float,char); - COMP_SIZE0(sizes8[12],double,char) ; - COMP_SIZE0(sizes8[13],void*,char); - COMP_SIZE0(sizes8[14],alignvlen_t,char); - - COMP_SIZE0(sizes16[1],char,short); - COMP_SIZE0(sizes16[2],unsigned char,short); - COMP_SIZE0(sizes16[3],short,short); - COMP_SIZE0(sizes16[4],unsigned short,short); - COMP_SIZE0(sizes16[5],int,short); - COMP_SIZE0(sizes16[6],unsigned int,short); - COMP_SIZE0(sizes16[7],long,short); - COMP_SIZE0(sizes16[8],unsigned long,short); - COMP_SIZE0(sizes16[9],long long,short); - COMP_SIZE0(sizes16[10],unsigned long long,short); - COMP_SIZE0(sizes16[11],float,short); - COMP_SIZE0(sizes16[12],double,short) ; - COMP_SIZE0(sizes16[13],void*,short); - COMP_SIZE0(sizes16[14],alignvlen_t*,short); - - COMP_SIZE0(sizes32[1],char,int); - COMP_SIZE0(sizes32[2],unsigned char,int); - COMP_SIZE0(sizes32[3],short,int); - COMP_SIZE0(sizes32[4],unsigned short,int); - COMP_SIZE0(sizes32[5],int,int); - COMP_SIZE0(sizes32[6],unsigned int,int); - COMP_SIZE0(sizes32[7],long,int); - COMP_SIZE0(sizes32[8],unsigned long,int); - COMP_SIZE0(sizes32[9],long long,int); - COMP_SIZE0(sizes32[10],unsigned long long,int); - COMP_SIZE0(sizes32[11],float,int); - COMP_SIZE0(sizes32[12],double,int) ; - COMP_SIZE0(sizes32[13],void*,int); - COMP_SIZE0(sizes32[14],alignvlen_t*,int); - - COMP_ALIGNMENT1(vec16[1],char,short); - COMP_ALIGNMENT1(vec16[2],unsigned char,short); - COMP_ALIGNMENT1(vec16[3],short,short); - COMP_ALIGNMENT1(vec16[4],unsigned short,short); - COMP_ALIGNMENT1(vec16[5],int,short); - COMP_ALIGNMENT1(vec16[6],unsigned int,short); - COMP_ALIGNMENT1(vec32[7],long,short); - COMP_ALIGNMENT1(vec32[8],unsigned long,short); - COMP_ALIGNMENT1(vec32[9],long long,short); - COMP_ALIGNMENT1(vec32[10],unsigned long long,short); - COMP_ALIGNMENT1(vec16[11],float,short); - COMP_ALIGNMENT1(vec16[12],double,short); - COMP_ALIGNMENT1(vec16[13],void*,short); - COMP_ALIGNMENT1(vec16[14],alignvlen_t*,short); - - COMP_ALIGNMENT1(vec32[1],char,short); - COMP_ALIGNMENT1(vec32[2],unsigned char,short); - COMP_ALIGNMENT1(vec32[3],char,short); - COMP_ALIGNMENT1(vec32[4],unsigned short,short); - COMP_ALIGNMENT1(vec32[5],int,int); - COMP_ALIGNMENT1(vec32[6],unsigned int,int); - COMP_ALIGNMENT1(vec32[7],long,int); - COMP_ALIGNMENT1(vec32[8],unsigned long,int); - COMP_ALIGNMENT1(vec32[9],long long,int); - COMP_ALIGNMENT1(vec32[10],unsigned long long,int); - COMP_ALIGNMENT1(vec32[11],float,int); - COMP_ALIGNMENT1(vec32[12],double,int); - COMP_ALIGNMENT1(vec32[13],void*,int); - COMP_ALIGNMENT1(vec32[14],alignvlen_t*,int); - - for(i=0;i NOT-A-TYPE*/ -#define NCCTYPENAT 0 -#define NCCTYPECHAR 1 -#define NCCTYPEUCHAR 2 -#define NCCTYPESHORT 3 -#define NCCTYPEUSHORT 4 -#define NCCTYPEINT 5 -#define NCCTYPEUINT 6 -#define NCCTYPELONG 7 -#define NCCTYPEULONG 8 -#define NCCTYPELONGLONG 9 -#define NCCTYPEULONGLONG 10 -#define NCCTYPEFLOAT 11 -#define NCCTYPEDOUBLE 12 -#define NCCTYPEPTR 13 -#define NCCTYPENCVLEN 14 - -/* Capture in struct and in a vector*/ -typedef struct NCtypealignset { - NCtypealignment charalign; /* char*/ - NCtypealignment ucharalign; /* unsigned char*/ - NCtypealignment shortalign; /* short*/ - NCtypealignment ushortalign; /* unsigned short*/ - NCtypealignment intalign; /* int*/ - NCtypealignment uintalign; /* unsigned int*/ - NCtypealignment longalign; /* long*/ - NCtypealignment ulongalign; /* unsigned long*/ - NCtypealignment longlongalign; /* long long*/ - NCtypealignment ulonglongalign; /* unsigned long long*/ - NCtypealignment floatalign; /* float*/ - NCtypealignment doublealign; /* double*/ - NCtypealignment ptralign; /* void**/ - NCtypealignment ncvlenalign; /* nc_vlen_t*/ -} NCtypealignset; - -typedef NCtypealignment NCtypealignvec; - -extern void compute_nccalignments(void); -extern unsigned int ncctypealignment(int nctype); -extern int nccpadding(unsigned long offset, int alignment); - -#endif /*ALIGN_H*/ diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapattr.c b/contrib/netcdf/4.4.1.1/libdap2/dapattr.c deleted file mode 100644 index e4567e30553..00000000000 --- a/contrib/netcdf/4.4.1.1/libdap2/dapattr.c +++ /dev/null @@ -1,502 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ - -#include "ncdap.h" - -#define OCCHECK(exp) if((ocstat = (exp))) {THROWCHK(ocstat); goto done;} - -/* Forward */ -static NCerror buildattribute(char*,nc_type,size_t,char**,NCattribute**); - -/* -Invoke oc_merge_das and then extract special -attributes such as "strlen" and "dimname" -and stuff from DODS_EXTRA. -*/ -int -dapmerge(NCDAPCOMMON* nccomm, CDFnode* ddsroot, OCddsnode dasroot) -{ - int i,j; - NCerror ncstat = NC_NOERR; - OCerror ocstat = OC_NOERR; - NClist* allnodes; - OClink conn; - char* ocname = NULL; - char** values = NULL; - conn = nccomm->oc.conn; - - if(ddsroot == NULL || dasroot == NULL) - return NC_NOERR; - /* Merge the das tree onto the dds tree */ - ocstat = oc_merge_das(nccomm->oc.conn,dasroot,ddsroot->ocnode); - if(ocstat != OC_NOERR) goto done; - - /* Create attributes on CDFnodes */ - allnodes = ddsroot->tree->nodes; - for(i=0;iocnode; - size_t attrcount; - OCtype ocetype; - - OCCHECK(oc_dds_attr_count(conn,ocnode,&attrcount)); - for(j=0;j 0) { - values = (char**)malloc(sizeof(char*)*nvalues); - if(values == NULL) {ncstat = NC_ENOMEM; goto done;} - OCCHECK(oc_dds_attr(conn,ocnode,j,NULL,NULL,NULL,values)); - } - ncstat = buildattribute(ocname,octypetonc(ocetype),nvalues,values,&att); - if(ncstat != NC_NOERR) goto done; - if(node->attributes == NULL) - node->attributes = nclistnew(); - nclistpush(node->attributes,(void*)att); - if(strncmp(ocname,"DODS",strlen("DODS"))==0) { - att->invisible = 1; - /* Define extra semantics associated with - DODS and DODS_EXTRA attributes */ - if(strcmp(ocname,"DODS.strlen")==0 - || strcmp(ocname,"DODS_EXTRA.strlen")==0) { - unsigned int maxstrlen = 0; - if(values != NULL) { - if(0==sscanf(values[0],"%u",&maxstrlen)) - maxstrlen = 0; - } - node->dodsspecial.maxstrlen = maxstrlen; -#ifdef DEBUG -fprintf(stderr,"%s.maxstrlen=%d\n",node->ocname,(int)node->dodsspecial.maxstrlen); -#endif - } else if(strcmp(ocname,"DODS.dimName")==0 - || strcmp(ocname,"DODS_EXTRA.dimName")==0) { - if(values != NULL) { - node->dodsspecial.dimname = nulldup(values[0]); -#ifdef DEBUG -fprintf(stderr,"%s.dimname=%s\n",node->ocname,node->dodsspecial.dimname); -#endif - } else node->dodsspecial.dimname = NULL; - } else if(strcmp(ocname,"DODS.Unlimited_Dimension")==0 - || strcmp(ocname,"DODS_EXTRA.Unlimited_Dimension")==0) { - if(values != NULL) { - if(nccomm->cdf.recorddimname != NULL) - nclog(NCLOGWARN,"Duplicate DODS_EXTRA:Unlimited_Dimension specifications"); - else - nccomm->cdf.recorddimname = nulldup(values[0]); -#ifdef DEBUG -fprintf(stderr,"%s.Unlimited_Dimension=%s\n",node->ocname,nccomm->cdf.recorddimname); -#endif - } - - } - } - /* clean up */ - if(values) { - oc_reclaim_strings(nvalues,values); - free(values); - values = NULL; - } - } - } - -done: - if(values != NULL) free(values); - if(ocname != NULL) free(ocname); - if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat); - return THROW(ncstat); -} - -/* Build an NCattribute */ -static NCerror -buildattribute(char* name, nc_type ptype, - size_t nvalues, char** values, NCattribute** attp) -{ - int i; - NCerror ncstat = NC_NOERR; - NCattribute* att = NULL; - - att = (NCattribute*)calloc(1,sizeof(NCattribute)); - MEMCHECK(att,NC_ENOMEM); - att->name = nulldup(name); - att->etype = ptype; - - att->values = nclistnew(); - for(i=0;ivalues,(void*)nulldup(values[i])); - - if(attp) *attp = att; - else - free(att); - - return THROW(ncstat); -} - -#if 0 -/* -Given a das attribute walk it to see if it -has at least 1 actual attribute (no recursion) -*/ -static int -hasattribute(OClink conn, OCdasnode dasnode) -{ - int i; - OCerror ocstat = OC_NOERR; - int tf = 0; /* assume false */ - OCtype ocsubtype; - NClist* subnodes = nclistnew(); - - OCCHECK(oc_dds_octype(conn,dasnode,&ocsubtype)); - if(ocsubtype == OC_Attribute) return 1; /* this is an attribute */ - ASSERT((ocsubtype == OC_Attributeset)); - - OCCHECK(collect_subnodes(conn,dasnode,subnodes)); - for(i=0;ioc.conn; - size_t nsubnodes; - NClist* dasglobals = nclistnew(); - NClist* dasnodes = nclistnew(); - NClist* dodsextra = nclistnew(); - NClist* varnodes = nclistnew(); - NClist* alldasnodes = nclistnew(); - - if(ddsroot == NULL || dasroot == NULL) return NC_NOERR; - - ocstat = collect_alldasnodes(conn,dasroot,alldasnodes); - - /* 1. collect all the relevant DAS nodes; - namely those that contain at least one - attribute value. - Simultaneously look for potential ambiguities - if found; complain but continue: result are indeterminate. - also collect globals and DODS_EXTRA separately. - */ - for(i=0;ifullname :: DDS->fullname - 2. DAS->name :: DDS->fullname (support DAS names with embedded '.' - 3. DAS->name :: DDS->name - 4. special case for DODS. Apply 1-3 on DODS parent. - */ - for(i=0;iocname)==0) { - mergedas1(nccomm,conn,dds,das); - /* remove from dasnodes list*/ - nclistset(dasnodes,i,(void*)NULL); - } - nullfree(ddsfullname); - } - nullfree(ocfullname); - nullfree(ocbasename); - } - - /* 4. Assign globals */ - for(i=0;iattributes == NULL) dds->attributes = nclistnew(); - /* assign the simple attributes in the das set to this dds node*/ - OCCHECK(oc_inq_nsubnodes(conn,das,&nsubnodes)); - OCCHECK(oc_inq_subnodes(conn,das,&subnodes)); - for(i=0;iattributes,(void*)att); - } else if(octype == OC_Attributeset - && (strcmp(ocname,"DODS")==0 - || strcmp(ocname,"DODS_EXTRA")==0)) { - /* Turn the DODS special attributes into into - special attributes for dds node */ - OCCHECK(oc_inq_nsubnodes(conn,attnode,&ndodsnodes)); - OCCHECK(oc_inq_subnodes(conn,attnode,&dodsnodes)); - for(j=0;jinvisible = 1; - nclistpush(dds->attributes,(void*)att); - - /* Define extra semantics associated with DODS and DODS_EXTRA attribute */ - if(strcmp(dodsname,"strlen")==0) { - unsigned int maxstrlen = 0; - if(nclistlength(stringvalues) > 0) { - char* stringval = (char*)nclistget(stringvalues,0); - if(0==sscanf(stringval,"%u",&maxstrlen)) maxstrlen = 0; - } - dds->dodsspecial.maxstrlen = maxstrlen; -#ifdef DEBUG -fprintf(stderr,"%s.maxstrlen=%d\n",dds->ocname,(int)dds->dodsspecial.maxstrlen); -#endif - } else if(strcmp(dodsname,"dimName")==0) { - if(nclistlength(stringvalues) > 0) { - char* stringval = (char*)nclistget(stringvalues,0); - dds->dodsspecial.dimname = nulldup(stringval); -#ifdef DEBUG -fprintf(stderr,"%s.dimname=%s\n",dds->ocname,dds->dodsspecial.dimname); -#endif - } else dds->dodsspecial.dimname = NULL; - } else if(strcmp(dodsname,"Unlimited_Dimension")==0) { - if(nccomm->cdf.recorddimname != NULL) { - nclog(NCLOGWARN,"Duplicate DODS_EXTRA:Unlimited_Dimension specifications"); - } else if(nclistlength(stringvalues) > 0) { - char* stringval = (char*)nclistget(stringvalues,0); - nccomm->cdf.recorddimname = nulldup(stringval); -#ifdef DEBUG -fprintf(stderr,"%s.Unlimited_Dimension=%s\n",dds->ocname,nccomm->cdf.recorddimname); -#endif - } - } /* else ignore */ - nullfree(dodsname); - } - nullfree(dodsnodes); - } - nullfree(ocname); - } - -done: - nullfree(subnodes); - if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat); - return THROW(ncstat); -} - -static int -isglobalname(char* name) -{ - int len = strlen(name); - int glen = strlen("global"); - char* p; - if(len < glen) return 0; - p = name + (len - glen); - if(strcasecmp(p,"global") != 0) - return 0; - return 1; -} - - -static OCerror -collect_alldasnodes(OClink link, OCddsnode dasnode, NClist* alldasnodes) -{ - size_t nsubnodes,i; - OCerror ocstat = OC_NOERR; - nclistpush(alldasnodes,(void*)dasnode); - ocstat = oc_dds_nsubnodes(link,dasnode,&nsubnodes); - if(ocstat != OC_NOERR) goto done; - for(i=0;i -#endif - -NCerror -dapconvert(nc_type srctype, nc_type dsttype, char* memory0, char* value0, size_t count) -{ - NCerror ncstat = NC_NOERR; - size_t i; - char* memory = memory0; - char* value = value0; - - /* In order to deal with the DAP upgrade problem, - try to preserve the bit patterns - */ - - /* Provide space and pointer casts for intermediate results */ - signed char ncbyte; - signed char* ncbytep; - char ncchar; - char* nccharp; - short ncshort; - short* ncshortp; - int ncint; - int* ncintp; - float ncfloat; - float* ncfloatp; - double ncdouble; - double* ncdoublep; - unsigned char ncubyte; - unsigned char* ncubytep; - unsigned short ncushort; - unsigned short* ncushortp; - unsigned int ncuint; - unsigned int* ncuintp; - long long ncint64; - long long* ncint64p; - unsigned long long ncuint64; - unsigned long long* ncuint64p; - - -#define CASE(nc1,nc2) (nc1*256+nc2) -#define CUT8(e) ((unsigned char)((e) & 0xff)) -#define CUT16(e) ((unsigned short)((e) & 0xffff)) -#define CUT32(e) ((unsigned int)((e) & 0xffffffff)) -#define ARM(vs,ncs,ts,vd,ncd,td) \ -case CASE(ncs,ncd):\ - vs##p = (ts *)value;\ - vs = *vs##p;\ - vd##p = (td *)memory;\ - *vd##p = (td)vs;\ - break; - - for(i=0;i -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include -#include - -#include "ncbytes.h" -#include "nclist.h" -#include "nchashmap.h" -#include "nclog.h" -#include "ncuri.h" - -#include "fbits.h" -#include "dceconstraints.h" - -#include "netcdf.h" -#include "ncdispatch.h" -#include "nc.h" -#include "nc3internal.h" - /* netcdf overrides*/ -#include "dapnc.h" - -#include "oc.h" - -#include "dapdebug.h" -#include "daputil.h" - -/**************************************************/ -/* sigh, do the forwards */ -struct NCprojection; -struct NCselection; -struct Getvara; -struct NCcachenode; -struct NCcache; -struct NCslice; -struct NCsegment; - -/**************************************************/ - -#include "nccommon.h" -#include "getvara.h" -#include "constraints.h" - -/**************************************************/ - -#ifndef USE_NETCDF4 -#define NC_UBYTE 7 /* unsigned 1 byte int */ -#define NC_USHORT 8 /* unsigned 2-byte int */ -#define NC_UINT 9 /* unsigned 4-byte int */ -#define NC_INT64 10 /* signed 8-byte int */ -#define NC_UINT64 11 /* unsigned 8-byte int */ -#define NC_STRING 12 /* string */ - -#define NC_MAX_BYTE 127 -#define NC_MIN_BYTE (-NC_MAX_BYTE-1) -#define NC_MAX_CHAR 255 -#define NC_MAX_SHORT 32767 -#define NC_MIN_SHORT (-NC_MAX_SHORT - 1) -#define NC_MAX_INT 2147483647 -#define NC_MIN_INT (-NC_MAX_INT - 1) -#define NC_MAX_FLOAT 3.402823466e+38f -#define NC_MIN_FLOAT (-NC_MAX_FLOAT) -#define NC_MAX_DOUBLE 1.7976931348623157e+308 -#define NC_MIN_DOUBLE (-NC_MAX_DOUBLE) -#define NC_MAX_UBYTE NC_MAX_CHAR -#define NC_MAX_USHORT 65535U -#define NC_MAX_UINT 4294967295U -#define NC_MAX_INT64 (9223372036854775807LL) -#define NC_MIN_INT64 (-9223372036854775807LL-1) -#define NC_MAX_UINT64 (18446744073709551615ULL) -#define X_INT64_MAX (9223372036854775807LL) -#define X_INT64_MIN (-X_INT64_MAX - 1) -#define X_UINT64_MAX (18446744073709551615ULL) -#endif /*USE_NETCDF4*/ - - -/**************************************************/ - -extern struct NCTMODEL nctmodels[]; - -/**************************************************/ -/* Import some internal procedures from libsrc*/ - -/* Internal, but non-static procedures */ -extern NCerror computecdfvarnames(NCDAPCOMMON*,CDFnode*,NClist*); -extern NCerror computecdfnodesets(NCDAPCOMMON* nccomm, CDFtree* tree); -extern NCerror computevarnodes(NCDAPCOMMON*, NClist*, NClist*); -extern NCerror collectvardefdims(NCDAPCOMMON* drno, CDFnode* var, NClist* dimset); -extern NCerror fixgrids(NCDAPCOMMON* drno); -extern NCerror dapmerge(NCDAPCOMMON* drno, CDFnode* node, OCobject dasroot); -extern NCerror sequencecheck(NCDAPCOMMON* drno); -extern NCerror computecdfdimnames(NCDAPCOMMON*); -extern NCerror attachdatadds(struct NCDAPCOMMON*); -extern NCerror detachdatadds(struct NCDAPCOMMON*); -extern void dapdispatch3init(void); - -/* -extern void dereference(NCconstraint* constraint); -extern NCerror rereference(NCconstraint*, NClist*); -*/ - -extern NCerror dapbuildvaraprojection(CDFnode*, - const size_t* startp, const size_t* countp, const ptrdiff_t* stridep, - struct DCEprojection** projectionlist); - -extern NCerror nc3d_getvarx(int ncid, int varid, - const size_t *startp, - const size_t *countp, - const ptrdiff_t *stridep, - void *data, - nc_type dsttype0); - -/**************************************************/ - -/* From: ncd2dispatch.c*/ -extern size_t dap_one[NC_MAX_VAR_DIMS]; -extern size_t dap_zero[NC_MAX_VAR_DIMS]; - -extern NCerror nc3d_open(const char* path, int mode, int* ncidp); -extern int nc3d_close(int ncid); -extern NCerror restruct(NCDAPCOMMON*, CDFnode* ddsroot, CDFnode* pattern, NClist*); -extern void setvisible(CDFnode* root, int visible); -extern NCerror mapnodes(CDFnode* dstroot, CDFnode* srcroot); -extern void unmap(CDFnode* root); - -#if 0 -extern NCerror fetchpatternmetadata(NCDAPCOMMON* nccomm); -extern NCerror fetchconstrainedmetadata(NCDAPCOMMON* nccomm); -extern void applyclientparamcontrols(NCDAPCOMMON*); -extern NCerror suppressunusablevars(NCDAPCOMMON*); -extern void estimatevarsizes(NCDAPCOMMON*); -extern NCerror showprojection(NCDAPCOMMON*, CDFnode* var); -#endif - -/* From: dapcvt.c*/ -extern NCerror dapconvert(nc_type, nc_type, char*, char*, size_t); -extern int dapcvtattrval(nc_type, void*, NClist*); - -#endif /*NCDAP_H*/ diff --git a/contrib/netcdf/4.4.1.1/libdispatch/CMakeLists.txt b/contrib/netcdf/4.4.1.1/libdispatch/CMakeLists.txt deleted file mode 100644 index 05d96a34349..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(libdispatch_SOURCES dparallel.c dcopy.c dfile.c ddim.c datt.c dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c dvarinq.c ddispatch.c nclog.c dstring.c dutf8proc.c ncuri.c nclist.c ncbytes.c nchashmap.c nctime.c dinternal.c nc.c nclistmgr.c) - -IF(USE_NETCDF4) - SET(libdispatch_SOURCES ${libdispatch_SOURCES} dgroup.c dvlen.c dcompound.c dtype.c denum.c dopaque.c ncaux.c) -ENDIF(USE_NETCDF4) - -IF(BUILD_V2) - SET(libdispatch_SOURCES ${libdispatch_SOURCES} dv2i.c) -ENDIF(BUILD_V2) - -add_library(dispatch OBJECT ${libdispatch_SOURCES}) - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.c) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/libdispatch/Makefile.am b/contrib/netcdf/4.4.1.1/libdispatch/Makefile.am deleted file mode 100755 index aab3d9eee90..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/Makefile.am +++ /dev/null @@ -1,63 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This Makefile controls the building of the dispatch layer of the -# netCDF library. The dispatch layer decides whether to call the -# netcdf-classic code, netcdf-4 code, nc3 dap code, or nc4 dap -# code. It also contains code that sit above the dispatch layer, like -# the v2 API. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -# This is our output, the dispatch convenience library. -noinst_LTLIBRARIES = libdispatch.la -libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS} - -# The source files. -libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \ -dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c \ -dvarinq.c dinternal.c ddispatch.c \ -nclog.c dstring.c dutf8proc.c utf8proc_data.h \ -ncuri.c nclist.c ncbytes.c nchashmap.c nctime.c \ -nc.c nclistmgr.c - -# Add functions only found in netCDF-4. -if USE_NETCDF4 -libdispatch_la_SOURCES += dgroup.c dvlen.c dcompound.c dtype.c denum.c \ -dopaque.c ncaux.c -endif # USE_NETCDF4 - -# Turn on pre-processor flag when building a DLL for windows. -if BUILD_DLL -libdispatch_la_CPPFLAGS += -DDLL_EXPORT -endif # BUILD_DLL - -# Add V2 API convenience library if needed. -if BUILD_V2 -noinst_LTLIBRARIES += libnetcdf2.la -libnetcdf2_la_SOURCES = dv2i.c -libnetcdf2_la_CPPFLAGS = ${AM_CPPFLAGS} -DDLL_EXPORT -endif # BUILD_V2 - -EXTRA_DIST=CMakeLists.txt ncsettings.hdr - -# Build ncsettings.c as follows: -# 1. copy ncsettings.hdr to ncsettings.c -# 2. append libnetcdf.settings to ncsettings.c after -# processing it as follows: -# 1. convert tabs and cr to blanks -# 2. convert embedded double quote (") to escaped form (\"). -# 3. append newline (\n) to each line -# 4. surround each line with double quotes. -# 3. finally, add a semicolon to the end of ncsettings.c -# to complete the string constant. - -ncsettings.c: $(top_srcdir)/libnetcdf.settings ncsettings.hdr - rm -f ncsettings.c - cat ncsettings.hdr > ncsettings.c - tr '\t\r' ' ' <${top_srcdir}/libnetcdf.settings | \ - sed -e 's/"/\\"/g' | \ - sed -e 's/\(.*\)/\"\1\\n\"/' | \ - cat >> ncsettings.c - echo ';' >> ncsettings.c diff --git a/contrib/netcdf/4.4.1.1/libdispatch/Makefile.in b/contrib/netcdf/4.4.1.1/libdispatch/Makefile.in deleted file mode 100644 index 6cb90262eeb..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/Makefile.in +++ /dev/null @@ -1,1114 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This Makefile controls the building of the dispatch layer of the -# netCDF library. The dispatch layer decides whether to call the -# netcdf-classic code, netcdf-4 code, nc3 dap code, or nc4 dap -# code. It also contains code that sit above the dispatch layer, like -# the v2 API. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# Add functions only found in netCDF-4. -@USE_NETCDF4_TRUE@am__append_3 = dgroup.c dvlen.c dcompound.c dtype.c denum.c \ -@USE_NETCDF4_TRUE@dopaque.c ncaux.c - - -# Turn on pre-processor flag when building a DLL for windows. -@BUILD_DLL_TRUE@am__append_4 = -DDLL_EXPORT - -# Add V2 API convenience library if needed. -@BUILD_V2_TRUE@am__append_5 = libnetcdf2.la -subdir = libdispatch -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libdispatch_la_LIBADD = -am__libdispatch_la_SOURCES_DIST = dparallel.c dcopy.c dfile.c ddim.c \ - datt.c dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c \ - dvarput.c dvarinq.c dinternal.c ddispatch.c nclog.c dstring.c \ - dutf8proc.c utf8proc_data.h ncuri.c nclist.c ncbytes.c \ - nchashmap.c nctime.c nc.c nclistmgr.c dgroup.c dvlen.c \ - dcompound.c dtype.c denum.c dopaque.c ncaux.c -@USE_NETCDF4_TRUE@am__objects_1 = libdispatch_la-dgroup.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-dvlen.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-dcompound.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-dtype.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-denum.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-dopaque.lo \ -@USE_NETCDF4_TRUE@ libdispatch_la-ncaux.lo -am_libdispatch_la_OBJECTS = libdispatch_la-dparallel.lo \ - libdispatch_la-dcopy.lo libdispatch_la-dfile.lo \ - libdispatch_la-ddim.lo libdispatch_la-datt.lo \ - libdispatch_la-dattinq.lo libdispatch_la-dattput.lo \ - libdispatch_la-dattget.lo libdispatch_la-derror.lo \ - libdispatch_la-dvar.lo libdispatch_la-dvarget.lo \ - libdispatch_la-dvarput.lo libdispatch_la-dvarinq.lo \ - libdispatch_la-dinternal.lo libdispatch_la-ddispatch.lo \ - libdispatch_la-nclog.lo libdispatch_la-dstring.lo \ - libdispatch_la-dutf8proc.lo libdispatch_la-ncuri.lo \ - libdispatch_la-nclist.lo libdispatch_la-ncbytes.lo \ - libdispatch_la-nchashmap.lo libdispatch_la-nctime.lo \ - libdispatch_la-nc.lo libdispatch_la-nclistmgr.lo \ - $(am__objects_1) -libdispatch_la_OBJECTS = $(am_libdispatch_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libnetcdf2_la_LIBADD = -am__libnetcdf2_la_SOURCES_DIST = dv2i.c -@BUILD_V2_TRUE@am_libnetcdf2_la_OBJECTS = libnetcdf2_la-dv2i.lo -libnetcdf2_la_OBJECTS = $(am_libnetcdf2_la_OBJECTS) -@BUILD_V2_TRUE@am_libnetcdf2_la_rpath = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libdispatch_la-datt.Plo \ - ./$(DEPDIR)/libdispatch_la-dattget.Plo \ - ./$(DEPDIR)/libdispatch_la-dattinq.Plo \ - ./$(DEPDIR)/libdispatch_la-dattput.Plo \ - ./$(DEPDIR)/libdispatch_la-dcompound.Plo \ - ./$(DEPDIR)/libdispatch_la-dcopy.Plo \ - ./$(DEPDIR)/libdispatch_la-ddim.Plo \ - ./$(DEPDIR)/libdispatch_la-ddispatch.Plo \ - ./$(DEPDIR)/libdispatch_la-denum.Plo \ - ./$(DEPDIR)/libdispatch_la-derror.Plo \ - ./$(DEPDIR)/libdispatch_la-dfile.Plo \ - ./$(DEPDIR)/libdispatch_la-dgroup.Plo \ - ./$(DEPDIR)/libdispatch_la-dinternal.Plo \ - ./$(DEPDIR)/libdispatch_la-dopaque.Plo \ - ./$(DEPDIR)/libdispatch_la-dparallel.Plo \ - ./$(DEPDIR)/libdispatch_la-dstring.Plo \ - ./$(DEPDIR)/libdispatch_la-dtype.Plo \ - ./$(DEPDIR)/libdispatch_la-dutf8proc.Plo \ - ./$(DEPDIR)/libdispatch_la-dvar.Plo \ - ./$(DEPDIR)/libdispatch_la-dvarget.Plo \ - ./$(DEPDIR)/libdispatch_la-dvarinq.Plo \ - ./$(DEPDIR)/libdispatch_la-dvarput.Plo \ - ./$(DEPDIR)/libdispatch_la-dvlen.Plo \ - ./$(DEPDIR)/libdispatch_la-nc.Plo \ - ./$(DEPDIR)/libdispatch_la-ncaux.Plo \ - ./$(DEPDIR)/libdispatch_la-ncbytes.Plo \ - ./$(DEPDIR)/libdispatch_la-nchashmap.Plo \ - ./$(DEPDIR)/libdispatch_la-nclist.Plo \ - ./$(DEPDIR)/libdispatch_la-nclistmgr.Plo \ - ./$(DEPDIR)/libdispatch_la-nclog.Plo \ - ./$(DEPDIR)/libdispatch_la-nctime.Plo \ - ./$(DEPDIR)/libdispatch_la-ncuri.Plo \ - ./$(DEPDIR)/libnetcdf2_la-dv2i.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libdispatch_la_SOURCES) $(libnetcdf2_la_SOURCES) -DIST_SOURCES = $(am__libdispatch_la_SOURCES_DIST) \ - $(am__libnetcdf2_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. - -# This is our output, the dispatch convenience library. -noinst_LTLIBRARIES = libdispatch.la $(am__append_5) -libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_4) - -# The source files. -libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \ - dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c \ - dvarput.c dvarinq.c dinternal.c ddispatch.c nclog.c dstring.c \ - dutf8proc.c utf8proc_data.h ncuri.c nclist.c ncbytes.c \ - nchashmap.c nctime.c nc.c nclistmgr.c $(am__append_3) -@BUILD_V2_TRUE@libnetcdf2_la_SOURCES = dv2i.c -@BUILD_V2_TRUE@libnetcdf2_la_CPPFLAGS = ${AM_CPPFLAGS} -DDLL_EXPORT -EXTRA_DIST = CMakeLists.txt ncsettings.hdr -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 libdispatch/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libdispatch/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libdispatch.la: $(libdispatch_la_OBJECTS) $(libdispatch_la_DEPENDENCIES) $(EXTRA_libdispatch_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libdispatch_la_OBJECTS) $(libdispatch_la_LIBADD) $(LIBS) - -libnetcdf2.la: $(libnetcdf2_la_OBJECTS) $(libnetcdf2_la_DEPENDENCIES) $(EXTRA_libnetcdf2_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(am_libnetcdf2_la_rpath) $(libnetcdf2_la_OBJECTS) $(libnetcdf2_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-datt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dattget.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dattinq.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dattput.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dcompound.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dcopy.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-ddim.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-ddispatch.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-denum.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-derror.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dfile.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dgroup.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dinternal.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dopaque.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dparallel.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dstring.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dtype.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dutf8proc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dvar.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dvarget.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dvarinq.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dvarput.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-dvlen.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-ncaux.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-ncbytes.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nchashmap.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nclist.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nclistmgr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nclog.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-nctime.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdispatch_la-ncuri.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf2_la-dv2i.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libdispatch_la-dparallel.lo: dparallel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dparallel.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dparallel.Tpo -c -o libdispatch_la-dparallel.lo `test -f 'dparallel.c' || echo '$(srcdir)/'`dparallel.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dparallel.Tpo $(DEPDIR)/libdispatch_la-dparallel.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dparallel.c' object='libdispatch_la-dparallel.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dparallel.lo `test -f 'dparallel.c' || echo '$(srcdir)/'`dparallel.c - -libdispatch_la-dcopy.lo: dcopy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dcopy.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dcopy.Tpo -c -o libdispatch_la-dcopy.lo `test -f 'dcopy.c' || echo '$(srcdir)/'`dcopy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dcopy.Tpo $(DEPDIR)/libdispatch_la-dcopy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcopy.c' object='libdispatch_la-dcopy.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dcopy.lo `test -f 'dcopy.c' || echo '$(srcdir)/'`dcopy.c - -libdispatch_la-dfile.lo: dfile.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dfile.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dfile.Tpo -c -o libdispatch_la-dfile.lo `test -f 'dfile.c' || echo '$(srcdir)/'`dfile.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dfile.Tpo $(DEPDIR)/libdispatch_la-dfile.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dfile.c' object='libdispatch_la-dfile.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dfile.lo `test -f 'dfile.c' || echo '$(srcdir)/'`dfile.c - -libdispatch_la-ddim.lo: ddim.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ddim.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ddim.Tpo -c -o libdispatch_la-ddim.lo `test -f 'ddim.c' || echo '$(srcdir)/'`ddim.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ddim.Tpo $(DEPDIR)/libdispatch_la-ddim.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ddim.c' object='libdispatch_la-ddim.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ddim.lo `test -f 'ddim.c' || echo '$(srcdir)/'`ddim.c - -libdispatch_la-datt.lo: datt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-datt.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-datt.Tpo -c -o libdispatch_la-datt.lo `test -f 'datt.c' || echo '$(srcdir)/'`datt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-datt.Tpo $(DEPDIR)/libdispatch_la-datt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='datt.c' object='libdispatch_la-datt.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-datt.lo `test -f 'datt.c' || echo '$(srcdir)/'`datt.c - -libdispatch_la-dattinq.lo: dattinq.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattinq.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattinq.Tpo -c -o libdispatch_la-dattinq.lo `test -f 'dattinq.c' || echo '$(srcdir)/'`dattinq.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattinq.Tpo $(DEPDIR)/libdispatch_la-dattinq.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattinq.c' object='libdispatch_la-dattinq.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattinq.lo `test -f 'dattinq.c' || echo '$(srcdir)/'`dattinq.c - -libdispatch_la-dattput.lo: dattput.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattput.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattput.Tpo -c -o libdispatch_la-dattput.lo `test -f 'dattput.c' || echo '$(srcdir)/'`dattput.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattput.Tpo $(DEPDIR)/libdispatch_la-dattput.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattput.c' object='libdispatch_la-dattput.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattput.lo `test -f 'dattput.c' || echo '$(srcdir)/'`dattput.c - -libdispatch_la-dattget.lo: dattget.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattget.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattget.Tpo -c -o libdispatch_la-dattget.lo `test -f 'dattget.c' || echo '$(srcdir)/'`dattget.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattget.Tpo $(DEPDIR)/libdispatch_la-dattget.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattget.c' object='libdispatch_la-dattget.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattget.lo `test -f 'dattget.c' || echo '$(srcdir)/'`dattget.c - -libdispatch_la-derror.lo: derror.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-derror.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-derror.Tpo -c -o libdispatch_la-derror.lo `test -f 'derror.c' || echo '$(srcdir)/'`derror.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-derror.Tpo $(DEPDIR)/libdispatch_la-derror.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='derror.c' object='libdispatch_la-derror.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-derror.lo `test -f 'derror.c' || echo '$(srcdir)/'`derror.c - -libdispatch_la-dvar.lo: dvar.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvar.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvar.Tpo -c -o libdispatch_la-dvar.lo `test -f 'dvar.c' || echo '$(srcdir)/'`dvar.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvar.Tpo $(DEPDIR)/libdispatch_la-dvar.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvar.c' object='libdispatch_la-dvar.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvar.lo `test -f 'dvar.c' || echo '$(srcdir)/'`dvar.c - -libdispatch_la-dvarget.lo: dvarget.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarget.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarget.Tpo -c -o libdispatch_la-dvarget.lo `test -f 'dvarget.c' || echo '$(srcdir)/'`dvarget.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarget.Tpo $(DEPDIR)/libdispatch_la-dvarget.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarget.c' object='libdispatch_la-dvarget.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarget.lo `test -f 'dvarget.c' || echo '$(srcdir)/'`dvarget.c - -libdispatch_la-dvarput.lo: dvarput.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarput.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarput.Tpo -c -o libdispatch_la-dvarput.lo `test -f 'dvarput.c' || echo '$(srcdir)/'`dvarput.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarput.Tpo $(DEPDIR)/libdispatch_la-dvarput.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarput.c' object='libdispatch_la-dvarput.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarput.lo `test -f 'dvarput.c' || echo '$(srcdir)/'`dvarput.c - -libdispatch_la-dvarinq.lo: dvarinq.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarinq.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarinq.Tpo -c -o libdispatch_la-dvarinq.lo `test -f 'dvarinq.c' || echo '$(srcdir)/'`dvarinq.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarinq.Tpo $(DEPDIR)/libdispatch_la-dvarinq.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarinq.c' object='libdispatch_la-dvarinq.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarinq.lo `test -f 'dvarinq.c' || echo '$(srcdir)/'`dvarinq.c - -libdispatch_la-dinternal.lo: dinternal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dinternal.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dinternal.Tpo -c -o libdispatch_la-dinternal.lo `test -f 'dinternal.c' || echo '$(srcdir)/'`dinternal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dinternal.Tpo $(DEPDIR)/libdispatch_la-dinternal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dinternal.c' object='libdispatch_la-dinternal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dinternal.lo `test -f 'dinternal.c' || echo '$(srcdir)/'`dinternal.c - -libdispatch_la-ddispatch.lo: ddispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ddispatch.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ddispatch.Tpo -c -o libdispatch_la-ddispatch.lo `test -f 'ddispatch.c' || echo '$(srcdir)/'`ddispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ddispatch.Tpo $(DEPDIR)/libdispatch_la-ddispatch.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ddispatch.c' object='libdispatch_la-ddispatch.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ddispatch.lo `test -f 'ddispatch.c' || echo '$(srcdir)/'`ddispatch.c - -libdispatch_la-nclog.lo: nclog.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclog.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclog.Tpo -c -o libdispatch_la-nclog.lo `test -f 'nclog.c' || echo '$(srcdir)/'`nclog.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclog.Tpo $(DEPDIR)/libdispatch_la-nclog.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclog.c' object='libdispatch_la-nclog.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclog.lo `test -f 'nclog.c' || echo '$(srcdir)/'`nclog.c - -libdispatch_la-dstring.lo: dstring.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dstring.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dstring.Tpo -c -o libdispatch_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dstring.Tpo $(DEPDIR)/libdispatch_la-dstring.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dstring.c' object='libdispatch_la-dstring.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c - -libdispatch_la-dutf8proc.lo: dutf8proc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dutf8proc.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dutf8proc.Tpo -c -o libdispatch_la-dutf8proc.lo `test -f 'dutf8proc.c' || echo '$(srcdir)/'`dutf8proc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dutf8proc.Tpo $(DEPDIR)/libdispatch_la-dutf8proc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dutf8proc.c' object='libdispatch_la-dutf8proc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dutf8proc.lo `test -f 'dutf8proc.c' || echo '$(srcdir)/'`dutf8proc.c - -libdispatch_la-ncuri.lo: ncuri.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncuri.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncuri.Tpo -c -o libdispatch_la-ncuri.lo `test -f 'ncuri.c' || echo '$(srcdir)/'`ncuri.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncuri.Tpo $(DEPDIR)/libdispatch_la-ncuri.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncuri.c' object='libdispatch_la-ncuri.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncuri.lo `test -f 'ncuri.c' || echo '$(srcdir)/'`ncuri.c - -libdispatch_la-nclist.lo: nclist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclist.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclist.Tpo -c -o libdispatch_la-nclist.lo `test -f 'nclist.c' || echo '$(srcdir)/'`nclist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclist.Tpo $(DEPDIR)/libdispatch_la-nclist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclist.c' object='libdispatch_la-nclist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclist.lo `test -f 'nclist.c' || echo '$(srcdir)/'`nclist.c - -libdispatch_la-ncbytes.lo: ncbytes.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncbytes.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncbytes.Tpo -c -o libdispatch_la-ncbytes.lo `test -f 'ncbytes.c' || echo '$(srcdir)/'`ncbytes.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncbytes.Tpo $(DEPDIR)/libdispatch_la-ncbytes.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncbytes.c' object='libdispatch_la-ncbytes.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncbytes.lo `test -f 'ncbytes.c' || echo '$(srcdir)/'`ncbytes.c - -libdispatch_la-nchashmap.lo: nchashmap.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nchashmap.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nchashmap.Tpo -c -o libdispatch_la-nchashmap.lo `test -f 'nchashmap.c' || echo '$(srcdir)/'`nchashmap.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nchashmap.Tpo $(DEPDIR)/libdispatch_la-nchashmap.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nchashmap.c' object='libdispatch_la-nchashmap.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nchashmap.lo `test -f 'nchashmap.c' || echo '$(srcdir)/'`nchashmap.c - -libdispatch_la-nctime.lo: nctime.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nctime.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nctime.Tpo -c -o libdispatch_la-nctime.lo `test -f 'nctime.c' || echo '$(srcdir)/'`nctime.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nctime.Tpo $(DEPDIR)/libdispatch_la-nctime.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nctime.c' object='libdispatch_la-nctime.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nctime.lo `test -f 'nctime.c' || echo '$(srcdir)/'`nctime.c - -libdispatch_la-nc.lo: nc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nc.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nc.Tpo -c -o libdispatch_la-nc.lo `test -f 'nc.c' || echo '$(srcdir)/'`nc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nc.Tpo $(DEPDIR)/libdispatch_la-nc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc.c' object='libdispatch_la-nc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nc.lo `test -f 'nc.c' || echo '$(srcdir)/'`nc.c - -libdispatch_la-nclistmgr.lo: nclistmgr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclistmgr.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclistmgr.Tpo -c -o libdispatch_la-nclistmgr.lo `test -f 'nclistmgr.c' || echo '$(srcdir)/'`nclistmgr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclistmgr.Tpo $(DEPDIR)/libdispatch_la-nclistmgr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclistmgr.c' object='libdispatch_la-nclistmgr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclistmgr.lo `test -f 'nclistmgr.c' || echo '$(srcdir)/'`nclistmgr.c - -libdispatch_la-dgroup.lo: dgroup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dgroup.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dgroup.Tpo -c -o libdispatch_la-dgroup.lo `test -f 'dgroup.c' || echo '$(srcdir)/'`dgroup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dgroup.Tpo $(DEPDIR)/libdispatch_la-dgroup.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dgroup.c' object='libdispatch_la-dgroup.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dgroup.lo `test -f 'dgroup.c' || echo '$(srcdir)/'`dgroup.c - -libdispatch_la-dvlen.lo: dvlen.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvlen.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvlen.Tpo -c -o libdispatch_la-dvlen.lo `test -f 'dvlen.c' || echo '$(srcdir)/'`dvlen.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvlen.Tpo $(DEPDIR)/libdispatch_la-dvlen.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvlen.c' object='libdispatch_la-dvlen.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvlen.lo `test -f 'dvlen.c' || echo '$(srcdir)/'`dvlen.c - -libdispatch_la-dcompound.lo: dcompound.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dcompound.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dcompound.Tpo -c -o libdispatch_la-dcompound.lo `test -f 'dcompound.c' || echo '$(srcdir)/'`dcompound.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dcompound.Tpo $(DEPDIR)/libdispatch_la-dcompound.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcompound.c' object='libdispatch_la-dcompound.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dcompound.lo `test -f 'dcompound.c' || echo '$(srcdir)/'`dcompound.c - -libdispatch_la-dtype.lo: dtype.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dtype.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dtype.Tpo -c -o libdispatch_la-dtype.lo `test -f 'dtype.c' || echo '$(srcdir)/'`dtype.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dtype.Tpo $(DEPDIR)/libdispatch_la-dtype.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dtype.c' object='libdispatch_la-dtype.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dtype.lo `test -f 'dtype.c' || echo '$(srcdir)/'`dtype.c - -libdispatch_la-denum.lo: denum.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-denum.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-denum.Tpo -c -o libdispatch_la-denum.lo `test -f 'denum.c' || echo '$(srcdir)/'`denum.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-denum.Tpo $(DEPDIR)/libdispatch_la-denum.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='denum.c' object='libdispatch_la-denum.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-denum.lo `test -f 'denum.c' || echo '$(srcdir)/'`denum.c - -libdispatch_la-dopaque.lo: dopaque.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dopaque.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dopaque.Tpo -c -o libdispatch_la-dopaque.lo `test -f 'dopaque.c' || echo '$(srcdir)/'`dopaque.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dopaque.Tpo $(DEPDIR)/libdispatch_la-dopaque.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dopaque.c' object='libdispatch_la-dopaque.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dopaque.lo `test -f 'dopaque.c' || echo '$(srcdir)/'`dopaque.c - -libdispatch_la-ncaux.lo: ncaux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncaux.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncaux.Tpo -c -o libdispatch_la-ncaux.lo `test -f 'ncaux.c' || echo '$(srcdir)/'`ncaux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncaux.Tpo $(DEPDIR)/libdispatch_la-ncaux.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncaux.c' object='libdispatch_la-ncaux.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncaux.lo `test -f 'ncaux.c' || echo '$(srcdir)/'`ncaux.c - -libnetcdf2_la-dv2i.lo: dv2i.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf2_la-dv2i.lo -MD -MP -MF $(DEPDIR)/libnetcdf2_la-dv2i.Tpo -c -o libnetcdf2_la-dv2i.lo `test -f 'dv2i.c' || echo '$(srcdir)/'`dv2i.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf2_la-dv2i.Tpo $(DEPDIR)/libnetcdf2_la-dv2i.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dv2i.c' object='libnetcdf2_la-dv2i.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf2_la-dv2i.lo `test -f 'dv2i.c' || echo '$(srcdir)/'`dv2i.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libdispatch_la-datt.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattget.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattinq.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattput.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dcompound.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dcopy.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ddim.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ddispatch.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-denum.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-derror.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dfile.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dgroup.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dinternal.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dopaque.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dparallel.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dstring.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dtype.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dutf8proc.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvar.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarget.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarinq.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarput.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvlen.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nc.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncaux.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncbytes.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nchashmap.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclist.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclistmgr.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclog.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nctime.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncuri.Plo - -rm -f ./$(DEPDIR)/libnetcdf2_la-dv2i.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libdispatch_la-datt.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattget.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattinq.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dattput.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dcompound.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dcopy.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ddim.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ddispatch.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-denum.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-derror.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dfile.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dgroup.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dinternal.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dopaque.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dparallel.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dstring.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dtype.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dutf8proc.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvar.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarget.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarinq.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvarput.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-dvlen.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nc.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncaux.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncbytes.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nchashmap.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclist.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclistmgr.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nclog.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-nctime.Plo - -rm -f ./$(DEPDIR)/libdispatch_la-ncuri.Plo - -rm -f ./$(DEPDIR)/libnetcdf2_la-dv2i.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# Build ncsettings.c as follows: -# 1. copy ncsettings.hdr to ncsettings.c -# 2. append libnetcdf.settings to ncsettings.c after -# processing it as follows: -# 1. convert tabs and cr to blanks -# 2. convert embedded double quote (") to escaped form (\"). -# 3. append newline (\n) to each line -# 4. surround each line with double quotes. -# 3. finally, add a semicolon to the end of ncsettings.c -# to complete the string constant. - -ncsettings.c: $(top_srcdir)/libnetcdf.settings ncsettings.hdr - rm -f ncsettings.c - cat ncsettings.hdr > ncsettings.c - tr '\t\r' ' ' <${top_srcdir}/libnetcdf.settings | \ - sed -e 's/"/\\"/g' | \ - sed -e 's/\(.*\)/\"\1\\n\"/' | \ - cat >> ncsettings.c - echo ';' >> ncsettings.c - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dattinq.c b/contrib/netcdf/4.4.1.1/libdispatch/dattinq.c deleted file mode 100644 index 4bc99d78af5..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dattinq.c +++ /dev/null @@ -1,208 +0,0 @@ -/** \file -Attribute inquiry functions - -These functions find out about attributes. - -Copyright 2011 University Corporation for Atmospheric -Research/Unidata. See \ref copyright file for more info. */ - -#include "ncdispatch.h" - -/** \name Learning about Attributes - -Functions to learn about the attributes in a file. */ -/*! \{ */ /* All these functions are part of this named group... */ - -/** -\ingroup attributes -Return information about a netCDF attribute. - -The function nc_inq_att returns the attribute's type and length. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID of the attribute's variable, or ::NC_GLOBAL -for a global attribute. - -\param name Pointer to the location for the returned attribute \ref -object_name. \ref ignored_if_null. - -\param xtypep Pointer to location for returned attribute \ref -data_type. \ref ignored_if_null. - -\param lenp Pointer to location for returned number of values -currently stored in the attribute. For attributes of type ::NC_CHAR, -you should not assume that this includes a trailing zero byte; it -doesn't if the attribute was stored without a trailing zero byte, for -example from a FORTRAN program. Before using the value as a C string, -make sure it is null-terminated. \ref ignored_if_null. - -\section nc_inq_att_example Example - -Here is an example using nc_inq_att() to find out the type and length of -a variable attribute named valid_range for a netCDF variable named rh -and a global attribute named title in an existing netCDF dataset named -foo.nc: - -\code - #include - ... - int status; - int ncid; - int rh_id; - nc_type vr_type, t_type; - size_t vr_len, t_len; - - ... - status = nc_open("foo.nc", NC_NOWRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_inq_varid (ncid, "rh", &rh_id); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_inq_att (ncid, rh_id, "valid_range", &vr_type, &vr_len); - if (status != NC_NOERR) handle_error(status); - status = nc_inq_att (ncid, NC_GLOBAL, "title", &t_type, &t_len); - if (status != NC_NOERR) handle_error(status); -\endcode -*/ -int -nc_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, - size_t *lenp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_att(ncid, varid, name, xtypep, lenp); -} - -/** -\ingroup attributes -Find an attribute ID. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID of the attribute's variable, or ::NC_GLOBAL for -a global attribute. - -\param name Attribute \ref object_name. - -\param idp Pointer to location for returned attribute number that -specifies which attribute this is for this variable (or which global -attribute). If you already know the attribute name, knowing its number -is not very useful, because accessing information about an attribute -requires its name. -*/ -int -nc_inq_attid(int ncid, int varid, const char *name, int *idp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_attid(ncid, varid, name, idp); -} - -/** -\ingroup attributes -Find the name of an attribute. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID of the attribute's variable, or ::NC_GLOBAL -for a global attribute. - -\param attnum Attribute number. The attributes for each variable are -numbered from 0 (the first attribute) to natts-1, where natts is the -number of attributes for the variable, as returned from a call to -nc_inq_varnatts(). - -\param name Pointer to the location for the returned attribute \ref -object_name. -*/ -int -nc_inq_attname(int ncid, int varid, int attnum, char *name) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_attname(ncid, varid, attnum, name); -} - -/** -\ingroup attributes -Find number of global or group attributes. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param nattsp Pointer where number of global or group attributes will be -written. \ref ignored_if_null. -*/ -int -nc_inq_natts(int ncid, int *nattsp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - if(nattsp == NULL) return NC_NOERR; - return ncp->dispatch->inq(ncid, NULL, NULL, nattsp, NULL); -} - -/** -\ingroup attributes -Find the type of an attribute. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID of the attribute's variable, or ::NC_GLOBAL -for a global or group attribute. - -\param name Attribute \ref object_name. - -\param xtypep Pointer to location for returned attribute \ref data_type. -*/ -int -nc_inq_atttype(int ncid, int varid, const char *name, nc_type *xtypep) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_att(ncid, varid, name, xtypep, NULL); -} - -/** -\ingroup attributes -Find the length of an attribute. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID of the attribute's variable, or ::NC_GLOBAL -for a global or group attribute. - -\param name Attribute \ref object_name. - -\param lenp Pointer to location for returned number of values -currently stored in the attribute. Before using the value as a C -string, make sure it is null-terminated. \ref ignored_if_null. -*/ -int -nc_inq_attlen(int ncid, int varid, const char *name, size_t *lenp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_att(ncid, varid, name, NULL, lenp); -} - -/*! \} */ /* End of named group ...*/ diff --git a/contrib/netcdf/4.4.1.1/libdispatch/ddispatch.c b/contrib/netcdf/4.4.1.1/libdispatch/ddispatch.c deleted file mode 100644 index 3383ee814de..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/ddispatch.c +++ /dev/null @@ -1,203 +0,0 @@ -#include "ncdispatch.h" -#include "ncuri.h" - -#define MAXSERVERURL 4096 - -/* Define vectors of zeros and ones for use with various nc_get_varX function*/ -size_t nc_sizevector0[NC_MAX_VAR_DIMS]; -size_t nc_sizevector1[NC_MAX_VAR_DIMS]; -ptrdiff_t nc_ptrdiffvector1[NC_MAX_VAR_DIMS]; -size_t NC_coord_zero[NC_MAX_VAR_DIMS]; -size_t NC_coord_one[NC_MAX_VAR_DIMS]; - -/* Define the known protocols and their manipulations */ -static struct NCPROTOCOLLIST { - char* protocol; - char* substitute; - int model; -} ncprotolist[] = { - {"http",NULL,0}, - {"https",NULL,0}, - {"file",NULL,NC_FORMATX_DAP2}, - {"dods","http",NC_FORMATX_DAP2}, - {"dodss","https",NC_FORMATX_DAP2}, - {NULL,NULL,0} /* Terminate search */ -}; - -/* Define the default servers to ping in order; - make the order attempt to optimize - against future changes. -*/ -static const char* default_servers[] = { -"http://remotetest.unidata.ucar.edu", -NULL -}; - -/* -static nc_type longtype = (sizeof(long) == sizeof(int)?NC_INT:NC_INT64); -static nc_type ulongtype = (sizeof(unsigned long) == sizeof(unsigned int)?NC_UINT:NC_UINT64); -*/ - -/* Allow dispatch to do general initialization and finalization */ -int -NCDISPATCH_initialize(void) -{ - int status = NC_NOERR; - int i; - for(i=0;i 0 && path[0] == '/') - path++; - - if(servers != NULL) { - for(svc=servers;*svc != NULL;svc++) { - snprintf(url,MAXSERVERURL,"%s/%s",*svc,path); - stat = NCDAP_ping(url); - if(stat == NC_NOERR) - return url; - } - } - /* not found in user supplied list; try defaults */ - for(svc=default_servers;*svc != NULL;svc++) { - snprintf(url,MAXSERVERURL,"%s/%s",*svc,path); - stat = NCDAP_ping(url); - if(stat == NC_NOERR) - return url; - } - if(url) free(url); -#endif -#endif - return NULL; -} - - -/* return 1 if path looks like a url; 0 otherwise */ -int -NC_testurl(const char* path) -{ - int isurl = 0; - NCURI* tmpurl = NULL; - char* p; - - if(path == NULL) return 0; - - /* find leading non-blank */ - for(p=(char*)path;*p;p++) {if(*p != ' ') break;} - - /* Do some initial checking to see if this looks like a file path */ - if(*p == '/') return 0; /* probably an absolute file path */ - - /* Ok, try to parse as a url */ - if(ncuriparse(path,&tmpurl)) { - /* Do some extra testing to make sure this really is a url */ - /* Look for a knownprotocol */ - struct NCPROTOCOLLIST* protolist; - for(protolist=ncprotolist;protolist->protocol;protolist++) { - if(strcmp(tmpurl->protocol,protolist->protocol) == 0) { - isurl=1; - break; - } - } - ncurifree(tmpurl); - return isurl; - } - return 0; -} - -/* -Return an NC_FORMATX_... value. -Assumes that the path is known to be a url -*/ - -int -NC_urlmodel(const char* path) -{ - int model = 0; - NCURI* tmpurl = NULL; - struct NCPROTOCOLLIST* protolist; - - model = NC_FORMATX_DAP2; - return model; -} - -#ifdef OBSOLETE -/* Override dispatch table management */ -static NC_Dispatch* NC_dispatch_override = NULL; - -/* Override dispatch table management */ -NC_Dispatch* -NC_get_dispatch_override(void) { - return NC_dispatch_override; -} - -void NC_set_dispatch_override(NC_Dispatch* d) -{ - NC_dispatch_override = d; -} -#endif - -/* OBSOLETE - Overlay by treating the tables as arrays of void*. - Overlay rules are: - overlay base merge - ------- ---- ----- - null null null - null y y - x null x - x y x -*/ - -#ifdef OBSOLETE -int -NC_dispatch_overlay(const NC_Dispatch* overlay, const NC_Dispatch* base, NC_Dispatch* merge) -{ - void** voverlay = (void**)overlay; - void** vmerge; - int i; - size_t count = sizeof(NC_Dispatch) / sizeof(void*); - /* dispatch table must be exact multiple of sizeof(void*) */ - assert(count * sizeof(void*) == sizeof(NC_Dispatch)); - *merge = *base; - vmerge = (void**)merge; - for(i=0;imodel = overlay->model; - return NC_NOERR; -} -#endif diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dfile.c b/contrib/netcdf/4.4.1.1/libdispatch/dfile.c deleted file mode 100644 index cf39fd3aa27..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dfile.c +++ /dev/null @@ -1,1969 +0,0 @@ -/** \file dfile.c - -File create and open functions - -These functions end up calling functions in one of the dispatch layers -(netCDF-4, dap server, etc). - -Copyright 2010 University Corporation for Atmospheric -Research/Unidata. See COPYRIGHT file for more info. -*/ - -#include "config.h" -#include -#ifdef HAVE_SYS_RESOURCE_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_STAT_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif -#include "ncdispatch.h" - -extern int NC_initialized; -extern int NC_finalized; - - -/** \defgroup datasets NetCDF File and Data I/O - -NetCDF opens datasets as files or remote access URLs. - -A netCDF dataset that has not yet been opened can only be referred to -by its dataset name. Once a netCDF dataset is opened, it is referred -to by a netCDF ID, which is a small non-negative integer returned when -you create or open the dataset. A netCDF ID is much like a file -descriptor in C or a logical unit number in FORTRAN. In any single -program, the netCDF IDs of distinct open netCDF datasets are -distinct. A single netCDF dataset may be opened multiple times and -will then have multiple distinct netCDF IDs; however at most one of -the open instances of a single netCDF dataset should permit -writing. When an open netCDF dataset is closed, the ID is no longer -associated with a netCDF dataset. - -Functions that deal with the netCDF library include: -- Get version of library. -- Get error message corresponding to a returned error code. - -The operations supported on a netCDF dataset as a single object are: -- Create, given dataset name and whether to overwrite or not. -- Open for access, given dataset name and read or write intent. -- Put into define mode, to add dimensions, variables, or attributes. -- Take out of define mode, checking consistency of additions. -- Close, writing to disk if required. -- Inquire about the number of dimensions, number of variables, -number of global attributes, and ID of the unlimited dimension, if -any. -- Synchronize to disk to make sure it is current. -- Set and unset nofill mode for optimized sequential writes. -- After a summary of conventions used in describing the netCDF -interfaces, the rest of this chapter presents a detailed description -of the interfaces for these operations. -*/ - - -/*! - Interpret the magic number found in the header of a netCDF file. - - This function interprets the magic number/string contained in the header of a netCDF file and sets the appropriate NC_FORMATX flags. - - @param[in] magic Pointer to a character array with the magic number block. - @param[out] model Pointer to an integer to hold the corresponding netCDF type. - @param[out] version Pointer to an integer to hold the corresponding netCDF version. - @param[in] use_parallel 1 if using parallel, 0 if not. - @return Returns an error code or 0 on success. - -\internal -\ingroup datasets - -*/ -static int -NC_interpret_magic_number(char* magic, int* model, int* version, int use_parallel) -{ - int status = NC_NOERR; - /* Look at the magic number */ - /* Ignore the first byte for HDF */ -#ifdef USE_NETCDF4 - if(magic[1] == 'H' && magic[2] == 'D' && magic[3] == 'F') { - *model = NC_FORMATX_NC4; - *version = 5; -#ifdef USE_HDF4 - } else if(magic[0] == '\016' && magic[1] == '\003' - && magic[2] == '\023' && magic[3] == '\001') { - *model = NC_FORMATX_NC4; - *version = 4; -#endif - } else -#endif - if(magic[0] == 'C' && magic[1] == 'D' && magic[2] == 'F') { - if(magic[3] == '\001') { - *version = 1; /* netcdf classic version 1 */ - *model = NC_FORMATX_NC3; - } else if(magic[3] == '\002') { - *version = 2; /* netcdf classic version 2 */ - *model = NC_FORMATX_NC3; - } else if(magic[3] == '\005') { - *version = 5; /* cdf5 (including pnetcdf) file */ - *model = NC_FORMATX_NC3; - } else - {status = NC_ENOTNC; goto done;} - } else - {status = NC_ENOTNC; goto done;} -done: - return status; -} - -/*! -Given an existing file, figure out its format -and return that format value (NC_FORMATX_XXX) -in model arg. -*/ -static int NC_check_file_type(const char *path, int flags, void *parameters, - int* model, int* version) -{ - char magic[MAGIC_NUMBER_LEN]; - int status = NC_NOERR; - int diskless = ((flags & NC_DISKLESS) == NC_DISKLESS); - int use_parallel = ((flags & NC_MPIIO) == NC_MPIIO); - int inmemory = (diskless && ((flags & NC_INMEMORY) == NC_INMEMORY)); - - *model = 0; - - if(inmemory) { - NC_MEM_INFO* meminfo = (NC_MEM_INFO*)parameters; - if(meminfo == NULL || meminfo->size < MAGIC_NUMBER_LEN) - {status = NC_EDISKLESS; goto done;} - memcpy(magic,meminfo->memory,MAGIC_NUMBER_LEN); - } else {/* presumably a real file */ - /* Get the 4-byte magic from the beginning of the file. Don't use posix - * for parallel, use the MPI functions instead. */ -#ifdef USE_PARALLEL - if (use_parallel) { - MPI_File fh; - MPI_Status mstatus; - int retval; - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; - - if(parameters != NULL) { - comm = ((NC_MPI_INFO*)parameters)->comm; - info = ((NC_MPI_INFO*)parameters)->info; - } - if((retval = MPI_File_open(comm,(char*)path,MPI_MODE_RDONLY,info, - &fh)) != MPI_SUCCESS) - {status = NC_EPARINIT; goto done;} - if((retval = MPI_File_read(fh, magic, MAGIC_NUMBER_LEN, MPI_CHAR, - &mstatus)) != MPI_SUCCESS) - {status = NC_EPARINIT; goto done;} - if((retval = MPI_File_close(&fh)) != MPI_SUCCESS) - {status = NC_EPARINIT; goto done;} - } else -#endif /* USE_PARALLEL */ - { - FILE *fp; - size_t i; -#ifdef HAVE_SYS_STAT_H - struct stat st; -#endif - if(path == NULL || strlen(path)==0) - {status = NC_EINVAL; goto done;} - - if (!(fp = fopen(path, "r"))) - {status = errno; goto done;} - -#ifdef HAVE_SYS_STAT_H - /* The file must be at least MAGIC_NUMBER_LEN in size, - or otherwise the following fread will exhibit unexpected - behavior. */ - - /* Windows and fstat have some issues, this will work around that. */ -#ifdef HAVE_FILE_LENGTH_I64 - __int64 file_len = 0; - if((file_len = _filelengthi64(fileno(fp))) < 0) { - fclose(fp); - status = errno; - goto done; - } - - if(file_len < MAGIC_NUMBER_LEN) { - fclose(fp); - status = NC_ENOTNC; - goto done; - } -#else - - if(!(fstat(fileno(fp),&st) == 0)) { - fclose(fp); - status = errno; - goto done; - } - - if(st.st_size < MAGIC_NUMBER_LEN) { - fclose(fp); - status = NC_ENOTNC; - goto done; - } -#endif //HAVE_FILE_LENGTH_I64 - -#endif - - i = fread(magic, MAGIC_NUMBER_LEN, 1, fp); - fclose(fp); - if(i == 0) - {status = NC_ENOTNC; goto done;} - if(i != 1) - {status = errno; goto done;} - } - } /* !inmemory */ - - /* Look at the magic number */ - status = NC_interpret_magic_number(magic,model,version,use_parallel); - -done: - return status; -} - -/** \ingroup datasets -Create a new netCDF file. - -This function creates a new netCDF dataset, returning a netCDF ID that -can subsequently be used to refer to the netCDF dataset in other -netCDF function calls. The new netCDF dataset opened for write access -and placed in define mode, ready for you to add dimensions, variables, -and attributes. - -\param path The file name of the new netCDF dataset. - -\param cmode The creation mode flag. The following flags are available: - NC_NOCLOBBER (do not overwrite existing file), - NC_SHARE (limit write caching - netcdf classic files only), - NC_64BIT_OFFSET (create 64-bit offset file), - NC_64BIT_DATA (Alias NC_CDF5) (create CDF-5 file), - NC_NETCDF4 (create netCDF-4/HDF5 file), - NC_CLASSIC_MODEL (enforce netCDF classic mode on netCDF-4/HDF5 files), - NC_DISKLESS (store data only in memory), - NC_MMAP (use MMAP for NC_DISKLESS), - and NC_WRITE. - See discussion below. - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -

The cmode Flag

- -The cmode flag is used to control the type of file created, and some -aspects of how it may be used. - -Setting NC_NOCLOBBER means you do not want to clobber (overwrite) an -existing dataset; an error (NC_EEXIST) is returned if the specified -dataset already exists. - -The NC_SHARE flag is appropriate when one process may be writing the -dataset and one or more other processes reading the dataset -concurrently; it means that dataset accesses are not buffered and -caching is limited. Since the buffering scheme is optimized for -sequential access, programs that do not access data sequentially may -see some performance improvement by setting the NC_SHARE flag. This -flag is ignored for netCDF-4 files. - -Setting NC_64BIT_OFFSET causes netCDF to create a 64-bit offset format -file, instead of a netCDF classic format file. The 64-bit offset -format imposes far fewer restrictions on very large (i.e. over 2 GB) -data files. See Large File Support. - -Setting NC_64BIT_DATA (Alias NC_CDF5) causes netCDF to create a CDF-5 -file format that supports large files (i.e. over 2GB) and large -variables (over 2B array elements.). See Large File Support. - -Note that the flag NC_PNETCDF also exists as the combination of -NC_CDF5 or'd with NC_MPIIO to indicate that the pnetcdf library -should be used. - -A zero value (defined for convenience as NC_CLOBBER) specifies the -default behavior: overwrite any existing dataset with the same file -name and buffer and cache accesses for efficiency. The dataset will be -in netCDF classic format. See NetCDF Classic Format Limitations. - -Setting NC_NETCDF4 causes netCDF to create a HDF5/NetCDF-4 file. - -Setting NC_CLASSIC_MODEL causes netCDF to enforce the classic data -model in this file. (This only has effect for netCDF-4/HDF5 files, as -classic and 64-bit offset files always use the classic model.) When -used with NC_NETCDF4, this flag ensures that the resulting -netCDF-4/HDF5 file may never contain any new constructs from the -enhanced data model. That is, it cannot contain groups, user defined -types, multiple unlimited dimensions, or new atomic types. The -advantage of this restriction is that such files are guaranteed to -work with existing netCDF software. - -Setting NC_DISKLESS causes netCDF to create the file only in memory. -This allows for the use of files that have no long term purpose. Note that -with one exception, the in-memory file is destroyed upon calling -nc_close. If, however, the flag combination (NC_DISKLESS|NC_WRITE) -is used, then at close, the contents of the memory file will be -made persistent in the file path that was specified in the nc_create -call. If NC_DISKLESS is going to be used for creating a large classic file, -it behooves one to use either nc__create or nc_create_mp and specify -an appropriately large value of the initialsz parameter to avoid -to many extensions to the in-memory space for the file. -This flag applies to files in classic format and to file in extended -format (netcdf-4). - -Normally, NC_DISKLESS allocates space in the heap for -storing the in-memory file. If, however, the ./configure -flags --enable-mmap is used, and the additional mode flag -NC_MMAP is specified, then the file will be created using -the operating system MMAP facility. -This flag only applies to files in classic format. Extended -format (netcdf-4) files will ignore the NC_MMAP flag. - -Using NC_MMAP for nc_create is -only included for completeness vis-a-vis nc_open. The -ability to use MMAP is of limited use for nc_create because -nc_create is going to create the file in memory anyway. -Closing a MMAP'd file will be slightly faster, but not significantly. - -Note that nc_create(path,cmode,ncidp) is equivalent to the invocation of -nc__create(path,cmode,NC_SIZEHINT_DEFAULT,NULL,ncidp). - -\returns ::NC_NOERR No error. - -\returns ::NC_ENOMEM System out of memory. - -\returns ::NC_EHDFERR HDF5 error (netCDF-4 files only). - -\returns ::NC_EFILEMETA Error writing netCDF-4 file-level metadata in -HDF5 file. (netCDF-4 files only). - -\returns ::NC_EDISKLESS if there was an error in creating the -in-memory file. - -\note When creating a netCDF-4 file HDF5 error reporting is turned -off, if it is on. This doesn't stop the HDF5 error stack from -recording the errors, it simply stops their display to the user -through stderr. - -

Examples

- -In this example we create a netCDF dataset named foo.nc; we want the -dataset to be created in the current directory only if a dataset with -that name does not already exist: - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo.nc", NC_NOCLOBBER, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -In this example we create a netCDF dataset named foo_large.nc. It will -be in the 64-bit offset format. - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo_large.nc", NC_NOCLOBBER|NC_64BIT_OFFSET, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -In this example we create a netCDF dataset named foo_HDF5.nc. It will -be in the HDF5 format. - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo_HDF5.nc", NC_NOCLOBBER|NC_NETCDF4, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -In this example we create a netCDF dataset named -foo_HDF5_classic.nc. It will be in the HDF5 format, but will not allow -the use of any netCDF-4 advanced features. That is, it will conform to -the classic netCDF-3 data model. - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo_HDF5_classic.nc", NC_NOCLOBBER|NC_NETCDF4|NC_CLASSIC_MODEL, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -In this example we create a in-memory netCDF classic dataset named -diskless.nc whose content will be lost when nc_close() is called. - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("diskless.nc", NC_DISKLESS, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -In this example we create a in-memory netCDF classic dataset named -diskless.nc and specify that it should be made persistent -in a file named diskless.nc when nc_close() is called. - -@code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("diskless.nc", NC_DISKLESS|NC_WRITE, &ncid); - if (status != NC_NOERR) handle_error(status); -@endcode - -A variant of nc_create(), nc__create() (note the double underscore) allows -users to specify two tuning parameters for the file that it is -creating. */ -int -nc_create(const char *path, int cmode, int *ncidp) -{ - return nc__create(path,cmode,NC_SIZEHINT_DEFAULT,NULL,ncidp); -} - -/*! -Create a netCDF file with some extra parameters controlling classic -file cacheing. - -Like nc_create(), this function creates a netCDF file. - -\param path The file name of the new netCDF dataset. - -\param cmode The creation mode flag, the same as in nc_create(). - -\param initialsz On some systems, and with custom I/O layers, it may -be advantageous to set the size of the output file at creation -time. This parameter sets the initial size of the file at creation -time. This only applies to classic and 64-bit offset files. -The special value NC_SIZEHINT_DEFAULT (which is the value 0), -lets the netcdf library choose a suitable initial size. - -\param chunksizehintp A pointer to the chunk size hint, -which controls a space versus time tradeoff, memory -allocated in the netcdf library versus number of system -calls. Because of internal requirements, the value may not -be set to exactly the value requested. The actual value -chosen is returned by reference. Using a NULL pointer or -having the pointer point to the value NC_SIZEHINT_DEFAULT -causes the library to choose a default. How the system -chooses the default depends on the system. On many systems, -the "preferred I/O block size" is available from the stat() -system call, struct stat member st_blksize. If this is -available it is used. Lacking that, twice the system -pagesize is used. Lacking a call to discover the system -pagesize, we just set default bufrsize to 8192. The bufrsize -is a property of a given open netcdf descriptor ncid, it is -not a persistent property of the netcdf dataset. This only -applies to classic and 64-bit offset files. - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -\note This function uses the same return codes as the nc_create() -function. - -

Examples

- -In this example we create a netCDF dataset named foo_large.nc; we want -the dataset to be created in the current directory only if a dataset -with that name does not already exist. We also specify that bufrsize -and initial size for the file. - -\code -#include - ... - int status = NC_NOERR; - int ncid; - int intialsz = 2048; - int *bufrsize; - ... - *bufrsize = 1024; - status = nc__create("foo.nc", NC_NOCLOBBER, initialsz, bufrsize, &ncid); - if (status != NC_NOERR) handle_error(status); -\endcode - -\ingroup datasets - -*/ -int -nc__create(const char *path, int cmode, size_t initialsz, - size_t *chunksizehintp, int *ncidp) -{ - return NC_create(path, cmode, initialsz, 0, - chunksizehintp, 0, NULL, ncidp); - -} -/** -\internal - -\deprecated This function was used in the old days with the Cray at -NCAR. The Cray is long gone, and this call is supported only for -backward compatibility. - - */ -int -nc__create_mp(const char *path, int cmode, size_t initialsz, - int basepe, size_t *chunksizehintp, int *ncidp) -{ - return NC_create(path, cmode, initialsz, basepe, - chunksizehintp, 0, NULL, ncidp); -} - -/** \ingroup datasets -Open an existing netCDF file. - -This function opens an existing netCDF dataset for access. It -determines the underlying file format automatically. Use the same call -to open a netCDF classic, 64-bit offset, or netCDF-4 file. - -\param path File name for netCDF dataset to be opened. When DAP -support is enabled, then the path may be an OPeNDAP URL rather than a -file path. - -\param mode The mode flag may include NC_WRITE (for read/write -access) and NC_SHARE (see below) and NC_DISKLESS (see below). - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -

Open Mode

- -A zero value (or ::NC_NOWRITE) specifies the default behavior: open the -dataset with read-only access, buffering and caching accesses for -efficiency. - -Otherwise, the open mode is ::NC_WRITE, ::NC_SHARE, or -::NC_WRITE|::NC_SHARE. Setting the ::NC_WRITE flag opens the dataset with -read-write access. ("Writing" means any kind of change to the dataset, -including appending or changing data, adding or renaming dimensions, -variables, and attributes, or deleting attributes.) - -The NC_SHARE flag is only used for netCDF classic and 64-bit offset -files. It is appropriate when one process may be writing the dataset -and one or more other processes reading the dataset concurrently; it -means that dataset accesses are not buffered and caching is -limited. Since the buffering scheme is optimized for sequential -access, programs that do not access data sequentially may see some -performance improvement by setting the NC_SHARE flag. - -This procedure may also be invoked with the NC_DISKLESS flag -set in the mode argument if the file to be opened is a -classic format file. For nc_open(), this flag applies only -to files in classic format. If the file is of type -NC_NETCDF4, then the NC_DISKLESS flag will be ignored. - -If NC_DISKLESS is specified, then the whole file is read completely into -memory. In effect this creates an in-memory cache of the file. -If the mode flag also specifies NC_WRITE, then the in-memory cache -will be re-written to the disk file when nc_close() is called. -For some kinds of manipulations, having the in-memory cache can -speed up file processing. But in simple cases, non-cached -processing may actually be faster than using cached processing. -You will need to experiment to determine if the in-memory caching -is worthwhile for your application. - -Normally, NC_DISKLESS allocates space in the heap for -storing the in-memory file. If, however, the ./configure -flags --enable-mmap is used, and the additional mode flag -NC_MMAP is specified, then the file will be opened using -the operating system MMAP facility. -This flag only applies to files in classic format. Extended -format (netcdf-4) files will ignore the NC_MMAP flag. - -In most cases, using MMAP provides no advantage -for just NC_DISKLESS. The one case where using MMAP is an -advantage is when a file is to be opened and only a small portion -of its data is to be read and/or written. -In this scenario, MMAP will cause only the accessed data to be -retrieved from disk. Without MMAP, NC_DISKLESS will read the whole -file into memory on nc_open. Thus, MMAP will provide some performance -improvement in this case. - -It is not necessary to pass any information about the format of the -file being opened. The file type will be detected automatically by the -netCDF library. - -If a the path is a DAP URL, then the open mode is read-only. -Setting NC_WRITE will be ignored. - -As of version 4.3.1.2, multiple calls to nc_open with the same -path will return the same ncid value. - -\note When opening a netCDF-4 file HDF5 error reporting is turned off, -if it is on. This doesn't stop the HDF5 error stack from recording the -errors, it simply stops their display to the user through stderr. - -nc_open()returns the value NC_NOERR if no errors occurred. Otherwise, -the returned status indicates an error. Possible causes of errors -include: - -Note that nc_open(path,cmode,ncidp) is equivalent to the invocation of -nc__open(path,cmode,NC_SIZEHINT_DEFAULT,NULL,ncidp). - -\returns ::NC_NOERR No error. - -\returns ::NC_ENOMEM Out of memory. - -\returns ::NC_EHDFERR HDF5 error. (NetCDF-4 files only.) - -\returns ::NC_EDIMMETA Error in netCDF-4 dimension metadata. (NetCDF-4 files only.) - -

Examples

- -Here is an example using nc_open()to open an existing netCDF dataset -named foo.nc for read-only, non-shared access: - -@code -#include - ... -int status = NC_NOERR; -int ncid; - ... -status = nc_open("foo.nc", 0, &ncid); -if (status != NC_NOERR) handle_error(status); -@endcode -*/ -int -nc_open(const char *path, int mode, int *ncidp) -{ - return NC_open(path, mode, 0, NULL, 0, NULL, ncidp); -} - -/** \ingroup datasets -Open a netCDF file with extra performance parameters for the classic -library. - -\param path File name for netCDF dataset to be opened. When DAP -support is enabled, then the path may be an OPeNDAP URL rather than a -file path. - -\param mode The mode flag may include NC_WRITE (for read/write -access) and NC_SHARE as in nc_open(). - -\param chunksizehintp A size hint for the classic library. Only -applies to classic and 64-bit offset files. See below for more -information. - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -

The chunksizehintp Parameter

- -The argument referenced by bufrsizehintp controls a space versus time -tradeoff, memory allocated in the netcdf library versus number of -system calls. - -Because of internal requirements, the value may not be set to exactly -the value requested. The actual value chosen is returned by reference. - -Using a NULL pointer or having the pointer point to the value -NC_SIZEHINT_DEFAULT causes the library to choose a default. -How the system chooses the default depends on the system. On -many systems, the "preferred I/O block size" is available from the -stat() system call, struct stat member st_blksize. If this is -available it is used. Lacking that, twice the system pagesize is used. - -Lacking a call to discover the system pagesize, we just set default -bufrsize to 8192. - -The bufrsize is a property of a given open netcdf descriptor ncid, it -is not a persistent property of the netcdf dataset. - - -\returns ::NC_NOERR No error. - -\returns ::NC_ENOMEM Out of memory. - -\returns ::NC_EHDFERR HDF5 error. (NetCDF-4 files only.) - -\returns ::NC_EDIMMETA Error in netCDF-4 dimension metadata. (NetCDF-4 -files only.) - -*/ -int -nc__open(const char *path, int mode, - size_t *chunksizehintp, int *ncidp) -{ - /* this API is for non-parallel access: TODO check for illegal cmode - * flags, such as NC_PNETCDF, NC_MPIIO, or NC_MPIPOSIX, before entering - * NC_open()? Note nc_open_par() also calls NC_open(). - */ - return NC_open(path, mode, 0, chunksizehintp, 0, - NULL, ncidp); -} - -/** \ingroup datasets -Open a netCDF file with the contents taken from a block of memory. - -\param path Must be non-null, but otherwise only used to set the dataset name. - -\param mode the mode flags; Note that this procedure uses a limited set of flags because it forcibly sets NC_NOWRITE|NC_DISKLESS|NC_INMEMORY. - -\param size The length of the block of memory being passed. - -\param memory Pointer to the block of memory containing the contents -of a netcdf file. - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -\returns ::NC_NOERR No error. - -\returns ::NC_ENOMEM Out of memory. - -\returns ::NC_EDISKLESS diskless io is not enabled for fails. - -\returns ::NC_EINVAL, etc. other errors also returned by nc_open. - -

Examples

- -Here is an example using nc_open_mem() to open an existing netCDF dataset -named foo.nc for read-only, non-shared access. It differs from the nc_open() -example in that it assumes the contents of foo.nc have been read into memory. - -@code -#include -#include - ... -int status = NC_NOERR; -int ncid; -size_t size; -void* memory; - ... -size = ; -memory = malloc(size); - ... -status = nc_open_mem("foo.nc", 0, size, memory, &ncid); -if (status != NC_NOERR) handle_error(status); -@endcode -*/ -int -nc_open_mem(const char* path, int mode, size_t size, void* memory, int* ncidp) -{ -#ifdef USE_DISKLESS - NC_MEM_INFO meminfo; - - /* Sanity checks */ - if(memory == NULL || size < MAGIC_NUMBER_LEN || path == NULL) - return NC_EINVAL; - if(mode & (NC_WRITE|NC_MPIIO|NC_MPIPOSIX|NC_MMAP)) - return NC_EINVAL; - mode |= (NC_INMEMORY|NC_DISKLESS); - meminfo.size = size; - meminfo.memory = memory; - return NC_open(path, mode, 0, NULL, 0, &meminfo, ncidp); -#else - return NC_EDISKLESS; -#endif -} - -/** -\internal - -\deprecated This function was used in the old days with the Cray at -NCAR. The Cray is long gone, and this call is supported only for -backward compatibility. - - */ -int -nc__open_mp(const char *path, int mode, int basepe, - size_t *chunksizehintp, int *ncidp) -{ - return NC_open(path, mode, basepe, chunksizehintp, - 0, NULL, ncidp); -} - -/** \ingroup datasets -Get the file pathname (or the opendap URL) which was used to -open/create the ncid's file. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\param pathlen Pointer where length of path will be returned. Ignored -if NULL. - -\param path Pointer where path name will be copied. Space must already -be allocated. Ignored if NULL. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. -*/ -int -nc_inq_path(int ncid, size_t *pathlen, char *path) -{ - NC* ncp; - int stat = NC_NOERR; - if ((stat = NC_check_id(ncid, &ncp))) - return stat; - if(ncp->path == NULL) { - if(pathlen) *pathlen = 0; - if(path) path[0] = '\0'; - } else { - if (pathlen) *pathlen = strlen(ncp->path); - if (path) strcpy(path, ncp->path); - } - return stat; -} - -/** \ingroup datasets -Put open netcdf dataset into define mode - -The function nc_redef puts an open netCDF dataset into define mode, so -dimensions, variables, and attributes can be added or renamed and -attributes can be deleted. - -For netCDF-4 files (i.e. files created with NC_NETCDF4 in the cmode in -their call to nc_create()), it is not necessary to call nc_redef() -unless the file was also created with NC_STRICT_NC3. For straight-up -netCDF-4 files, nc_redef() is called automatically, as needed. - -For all netCDF-4 files, the root ncid must be used. This is the ncid -returned by nc_open() and nc_create(), and points to the root of the -hierarchy tree for netCDF-4 files. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Bad ncid. - -\returns ::NC_EBADGRPID The ncid must refer to the root group of the -file, that is, the group returned by nc_open() or nc_create(). - -\returns ::NC_EINDEFINE Already in define mode. - -\returns ::NC_EPERM File is read-only. - -

Example

- -Here is an example using nc_redef to open an existing netCDF dataset -named foo.nc and put it into define mode: - -\code -#include - ... -int status = NC_NOERR; -int ncid; - ... -status = nc_open("foo.nc", NC_WRITE, &ncid); -if (status != NC_NOERR) handle_error(status); - ... -status = nc_redef(ncid); -if (status != NC_NOERR) handle_error(status); -\endcode - */ -int -nc_redef(int ncid) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->redef(ncid); -} - -/** \ingroup datasets -Leave define mode - -The function nc_enddef() takes an open netCDF dataset out of define -mode. The changes made to the netCDF dataset while it was in define -mode are checked and committed to disk if no problems -occurred. Non-record variables may be initialized to a "fill value" as -well with nc_set_fill(). The netCDF dataset is then placed in data -mode, so variable data can be read or written. - -It's not necessary to call nc_enddef() for netCDF-4 files. With netCDF-4 -files, nc_enddef() is called when needed by the netcdf-4 library. User -calls to nc_enddef() for netCDF-4 files still flush the metadata to -disk. - -This call may involve copying data under some circumstances. For a -more extensive discussion see File Structure and Performance. - -For netCDF-4/HDF5 format files there are some variable settings (the -compression, endianness, fletcher32 error correction, and fill value) -which must be set (if they are going to be set at all) between the -nc_def_var() and the next nc_enddef(). Once the nc_enddef() is called, -these settings can no longer be changed for a variable. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -If you use a group id (in a netCDF-4/HDF5 file), the enddef -will apply to the entire file. That means the enddef will not just end -define mode in one group, but in the entire file. - -\returns ::NC_NOERR no error - -\returns ::NC_EBADID Invalid ncid passed. - -

Example

- -Here is an example using nc_enddef() to finish the definitions of a new -netCDF dataset named foo.nc and put it into data mode: - -\code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo.nc", NC_NOCLOBBER, &ncid); - if (status != NC_NOERR) handle_error(status); - - ... create dimensions, variables, attributes - - status = nc_enddef(ncid); - if (status != NC_NOERR) handle_error(status); -\endcode - */ -int -nc_enddef(int ncid) -{ - int status = NC_NOERR; - NC *ncp; - status = NC_check_id(ncid, &ncp); - if(status != NC_NOERR) return status; - return ncp->dispatch->_enddef(ncid,0,1,0,1); -} - -/** \ingroup datasets -Leave define mode with performance tuning - -The function nc__enddef takes an open netCDF dataset out of define -mode. The changes made to the netCDF dataset while it was in define -mode are checked and committed to disk if no problems -occurred. Non-record variables may be initialized to a "fill value" as -well with nc_set_fill(). The netCDF dataset is then placed in data mode, -so variable data can be read or written. - -This call may involve copying data under some circumstances. For a -more extensive discussion see File Structure and Performance. - -\warning This function exposes internals of the netcdf version 1 file -format. Users should use nc_enddef() in most circumstances. This -function may not be available on future netcdf implementations. - -The classic netcdf file format has three sections, the "header" -section, the data section for fixed size variables, and the data -section for variables which have an unlimited dimension (record -variables). - -The header begins at the beginning of the file. The index (offset) of -the beginning of the other two sections is contained in the -header. Typically, there is no space between the sections. This causes -copying overhead to accrue if one wishes to change the size of the -sections, as may happen when changing names of things, text attribute -values, adding attributes or adding variables. Also, for buffered i/o, -there may be advantages to aligning sections in certain ways. - -The minfree parameters allow one to control costs of future calls to -nc_redef, nc_enddef() by requesting that minfree bytes be available at -the end of the section. - -The align parameters allow one to set the alignment of the beginning -of the corresponding sections. The beginning of the section is rounded -up to an index which is a multiple of the align parameter. The flag -value ALIGN_CHUNK tells the library to use the bufrsize (see above) as -the align parameter. It has nothing to do with the chunking -(multidimensional tiling) features of netCDF-4. - -The file format requires mod 4 alignment, so the align parameters are -silently rounded up to multiples of 4. The usual call, - -\code - nc_enddef(ncid); -\endcode - -is equivalent to - -\code - nc__enddef(ncid, 0, 4, 0, 4); -\endcode - -The file format does not contain a "record size" value, this is -calculated from the sizes of the record variables. This unfortunate -fact prevents us from providing minfree and alignment control of the -"records" in a netcdf file. If you add a variable which has an -unlimited dimension, the third section will always be copied with the -new variable added. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\param h_minfree Sets the pad at the end of the "header" section. - -\param v_align Controls the alignment of the beginning of the data -section for fixed size variables. - -\param v_minfree Sets the pad at the end of the data section for fixed -size variables. - -\param r_align Controls the alignment of the beginning of the data -section for variables which have an unlimited dimension (record -variables). - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - - */ -int -nc__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, - size_t r_align) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->_enddef(ncid,h_minfree,v_align,v_minfree,r_align); -} - -/** \ingroup datasets -Synchronize an open netcdf dataset to disk - -The function nc_sync() offers a way to synchronize the disk copy of a -netCDF dataset with in-memory buffers. There are two reasons you might -want to synchronize after writes: -- To minimize data loss in case of abnormal termination, or -- To make data available to other processes for reading immediately - after it is written. But note that a process that already had the - dataset open for reading would not see the number of records - increase when the writing process calls nc_sync(); to accomplish this, - the reading process must call nc_sync. - -This function is backward-compatible with previous versions of the -netCDF library. The intent was to allow sharing of a netCDF dataset -among multiple readers and one writer, by having the writer call -nc_sync() after writing and the readers call nc_sync() before each -read. For a writer, this flushes buffers to disk. For a reader, it -makes sure that the next read will be from disk rather than from -previously cached buffers, so that the reader will see changes made by -the writing process (e.g., the number of records written) without -having to close and reopen the dataset. If you are only accessing a -small amount of data, it can be expensive in computer resources to -always synchronize to disk after every write, since you are giving up -the benefits of buffering. - -An easier way to accomplish sharing (and what is now recommended) is -to have the writer and readers open the dataset with the NC_SHARE -flag, and then it will not be necessary to call nc_sync() at -all. However, the nc_sync() function still provides finer granularity -than the NC_SHARE flag, if only a few netCDF accesses need to be -synchronized among processes. - -It is important to note that changes to the ancillary data, such as -attribute values, are not propagated automatically by use of the -NC_SHARE flag. Use of the nc_sync() function is still required for this -purpose. - -Sharing datasets when the writer enters define mode to change the data -schema requires extra care. In previous releases, after the writer -left define mode, the readers were left looking at an old copy of the -dataset, since the changes were made to a new copy. The only way -readers could see the changes was by closing and reopening the -dataset. Now the changes are made in place, but readers have no -knowledge that their internal tables are now inconsistent with the new -dataset schema. If netCDF datasets are shared across redefinition, -some mechanism external to the netCDF library must be provided that -prevents access by readers during redefinition and causes the readers -to call nc_sync before any subsequent access. - -When calling nc_sync(), the netCDF dataset must be in data mode. A -netCDF dataset in define mode is synchronized to disk only when -nc_enddef() is called. A process that is reading a netCDF dataset that -another process is writing may call nc_sync to get updated with the -changes made to the data by the writing process (e.g., the number of -records written), without having to close and reopen the dataset. - -Data is automatically synchronized to disk when a netCDF dataset is -closed, or whenever you leave define mode. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - */ -int -nc_sync(int ncid) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->sync(ncid); -} - -/** \ingroup datasets -No longer necessary for user to invoke manually. - - -\warning Users no longer need to call this function since it is called -automatically by nc_close() in case the dataset is in define mode and -something goes wrong with committing the changes. The function -nc_abort() just closes the netCDF dataset, if not in define mode. If -the dataset is being created and is still in define mode, the dataset -is deleted. If define mode was entered by a call to nc_redef(), the -netCDF dataset is restored to its state before definition mode was -entered and the dataset is closed. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\returns ::NC_NOERR No error. - -

Example

- -Here is an example using nc_abort to back out of redefinitions of a -dataset named foo.nc: - -\code - #include - ... - int ncid, status, latid; - ... - status = nc_open("foo.nc", NC_WRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_redef(ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_def_dim(ncid, "lat", 18L, &latid); - if (status != NC_NOERR) { - handle_error(status); - status = nc_abort(ncid); - if (status != NC_NOERR) handle_error(status); - } -\endcode - - */ -int -nc_abort(int ncid) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - -#ifdef USE_REFCOUNT - /* What to do if refcount > 0? */ - /* currently, forcibly abort */ - ncp->refcount = 0; -#endif - - stat = ncp->dispatch->abort(ncid); - del_from_NCList(ncp); - free_NC(ncp); - return stat; -} - -/** \ingroup datasets -Close an open netCDF dataset - -If the dataset in define mode, nc_enddef() will be called before -closing. (In this case, if nc_enddef() returns an error, nc_abort() will -automatically be called to restore the dataset to the consistent state -before define mode was last entered.) After an open netCDF dataset is -closed, its netCDF ID may be reassigned to the next netCDF dataset -that is opened or created. - -\param ncid NetCDF ID, from a previous call to nc_open() or nc_create(). - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid id passed. - -\returns ::NC_EBADGRPID ncid did not contain the root group id of this -file. (NetCDF-4 only). - -

Example

- -Here is an example using nc_close to finish the definitions of a new -netCDF dataset named foo.nc and release its netCDF ID: - -\code - #include - ... - int status = NC_NOERR; - int ncid; - ... - status = nc_create("foo.nc", NC_NOCLOBBER, &ncid); - if (status != NC_NOERR) handle_error(status); - - ... create dimensions, variables, attributes - - status = nc_close(ncid); - if (status != NC_NOERR) handle_error(status); -\endcode - - */ -int -nc_close(int ncid) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - -#ifdef USE_REFCOUNT - ncp->refcount--; - if(ncp->refcount <= 0) -#endif - { - - stat = ncp->dispatch->close(ncid); - /* Remove from the nc list */ - del_from_NCList(ncp); - free_NC(ncp); - } - return stat; -} - -/** \ingroup datasets -Change the fill-value mode to improve write performance. - -This function is intended for advanced usage, to optimize writes under -some circumstances described below. The function nc_set_fill() sets the -fill mode for a netCDF dataset open for writing and returns the -current fill mode in a return parameter. The fill mode can be -specified as either ::NC_FILL or ::NC_NOFILL. The default behavior -corresponding to ::NC_FILL is that data is pre-filled with fill values, -that is fill values are written when you create non-record variables -or when you write a value beyond data that has not yet been -written. This makes it possible to detect attempts to read data before -it was written. For more information on the use of fill values see -Fill Values. For information about how to define your own fill values -see Attribute Conventions. - -The behavior corresponding to ::NC_NOFILL overrides the default behavior -of prefilling data with fill values. This can be used to enhance -performance, because it avoids the duplicate writes that occur when -the netCDF library writes fill values that are later overwritten with -data. - -A value indicating which mode the netCDF dataset was already in is -returned. You can use this value to temporarily change the fill mode -of an open netCDF dataset and then restore it to the previous mode. - -After you turn on ::NC_NOFILL mode for an open netCDF dataset, you must -be certain to write valid data in all the positions that will later be -read. Note that nofill mode is only a transient property of a netCDF -dataset open for writing: if you close and reopen the dataset, it will -revert to the default behavior. You can also revert to the default -behavior by calling nc_set_fill() again to explicitly set the fill mode -to ::NC_FILL. - -There are three situations where it is advantageous to set nofill -mode: -- Creating and initializing a netCDF dataset. In this case, you should - set nofill mode before calling nc_enddef() and then write completely - all non-record variables and the initial records of all the record - variables you want to initialize. -- Extending an existing record-oriented netCDF dataset. Set nofill - mode after opening the dataset for writing, then append the - additional records to the dataset completely, leaving no intervening - unwritten records. -- Adding new variables that you are going to initialize to an existing - netCDF dataset. Set nofill mode before calling nc_enddef() then write - all the new variables completely. - -If the netCDF dataset has an unlimited dimension and the last record -was written while in nofill mode, then the dataset may be shorter than -if nofill mode was not set, but this will be completely transparent if -you access the data only through the netCDF interfaces. - -The use of this feature may not be available (or even needed) in -future releases. Programmers are cautioned against heavy reliance upon -this feature. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\param fillmode Desired fill mode for the dataset, either ::NC_NOFILL or -::NC_FILL. - -\param old_modep Pointer to location for returned current fill mode of -the dataset before this call, either ::NC_NOFILL or ::NC_FILL. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID The specified netCDF ID does not refer to an open -netCDF dataset. - -\returns ::NC_EPERM The specified netCDF ID refers to a dataset open for -read-only access. - -\returns ::NC_EINVAL The fill mode argument is neither ::NC_NOFILL nor -::NC_FILL. - -

Example

- -Here is an example using nc_set_fill() to set nofill mode for subsequent -writes of a netCDF dataset named foo.nc: - -\code - #include - ... - int ncid, status, old_fill_mode; - ... - status = nc_open("foo.nc", NC_WRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - - ... write data with default prefilling behavior - - status = nc_set_fill(ncid, ::NC_NOFILL, &old_fill_mode); - if (status != NC_NOERR) handle_error(status); - - ... write data with no prefilling -\endcode - */ -int -nc_set_fill(int ncid, int fillmode, int *old_modep) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->set_fill(ncid,fillmode,old_modep); -} - -/** -\internal - -\deprecated This function was used in the old days with the Cray at -NCAR. The Cray is long gone, and this call is supported only for -backward compatibility. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - */ -int -nc_inq_base_pe(int ncid, int *pe) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_base_pe(ncid,pe); -} - -/** -\internal - -\deprecated This function was used in the old days with the Cray at -NCAR. The Cray is long gone, and this call is supported only for -backward compatibility. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - */ -int -nc_set_base_pe(int ncid, int pe) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->set_base_pe(ncid,pe); -} - -/** \ingroup datasets -Inquire about the binary format of a netCDF file -as presented by the API. - -This function returns the (rarely needed) format version. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\param formatp Pointer to location for returned format version, one of -NC_FORMAT_CLASSIC, NC_FORMAT_64BIT_OFFSET, NC_FORMAT_CDF5, NC_FORMAT_NETCDF4, -NC_FORMAT_NETCDF4_CLASSIC. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - - */ -int -nc_inq_format(int ncid, int *formatp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_format(ncid,formatp); -} - -/** \ingroup datasets -Obtain more detailed (vis-a-vis nc_inq_format) -format information about an open dataset. - -Note that the netcdf API will present the file -as if it had the format specified by nc_inq_format. -The true file format, however, may not even be -a netcdf file; it might be DAP, HDF4, or PNETCDF, -for example. This function returns that true file type. -It also returns the effective mode for the file. - -\param ncid NetCDF ID, from a previous call to nc_open() or -nc_create(). - -\param formatp Pointer to location for returned true format. - -\param modep Pointer to location for returned mode flags. - -Refer to the actual list in the file netcdf.h to see the -currently defined set. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - - */ -int -nc_inq_format_extended(int ncid, int *formatp, int *modep) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_format_extended(ncid,formatp,modep); -} - -/**\ingroup datasets -Inquire about a file or group. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param ndimsp Pointer to location for returned number of dimensions -defined for this netCDF dataset. Ignored if NULL. - -\param nvarsp Pointer to location for returned number of variables -defined for this netCDF dataset. Ignored if NULL. - -\param nattsp Pointer to location for returned number of global -attributes defined for this netCDF dataset. Ignored if NULL. - -\param unlimdimidp Pointer to location for returned ID of the -unlimited dimension, if there is one for this netCDF dataset. If no -unlimited length dimension has been defined, -1 is returned. Ignored -if NULL. If there are multiple unlimited dimensions (possible only -for netCDF-4 files), only a pointer to the first is returned, for -backward compatibility. If you want them all, use nc_inq_unlimids(). - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADID Invalid ncid passed. - -

Example

- -Here is an example using nc_inq to find out about a netCDF dataset -named foo.nc: - -\code - #include - ... - int status, ncid, ndims, nvars, ngatts, unlimdimid; - ... - status = nc_open("foo.nc", NC_NOWRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid); - if (status != NC_NOERR) handle_error(status); -\endcode - */ -int -nc_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq(ncid,ndimsp,nvarsp,nattsp,unlimdimidp); -} - -int -nc_inq_nvars(int ncid, int *nvarsp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq(ncid, NULL, nvarsp, NULL, NULL); -} - -/**\ingroup datasets -Inquire about a type. - -Given an ncid and a typeid, get the information about a type. This -function will work on any type, including atomic and any user defined -type, whether compound, opaque, enumeration, or variable length array. - -For even more information about a user defined type nc_inq_user_type(). - -\param ncid The ncid for the group containing the type (ignored for -atomic types). - -\param xtype The typeid for this type, as returned by nc_def_compound, -nc_def_opaque, nc_def_enum, nc_def_vlen, or nc_inq_var, or as found in -netcdf.h in the list of atomic types (NC_CHAR, NC_INT, etc.). - -\param name If non-NULL, the name of the user defined type will be -copied here. It will be NC_MAX_NAME bytes or less. For atomic types, -the type name from CDL will be given. - -\param size If non-NULL, the (in-memory) size of the type in bytes -will be copied here. VLEN type size is the size of nc_vlen_t. String -size is returned as the size of a character pointer. The size may be -used to malloc space for the data, no matter what the type. - -\returns ::NC_NOERR No error. - -\returns ::NC_EBADTYPE Bad typeid. - -\returns ::NC_ENOTNC4 Seeking a user-defined type in a netCDF-3 file. - -\returns ::NC_ESTRICTNC3 Seeking a user-defined type in a netCDF-4 file -for which classic model has been turned on. - -\returns ::NC_EBADGRPID Bad group ID in ncid. - -\returns ::NC_EBADID Type ID not found. - -\returns ::NC_EHDFERR An error was reported by the HDF5 layer. - -

Example

- -This example is from the test program tst_enums.c, and it uses all the -possible inquiry functions on an enum type. - -\code - if (nc_inq_user_type(ncid, typeids[0], name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int) || - base_nc_type_in != NC_INT || nfields_in != NUM_MEMBERS || class_in != NC_ENUM) ERR; - if (nc_inq_type(ncid, typeids[0], name_in, &base_size_in)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int)) ERR; - if (nc_inq_enum(ncid, typeids[0], name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_nc_type != NC_INT || num_members != NUM_MEMBERS) ERR; - for (i = 0; i < NUM_MEMBERS; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, member_name[i]) || value_in != member_value[i]) ERR; - if (nc_inq_enum_ident(ncid, typeid, member_value[i], name_in)) ERR; - if (strcmp(name_in, member_name[i])) ERR; - } - - if (nc_close(ncid)) ERR; -\endcode - */ -int -nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size) -{ - NC* ncp; - int stat; - - /* Do a quick triage on xtype */ - if(xtype <= NC_NAT) return NC_EBADTYPE; - /* See if the ncid is valid */ - stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) { /* bad ncid; do what we can */ - /* For compatibility, we need to allow inq about - atomic types, even if ncid is ill-defined */ - if(xtype <= ATOMICTYPEMAX4) { - if(name) strncpy(name,NC_atomictypename(xtype),NC_MAX_NAME); - if(size) *size = NC_atomictypelen(xtype); - return NC_NOERR; - } else - return NC_EBADTYPE; - } else { /* have good ncid */ - return ncp->dispatch->inq_type(ncid,xtype,name,size); - } -#if 0 - int maxtype; - int format; - nc_inq_format(ncid, &format); - switch (format) { - case NC_FORMAT_NETCDF4_CLASSIC: /*fall thru*/ - case NC_FORMAT_64BIT_OFFSET: /*fall thru*/ - case NC_FORMAT_CLASSIC: maxtype = ATOMICTYPEMAX3; break; - case NC_FORMAT_NETCDF4: maxtype = ATOMICTYPEMAX4; break; - case NC_FORMAT_CDF5: maxtype = ATOMICTYPEMAX5; break; - default: return NC_EINVAL; - } -#endif -} - -/** -\internal -\ingroup dispatch - -Create a file, calling the appropriate dispatch create call. - -For create, we have the following pieces of information to use to -determine the dispatch table: -- table specified by override -- path -- cmode - -\param path The file name of the new netCDF dataset. - -\param cmode The creation mode flag, the same as in nc_create(). - -\param initialsz This parameter sets the initial size of the file at creation -time. This only applies to classic and 64-bit offset files. - -\param basepe Deprecated parameter from the Cray days. - -\param chunksizehintp A pointer to the chunk size hint. This only -applies to classic and 64-bit offset files. - -\param useparallel Non-zero if parallel I/O is to be used on this -file. - -\param parameters Pointer to MPI comm and info. - -\param ncidp Pointer to location where returned netCDF ID is to be -stored. - -\returns ::NC_NOERR No error. -*/ -int -NC_create(const char *path, int cmode, size_t initialsz, - int basepe, size_t *chunksizehintp, int useparallel, - void* parameters, int *ncidp) -{ - int stat = NC_NOERR; - NC* ncp = NULL; - NC_Dispatch* dispatcher = NULL; - /* Need three pieces of information for now */ - int model = NC_FORMATX_UNDEFINED; /* one of the NC_FORMATX values */ - int isurl = 0; /* dap or cdmremote or neither */ - int xcmode = 0; /* for implied cmode flags */ - - TRACE(nc_create); - /* Initialize the dispatch table. The function pointers in the - * dispatch table will depend on how netCDF was built - * (with/without netCDF-4, DAP, CDMREMOTE). */ - if(!NC_initialized) - { - if ((stat = nc_initialize())) - return stat; - } - -#ifdef USE_REFCOUNT - /* If this path is already open, then fail */ - ncp = find_in_NCList_by_name(path); - if(ncp != NULL) - return NC_ENFILE; -#endif - - if((isurl = NC_testurl(path))) - model = NC_urlmodel(path); - - /* Look to the incoming cmode for hints */ - if(model == NC_FORMATX_UNDEFINED) { -#ifdef USE_NETCDF4 - if((cmode & NC_NETCDF4) == NC_NETCDF4) - model = NC_FORMATX_NC4; - else -#endif -#ifdef USE_PNETCDF - /* pnetcdf is used for parallel io on CDF-1, CDF-2, and CDF-5 */ - if((cmode & NC_MPIIO) == NC_MPIIO) - model = NC_FORMATX_PNETCDF; - else -#endif - {} - } - if(model == NC_FORMATX_UNDEFINED) { - /* Check default format (not formatx) */ - int format = nc_get_default_format(); - switch (format) { -#ifdef USE_NETCDF4 - case NC_FORMAT_NETCDF4: - xcmode |= NC_NETCDF4; - model = NC_FORMATX_NC4; - break; - case NC_FORMAT_NETCDF4_CLASSIC: - xcmode |= NC_CLASSIC_MODEL; - model = NC_FORMATX_NC4; - break; -#endif - case NC_FORMAT_CDF5: - xcmode |= NC_64BIT_DATA; - model = NC_FORMATX_NC3; - break; - case NC_FORMAT_64BIT_OFFSET: - xcmode |= NC_64BIT_OFFSET; - model = NC_FORMATX_NC3; - break; - case NC_FORMAT_CLASSIC: - model = NC_FORMATX_NC3; - break; - default: - model = NC_FORMATX_NC3; - break; - } - } - - /* Add inferred flags */ - cmode |= xcmode; - - /* Clean up illegal combinations */ - if((cmode & (NC_64BIT_OFFSET|NC_64BIT_DATA)) == (NC_64BIT_OFFSET|NC_64BIT_DATA)) - cmode &= ~(NC_64BIT_OFFSET); /*NC_64BIT_DATA=>NC_64BIT_OFFSET*/ - - if((cmode & NC_MPIIO) && (cmode & NC_MPIPOSIX)) - return NC_EINVAL; - -#ifdef OBSOLETE - dispatcher = NC_get_dispatch_override(); -#endif - if (dispatcher == NULL) - { - - /* Figure out what dispatcher to use */ -#ifdef USE_NETCDF4 - if(model == (NC_FORMATX_NC4)) - dispatcher = NC4_dispatch_table; - else -#endif /*USE_NETCDF4*/ -#ifdef USE_PNETCDF - if(model == (NC_FORMATX_PNETCDF)) - dispatcher = NCP_dispatch_table; - else -#endif - if(model == (NC_FORMATX_NC3)) - dispatcher = NC3_dispatch_table; - else - return NC_ENOTNC; - } - - /* Create the NC* instance and insert its dispatcher */ - stat = new_NC(dispatcher,path,cmode,&ncp); - if(stat) return stat; - - /* Add to list of known open files and define ext_ncid */ - add_to_NCList(ncp); - -#ifdef USE_REFCOUNT - /* bump the refcount */ - ncp->refcount++; -#endif - - /* Assume create will fill in remaining ncp fields */ - if ((stat = dispatcher->create(path, cmode, initialsz, basepe, chunksizehintp, - useparallel, parameters, dispatcher, ncp))) { - del_from_NCList(ncp); /* oh well */ - free_NC(ncp); - } else { - if(ncidp)*ncidp = ncp->ext_ncid; - } - return stat; -} - -/** -\internal -\ingroup dispatch - -Open a netCDF file (or remote dataset) calling the appropriate -dispatch function. - -For open, we have the following pieces of information to use to determine the dispatch table. -- table specified by override -- path -- cmode -- the contents of the file (if it exists), basically checking its magic number. - -\returns ::NC_NOERR No error. -*/ -int -NC_open(const char *path, int cmode, - int basepe, size_t *chunksizehintp, - int useparallel, void* parameters, - int *ncidp) -{ - int stat = NC_NOERR; - NC* ncp = NULL; - NC_Dispatch* dispatcher = NULL; - int inmemory = ((cmode & NC_INMEMORY) == NC_INMEMORY); - /* Need pieces of information for now to decide model*/ - int model = 0; - int isurl = 0; - int version = 0; - int flags = 0; - - TRACE(nc_open); - if(!NC_initialized) { - stat = nc_initialize(); - if(stat) return stat; - } - -#ifdef USE_REFCOUNT - /* If this path is already open, then bump the refcount and return it */ - ncp = find_in_NCList_by_name(path); - if(ncp != NULL) { - ncp->refcount++; - if(ncidp) *ncidp = ncp->ext_ncid; - return NC_NOERR; - } -#endif - - if(!inmemory) { - isurl = NC_testurl(path); - if(isurl) - model = NC_urlmodel(path); - } - if(model == 0) { - version = 0; - /* Try to find dataset type */ - if(useparallel) flags |= NC_MPIIO; - if(inmemory) flags |= NC_INMEMORY; - stat = NC_check_file_type(path,flags,parameters,&model,&version); - if(stat == NC_NOERR) { - if(model == 0) - return NC_ENOTNC; - } else /* presumably not a netcdf file */ - return stat; - } - - if(model == 0) { - fprintf(stderr,"Model == 0\n"); - return NC_ENOTNC; - } - - /* Force flag consistentcy */ - if(model == NC_FORMATX_NC4) - cmode |= NC_NETCDF4; - else if(model == NC_FORMATX_NC3) { - cmode &= ~NC_NETCDF4; /* must be netcdf-3 (CDF-1, CDF-2, CDF-5) */ - /* User may want to open file using the pnetcdf library */ - if(cmode & NC_PNETCDF) { - /* dispatch is determined by cmode, rather than file format */ - model = NC_FORMATX_PNETCDF; - } - /* For opening an existing file, flags NC_64BIT_OFFSET and NC_64BIT_DATA - * will be ignored, as the file is already in either CDF-1, 2, or 5 - * format. However, below we add the file format info to cmode so the - * internal netcdf file open subroutine knows what file format to open. - * The mode will be saved in ncp->mode, to be used by - * nc_inq_format_extended() to report the file format. - * See NC3_inq_format_extended() in libsrc/nc3internal.c for example. - */ - if(version == 2) cmode |= NC_64BIT_OFFSET; - else if(version == 5) { - cmode |= NC_64BIT_DATA; - cmode &= ~(NC_64BIT_OFFSET); /*NC_64BIT_DATA=>NC_64BIT_OFFSET*/ - } - } else if(model == NC_FORMATX_PNETCDF) { - cmode &= ~(NC_NETCDF4|NC_64BIT_OFFSET); - cmode |= NC_64BIT_DATA; - } - - if((cmode & NC_MPIIO && cmode & NC_MPIPOSIX)) - return NC_EINVAL; - - /* override any other table choice */ -#ifdef OBSOLETE - dispatcher = NC_get_dispatch_override(); -#endif - if(dispatcher != NULL) goto havetable; - - /* Figure out what dispatcher to use */ -#if defined(USE_CDMREMOTE) - if(model == (NC_DISPATCH_NC4 | NC_DISPATCH_NCR)) - dispatcher = NCCR_dispatch_table; - else -#endif -#if defined(USE_DAP) - if(model == (NC_FORMATX_DAP2)) - dispatcher = NCD2_dispatch_table; - else -#endif -#if defined(USE_PNETCDF) - if(model == (NC_FORMATX_PNETCDF)) - dispatcher = NCP_dispatch_table; - else -#endif -#if defined(USE_NETCDF4) - if(model == (NC_FORMATX_NC4)) - dispatcher = NC4_dispatch_table; - else -#endif - if(model == (NC_FORMATX_NC3)) - dispatcher = NC3_dispatch_table; - else - return NC_ENOTNC; - -havetable: - - /* Create the NC* instance and insert its dispatcher */ - stat = new_NC(dispatcher,path,cmode,&ncp); - if(stat) return stat; - - /* Add to list of known open files */ - add_to_NCList(ncp); - -#ifdef USE_REFCOUNT - /* bump the refcount */ - ncp->refcount++; -#endif - - /* Assume open will fill in remaining ncp fields */ - stat = dispatcher->open(path, cmode, basepe, chunksizehintp, - useparallel, parameters, dispatcher, ncp); - if(stat == NC_NOERR) { - if(ncidp) *ncidp = ncp->ext_ncid; - } else { - del_from_NCList(ncp); - free_NC(ncp); - } - return stat; -} - -/*Provide an internal function for generating pseudo file descriptors - for systems that are not file based (e.g. dap, memio). -*/ - -/* Static counter for pseudo file descriptors (incremented) */ -static int pseudofd = 0; - -/* Create a pseudo file descriptor that does not - overlap real file descriptors -*/ -int -nc__pseudofd(void) -{ - if(pseudofd == 0) { - int maxfd = 32767; /* default */ -#ifdef HAVE_GETRLIMIT - struct rlimit rl; - if(getrlimit(RLIMIT_NOFILE,&rl) == 0) { - if(rl.rlim_max != RLIM_INFINITY) - maxfd = (int)rl.rlim_max; - if(rl.rlim_cur != RLIM_INFINITY) - maxfd = (int)rl.rlim_cur; - } - pseudofd = maxfd+1; -#endif - } - return pseudofd++; -} diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dparallel.c b/contrib/netcdf/4.4.1.1/libdispatch/dparallel.c deleted file mode 100644 index 652053b2de9..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dparallel.c +++ /dev/null @@ -1,137 +0,0 @@ -/** \file dparallel.c -This file has the parallel I/O functions which correspond to the serial I/O functions. - -Copyright 2010 University Corporation for Atmospheric -Research/Unidata. See COPYRIGHT file for more info. -*/ - -#include "config.h" -#include "ncdispatch.h" - -/** - - This function creates a file for use with parallel I/O. - -*/ -int nc_create_par(const char *path, int cmode, MPI_Comm comm, - MPI_Info info, int *ncidp) -{ -#ifndef USE_PARALLEL - return NC_ENOPAR; -#else - NC_MPI_INFO data; - - /* One of these two parallel IO modes must be chosen by the user, - * or else pnetcdf must be in use. */ - if (!(cmode & NC_MPIIO || cmode & NC_MPIPOSIX) && - !(cmode & NC_PNETCDF)) - return NC_EINVAL; - - data.comm = comm; - data.info = info; - return NC_create(path, cmode, 0, 0, NULL, 1, &data, ncidp); -#endif /* USE_PARALLEL */ -} - -/*! \ingroup datasets - - This function opens a file for parallel I/O. - -*/ -int -nc_open_par(const char *path, int mode, MPI_Comm comm, - MPI_Info info, int *ncidp) -{ -#ifndef USE_PARALLEL - return NC_ENOPAR; -#else - NC_MPI_INFO mpi_data; - - /* One of these two parallel IO modes must be chosen by the user, - * or else pnetcdf must be in use. */ - if ((mode & NC_MPIIO) || (mode & NC_MPIPOSIX)) { - /* ok */ - } else if(mode & NC_PNETCDF) { - /* ok */ - } else - return NC_EINVAL; - - mpi_data.comm = comm; - mpi_data.info = info; - - return NC_open(path, mode, 0, NULL, 1, &mpi_data, ncidp); -#endif /* USE_PARALLEL */ -} - -/*! \ingroup datasets - - Fortran needs to pass MPI comm/info as integers. - -*/ -int -nc_open_par_fortran(const char *path, int mode, int comm, - int info, int *ncidp) -{ -#ifndef USE_PARALLEL - return NC_ENOPAR; -#else - MPI_Comm comm_c; - MPI_Info info_c; - - /* Convert fortran comm and info to C comm and info, if there is a - * function to do so. Otherwise just pass them. */ -#ifdef HAVE_MPI_COMM_F2C - comm_c = MPI_Comm_f2c(comm); - info_c = MPI_Info_f2c(info); -#else - comm_c = (MPI_Comm)comm; - info_c = (MPI_Info)info; -#endif - - return nc_open_par(path, mode, comm_c, info_c, ncidp); -#endif -} - -/* This function will change the parallel access of a variable from - * independent to collective. */ -int -nc_var_par_access(int ncid, int varid, int par_access) -{ - NC* ncp; - - int stat = NC_NOERR; - - if ((stat = NC_check_id(ncid, &ncp))) - return stat; - -#ifndef USE_PARALLEL - return NC_ENOPAR; -#else - return ncp->dispatch->var_par_access(ncid,varid,par_access); -#endif -} - -/* when calling from fortran: convert MPI_Comm and MPI_Info to C */ -int -nc_create_par_fortran(const char *path, int cmode, int comm, - int info, int *ncidp) -{ -#ifndef USE_PARALLEL - return NC_ENOPAR; -#else - MPI_Comm comm_c; - MPI_Info info_c; - - /* Convert fortran comm and info to C comm and info, if there is a - * function to do so. Otherwise just pass them. */ -#ifdef HAVE_MPI_COMM_F2C - comm_c = MPI_Comm_f2c(comm); - info_c = MPI_Info_f2c(info); -#else - comm_c = (MPI_Comm)comm; - info_c = (MPI_Info)info; -#endif - - return nc_create_par(path, cmode, comm_c, info_c, ncidp); -#endif -} diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dutf8proc.c b/contrib/netcdf/4.4.1.1/libdispatch/dutf8proc.c deleted file mode 100644 index f1e68a5a6e2..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dutf8proc.c +++ /dev/null @@ -1,590 +0,0 @@ -/* - * Copyright (c) 2006-2007 Jan Behrens, FlexiGuided GmbH, Berlin - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/* - * This library contains derived data from a modified version of the - * Unicode data files. - * - * The original data files are available at - * http://www.unicode.org/Public/UNIDATA/ - * - * Please notice the copyright statement in the file "utf8proc_data.c". - */ - - -/* - * File name: utf8proc.c - * Version: 1.1.1 - * Last changed: 2007-07-22 - * - * Description: - * Implementation of libutf8proc. - */ - - -#include "utf8proc.h" -#include "utf8proc_data.h" - -const int8_t utf8proc_utf8class[256] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0 }; - -#define UTF8PROC_HANGUL_SBASE 0xAC00 -#define UTF8PROC_HANGUL_LBASE 0x1100 -#define UTF8PROC_HANGUL_VBASE 0x1161 -#define UTF8PROC_HANGUL_TBASE 0x11A7 -#define UTF8PROC_HANGUL_LCOUNT 19 -#define UTF8PROC_HANGUL_VCOUNT 21 -#define UTF8PROC_HANGUL_TCOUNT 28 -#define UTF8PROC_HANGUL_NCOUNT 588 -#define UTF8PROC_HANGUL_SCOUNT 11172 -/*// END is exclusive*/ -#define UTF8PROC_HANGUL_L_START 0x1100 -#define UTF8PROC_HANGUL_L_END 0x115A -#define UTF8PROC_HANGUL_L_FILLER 0x115F -#define UTF8PROC_HANGUL_V_START 0x1160 -#define UTF8PROC_HANGUL_V_END 0x11A3 -#define UTF8PROC_HANGUL_T_START 0x11A8 -#define UTF8PROC_HANGUL_T_END 0x11FA -#define UTF8PROC_HANGUL_S_START 0xAC00 -#define UTF8PROC_HANGUL_S_END 0xD7A4 - - -#define UTF8PROC_BOUNDCLASS_START 0 -#define UTF8PROC_BOUNDCLASS_OTHER 1 -#define UTF8PROC_BOUNDCLASS_CR 2 -#define UTF8PROC_BOUNDCLASS_LF 3 -#define UTF8PROC_BOUNDCLASS_CONTROL 4 -#define UTF8PROC_BOUNDCLASS_EXTEND 5 -#define UTF8PROC_BOUNDCLASS_L 6 -#define UTF8PROC_BOUNDCLASS_V 7 -#define UTF8PROC_BOUNDCLASS_T 8 -#define UTF8PROC_BOUNDCLASS_LV 9 -#define UTF8PROC_BOUNDCLASS_LVT 10 - - -const char *utf8proc_errmsg(ssize_t errcode) { - switch (errcode) { - case UTF8PROC_ERROR_NOMEM: - return "Memory for processing UTF-8 data could not be allocated."; - case UTF8PROC_ERROR_OVERFLOW: - return "UTF-8 string is too long to be processed."; - case UTF8PROC_ERROR_INVALIDUTF8: - return "Invalid UTF-8 string"; - case UTF8PROC_ERROR_NOTASSIGNED: - return "Unassigned Unicode code point found in UTF-8 string."; - case UTF8PROC_ERROR_INVALIDOPTS: - return "Invalid options for UTF-8 processing chosen."; - default: - return "An unknown error occurred while processing UTF-8 data."; - } -} - -ssize_t utf8proc_iterate( - const uint8_t *str, ssize_t slen, int32_t *dst -) { - int length; - int i; - int32_t uc = -1; - *dst = -1; - if (!slen) return 0; - length = utf8proc_utf8class[str[0]]; - if (!length) return UTF8PROC_ERROR_INVALIDUTF8; - if (slen >= 0 && length > slen) return UTF8PROC_ERROR_INVALIDUTF8; - for (i=1; i= 0xD800 && uc < 0xE000) || - (uc >= 0xFDD0 && uc < 0xFDF0)) uc = -1; - break; - case 4: - uc = ((str[0] & 0x07) << 18) + ((str[1] & 0x3F) << 12) - + ((str[2] & 0x3F) << 6) + (str[3] & 0x3F); - if (uc < 0x10000 || uc >= 0x110000) uc = -1; - break; - } - if (uc < 0 || ((uc & 0xFFFF) >= 0xFFFE)) - return UTF8PROC_ERROR_INVALIDUTF8; - *dst = uc; - return length; -} - -bool utf8proc_codepoint_valid(int32_t uc) { - if (uc < 0 || uc >= 0x110000 || - ((uc & 0xFFFF) >= 0xFFFE) || (uc >= 0xD800 && uc < 0xE000) || - (uc >= 0xFDD0 && uc < 0xFDF0)) return false; - else return true; -} - -ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst) { - if (uc < 0x00) { - return 0; - } else if (uc < 0x80) { - dst[0] = (uint8_t)uc; - return 1; - } else if (uc < 0x800) { - dst[0] = (uint8_t)(0xC0 + (uc >> 6)); - dst[1] = (uint8_t)(0x80 + (uc & 0x3F)); - return 2; - } else if (uc == 0xFFFF) { - dst[0] = 0xFF; - return 1; - } else if (uc == 0xFFFE) { - dst[0] = 0xFE; - return 1; - } else if (uc < 0x10000) { - dst[0] = (uint8_t)(0xE0 + (uc >> 12)); - dst[1] = (uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[2] = (uint8_t)(0x80 + (uc & 0x3F)); - return 3; - } else if (uc < 0x110000) { - dst[0] = (uint8_t)(0xF0 + (uc >> 18)); - dst[1] = (uint8_t)(0x80 + ((uc >> 12) & 0x3F)); - dst[2] = (uint8_t)(0x80 + ((uc >> 6) & 0x3F)); - dst[3] = (uint8_t)(0x80 + (uc & 0x3F)); - return 4; - } else return 0; -} - -const utf8proc_property_t *utf8proc_get_property(int32_t uc) { - /* // ASSERT: uc >= 0 && uc < 0x110000*/ - return utf8proc_properties + ( - utf8proc_stage2table[ - utf8proc_stage1table[uc >> 8] + (uc & 0xFF) - ] - ); -} - -#define utf8proc_decompose_lump(replacement_uc) \ - return utf8proc_decompose_char((replacement_uc), dst, bufsize, \ - options & ~UTF8PROC_LUMP, last_boundclass) - -ssize_t utf8proc_decompose_char(int32_t uc, int32_t *dst, ssize_t bufsize, - int options, int *last_boundclass) { - /*// ASSERT: uc >= 0 && uc < 0x110000*/ - const utf8proc_property_t *property; - utf8proc_propval_t category; - int32_t hangul_sindex; - property = utf8proc_get_property(uc); - category = property->category; - hangul_sindex = uc - UTF8PROC_HANGUL_SBASE; - if (options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) { - if (hangul_sindex >= 0 && hangul_sindex < UTF8PROC_HANGUL_SCOUNT) { - int32_t hangul_tindex; - if (bufsize >= 1) { - dst[0] = UTF8PROC_HANGUL_LBASE + - hangul_sindex / UTF8PROC_HANGUL_NCOUNT; - if (bufsize >= 2) dst[1] = UTF8PROC_HANGUL_VBASE + - (hangul_sindex % UTF8PROC_HANGUL_NCOUNT) / UTF8PROC_HANGUL_TCOUNT; - } - hangul_tindex = hangul_sindex % UTF8PROC_HANGUL_TCOUNT; - if (!hangul_tindex) return 2; - if (bufsize >= 3) dst[2] = UTF8PROC_HANGUL_TBASE + hangul_tindex; - return 3; - } - } - if (options & UTF8PROC_REJECTNA) { - if (!category) return UTF8PROC_ERROR_NOTASSIGNED; - } - if (options & UTF8PROC_IGNORE) { - if (property->ignorable) return 0; - } - if (options & UTF8PROC_LUMP) { - if (category == UTF8PROC_CATEGORY_ZS) utf8proc_decompose_lump(0x0020); - if (uc == 0x2018 || uc == 0x2019 || uc == 0x02BC || uc == 0x02C8) - utf8proc_decompose_lump(0x0027); - if (category == UTF8PROC_CATEGORY_PD || uc == 0x2212) - utf8proc_decompose_lump(0x002D); - if (uc == 0x2044 || uc == 0x2215) utf8proc_decompose_lump(0x002F); - if (uc == 0x2236) utf8proc_decompose_lump(0x003A); - if (uc == 0x2039 || uc == 0x2329 || uc == 0x3008) - utf8proc_decompose_lump(0x003C); - if (uc == 0x203A || uc == 0x232A || uc == 0x3009) - utf8proc_decompose_lump(0x003E); - if (uc == 0x2216) utf8proc_decompose_lump(0x005C); - if (uc == 0x02C4 || uc == 0x02C6 || uc == 0x2038 || uc == 0x2303) - utf8proc_decompose_lump(0x005E); - if (category == UTF8PROC_CATEGORY_PC || uc == 0x02CD) - utf8proc_decompose_lump(0x005F); - if (uc == 0x02CB) utf8proc_decompose_lump(0x0060); - if (uc == 0x2223) utf8proc_decompose_lump(0x007C); - if (uc == 0x223C) utf8proc_decompose_lump(0x007E); - if ((options & UTF8PROC_NLF2LS) && (options & UTF8PROC_NLF2PS)) { - if (category == UTF8PROC_CATEGORY_ZL || - category == UTF8PROC_CATEGORY_ZP) - utf8proc_decompose_lump(0x000A); - } - } - if (options & UTF8PROC_STRIPMARK) { - if (category == UTF8PROC_CATEGORY_MN || - category == UTF8PROC_CATEGORY_MC || - category == UTF8PROC_CATEGORY_ME) return 0; - } - if (options & UTF8PROC_CASEFOLD) { - if (property->casefold_mapping) { - const int32_t *casefold_entry; - ssize_t written = 0; - for (casefold_entry = property->casefold_mapping; - *casefold_entry >= 0; casefold_entry++) { - written += utf8proc_decompose_char(*casefold_entry, dst+written, - (bufsize > written) ? (bufsize - written) : 0, options, - last_boundclass); - if (written < 0) return UTF8PROC_ERROR_OVERFLOW; - } - return written; - } - } - if (options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) { - if (property->decomp_mapping && - (!property->decomp_type || (options & UTF8PROC_COMPAT))) { - const int32_t *decomp_entry; - ssize_t written = 0; - for (decomp_entry = property->decomp_mapping; - *decomp_entry >= 0; decomp_entry++) { - written += utf8proc_decompose_char(*decomp_entry, dst+written, - (bufsize > written) ? (bufsize - written) : 0, options, - last_boundclass); - if (written < 0) return UTF8PROC_ERROR_OVERFLOW; - } - return written; - } - } - if (options & UTF8PROC_CHARBOUND) { - bool boundary; - int tbc, lbc; - tbc = - (uc == 0x000D) ? UTF8PROC_BOUNDCLASS_CR : - (uc == 0x000A) ? UTF8PROC_BOUNDCLASS_LF : - ((category == UTF8PROC_CATEGORY_ZL || - category == UTF8PROC_CATEGORY_ZP || - category == UTF8PROC_CATEGORY_CC || - category == UTF8PROC_CATEGORY_CF) && - !(uc == 0x200C || uc == 0x200D)) ? UTF8PROC_BOUNDCLASS_CONTROL : - property->extend ? UTF8PROC_BOUNDCLASS_EXTEND : - ((uc >= UTF8PROC_HANGUL_L_START && uc < UTF8PROC_HANGUL_L_END) || - uc == UTF8PROC_HANGUL_L_FILLER) ? UTF8PROC_BOUNDCLASS_L : - (uc >= UTF8PROC_HANGUL_V_START && uc < UTF8PROC_HANGUL_V_END) ? - UTF8PROC_BOUNDCLASS_V : - (uc >= UTF8PROC_HANGUL_T_START && uc < UTF8PROC_HANGUL_T_END) ? - UTF8PROC_BOUNDCLASS_T : - (uc >= UTF8PROC_HANGUL_S_START && uc < UTF8PROC_HANGUL_S_END) ? ( - ((uc-UTF8PROC_HANGUL_SBASE) % UTF8PROC_HANGUL_TCOUNT == 0) ? - UTF8PROC_BOUNDCLASS_LV : UTF8PROC_BOUNDCLASS_LVT - ) : - UTF8PROC_BOUNDCLASS_OTHER; - lbc = *last_boundclass; - boundary = - (tbc == UTF8PROC_BOUNDCLASS_EXTEND) ? false : - (lbc == UTF8PROC_BOUNDCLASS_START) ? true : - (lbc == UTF8PROC_BOUNDCLASS_CR && - tbc == UTF8PROC_BOUNDCLASS_LF) ? false : - (lbc == UTF8PROC_BOUNDCLASS_CONTROL) ? true : - (tbc == UTF8PROC_BOUNDCLASS_CONTROL) ? true : - (lbc == UTF8PROC_BOUNDCLASS_L && - (tbc == UTF8PROC_BOUNDCLASS_L || - tbc == UTF8PROC_BOUNDCLASS_V || - tbc == UTF8PROC_BOUNDCLASS_LV || - tbc == UTF8PROC_BOUNDCLASS_LVT)) ? false : - ((lbc == UTF8PROC_BOUNDCLASS_LV || - lbc == UTF8PROC_BOUNDCLASS_V) && - (tbc == UTF8PROC_BOUNDCLASS_V || - tbc == UTF8PROC_BOUNDCLASS_T)) ? false : - ((lbc == UTF8PROC_BOUNDCLASS_LVT || - lbc == UTF8PROC_BOUNDCLASS_T) && - tbc == UTF8PROC_BOUNDCLASS_T) ? false : - true; - *last_boundclass = tbc; - if (boundary) { - if (bufsize >= 1) dst[0] = 0xFFFF; - if (bufsize >= 2) dst[1] = uc; - return 2; - } - } - if (bufsize >= 1) *dst = uc; - return 1; -} - -ssize_t utf8proc_decompose( - const uint8_t *str, ssize_t slen, - int32_t *buffer, ssize_t bufsize, int options -) { - /*// slen will be ignored, if UTF8PROC_NULLTERM is set in options*/ - ssize_t wpos = 0; - if ((options & UTF8PROC_COMPOSE) && (options & UTF8PROC_DECOMPOSE)) - return UTF8PROC_ERROR_INVALIDOPTS; - if ((options & UTF8PROC_STRIPMARK) && - !(options & UTF8PROC_COMPOSE) && !(options & UTF8PROC_DECOMPOSE)) - return UTF8PROC_ERROR_INVALIDOPTS; - { - int32_t uc; - ssize_t rpos = 0; - ssize_t decomp_result; - int boundclass = UTF8PROC_BOUNDCLASS_START; - while (1) { - if (options & UTF8PROC_NULLTERM) { - rpos += utf8proc_iterate(str + rpos, -1, &uc); - /* checking of return value is not necessary, - as 'uc' is < 0 in case of error. */ - if (uc < 0) return UTF8PROC_ERROR_INVALIDUTF8; - if (rpos < 0) return UTF8PROC_ERROR_OVERFLOW; - if (uc == 0) break; - } else { - if (rpos >= slen) break; - rpos += utf8proc_iterate(str + rpos, slen - rpos, &uc); - if (uc < 0) return UTF8PROC_ERROR_INVALIDUTF8; - } - decomp_result = utf8proc_decompose_char( - uc, buffer + wpos, (bufsize > wpos) ? (bufsize - wpos) : 0, options, - &boundclass - ); - if (decomp_result < 0) return decomp_result; - wpos += decomp_result; - /* // prohibiting integer overflows due to too long strings:*/ - if (wpos < 0 || wpos > SSIZE_MAX/sizeof(int32_t)/2) - return UTF8PROC_ERROR_OVERFLOW; - } - } - if ((options & (UTF8PROC_COMPOSE|UTF8PROC_DECOMPOSE)) && bufsize >= wpos) { - ssize_t pos = 0; - while (pos < wpos-1) { - int32_t uc1, uc2; - const utf8proc_property_t *property1, *property2; - uc1 = buffer[pos]; - uc2 = buffer[pos+1]; - property1 = utf8proc_get_property(uc1); - property2 = utf8proc_get_property(uc2); - if (property1->combining_class > property2->combining_class && - property2->combining_class > 0) { - buffer[pos] = uc2; - buffer[pos+1] = uc1; - if (pos > 0) pos--; else pos++; - } else { - pos++; - } - } - } - return wpos; -} - -ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options) { - /* UTF8PROC_NULLTERM option will be ignored, 'length' is never ignored - ASSERT: 'buffer' has one spare byte of free space at the end! */ - if (options & (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS | UTF8PROC_STRIPCC)) { - ssize_t rpos; - ssize_t wpos = 0; - int32_t uc; - for (rpos = 0; rpos < length; rpos++) { - uc = buffer[rpos]; - if (uc == 0x000D && rpos < length-1 && buffer[rpos+1] == 0x000A) rpos++; - if (uc == 0x000A || uc == 0x000D || uc == 0x0085 || - ((options & UTF8PROC_STRIPCC) && (uc == 0x000B || uc == 0x000C))) { - if (options & UTF8PROC_NLF2LS) { - if (options & UTF8PROC_NLF2PS) { - buffer[wpos++] = 0x000A; - } else { - buffer[wpos++] = 0x2028; - } - } else { - if (options & UTF8PROC_NLF2PS) { - buffer[wpos++] = 0x2029; - } else { - buffer[wpos++] = 0x0020; - } - } - } else if ((options & UTF8PROC_STRIPCC) && - (uc < 0x0020 || (uc >= 0x007F && uc < 0x00A0))) { - if (uc == 0x0009) buffer[wpos++] = 0x0020; - } else { - buffer[wpos++] = uc; - } - } - length = wpos; - } - if (options & UTF8PROC_COMPOSE) { - int32_t *starter = NULL; - int32_t current_char; - const utf8proc_property_t *starter_property = NULL, *current_property; - utf8proc_propval_t max_combining_class = -1; - ssize_t rpos; - ssize_t wpos = 0; - int32_t composition; - for (rpos = 0; rpos < length; rpos++) { - current_char = buffer[rpos]; - current_property = utf8proc_get_property(current_char); - if (starter && current_property->combining_class > max_combining_class) { - /* // combination perhaps possible*/ - int32_t hangul_lindex; - int32_t hangul_sindex; - hangul_lindex = *starter - UTF8PROC_HANGUL_LBASE; - if (hangul_lindex >= 0 && hangul_lindex < UTF8PROC_HANGUL_LCOUNT) { - int32_t hangul_vindex; - hangul_vindex = current_char - UTF8PROC_HANGUL_VBASE; - if (hangul_vindex >= 0 && hangul_vindex < UTF8PROC_HANGUL_VCOUNT) { - *starter = UTF8PROC_HANGUL_SBASE + - (hangul_lindex * UTF8PROC_HANGUL_VCOUNT + hangul_vindex) * - UTF8PROC_HANGUL_TCOUNT; - starter_property = NULL; - continue; - } - } - hangul_sindex = *starter - UTF8PROC_HANGUL_SBASE; - if (hangul_sindex >= 0 && hangul_sindex < UTF8PROC_HANGUL_SCOUNT && - (hangul_sindex % UTF8PROC_HANGUL_TCOUNT) == 0) { - int32_t hangul_tindex; - hangul_tindex = current_char - UTF8PROC_HANGUL_TBASE; - if (hangul_tindex >= 0 && hangul_tindex < UTF8PROC_HANGUL_TCOUNT) { - *starter += hangul_tindex; - starter_property = NULL; - continue; - } - } - if (!starter_property) { - starter_property = utf8proc_get_property(*starter); - } - if (starter_property->comb1st_index >= 0 && - current_property->comb2nd_index >= 0) { - composition = utf8proc_combinations[ - starter_property->comb1st_index + - current_property->comb2nd_index - ]; - if (composition >= 0 && (!(options & UTF8PROC_STABLE) || - !(utf8proc_get_property(composition)->comp_exclusion))) { - *starter = composition; - starter_property = NULL; - continue; - } - } - } - buffer[wpos] = current_char; - if (current_property->combining_class) { - if (current_property->combining_class > max_combining_class) { - max_combining_class = current_property->combining_class; - } - } else { - starter = buffer + wpos; - starter_property = NULL; - max_combining_class = -1; - } - wpos++; - } - length = wpos; - } - { - ssize_t rpos, wpos = 0; - int32_t uc; - for (rpos = 0; rpos < length; rpos++) { - uc = buffer[rpos]; - wpos += utf8proc_encode_char(uc, ((uint8_t *)buffer) + wpos); - } - ((uint8_t *)buffer)[wpos] = 0; - return wpos; - } -} - -ssize_t utf8proc_map( - const uint8_t *str, ssize_t slen, uint8_t **dstptr, int options -) { - int32_t *buffer; - ssize_t result; - *dstptr = NULL; - result = utf8proc_decompose(str, slen, NULL, 0, options); - if (result < 0) return result; - buffer = (int32_t*)malloc(((size_t)result) * sizeof(int32_t) + 1); - if (!buffer) return UTF8PROC_ERROR_NOMEM; - result = utf8proc_decompose(str, slen, buffer, result, options); - if (result < 0) { - free(buffer); - return result; - } - result = utf8proc_reencode(buffer, result, options); - if (result < 0) { - free(buffer); - return result; - } - { - int32_t *newptr; - newptr = realloc(buffer, result+1); - if (newptr) buffer = newptr; - } - *dstptr = (uint8_t *)buffer; - return result; -} - -uint8_t *utf8proc_NFD(const uint8_t *str) { - uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_DECOMPOSE); - return retval; -} - -uint8_t *utf8proc_NFC(const uint8_t *str) { - uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_COMPOSE); - return retval; -} - -uint8_t *utf8proc_NFKD(const uint8_t *str) { - uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT); - return retval; -} - -uint8_t *utf8proc_NFKC(const uint8_t *str) { - uint8_t *retval; - utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | - UTF8PROC_COMPOSE | UTF8PROC_COMPAT); - return retval; -} - -ssize_t utf8proc_check(const uint8_t *str) { - ssize_t result; - result = utf8proc_decompose(str, 0, NULL, 0, - UTF8PROC_NULLTERM | UTF8PROC_STABLE); - return result; -} diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dv2i.c b/contrib/netcdf/4.4.1.1/libdispatch/dv2i.c deleted file mode 100644 index 925e81ecfc0..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dv2i.c +++ /dev/null @@ -1,1219 +0,0 @@ -/** \file -The V2 API Functions. - -Copyright 1996, University Corporation for Atmospheric Research -See \ref copyright file for copying and redistribution conditions. - */ - -#ifndef NO_NETCDF_2 - -#include -#include -#include -#include -#include "netcdf.h" -#include "math.h" -/* The subroutines in error.c emit no messages unless NC_VERBOSE bit - * is on. They call exit() when NC_FATAL bit is on. */ -int ncopts = (NC_FATAL | NC_VERBOSE) ; -int ncerr = NC_NOERR ; - -#if SIZEOF_LONG == SIZEOF_SIZE_T -/* - * We don't have to copy the arguments to switch from 'long' - * to 'size_t' or 'ptrdiff_t'. Use dummy macros. - */ - -# define NDIMS_DECL -# define A_DECL(name, type, ndims, rhs) \ - const type *const name = ((const type *)(rhs)) - -# define A_FREE(name) - -# define A_INIT(lhs, type, ndims, rhs) - -#else -/* - * We do have to copy the arguments to switch from 'long' - * to 'size_t' or 'ptrdiff_t'. In my tests on an SGI, - * any additional cost was lost in measurement variation. - * - * This stanza is true on Windows with MinGW-64 - */ - -# include "onstack.h" - -static int -nvdims(int ncid, int varid) -{ - int ndims=-1, status; - - if ((status = nc_inq_varndims(ncid, varid, &ndims))) - { - nc_advise("ncvdims", status, "ncid %d", ncid); - return -1; - } - return ndims; -} - -/* Used to avoid errors on 64-bit windows related to - c89 macros and flow control/conditionals. */ -static void* nvmalloc(off_t size) { - if(size < 0) - return NULL; - - return malloc(size); - -} - -#define NDIMS_DECL const int ndims = nvdims(ncid, varid); \ - - -# define A_DECL(name, type, ndims, rhs) \ - type *const name = (type*) nvmalloc((ndims) * sizeof(type)) - - -// ALLOC_ONSTACK(name, type, ndims) - - -# define A_FREE(name) \ - FREE_ONSTACK(name) - -# define A_INIT(lhs, type, ndims, rhs) \ - { \ - if((off_t)ndims >= 0) { \ - const long *lp = rhs; \ - type *tp = lhs; \ - type *const end = lhs + ndims; \ - while(tp < end) \ - { \ - *tp++ = (type) *lp++; \ - } \ - } \ - } \ - \ - if ((off_t)ndims < 0) {nc_advise("nvdims",NC_EMAXDIMS,"ndims %d",ndims); return -1;} - - -#endif - -typedef signed char schar; - -/* - * Computes number of record variables in an open netCDF file, and an array of - * the record variable ids, if the array parameter is non-null. - */ -static int -numrecvars(int ncid, int* nrecvarsp, int *recvarids) -{ - int status = NC_NOERR; - int nvars = 0; - int ndims = 0; - int nrecvars = 0; - int varid; - int recdimid; - int dimids[MAX_NC_DIMS]; - - status = nc_inq_nvars(ncid, &nvars); - if(status != NC_NOERR) - return status; - - status = nc_inq_unlimdim(ncid, &recdimid); - if(status != NC_NOERR) - return status; - - if (recdimid == -1) { - *nrecvarsp = 0; - return NC_NOERR; - } - nrecvars = 0; - for (varid = 0; varid < nvars; varid++) { - status = nc_inq_varndims(ncid, varid, &ndims); - if(status != NC_NOERR) - return status; - status = nc_inq_vardimid(ncid, varid, dimids); - if(status != NC_NOERR) - return status; - if (ndims > 0 && dimids[0] == recdimid) { - if (recvarids != NULL) - recvarids[nrecvars] = varid; - nrecvars++; - } - } - *nrecvarsp = nrecvars; - return NC_NOERR; -} - - -/* - * Computes record size (in bytes) of the record variable with a specified - * variable id. Returns size as 0 if not a record variable. - */ -static int -ncrecsize(int ncid, int varid, size_t *recsizep) -{ - int status = NC_NOERR; - int recdimid; - nc_type type; - int ndims; - int dimids[MAX_NC_DIMS]; - int id; - int size; - - *recsizep = 0; - status = nc_inq_unlimdim(ncid, &recdimid); - if(status != NC_NOERR) - return status; - status = nc_inq_vartype(ncid, varid, &type); - if(status != NC_NOERR) - return status; - status = nc_inq_varndims(ncid, varid, &ndims); - if(status != NC_NOERR) - return status; - status = nc_inq_vardimid(ncid, varid, dimids); - if(status != NC_NOERR) - return status; - if (ndims == 0 || dimids[0] != recdimid) { - return NC_NOERR; - } - size = nctypelen(type); - for (id = 1; id < ndims; id++) { - size_t len; - status = nc_inq_dimlen(ncid, dimids[id], &len); - if(status != NC_NOERR) - return status; - size *= (int)len; - } - *recsizep = (size_t)size; - return NC_NOERR; -} - - -/* - * Retrieves the dimension sizes of a variable with a specified variable id in - * an open netCDF file. Returns -1 on error. - */ -static int -dimsizes(int ncid, int varid, size_t *sizes) -{ - int status = NC_NOERR; - int ndims; - int id; - int dimids[MAX_NC_DIMS]; - - status = nc_inq_varndims(ncid, varid, &ndims); - if(status != NC_NOERR) - return status; - status = nc_inq_vardimid(ncid, varid, dimids); - if(status != NC_NOERR) - return status; - if (ndims == 0 || sizes == NULL) - return NC_NOERR; - for (id = 0; id < ndims; id++) { - size_t len; - status = nc_inq_dimlen(ncid, dimids[id], &len); - if(status != NC_NOERR) - return status; - sizes[id] = len; - } - return NC_NOERR; -} - - -/* - * Retrieves the number of record variables, the record variable ids, and the - * record size of each record variable. If any pointer to info to be returned - * is null, the associated information is not returned. Returns -1 on error. - */ -int -nc_inq_rec( - int ncid, - size_t *nrecvarsp, - int *recvarids, - size_t *recsizes) -{ - int status = NC_NOERR; - int nvars = 0; - int recdimid; - int varid; - int rvarids[MAX_NC_VARS]; - int nrvars = 0; - - status = nc_inq_nvars(ncid, &nvars); - if(status != NC_NOERR) - return status; - - status = nc_inq_unlimdim(ncid, &recdimid); - if(status != NC_NOERR) - return status; - - if (recdimid == -1) - return NC_NOERR; - - status = numrecvars(ncid, &nrvars, rvarids); - if(status != NC_NOERR) - return status; - - if (nrecvarsp != NULL) - *nrecvarsp = (size_t)nrvars; - - if (recvarids != NULL) - for (varid = 0; varid < nrvars; varid++) - recvarids[varid] = rvarids[varid]; - - if (recsizes != NULL) - for (varid = 0; varid < nrvars; varid++) { - size_t rsize; - status = ncrecsize(ncid, rvarids[varid], &rsize); - if (status != NC_NOERR) - return status; - recsizes[varid] = rsize; - } - return NC_NOERR; -} - - -/* - * Write one record's worth of data, except don't write to variables for which - * the address of the data to be written is NULL. Return -1 on error. This is - * the same as the ncrecput() in the library, except that can handle errors - * better. - */ -int -nc_put_rec( - int ncid, - size_t recnum, - void* const* datap) -{ - int status = NC_NOERR; - int varid; - int rvarids[MAX_NC_VARS]; - int nrvars; - size_t start[MAX_NC_DIMS]; - size_t edges[MAX_NC_DIMS]; - - status = numrecvars(ncid, &nrvars, rvarids); - if(status != NC_NOERR) - return status; - - if (nrvars == 0) - return NC_NOERR; - - start[0] = recnum; - for (varid = 1; varid < nrvars; varid++) - start[varid] = 0; - - for (varid = 0; varid < nrvars; varid++) { - if (datap[varid] != NULL) { - status = dimsizes(ncid, rvarids[varid], edges); - if(status != NC_NOERR) - return status; - - edges[0] = 1; /* only 1 record's worth */ - status = nc_put_vara(ncid, rvarids[varid], start, edges, datap[varid]); - if(status != NC_NOERR) - return status; - } - } - return 0; -} - - -/* - * Read one record's worth of data, except don't read from variables for which - * the address of the data to be read is null. Return -1 on error. This is - * the same as the ncrecget() in the library, except that can handle errors - * better. - */ -int -nc_get_rec( - int ncid, - size_t recnum, - void **datap) -{ - int status = NC_NOERR; - int varid; - int rvarids[MAX_NC_VARS]; - int nrvars; - size_t start[MAX_NC_DIMS]; - size_t edges[MAX_NC_DIMS]; - - status = numrecvars(ncid, &nrvars, rvarids); - if(status != NC_NOERR) - return status; - - if (nrvars == 0) - return NC_NOERR; - - start[0] = recnum; - for (varid = 1; varid < nrvars; varid++) - start[varid] = 0; - - for (varid = 0; varid < nrvars; varid++) { - if (datap[varid] != NULL) { - status = dimsizes(ncid, rvarids[varid], edges); - if(status != NC_NOERR) - return status; - edges[0] = 1; /* only 1 record's worth */ - status = nc_get_vara(ncid, rvarids[varid], start, edges, datap[varid]); - if(status != NC_NOERR) - return status; - } - } - return 0; -} - -/* - */ -void -nc_advise(const char *routine_name, int err, const char *fmt,...) -{ - va_list args; - - if(NC_ISSYSERR(err)) - ncerr = NC_SYSERR; - else - ncerr = err; - - if( ncopts & NC_VERBOSE ) - { - (void) fprintf(stderr,"%s: ", routine_name); - va_start(args ,fmt); - (void) vfprintf(stderr,fmt,args); - va_end(args); - if(err != NC_NOERR) - { - (void) fprintf(stderr,": %s", - nc_strerror(err)); - } - (void) fputc('\n',stderr); - (void) fflush(stderr); /* to ensure log files are current */ - } - - if( (ncopts & NC_FATAL) && err != NC_NOERR ) - { - exit(ncopts); - } -} - -/* End error handling */ - -int -nccreate(const char* path, int cmode) -{ - int ncid; - const int status = nc_create(path, cmode, &ncid); - if(status != NC_NOERR) - { - nc_advise("nccreate", status, "filename \"%s\"", path); - return -1; - } - return ncid; -} - - -int -ncopen(const char *path, int mode) -{ - int ncid; - const int status = nc_open(path, mode, &ncid); - if(status != NC_NOERR) - { - nc_advise("ncopen", status, "filename \"%s\"", path); - return -1; - } - return ncid; -} - - -int -ncredef(int ncid) -{ - const int status = nc_redef(ncid); - if(status != NC_NOERR) - { - nc_advise("ncredef", status, "ncid %d", ncid); - return -1; - } - return 0; -} - - -int -ncendef(int ncid) -{ - const int status = nc_enddef(ncid); - if(status != NC_NOERR) - { - nc_advise("ncendef", status, "ncid %d", ncid); - return -1; - } - return 0; -} - - -int -ncclose(int ncid) -{ - const int status = nc_close(ncid); - if(status != NC_NOERR) - { - nc_advise("ncclose", status, "ncid %d", ncid); - return -1; - - } - return 0; -} - - -int -ncinquire( - int ncid, - int* ndims, - int* nvars, - int* natts, - int* recdim -) -{ - int nd, nv, na; - const int status = nc_inq(ncid, &nd, &nv, &na, recdim); - - if(status != NC_NOERR) - { - nc_advise("ncinquire", status, "ncid %d", ncid); - return -1; - } - /* else */ - - if(ndims != NULL) - *ndims = (int) nd; - - if(nvars != NULL) - *nvars = (int) nv; - - if(natts != NULL) - *natts = (int) na; - - return ncid; -} - - -int -ncsync(int ncid) -{ - const int status = nc_sync(ncid); - if(status != NC_NOERR) - { - nc_advise("ncsync", status, "ncid %d", ncid); - return -1; - - } - return 0; -} - - -int -ncabort(int ncid) -{ - const int status = nc_abort(ncid); - if(status != NC_NOERR) - { - nc_advise("ncabort", status, "ncid %d", ncid); - return -1; - } - return 0; -} - - -int -ncdimdef( - int ncid, - const char* name, - long length -) -{ - int dimid; - int status = NC_NOERR; - if(length < 0) { - status = NC_EDIMSIZE; - nc_advise("ncdimdef", status, "ncid %d", ncid); - return -1; - } - status = nc_def_dim(ncid, name, (size_t)length, &dimid); - if(status != NC_NOERR) - { - nc_advise("ncdimdef", status, "ncid %d", ncid); - return -1; - } - return dimid; -} - - -int -ncdimid(int ncid, const char* name) -{ - int dimid; - const int status = nc_inq_dimid(ncid, name, &dimid); - if(status != NC_NOERR) - { - nc_advise("ncdimid", status, "ncid %d", ncid); - return -1; - } - return dimid; -} - - -int -ncdiminq( - int ncid, - int dimid, - char* name, - long* length -) -{ - size_t ll; - const int status = nc_inq_dim(ncid, dimid, name, &ll); - - if(status != NC_NOERR) - { - nc_advise("ncdiminq", status, "ncid %d", ncid); - return -1; - } - /* else */ - - if(length != NULL) - *length = (int) ll; - - return dimid; -} - - -int -ncdimrename( - int ncid, - int dimid, - const char* name -) -{ - const int status = nc_rename_dim(ncid, dimid, name); - if(status != NC_NOERR) - { - nc_advise("ncdimrename", status, "ncid %d", ncid); - return -1; - } - return dimid; -} - - -int -ncvardef( - int ncid, - const char* name, - nc_type datatype, - int ndims, - const int* dim -) -{ - int varid = -1; - const int status = nc_def_var(ncid, name, datatype, ndims, dim, &varid); - if(status != NC_NOERR) - { - nc_advise("ncvardef", status, "ncid %d", ncid); - return -1; - } - return varid; -} - - -int -ncvarid( - int ncid, - const char* name -) -{ - int varid = -1; - const int status = nc_inq_varid(ncid, name, &varid); - if(status != NC_NOERR) - { - nc_advise("ncvarid", status, "ncid %d", ncid); - return -1; - } - return varid; -} - - -int -ncvarinq( - int ncid, - int varid, - char* name, - nc_type* datatype, - int* ndims, - int* dim, - int* natts -) -{ - int nd, na; - const int status = nc_inq_var(ncid, varid, name, datatype, - &nd, dim, &na); - - if(status != NC_NOERR) - { - nc_advise("ncvarinq", status, "ncid %d", ncid); - return -1; - } - /* else */ - - if(ndims != NULL) - *ndims = (int) nd; - - if(natts != NULL) - *natts = (int) na; - - return varid; -} - - -int -ncvarput1( - int ncid, - int varid, - const long* index, - const void* value -) -{ - NDIMS_DECL - A_DECL(coordp, size_t, (size_t)ndims, index); - A_INIT(coordp, size_t, (size_t)ndims, index); - { - const int status = nc_put_var1(ncid, varid, coordp, value); - A_FREE(coordp); - if(status != NC_NOERR) - { - nc_advise("ncvarput1", status, "ncid %d", ncid); - return -1; - } - } - return 0; -} - - -int -ncvarget1( - int ncid, - int varid, - const long* index, - void* value -) -{ - NDIMS_DECL - A_DECL(coordp, size_t, ndims, index); - A_INIT(coordp, size_t, ndims, index); - { - const int status = nc_get_var1(ncid, varid, coordp, value); - A_FREE(coordp); - if(status != NC_NOERR) - { - nc_advise("ncdimid", status, "ncid %d", ncid); - return -1; - } - } - return 0; -} - - -int -ncvarput( - int ncid, - int varid, - const long* start, - const long* count, - const void* value -) -{ - NDIMS_DECL - A_DECL(stp, size_t, ndims, start); - A_DECL(cntp, size_t, ndims, count); - A_INIT(stp, size_t, ndims, start); - A_INIT(cntp, size_t, ndims, count); - { - const int status = nc_put_vara(ncid, varid, stp, cntp, value); - A_FREE(cntp); - A_FREE(stp); - if(status != NC_NOERR) - { - nc_advise("ncvarput", status, "ncid %d", ncid); - return -1; - } - } - return 0; -} - - -int -ncvarget( - int ncid, - int varid, - const long* start, - const long* count, - void* value -) -{ - NDIMS_DECL - A_DECL(stp, size_t, ndims, start); - A_DECL(cntp, size_t, ndims, count); - A_INIT(stp, size_t, ndims, start); - A_INIT(cntp, size_t, ndims, count); - { - const int status = nc_get_vara(ncid, varid, stp, cntp, value); - A_FREE(cntp); - A_FREE(stp); - if(status != NC_NOERR) - { - nc_advise("ncvarget", status, "ncid %d; varid %d", ncid, varid); - return -1; - } - } - return 0; -} - - -int -ncvarputs( - int ncid, - int varid, - const long* start, - const long* count, - const long* stride, - const void* value -) -{ - if(stride == NULL) - return ncvarput(ncid, varid, start, count, value); - /* else */ - { - - NDIMS_DECL - A_DECL(stp, size_t, ndims, start); - A_DECL(cntp, size_t, ndims, count); - A_DECL(strdp, ptrdiff_t, ndims, stride); - A_INIT(stp, size_t, ndims, start); - A_INIT(cntp, size_t, ndims, count); - A_INIT(strdp, ptrdiff_t, ndims, stride); - { - const int status = nc_put_vars(ncid, varid, stp, cntp, strdp, value); - A_FREE(strdp); - A_FREE(cntp); - A_FREE(stp); - if(status != NC_NOERR) - { - nc_advise("ncvarputs", status, "ncid %d", ncid); - return -1; - } - } - return 0; - } -} - - -int -ncvargets( - int ncid, - int varid, - const long* start, - const long* count, - const long* stride, - void* value -) -{ - if(stride == NULL) - return ncvarget(ncid, varid, start, count, value); - /* else */ - { - NDIMS_DECL - A_DECL(stp, size_t, ndims, start); - A_DECL(cntp, size_t, ndims, count); - A_DECL(strdp, ptrdiff_t, ndims, stride); - A_INIT(stp, size_t, ndims, start); - A_INIT(cntp, size_t, ndims, count); - A_INIT(strdp, ptrdiff_t, ndims, stride); - { - const int status = nc_get_vars(ncid, varid, stp, cntp, strdp, value); - A_FREE(strdp); - A_FREE(cntp); - A_FREE(stp); - if(status != NC_NOERR) - { - nc_advise("ncvargets", status, "ncid %d", ncid); - return -1; - } - } - return 0; - } -} - - -int -ncvarputg( - int ncid, - int varid, - const long* start, - const long* count, - const long* stride, - const long* map, - const void* value -) -{ - int ndims = 0; - if(map == NULL) - return ncvarputs(ncid, varid, start, count, stride, value); - /* else */ - { - ptrdiff_t *imp=NULL; - if (map != NULL) { - int ret = NC_NOERR; - /* make map[ndims-1] number of elements instead of bytes */ - int i, el_size; - nc_type type; - ret = nc_inq_varndims(ncid, varid, &ndims); - if(ret) return ret; - ret = nc_inq_vartype(ncid, varid, &type); - if(ret) return ret; - el_size = nctypelen(type); - imp = (ptrdiff_t*) malloc(ndims * sizeof(ptrdiff_t)); - for (i=0; i -TypeC defineBits -byteNC_BYTE8 -charNC_CHAR8 -shortNC_SHORT16 -intNC_INT32 -floatNC_FLOAT32 -doubleNC_DOUBLE64 - - -The first column gives the netCDF external data type, which is the -same as the CDL data type. The next column gives the corresponding C -pre-processor macro for use in netCDF functions (the pre-processor -macros are defined in the netCDF C header-file netcdf.h). The last -column gives the number of bits used in the external representation of -values of the corresponding type. - -\section netcdf_4_atomic NetCDF-4 Atomic Types - -NetCDF-4 files support all of the atomic data types from netCDF-3, -plus additional unsigned integer types, 64-bit integer types, and a -string type. - - - - - - - - - - - - - - -
TypeC defineBits - -
byteNC_BYTE8
unsigned byte NC_UBYTE^ 8
char NC_CHAR 8
short NC_SHORT 16
unsigned short NC_USHORT^ 16
int NC_INT 32
unsigned int NC_UINT^ 32
unsigned long long NC_UINT64^ 64
long long NC_INT64^ 64
float NC_FLOAT 32
double NC_DOUBLE 64
char ** NC_STRING^ string length + 1
- -^This type was introduced in netCDF-4, and is not supported in netCDF -classic or 64-bit offset format files, or in netCDF-4 files if they -are created with the NC_CLASSIC_MODEL flags. - */ - -/** \name Defining Variables - -Use these functions to define variables. - */ -/*! \{ */ - -/** -\ingroup variables -Define a new variable. - -This function adds a new variable to an open netCDF dataset or group. -It returns (as an argument) a variable ID, given the netCDF ID, -the variable name, the variable type, the number of dimensions, and a -list of the dimension IDs. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param name Variable \ref object_name. - -\param xtype \ref data_type of the variable. - -\param ndims Number of dimensions for the variable. For example, 2 -specifies a matrix, 1 specifies a vector, and 0 means the variable is -a scalar with no dimensions. Must not be negative or greater than the -predefined constant ::NC_MAX_VAR_DIMS. - -\param dimidsp Vector of ndims dimension IDs corresponding to the -variable dimensions. For classic model netCDF files, if the ID of the -unlimited dimension is included, it must be first. This argument is -ignored if ndims is 0. For expanded model netCDF4/HDF5 files, there -may be any number of unlimited dimensions, and they may be used in any -element of the dimids array. - -\param varidp Pointer to location for the returned variable ID. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTINDEFINE Not in define mode. -\returns ::NC_ESTRICTNC3 Attempting netcdf-4 operation on strict nc3 netcdf-4 file. -\returns ::NC_EMAXVARS NC_MAX_VARS exceeded -\returns ::NC_EBADTYPE Bad type. -\returns ::NC_EINVAL Invalid input. -\returns ::NC_ENAMEINUSE Name already in use. -\returns ::NC_EPERM Attempt to create object in read-only file. - -\section nc_def_var_example Example - -Here is an example using nc_def_var to create a variable named rh of -type double with three dimensions, time, lat, and lon in a new netCDF -dataset named foo.nc: - -\code - #include - ... - int status; - int ncid; - int lat_dim, lon_dim, time_dim; - int rh_id; - int rh_dimids[3]; - ... - status = nc_create("foo.nc", NC_NOCLOBBER, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - - status = nc_def_dim(ncid, "lat", 5L, &lat_dim); - if (status != NC_NOERR) handle_error(status); - status = nc_def_dim(ncid, "lon", 10L, &lon_dim); - if (status != NC_NOERR) handle_error(status); - status = nc_def_dim(ncid, "time", NC_UNLIMITED, &time_dim); - if (status != NC_NOERR) handle_error(status); - ... - - rh_dimids[0] = time_dim; - rh_dimids[1] = lat_dim; - rh_dimids[2] = lon_dim; - status = nc_def_var (ncid, "rh", NC_DOUBLE, 3, rh_dimids, &rh_id); - if (status != NC_NOERR) handle_error(status); -\endcode - - */ -int -nc_def_var(int ncid, const char *name, nc_type xtype, - int ndims, const int *dimidsp, int *varidp) -{ - NC* ncp; - int stat = NC_NOERR; - - if ((stat = NC_check_id(ncid, &ncp))) - return stat; - TRACE(nc_def_var); - return ncp->dispatch->def_var(ncid, name, xtype, ndims, - dimidsp, varidp); -} -/*! \} */ - -/** \name Rename a Variable - -Rename a variable. - */ -/*! \{ */ - -/** Rename a variable. -\ingroup variables - -This function changes the name of a netCDF variable in an open netCDF -file or group. You cannot rename a variable to have the name of any existing -variable. - -For classic format, 64-bit offset format, and netCDF-4/HDF5 with -classic mode, if the new name is longer than the old name, the netCDF -dataset must be in define mode. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param name New name of the variable. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -\returns ::NC_EBADNAME Bad name. -\returns ::NC_EMAXNAME Name is too long. -\returns ::NC_ENAMEINUSE Name in use. -\returns ::NC_ENOMEM Out of memory. - -\section nc_rename_var_example Example - -Here is an example using nc_rename_var to rename the variable rh to -rel_hum in an existing netCDF dataset named foo.nc: - -\code - #include - ... - int status; - int ncid; - int rh_id; - ... - status = nc_open("foo.nc", NC_WRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_redef(ncid); - if (status != NC_NOERR) handle_error(status); - status = nc_inq_varid (ncid, "rh", &rh_id); - if (status != NC_NOERR) handle_error(status); - status = nc_rename_var (ncid, rh_id, "rel_hum"); - if (status != NC_NOERR) handle_error(status); - status = nc_enddef(ncid); - if (status != NC_NOERR) handle_error(status); -\endcode - -*/ -int -nc_rename_var(int ncid, int varid, const char *name) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_rename_var); - return ncp->dispatch->rename_var(ncid, varid, name); -} -/*! \} */ - -/** \internal -\ingroup variables - */ -int -NC_is_recvar(int ncid, int varid, size_t* nrecs) -{ - int status = NC_NOERR; - int unlimid; - int ndims; - int dimset[NC_MAX_VAR_DIMS]; - - status = nc_inq_unlimdim(ncid,&unlimid); - if(status != NC_NOERR) return 0; /* no unlimited defined */ - status = nc_inq_varndims(ncid,varid,&ndims); - if(status != NC_NOERR) return 0; /* no unlimited defined */ - if(ndims == 0) return 0; /* scalar */ - status = nc_inq_vardimid(ncid,varid,dimset); - if(status != NC_NOERR) return 0; /* no unlimited defined */ - status = nc_inq_dim(ncid,dimset[0],NULL,nrecs); - if(status != NC_NOERR) return 0; - return (dimset[0] == unlimid ? 1: 0); -} - -/** \internal -\ingroup variables -Get the number of record dimensions for a variable and an array that -identifies which of a variable's dimensions are record dimensions. -Intended to be used instead of NC_is_recvar, which doesn't work for -netCDF-4 variables which have multiple unlimited dimensions or an -unlimited dimension that is not the first of a variable's dimensions. -Example use: -\code -int nrecdims; -int is_recdim[NC_MAX_VAR_DIMS]; - ... -status = NC_inq_recvar(ncid,varid,&nrecdims,is_recdim); -isrecvar = (nrecdims > 0); -\endcode - */ -int -NC_inq_recvar(int ncid, int varid, int* nrecdimsp, int *is_recdim) -{ - int status = NC_NOERR; - int unlimid; - int nvardims; - int dimset[NC_MAX_VAR_DIMS]; - int dim; - int nrecdims = 0; - - status = nc_inq_varndims(ncid,varid,&nvardims); - if(status != NC_NOERR) return status; - if(nvardims == 0) return NC_NOERR; /* scalars have no dims */ - for(dim = 0; dim < nvardims; dim++) - is_recdim[dim] = 0; - status = nc_inq_unlimdim(ncid, &unlimid); - if(status != NC_NOERR) return status; - if(unlimid == -1) return status; /* no unlimited dims for any variables */ -#ifdef USE_NETCDF4 - { - int nunlimdims; - int *unlimids; - int recdim; - status = nc_inq_unlimdims(ncid, &nunlimdims, NULL); /* for group or file, not variable */ - if(status != NC_NOERR) return status; - if(nunlimdims == 0) return status; - - if (!(unlimids = malloc(nunlimdims * sizeof(int)))) - return NC_ENOMEM; - status = nc_inq_unlimdims(ncid, &nunlimdims, unlimids); /* for group or file, not variable */ - if(status != NC_NOERR) { - free(unlimids); - return status; - } - status = nc_inq_vardimid(ncid, varid, dimset); - if(status != NC_NOERR) { - free(unlimids); - return status; - } - for (dim = 0; dim < nvardims; dim++) { /* netCDF-4 rec dims need not be first dim for a rec var */ - for(recdim = 0; recdim < nunlimdims; recdim++) { - if(dimset[dim] == unlimids[recdim]) { - is_recdim[dim] = 1; - nrecdims++; - } - } - } - free(unlimids); - } -#else - status = nc_inq_vardimid(ncid, varid, dimset); - if(status != NC_NOERR) return status; - if(dimset[0] == unlimid) { - is_recdim[0] = 1; - nrecdims++; - } -#endif /* USE_NETCDF4 */ - if(nrecdimsp) *nrecdimsp = nrecdims; - return status; -} - -/* Ok to use NC pointers because - all IOSP's will use that structure, - but not ok to use e.g. NC_Var pointers - because they may be different structure - entirely. -*/ - -/** \internal -\ingroup variables -Find the length of a type. This is how much space is required by the user, as in -\code -vals = malloc(nel * nctypelen(var.type)); -ncvarget(cdfid, varid, cor, edg, vals); -\endcode - */ -int -nctypelen(nc_type type) -{ - switch(type){ - case NC_CHAR : - return ((int)sizeof(char)); - case NC_BYTE : - return ((int)sizeof(signed char)); - case NC_SHORT : - return ((int)sizeof(short)); - case NC_INT : - return ((int)sizeof(int)); - case NC_FLOAT : - return ((int)sizeof(float)); - case NC_DOUBLE : - return ((int)sizeof(double)); - - /* These can occur in netcdf-3 code */ - case NC_UBYTE : - return ((int)sizeof(unsigned char)); - case NC_USHORT : - return ((int)(sizeof(unsigned short))); - case NC_UINT : - return ((int)sizeof(unsigned int)); - case NC_INT64 : - return ((int)sizeof(signed long long)); - case NC_UINT64 : - return ((int)sizeof(unsigned long long)); -#ifdef USE_NETCDF4 - case NC_STRING : - return ((int)sizeof(char*)); -#endif /*USE_NETCDF4*/ - - default: - return -1; - } -} - -/** \internal -\ingroup variables -Find the length of a type. Redunant over nctypelen() above. */ -size_t -NC_atomictypelen(nc_type xtype) -{ - size_t sz = 0; - switch(xtype) { - case NC_NAT: sz = 0; break; - case NC_BYTE: sz = sizeof(signed char); break; - case NC_CHAR: sz = sizeof(char); break; - case NC_SHORT: sz = sizeof(short); break; - case NC_INT: sz = sizeof(int); break; - case NC_FLOAT: sz = sizeof(float); break; - case NC_DOUBLE: sz = sizeof(double); break; - case NC_INT64: sz = sizeof(signed long long); break; - case NC_UBYTE: sz = sizeof(unsigned char); break; - case NC_USHORT: sz = sizeof(unsigned short); break; - case NC_UINT: sz = sizeof(unsigned int); break; - case NC_UINT64: sz = sizeof(unsigned long long); break; -#ifdef USE_NETCDF4 - case NC_STRING: sz = sizeof(char*); break; -#endif - default: break; - } - return sz; -} - -/** \internal -\ingroup variables - Get the type name. */ -char * -NC_atomictypename(nc_type xtype) -{ - char* nm = NULL; - switch(xtype) { - case NC_NAT: nm = "undefined"; break; - case NC_BYTE: nm = "byte"; break; - case NC_CHAR: nm = "char"; break; - case NC_SHORT: nm = "short"; break; - case NC_INT: nm = "int"; break; - case NC_FLOAT: nm = "float"; break; - case NC_DOUBLE: nm = "double"; break; - case NC_INT64: nm = "int64"; break; - case NC_UBYTE: nm = "ubyte"; break; - case NC_USHORT: nm = "ushort"; break; - case NC_UINT: nm = "uint"; break; - case NC_UINT64: nm = "uint64"; break; -#ifdef USE_NETCDF4 - case NC_STRING: nm = "string"; break; -#endif - default: break; - } - return nm; -} - -/** \internal -\ingroup variables -Get the shape of a variable. - */ -int -NC_getshape(int ncid, int varid, int ndims, size_t* shape) -{ - int dimids[NC_MAX_VAR_DIMS]; - int i; - int status = NC_NOERR; - - if ((status = nc_inq_vardimid(ncid, varid, dimids))) - return status; - for(i = 0; i < ndims; i++) - if ((status = nc_inq_dimlen(ncid, dimids[i], &shape[i]))) - break; - - return status; -} - -#ifdef USE_NETCDF4 -/** \ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param size The total size of the raw data chunk cache, in bytes. - -\param nelems The number of chunk slots in the raw data chunk cache. - -\param preemption The preemption, a value between 0 and 1 inclusive -that indicates how much chunks that have been fully read are favored -for preemption. A value of zero means fully read chunks are treated no -differently than other chunks (the preemption is strictly LRU) while a -value of one means fully read chunks are always preempted before other -chunks. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -\returns ::NC_ESTRICTNC3 Attempting netcdf-4 operation on strict nc3 netcdf-4 file. -\returns ::NC_EINVAL Invalid input - */ -int -nc_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, - float preemption) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->set_var_chunk_cache(ncid, varid, size, - nelems, preemption); -} - -/** \ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param sizep The total size of the raw data chunk cache, in bytes, -will be put here. \ref ignored_if_null. - -\param nelemsp The number of chunk slots in the raw data chunk cache -hash table will be put here. \ref ignored_if_null. - -\param preemptionp The preemption will be put here. The preemtion -value is between 0 and 1 inclusive and indicates how much chunks that -have been fully read are favored for preemption. A value of zero means -fully read chunks are treated no differently than other chunks (the -preemption is strictly LRU) while a value of one means fully read -chunks are always preempted before other chunks. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -\returns ::NC_ESTRICTNC3 Attempting netcdf-4 operation on strict nc3 netcdf-4 file. -\returns ::NC_EINVAL Invalid input -*/ -int -nc_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp, - float *preemptionp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->get_var_chunk_cache(ncid, varid, sizep, - nelemsp, preemptionp); -} - -/** \ingroup variables -Free string space allocated by the library. - -When you read string type the library will allocate the storage space -for the data. This storage space must be freed, so pass the pointer -back to this function, when you're done with the data, and it will -free the string memory. - -\param len The number of character arrays in the array. -\param data The pointer to the data array. - -\returns ::NC_NOERR No error. -*/ -int -nc_free_string(size_t len, char **data) -{ - int i; - for (i = 0; i < len; i++) - free(data[i]); - return NC_NOERR; -} - -int -nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, int deflate_level) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->def_var_deflate(ncid,varid,shuffle,deflate,deflate_level); -} - -int -nc_def_var_fletcher32(int ncid, int varid, int fletcher32) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->def_var_fletcher32(ncid,varid,fletcher32); -} - -/*! Define chunking parameters for a variable - -\ingroup variables - -The function nc_def_var_chunking sets the chunking parameters for a variable in a netCDF-4 file. It can set the chunk sizes to get chunked storage, or it can set the contiguous flag to get contiguous storage. - -The total size of a chunk must be less than 4 GiB. That is, the product of all chunksizes and the size of the data (or the size of nc_vlen_t for VLEN types) must be less than 4 GiB. - -This function may only be called after the variable is defined, but before nc_enddef is called. Once the chunking parameters are set for a variable, they cannot be changed. - -Note that this does not work for scalar variables. Only non-scalar variables can have chunking. - - - -@param[in] ncid NetCDF ID, from a previous call to nc_open or nc_create. -@param[in] varid Variable ID. -@param[in] storage If ::NC_CONTIGUOUS, then 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. If ::NC_CHUNKED, then chunked storage is used for this variable. Chunk sizes may be specified with the chunksizes parameter or default sizes will be used if that parameter is NULL. -@param[in] chunksizesp A pointer to an array list of chunk sizes. The array must have one chunksize for each dimension of the variable. If ::NC_CONTIGUOUS storage is set, then the chunksizes parameter is ignored. - -@returns ::NC_NOERR No error. -@returns ::NC_EBADID Bad ID. -@returns ::NC_ENOTNC4 Not a netCDF-4 file. -@returns ::NC_ELATEDEF This variable has already been the subject of a nc_enddef call. In netCDF-4 files nc_enddef will be called automatically for any data read or write. Once nc_enddef has been called after the nc_def_var call for a variable, it is impossible to set the chunking for that variable. -@returns ::NC_ENOTINDEFINE Not in define mode. This is returned for netCDF classic or 64-bit offset files, or for netCDF-4 files, when they wwere created with NC_STRICT_NC3 flag. See \ref nc_create. -@returns ::NC_EPERM Attempt to create object in read-only file. -@returns ::NC_EBADCHUNK Retunrs if the chunk size specified for a variable is larger than the length of the dimensions associated with variable. - -\section nc_def_var_chunking_example Example - -In this example from libsrc4/tst_vars2.c, chunksizes are set with nc_var_def_chunking, and checked with nc_var_inq_chunking. - -\code - printf("**** testing chunking..."); - { - #define NDIMS5 1 - #define DIM5_NAME "D5" - #define VAR_NAME5 "V5" - #define DIM5_LEN 1000 - - int dimids[NDIMS5], dimids_in[NDIMS5]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - int data[DIM5_LEN], data_in[DIM5_LEN]; - size_t chunksize[NDIMS5] = {5}; - size_t chunksize_in[NDIMS5]; - int storage_in; - int i, d; - - for (i = 0; i < DIM5_LEN; i++) - data[i] = i; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM5_NAME, DIM5_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME5, NC_INT, NDIMS5, dimids, &varid)) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CHUNKED, chunksize)) ERR; - if (nc_put_var_int(ncid, varid, data)) ERR; - - if (nc_inq_var_chunking(ncid, varid, &storage_in, chunksize_in)) ERR; - for (d = 0; d < NDIMS5; d++) - if (chunksize[d] != chunksize_in[d]) ERR; - if (storage_in != NC_CHUNKED) ERR; -\endcode - -*/ -int -nc_def_var_chunking(int ncid, int varid, int storage, - const size_t *chunksizesp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->def_var_chunking(ncid, varid, storage, - chunksizesp); -} - -int -nc_def_var_fill(int ncid, int varid, int no_fill, const void *fill_value) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->def_var_fill(ncid,varid,no_fill,fill_value); -} - -int -nc_def_var_endian(int ncid, int varid, int endian) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->def_var_endian(ncid,varid,endian); -} - -#endif /* USE_NETCDF4 */ diff --git a/contrib/netcdf/4.4.1.1/libdispatch/dvarinq.c b/contrib/netcdf/4.4.1.1/libdispatch/dvarinq.c deleted file mode 100644 index 369ca7bac54..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/dvarinq.c +++ /dev/null @@ -1,664 +0,0 @@ -/*! \file -Functions for inquiring about variables. - -Copyright 2010 University Corporation for Atmospheric -Research/Unidata. See COPYRIGHT file for more info. -*/ - -#include "ncdispatch.h" - -/** \name Learning about Variables - -Functions to learn about the variables in a file. */ -/*! \{ */ /* All these functions are part of this named group... */ - -/** -\ingroup variables -Find the ID of a variable, from the name. - -The function nc_inq_varid returns the ID of a netCDF variable, given -its name. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param name Name of the variable. - -\param varidp Pointer to location for returned variable ID. \ref -ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. - -\section nc_inq_varid_example4 Example - -Here is an example using nc_inq_varid to find out the ID of a variable -named rh in an existing netCDF dataset named foo.nc: - -\code - #include - ... - int status, ncid, rh_id; - ... - status = nc_open("foo.nc", NC_NOWRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_inq_varid (ncid, "rh", &rh_id); - if (status != NC_NOERR) handle_error(status); -\endcode - */ -int -nc_inq_varid(int ncid, const char *name, int *varidp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_varid(ncid, name, varidp); -} - -/** -\ingroup variables -Learn about a variable. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param name Returned \ref object_name of variable. \ref -ignored_if_null. - -\param xtypep Pointer where typeid will be stored. \ref ignored_if_null. - -\param ndimsp Pointer where number of dimensions will be -stored. \ref ignored_if_null. - -\param dimidsp Pointer where array of dimension IDs will be -stored. \ref ignored_if_null. - -\param nattsp Pointer where number of attributes will be -stored. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - -\section nc_inq_var_example5 Example - -Here is an example using nc_inq_var() to find out about a variable named -rh in an existing netCDF dataset named foo.nc: - -\code - #include - ... - int status - int ncid; - int rh_id; - nc_type rh_type; - int rh_ndims; - int rh_dimids[NC_MAX_VAR_DIMS]; - int rh_natts - ... - status = nc_open ("foo.nc", NC_NOWRITE, &ncid); - if (status != NC_NOERR) handle_error(status); - ... - status = nc_inq_varid (ncid, "rh", &rh_id); - if (status != NC_NOERR) handle_error(status); - status = nc_inq_var (ncid, rh_id, 0, &rh_type, &rh_ndims, rh_dimids, - &rh_natts); - if (status != NC_NOERR) handle_error(status); -\endcode - - */ -int -nc_inq_var(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp) -{ - NC* ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var); - return ncp->dispatch->inq_var_all(ncid, varid, name, xtypep, ndimsp, - dimidsp, nattsp, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); -} - -/** -\ingroup variables -Learn the name of a variable. - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param name Returned variable name. The caller must allocate space for -the returned name. The maximum length is ::NC_MAX_NAME. Ignored if -NULL. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - */ -int -nc_inq_varname(int ncid, int varid, char *name) -{ - return nc_inq_var(ncid, varid, name, NULL, NULL, - NULL, NULL); -} - -/** Learn the type of a variable. -\ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param typep Pointer where typeid will be stored. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - */ -int -nc_inq_vartype(int ncid, int varid, nc_type *typep) -{ - return nc_inq_var(ncid, varid, NULL, typep, NULL, - NULL, NULL); -} - -/** Learn how many dimensions are associated with a variable. -\ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param ndimsp Pointer where number of dimensions will be -stored. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - */ -int -nc_inq_varndims(int ncid, int varid, int *ndimsp) -{ - return nc_inq_var(ncid, varid, NULL, NULL, ndimsp, NULL, NULL); -} - -/** Learn the dimension IDs associated with a variable. -\ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param dimidsp Pointer where array of dimension IDs will be -stored. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - */ -int -nc_inq_vardimid(int ncid, int varid, int *dimidsp) -{ - return nc_inq_var(ncid, varid, NULL, NULL, NULL, - dimidsp, NULL); -} - -/** Learn how many attributes are associated with a variable. -\ingroup variables - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param nattsp Pointer where number of attributes will be -stored. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. - */ -int -nc_inq_varnatts(int ncid, int varid, int *nattsp) -{ - if (varid == NC_GLOBAL) - return nc_inq_natts(ncid,nattsp); - /*else*/ - return nc_inq_var(ncid, varid, NULL, NULL, NULL, NULL, - nattsp); -} - -#ifdef USE_NETCDF4 -/** \ingroup variables -Learn the storage and deflate settings for a variable. - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param shufflep A 1 will be written here if the shuffle filter is -turned on for this variable, and a 0 otherwise. \ref ignored_if_null. - -\param deflatep If this pointer is non-NULL, the nc_inq_var_deflate -function will write a 1 if the deflate filter is turned on for this -variable, and a 0 otherwise. \ref ignored_if_null. - -\param deflate_levelp If the deflate filter is in use for this -variable, the deflate_level will be writen here. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_ENOTNC4 Not a netCDF-4 file. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -*/ -int -nc_inq_var_deflate(int ncid, int varid, int *shufflep, int *deflatep, - int *deflate_levelp) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_deflate); - return ncp->dispatch->inq_var_all( - ncid, varid, - NULL, /*name*/ - NULL, /*xtypep*/ - NULL, /*ndimsp*/ - NULL, /*dimidsp*/ - NULL, /*nattsp*/ - shufflep, /*shufflep*/ - deflatep, /*deflatep*/ - deflate_levelp, /*deflatelevelp*/ - NULL, /*fletcher32p*/ - NULL, /*contiguousp*/ - NULL, /*chunksizep*/ - NULL, /*nofillp*/ - NULL, /*fillvaluep*/ - NULL, /*endianp*/ - NULL, /*optionsmaskp*/ - NULL /*pixelsp*/ - ); -} - -/** \ingroup variables -Learn the szip settings of a variable. - -This function returns the szip settings for a variable. NetCDF does -not allow variables to be created with szip (due to license problems -with the szip library), but we do enable read-only access of HDF5 -files with szip compression. - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param options_maskp The szip options mask will be copied to this -pointer. \ref ignored_if_null. - -\param pixels_per_blockp The szip pixels per block will be copied -here. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTNC4 Not a netCDF-4 file. -\returns ::NC_ENOTVAR Invalid variable ID. -*/ -int -nc_inq_var_szip(int ncid, int varid, int *options_maskp, int *pixels_per_blockp) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_szip); - return ncp->dispatch->inq_var_all( - ncid, varid, - NULL, /*name*/ - NULL, /*xtypep*/ - NULL, /*ndimsp*/ - NULL, /*dimidsp*/ - NULL, /*nattsp*/ - NULL, /*shufflep*/ - NULL, /*deflatep*/ - NULL, /*deflatelevelp*/ - NULL, /*fletcher32p*/ - NULL, /*contiguousp*/ - NULL, /*chunksizep*/ - NULL, /*nofillp*/ - NULL, /*fillvaluep*/ - NULL, /*endianp*/ - options_maskp, /*optionsmaskp*/ - pixels_per_blockp /*pixelsp*/ - ); -} - -/** \ingroup variables -Learn the checksum settings for a variable. - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param fletcher32p Will be set to ::NC_FLETCHER32 if the fletcher32 -checksum filter is turned on for this variable, and ::NC_NOCHECKSUM if -it is not. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTNC4 Not a netCDF-4 file. -\returns ::NC_ENOTVAR Invalid variable ID. -*/ -int -nc_inq_var_fletcher32(int ncid, int varid, int *fletcher32p) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_fletcher32); - return ncp->dispatch->inq_var_all( - ncid, varid, - NULL, /*name*/ - NULL, /*xtypep*/ - NULL, /*ndimsp*/ - NULL, /*dimidsp*/ - NULL, /*nattsp*/ - NULL, /*shufflep*/ - NULL, /*deflatep*/ - NULL, /*deflatelevelp*/ - fletcher32p, /*fletcher32p*/ - NULL, /*contiguousp*/ - NULL, /*chunksizep*/ - NULL, /*nofillp*/ - NULL, /*fillvaluep*/ - NULL, /*endianp*/ - NULL, /*optionsmaskp*/ - NULL /*pixelsp*/ - ); -} - -/** \ingroup variables - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param storagep Address of returned storage property, returned as -::NC_CONTIGUOUS if this variable uses contiguous storage, or -::NC_CHUNKED if it uses chunked storage. \ref ignored_if_null. - -\param chunksizesp The chunksizes will be copied here. \ref -ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTNC4 Not a netCDF-4 file. -\returns ::NC_ENOTVAR Invalid variable ID. - - -\section nc_inq_var_chunking_example Example - -\code - printf("**** testing contiguous storage..."); - { - #define NDIMS6 1 - #define DIM6_NAME "D5" - #define VAR_NAME6 "V5" - #define DIM6_LEN 100 - - int dimids[NDIMS6], dimids_in[NDIMS6]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - int data[DIM6_LEN], data_in[DIM6_LEN]; - size_t chunksize_in[NDIMS6]; - int storage_in; - int i, d; - - for (i = 0; i < DIM6_LEN; i++) - data[i] = i; - - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM6_NAME, DIM6_LEN, &dimids[0])) ERR; - if (dimids[0] != 0) ERR; - if (nc_def_var(ncid, VAR_NAME6, NC_INT, NDIMS6, dimids, &varid)) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CONTIGUOUS, NULL)) ERR; - if (nc_put_var_int(ncid, varid, data)) ERR; - - - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CONTIGUOUS) ERR; -\endcode - -*/ -int -nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp) -{ - NC *ncp; - int stat = NC_check_id(ncid, &ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_chunking); - return ncp->dispatch->inq_var_all(ncid, varid, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, storagep, - chunksizesp, NULL, NULL, NULL, NULL, NULL); -} - -/** \ingroup variables -Learn the fill mode of a variable. - -The fill mode of a variable is set by nc_def_var_fill(). - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param no_fill Pointer to an integer which will get a 1 if no_fill -mode is set for this variable. \ref ignored_if_null. - -\param fill_valuep A pointer which will get the fill value for this -variable. \ref ignored_if_null. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -*/ -int -nc_inq_var_fill(int ncid, int varid, int *no_fill, void *fill_valuep) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_fill); - return ncp->dispatch->inq_var_all( - ncid, varid, - NULL, /*name*/ - NULL, /*xtypep*/ - NULL, /*ndimsp*/ - NULL, /*dimidsp*/ - NULL, /*nattsp*/ - NULL, /*shufflep*/ - NULL, /*deflatep*/ - NULL, /*deflatelevelp*/ - NULL, /*fletcher32p*/ - NULL, /*contiguousp*/ - NULL, /*chunksizep*/ - no_fill, /*nofillp*/ - fill_valuep, /*fillvaluep*/ - NULL, /*endianp*/ - NULL, /*optionsmaskp*/ - NULL /*pixelsp*/ - ); -} - -/** \ingroup variables -Find the endianness of a variable. - -This is a wrapper for nc_inq_var_all(). - -\param ncid NetCDF or group ID, from a previous call to nc_open(), -nc_create(), nc_def_grp(), or associated inquiry functions such as -nc_inq_ncid(). - -\param varid Variable ID - -\param endianp Storage which will get ::NC_ENDIAN_LITTLE if this -variable is stored in little-endian format, ::NC_ENDIAN_BIG if it is -stored in big-endian format, and ::NC_ENDIAN_NATIVE if the endianness -is not set, and the variable is not created yet. - -\returns ::NC_NOERR No error. -\returns ::NC_ENOTNC4 Not a netCDF-4 file. -\returns ::NC_EBADID Bad ncid. -\returns ::NC_ENOTVAR Invalid variable ID. -*/ -int -nc_inq_var_endian(int ncid, int varid, int *endianp) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_var_endian); - return ncp->dispatch->inq_var_all( - ncid, varid, - NULL, /*name*/ - NULL, /*xtypep*/ - NULL, /*ndimsp*/ - NULL, /*dimidsp*/ - NULL, /*nattsp*/ - NULL, /*shufflep*/ - NULL, /*deflatep*/ - NULL, /*deflatelevelp*/ - NULL, /*fletcher32p*/ - NULL, /*contiguousp*/ - NULL, /*chunksizep*/ - NULL, /*nofillp*/ - NULL, /*fillvaluep*/ - endianp, /*endianp*/ - NULL, /*optionsmaskp*/ - NULL /*pixelsp*/ - ); -} - -/*! Return number and list of unlimited dimensions. - -In netCDF-4 files, it's possible to have multiple unlimited -dimensions. This function returns a list of the unlimited dimension -ids visible in a group. - -Dimensions are visible in a group if they have been defined in that -group, or any ancestor group. - -\param ncid NetCDF group ID, from a previous call to nc_open, nc_create, nc_def_grp, etc. -\param nunlimdimsp A pointer to an int which will get the number of visible unlimited dimensions. Ignored if NULL. -\param unlimdimidsp A pointer to an already allocated array of int which will get the ids of all visible unlimited dimensions. Ignored if NULL. To allocate the correct length for this array, call nc_inq_unlimdims with a NULL for this parameter and use the nunlimdimsp parameter to get the number of visible unlimited dimensions. - -This function will return one of the following values. - -\returns ::NC_NOERR No error. -\returns ::NC_EBADID Bad group id. -\returns ::NC_ENOTNC4 Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4 operations can only be performed on files defined with a create mode which includes flag HDF5. (see nc_open). -\returns ::NC_ESTRICTNC3 This file was created with the strict netcdf-3 flag, therefore netcdf-4 operations are not allowed. (see nc_open). -\returns ::NC_EHDFERR An error was reported by the HDF5 layer. - - */ -int -nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - TRACE(nc_inq_unlimdims); - return ncp->dispatch->inq_unlimdims(ncid, nunlimdimsp, - unlimdimidsp); -} - -#endif /* USE_NETCDF4 */ - -/*! - -Used in libdap2 and libdap4. - -@param[in] ncid ncid for file. -@param[in] varid varid for variable in question. -@param[out] name Pointer to memory to contain the name of the variable. -@param[out] xtypep Pointer to memory to contain the type of the variable. -@param[out] ndimsp Pointer to memory to store the number of associated dimensions for the variable. -@param[out] dimidsp Pointer to memory to store the dimids associated with the variable. -@param[out] nattsp Pointer to memory to store the number of attributes associated with the variable. -@param[out] shufflep Pointer to memory to store shuffle information associated with the variable. -@param[out] deflatep Pointer to memory to store compression type associated with the variable. -@param[out] deflate_levelp Pointer to memory to store compression level associated with the variable. -@param[out] fletcher32p Pointer to memory to store compression information associated with the variable. -@param[out] contiguousp Pointer to memory to store contiguous-data information associated with the variable. -@param[out] chunksizesp Pointer to memory to store chunksize information associated with the variable. -@param[out] no_fill Pointer to memory to store whether or not there is a fill value associated with the variable. -@param[out] fill_valuep Pointer to memory to store the fill value (if one exists) for the variable. -@param[out] endiannessp Pointer to memory to store endianness value. One of ::NC_ENDIAN_BIG ::NC_ENDIAN_LITTLE ::NC_ENDIAN_NATIVE -@param[out] options_maskp Pointer to memory to store mask options information. -@param[out] pixels_per_blockp Pointer to memory to store pixels-per-block information for chunked data. - -\note Expose access to nc_inq_var_all(). - -\internal -\ingroup variables - - -*/ -int -NC_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp, - int *shufflep, int *deflatep, int *deflate_levelp, - int *fletcher32p, int *contiguousp, size_t *chunksizesp, - int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp) -{ - NC* ncp; - int stat = NC_check_id(ncid,&ncp); - if(stat != NC_NOERR) return stat; - return ncp->dispatch->inq_var_all( - ncid, varid, name, xtypep, - ndimsp, dimidsp, nattsp, - shufflep, deflatep, deflate_levelp, fletcher32p, - contiguousp, chunksizesp, - no_fill, fill_valuep, - endiannessp, - options_maskp, - pixels_per_blockp); -} - -/*! \} */ /* End of named group ...*/ diff --git a/contrib/netcdf/4.4.1.1/libdispatch/ncaux.c b/contrib/netcdf/4.4.1.1/libdispatch/ncaux.c deleted file mode 100644 index 5571c268af9..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/ncaux.c +++ /dev/null @@ -1,397 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* -This code is a variant of the H5detect.c code from HDF5. -Author: D. Heimbigner 10/7/2008 -*/ - -#include -#include -#include -#include -#include "config.h" -#include "ncaux.h" - -struct NCAUX_FIELD { - char* name; - nc_type fieldtype; - size_t ndims; - int dimsizes[NC_MAX_VAR_DIMS]; - size_t size; - size_t offset; - size_t alignment; -}; - -struct NCAUX_CMPD { - int ncid; - int mode; - char* name; - size_t nfields; - struct NCAUX_FIELD* fields; - size_t size; - size_t offset; /* cumulative as fields are added */ - size_t alignment; -}; - -static int ncaux_initialized = 0; - -static void compute_alignments(void); -static int computefieldinfo(struct NCAUX_CMPD* cmpd); - -int -ncaux_begin_compound(int ncid, const char *name, int alignmode, void** tagp) -{ - int status = NC_NOERR; - struct NCAUX_CMPD* cmpd = NULL; - - if(!ncaux_initialized) { - compute_alignments(); - ncaux_initialized = 1; - } - - if(tagp) *tagp = NULL; - - cmpd = (struct NCAUX_CMPD*)calloc(1,sizeof(struct NCAUX_CMPD)); - if(cmpd == NULL) {status = NC_ENOMEM; goto fail;} - cmpd->ncid = ncid; - cmpd->mode = alignmode; - cmpd->nfields = 0; - cmpd->name = strdup(name); - if(cmpd->name == NULL) {status = NC_ENOMEM; goto fail;} - - if(tagp) { - *tagp = (void*)cmpd; - } else { /* Error, free cmpd to avoid memory leak. */ - free(cmpd); - } - return status; - -fail: - ncaux_abort_compound((void*)cmpd); - return status; -} - -int -ncaux_abort_compound(void* tag) -{ - int i; - struct NCAUX_CMPD* cmpd = (struct NCAUX_CMPD*)tag; - if(cmpd == NULL) goto done; - if(cmpd->name) free(cmpd->name); - for(i=0;infields;i++) { - struct NCAUX_FIELD* field = &cmpd->fields[i]; - if(field->name) free(field->name); - } - if(cmpd->fields) free(cmpd->fields); - free(cmpd); - -done: - return NC_NOERR; -} - -int -ncaux_add_field(void* tag, const char *name, nc_type field_type, - int ndims, const int* dimsizes) -{ - int i; - int status = NC_NOERR; - struct NCAUX_CMPD* cmpd = (struct NCAUX_CMPD*)tag; - struct NCAUX_FIELD* newfields = NULL; - struct NCAUX_FIELD* field = NULL; - - if(cmpd == NULL) goto done; - if(ndims < 0) {status = NC_EINVAL; goto done;} - for(i=0;ifields == NULL) { - newfields = (struct NCAUX_FIELD*)calloc(1,sizeof(struct NCAUX_FIELD)); - } else { - newfields = (struct NCAUX_FIELD*)realloc(cmpd->fields,cmpd->nfields+1*sizeof(struct NCAUX_FIELD)); - } - if(cmpd->fields == NULL) {status = NC_ENOMEM; goto done;} - cmpd->fields = newfields; - field = &cmpd->fields[cmpd->nfields+1]; - field->name = strdup(name); - field->fieldtype = field_type; - if(field->name == NULL) {status = NC_ENOMEM; goto done;} - field->ndims = (size_t)ndims; - memcpy(field->dimsizes,dimsizes,sizeof(int)*field->ndims); - cmpd->nfields++; - -done: - if(newfields) - free(newfields); - return status; -} - -static size_t -dimproduct(size_t ndims, int* dimsizes) -{ - int i; - size_t product = 1; - for(i=0;incid, cmpd->size, cmpd->name, idp); - if(status != NC_NOERR) goto done; - - for(i=0;infields;i++) { - struct NCAUX_FIELD* field = &cmpd->fields[i]; - if(field->ndims > 0) { - status = nc_insert_compound(cmpd->ncid, *idp, field->name, - field->offset, field->fieldtype); - } else { - status = nc_insert_array_compound(cmpd->ncid, *idp, field->name, - field->offset, field->fieldtype, - (int)field->ndims,field->dimsizes); - } - if(status != NC_NOERR) goto done; - } - -done: - return status; -} - -/**************************************************/ - -/* -The heart of this is the following macro, -which computes the offset of a field x -when preceded by a char field. -The assumptions appear to be as follows: -1. the offset produced in this situation indicates - the alignment for x relative in such a way that it - depends only on the types that precede it in the struct. -2. the compiler does not reorder fields. -3. arrays are tightly packed. -4. nested structs are alignd according to their first member - (this actually follows from C language requirement that - a struct can legally be cast to an instance of its first member). -Given the alignments for the various common primitive types, -it is assumed that one can use them anywhere to construct -the layout of a struct of such types. -It seems to work for HDF5 for a wide variety of machines. -*/ - -#define COMP_ALIGNMENT(DST,TYPE) {\ - struct {char f1; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -/* Define indices for every primitive C type */ -/* NAT => NOT-A-TYPE*/ -#define NATINDEX 0 -#define CHARINDEX 1 -#define UCHARINDEX 2 -#define SHORTINDEX 3 -#define USHORTINDEX 4 -#define INTINDEX 5 -#define UINTINDEX 6 -#define LONGINDEX 7 -#define ULONGINDEX 8 -#define LONGLONGINDEX 9 -#define ULONGLONGINDEX 10 -#define FLOATINDEX 11 -#define DOUBLEINDEX 12 -#define PTRINDEX 13 -#define NCVLENINDEX 14 - -#define NCTYPES 15 - -typedef struct Alignment { - char* typename; - size_t alignment; -} Alignment; - -typedef Alignment Typealignvec; - -/* Capture in struct and in a vector*/ -typedef struct Typealignset { - Alignment charalign; /* char*/ - Alignment ucharalign; /* unsigned char*/ - Alignment shortalign; /* short*/ - Alignment ushortalign; /* unsigned short*/ - Alignment intalign; /* int*/ - Alignment uintalign; /* unsigned int*/ - Alignment longalign; /* long*/ - Alignment ulongalign; /* unsigned long*/ - Alignment longlongalign; /* long long*/ - Alignment ulonglongalign; /* unsigned long long*/ - Alignment floatalign; /* float*/ - Alignment doublealign; /* double*/ - Alignment ptralign; /* void**/ - Alignment ncvlenalign; /* nc_vlen_t*/ -} Typealignset; - -static Typealignvec vec[NCTYPES]; -static Typealignset set; - -static void -compute_alignments(void) -{ - /* Compute the alignments for all the common C data types*/ - /* First for the struct*/ - /* initialize*/ - memset((void*)&set,0,sizeof(set)); - memset((void*)vec,0,sizeof(vec)); - - COMP_ALIGNMENT(set.charalign,char); - COMP_ALIGNMENT(set.ucharalign,unsigned char); - COMP_ALIGNMENT(set.shortalign,short); - COMP_ALIGNMENT(set.ushortalign,unsigned short); - COMP_ALIGNMENT(set.intalign,int); - COMP_ALIGNMENT(set.uintalign,unsigned int); - COMP_ALIGNMENT(set.longalign,long); - COMP_ALIGNMENT(set.ulongalign,unsigned long); - COMP_ALIGNMENT(set.longlongalign,long long); - COMP_ALIGNMENT(set.ulonglongalign,unsigned long long); - COMP_ALIGNMENT(set.floatalign,float); - COMP_ALIGNMENT(set.doublealign,double); - COMP_ALIGNMENT(set.ptralign,void*); - COMP_ALIGNMENT(set.ncvlenalign,nc_vlen_t); - - /* Then the vector*/ - COMP_ALIGNMENT(vec[CHARINDEX],char); - COMP_ALIGNMENT(vec[UCHARINDEX],unsigned char); - COMP_ALIGNMENT(vec[SHORTINDEX],short); - COMP_ALIGNMENT(vec[USHORTINDEX],unsigned short); - COMP_ALIGNMENT(vec[INTINDEX],int); - COMP_ALIGNMENT(vec[UINTINDEX],unsigned int); - COMP_ALIGNMENT(vec[LONGINDEX],long); - COMP_ALIGNMENT(vec[ULONGINDEX],unsigned long); - COMP_ALIGNMENT(vec[LONGLONGINDEX],long long); - COMP_ALIGNMENT(vec[ULONGLONGINDEX],unsigned long long); - COMP_ALIGNMENT(vec[FLOATINDEX],float); - COMP_ALIGNMENT(vec[DOUBLEINDEX],double); - COMP_ALIGNMENT(vec[PTRINDEX],void*); - COMP_ALIGNMENT(vec[NCVLENINDEX],nc_vlen_t); -} - -static size_t -nctypealignment(nc_type nctype) -{ - Alignment* align = NULL; - int index = 0; - switch (nctype) { - case NC_BYTE: index = UCHARINDEX; break; - case NC_CHAR: index = CHARINDEX; break; - case NC_SHORT: index = SHORTINDEX; break; - case NC_INT: index = INTINDEX; break; - case NC_FLOAT: index = FLOATINDEX; break; - case NC_DOUBLE: index = DOUBLEINDEX; break; - case NC_UBYTE: index = UCHARINDEX; break; - case NC_USHORT: index = USHORTINDEX; break; - case NC_UINT: index = UINTINDEX; break; - case NC_INT64: index = LONGLONGINDEX; break; - case NC_UINT64: index = ULONGLONGINDEX; break; - case NC_STRING: index = PTRINDEX; break; - case NC_VLEN: index = NCVLENINDEX; break; - case NC_OPAQUE: index = UCHARINDEX; break; - default: assert(0); - } - align = &vec[index]; - return align->alignment; -} - -static size_t -getpadding(size_t offset, size_t alignment) -{ - size_t rem = (alignment==0?0:(offset % alignment)); - size_t pad = (rem==0?0:(alignment - rem)); - return pad; -} - -/* Find first primitive field of a possibly nested sequence of compounds */ -static nc_type -findfirstfield(int ncid, nc_type xtype) -{ - int status = NC_NOERR; - nc_type fieldtype = xtype; - if(xtype <= NC_MAX_ATOMIC_TYPE) goto done; - - status = nc_inq_compound_fieldtype(ncid, xtype, 0, &fieldtype); - if(status != NC_NOERR) goto done; - fieldtype = findfirstfield(ncid,fieldtype); - -done: - return (status == NC_NOERR?fieldtype:NC_NAT); -} - -static int -computefieldinfo(struct NCAUX_CMPD* cmpd) -{ - int i; - int status = NC_NOERR; - size_t offset = 0; - size_t totaldimsize; - - /* Assign the sizes for the fields */ - for(i=0;infields;i++) { - struct NCAUX_FIELD* field = &cmpd->fields[i]; - status = nc_inq_type(cmpd->ncid,field->fieldtype,NULL,&field->size); - if(status != NC_NOERR) goto done; - totaldimsize = dimproduct(field->ndims,field->dimsizes); - field->size *= totaldimsize; - } - - for(offset=0,i=0;infields;i++) { - struct NCAUX_FIELD* field = &cmpd->fields[i]; - int alignment = 0; - nc_type firsttype = findfirstfield(cmpd->ncid,field->fieldtype); - - /* only support 'c' alignment for now*/ - switch (field->fieldtype) { - case NC_OPAQUE: - field->alignment = 1; - break; - case NC_ENUM: - field->alignment = nctypealignment(firsttype); - break; - case NC_VLEN: /*fall thru*/ - case NC_COMPOUND: - field->alignment = nctypealignment(firsttype); - break; - default: - field->alignment = nctypealignment(field->fieldtype); - break; - } - offset += getpadding(offset,alignment); - field->offset = offset; - offset += field->size; - } - cmpd->size = offset; - cmpd->alignment = cmpd->fields[0].alignment; - -done: - return status; -} - - diff --git a/contrib/netcdf/4.4.1.1/libdispatch/nchashmap.c b/contrib/netcdf/4.4.1.1/libdispatch/nchashmap.c deleted file mode 100644 index 1ab610a227a..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/nchashmap.c +++ /dev/null @@ -1,207 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -#include "nchashmap.h" - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#define DEFAULTALLOC 31 - -NChashmap* nchashnew(void) {return nchashnew0(DEFAULTALLOC);} - -NChashmap* nchashnew0(size_t alloc) -{ - NChashmap* hm; - if(sizeof(nchashid) != sizeof(void*)){ - fprintf(stderr,"nchashmap: sizeof(nchashid) != sizeof(void*)"); - abort(); - } - hm = (NChashmap*)malloc(sizeof(NChashmap)); - if(!hm) return NULL; - hm->alloc = alloc; - hm->table = (NClist**)malloc(hm->alloc*sizeof(NClist*)); - if(!hm->table) {free(hm); return NULL;} - memset((void*)hm->table,0,hm->alloc*sizeof(NClist*)); - return hm; -} - -int -nchashfree(NChashmap* hm) -{ - if(hm) { - int i; - for(i=0;ialloc;i++) { - if(hm->table[i] != NULL) nclistfree(hm->table[i]); - } - free(hm->table); - free(hm); - } - return TRUE; -} - -/* Insert a pair into the table*/ -/* Fail if already there*/ -int -nchashinsert(NChashmap* hm, nchashid hash, void* value) -{ - int i; - size_t offset,len; - NClist* seq; - void** list; - - offset = (hash % hm->alloc); - seq = hm->table[offset]; - if(seq == NULL) {seq = nclistnew(); hm->table[offset] = seq;} - len = nclistlength(seq); - list = nclistcontents(seq); - for(i=0;isize++; - return TRUE; -} - -/* Insert a pair into the table*/ -/* Overwrite if already there*/ -int -nchashreplace(NChashmap* hm, nchashid hash, void* value) -{ - int i; - size_t offset,len; - NClist* seq; - void** list; - - offset = (hash % hm->alloc); - seq = hm->table[offset]; - if(seq == NULL) {seq = nclistnew(); hm->table[offset] = seq;} - len = nclistlength(seq); - list = nclistcontents(seq); - for(i=0;isize++; - return TRUE; -} - -/* remove a nchashid*/ -/* return TRUE if found, false otherwise*/ -int -nchashremove(NChashmap* hm, nchashid hash) -{ - size_t i; - size_t offset,len; - NClist* seq; - void** list; - - offset = (hash % hm->alloc); - seq = hm->table[offset]; - if(seq == NULL) return TRUE; - len = nclistlength(seq); - list = nclistcontents(seq); - for(i=0;isize--; - if(nclistlength(seq) == 0) {nclistfree(seq); hm->table[offset] = NULL;} - return TRUE; - } - } - return FALSE; -} - -/* lookup a nchashid; return DATANULL if not found*/ -/* (use hashlookup if the possible values include 0)*/ -void* -nchashget(NChashmap* hm, nchashid hash) -{ - void* value; - if(!nchashlookup(hm,hash,&value)) return NULL; - return value; -} - -int -nchashlookup(NChashmap* hm, nchashid hash, void** valuep) -{ - int i; - size_t offset,len; - NClist* seq; - void** list; - - offset = (hash % hm->alloc); - seq = hm->table[offset]; - if(seq == NULL) return TRUE; - len = nclistlength(seq); - list = nclistcontents(seq); - for(i=0;ialloc;i++) { - NClist* seq = hm->table[i]; - int len = nclistlength(seq) / 2; - if(len == 0) continue; - if((index - len) < 0) { - if(hashp) *hashp = (nchashid)nclistget(seq,index*2); - if(elemp) *elemp = nclistget(seq,(index*2)+1); - return TRUE; - } - index -= len; - } - return FALSE; -} - -/* Return all the keys; order is completely arbitrary*/ -/* Can be expensive*/ -int -nchashkeys(NChashmap* hm, nchashid** keylist) -{ - int i,j,index; - nchashid* keys; - if(hm == NULL) return FALSE; - if(hm->size == 0) { - keys = NULL; - } else { - keys = (nchashid*)malloc(sizeof(nchashid)*hm->size); - for(index=0,i=0;ialloc;i++) { - NClist* seq = hm->table[i]; - for(j=0;j -#include -#include - -#include "nclist.h" - -int nclistnull(void* e) {return e == NULL;} - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#define DEFAULTALLOC 16 -#define ALLOCINCR 16 - -NClist* nclistnew(void) -{ - NClist* l; -/* - if(!ncinitialized) { - memset((void*)&ncDATANULL,0,sizeof(void*)); - ncinitialized = 1; - } -*/ - l = (NClist*)malloc(sizeof(NClist)); - if(l) { - l->alloc=0; - l->length=0; - l->content=NULL; - } - return l; -} - -int -nclistfree(NClist* l) -{ - if(l) { - l->alloc = 0; - if(l->content != NULL) {free(l->content); l->content = NULL;} - free(l); - } - return TRUE; -} - -int -nclistsetalloc(NClist* l, unsigned long sz) -{ - void** newcontent = NULL; - if(l == NULL) return FALSE; - if(sz <= 0) {sz = (l->length?2*l->length:DEFAULTALLOC);} - if(l->alloc >= sz) {return TRUE;} - newcontent=(void**)calloc(sz,sizeof(void*)); - if(newcontent != NULL && l->alloc > 0 && l->length > 0 && l->content != NULL) { - memcpy((void*)newcontent,(void*)l->content,sizeof(void*)*l->length); - } - if(l->content != NULL) free(l->content); - l->content=newcontent; - l->alloc=sz; - return TRUE; -} - -int -nclistsetlength(NClist* l, unsigned long sz) -{ - if(l == NULL) return FALSE; - if(sz > l->alloc && !nclistsetalloc(l,sz)) return FALSE; - l->length = sz; - return TRUE; -} - -void* -nclistget(NClist* l, unsigned long index) -{ - if(l == NULL || l->length == 0) return NULL; - if(index >= l->length) return NULL; - return l->content[index]; -} - -int -nclistset(NClist* l, unsigned long index, void* elem) -{ - if(l == NULL) return FALSE; - if(index >= l->length) return FALSE; - l->content[index] = elem; - return TRUE; -} - -/* Insert at position i of l; will push up elements i..|seq|. */ -int -nclistinsert(NClist* l, unsigned long index, void* elem) -{ - int i; /* do not make unsigned */ - if(l == NULL) return FALSE; - if(index > l->length) return FALSE; - nclistsetalloc(l,0); - for(i=(int)l->length;i>index;i--) l->content[i] = l->content[i-1]; - l->content[index] = elem; - l->length++; - return TRUE; -} - -int -nclistpush(NClist* l, void* elem) -{ - if(l == NULL) return FALSE; - if(l->length >= l->alloc) nclistsetalloc(l,0); - l->content[l->length] = elem; - l->length++; - return TRUE; -} - -void* -nclistpop(NClist* l) -{ - if(l == NULL || l->length == 0) return NULL; - l->length--; - return l->content[l->length]; -} - -void* -nclisttop(NClist* l) -{ - if(l == NULL || l->length == 0) return NULL; - return l->content[l->length - 1]; -} - -void* -nclistremove(NClist* l, unsigned long i) -{ - unsigned long len; - void* elem; - if(l == NULL || (len=l->length) == 0) return NULL; - if(i >= len) return NULL; - elem = l->content[i]; - for(i+=1;icontent[i-1] = l->content[i]; - l->length--; - return elem; -} - -/* Duplicate and return the content (null terminate) */ -void** -nclistdup(NClist* l) -{ - void** result = (void**)malloc(sizeof(void*)*(l->length+1)); - memcpy((void*)result,(void*)l->content,sizeof(void*)*l->length); - result[l->length] = (void*)0; - return result; -} - -int -nclistcontains(NClist* l, void* elem) -{ - unsigned long i; - for(i=0;ilength) == 0) return 0; - for(i=0;icontent[i]; - if(elem == candidate) { - for(i+=1;icontent[i-1] = l->content[i]; - l->length--; - found = 1; - break; - } - } - return found; -} - - - - -/* Extends nclist to include a unique operator - which remove duplicate values; NULL values removed - return value is always 1. -*/ - -int -nclistunique(NClist* l) -{ - unsigned long i,j,k,len; - void** content; - if(l == NULL || l->length == 0) return 1; - len = l->length; - content = l->content; - for(i=0;ilength = len; - return 1; -} - -NClist* -nclistclone(NClist* l) -{ - NClist* clone = nclistnew(); - *clone = *l; - clone->content = nclistdup(l); - return clone; -} diff --git a/contrib/netcdf/4.4.1.1/libdispatch/ncuri.c b/contrib/netcdf/4.4.1.1/libdispatch/ncuri.c deleted file mode 100644 index b29b106bece..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/ncuri.c +++ /dev/null @@ -1,861 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ -#include "config.h" -#include -#include -#include -#include - -#include "ncuri.h" - -/* Include netcdf.h to allow access to - NC_ error return codes. */ -#include "netcdf.h" - -#define NCURIDEBUG - -#ifdef NCURIDEBUG -static int failpoint = 0; -#define THROW(n) {failpoint=(n); goto fail;} -#else -#define THROW(n) {goto fail;} -#endif - - -#define PADDING 8 - -#define LBRACKET '[' -#define RBRACKET ']' -#define EOFCHAR '\0' - -#ifndef FIX -#define FIX(s) ((s)==NULL?"NULL":(s)) -#endif - -#ifndef NILLEN -#define NILLEN(s) ((s)==NULL?0:strlen(s)) -#endif - -#ifndef nulldup -#define nulldup(s) ((s)==NULL?NULL:strdup(s)) -#endif - -#define terminate(p) {*(p) = EOFCHAR;} - -#define endof(p) ((p)+strlen(p)) - -static struct NC_ProtocolInfo { -char* name; -int filelike; /* 1=>this protocol has no host, user+pwd, or port */ -} legalprotocols[] = { -{"file",1}, -{"http",0}, -{"https",0}, -{"ftp",0}, -}; - -/* Allowable character sets for encode */ -static char* fileallow = -"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~"; - -static char* queryallow = -"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~"; - -#ifndef HAVE_STRNCMP -#define strndup ncstrndup -/* Not all systems have strndup, so provide one*/ -char* -ncstrndup(const char* s, size_t len) -{ - char* dup; - if(s == NULL) return NULL; - dup = (char*)malloc(len+1); - if(dup == NULL) return NULL; - memcpy((void*)dup,s,len); - dup[len] = '\0'; - return dup; -} -#endif -/* Forward */ -static void ncparamfree(char** params); -static int ncfind(char** params, const char* key); -static void nclshift1(char* p); -static void ncrshift1(char* p); -static char* nclocate(char* p, const char* charlist); -static void ncappendparams(char* newuri, char** p); - -/* Do a simple uri parse: return 0 if fail, 1 otherwise*/ -int -ncuriparse(const char* uri0, NCURI** durip) -{ - NCURI* duri = NULL; - char* uri = NULL; - char* p; - struct NC_ProtocolInfo* proto; - int i,nprotos; - - /* accumulate parse points*/ - char* protocol = NULL; - char* host = NULL; - char* port = NULL; - char* constraint = NULL; - char* user = NULL; - char* pwd = NULL; - char* file = NULL; - char* prefixparams = NULL; - char* suffixparams = NULL; - - if(uri0 == NULL || strlen(uri0) == 0) - {THROW(1);} - - duri = (NCURI*)calloc(1,sizeof(NCURI)); - if(duri == NULL) - {THROW(2);} - - /* save original uri */ - duri->uri = nulldup(uri0); - - /* make local copy of uri */ - uri = (char*)malloc(strlen(uri0)+1+PADDING); /* +1 for trailing null, - +PADDING for shifting */ - if(uri == NULL) - {THROW(3);} - - /* strings will be broken into pieces with intermixed '\0; characters; - first char is guaranteed to be '\0' */ - - duri->strings = uri; - uri++; - - /* dup the incoming url */ - strcpy(uri,uri0); - - /* Walk the uri and do the following: - 1. remove all whitespace - 2. remove all '\\' (Temp hack to remove escape characters - inserted by Windows or MinGW) - */ - for(p=uri;*p;p++) { - if(*p == '\\' || *p < ' ') - nclshift1(p); /* compress out */ - } - - p = uri; - - /* break up the uri string into big chunks: prefixparams, protocol, - host section, and the file section (i.e. remainder) - */ - - /* collect any prefix bracketed parameters */ - if(*p == LBRACKET) { - prefixparams = p+1; - /* find end of the clientparams; convert LB,RB to '&' */ - for(;*p;p++) { - if(p[0] == RBRACKET && p[1] == LBRACKET) { - p[0] = '&'; - nclshift1(p+1); - } else if(p[0] == RBRACKET && p[1] != LBRACKET) - break; - } - if(*p == 0) - {THROW(4); /* malformed client params*/} - terminate(p); /* nul term the prefixparams (overwrites - the final RBRACKET) */ - p++; /* move past the final RBRACKET */ - } - - /* Tag the protocol */ - protocol = p; - p = strchr(p,':'); - if(!p) - {THROW(5);} - terminate(p); /*overwrite colon*/ - p++; /* skip the colon */ - - /* verify that the uri starts with an acceptable protocol*/ - nprotos = (sizeof(legalprotocols)/sizeof(struct NC_ProtocolInfo)); - proto = NULL; - for(i=0;ifilelike) {/* everything after proto:// */ - file = p; - host = NULL; /* and no host section */ - } else { /*!proto->filelike => This means there should be a host section */ - /* locate the end of the host section and therefore the start - of the file section */ - host = p; - p = nclocate(p,"/?#"); - if(p == NULL) { - file = endof(host); /* there is no file section */ - } else { - ncrshift1(p); /* make room to terminate the host section - without overwriting the leading character */ - terminate(p); /* terminate the host section */ - file = p+1; /* +1 becauseof the shift */ - } - } - - /* If you shift in the code below, you must reset file beginning */ - - if(host != NULL) {/* Parse the host section */ - /* Check for leading user:pwd@ */ - p = strchr(host,'@'); - if(p) { - if(p == host) - {THROW(9); /* we have proto://@ */} - user = host; - terminate(p); /* overwrite '@' */ - host = p+1; /* start of host ip name */ - p = strchr(user,':'); - if(p == NULL) - {THROW(10); /* malformed */} - terminate(p); /*overwrite colon */ - pwd = p+1; - } - - /* extract host and port */ - p = host; - p = strchr(p,':'); - if(p != NULL) { - terminate(p); - p++; - port = p; - if(*port == EOFCHAR) - {THROW(11); /* we have proto://...:/ */} - /* The port must look something like a number */ - for(;*p;p++) { - if(strchr("0123456789-",*p) == NULL) - {THROW(12); /* probably not a real port, fail */} - } - } /* else *p == NULL */ - - - /* check for empty host section */ - if(*host == EOFCHAR) - {THROW(13);} - - } - - assert(file != NULL); - p = file; - - /* find the end of the file section and the start of the - constraints and/or suffixparams - */ - p = nclocate(p,"?#"); - if(p != NULL) { /* we have constraint and/or suffixparams */ - char* fileend = p; /* save the end of the file section */ - char* constraintend = NULL; - if(*p == '?') - constraint = p+1; - else - constraint = NULL; - p = strchr(p,'#'); /* may repeat effect of nclocate above */ - if(p != NULL) { - constraintend = p; - suffixparams = p+1; - } else - suffixparams = NULL; - /* Ok, terminate the pieces */ - terminate(fileend); /* terminate file section */ - if(constraint != NULL && constraintend != NULL) - terminate(constraintend); - /* Suffix params are already terminated - since they should be the last section - of the original url - */ - } - - /* check for empty sections */ - if(file != NULL && *file == EOFCHAR) - file = NULL; /* empty file section */ - if(constraint != NULL && *constraint == EOFCHAR) - constraint = NULL; /* empty constraint section */ - if(suffixparams != NULL && *suffixparams == EOFCHAR) - suffixparams = NULL; /* empty suffixparams section */ - - if(suffixparams != NULL) { - /* there really are suffix params; so rebuild the suffix params */ - if(*suffixparams == LBRACKET) suffixparams++; - p = suffixparams; - /* convert RBRACKET LBRACKET to '&' */ - for(;*p;p++) { - if(p[0] == RBRACKET && p[1] == LBRACKET) { - p[0] = '&'; - nclshift1(p+1); - } else if(p[0] == RBRACKET && p[1] != LBRACKET) { - /* terminate suffixparams */ - *p = EOFCHAR; - break; - } - } - if(*suffixparams == EOFCHAR) - suffixparams = NULL; /* suffixparams are empty */ - } - - /* do last minute empty check */ - - if(*protocol == EOFCHAR) protocol = NULL; - if(user != NULL && *user == EOFCHAR) user = NULL; - if(pwd != NULL && *pwd == EOFCHAR) pwd = NULL; - if(host != NULL && *host == EOFCHAR) host = NULL; - if(port != NULL && *port == EOFCHAR) port = NULL; - if(file != NULL && *file == EOFCHAR) file = NULL; - if(constraint != NULL && *constraint == EOFCHAR) constraint = NULL; - - /* assemble the component pieces */ - duri->protocol = protocol; - duri->user = user; - duri->password = pwd; - duri->host = host; - duri->port = port; - duri->file = file; - - ncurisetconstraints(duri,constraint); - - /* concat suffix and prefix params */ - if(prefixparams != NULL || suffixparams != NULL) { - int plen = prefixparams ? strlen(prefixparams) : 0; - int slen = suffixparams ? strlen(suffixparams) : 0; - int space = plen + slen + 1; - /* add 1 for an extra ampersand if both are defined */ - space++; - duri->params = (char*)malloc(space); - duri->params[0] = EOFCHAR; /* so we can use strcat */ - if(plen > 0) { - strcat(duri->params,prefixparams); - if(slen > 0) - strcat(duri->params,"&"); - } - if(slen > 0) - strcat(duri->params,suffixparams); - } - -#ifdef NCXDEBUG - { - fprintf(stderr,"duri:"); - fprintf(stderr," params=|%s|",FIX(duri->params)); - fprintf(stderr," protocol=|%s|",FIX(duri->protocol)); - fprintf(stderr," host=|%s|",FIX(duri->host)); - fprintf(stderr," port=|%s|",FIX(duri->port)); - fprintf(stderr," file=|%s|",FIX(duri->file)); - fprintf(stderr," constraint=|%s|",FIX(duri->constraint)); - fprintf(stderr,"\n"); - } -#endif - if(durip != NULL) - *durip = duri; - else - ncurifree(duri); - - return 1; - -fail: - if(duri != NULL) { - ncurifree(duri); - } - return 0; -} - -void -ncurifree(NCURI* duri) -{ - if(duri == NULL) return; - if(duri->uri != NULL) {free(duri->uri);} - if(duri->params != NULL) {free(duri->params);} - if(duri->paramlist != NULL) ncparamfree(duri->paramlist); - if(duri->strings != NULL) {free(duri->strings);} - if(duri->constraint != NULL) {free(duri->constraint);} - if(duri->projection != NULL) {free(duri->projection);} - if(duri->selection != NULL) {free(duri->selection);} - free(duri); -} - -/* Replace the constraints */ -void -ncurisetconstraints(NCURI* duri,const char* constraints) -{ - char* proj = NULL; - char* select = NULL; - const char* p; - - if(duri->constraint != NULL) free(duri->constraint); - if(duri->projection != NULL) free(duri->projection); - if(duri->selection != NULL) free(duri->selection); - duri->constraint = NULL; - duri->projection = NULL; - duri->selection = NULL; - - if(constraints == NULL || strlen(constraints)==0) return; - - duri->constraint = nulldup(constraints); - if(*duri->constraint == '?') - nclshift1(duri->constraint); - - p = duri->constraint; - proj = (char*) p; - select = strchr(proj,'&'); - if(select != NULL) { - size_t plen = (size_t)(select - proj); - if(plen == 0) { - proj = NULL; - } else { - proj = (char*)malloc(plen+1); - memcpy((void*)proj,p,plen); - proj[plen] = EOFCHAR; - } - select = nulldup(select); - } else { - proj = nulldup(proj); - select = NULL; - } - duri->projection = proj; - duri->selection = select; -} - - -/* Construct a complete NC URI. - Optionally with the constraints. - Optionally with the user parameters. - Caller frees returned string. - Optionally encode the pieces. -*/ - -char* -ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags) -{ - size_t len = 0; - char* newuri; - char* tmpfile; - char* tmpsuffix; - char* tmpquery; - size_t nparams = 0; - size_t paramslen = 0; - - /* if both are specified, prefix has priority */ - int withsuffixparams = ((flags&NCURISUFFIXPARAMS)!=0 - && duri->params != NULL); - int withprefixparams = ((flags&NCURIPREFIXPARAMS)!=0 - && duri->params != NULL); - int withuserpwd = ((flags&NCURIUSERPWD)!=0 - && duri->user != NULL && duri->password != NULL); - int withconstraints = ((flags&NCURICONSTRAINTS)!=0 - && duri->constraint != NULL); -#ifdef NEWESCAPE - const int encode = (flags&NCURIENCODE); -#else - const int encode = 0; -#endif - - if(prefix != NULL) len += NILLEN(prefix); - len += (NILLEN(duri->protocol)+NILLEN("://")); - if(withuserpwd) { - len += (NILLEN(duri->user)+NILLEN(duri->password)+NILLEN(":@")); - } - len += (NILLEN(duri->host)); - if(duri->port != NULL) { - len += (NILLEN(":")+NILLEN(duri->port)); - } - - tmpfile = duri->file; - if(encode) - tmpfile = ncuriencode(tmpfile,fileallow); - len += (NILLEN(tmpfile)); - - if(suffix != NULL) { - tmpsuffix = (char*)suffix; - if(encode) - tmpsuffix = ncuriencode(tmpsuffix,fileallow); - len += (NILLEN(tmpsuffix)); - } - - if(withconstraints) { - tmpquery = duri->constraint; - if(encode) - tmpquery = ncuriencode(tmpquery,queryallow); - len += (NILLEN("?")+NILLEN(tmpquery)); - } - - if(withprefixparams || withsuffixparams) { - char** p; - if(duri->paramlist == NULL) - if(!ncuridecodeparams(duri)) - return NULL; - for(paramslen=0,nparams=0,p=duri->paramlist;*p;p++) { - nparams++; - paramslen += NILLEN(*p); - } - if(nparams % 2 == 1) - return NULL; /* malformed */ - nparams = (nparams / 2); - len += paramslen; - len += 3*nparams; /* for brackets for every param plus possible = */ - if(withsuffixparams) - len += strlen("#"); - } - - len += 1; /* null terminator */ - - newuri = (char*)malloc(len); - if(newuri == NULL) return NULL; - - newuri[0] = EOFCHAR; - if(prefix != NULL) strcat(newuri,prefix); - if(withprefixparams) { - ncappendparams(newuri,duri->paramlist); - } - if(duri->protocol != NULL) - strcat(newuri,duri->protocol); - strcat(newuri,"://"); - if(withuserpwd) { - strcat(newuri,duri->user); - strcat(newuri,":"); - strcat(newuri,duri->password); - strcat(newuri,"@"); - } - if(duri->host != NULL) { /* may be null if using file: protocol */ - strcat(newuri,duri->host); - } - if(duri->port != NULL) { - strcat(newuri,":"); - strcat(newuri,duri->port); - } - - if(tmpfile != NULL) { - strcat(newuri,tmpfile); - if(suffix != NULL) strcat(newuri,tmpsuffix); - } - if(withconstraints) { - strcat(newuri,"?"); - strcat(newuri,tmpquery); - } - if(withsuffixparams & !withprefixparams) { - strcat(newuri,"#"); - ncappendparams(newuri,duri->paramlist); - } - return newuri; -} - -static void -ncappendparams(char* newuri, char** p) -{ - while(*p) { - strcat(newuri,"["); - strcat(newuri,*p++); - if(strlen(*p) > 0) { - strcat(newuri,"="); - strcat(newuri,*p); - } - p++; - strcat(newuri,"]"); - } -} - -/**************************************************/ -/* Parameter support */ - -/* -In the original url, client parameters are assumed to be one -or more instances of bracketed pairs: e.g "[...][...]...". -They may occur either at the front, or suffixed after -a trailing # character. After processing, the list is -converted to an ampersand separated list of the combination -of prefix and suffix parameters. - -After the url is parsed, the parameter list -is converted to an ampersand separated list with all -whitespace removed. -In any case, each parameter in turn is assumed to be a -of the form = or []. -e.g. [x=y][z][a=b][w]. If the same parameter is specified more -than once, then the first occurrence is used; this is so -that is possible to forcibly override user specified -parameters by prefixing. IMPORTANT: client parameter string -is assumed to have blanks compressed out. Returns 1 if parse -succeeded, 0 otherwise; */ - -int -ncuridecodeparams(NCURI* ncuri) -{ - char* cp = NULL; - int i,c; - size_t nparams; - char* params = NULL; - char** plist; - - if(ncuri == NULL) return 0; - if(ncuri->params == NULL) return 1; - - params = strndup(ncuri->params, - (strlen(ncuri->params)+1)); /* so we can modify */ - if(!params) - return NC_ENOMEM; - - /* Pass 1 to break string into pieces at the ampersands - and count # of pairs */ - nparams=0; - for(cp=params;(c=*cp);cp++) { - if(c == '&') {*cp = EOFCHAR; nparams++;} - } - nparams++; /* for last one */ - - /* plist is an env style list */ - plist = (char**)calloc(1,sizeof(char*)*(2*nparams+1)); /* +1 for null termination */ - if(plist == NULL) { - if(params) free(params); - return 0; - } - - /* Break up each param into a (name,value) pair*/ - /* and insert into the param list */ - /* parameters of the form name name= are converted to name=""*/ - for(cp=params,i=0;iparamlist != NULL) - ncparamfree(ncuri->paramlist); - ncuri->paramlist = plist; - return 1; -} - -int -ncurilookup(NCURI* uri, const char* key, const char** resultp) -{ - int i; - char* value = NULL; - if(uri == NULL || key == NULL || uri->params == NULL) return 0; - if(uri->paramlist == NULL) { - i = ncuridecodeparams(uri); - if(!i) return 0; - } - /* Coverity[FORWARD_NULL] */ - i = ncfind(uri->paramlist,key); - if(i < 0) - return 0; - - if(uri->paramlist) { - value = uri->paramlist[(2*i)+1]; - if(resultp) *resultp = value; - } - - return 1; -} - -int -ncurisetparams(NCURI* uri, const char* newparams) -{ - if(uri == NULL) return 0; - if(uri->paramlist != NULL) ncparamfree(uri->paramlist); - uri->paramlist = NULL; - if(uri->params != NULL) free(uri->params); - uri->params = nulldup(newparams); - return 1; -} - -/* Internal version of lookup; returns the paired index of the key */ -static int -ncfind(char** params, const char* key) -{ - int i; - char** p; - for(i=0,p=params;*p;p+=2,i++) { - if(strcmp(key,*p)==0) return i; - } - return -1; -} - -static void -ncparamfree(char** params) -{ - char** p; - if(params == NULL) return; - for(p=params;*p;p+=2) { - free(*p); - if(p[1] != NULL) free(p[1]); - } - free(params); -} - - -/* Return the ptr to the first occurrence of - any char in the list. Return NULL if no - occurrences -*/ -static char* -nclocate(char* p, const char* charlist) -{ - for(;*p;p++) { - if(strchr(charlist,*p) != NULL) - return p; - } - return NULL; -} - - -/* Shift every char starting at p 1 place to the left */ -static void -nclshift1(char* p) -{ - if(p != NULL && *p != EOFCHAR) { - char* q = p++; - while((*q++=*p++)); - } -} - -/* Shift every char starting at p 1 place to the right */ -static void -ncrshift1(char* p) -{ - char cur; - cur = 0; - do { - char next = *p; - *p++ = cur; - cur = next; - } while(cur != 0); - *p = 0; /* make sure we are still null terminated */ -} - - -/* Provide % encoders and decoders */ - - -static char* hexchars = "0123456789abcdefABCDEF"; - -static void -toHex(unsigned int b, char hex[2]) -{ - hex[0] = hexchars[(b >> 4) & 0xff]; - hex[1] = hexchars[(b) & 0xff]; -} - - -static int -fromHex(int c) -{ - if(c >= '0' && c <= '9') return (int) (c - '0'); - if(c >= 'a' && c <= 'f') return (int) (10 + (c - 'a')); - if(c >= 'A' && c <= 'F') return (int) (10 + (c - 'A')); - return 0; -} - - -/* Return a string representing encoding of input; caller must free; - watch out: will encode whole string, so watch what you give it. - Allowable argument specifies characters that do not need escaping. - */ - -char* -ncuriencode(char* s, char* allowable) -{ - size_t slen; - char* encoded; - char* inptr; - char* outptr; - - if(s == NULL) return NULL; - - slen = strlen(s); - encoded = (char*)malloc((3*slen) + 1); /* max possible size */ - - for(inptr=s,outptr=encoded;*inptr;) { - int c = *inptr++; - if(c == ' ') { - *outptr++ = '+'; - } else { - /* search allowable */ - int c2; - char* a = allowable; - while((c2=*a++)) { - if(c == c2) break; - } - if(c2) {*outptr++ = (char)c;} - else { - char hex[2]; - toHex(c,hex); - *outptr++ = '%'; - *outptr++ = hex[0]; - *outptr++ = hex[1]; - } - } - } - *outptr = EOFCHAR; - return encoded; -} - -/* Return a string representing decoding of input; caller must free;*/ -char* -ncuridecode(char* s) -{ - return ncuridecodeonly(s,NULL); -} - -/* Return a string representing decoding of input only for specified - characters; caller must free -*/ -char* -ncuridecodeonly(char* s, char* only) -{ - size_t slen; - char* decoded; - char* outptr; - char* inptr; - unsigned int c; - - if (s == NULL) return NULL; - - slen = strlen(s); - decoded = (char*)malloc(slen+1); /* Should be max we need */ - - outptr = decoded; - inptr = s; - while((c = (unsigned int)*inptr++)) { - if(c == '+' && only != NULL && strchr(only,'+') != NULL) - *outptr++ = ' '; - else if(c == '%') { - /* try to pull two hex more characters */ - if(inptr[0] != EOFCHAR && inptr[1] != EOFCHAR - && strchr(hexchars,inptr[0]) != NULL - && strchr(hexchars,inptr[1]) != NULL) { - /* test conversion */ - int xc = (fromHex(inptr[0]) << 4) | (fromHex(inptr[1])); - if(only == NULL || strchr(only,xc) != NULL) { - inptr += 2; /* decode it */ - c = (unsigned int)xc; - } - } - } - *outptr++ = (char)c; - } - *outptr = EOFCHAR; - return decoded; -} diff --git a/contrib/netcdf/4.4.1.1/libdispatch/utf8proc_data.h b/contrib/netcdf/4.4.1.1/libdispatch/utf8proc_data.h deleted file mode 100644 index 1426b76e03c..00000000000 --- a/contrib/netcdf/4.4.1.1/libdispatch/utf8proc_data.h +++ /dev/null @@ -1,13383 +0,0 @@ -/* - * This file contains derived data from a modified version of the - * Unicode data files. - * - * The original data files are available at - * http://www.unicode.org/Public/UNIDATA/ - * - * - * COPYRIGHT AND PERMISSION NOTICE - * - * Copyright (c) 1991-2007 Unicode, Inc. All rights reserved. Distributed - * under the Terms of Use in http://www.unicode.org/copyright.html. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of the Unicode data files and any associated documentation (the "Data - * Files") or Unicode software and any associated documentation (the - * "Software") to deal in the Data Files or Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, and/or sell copies of the Data Files or Software, and - * to permit persons to whom the Data Files or Software are furnished to do - * so, provided that (a) the above copyright notice(s) and this permission - * notice appear with all copies of the Data Files or Software, (b) both the - * above copyright notice(s) and this permission notice appear in associated - * documentation, and (c) there is clear notice in each modified Data File or - * in the Software as well as in the documentation associated with the Data - * File(s) or Software that the data or software has been modified. - * - * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR - * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THE DATA FILES OR SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in these Data Files or Software without prior written - * authorization of the copyright holder. - */ - - -const int32_t utf8proc_sequences[] = { - 97, -1, 98, -1, 99, -1, 100, - -1, 101, -1, 102, -1, 103, -1, 104, - -1, 105, -1, 106, -1, 107, -1, 108, - -1, 109, -1, 110, -1, 111, -1, 112, - -1, 113, -1, 114, -1, 115, -1, 116, - -1, 117, -1, 118, -1, 119, -1, 120, - -1, 121, -1, 122, -1, 32, -1, 32, - 776, -1, 32, 772, -1, 50, -1, 51, - -1, 32, 769, -1, 956, -1, 32, 807, - -1, 49, -1, 49, 8260, 52, -1, 49, - 8260, 50, -1, 51, 8260, 52, -1, 65, - 768, -1, 224, -1, 65, 769, -1, 225, - -1, 65, 770, -1, 226, -1, 65, 771, - -1, 227, -1, 65, 776, -1, 228, -1, - 65, 778, -1, 229, -1, 230, -1, 67, - 807, -1, 231, -1, 69, 768, -1, 232, - -1, 69, 769, -1, 233, -1, 69, 770, - -1, 234, -1, 69, 776, -1, 235, -1, - 73, 768, -1, 236, -1, 73, 769, -1, - 237, -1, 73, 770, -1, 238, -1, 73, - 776, -1, 239, -1, 240, -1, 78, 771, - -1, 241, -1, 79, 768, -1, 242, -1, - 79, 769, -1, 243, -1, 79, 770, -1, - 244, -1, 79, 771, -1, 245, -1, 79, - 776, -1, 246, -1, 248, -1, 85, 768, - -1, 249, -1, 85, 769, -1, 250, -1, - 85, 770, -1, 251, -1, 85, 776, -1, - 252, -1, 89, 769, -1, 253, -1, 254, - -1, 115, 115, -1, 97, 768, -1, 97, - 769, -1, 97, 770, -1, 97, 771, -1, - 97, 776, -1, 97, 778, -1, 99, 807, - -1, 101, 768, -1, 101, 769, -1, 101, - 770, -1, 101, 776, -1, 105, 768, -1, - 105, 769, -1, 105, 770, -1, 105, 776, - -1, 110, 771, -1, 111, 768, -1, 111, - 769, -1, 111, 770, -1, 111, 771, -1, - 111, 776, -1, 117, 768, -1, 117, 769, - -1, 117, 770, -1, 117, 776, -1, 121, - 769, -1, 121, 776, -1, 65, 772, -1, - 257, -1, 97, 772, -1, 65, 774, -1, - 259, -1, 97, 774, -1, 65, 808, -1, - 261, -1, 97, 808, -1, 67, 769, -1, - 263, -1, 99, 769, -1, 67, 770, -1, - 265, -1, 99, 770, -1, 67, 775, -1, - 267, -1, 99, 775, -1, 67, 780, -1, - 269, -1, 99, 780, -1, 68, 780, -1, - 271, -1, 100, 780, -1, 273, -1, 69, - 772, -1, 275, -1, 101, 772, -1, 69, - 774, -1, 277, -1, 101, 774, -1, 69, - 775, -1, 279, -1, 101, 775, -1, 69, - 808, -1, 281, -1, 101, 808, -1, 69, - 780, -1, 283, -1, 101, 780, -1, 71, - 770, -1, 285, -1, 103, 770, -1, 71, - 774, -1, 287, -1, 103, 774, -1, 71, - 775, -1, 289, -1, 103, 775, -1, 71, - 807, -1, 291, -1, 103, 807, -1, 72, - 770, -1, 293, -1, 104, 770, -1, 295, - -1, 73, 771, -1, 297, -1, 105, 771, - -1, 73, 772, -1, 299, -1, 105, 772, - -1, 73, 774, -1, 301, -1, 105, 774, - -1, 73, 808, -1, 303, -1, 105, 808, - -1, 73, 775, -1, 105, 775, -1, 73, - 74, -1, 307, -1, 105, 106, -1, 74, - 770, -1, 309, -1, 106, 770, -1, 75, - 807, -1, 311, -1, 107, 807, -1, 76, - 769, -1, 314, -1, 108, 769, -1, 76, - 807, -1, 316, -1, 108, 807, -1, 76, - 780, -1, 318, -1, 108, 780, -1, 76, - 183, -1, 320, -1, 108, 183, -1, 322, - -1, 78, 769, -1, 324, -1, 110, 769, - -1, 78, 807, -1, 326, -1, 110, 807, - -1, 78, 780, -1, 328, -1, 110, 780, - -1, 700, 110, -1, 331, -1, 79, 772, - -1, 333, -1, 111, 772, -1, 79, 774, - -1, 335, -1, 111, 774, -1, 79, 779, - -1, 337, -1, 111, 779, -1, 339, -1, - 82, 769, -1, 341, -1, 114, 769, -1, - 82, 807, -1, 343, -1, 114, 807, -1, - 82, 780, -1, 345, -1, 114, 780, -1, - 83, 769, -1, 347, -1, 115, 769, -1, - 83, 770, -1, 349, -1, 115, 770, -1, - 83, 807, -1, 351, -1, 115, 807, -1, - 83, 780, -1, 353, -1, 115, 780, -1, - 84, 807, -1, 355, -1, 116, 807, -1, - 84, 780, -1, 357, -1, 116, 780, -1, - 359, -1, 85, 771, -1, 361, -1, 117, - 771, -1, 85, 772, -1, 363, -1, 117, - 772, -1, 85, 774, -1, 365, -1, 117, - 774, -1, 85, 778, -1, 367, -1, 117, - 778, -1, 85, 779, -1, 369, -1, 117, - 779, -1, 85, 808, -1, 371, -1, 117, - 808, -1, 87, 770, -1, 373, -1, 119, - 770, -1, 89, 770, -1, 375, -1, 121, - 770, -1, 89, 776, -1, 255, -1, 90, - 769, -1, 378, -1, 122, 769, -1, 90, - 775, -1, 380, -1, 122, 775, -1, 90, - 780, -1, 382, -1, 122, 780, -1, 595, - -1, 387, -1, 389, -1, 596, -1, 392, - -1, 598, -1, 599, -1, 396, -1, 477, - -1, 601, -1, 603, -1, 402, -1, 608, - -1, 611, -1, 617, -1, 616, -1, 409, - -1, 623, -1, 626, -1, 629, -1, 79, - 795, -1, 417, -1, 111, 795, -1, 419, - -1, 421, -1, 640, -1, 424, -1, 643, - -1, 429, -1, 648, -1, 85, 795, -1, - 432, -1, 117, 795, -1, 650, -1, 651, - -1, 436, -1, 438, -1, 658, -1, 441, - -1, 445, -1, 68, 381, -1, 454, -1, - 68, 382, -1, 100, 382, -1, 76, 74, - -1, 457, -1, 76, 106, -1, 108, 106, - -1, 78, 74, -1, 460, -1, 78, 106, - -1, 110, 106, -1, 65, 780, -1, 462, - -1, 97, 780, -1, 73, 780, -1, 464, - -1, 105, 780, -1, 79, 780, -1, 466, - -1, 111, 780, -1, 85, 780, -1, 468, - -1, 117, 780, -1, 220, 772, -1, 470, - -1, 252, 772, -1, 220, 769, -1, 472, - -1, 252, 769, -1, 220, 780, -1, 474, - -1, 252, 780, -1, 220, 768, -1, 476, - -1, 252, 768, -1, 196, 772, -1, 479, - -1, 228, 772, -1, 550, 772, -1, 481, - -1, 551, 772, -1, 198, 772, -1, 483, - -1, 230, 772, -1, 485, -1, 71, 780, - -1, 487, -1, 103, 780, -1, 75, 780, - -1, 489, -1, 107, 780, -1, 79, 808, - -1, 491, -1, 111, 808, -1, 490, 772, - -1, 493, -1, 491, 772, -1, 439, 780, - -1, 495, -1, 658, 780, -1, 106, 780, - -1, 68, 90, -1, 499, -1, 68, 122, - -1, 100, 122, -1, 71, 769, -1, 501, - -1, 103, 769, -1, 405, -1, 447, -1, - 78, 768, -1, 505, -1, 110, 768, -1, - 197, 769, -1, 507, -1, 229, 769, -1, - 198, 769, -1, 509, -1, 230, 769, -1, - 216, 769, -1, 511, -1, 248, 769, -1, - 65, 783, -1, 513, -1, 97, 783, -1, - 65, 785, -1, 515, -1, 97, 785, -1, - 69, 783, -1, 517, -1, 101, 783, -1, - 69, 785, -1, 519, -1, 101, 785, -1, - 73, 783, -1, 521, -1, 105, 783, -1, - 73, 785, -1, 523, -1, 105, 785, -1, - 79, 783, -1, 525, -1, 111, 783, -1, - 79, 785, -1, 527, -1, 111, 785, -1, - 82, 783, -1, 529, -1, 114, 783, -1, - 82, 785, -1, 531, -1, 114, 785, -1, - 85, 783, -1, 533, -1, 117, 783, -1, - 85, 785, -1, 535, -1, 117, 785, -1, - 83, 806, -1, 537, -1, 115, 806, -1, - 84, 806, -1, 539, -1, 116, 806, -1, - 541, -1, 72, 780, -1, 543, -1, 104, - 780, -1, 414, -1, 547, -1, 549, -1, - 65, 775, -1, 551, -1, 97, 775, -1, - 69, 807, -1, 553, -1, 101, 807, -1, - 214, 772, -1, 555, -1, 246, 772, -1, - 213, 772, -1, 557, -1, 245, 772, -1, - 79, 775, -1, 559, -1, 111, 775, -1, - 558, 772, -1, 561, -1, 559, 772, -1, - 89, 772, -1, 563, -1, 121, 772, -1, - 11365, -1, 572, -1, 410, -1, 11366, -1, - 578, -1, 384, -1, 649, -1, 652, -1, - 583, -1, 585, -1, 587, -1, 589, -1, - 591, -1, 614, -1, 633, -1, 635, -1, - 641, -1, 32, 774, -1, 32, 775, -1, - 32, 778, -1, 32, 808, -1, 32, 771, - -1, 32, 779, -1, 661, -1, 768, -1, - 769, -1, 787, -1, 776, 769, -1, 953, - -1, 697, -1, 32, 837, -1, 59, -1, - 168, 769, -1, 913, 769, -1, 940, -1, - 183, -1, 917, 769, -1, 941, -1, 919, - 769, -1, 942, -1, 921, 769, -1, 943, - -1, 927, 769, -1, 972, -1, 933, 769, - -1, 973, -1, 937, 769, -1, 974, -1, - 970, 769, -1, 953, 776, 769, -1, 945, - -1, 946, -1, 947, -1, 948, -1, 949, - -1, 950, -1, 951, -1, 952, -1, 954, - -1, 955, -1, 957, -1, 958, -1, 959, - -1, 960, -1, 961, -1, 963, -1, 964, - -1, 965, -1, 966, -1, 967, -1, 968, - -1, 969, -1, 921, 776, -1, 970, -1, - 933, 776, -1, 971, -1, 945, 769, -1, - 949, 769, -1, 951, 769, -1, 953, 769, - -1, 971, 769, -1, 965, 776, 769, -1, - 953, 776, -1, 965, 776, -1, 959, 769, - -1, 965, 769, -1, 969, 769, -1, 933, - -1, 978, 769, -1, 978, 776, -1, 985, - -1, 987, -1, 989, -1, 991, -1, 993, - -1, 995, -1, 997, -1, 999, -1, 1001, - -1, 1003, -1, 1005, -1, 1007, -1, 962, - -1, 920, -1, 1016, -1, 931, -1, 1010, - -1, 1019, -1, 891, -1, 892, -1, 893, - -1, 1045, 768, -1, 1104, -1, 1045, 776, - -1, 1105, -1, 1106, -1, 1043, 769, -1, - 1107, -1, 1108, -1, 1109, -1, 1110, -1, - 1030, 776, -1, 1111, -1, 1112, -1, 1113, - -1, 1114, -1, 1115, -1, 1050, 769, -1, - 1116, -1, 1048, 768, -1, 1117, -1, 1059, - 774, -1, 1118, -1, 1119, -1, 1072, -1, - 1073, -1, 1074, -1, 1075, -1, 1076, -1, - 1077, -1, 1078, -1, 1079, -1, 1080, -1, - 1048, 774, -1, 1081, -1, 1082, -1, 1083, - -1, 1084, -1, 1085, -1, 1086, -1, 1087, - -1, 1088, -1, 1089, -1, 1090, -1, 1091, - -1, 1092, -1, 1093, -1, 1094, -1, 1095, - -1, 1096, -1, 1097, -1, 1098, -1, 1099, - -1, 1100, -1, 1101, -1, 1102, -1, 1103, - -1, 1080, 774, -1, 1077, 768, -1, 1077, - 776, -1, 1075, 769, -1, 1110, 776, -1, - 1082, 769, -1, 1080, 768, -1, 1091, 774, - -1, 1121, -1, 1123, -1, 1125, -1, 1127, - -1, 1129, -1, 1131, -1, 1133, -1, 1135, - -1, 1137, -1, 1139, -1, 1141, -1, 1140, - 783, -1, 1143, -1, 1141, 783, -1, 1145, - -1, 1147, -1, 1149, -1, 1151, -1, 1153, - -1, 1163, -1, 1165, -1, 1167, -1, 1169, - -1, 1171, -1, 1173, -1, 1175, -1, 1177, - -1, 1179, -1, 1181, -1, 1183, -1, 1185, - -1, 1187, -1, 1189, -1, 1191, -1, 1193, - -1, 1195, -1, 1197, -1, 1199, -1, 1201, - -1, 1203, -1, 1205, -1, 1207, -1, 1209, - -1, 1211, -1, 1213, -1, 1215, -1, 1231, - -1, 1046, 774, -1, 1218, -1, 1078, 774, - -1, 1220, -1, 1222, -1, 1224, -1, 1226, - -1, 1228, -1, 1230, -1, 1040, 774, -1, - 1233, -1, 1072, 774, -1, 1040, 776, -1, - 1235, -1, 1072, 776, -1, 1237, -1, 1045, - 774, -1, 1239, -1, 1077, 774, -1, 1241, - -1, 1240, 776, -1, 1243, -1, 1241, 776, - -1, 1046, 776, -1, 1245, -1, 1078, 776, - -1, 1047, 776, -1, 1247, -1, 1079, 776, - -1, 1249, -1, 1048, 772, -1, 1251, -1, - 1080, 772, -1, 1048, 776, -1, 1253, -1, - 1080, 776, -1, 1054, 776, -1, 1255, -1, - 1086, 776, -1, 1257, -1, 1256, 776, -1, - 1259, -1, 1257, 776, -1, 1069, 776, -1, - 1261, -1, 1101, 776, -1, 1059, 772, -1, - 1263, -1, 1091, 772, -1, 1059, 776, -1, - 1265, -1, 1091, 776, -1, 1059, 779, -1, - 1267, -1, 1091, 779, -1, 1063, 776, -1, - 1269, -1, 1095, 776, -1, 1271, -1, 1067, - 776, -1, 1273, -1, 1099, 776, -1, 1275, - -1, 1277, -1, 1279, -1, 1281, -1, 1283, - -1, 1285, -1, 1287, -1, 1289, -1, 1291, - -1, 1293, -1, 1295, -1, 1297, -1, 1299, - -1, 1377, -1, 1378, -1, 1379, -1, 1380, - -1, 1381, -1, 1382, -1, 1383, -1, 1384, - -1, 1385, -1, 1386, -1, 1387, -1, 1388, - -1, 1389, -1, 1390, -1, 1391, -1, 1392, - -1, 1393, -1, 1394, -1, 1395, -1, 1396, - -1, 1397, -1, 1398, -1, 1399, -1, 1400, - -1, 1401, -1, 1402, -1, 1403, -1, 1404, - -1, 1405, -1, 1406, -1, 1407, -1, 1408, - -1, 1409, -1, 1410, -1, 1411, -1, 1412, - -1, 1413, -1, 1414, -1, 1381, 1410, -1, - 1575, 1619, -1, 1575, 1620, -1, 1608, 1620, - -1, 1575, 1621, -1, 1610, 1620, -1, 1575, - 1652, -1, 1608, 1652, -1, 1735, 1652, -1, - 1610, 1652, -1, 1749, 1620, -1, 1729, 1620, - -1, 1746, 1620, -1, 2344, 2364, -1, 2352, - 2364, -1, 2355, 2364, -1, 2325, 2364, -1, - 2326, 2364, -1, 2327, 2364, -1, 2332, 2364, - -1, 2337, 2364, -1, 2338, 2364, -1, 2347, - 2364, -1, 2351, 2364, -1, 2503, 2494, -1, - 2503, 2519, -1, 2465, 2492, -1, 2466, 2492, - -1, 2479, 2492, -1, 2610, 2620, -1, 2616, - 2620, -1, 2582, 2620, -1, 2583, 2620, -1, - 2588, 2620, -1, 2603, 2620, -1, 2887, 2902, - -1, 2887, 2878, -1, 2887, 2903, -1, 2849, - 2876, -1, 2850, 2876, -1, 2962, 3031, -1, - 3014, 3006, -1, 3015, 3006, -1, 3014, 3031, - -1, 3142, 3158, -1, 3263, 3285, -1, 3270, - 3285, -1, 3270, 3286, -1, 3270, 3266, -1, - 3274, 3285, -1, 3398, 3390, -1, 3399, 3390, - -1, 3398, 3415, -1, 3545, 3530, -1, 3545, - 3535, -1, 3548, 3530, -1, 3545, 3551, -1, - 3661, 3634, -1, 3789, 3762, -1, 3755, 3737, - -1, 3755, 3745, -1, 3851, -1, 3906, 4023, - -1, 3916, 4023, -1, 3921, 4023, -1, 3926, - 4023, -1, 3931, 4023, -1, 3904, 4021, -1, - 3953, 3954, -1, 3953, 3956, -1, 4018, 3968, - -1, 4018, 3969, -1, 4019, 3968, -1, 4019, - 3969, -1, 3953, 3968, -1, 3986, 4023, -1, - 3996, 4023, -1, 4001, 4023, -1, 4006, 4023, - -1, 4011, 4023, -1, 3984, 4021, -1, 4133, - 4142, -1, 11520, -1, 11521, -1, 11522, -1, - 11523, -1, 11524, -1, 11525, -1, 11526, -1, - 11527, -1, 11528, -1, 11529, -1, 11530, -1, - 11531, -1, 11532, -1, 11533, -1, 11534, -1, - 11535, -1, 11536, -1, 11537, -1, 11538, -1, - 11539, -1, 11540, -1, 11541, -1, 11542, -1, - 11543, -1, 11544, -1, 11545, -1, 11546, -1, - 11547, -1, 11548, -1, 11549, -1, 11550, -1, - 11551, -1, 11552, -1, 11553, -1, 11554, -1, - 11555, -1, 11556, -1, 11557, -1, 4316, -1, - 6917, 6965, -1, 6919, 6965, -1, 6921, 6965, - -1, 6923, 6965, -1, 6925, 6965, -1, 6929, - 6965, -1, 6970, 6965, -1, 6972, 6965, -1, - 6974, 6965, -1, 6975, 6965, -1, 6978, 6965, - -1, 65, -1, 198, -1, 66, -1, 68, - -1, 69, -1, 398, -1, 71, -1, 72, - -1, 73, -1, 74, -1, 75, -1, 76, - -1, 77, -1, 78, -1, 79, -1, 546, - -1, 80, -1, 82, -1, 84, -1, 85, - -1, 87, -1, 592, -1, 593, -1, 7426, - -1, 604, -1, 7446, -1, 7447, -1, 7453, - -1, 7461, -1, 594, -1, 597, -1, 607, - -1, 609, -1, 613, -1, 618, -1, 7547, - -1, 669, -1, 621, -1, 7557, -1, 671, - -1, 625, -1, 624, -1, 627, -1, 628, - -1, 632, -1, 642, -1, 427, -1, 7452, - -1, 656, -1, 657, -1, 65, 805, -1, - 7681, -1, 97, 805, -1, 66, 775, -1, - 7683, -1, 98, 775, -1, 66, 803, -1, - 7685, -1, 98, 803, -1, 66, 817, -1, - 7687, -1, 98, 817, -1, 199, 769, -1, - 7689, -1, 231, 769, -1, 68, 775, -1, - 7691, -1, 100, 775, -1, 68, 803, -1, - 7693, -1, 100, 803, -1, 68, 817, -1, - 7695, -1, 100, 817, -1, 68, 807, -1, - 7697, -1, 100, 807, -1, 68, 813, -1, - 7699, -1, 100, 813, -1, 274, 768, -1, - 7701, -1, 275, 768, -1, 274, 769, -1, - 7703, -1, 275, 769, -1, 69, 813, -1, - 7705, -1, 101, 813, -1, 69, 816, -1, - 7707, -1, 101, 816, -1, 552, 774, -1, - 7709, -1, 553, 774, -1, 70, 775, -1, - 7711, -1, 102, 775, -1, 71, 772, -1, - 7713, -1, 103, 772, -1, 72, 775, -1, - 7715, -1, 104, 775, -1, 72, 803, -1, - 7717, -1, 104, 803, -1, 72, 776, -1, - 7719, -1, 104, 776, -1, 72, 807, -1, - 7721, -1, 104, 807, -1, 72, 814, -1, - 7723, -1, 104, 814, -1, 73, 816, -1, - 7725, -1, 105, 816, -1, 207, 769, -1, - 7727, -1, 239, 769, -1, 75, 769, -1, - 7729, -1, 107, 769, -1, 75, 803, -1, - 7731, -1, 107, 803, -1, 75, 817, -1, - 7733, -1, 107, 817, -1, 76, 803, -1, - 7735, -1, 108, 803, -1, 7734, 772, -1, - 7737, -1, 7735, 772, -1, 76, 817, -1, - 7739, -1, 108, 817, -1, 76, 813, -1, - 7741, -1, 108, 813, -1, 77, 769, -1, - 7743, -1, 109, 769, -1, 77, 775, -1, - 7745, -1, 109, 775, -1, 77, 803, -1, - 7747, -1, 109, 803, -1, 78, 775, -1, - 7749, -1, 110, 775, -1, 78, 803, -1, - 7751, -1, 110, 803, -1, 78, 817, -1, - 7753, -1, 110, 817, -1, 78, 813, -1, - 7755, -1, 110, 813, -1, 213, 769, -1, - 7757, -1, 245, 769, -1, 213, 776, -1, - 7759, -1, 245, 776, -1, 332, 768, -1, - 7761, -1, 333, 768, -1, 332, 769, -1, - 7763, -1, 333, 769, -1, 80, 769, -1, - 7765, -1, 112, 769, -1, 80, 775, -1, - 7767, -1, 112, 775, -1, 82, 775, -1, - 7769, -1, 114, 775, -1, 82, 803, -1, - 7771, -1, 114, 803, -1, 7770, 772, -1, - 7773, -1, 7771, 772, -1, 82, 817, -1, - 7775, -1, 114, 817, -1, 83, 775, -1, - 7777, -1, 115, 775, -1, 83, 803, -1, - 7779, -1, 115, 803, -1, 346, 775, -1, - 7781, -1, 347, 775, -1, 352, 775, -1, - 7783, -1, 353, 775, -1, 7778, 775, -1, - 7785, -1, 7779, 775, -1, 84, 775, -1, - 7787, -1, 116, 775, -1, 84, 803, -1, - 7789, -1, 116, 803, -1, 84, 817, -1, - 7791, -1, 116, 817, -1, 84, 813, -1, - 7793, -1, 116, 813, -1, 85, 804, -1, - 7795, -1, 117, 804, -1, 85, 816, -1, - 7797, -1, 117, 816, -1, 85, 813, -1, - 7799, -1, 117, 813, -1, 360, 769, -1, - 7801, -1, 361, 769, -1, 362, 776, -1, - 7803, -1, 363, 776, -1, 86, 771, -1, - 7805, -1, 118, 771, -1, 86, 803, -1, - 7807, -1, 118, 803, -1, 87, 768, -1, - 7809, -1, 119, 768, -1, 87, 769, -1, - 7811, -1, 119, 769, -1, 87, 776, -1, - 7813, -1, 119, 776, -1, 87, 775, -1, - 7815, -1, 119, 775, -1, 87, 803, -1, - 7817, -1, 119, 803, -1, 88, 775, -1, - 7819, -1, 120, 775, -1, 88, 776, -1, - 7821, -1, 120, 776, -1, 89, 775, -1, - 7823, -1, 121, 775, -1, 90, 770, -1, - 7825, -1, 122, 770, -1, 90, 803, -1, - 7827, -1, 122, 803, -1, 90, 817, -1, - 7829, -1, 122, 817, -1, 104, 817, -1, - 116, 776, -1, 119, 778, -1, 121, 778, - -1, 97, 702, -1, 383, 775, -1, 65, - 803, -1, 7841, -1, 97, 803, -1, 65, - 777, -1, 7843, -1, 97, 777, -1, 194, - 769, -1, 7845, -1, 226, 769, -1, 194, - 768, -1, 7847, -1, 226, 768, -1, 194, - 777, -1, 7849, -1, 226, 777, -1, 194, - 771, -1, 7851, -1, 226, 771, -1, 7840, - 770, -1, 7853, -1, 7841, 770, -1, 258, - 769, -1, 7855, -1, 259, 769, -1, 258, - 768, -1, 7857, -1, 259, 768, -1, 258, - 777, -1, 7859, -1, 259, 777, -1, 258, - 771, -1, 7861, -1, 259, 771, -1, 7840, - 774, -1, 7863, -1, 7841, 774, -1, 69, - 803, -1, 7865, -1, 101, 803, -1, 69, - 777, -1, 7867, -1, 101, 777, -1, 69, - 771, -1, 7869, -1, 101, 771, -1, 202, - 769, -1, 7871, -1, 234, 769, -1, 202, - 768, -1, 7873, -1, 234, 768, -1, 202, - 777, -1, 7875, -1, 234, 777, -1, 202, - 771, -1, 7877, -1, 234, 771, -1, 7864, - 770, -1, 7879, -1, 7865, 770, -1, 73, - 777, -1, 7881, -1, 105, 777, -1, 73, - 803, -1, 7883, -1, 105, 803, -1, 79, - 803, -1, 7885, -1, 111, 803, -1, 79, - 777, -1, 7887, -1, 111, 777, -1, 212, - 769, -1, 7889, -1, 244, 769, -1, 212, - 768, -1, 7891, -1, 244, 768, -1, 212, - 777, -1, 7893, -1, 244, 777, -1, 212, - 771, -1, 7895, -1, 244, 771, -1, 7884, - 770, -1, 7897, -1, 7885, 770, -1, 416, - 769, -1, 7899, -1, 417, 769, -1, 416, - 768, -1, 7901, -1, 417, 768, -1, 416, - 777, -1, 7903, -1, 417, 777, -1, 416, - 771, -1, 7905, -1, 417, 771, -1, 416, - 803, -1, 7907, -1, 417, 803, -1, 85, - 803, -1, 7909, -1, 117, 803, -1, 85, - 777, -1, 7911, -1, 117, 777, -1, 431, - 769, -1, 7913, -1, 432, 769, -1, 431, - 768, -1, 7915, -1, 432, 768, -1, 431, - 777, -1, 7917, -1, 432, 777, -1, 431, - 771, -1, 7919, -1, 432, 771, -1, 431, - 803, -1, 7921, -1, 432, 803, -1, 89, - 768, -1, 7923, -1, 121, 768, -1, 89, - 803, -1, 7925, -1, 121, 803, -1, 89, - 777, -1, 7927, -1, 121, 777, -1, 89, - 771, -1, 7929, -1, 121, 771, -1, 945, - 787, -1, 945, 788, -1, 7936, 768, -1, - 7937, 768, -1, 7936, 769, -1, 7937, 769, - -1, 7936, 834, -1, 7937, 834, -1, 913, - 787, -1, 7936, -1, 913, 788, -1, 7937, - -1, 7944, 768, -1, 7938, -1, 7945, 768, - -1, 7939, -1, 7944, 769, -1, 7940, -1, - 7945, 769, -1, 7941, -1, 7944, 834, -1, - 7942, -1, 7945, 834, -1, 7943, -1, 949, - 787, -1, 949, 788, -1, 7952, 768, -1, - 7953, 768, -1, 7952, 769, -1, 7953, 769, - -1, 917, 787, -1, 7952, -1, 917, 788, - -1, 7953, -1, 7960, 768, -1, 7954, -1, - 7961, 768, -1, 7955, -1, 7960, 769, -1, - 7956, -1, 7961, 769, -1, 7957, -1, 951, - 787, -1, 951, 788, -1, 7968, 768, -1, - 7969, 768, -1, 7968, 769, -1, 7969, 769, - -1, 7968, 834, -1, 7969, 834, -1, 919, - 787, -1, 7968, -1, 919, 788, -1, 7969, - -1, 7976, 768, -1, 7970, -1, 7977, 768, - -1, 7971, -1, 7976, 769, -1, 7972, -1, - 7977, 769, -1, 7973, -1, 7976, 834, -1, - 7974, -1, 7977, 834, -1, 7975, -1, 953, - 787, -1, 953, 788, -1, 7984, 768, -1, - 7985, 768, -1, 7984, 769, -1, 7985, 769, - -1, 7984, 834, -1, 7985, 834, -1, 921, - 787, -1, 7984, -1, 921, 788, -1, 7985, - -1, 7992, 768, -1, 7986, -1, 7993, 768, - -1, 7987, -1, 7992, 769, -1, 7988, -1, - 7993, 769, -1, 7989, -1, 7992, 834, -1, - 7990, -1, 7993, 834, -1, 7991, -1, 959, - 787, -1, 959, 788, -1, 8000, 768, -1, - 8001, 768, -1, 8000, 769, -1, 8001, 769, - -1, 927, 787, -1, 8000, -1, 927, 788, - -1, 8001, -1, 8008, 768, -1, 8002, -1, - 8009, 768, -1, 8003, -1, 8008, 769, -1, - 8004, -1, 8009, 769, -1, 8005, -1, 965, - 787, -1, 965, 788, -1, 8016, 768, -1, - 965, 787, 768, -1, 8017, 768, -1, 8016, - 769, -1, 965, 787, 769, -1, 8017, 769, - -1, 8016, 834, -1, 965, 787, 834, -1, - 8017, 834, -1, 933, 788, -1, 8017, -1, - 8025, 768, -1, 8019, -1, 8025, 769, -1, - 8021, -1, 8025, 834, -1, 8023, -1, 969, - 787, -1, 969, 788, -1, 8032, 768, -1, - 8033, 768, -1, 8032, 769, -1, 8033, 769, - -1, 8032, 834, -1, 8033, 834, -1, 937, - 787, -1, 8032, -1, 937, 788, -1, 8033, - -1, 8040, 768, -1, 8034, -1, 8041, 768, - -1, 8035, -1, 8040, 769, -1, 8036, -1, - 8041, 769, -1, 8037, -1, 8040, 834, -1, - 8038, -1, 8041, 834, -1, 8039, -1, 945, - 768, -1, 949, 768, -1, 951, 768, -1, - 953, 768, -1, 959, 768, -1, 965, 768, - -1, 969, 768, -1, 7936, 837, -1, 7936, - 953, -1, 7937, 837, -1, 7937, 953, -1, - 7938, 837, -1, 7938, 953, -1, 7939, 837, - -1, 7939, 953, -1, 7940, 837, -1, 7940, - 953, -1, 7941, 837, -1, 7941, 953, -1, - 7942, 837, -1, 7942, 953, -1, 7943, 837, - -1, 7943, 953, -1, 7944, 837, -1, 8064, - -1, 7945, 837, -1, 8065, -1, 7946, 837, - -1, 8066, -1, 7947, 837, -1, 8067, -1, - 7948, 837, -1, 8068, -1, 7949, 837, -1, - 8069, -1, 7950, 837, -1, 8070, -1, 7951, - 837, -1, 8071, -1, 7968, 837, -1, 7968, - 953, -1, 7969, 837, -1, 7969, 953, -1, - 7970, 837, -1, 7970, 953, -1, 7971, 837, - -1, 7971, 953, -1, 7972, 837, -1, 7972, - 953, -1, 7973, 837, -1, 7973, 953, -1, - 7974, 837, -1, 7974, 953, -1, 7975, 837, - -1, 7975, 953, -1, 7976, 837, -1, 8080, - -1, 7977, 837, -1, 8081, -1, 7978, 837, - -1, 8082, -1, 7979, 837, -1, 8083, -1, - 7980, 837, -1, 8084, -1, 7981, 837, -1, - 8085, -1, 7982, 837, -1, 8086, -1, 7983, - 837, -1, 8087, -1, 8032, 837, -1, 8032, - 953, -1, 8033, 837, -1, 8033, 953, -1, - 8034, 837, -1, 8034, 953, -1, 8035, 837, - -1, 8035, 953, -1, 8036, 837, -1, 8036, - 953, -1, 8037, 837, -1, 8037, 953, -1, - 8038, 837, -1, 8038, 953, -1, 8039, 837, - -1, 8039, 953, -1, 8040, 837, -1, 8096, - -1, 8041, 837, -1, 8097, -1, 8042, 837, - -1, 8098, -1, 8043, 837, -1, 8099, -1, - 8044, 837, -1, 8100, -1, 8045, 837, -1, - 8101, -1, 8046, 837, -1, 8102, -1, 8047, - 837, -1, 8103, -1, 945, 774, -1, 945, - 772, -1, 8048, 837, -1, 8048, 953, -1, - 945, 837, -1, 945, 953, -1, 940, 837, - -1, 940, 953, -1, 945, 834, -1, 8118, - 837, -1, 945, 834, 953, -1, 913, 774, - -1, 8112, -1, 913, 772, -1, 8113, -1, - 913, 768, -1, 8048, -1, 902, -1, 8049, - -1, 913, 837, -1, 8115, -1, 32, 787, - -1, 32, 834, -1, 168, 834, -1, 8052, - 837, -1, 8052, 953, -1, 951, 837, -1, - 951, 953, -1, 942, 837, -1, 942, 953, - -1, 951, 834, -1, 8134, 837, -1, 951, - 834, 953, -1, 917, 768, -1, 8050, -1, - 904, -1, 8051, -1, 919, 768, -1, 8052, - -1, 905, -1, 8053, -1, 919, 837, -1, - 8131, -1, 8127, 768, -1, 8127, 769, -1, - 8127, 834, -1, 953, 774, -1, 953, 772, - -1, 970, 768, -1, 953, 776, 768, -1, - 912, -1, 953, 834, -1, 970, 834, -1, - 953, 776, 834, -1, 921, 774, -1, 8144, - -1, 921, 772, -1, 8145, -1, 921, 768, - -1, 8054, -1, 906, -1, 8055, -1, 8190, - 768, -1, 8190, 769, -1, 8190, 834, -1, - 965, 774, -1, 965, 772, -1, 971, 768, - -1, 965, 776, 768, -1, 944, -1, 961, - 787, -1, 961, 788, -1, 965, 834, -1, - 971, 834, -1, 965, 776, 834, -1, 933, - 774, -1, 8160, -1, 933, 772, -1, 8161, - -1, 933, 768, -1, 8058, -1, 910, -1, - 8059, -1, 929, 788, -1, 8165, -1, 168, - 768, -1, 901, -1, 96, -1, 8060, 837, - -1, 8060, 953, -1, 969, 837, -1, 969, - 953, -1, 974, 837, -1, 974, 953, -1, - 969, 834, -1, 8182, 837, -1, 969, 834, - 953, -1, 927, 768, -1, 8056, -1, 908, - -1, 8057, -1, 937, 768, -1, 8060, -1, - 911, -1, 8061, -1, 937, 837, -1, 8179, - -1, 180, -1, 32, 788, -1, 8194, -1, - 8195, -1, 8208, -1, 32, 819, -1, 46, - -1, 46, 46, -1, 46, 46, 46, -1, - 8242, 8242, -1, 8242, 8242, 8242, -1, 8245, - 8245, -1, 8245, 8245, 8245, -1, 33, 33, - -1, 32, 773, -1, 63, 63, -1, 63, - 33, -1, 33, 63, -1, 8242, 8242, 8242, - 8242, -1, 48, -1, 52, -1, 53, -1, - 54, -1, 55, -1, 56, -1, 57, -1, - 43, -1, 8722, -1, 61, -1, 40, -1, - 41, -1, 82, 115, -1, 97, 47, 99, - -1, 97, 47, 115, -1, 67, -1, 176, - 67, -1, 99, 47, 111, -1, 99, 47, - 117, -1, 400, -1, 176, 70, -1, 78, - 111, -1, 81, -1, 83, 77, -1, 84, - 69, 76, -1, 84, 77, -1, 90, -1, - 937, -1, 197, -1, 70, -1, 8526, -1, - 1488, -1, 1489, -1, 1490, -1, 1491, -1, - 70, 65, 88, -1, 915, -1, 928, -1, - 8721, -1, 49, 8260, 51, -1, 50, 8260, - 51, -1, 49, 8260, 53, -1, 50, 8260, - 53, -1, 51, 8260, 53, -1, 52, 8260, - 53, -1, 49, 8260, 54, -1, 53, 8260, - 54, -1, 49, 8260, 56, -1, 51, 8260, - 56, -1, 53, 8260, 56, -1, 55, 8260, - 56, -1, 49, 8260, -1, 8560, -1, 73, - 73, -1, 8561, -1, 73, 73, 73, -1, - 8562, -1, 73, 86, -1, 8563, -1, 86, - -1, 8564, -1, 86, 73, -1, 8565, -1, - 86, 73, 73, -1, 8566, -1, 86, 73, - 73, 73, -1, 8567, -1, 73, 88, -1, - 8568, -1, 88, -1, 8569, -1, 88, 73, - -1, 8570, -1, 88, 73, 73, -1, 8571, - -1, 8572, -1, 8573, -1, 8574, -1, 8575, - -1, 105, 105, -1, 105, 105, 105, -1, - 105, 118, -1, 118, 105, -1, 118, 105, - 105, -1, 118, 105, 105, 105, -1, 105, - 120, -1, 120, 105, -1, 120, 105, 105, - -1, 8580, -1, 8592, 824, -1, 8594, 824, - -1, 8596, 824, -1, 8656, 824, -1, 8660, - 824, -1, 8658, 824, -1, 8707, 824, -1, - 8712, 824, -1, 8715, 824, -1, 8739, 824, - -1, 8741, 824, -1, 8747, 8747, -1, 8747, - 8747, 8747, -1, 8750, 8750, -1, 8750, 8750, - 8750, -1, 8764, 824, -1, 8771, 824, -1, - 8773, 824, -1, 8776, 824, -1, 61, 824, - -1, 8801, 824, -1, 8781, 824, -1, 60, - 824, -1, 62, 824, -1, 8804, 824, -1, - 8805, 824, -1, 8818, 824, -1, 8819, 824, - -1, 8822, 824, -1, 8823, 824, -1, 8826, - 824, -1, 8827, 824, -1, 8834, 824, -1, - 8835, 824, -1, 8838, 824, -1, 8839, 824, - -1, 8866, 824, -1, 8872, 824, -1, 8873, - 824, -1, 8875, 824, -1, 8828, 824, -1, - 8829, 824, -1, 8849, 824, -1, 8850, 824, - -1, 8882, 824, -1, 8883, 824, -1, 8884, - 824, -1, 8885, 824, -1, 12296, -1, 12297, - -1, 49, 48, -1, 49, 49, -1, 49, - 50, -1, 49, 51, -1, 49, 52, -1, - 49, 53, -1, 49, 54, -1, 49, 55, - -1, 49, 56, -1, 49, 57, -1, 50, - 48, -1, 40, 49, 41, -1, 40, 50, - 41, -1, 40, 51, 41, -1, 40, 52, - 41, -1, 40, 53, 41, -1, 40, 54, - 41, -1, 40, 55, 41, -1, 40, 56, - 41, -1, 40, 57, 41, -1, 40, 49, - 48, 41, -1, 40, 49, 49, 41, -1, - 40, 49, 50, 41, -1, 40, 49, 51, - 41, -1, 40, 49, 52, 41, -1, 40, - 49, 53, 41, -1, 40, 49, 54, 41, - -1, 40, 49, 55, 41, -1, 40, 49, - 56, 41, -1, 40, 49, 57, 41, -1, - 40, 50, 48, 41, -1, 49, 46, -1, - 50, 46, -1, 51, 46, -1, 52, 46, - -1, 53, 46, -1, 54, 46, -1, 55, - 46, -1, 56, 46, -1, 57, 46, -1, - 49, 48, 46, -1, 49, 49, 46, -1, - 49, 50, 46, -1, 49, 51, 46, -1, - 49, 52, 46, -1, 49, 53, 46, -1, - 49, 54, 46, -1, 49, 55, 46, -1, - 49, 56, 46, -1, 49, 57, 46, -1, - 50, 48, 46, -1, 40, 97, 41, -1, - 40, 98, 41, -1, 40, 99, 41, -1, - 40, 100, 41, -1, 40, 101, 41, -1, - 40, 102, 41, -1, 40, 103, 41, -1, - 40, 104, 41, -1, 40, 105, 41, -1, - 40, 106, 41, -1, 40, 107, 41, -1, - 40, 108, 41, -1, 40, 109, 41, -1, - 40, 110, 41, -1, 40, 111, 41, -1, - 40, 112, 41, -1, 40, 113, 41, -1, - 40, 114, 41, -1, 40, 115, 41, -1, - 40, 116, 41, -1, 40, 117, 41, -1, - 40, 118, 41, -1, 40, 119, 41, -1, - 40, 120, 41, -1, 40, 121, 41, -1, - 40, 122, 41, -1, 9424, -1, 9425, -1, - 9426, -1, 9427, -1, 9428, -1, 9429, -1, - 9430, -1, 9431, -1, 9432, -1, 9433, -1, - 9434, -1, 9435, -1, 9436, -1, 9437, -1, - 9438, -1, 9439, -1, 9440, -1, 9441, -1, - 83, -1, 9442, -1, 9443, -1, 9444, -1, - 9445, -1, 9446, -1, 9447, -1, 89, -1, - 9448, -1, 9449, -1, 8747, 8747, 8747, 8747, - -1, 58, 58, 61, -1, 61, 61, -1, - 61, 61, 61, -1, 10973, 824, -1, 11312, - -1, 11313, -1, 11314, -1, 11315, -1, 11316, - -1, 11317, -1, 11318, -1, 11319, -1, 11320, - -1, 11321, -1, 11322, -1, 11323, -1, 11324, - -1, 11325, -1, 11326, -1, 11327, -1, 11328, - -1, 11329, -1, 11330, -1, 11331, -1, 11332, - -1, 11333, -1, 11334, -1, 11335, -1, 11336, - -1, 11337, -1, 11338, -1, 11339, -1, 11340, - -1, 11341, -1, 11342, -1, 11343, -1, 11344, - -1, 11345, -1, 11346, -1, 11347, -1, 11348, - -1, 11349, -1, 11350, -1, 11351, -1, 11352, - -1, 11353, -1, 11354, -1, 11355, -1, 11356, - -1, 11357, -1, 11358, -1, 11361, -1, 619, - -1, 7549, -1, 637, -1, 11368, -1, 11370, - -1, 11372, -1, 11382, -1, 11393, -1, 11395, - -1, 11397, -1, 11399, -1, 11401, -1, 11403, - -1, 11405, -1, 11407, -1, 11409, -1, 11411, - -1, 11413, -1, 11415, -1, 11417, -1, 11419, - -1, 11421, -1, 11423, -1, 11425, -1, 11427, - -1, 11429, -1, 11431, -1, 11433, -1, 11435, - -1, 11437, -1, 11439, -1, 11441, -1, 11443, - -1, 11445, -1, 11447, -1, 11449, -1, 11451, - -1, 11453, -1, 11455, -1, 11457, -1, 11459, - -1, 11461, -1, 11463, -1, 11465, -1, 11467, - -1, 11469, -1, 11471, -1, 11473, -1, 11475, - -1, 11477, -1, 11479, -1, 11481, -1, 11483, - -1, 11485, -1, 11487, -1, 11489, -1, 11491, - -1, 11617, -1, 27597, -1, 40863, -1, 19968, - -1, 20008, -1, 20022, -1, 20031, -1, 20057, - -1, 20101, -1, 20108, -1, 20128, -1, 20154, - -1, 20799, -1, 20837, -1, 20843, -1, 20866, - -1, 20886, -1, 20907, -1, 20960, -1, 20981, - -1, 20992, -1, 21147, -1, 21241, -1, 21269, - -1, 21274, -1, 21304, -1, 21313, -1, 21340, - -1, 21353, -1, 21378, -1, 21430, -1, 21448, - -1, 21475, -1, 22231, -1, 22303, -1, 22763, - -1, 22786, -1, 22794, -1, 22805, -1, 22823, - -1, 22899, -1, 23376, -1, 23424, -1, 23544, - -1, 23567, -1, 23586, -1, 23608, -1, 23662, - -1, 23665, -1, 24027, -1, 24037, -1, 24049, - -1, 24062, -1, 24178, -1, 24186, -1, 24191, - -1, 24308, -1, 24318, -1, 24331, -1, 24339, - -1, 24400, -1, 24417, -1, 24435, -1, 24515, - -1, 25096, -1, 25142, -1, 25163, -1, 25903, - -1, 25908, -1, 25991, -1, 26007, -1, 26020, - -1, 26041, -1, 26080, -1, 26085, -1, 26352, - -1, 26376, -1, 26408, -1, 27424, -1, 27490, - -1, 27513, -1, 27571, -1, 27595, -1, 27604, - -1, 27611, -1, 27663, -1, 27668, -1, 27700, - -1, 28779, -1, 29226, -1, 29238, -1, 29243, - -1, 29247, -1, 29255, -1, 29273, -1, 29275, - -1, 29356, -1, 29572, -1, 29577, -1, 29916, - -1, 29926, -1, 29976, -1, 29983, -1, 29992, - -1, 30000, -1, 30091, -1, 30098, -1, 30326, - -1, 30333, -1, 30382, -1, 30399, -1, 30446, - -1, 30683, -1, 30690, -1, 30707, -1, 31034, - -1, 31160, -1, 31166, -1, 31348, -1, 31435, - -1, 31481, -1, 31859, -1, 31992, -1, 32566, - -1, 32593, -1, 32650, -1, 32701, -1, 32769, - -1, 32780, -1, 32786, -1, 32819, -1, 32895, - -1, 32905, -1, 33251, -1, 33258, -1, 33267, - -1, 33276, -1, 33292, -1, 33307, -1, 33311, - -1, 33390, -1, 33394, -1, 33400, -1, 34381, - -1, 34411, -1, 34880, -1, 34892, -1, 34915, - -1, 35198, -1, 35211, -1, 35282, -1, 35328, - -1, 35895, -1, 35910, -1, 35925, -1, 35960, - -1, 35997, -1, 36196, -1, 36208, -1, 36275, - -1, 36523, -1, 36554, -1, 36763, -1, 36784, - -1, 36789, -1, 37009, -1, 37193, -1, 37318, - -1, 37324, -1, 37329, -1, 38263, -1, 38272, - -1, 38428, -1, 38582, -1, 38585, -1, 38632, - -1, 38737, -1, 38750, -1, 38754, -1, 38761, - -1, 38859, -1, 38893, -1, 38899, -1, 38913, - -1, 39080, -1, 39131, -1, 39135, -1, 39318, - -1, 39321, -1, 39340, -1, 39592, -1, 39640, - -1, 39647, -1, 39717, -1, 39727, -1, 39730, - -1, 39740, -1, 39770, -1, 40165, -1, 40565, - -1, 40575, -1, 40613, -1, 40635, -1, 40643, - -1, 40653, -1, 40657, -1, 40697, -1, 40701, - -1, 40718, -1, 40723, -1, 40736, -1, 40763, - -1, 40778, -1, 40786, -1, 40845, -1, 40860, - -1, 40864, -1, 12306, -1, 21316, -1, 21317, - -1, 12363, 12441, -1, 12365, 12441, -1, 12367, - 12441, -1, 12369, 12441, -1, 12371, 12441, -1, - 12373, 12441, -1, 12375, 12441, -1, 12377, 12441, - -1, 12379, 12441, -1, 12381, 12441, -1, 12383, - 12441, -1, 12385, 12441, -1, 12388, 12441, -1, - 12390, 12441, -1, 12392, 12441, -1, 12399, 12441, - -1, 12399, 12442, -1, 12402, 12441, -1, 12402, - 12442, -1, 12405, 12441, -1, 12405, 12442, -1, - 12408, 12441, -1, 12408, 12442, -1, 12411, 12441, - -1, 12411, 12442, -1, 12358, 12441, -1, 32, - 12441, -1, 32, 12442, -1, 12445, 12441, -1, - 12424, 12426, -1, 12459, 12441, -1, 12461, 12441, - -1, 12463, 12441, -1, 12465, 12441, -1, 12467, - 12441, -1, 12469, 12441, -1, 12471, 12441, -1, - 12473, 12441, -1, 12475, 12441, -1, 12477, 12441, - -1, 12479, 12441, -1, 12481, 12441, -1, 12484, - 12441, -1, 12486, 12441, -1, 12488, 12441, -1, - 12495, 12441, -1, 12495, 12442, -1, 12498, 12441, - -1, 12498, 12442, -1, 12501, 12441, -1, 12501, - 12442, -1, 12504, 12441, -1, 12504, 12442, -1, - 12507, 12441, -1, 12507, 12442, -1, 12454, 12441, - -1, 12527, 12441, -1, 12528, 12441, -1, 12529, - 12441, -1, 12530, 12441, -1, 12541, 12441, -1, - 12467, 12488, -1, 4352, -1, 4353, -1, 4522, - -1, 4354, -1, 4524, -1, 4525, -1, 4355, - -1, 4356, -1, 4357, -1, 4528, -1, 4529, - -1, 4530, -1, 4531, -1, 4532, -1, 4533, - -1, 4378, -1, 4358, -1, 4359, -1, 4360, - -1, 4385, -1, 4361, -1, 4362, -1, 4363, - -1, 4364, -1, 4365, -1, 4366, -1, 4367, - -1, 4368, -1, 4369, -1, 4370, -1, 4449, - -1, 4450, -1, 4451, -1, 4452, -1, 4453, - -1, 4454, -1, 4455, -1, 4456, -1, 4457, - -1, 4458, -1, 4459, -1, 4460, -1, 4461, - -1, 4462, -1, 4463, -1, 4464, -1, 4465, - -1, 4466, -1, 4467, -1, 4468, -1, 4469, - -1, 4448, -1, 4372, -1, 4373, -1, 4551, - -1, 4552, -1, 4556, -1, 4558, -1, 4563, - -1, 4567, -1, 4569, -1, 4380, -1, 4573, - -1, 4575, -1, 4381, -1, 4382, -1, 4384, - -1, 4386, -1, 4387, -1, 4391, -1, 4393, - -1, 4395, -1, 4396, -1, 4397, -1, 4398, - -1, 4399, -1, 4402, -1, 4406, -1, 4416, - -1, 4423, -1, 4428, -1, 4593, -1, 4594, - -1, 4439, -1, 4440, -1, 4441, -1, 4484, - -1, 4485, -1, 4488, -1, 4497, -1, 4498, - -1, 4500, -1, 4510, -1, 4513, -1, 19977, - -1, 22235, -1, 19978, -1, 20013, -1, 19979, - -1, 30002, -1, 19993, -1, 19969, -1, 22825, - -1, 22320, -1, 40, 4352, 41, -1, 40, - 4354, 41, -1, 40, 4355, 41, -1, 40, - 4357, 41, -1, 40, 4358, 41, -1, 40, - 4359, 41, -1, 40, 4361, 41, -1, 40, - 4363, 41, -1, 40, 4364, 41, -1, 40, - 4366, 41, -1, 40, 4367, 41, -1, 40, - 4368, 41, -1, 40, 4369, 41, -1, 40, - 4370, 41, -1, 40, 4352, 4449, 41, -1, - 40, 4354, 4449, 41, -1, 40, 4355, 4449, - 41, -1, 40, 4357, 4449, 41, -1, 40, - 4358, 4449, 41, -1, 40, 4359, 4449, 41, - -1, 40, 4361, 4449, 41, -1, 40, 4363, - 4449, 41, -1, 40, 4364, 4449, 41, -1, - 40, 4366, 4449, 41, -1, 40, 4367, 4449, - 41, -1, 40, 4368, 4449, 41, -1, 40, - 4369, 4449, 41, -1, 40, 4370, 4449, 41, - -1, 40, 4364, 4462, 41, -1, 40, 4363, - 4457, 4364, 4453, 4523, 41, -1, 40, 4363, - 4457, 4370, 4462, 41, -1, 40, 19968, 41, - -1, 40, 20108, 41, -1, 40, 19977, 41, - -1, 40, 22235, 41, -1, 40, 20116, 41, - -1, 40, 20845, 41, -1, 40, 19971, 41, - -1, 40, 20843, 41, -1, 40, 20061, 41, - -1, 40, 21313, 41, -1, 40, 26376, 41, - -1, 40, 28779, 41, -1, 40, 27700, 41, - -1, 40, 26408, 41, -1, 40, 37329, 41, - -1, 40, 22303, 41, -1, 40, 26085, 41, - -1, 40, 26666, 41, -1, 40, 26377, 41, - -1, 40, 31038, 41, -1, 40, 21517, 41, - -1, 40, 29305, 41, -1, 40, 36001, 41, - -1, 40, 31069, 41, -1, 40, 21172, 41, - -1, 40, 20195, 41, -1, 40, 21628, 41, - -1, 40, 23398, 41, -1, 40, 30435, 41, - -1, 40, 20225, 41, -1, 40, 36039, 41, - -1, 40, 21332, 41, -1, 40, 31085, 41, - -1, 40, 20241, 41, -1, 40, 33258, 41, - -1, 40, 33267, 41, -1, 80, 84, 69, - -1, 50, 49, -1, 50, 50, -1, 50, - 51, -1, 50, 52, -1, 50, 53, -1, - 50, 54, -1, 50, 55, -1, 50, 56, - -1, 50, 57, -1, 51, 48, -1, 51, - 49, -1, 51, 50, -1, 51, 51, -1, - 51, 52, -1, 51, 53, -1, 4352, 4449, - -1, 4354, 4449, -1, 4355, 4449, -1, 4357, - 4449, -1, 4358, 4449, -1, 4359, 4449, -1, - 4361, 4449, -1, 4363, 4449, -1, 4364, 4449, - -1, 4366, 4449, -1, 4367, 4449, -1, 4368, - 4449, -1, 4369, 4449, -1, 4370, 4449, -1, - 4366, 4449, 4535, 4352, 4457, -1, 4364, 4462, - 4363, 4468, -1, 4363, 4462, -1, 20116, -1, - 20845, -1, 19971, -1, 20061, -1, 26666, -1, - 26377, -1, 31038, -1, 21517, -1, 29305, -1, - 36001, -1, 31069, -1, 21172, -1, 31192, -1, - 30007, -1, 36969, -1, 20778, -1, 21360, -1, - 27880, -1, 38917, -1, 20241, -1, 20889, -1, - 27491, -1, 24038, -1, 21491, -1, 21307, -1, - 23447, -1, 23398, -1, 30435, -1, 20225, -1, - 36039, -1, 21332, -1, 22812, -1, 51, 54, - -1, 51, 55, -1, 51, 56, -1, 51, - 57, -1, 52, 48, -1, 52, 49, -1, - 52, 50, -1, 52, 51, -1, 52, 52, - -1, 52, 53, -1, 52, 54, -1, 52, - 55, -1, 52, 56, -1, 52, 57, -1, - 53, 48, -1, 49, 26376, -1, 50, 26376, - -1, 51, 26376, -1, 52, 26376, -1, 53, - 26376, -1, 54, 26376, -1, 55, 26376, -1, - 56, 26376, -1, 57, 26376, -1, 49, 48, - 26376, -1, 49, 49, 26376, -1, 49, 50, - 26376, -1, 72, 103, -1, 101, 114, 103, - -1, 101, 86, -1, 76, 84, 68, -1, - 12450, -1, 12452, -1, 12454, -1, 12456, -1, - 12458, -1, 12459, -1, 12461, -1, 12463, -1, - 12465, -1, 12467, -1, 12469, -1, 12471, -1, - 12473, -1, 12475, -1, 12477, -1, 12479, -1, - 12481, -1, 12484, -1, 12486, -1, 12488, -1, - 12490, -1, 12491, -1, 12492, -1, 12493, -1, - 12494, -1, 12495, -1, 12498, -1, 12501, -1, - 12504, -1, 12507, -1, 12510, -1, 12511, -1, - 12512, -1, 12513, -1, 12514, -1, 12516, -1, - 12518, -1, 12520, -1, 12521, -1, 12522, -1, - 12523, -1, 12524, -1, 12525, -1, 12527, -1, - 12528, -1, 12529, -1, 12530, -1, 12450, 12497, - 12540, 12488, -1, 12450, 12523, 12501, 12449, -1, - 12450, 12531, 12506, 12450, -1, 12450, 12540, 12523, - -1, 12452, 12491, 12531, 12464, -1, 12452, 12531, - 12481, -1, 12454, 12457, 12531, -1, 12456, 12473, - 12463, 12540, 12489, -1, 12456, 12540, 12459, 12540, - -1, 12458, 12531, 12473, -1, 12458, 12540, 12512, - -1, 12459, 12452, 12522, -1, 12459, 12521, 12483, - 12488, -1, 12459, 12525, 12522, 12540, -1, 12460, - 12525, 12531, -1, 12460, 12531, 12510, -1, 12462, - 12460, -1, 12462, 12491, 12540, -1, 12461, 12517, - 12522, 12540, -1, 12462, 12523, 12480, 12540, -1, - 12461, 12525, -1, 12461, 12525, 12464, 12521, 12512, - -1, 12461, 12525, 12513, 12540, 12488, 12523, -1, - 12461, 12525, 12527, 12483, 12488, -1, 12464, 12521, - 12512, -1, 12464, 12521, 12512, 12488, 12531, -1, - 12463, 12523, 12476, 12452, 12525, -1, 12463, 12525, - 12540, 12493, -1, 12465, 12540, 12473, -1, 12467, - 12523, 12490, -1, 12467, 12540, 12509, -1, 12469, - 12452, 12463, 12523, -1, 12469, 12531, 12481, 12540, - 12512, -1, 12471, 12522, 12531, 12464, -1, 12475, - 12531, 12481, -1, 12475, 12531, 12488, -1, 12480, - 12540, 12473, -1, 12487, 12471, -1, 12489, 12523, - -1, 12488, 12531, -1, 12490, 12494, -1, 12494, - 12483, 12488, -1, 12495, 12452, 12484, -1, 12497, - 12540, 12475, 12531, 12488, -1, 12497, 12540, 12484, - -1, 12496, 12540, 12524, 12523, -1, 12500, 12450, - 12473, 12488, 12523, -1, 12500, 12463, 12523, -1, - 12500, 12467, -1, 12499, 12523, -1, 12501, 12449, - 12521, 12483, 12489, -1, 12501, 12451, 12540, 12488, - -1, 12502, 12483, 12471, 12455, 12523, -1, 12501, - 12521, 12531, -1, 12504, 12463, 12479, 12540, 12523, - -1, 12506, 12477, -1, 12506, 12491, 12498, -1, - 12504, 12523, 12484, -1, 12506, 12531, 12473, -1, - 12506, 12540, 12472, -1, 12505, 12540, 12479, -1, - 12509, 12452, 12531, 12488, -1, 12508, 12523, 12488, - -1, 12507, 12531, -1, 12509, 12531, 12489, -1, - 12507, 12540, 12523, -1, 12507, 12540, 12531, -1, - 12510, 12452, 12463, 12525, -1, 12510, 12452, 12523, - -1, 12510, 12483, 12495, -1, 12510, 12523, 12463, - -1, 12510, 12531, 12471, 12519, 12531, -1, 12511, - 12463, 12525, 12531, -1, 12511, 12522, -1, 12511, - 12522, 12496, 12540, 12523, -1, 12513, 12460, -1, - 12513, 12460, 12488, 12531, -1, 12513, 12540, 12488, - 12523, -1, 12516, 12540, 12489, -1, 12516, 12540, - 12523, -1, 12518, 12450, 12531, -1, 12522, 12483, - 12488, 12523, -1, 12522, 12521, -1, 12523, 12500, - 12540, -1, 12523, 12540, 12502, 12523, -1, 12524, - 12512, -1, 12524, 12531, 12488, 12466, 12531, -1, - 12527, 12483, 12488, -1, 48, 28857, -1, 49, - 28857, -1, 50, 28857, -1, 51, 28857, -1, - 52, 28857, -1, 53, 28857, -1, 54, 28857, - -1, 55, 28857, -1, 56, 28857, -1, 57, - 28857, -1, 49, 48, 28857, -1, 49, 49, - 28857, -1, 49, 50, 28857, -1, 49, 51, - 28857, -1, 49, 52, 28857, -1, 49, 53, - 28857, -1, 49, 54, 28857, -1, 49, 55, - 28857, -1, 49, 56, 28857, -1, 49, 57, - 28857, -1, 50, 48, 28857, -1, 50, 49, - 28857, -1, 50, 50, 28857, -1, 50, 51, - 28857, -1, 50, 52, 28857, -1, 104, 80, - 97, -1, 100, 97, -1, 65, 85, -1, - 98, 97, 114, -1, 111, 86, -1, 112, - 99, -1, 100, 109, -1, 100, 109, 178, - -1, 100, 109, 179, -1, 73, 85, -1, - 24179, 25104, -1, 26157, 21644, -1, 22823, 27491, - -1, 26126, 27835, -1, 26666, 24335, 20250, 31038, - -1, 112, 65, -1, 110, 65, -1, 956, - 65, -1, 109, 65, -1, 107, 65, -1, - 75, 66, -1, 77, 66, -1, 71, 66, - -1, 99, 97, 108, -1, 107, 99, 97, - 108, -1, 112, 70, -1, 110, 70, -1, - 956, 70, -1, 956, 103, -1, 109, 103, - -1, 107, 103, -1, 72, 122, -1, 107, - 72, 122, -1, 77, 72, 122, -1, 71, - 72, 122, -1, 84, 72, 122, -1, 956, - 8467, -1, 109, 8467, -1, 100, 8467, -1, - 107, 8467, -1, 102, 109, -1, 110, 109, - -1, 956, 109, -1, 109, 109, -1, 99, - 109, -1, 107, 109, -1, 109, 109, 178, - -1, 99, 109, 178, -1, 109, 178, -1, - 107, 109, 178, -1, 109, 109, 179, -1, - 99, 109, 179, -1, 109, 179, -1, 107, - 109, 179, -1, 109, 8725, 115, -1, 109, - 8725, 115, 178, -1, 80, 97, -1, 107, - 80, 97, -1, 77, 80, 97, -1, 71, - 80, 97, -1, 114, 97, 100, -1, 114, - 97, 100, 8725, 115, -1, 114, 97, 100, - 8725, 115, 178, -1, 112, 115, -1, 110, - 115, -1, 956, 115, -1, 109, 115, -1, - 112, 86, -1, 110, 86, -1, 956, 86, - -1, 109, 86, -1, 107, 86, -1, 77, - 86, -1, 112, 87, -1, 110, 87, -1, - 956, 87, -1, 109, 87, -1, 107, 87, - -1, 77, 87, -1, 107, 937, -1, 77, - 937, -1, 97, 46, 109, 46, -1, 66, - 113, -1, 99, 99, -1, 99, 100, -1, - 67, 8725, 107, 103, -1, 67, 111, 46, - -1, 100, 66, -1, 71, 121, -1, 104, - 97, -1, 72, 80, -1, 105, 110, -1, - 75, 75, -1, 75, 77, -1, 107, 116, - -1, 108, 109, -1, 108, 110, -1, 108, - 111, 103, -1, 108, 120, -1, 109, 98, - -1, 109, 105, 108, -1, 109, 111, 108, - -1, 80, 72, -1, 112, 46, 109, 46, - -1, 80, 80, 77, -1, 80, 82, -1, - 115, 114, -1, 83, 118, -1, 87, 98, - -1, 86, 8725, 109, -1, 65, 8725, 109, - -1, 49, 26085, -1, 50, 26085, -1, 51, - 26085, -1, 52, 26085, -1, 53, 26085, -1, - 54, 26085, -1, 55, 26085, -1, 56, 26085, - -1, 57, 26085, -1, 49, 48, 26085, -1, - 49, 49, 26085, -1, 49, 50, 26085, -1, - 49, 51, 26085, -1, 49, 52, 26085, -1, - 49, 53, 26085, -1, 49, 54, 26085, -1, - 49, 55, 26085, -1, 49, 56, 26085, -1, - 49, 57, 26085, -1, 50, 48, 26085, -1, - 50, 49, 26085, -1, 50, 50, 26085, -1, - 50, 51, 26085, -1, 50, 52, 26085, -1, - 50, 53, 26085, -1, 50, 54, 26085, -1, - 50, 55, 26085, -1, 50, 56, 26085, -1, - 50, 57, 26085, -1, 51, 48, 26085, -1, - 51, 49, 26085, -1, 103, 97, 108, -1, - 35912, -1, 26356, -1, 36040, -1, 28369, -1, - 20018, -1, 21477, -1, 22865, -1, 21895, -1, - 22856, -1, 25078, -1, 30313, -1, 32645, -1, - 34367, -1, 34746, -1, 35064, -1, 37007, -1, - 27138, -1, 27931, -1, 28889, -1, 29662, -1, - 33853, -1, 37226, -1, 39409, -1, 20098, -1, - 21365, -1, 27396, -1, 29211, -1, 34349, -1, - 40478, -1, 23888, -1, 28651, -1, 34253, -1, - 35172, -1, 25289, -1, 33240, -1, 34847, -1, - 24266, -1, 26391, -1, 28010, -1, 29436, -1, - 37070, -1, 20358, -1, 20919, -1, 21214, -1, - 25796, -1, 27347, -1, 29200, -1, 30439, -1, - 34310, -1, 34396, -1, 36335, -1, 38706, -1, - 39791, -1, 40442, -1, 30860, -1, 31103, -1, - 32160, -1, 33737, -1, 37636, -1, 35542, -1, - 22751, -1, 24324, -1, 31840, -1, 32894, -1, - 29282, -1, 30922, -1, 36034, -1, 38647, -1, - 22744, -1, 23650, -1, 27155, -1, 28122, -1, - 28431, -1, 32047, -1, 32311, -1, 38475, -1, - 21202, -1, 32907, -1, 20956, -1, 20940, -1, - 31260, -1, 32190, -1, 33777, -1, 38517, -1, - 35712, -1, 25295, -1, 35582, -1, 20025, -1, - 23527, -1, 24594, -1, 29575, -1, 30064, -1, - 21271, -1, 30971, -1, 20415, -1, 24489, -1, - 19981, -1, 27852, -1, 25976, -1, 32034, -1, - 21443, -1, 22622, -1, 30465, -1, 33865, -1, - 35498, -1, 27578, -1, 27784, -1, 25342, -1, - 33509, -1, 25504, -1, 30053, -1, 20142, -1, - 20841, -1, 20937, -1, 26753, -1, 31975, -1, - 33391, -1, 35538, -1, 37327, -1, 21237, -1, - 21570, -1, 24300, -1, 26053, -1, 28670, -1, - 31018, -1, 38317, -1, 39530, -1, 40599, -1, - 40654, -1, 26310, -1, 27511, -1, 36706, -1, - 24180, -1, 24976, -1, 25088, -1, 25754, -1, - 28451, -1, 29001, -1, 29833, -1, 31178, -1, - 32244, -1, 32879, -1, 36646, -1, 34030, -1, - 36899, -1, 37706, -1, 21015, -1, 21155, -1, - 21693, -1, 28872, -1, 35010, -1, 24265, -1, - 24565, -1, 25467, -1, 27566, -1, 31806, -1, - 29557, -1, 20196, -1, 22265, -1, 23994, -1, - 24604, -1, 29618, -1, 29801, -1, 32666, -1, - 32838, -1, 37428, -1, 38646, -1, 38728, -1, - 38936, -1, 20363, -1, 31150, -1, 37300, -1, - 38584, -1, 24801, -1, 20102, -1, 20698, -1, - 23534, -1, 23615, -1, 26009, -1, 29134, -1, - 30274, -1, 34044, -1, 36988, -1, 26248, -1, - 38446, -1, 21129, -1, 26491, -1, 26611, -1, - 27969, -1, 28316, -1, 29705, -1, 30041, -1, - 30827, -1, 32016, -1, 39006, -1, 25134, -1, - 38520, -1, 20523, -1, 23833, -1, 28138, -1, - 36650, -1, 24459, -1, 24900, -1, 26647, -1, - 38534, -1, 21033, -1, 21519, -1, 23653, -1, - 26131, -1, 26446, -1, 26792, -1, 27877, -1, - 29702, -1, 30178, -1, 32633, -1, 35023, -1, - 35041, -1, 38626, -1, 21311, -1, 28346, -1, - 21533, -1, 29136, -1, 29848, -1, 34298, -1, - 38563, -1, 40023, -1, 40607, -1, 26519, -1, - 28107, -1, 33256, -1, 31520, -1, 31890, -1, - 29376, -1, 28825, -1, 35672, -1, 20160, -1, - 33590, -1, 21050, -1, 20999, -1, 24230, -1, - 25299, -1, 31958, -1, 23429, -1, 27934, -1, - 26292, -1, 36667, -1, 38477, -1, 24275, -1, - 20800, -1, 21952, -1, 22618, -1, 26228, -1, - 20958, -1, 29482, -1, 30410, -1, 31036, -1, - 31070, -1, 31077, -1, 31119, -1, 38742, -1, - 31934, -1, 34322, -1, 35576, -1, 36920, -1, - 37117, -1, 39151, -1, 39164, -1, 39208, -1, - 40372, -1, 20398, -1, 20711, -1, 20813, -1, - 21193, -1, 21220, -1, 21329, -1, 21917, -1, - 22022, -1, 22120, -1, 22592, -1, 22696, -1, - 23652, -1, 24724, -1, 24936, -1, 24974, -1, - 25074, -1, 25935, -1, 26082, -1, 26257, -1, - 26757, -1, 28023, -1, 28186, -1, 28450, -1, - 29038, -1, 29227, -1, 29730, -1, 30865, -1, - 31049, -1, 31048, -1, 31056, -1, 31062, -1, - 31117, -1, 31118, -1, 31296, -1, 31361, -1, - 31680, -1, 32265, -1, 32321, -1, 32626, -1, - 32773, -1, 33261, -1, 33401, -1, 33879, -1, - 35088, -1, 35222, -1, 35585, -1, 35641, -1, - 36051, -1, 36104, -1, 36790, -1, 38627, -1, - 38911, -1, 38971, -1, 20006, -1, 20917, -1, - 20840, -1, 20352, -1, 20805, -1, 20864, -1, - 21191, -1, 21242, -1, 21845, -1, 21913, -1, - 21986, -1, 22707, -1, 22852, -1, 22868, -1, - 23138, -1, 23336, -1, 24274, -1, 24281, -1, - 24425, -1, 24493, -1, 24792, -1, 24910, -1, - 24840, -1, 24928, -1, 25140, -1, 25540, -1, - 25628, -1, 25682, -1, 25942, -1, 26395, -1, - 26454, -1, 28379, -1, 28363, -1, 28702, -1, - 30631, -1, 29237, -1, 29359, -1, 29809, -1, - 29958, -1, 30011, -1, 30237, -1, 30239, -1, - 30427, -1, 30452, -1, 30538, -1, 30528, -1, - 30924, -1, 31409, -1, 31867, -1, 32091, -1, - 32574, -1, 33618, -1, 33775, -1, 34681, -1, - 35137, -1, 35206, -1, 35519, -1, 35531, -1, - 35565, -1, 35722, -1, 36664, -1, 36978, -1, - 37273, -1, 37494, -1, 38524, -1, 38875, -1, - 38923, -1, 39698, -1, 141386, -1, 141380, -1, - 144341, -1, 15261, -1, 16408, -1, 16441, -1, - 152137, -1, 154832, -1, 163539, -1, 40771, -1, - 40846, -1, 102, 102, -1, 102, 105, -1, - 102, 108, -1, 102, 102, 105, -1, 102, - 102, 108, -1, 383, 116, -1, 115, 116, - -1, 1396, 1398, -1, 1396, 1381, -1, 1396, - 1387, -1, 1406, 1398, -1, 1396, 1389, -1, - 1497, 1460, -1, 1522, 1463, -1, 1506, -1, - 1492, -1, 1499, -1, 1500, -1, 1501, -1, - 1512, -1, 1514, -1, 1513, 1473, -1, 1513, - 1474, -1, 64329, 1473, -1, 64329, 1474, -1, - 1488, 1463, -1, 1488, 1464, -1, 1488, 1468, - -1, 1489, 1468, -1, 1490, 1468, -1, 1491, - 1468, -1, 1492, 1468, -1, 1493, 1468, -1, - 1494, 1468, -1, 1496, 1468, -1, 1497, 1468, - -1, 1498, 1468, -1, 1499, 1468, -1, 1500, - 1468, -1, 1502, 1468, -1, 1504, 1468, -1, - 1505, 1468, -1, 1507, 1468, -1, 1508, 1468, - -1, 1510, 1468, -1, 1511, 1468, -1, 1512, - 1468, -1, 1513, 1468, -1, 1514, 1468, -1, - 1493, 1465, -1, 1489, 1471, -1, 1499, 1471, - -1, 1508, 1471, -1, 1488, 1500, -1, 1649, - -1, 1659, -1, 1662, -1, 1664, -1, 1658, - -1, 1663, -1, 1657, -1, 1700, -1, 1702, - -1, 1668, -1, 1667, -1, 1670, -1, 1671, - -1, 1677, -1, 1676, -1, 1678, -1, 1672, - -1, 1688, -1, 1681, -1, 1705, -1, 1711, - -1, 1715, -1, 1713, -1, 1722, -1, 1723, - -1, 1728, -1, 1729, -1, 1726, -1, 1746, - -1, 1747, -1, 1709, -1, 1735, -1, 1734, - -1, 1736, -1, 1655, -1, 1739, -1, 1733, - -1, 1737, -1, 1744, -1, 1609, -1, 1574, - 1575, -1, 1574, 1749, -1, 1574, 1608, -1, - 1574, 1735, -1, 1574, 1734, -1, 1574, 1736, - -1, 1574, 1744, -1, 1574, 1609, -1, 1740, - -1, 1574, 1580, -1, 1574, 1581, -1, 1574, - 1605, -1, 1574, 1610, -1, 1576, 1580, -1, - 1576, 1581, -1, 1576, 1582, -1, 1576, 1605, - -1, 1576, 1609, -1, 1576, 1610, -1, 1578, - 1580, -1, 1578, 1581, -1, 1578, 1582, -1, - 1578, 1605, -1, 1578, 1609, -1, 1578, 1610, - -1, 1579, 1580, -1, 1579, 1605, -1, 1579, - 1609, -1, 1579, 1610, -1, 1580, 1581, -1, - 1580, 1605, -1, 1581, 1580, -1, 1581, 1605, - -1, 1582, 1580, -1, 1582, 1581, -1, 1582, - 1605, -1, 1587, 1580, -1, 1587, 1581, -1, - 1587, 1582, -1, 1587, 1605, -1, 1589, 1581, - -1, 1589, 1605, -1, 1590, 1580, -1, 1590, - 1581, -1, 1590, 1582, -1, 1590, 1605, -1, - 1591, 1581, -1, 1591, 1605, -1, 1592, 1605, - -1, 1593, 1580, -1, 1593, 1605, -1, 1594, - 1580, -1, 1594, 1605, -1, 1601, 1580, -1, - 1601, 1581, -1, 1601, 1582, -1, 1601, 1605, - -1, 1601, 1609, -1, 1601, 1610, -1, 1602, - 1581, -1, 1602, 1605, -1, 1602, 1609, -1, - 1602, 1610, -1, 1603, 1575, -1, 1603, 1580, - -1, 1603, 1581, -1, 1603, 1582, -1, 1603, - 1604, -1, 1603, 1605, -1, 1603, 1609, -1, - 1603, 1610, -1, 1604, 1580, -1, 1604, 1581, - -1, 1604, 1582, -1, 1604, 1605, -1, 1604, - 1609, -1, 1604, 1610, -1, 1605, 1580, -1, - 1605, 1581, -1, 1605, 1582, -1, 1605, 1605, - -1, 1605, 1609, -1, 1605, 1610, -1, 1606, - 1580, -1, 1606, 1581, -1, 1606, 1582, -1, - 1606, 1605, -1, 1606, 1609, -1, 1606, 1610, - -1, 1607, 1580, -1, 1607, 1605, -1, 1607, - 1609, -1, 1607, 1610, -1, 1610, 1580, -1, - 1610, 1581, -1, 1610, 1582, -1, 1610, 1605, - -1, 1610, 1609, -1, 1610, 1610, -1, 1584, - 1648, -1, 1585, 1648, -1, 1609, 1648, -1, - 32, 1612, 1617, -1, 32, 1613, 1617, -1, - 32, 1614, 1617, -1, 32, 1615, 1617, -1, - 32, 1616, 1617, -1, 32, 1617, 1648, -1, - 1574, 1585, -1, 1574, 1586, -1, 1574, 1606, - -1, 1576, 1585, -1, 1576, 1586, -1, 1576, - 1606, -1, 1578, 1585, -1, 1578, 1586, -1, - 1578, 1606, -1, 1579, 1585, -1, 1579, 1586, - -1, 1579, 1606, -1, 1605, 1575, -1, 1606, - 1585, -1, 1606, 1586, -1, 1606, 1606, -1, - 1610, 1585, -1, 1610, 1586, -1, 1610, 1606, - -1, 1574, 1582, -1, 1574, 1607, -1, 1576, - 1607, -1, 1578, 1607, -1, 1589, 1582, -1, - 1604, 1607, -1, 1606, 1607, -1, 1607, 1648, - -1, 1610, 1607, -1, 1579, 1607, -1, 1587, - 1607, -1, 1588, 1605, -1, 1588, 1607, -1, - 1600, 1614, 1617, -1, 1600, 1615, 1617, -1, - 1600, 1616, 1617, -1, 1591, 1609, -1, 1591, - 1610, -1, 1593, 1609, -1, 1593, 1610, -1, - 1594, 1609, -1, 1594, 1610, -1, 1587, 1609, - -1, 1587, 1610, -1, 1588, 1609, -1, 1588, - 1610, -1, 1581, 1609, -1, 1581, 1610, -1, - 1580, 1609, -1, 1580, 1610, -1, 1582, 1609, - -1, 1582, 1610, -1, 1589, 1609, -1, 1589, - 1610, -1, 1590, 1609, -1, 1590, 1610, -1, - 1588, 1580, -1, 1588, 1581, -1, 1588, 1582, - -1, 1588, 1585, -1, 1587, 1585, -1, 1589, - 1585, -1, 1590, 1585, -1, 1575, 1611, -1, - 1578, 1580, 1605, -1, 1578, 1581, 1580, -1, - 1578, 1581, 1605, -1, 1578, 1582, 1605, -1, - 1578, 1605, 1580, -1, 1578, 1605, 1581, -1, - 1578, 1605, 1582, -1, 1580, 1605, 1581, -1, - 1581, 1605, 1610, -1, 1581, 1605, 1609, -1, - 1587, 1581, 1580, -1, 1587, 1580, 1581, -1, - 1587, 1580, 1609, -1, 1587, 1605, 1581, -1, - 1587, 1605, 1580, -1, 1587, 1605, 1605, -1, - 1589, 1581, 1581, -1, 1589, 1605, 1605, -1, - 1588, 1581, 1605, -1, 1588, 1580, 1610, -1, - 1588, 1605, 1582, -1, 1588, 1605, 1605, -1, - 1590, 1581, 1609, -1, 1590, 1582, 1605, -1, - 1591, 1605, 1581, -1, 1591, 1605, 1605, -1, - 1591, 1605, 1610, -1, 1593, 1580, 1605, -1, - 1593, 1605, 1605, -1, 1593, 1605, 1609, -1, - 1594, 1605, 1605, -1, 1594, 1605, 1610, -1, - 1594, 1605, 1609, -1, 1601, 1582, 1605, -1, - 1602, 1605, 1581, -1, 1602, 1605, 1605, -1, - 1604, 1581, 1605, -1, 1604, 1581, 1610, -1, - 1604, 1581, 1609, -1, 1604, 1580, 1580, -1, - 1604, 1582, 1605, -1, 1604, 1605, 1581, -1, - 1605, 1581, 1580, -1, 1605, 1581, 1605, -1, - 1605, 1581, 1610, -1, 1605, 1580, 1581, -1, - 1605, 1580, 1605, -1, 1605, 1582, 1580, -1, - 1605, 1582, 1605, -1, 1605, 1580, 1582, -1, - 1607, 1605, 1580, -1, 1607, 1605, 1605, -1, - 1606, 1581, 1605, -1, 1606, 1581, 1609, -1, - 1606, 1580, 1605, -1, 1606, 1580, 1609, -1, - 1606, 1605, 1610, -1, 1606, 1605, 1609, -1, - 1610, 1605, 1605, -1, 1576, 1582, 1610, -1, - 1578, 1580, 1610, -1, 1578, 1580, 1609, -1, - 1578, 1582, 1610, -1, 1578, 1582, 1609, -1, - 1578, 1605, 1610, -1, 1578, 1605, 1609, -1, - 1580, 1605, 1610, -1, 1580, 1581, 1609, -1, - 1580, 1605, 1609, -1, 1587, 1582, 1609, -1, - 1589, 1581, 1610, -1, 1588, 1581, 1610, -1, - 1590, 1581, 1610, -1, 1604, 1580, 1610, -1, - 1604, 1605, 1610, -1, 1610, 1581, 1610, -1, - 1610, 1580, 1610, -1, 1610, 1605, 1610, -1, - 1605, 1605, 1610, -1, 1602, 1605, 1610, -1, - 1606, 1581, 1610, -1, 1593, 1605, 1610, -1, - 1603, 1605, 1610, -1, 1606, 1580, 1581, -1, - 1605, 1582, 1610, -1, 1604, 1580, 1605, -1, - 1603, 1605, 1605, -1, 1580, 1581, 1610, -1, - 1581, 1580, 1610, -1, 1605, 1580, 1610, -1, - 1601, 1605, 1610, -1, 1576, 1581, 1610, -1, - 1587, 1582, 1610, -1, 1606, 1580, 1610, -1, - 1589, 1604, 1746, -1, 1602, 1604, 1746, -1, - 1575, 1604, 1604, 1607, -1, 1575, 1603, 1576, - 1585, -1, 1605, 1581, 1605, 1583, -1, 1589, - 1604, 1593, 1605, -1, 1585, 1587, 1608, 1604, - -1, 1593, 1604, 1610, 1607, -1, 1608, 1587, - 1604, 1605, -1, 1589, 1604, 1609, -1, 1589, - 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, - 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, - 1605, -1, 1580, 1604, 32, 1580, 1604, 1575, - 1604, 1607, -1, 1585, 1740, 1575, 1604, -1, - 44, -1, 12289, -1, 12290, -1, 58, -1, - 33, -1, 63, -1, 12310, -1, 12311, -1, - 8230, -1, 8229, -1, 8212, -1, 8211, -1, - 95, -1, 123, -1, 125, -1, 12308, -1, - 12309, -1, 12304, -1, 12305, -1, 12298, -1, - 12299, -1, 12300, -1, 12301, -1, 12302, -1, - 12303, -1, 91, -1, 93, -1, 8254, -1, - 35, -1, 38, -1, 42, -1, 45, -1, - 60, -1, 62, -1, 92, -1, 36, -1, - 37, -1, 64, -1, 32, 1611, -1, 1600, - 1611, -1, 32, 1612, -1, 32, 1613, -1, - 32, 1614, -1, 1600, 1614, -1, 32, 1615, - -1, 1600, 1615, -1, 32, 1616, -1, 1600, - 1616, -1, 32, 1617, -1, 1600, 1617, -1, - 32, 1618, -1, 1600, 1618, -1, 1569, -1, - 1570, -1, 1571, -1, 1572, -1, 1573, -1, - 1574, -1, 1575, -1, 1576, -1, 1577, -1, - 1578, -1, 1579, -1, 1580, -1, 1581, -1, - 1582, -1, 1583, -1, 1584, -1, 1585, -1, - 1586, -1, 1587, -1, 1588, -1, 1589, -1, - 1590, -1, 1591, -1, 1592, -1, 1593, -1, - 1594, -1, 1601, -1, 1602, -1, 1603, -1, - 1604, -1, 1605, -1, 1606, -1, 1607, -1, - 1608, -1, 1610, -1, 1604, 1570, -1, 1604, - 1571, -1, 1604, 1573, -1, 1604, 1575, -1, - 34, -1, 39, -1, 47, -1, 65345, -1, - 65346, -1, 65347, -1, 65348, -1, 65349, -1, - 65350, -1, 65351, -1, 65352, -1, 65353, -1, - 65354, -1, 65355, -1, 65356, -1, 65357, -1, - 65358, -1, 65359, -1, 65360, -1, 65361, -1, - 65362, -1, 65363, -1, 65364, -1, 65365, -1, - 65366, -1, 65367, -1, 65368, -1, 65369, -1, - 65370, -1, 94, -1, 124, -1, 126, -1, - 10629, -1, 10630, -1, 12539, -1, 12449, -1, - 12451, -1, 12453, -1, 12455, -1, 12457, -1, - 12515, -1, 12517, -1, 12519, -1, 12483, -1, - 12540, -1, 12531, -1, 12441, -1, 12442, -1, - 12644, -1, 12593, -1, 12594, -1, 12595, -1, - 12596, -1, 12597, -1, 12598, -1, 12599, -1, - 12600, -1, 12601, -1, 12602, -1, 12603, -1, - 12604, -1, 12605, -1, 12606, -1, 12607, -1, - 12608, -1, 12609, -1, 12610, -1, 12611, -1, - 12612, -1, 12613, -1, 12614, -1, 12615, -1, - 12616, -1, 12617, -1, 12618, -1, 12619, -1, - 12620, -1, 12621, -1, 12622, -1, 12623, -1, - 12624, -1, 12625, -1, 12626, -1, 12627, -1, - 12628, -1, 12629, -1, 12630, -1, 12631, -1, - 12632, -1, 12633, -1, 12634, -1, 12635, -1, - 12636, -1, 12637, -1, 12638, -1, 12639, -1, - 12640, -1, 12641, -1, 12642, -1, 12643, -1, - 162, -1, 163, -1, 172, -1, 175, -1, - 166, -1, 165, -1, 8361, -1, 9474, -1, - 8592, -1, 8593, -1, 8594, -1, 8595, -1, - 9632, -1, 9675, -1, 66600, -1, 66601, -1, - 66602, -1, 66603, -1, 66604, -1, 66605, -1, - 66606, -1, 66607, -1, 66608, -1, 66609, -1, - 66610, -1, 66611, -1, 66612, -1, 66613, -1, - 66614, -1, 66615, -1, 66616, -1, 66617, -1, - 66618, -1, 66619, -1, 66620, -1, 66621, -1, - 66622, -1, 66623, -1, 66624, -1, 66625, -1, - 66626, -1, 66627, -1, 66628, -1, 66629, -1, - 66630, -1, 66631, -1, 66632, -1, 66633, -1, - 66634, -1, 66635, -1, 66636, -1, 66637, -1, - 66638, -1, 66639, -1, 119127, 119141, -1, 119128, - 119141, -1, 119135, 119150, -1, 119135, 119151, -1, - 119135, 119152, -1, 119135, 119153, -1, 119135, 119154, - -1, 119225, 119141, -1, 119226, 119141, -1, 119227, - 119150, -1, 119228, 119150, -1, 119227, 119151, -1, - 119228, 119151, -1, 305, -1, 567, -1, 913, - -1, 914, -1, 916, -1, 917, -1, 918, - -1, 919, -1, 921, -1, 922, -1, 923, - -1, 924, -1, 925, -1, 926, -1, 927, - -1, 929, -1, 1012, -1, 932, -1, 934, - -1, 935, -1, 936, -1, 8711, -1, 8706, - -1, 1013, -1, 977, -1, 1008, -1, 981, - -1, 1009, -1, 982, -1, 988, -1, 20029, - -1, 20024, -1, 20033, -1, 131362, -1, 20320, - -1, 20411, -1, 20482, -1, 20602, -1, 20633, - -1, 20687, -1, 13470, -1, 132666, -1, 20820, - -1, 20836, -1, 20855, -1, 132380, -1, 13497, - -1, 20839, -1, 20877, -1, 132427, -1, 20887, - -1, 20900, -1, 20172, -1, 20908, -1, 168415, - -1, 20995, -1, 13535, -1, 21051, -1, 21062, - -1, 21106, -1, 21111, -1, 13589, -1, 21253, - -1, 21254, -1, 21321, -1, 21338, -1, 21363, - -1, 21373, -1, 21375, -1, 133676, -1, 28784, - -1, 21450, -1, 21471, -1, 133987, -1, 21483, - -1, 21489, -1, 21510, -1, 21662, -1, 21560, - -1, 21576, -1, 21608, -1, 21666, -1, 21750, - -1, 21776, -1, 21843, -1, 21859, -1, 21892, - -1, 21931, -1, 21939, -1, 21954, -1, 22294, - -1, 22295, -1, 22097, -1, 22132, -1, 22766, - -1, 22478, -1, 22516, -1, 22541, -1, 22411, - -1, 22578, -1, 22577, -1, 22700, -1, 136420, - -1, 22770, -1, 22775, -1, 22790, -1, 22810, - -1, 22818, -1, 22882, -1, 136872, -1, 136938, - -1, 23020, -1, 23067, -1, 23079, -1, 23000, - -1, 23142, -1, 14062, -1, 14076, -1, 23304, - -1, 23358, -1, 137672, -1, 23491, -1, 23512, - -1, 23539, -1, 138008, -1, 23551, -1, 23558, - -1, 24403, -1, 14209, -1, 23648, -1, 23744, - -1, 23693, -1, 138724, -1, 23875, -1, 138726, - -1, 23918, -1, 23915, -1, 23932, -1, 24033, - -1, 24034, -1, 14383, -1, 24061, -1, 24104, - -1, 24125, -1, 24169, -1, 14434, -1, 139651, - -1, 14460, -1, 24240, -1, 24243, -1, 24246, - -1, 172946, -1, 140081, -1, 33281, -1, 24354, - -1, 14535, -1, 144056, -1, 156122, -1, 24418, - -1, 24427, -1, 14563, -1, 24474, -1, 24525, - -1, 24535, -1, 24569, -1, 24705, -1, 14650, - -1, 14620, -1, 141012, -1, 24775, -1, 24904, - -1, 24908, -1, 24954, -1, 25010, -1, 24996, - -1, 25007, -1, 25054, -1, 25104, -1, 25115, - -1, 25181, -1, 25265, -1, 25300, -1, 25424, - -1, 142092, -1, 25405, -1, 25340, -1, 25448, - -1, 25475, -1, 25572, -1, 142321, -1, 25634, - -1, 25541, -1, 25513, -1, 14894, -1, 25705, - -1, 25726, -1, 25757, -1, 25719, -1, 14956, - -1, 25964, -1, 143370, -1, 26083, -1, 26360, - -1, 26185, -1, 15129, -1, 15112, -1, 15076, - -1, 20882, -1, 20885, -1, 26368, -1, 26268, - -1, 32941, -1, 17369, -1, 26401, -1, 26462, - -1, 26451, -1, 144323, -1, 15177, -1, 26618, - -1, 26501, -1, 26706, -1, 144493, -1, 26766, - -1, 26655, -1, 26900, -1, 26946, -1, 27043, - -1, 27114, -1, 27304, -1, 145059, -1, 27355, - -1, 15384, -1, 27425, -1, 145575, -1, 27476, - -1, 15438, -1, 27506, -1, 27551, -1, 27579, - -1, 146061, -1, 138507, -1, 146170, -1, 27726, - -1, 146620, -1, 27839, -1, 27853, -1, 27751, - -1, 27926, -1, 27966, -1, 28009, -1, 28024, - -1, 28037, -1, 146718, -1, 27956, -1, 28207, - -1, 28270, -1, 15667, -1, 28359, -1, 147153, - -1, 28153, -1, 28526, -1, 147294, -1, 147342, - -1, 28614, -1, 28729, -1, 28699, -1, 15766, - -1, 28746, -1, 28797, -1, 28791, -1, 28845, - -1, 132389, -1, 28997, -1, 148067, -1, 29084, - -1, 148395, -1, 29224, -1, 29264, -1, 149000, - -1, 29312, -1, 29333, -1, 149301, -1, 149524, - -1, 29562, -1, 29579, -1, 16044, -1, 29605, - -1, 16056, -1, 29767, -1, 29788, -1, 29829, - -1, 29898, -1, 16155, -1, 29988, -1, 150582, - -1, 30014, -1, 150674, -1, 139679, -1, 30224, - -1, 151457, -1, 151480, -1, 151620, -1, 16380, - -1, 16392, -1, 151795, -1, 151794, -1, 151833, - -1, 151859, -1, 30494, -1, 30495, -1, 30603, - -1, 16454, -1, 16534, -1, 152605, -1, 30798, - -1, 16611, -1, 153126, -1, 153242, -1, 153285, - -1, 31211, -1, 16687, -1, 31306, -1, 31311, - -1, 153980, -1, 154279, -1, 31470, -1, 16898, - -1, 154539, -1, 31686, -1, 31689, -1, 16935, - -1, 154752, -1, 31954, -1, 17056, -1, 31976, - -1, 31971, -1, 32000, -1, 155526, -1, 32099, - -1, 17153, -1, 32199, -1, 32258, -1, 32325, - -1, 17204, -1, 156200, -1, 156231, -1, 17241, - -1, 156377, -1, 32634, -1, 156478, -1, 32661, - -1, 32762, -1, 156890, -1, 156963, -1, 32864, - -1, 157096, -1, 32880, -1, 144223, -1, 17365, - -1, 32946, -1, 33027, -1, 17419, -1, 33086, - -1, 23221, -1, 157607, -1, 157621, -1, 144275, - -1, 144284, -1, 33284, -1, 36766, -1, 17515, - -1, 33425, -1, 33419, -1, 33437, -1, 21171, - -1, 33457, -1, 33459, -1, 33469, -1, 33510, - -1, 158524, -1, 33565, -1, 33635, -1, 33709, - -1, 33571, -1, 33725, -1, 33767, -1, 33619, - -1, 33738, -1, 33740, -1, 33756, -1, 158774, - -1, 159083, -1, 158933, -1, 17707, -1, 34033, - -1, 34035, -1, 34070, -1, 160714, -1, 34148, - -1, 159532, -1, 17757, -1, 17761, -1, 159665, - -1, 159954, -1, 17771, -1, 34384, -1, 34407, - -1, 34409, -1, 34473, -1, 34440, -1, 34574, - -1, 34530, -1, 34600, -1, 34667, -1, 34694, - -1, 17879, -1, 34785, -1, 34817, -1, 17913, - -1, 34912, -1, 161383, -1, 35031, -1, 35038, - -1, 17973, -1, 35066, -1, 13499, -1, 161966, - -1, 162150, -1, 18110, -1, 18119, -1, 35488, - -1, 162984, -1, 36011, -1, 36033, -1, 36123, - -1, 36215, -1, 163631, -1, 133124, -1, 36299, - -1, 36284, -1, 36336, -1, 133342, -1, 36564, - -1, 165330, -1, 165357, -1, 37012, -1, 37105, - -1, 37137, -1, 165678, -1, 37147, -1, 37432, - -1, 37591, -1, 37592, -1, 37500, -1, 37881, - -1, 37909, -1, 166906, -1, 38283, -1, 18837, - -1, 38327, -1, 167287, -1, 18918, -1, 38595, - -1, 23986, -1, 38691, -1, 168261, -1, 168474, - -1, 19054, -1, 19062, -1, 38880, -1, 168970, - -1, 19122, -1, 169110, -1, 38953, -1, 169398, - -1, 39138, -1, 19251, -1, 39209, -1, 39335, - -1, 39362, -1, 39422, -1, 19406, -1, 170800, - -1, 40000, -1, 40189, -1, 19662, -1, 19693, - -1, 40295, -1, 172238, -1, 19704, -1, 172293, - -1, 172558, -1, 172689, -1, 19798, -1, 40702, - -1, 40709, -1, 40719, -1, 40726, -1, 173568, - -1, }; - -const uint16_t utf8proc_stage1table[] = { - 0, 256, 512, 768, 1024, 1280, 1536, - 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, - 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632, - 5888, 6144, 6400, 6656, 6912, 2048, 7168, 7424, - 7680, 7936, 8192, 8448, 8704, 8960, 9216, 9472, - 9728, 9984, 10240, 10496, 10752, 11008, 11264, 11520, - 11776, 12032, 12288, 12544, 12800, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 13056, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 13312, 13568, 5376, 5376, 5376, 13824, 2048, 2048, - 14080, 14336, 2048, 2048, 2048, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 14592, 14848, 14848, 14848, 14848, 14848, 14848, 14848, - 14848, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15360, 15616, 15872, 16128, 16384, 16640, - 16896, 17152, 17408, 2048, 17664, 17920, 2048, 2048, - 2048, 18176, 18432, 18688, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 5376, 5376, 5376, 18944, 19200, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 19456, 19712, 19968, 20224, 20480, 20736, 20992, - 21248, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 5376, - 5376, 5376, 5376, 5376, 5376, 5376, 5376, 21504, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 21760, 22016, 22272, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 22528, 22784, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, - 2048, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 23040, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 15104, 15104, 15104, 15104, 15104, 15104, 15104, 15104, - 23040, }; - -const uint16_t utf8proc_stage2table[] = { - 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 2, 4, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 5, 5, 5, - 6, 7, 8, 8, 9, 10, 9, 8, - 8, 11, 12, 8, 13, 14, 15, 14, - 14, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 14, 8, 17, 18, 19, - 8, 8, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 11, 8, 12, 46, - 47, 46, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 11, 74, 12, 74, - 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 75, 8, 10, 10, 10, 10, 76, - 76, 77, 76, 78, 79, 74, 80, 76, - 81, 82, 83, 84, 85, 86, 87, 76, - 8, 88, 89, 90, 91, 92, 93, 94, - 8, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, - 74, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, - 74, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 213, 298, - 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 213, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 213, 213, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 213, 339, 340, 341, 213, - 342, 339, 339, 339, 339, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 213, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 213, 213, 213, - 213, 213, 213, 454, 455, 456, 457, 458, - 213, 213, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, - 473, 213, 213, 213, 474, 475, 213, 476, - 477, 213, 478, 213, 479, 213, 213, 213, - 213, 480, 213, 213, 481, 213, 213, 213, - 213, 482, 483, 213, 484, 213, 213, 213, - 485, 213, 213, 486, 213, 213, 487, 213, - 213, 213, 213, 213, 213, 213, 488, 213, - 213, 489, 213, 213, 490, 213, 213, 213, - 213, 491, 492, 493, 494, 495, 213, 213, - 213, 213, 213, 496, 213, 339, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 506, 507, 507, 507, 507, - 507, 507, 507, 46, 46, 46, 46, 506, - 506, 506, 506, 506, 506, 506, 506, 506, - 506, 507, 507, 46, 46, 46, 46, 46, - 46, 508, 509, 510, 511, 512, 513, 46, - 46, 514, 515, 516, 517, 518, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 507, - 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, - 46, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 524, 524, - 532, 524, 533, 524, 534, 535, 536, 537, - 537, 537, 537, 536, 538, 537, 537, 537, - 537, 537, 539, 539, 540, 541, 542, 543, - 544, 545, 537, 537, 537, 537, 546, 547, - 537, 548, 549, 537, 537, 550, 550, 550, - 550, 551, 537, 537, 537, 537, 524, 524, - 524, 552, 553, 554, 555, 556, 557, 524, - 537, 537, 537, 524, 524, 524, 537, 537, - 558, 524, 524, 524, 537, 537, 537, 537, - 524, 536, 537, 537, 524, 559, 560, 560, - 559, 560, 560, 559, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, - 524, 0, 0, 0, 0, 561, 46, 0, - 0, 0, 0, 562, 563, 564, 565, 566, - 0, 0, 0, 0, 0, 86, 567, 568, - 569, 570, 571, 572, 0, 573, 0, 574, - 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 0, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 635, 636, 637, - 0, 638, 639, 640, 641, 642, 643, 644, - 213, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 666, 667, - 668, 669, 670, 671, 213, 672, 673, 74, - 674, 675, 676, 677, 678, 213, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 715, 716, 717, 718, 719, 720, - 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 765, 766, 767, 768, - 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779, 780, 781, 782, 783, 784, - 785, 786, 787, 788, 789, 790, 791, 792, - 793, 794, 795, 796, 797, 798, 799, 800, - 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 524, 524, 524, 524, - 0, 813, 813, 814, 815, 816, 817, 818, - 819, 820, 821, 822, 823, 824, 825, 826, - 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, - 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 894, 895, 896, 897, 898, - 899, 900, 901, 902, 903, 904, 905, 906, - 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 928, 929, 930, - 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 941, 942, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, - 966, 967, 968, 969, 970, 971, 972, 973, - 974, 975, 976, 977, 978, 979, 980, 981, - 982, 983, 984, 985, 986, 987, 988, 989, - 0, 0, 507, 990, 990, 990, 990, 990, - 990, 0, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 0, 990, 1030, 0, 0, 0, 0, - 0, 0, 537, 524, 524, 524, 524, 537, - 524, 524, 524, 1031, 537, 524, 524, 524, - 524, 524, 524, 537, 537, 537, 537, 537, - 537, 524, 524, 537, 524, 524, 1031, 1032, - 524, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 1042, 1043, 1044, 1045, 1046, - 1047, 1046, 1048, 1049, 1046, 524, 537, 1046, - 1041, 0, 0, 0, 0, 0, 0, 0, - 0, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 0, 0, 0, 0, - 0, 1050, 1050, 1050, 1046, 1046, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1051, 1051, 1051, 1051, 0, 0, 0, - 0, 0, 0, 0, 1052, 14, 1053, 76, - 76, 524, 524, 524, 524, 524, 524, 0, - 0, 0, 0, 0, 1053, 0, 0, 1053, - 1053, 0, 1054, 1055, 1056, 1057, 1058, 1059, - 1060, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 0, 0, 0, 0, - 0, 1061, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1062, 1054, 1063, 1064, 1065, 1066, 1067, - 1068, 1069, 1070, 1071, 1072, 1073, 1074, 537, - 524, 524, 524, 524, 524, 537, 524, 524, - 0, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 9, 1076, 1076, 1053, 1054, - 1054, 1077, 1054, 1054, 1054, 1054, 1078, 1079, - 1080, 1081, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1082, 1083, 1084, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1085, 1086, 1053, 1087, 524, - 524, 524, 524, 524, 524, 524, 1051, 813, - 524, 524, 524, 524, 537, 524, 1061, 1061, - 524, 524, 76, 537, 524, 524, 537, 1054, - 1054, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 1054, 1054, 1054, 1088, 1088, - 1054, 1053, 1053, 1053, 1053, 1053, 1053, 1053, - 1053, 1053, 1053, 1053, 1053, 1053, 1053, 0, - 80, 1054, 1089, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 524, 537, 524, 524, 537, 524, 524, - 537, 537, 537, 524, 537, 537, 524, 537, - 524, 524, 524, 537, 524, 537, 524, 537, - 524, 537, 524, 524, 0, 0, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1090, - 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1054, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 524, 524, 524, 524, - 524, 524, 524, 537, 524, 1092, 1092, 76, - 8, 8, 8, 1092, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1090, 1090, 1093, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 1094, 1095, 339, 339, 339, 339, 339, - 339, 1096, 1097, 339, 1098, 1099, 339, 339, - 339, 339, 339, 0, 0, 1100, 339, 1093, - 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1093, 1093, 1093, 1093, 1101, 0, - 0, 339, 524, 537, 524, 524, 0, 0, - 0, 1102, 1103, 1104, 1105, 1106, 1107, 1108, - 1109, 339, 339, 1090, 1090, 990, 990, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 990, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 339, 339, 339, 339, - 339, 0, 1090, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 339, 339, 0, 0, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 0, 0, 0, 339, - 339, 339, 339, 0, 0, 1111, 339, 1112, - 1093, 1093, 1090, 1090, 1090, 1090, 0, 0, - 1113, 1093, 0, 0, 1114, 1115, 1101, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 1116, 0, 0, 0, 0, 1117, 1118, 0, - 1119, 339, 339, 1090, 1090, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 339, 339, 10, 10, 1120, 1120, 1120, - 1120, 1120, 1120, 812, 0, 0, 0, 0, - 0, 0, 1090, 1090, 1093, 0, 339, 339, - 339, 339, 339, 339, 0, 0, 0, 0, - 339, 339, 0, 0, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 1121, 0, 339, 1122, - 0, 339, 339, 0, 0, 1111, 0, 1093, - 1093, 1093, 1090, 1090, 0, 0, 0, 0, - 1090, 1090, 0, 0, 1090, 1090, 1101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1123, 1124, 1125, 339, 0, 1126, - 0, 0, 0, 0, 0, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1090, 1090, 339, 339, 339, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1090, 1090, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 339, 339, 339, 0, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 0, 339, 339, - 339, 339, 339, 0, 0, 1111, 339, 1093, - 1093, 1093, 1090, 1090, 1090, 1090, 1090, 0, - 1090, 1090, 1093, 0, 1093, 1093, 1101, 0, - 0, 339, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 1090, 1090, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1090, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 339, 339, 0, 0, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 0, 339, 339, - 339, 339, 339, 0, 0, 1111, 339, 1127, - 1090, 1093, 1090, 1090, 1090, 0, 0, 0, - 1128, 1129, 0, 0, 1130, 1131, 1101, 0, - 0, 0, 0, 0, 0, 0, 0, 1132, - 1133, 0, 0, 0, 0, 1134, 1135, 0, - 339, 339, 339, 0, 0, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 812, 339, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1090, 339, 0, 339, 339, - 339, 339, 339, 339, 0, 0, 0, 339, - 339, 339, 0, 1136, 339, 1137, 339, 0, - 0, 0, 339, 339, 0, 339, 0, 339, - 339, 0, 0, 0, 339, 339, 0, 0, - 0, 339, 339, 339, 0, 0, 0, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 1138, - 1093, 1090, 1093, 1093, 0, 0, 0, 1139, - 1140, 1093, 0, 1141, 1142, 1143, 1101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 1144, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1120, 1120, 1120, 76, 76, 76, 76, - 76, 76, 10, 76, 0, 0, 0, 0, - 0, 0, 1093, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 1090, - 1090, 1090, 1093, 1093, 1093, 1093, 0, 1145, - 1090, 1146, 0, 1090, 1090, 1090, 1101, 0, - 0, 0, 0, 0, 0, 0, 1147, 1148, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 0, 0, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 339, 339, - 339, 339, 339, 0, 0, 1111, 339, 1093, - 1149, 1150, 1093, 1151, 1093, 1093, 0, 1152, - 1153, 1154, 0, 1155, 1156, 1090, 1101, 0, - 0, 0, 0, 0, 0, 0, 1157, 1158, - 0, 0, 0, 0, 0, 0, 0, 339, - 0, 339, 339, 1090, 1090, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 0, 76, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 1159, - 1093, 1093, 1090, 1090, 1090, 0, 0, 1160, - 1161, 1093, 0, 1162, 1163, 1164, 1101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 1165, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 0, 0, 0, 0, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1093, 1093, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 1166, 0, 0, 0, 0, - 1167, 1093, 1093, 1090, 1090, 1090, 0, 1090, - 0, 1093, 1168, 1169, 1093, 1170, 1171, 1172, - 1173, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1093, 1093, 990, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 1090, 339, 1174, 1090, 1090, 1090, - 1090, 1175, 1175, 1101, 0, 0, 0, 0, - 10, 339, 339, 339, 339, 339, 339, 507, - 1090, 1176, 1176, 1176, 1176, 1090, 1090, 1090, - 990, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 990, 990, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 339, 0, 339, 0, 0, - 339, 339, 0, 339, 0, 0, 339, 0, - 0, 0, 0, 0, 0, 339, 339, 339, - 339, 0, 339, 339, 339, 339, 339, 339, - 339, 0, 339, 339, 339, 0, 339, 0, - 339, 0, 0, 339, 339, 0, 339, 339, - 339, 339, 1090, 339, 1177, 1090, 1090, 1090, - 1090, 1178, 1178, 0, 1090, 1090, 339, 0, - 0, 339, 339, 339, 339, 339, 0, 507, - 0, 1179, 1179, 1179, 1179, 1090, 1090, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 0, 1180, 1181, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 812, 812, 812, 990, 990, 990, - 990, 990, 990, 990, 990, 1182, 990, 990, - 990, 990, 990, 990, 812, 812, 812, 812, - 812, 537, 537, 812, 812, 812, 812, 812, - 812, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 812, 537, 812, - 537, 812, 1183, 11, 12, 11, 12, 1093, - 1093, 339, 339, 339, 1184, 339, 339, 339, - 339, 0, 339, 339, 339, 339, 1185, 339, - 339, 339, 339, 1186, 339, 339, 339, 339, - 1187, 339, 339, 339, 339, 1188, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 1189, 339, 0, 0, 0, 0, - 0, 0, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1191, 1191, 1191, 1191, 1090, - 1093, 1191, 1199, 524, 524, 1101, 990, 524, - 524, 339, 339, 339, 339, 0, 0, 0, - 0, 1090, 1090, 1090, 1200, 1090, 1090, 1090, - 1090, 0, 1090, 1090, 1090, 1090, 1201, 1090, - 1090, 1090, 1090, 1202, 1090, 1090, 1090, 1090, - 1203, 1090, 1090, 1090, 1090, 1204, 1090, 1090, - 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1205, 1090, 1090, 1090, 0, 812, - 812, 812, 812, 812, 812, 812, 812, 537, - 812, 812, 812, 812, 812, 812, 0, 0, - 812, 990, 990, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 339, 339, 1206, 1207, - 339, 0, 339, 339, 0, 1093, 1090, 1208, - 1090, 1090, 1093, 1090, 0, 0, 0, 1090, - 1111, 1093, 1101, 0, 0, 0, 0, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 990, 990, 990, 990, 990, - 990, 339, 339, 339, 339, 339, 339, 1093, - 1093, 1090, 1090, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, - 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, - 1240, 1241, 1242, 1243, 1244, 1245, 1246, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 990, 1247, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 0, - 1248, 1248, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 0, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 0, 0, 0, 0, - 524, 812, 990, 990, 990, 990, 990, 990, - 990, 990, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 990, 990, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 11, 12, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 990, 990, 990, 1249, - 1249, 1249, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 339, - 339, 339, 339, 1090, 1090, 1101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 1090, 1090, 1101, 990, 990, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 1090, 1090, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 339, - 339, 339, 0, 1090, 1090, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 1250, 1250, 1093, - 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, - 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1090, - 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1090, 1101, 1090, 990, 990, 990, - 507, 990, 990, 990, 10, 339, 524, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 0, 0, 0, 0, - 0, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 0, 0, 0, 0, 0, - 0, 8, 8, 8, 8, 8, 8, 1030, - 8, 8, 8, 8, 558, 558, 558, 7, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 507, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 1032, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 0, 1090, 1090, 1090, 1093, 1093, 1093, 1093, - 1090, 1090, 1252, 1252, 1252, 0, 0, 0, - 0, 1093, 1093, 1090, 1093, 1093, 1093, 1093, - 1093, 1093, 1031, 524, 537, 0, 0, 0, - 0, 76, 0, 0, 0, 8, 8, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 0, 0, 0, 0, 0, - 0, 1093, 1093, 1093, 1093, 1093, 1093, 1093, - 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, - 1093, 1093, 339, 339, 339, 339, 339, 339, - 339, 1093, 1093, 0, 0, 0, 0, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 0, 0, 0, 8, - 8, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 524, 537, 1093, 1093, 1093, 0, 0, 990, - 990, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1090, 1090, 1090, 1090, 1093, 1253, 1254, - 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, - 339, 339, 1263, 1264, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 1111, 1265, 1090, - 1090, 1090, 1090, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 339, 339, - 339, 339, 339, 339, 339, 0, 0, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 990, 990, 990, 990, 990, - 990, 990, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 524, 537, 524, 524, - 524, 524, 524, 524, 524, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 1277, 1278, 1279, - 507, 1280, 1281, 1282, 1283, 1284, 1285, 1286, - 1287, 1288, 1289, 1290, 507, 1291, 1292, 1293, - 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, - 1302, 1303, 1304, 1305, 1306, 1307, 1308, 507, - 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, - 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, - 1333, 1334, 1335, 1336, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 1337, 213, 213, 213, 213, 1338, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 1339, 1340, 1341, 1342, - 1307, 1343, 1344, 1345, 1346, 1347, 1348, 1349, - 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, - 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, - 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, - 1374, 524, 524, 537, 524, 524, 524, 524, - 524, 524, 524, 537, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, - 537, 1375, 1376, 1377, 1378, 1379, 1380, 1381, - 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, - 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, - 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, - 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, - 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, - 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, - 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, - 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, - 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, - 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, - 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, - 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, - 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, - 1526, 1527, 1528, 1529, 1530, 0, 0, 0, - 0, 1531, 1532, 1533, 1534, 1535, 1536, 1537, - 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, - 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, - 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, - 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, - 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, - 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, - 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, - 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, - 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, - 1618, 1619, 1620, 0, 0, 0, 0, 0, - 0, 1621, 1622, 1623, 1624, 1625, 1626, 1627, - 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, - 1636, 1637, 1638, 1639, 1640, 1641, 1642, 0, - 0, 1643, 1644, 1645, 1646, 1647, 1648, 0, - 0, 1649, 1650, 1651, 1652, 1653, 1654, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, - 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, - 1680, 1681, 1682, 1683, 1684, 1685, 1686, 0, - 0, 1687, 1688, 1689, 1690, 1691, 1692, 0, - 0, 1693, 1694, 1695, 1696, 1697, 1698, 1699, - 1700, 0, 1701, 0, 1702, 0, 1703, 0, - 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, - 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, - 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, - 1728, 1729, 1730, 1731, 1732, 1733, 1734, 0, - 0, 1735, 1736, 1737, 1738, 1739, 1740, 1741, - 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, - 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, - 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, - 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, - 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, - 1782, 1783, 1784, 1785, 1786, 1787, 0, 1788, - 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, - 1797, 1798, 1799, 1800, 1801, 1802, 0, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1814, 1815, 1816, 0, 0, 1817, - 1818, 1819, 1820, 1821, 1822, 0, 1823, 1824, - 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, - 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, - 1841, 0, 0, 1842, 1843, 1844, 0, 1845, - 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, - 0, 1854, 1855, 1856, 1856, 1856, 1856, 1856, - 1857, 1856, 1856, 1856, 80, 1858, 1858, 1250, - 1859, 1030, 1860, 1030, 1030, 1030, 1030, 8, - 1861, 79, 91, 11, 79, 79, 91, 11, - 79, 8, 8, 8, 8, 1862, 1863, 1864, - 8, 1865, 1866, 1867, 1868, 1869, 1870, 1871, - 75, 9, 9, 9, 1872, 1873, 8, 1874, - 1875, 8, 79, 91, 8, 1876, 8, 1877, - 47, 47, 8, 8, 8, 1878, 11, 12, - 1879, 1880, 1881, 8, 8, 8, 8, 8, - 8, 8, 8, 74, 8, 47, 8, 8, - 1882, 8, 8, 8, 8, 8, 8, 8, - 1856, 80, 80, 80, 80, 0, 0, 0, - 0, 0, 0, 80, 80, 80, 80, 80, - 80, 1883, 1884, 0, 0, 1885, 1886, 1887, - 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, - 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, - 0, 1912, 1913, 1914, 1915, 1916, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 10, 10, 10, 10, 10, 10, - 10, 1917, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 524, 524, 550, 550, 524, 524, 524, - 524, 550, 550, 550, 524, 524, 813, 813, - 813, 813, 524, 813, 813, 813, 550, 550, - 524, 537, 524, 550, 550, 537, 537, 537, - 537, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1918, 1919, 1920, 1921, 76, 1922, 1923, - 1924, 76, 1925, 1926, 1927, 1927, 1927, 1928, - 1929, 1930, 1930, 1931, 1932, 76, 1933, 1934, - 76, 76, 1935, 1936, 1937, 1937, 1937, 76, - 76, 1938, 1939, 1940, 76, 1941, 76, 1942, - 76, 1941, 76, 1943, 1944, 1945, 1920, 82, - 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, - 1954, 1955, 1956, 76, 1957, 1958, 1959, 1960, - 1961, 1962, 74, 74, 74, 74, 1963, 1964, - 1946, 1956, 1965, 76, 74, 76, 76, 1966, - 0, 0, 0, 0, 1967, 1968, 1969, 1970, - 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, - 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, - 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 1249, 1249, 1249, 2012, 2013, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2014, 74, 2015, 74, 2016, 76, 76, - 76, 76, 76, 2017, 2018, 76, 76, 76, - 76, 74, 76, 76, 74, 76, 76, 74, - 76, 76, 76, 76, 76, 76, 76, 2019, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 2020, 2021, - 2022, 2023, 76, 2024, 76, 2025, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 2026, 2026, 2027, 2028, 74, 74, - 74, 2029, 2030, 2026, 2031, 2032, 2026, 74, - 74, 74, 2026, 13, 83, 74, 2026, 2026, - 74, 74, 74, 2026, 2026, 2026, 2026, 74, - 2026, 2026, 2026, 2026, 2033, 2034, 2035, 2036, - 74, 74, 74, 74, 2026, 2037, 2038, 2026, - 2039, 2040, 2026, 2026, 2026, 74, 74, 74, - 74, 74, 2026, 74, 2026, 2041, 2026, 2026, - 2026, 2026, 2042, 2026, 2043, 2044, 2045, 2026, - 2046, 2047, 2048, 2026, 2026, 2026, 2049, 74, - 74, 74, 74, 2026, 2026, 2026, 2026, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 2026, 2050, 2051, 2052, 74, 2053, 2054, 2026, - 2026, 2026, 2026, 2026, 2026, 74, 2055, 2056, - 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, - 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2026, - 2026, 2072, 2073, 2074, 2075, 2076, 2077, 2078, - 2079, 2080, 2081, 2026, 2026, 2026, 74, 74, - 2026, 2026, 2082, 2083, 74, 74, 74, 74, - 74, 2026, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 2084, 2026, 74, 74, 2026, - 2026, 2085, 2086, 2026, 2087, 2088, 2089, 2090, - 2091, 2026, 2026, 2092, 2093, 2094, 2095, 2026, - 2026, 2026, 74, 74, 74, 74, 74, 2026, - 2026, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 2026, 2026, 2026, 2026, 2026, 74, - 74, 2026, 2026, 74, 74, 74, 74, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2096, 2097, 2098, 2099, 2026, 2026, 2026, - 2026, 2026, 2026, 2100, 2101, 2102, 2103, 74, - 74, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 76, 76, 76, 76, 76, 76, 76, - 76, 2026, 2026, 2026, 2026, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 2026, 2026, 76, 76, 76, 76, 76, - 76, 76, 2104, 2105, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 76, 74, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 812, 76, - 76, 76, 76, 76, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 74, 74, 74, - 74, 74, 74, 76, 76, 76, 76, 76, - 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2106, 2107, 2108, 2109, 2110, 2111, 2112, - 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, - 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, - 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, - 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, - 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, - 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, - 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, - 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, - 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, - 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, - 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, - 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, - 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, - 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, - 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, - 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 74, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 74, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 74, 74, 74, 74, 74, 74, 74, - 74, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 74, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 812, 76, 76, - 76, 76, 76, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 76, 76, 76, 0, 76, - 76, 76, 76, 0, 0, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 0, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 0, 76, 0, - 76, 76, 76, 76, 0, 0, 0, 76, - 0, 76, 76, 76, 76, 76, 76, 76, - 0, 0, 76, 76, 76, 76, 76, 76, - 76, 11, 12, 11, 12, 11, 12, 11, - 12, 11, 12, 11, 12, 11, 12, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 76, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 0, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 0, 2026, 74, 74, 2026, 2026, 11, 12, - 74, 74, 74, 74, 0, 0, 0, 0, - 0, 74, 74, 74, 2026, 2026, 2026, 2026, - 74, 74, 74, 74, 74, 2026, 2026, 2026, - 74, 74, 74, 2026, 2026, 2026, 2026, 11, - 12, 11, 12, 11, 12, 0, 0, 0, - 0, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 11, 12, 11, 12, - 11, 12, 11, 12, 11, 12, 11, 12, - 11, 12, 11, 12, 11, 12, 11, 12, - 11, 12, 74, 74, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 74, 74, 74, 74, 74, 74, 74, - 74, 2026, 74, 74, 74, 74, 74, 74, - 74, 2026, 2026, 2026, 2026, 2026, 2026, 74, - 74, 74, 2026, 74, 74, 74, 74, 2026, - 2026, 2026, 2026, 2026, 74, 2026, 2026, 74, - 74, 11, 12, 11, 12, 2026, 74, 74, - 74, 74, 2026, 74, 2026, 2026, 2026, 74, - 74, 2026, 2026, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 2026, 2026, 2026, - 2026, 2026, 2026, 74, 74, 11, 12, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 2026, 2026, 2245, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 74, 2026, - 2026, 2026, 2026, 74, 74, 2026, 74, 2026, - 74, 74, 2026, 74, 2026, 2026, 2026, 2026, - 74, 74, 74, 74, 74, 2026, 2026, 74, - 74, 74, 74, 74, 74, 2026, 2026, 2026, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 2026, 2026, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 2026, 2026, 74, - 74, 74, 74, 2026, 2026, 2026, 2026, 74, - 2026, 2026, 74, 74, 2026, 2246, 2247, 2248, - 74, 74, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 74, 74, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 74, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, - 74, 74, 74, 74, 74, 2249, 2250, 2026, - 74, 74, 74, 2026, 2026, 2026, 2026, 2026, - 74, 74, 74, 74, 74, 2026, 2026, 2026, - 74, 74, 74, 74, 2026, 74, 74, 74, - 2026, 2026, 2026, 2026, 2026, 74, 2026, 74, - 74, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2251, 2252, 2253, 2254, 2255, 2256, 2257, - 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, - 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, - 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, - 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, - 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, - 0, 2298, 2299, 2300, 2301, 2302, 2303, 2304, - 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, - 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, - 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, - 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, - 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, - 0, 2345, 2346, 2347, 2348, 2349, 2350, 2351, - 2352, 2353, 2354, 2355, 2356, 2357, 0, 0, - 0, 0, 0, 0, 0, 213, 2358, 2359, - 213, 0, 0, 0, 0, 0, 0, 0, - 0, 2360, 2361, 2362, 2363, 2364, 2365, 2366, - 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, - 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, - 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, - 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, - 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, - 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, - 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, - 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, - 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, - 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, - 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, - 2455, 2456, 2457, 2458, 2459, 213, 76, 76, - 76, 76, 76, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 8, 8, 8, 1251, 8, - 8, 2460, 2461, 2462, 2463, 2464, 2465, 2466, - 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, - 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, - 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, - 2491, 2492, 2493, 2494, 2495, 2496, 2497, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 2498, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 8, 8, 79, 91, 79, 91, 8, - 8, 8, 79, 91, 8, 79, 91, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 1030, 0, 0, 0, 0, 79, 91, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 0, 76, 76, 76, 76, - 2499, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 2500, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2501, 2502, 2503, 2504, 2505, 2506, 2507, - 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, - 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, - 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, - 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, - 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, - 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, - 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, - 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, - 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, - 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, - 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, - 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, - 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, - 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, - 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, - 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, - 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, - 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, - 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, - 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, - 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, - 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, - 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, - 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, - 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, - 2708, 2709, 2710, 2711, 2712, 2713, 2714, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 0, 0, 0, - 0, 2715, 8, 8, 8, 76, 507, 339, - 1249, 11, 12, 11, 12, 11, 12, 11, - 12, 11, 12, 76, 76, 11, 12, 11, - 12, 11, 12, 11, 12, 1030, 11, 12, - 12, 76, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 2716, 1032, 536, 1031, 2717, - 2717, 1030, 507, 507, 507, 507, 507, 2718, - 76, 2719, 2720, 2721, 507, 339, 8, 76, - 76, 0, 339, 339, 339, 339, 339, 2722, - 339, 339, 339, 339, 2723, 2724, 2725, 2726, - 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, - 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, - 2743, 2744, 2745, 2746, 339, 2747, 2748, 2749, - 2750, 2751, 2752, 339, 339, 339, 339, 339, - 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, - 2761, 2762, 2763, 2764, 2765, 2766, 2767, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 2768, 339, 339, - 0, 0, 2769, 2770, 2771, 2772, 2773, 2774, - 2775, 1030, 339, 339, 339, 339, 339, 2776, - 339, 339, 339, 339, 2777, 2778, 2779, 2780, - 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, - 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, - 2797, 2798, 2799, 2800, 339, 2801, 2802, 2803, - 2804, 2805, 2806, 339, 339, 339, 339, 339, - 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, - 2815, 2816, 2817, 2818, 2819, 2820, 2821, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 2822, 2823, 2824, 2825, 339, 2826, 339, 339, - 2827, 2828, 2829, 2830, 8, 507, 2831, 2832, - 2833, 0, 0, 0, 0, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 0, 0, 2834, 2835, 2836, 2837, 2838, 2839, - 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, - 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, - 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, - 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, - 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, - 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, - 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, - 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, - 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, - 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, - 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, - 0, 812, 812, 2928, 2929, 2930, 2931, 2932, - 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, - 2941, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 2942, 2943, 2944, 2945, 2946, 2947, 2948, - 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, - 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, - 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, - 0, 2973, 2974, 2975, 2976, 2977, 2978, 2979, - 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, - 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, - 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, - 3004, 3005, 3006, 3007, 3008, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3009, 3010, 3011, 3012, 3013, 3014, 3015, - 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, - 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, - 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, - 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, - 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, - 812, 3056, 3057, 3058, 3059, 3060, 3061, 3062, - 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, - 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, - 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, - 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, - 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, - 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, - 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, - 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, - 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, - 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, - 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, - 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, - 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, - 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, - 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, - 0, 3183, 3184, 3185, 3186, 3187, 3188, 3189, - 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, - 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, - 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, - 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, - 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, - 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, - 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, - 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, - 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, - 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, - 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, - 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, - 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, - 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, - 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, - 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, - 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, - 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, - 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, - 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, - 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, - 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, - 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, - 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, - 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, - 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, - 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, - 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, - 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, - 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, - 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, - 3438, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 507, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, - 506, 506, 506, 506, 0, 0, 0, 0, - 0, 46, 46, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 1252, 339, 339, 339, 1101, - 339, 339, 339, 339, 1090, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 1093, 1093, 1090, 1090, - 1093, 76, 76, 76, 76, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 8, 8, 8, - 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, - 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, - 3448, 3448, 3449, 3450, 3451, 3452, 3453, 3454, - 3455, 3456, 3457, 3458, 3459, 3460, 3461, 3462, - 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, - 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, - 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, - 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, - 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, - 3503, 3504, 3505, 3506, 3507, 3508, 3509, 3510, - 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, - 3519, 3520, 3521, 3522, 3523, 3524, 3525, 3526, - 3527, 3528, 3529, 3530, 3531, 3460, 3532, 3533, - 3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541, - 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, - 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, - 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565, - 3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573, - 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, - 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, - 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597, - 3598, 3599, 3550, 3600, 3601, 3602, 3603, 3604, - 3605, 3606, 3607, 3534, 3608, 3609, 3610, 3611, - 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, - 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, - 3460, 3628, 3629, 3630, 3631, 3632, 3633, 3634, - 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, - 3643, 3644, 3645, 3646, 3647, 3648, 3649, 3650, - 3651, 3652, 3653, 3654, 3536, 3655, 3656, 3657, - 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, - 3666, 3667, 3668, 3669, 3670, 3671, 3672, 3673, - 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, - 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, - 3690, 3691, 3692, 3693, 3694, 3695, 3696, 3697, - 3698, 3699, 3700, 3701, 3702, 3703, 3704, 339, - 339, 3705, 339, 3706, 339, 339, 3707, 3708, - 3709, 3710, 3711, 3712, 3713, 3714, 3715, 3716, - 339, 3717, 339, 3718, 339, 339, 3719, 3720, - 339, 339, 339, 3721, 3722, 3723, 3724, 0, - 0, 3725, 3726, 3727, 3728, 3729, 3730, 3731, - 3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, - 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, - 3748, 3749, 3750, 3751, 3752, 3753, 3754, 3755, - 3756, 3757, 3758, 3759, 3760, 3761, 3762, 3763, - 3589, 3764, 3765, 3766, 3767, 3768, 3769, 3769, - 3770, 3771, 3772, 3773, 3774, 3775, 3776, 3777, - 3719, 3778, 3779, 3780, 0, 0, 0, 0, - 0, 3781, 3782, 3783, 3784, 3785, 3786, 3787, - 3788, 3731, 3789, 3790, 3791, 3705, 3792, 3793, - 3794, 3795, 3796, 3797, 3798, 3799, 3800, 3801, - 3802, 3803, 3740, 3804, 3741, 3805, 3806, 3807, - 3808, 3809, 3706, 3481, 3810, 3811, 3812, 3551, - 3638, 3813, 3814, 3748, 3815, 3749, 3816, 3817, - 3818, 3708, 3819, 3820, 3821, 3822, 3823, 3709, - 3824, 3825, 3826, 3827, 3828, 3829, 3763, 3830, - 3831, 3589, 3832, 3767, 3833, 3834, 3835, 3836, - 3837, 3772, 3838, 3718, 3839, 3773, 3532, 3840, - 3774, 3841, 3776, 3842, 3843, 3844, 3845, 3846, - 3778, 3714, 3847, 3779, 3848, 3780, 3849, 3448, - 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, - 3858, 3859, 3860, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3861, 3862, 3863, 3864, 3865, 3866, 3867, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3868, 3869, 3870, 3871, - 3872, 0, 0, 0, 0, 0, 3873, 3874, - 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, - 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, - 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, - 0, 3899, 3900, 3901, 3902, 3903, 0, 3904, - 0, 3905, 3906, 0, 3907, 3908, 0, 3909, - 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, - 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, - 3926, 3927, 3928, 3929, 3930, 3931, 3932, 3933, - 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, - 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, - 3950, 3951, 3952, 3953, 3954, 3955, 3956, 3957, - 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, - 3966, 3967, 3968, 3969, 3970, 3971, 3972, 3973, - 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, - 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, - 3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997, - 3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005, - 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, - 4014, 4015, 4016, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4017, 4018, 4019, 4020, - 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, - 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, - 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, - 4045, 4046, 4047, 4048, 4049, 4050, 4051, 4052, - 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, - 4061, 4062, 4063, 4064, 4055, 4065, 4066, 4067, - 4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, - 4076, 4077, 4078, 4079, 4080, 4081, 4082, 4083, - 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091, - 4092, 4093, 4094, 4095, 4096, 4097, 4098, 4099, - 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, - 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, - 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, - 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, - 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, - 4140, 4141, 4142, 4143, 4144, 4145, 4146, 4147, - 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, - 4156, 4157, 4158, 4159, 4160, 4161, 4162, 4163, - 4164, 4056, 4165, 4166, 4167, 4168, 4169, 4170, - 4171, 4172, 4173, 4174, 4175, 4176, 4177, 4178, - 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, - 4187, 4188, 4189, 4190, 4191, 4192, 4193, 4194, - 4195, 4196, 4197, 4198, 4199, 4200, 4201, 4202, - 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, - 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, - 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, - 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, - 4235, 4236, 4237, 4238, 4239, 4240, 4241, 4242, - 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, - 4251, 4252, 4253, 4254, 4255, 4256, 4257, 4258, - 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, - 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, - 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, - 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, - 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, - 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, - 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, - 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, - 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, - 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, - 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, - 4347, 4348, 4349, 4350, 4351, 4352, 4353, 4354, - 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, - 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, - 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, - 4379, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4380, 4381, 4382, 4383, 4384, 4385, 4386, - 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, - 4395, 4396, 4397, 4398, 4399, 4400, 4401, 4402, - 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, - 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, - 4419, 4420, 4421, 4422, 4423, 4424, 4425, 4426, - 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, - 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, - 4443, 0, 0, 4444, 4445, 4446, 4447, 4448, - 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, - 4457, 4458, 4459, 4460, 4461, 4462, 4463, 4464, - 4465, 4466, 4467, 4468, 4469, 4470, 4471, 4472, - 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, - 4481, 4482, 4483, 4484, 4485, 4486, 4487, 4488, - 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, - 4497, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4498, 4499, 4500, 4501, 4502, 4503, 4504, - 4505, 4506, 4507, 4508, 4509, 4510, 76, 0, - 0, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 4511, 4512, 4513, 4514, 4515, 4516, 4517, - 4518, 4519, 4520, 0, 0, 0, 0, 0, - 0, 524, 524, 524, 524, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4521, 4522, 4523, 4524, 4524, 4525, 4526, - 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, - 4535, 4536, 4537, 4538, 4539, 4540, 8, 8, - 4541, 4542, 4543, 4543, 4543, 4543, 4544, 4544, - 4544, 4545, 4546, 4547, 0, 4548, 4549, 4550, - 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, - 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, - 0, 4567, 4568, 4569, 4570, 0, 0, 0, - 0, 4571, 4572, 4573, 1054, 4574, 0, 4575, - 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583, - 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, - 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, - 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607, - 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, - 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, - 4624, 4625, 4626, 4627, 4628, 4629, 4630, 4631, - 4632, 4633, 4634, 4635, 4636, 4637, 4638, 4639, - 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, - 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, - 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663, - 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, - 4672, 4673, 4674, 4675, 4676, 4677, 4678, 4679, - 4680, 4681, 4682, 4683, 4684, 4685, 4686, 4687, - 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4695, - 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, - 4704, 4705, 4706, 4707, 4708, 4709, 0, 0, - 80, 0, 4710, 4711, 4712, 4713, 4714, 4715, - 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, - 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, - 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, - 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, - 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, - 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, - 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, - 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, - 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, - 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, - 4796, 4797, 4798, 4799, 4800, 4801, 4802, 4803, - 4804, 4805, 4806, 4807, 4808, 4809, 4810, 4811, - 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, - 4820, 4821, 4822, 4823, 4824, 4825, 4826, 4827, - 4828, 4829, 4830, 4831, 4832, 4833, 4834, 4835, - 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, - 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851, - 4852, 4853, 4854, 4855, 4856, 4857, 4858, 4859, - 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867, - 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, - 4876, 4877, 4878, 4879, 4880, 4881, 4882, 4883, - 4884, 4885, 4886, 4887, 4888, 4889, 4890, 4891, - 4892, 4893, 4894, 4895, 4896, 4897, 4898, 4899, - 0, 0, 0, 4900, 4901, 4902, 4903, 4904, - 4905, 0, 0, 4906, 4907, 4908, 4909, 4910, - 4911, 0, 0, 4912, 4913, 4914, 4915, 4916, - 4917, 0, 0, 4918, 4919, 4920, 0, 0, - 0, 4921, 4922, 4923, 4924, 4925, 4926, 4927, - 0, 4928, 4929, 4930, 4931, 4932, 4933, 4934, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4935, 4935, 4935, 76, 76, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 0, 339, 339, 0, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 0, 0, 0, 0, - 0, 990, 8, 812, 0, 0, 0, 0, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 0, 0, 0, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 4936, 4936, - 4936, 4936, 4936, 4936, 4936, 4936, 1251, 1251, - 1251, 1251, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 1251, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 1120, 1120, 1120, 1120, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 1249, 339, 339, 339, 339, 339, - 339, 339, 339, 1249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 990, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 990, 1249, 1249, 1249, 1249, 1249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4937, 4938, 4939, 4940, 4941, 4942, 4943, - 4944, 4945, 4946, 4947, 4948, 4949, 4950, 4951, - 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, - 4960, 4961, 4962, 4963, 4964, 4965, 4966, 4967, - 4968, 4969, 4970, 4971, 4972, 4973, 4974, 4975, - 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, - 4984, 4985, 4986, 4987, 4988, 4989, 4990, 4991, - 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, - 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, - 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, - 5016, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 0, - 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1050, 1050, 1050, 1050, 1050, 1050, 0, - 0, 1050, 0, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 0, - 1050, 1050, 0, 0, 0, 1050, 0, 0, - 1050, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 5017, - 5017, 5017, 5017, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1050, 1090, 1090, 1090, 0, 1090, 1090, - 0, 0, 0, 0, 0, 1090, 537, 1090, - 524, 1050, 1050, 1050, 1050, 0, 1050, 1050, - 1050, 0, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 0, 0, 0, - 0, 524, 550, 537, 0, 0, 0, 0, - 1101, 5017, 5017, 5017, 5017, 5017, 5017, 5017, - 5017, 0, 0, 0, 0, 0, 0, 0, - 0, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - 1046, 1046, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 1249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 990, 990, 990, 990, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 0, 0, 0, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 5018, 5019, 812, 812, 812, 812, 812, 5020, - 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, - 550, 550, 550, 812, 812, 812, 5029, 5030, - 5031, 5032, 5033, 5034, 80, 80, 80, 80, - 80, 80, 80, 80, 537, 537, 537, 537, - 537, 537, 537, 537, 812, 812, 524, 524, - 524, 524, 524, 537, 537, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 524, 524, 524, 524, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 5035, 5036, 5037, 5038, 5039, 5040, - 5041, 5042, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 524, 524, 524, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 1945, 1920, - 1963, 1947, 1948, 5044, 1927, 1930, 5045, 5046, - 1931, 1950, 1933, 5047, 1935, 1936, 1937, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 1941, 5055, - 5056, 5057, 1964, 1946, 5058, 1926, 0, 1956, - 1965, 5059, 1932, 5060, 5061, 1951, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 0, 1920, - 1963, 0, 0, 5044, 0, 0, 5045, 5046, - 0, 0, 1933, 5047, 1935, 1936, 0, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 1941, 5055, - 5056, 5057, 1964, 0, 5058, 0, 1928, 1956, - 1965, 5059, 1932, 5060, 5061, 0, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 1945, 0, - 1963, 1947, 1948, 5044, 0, 0, 5045, 5046, - 1931, 1950, 1933, 5047, 1935, 1936, 0, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 0, 5055, - 5056, 5057, 1964, 1946, 5058, 1926, 1928, 1956, - 1965, 5059, 1932, 5060, 5061, 1951, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 0, 1963, 1947, 1948, 5044, - 0, 1930, 5045, 5046, 1931, 1950, 0, 5047, - 0, 0, 0, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 0, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 1945, 1920, - 1963, 1947, 1948, 5044, 1927, 1930, 5045, 5046, - 1931, 1950, 1933, 5047, 1935, 1936, 1937, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 1941, 5055, - 5056, 5057, 1964, 1946, 5058, 1926, 1928, 1956, - 1965, 5059, 1932, 5060, 5061, 1951, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 1945, 1920, - 1963, 1947, 1948, 5044, 1927, 1930, 5045, 5046, - 1931, 1950, 1933, 5047, 1935, 1936, 1937, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 1941, 5055, - 5056, 5057, 1964, 1946, 5058, 1926, 1928, 1956, - 1965, 5059, 1932, 5060, 5061, 1951, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5043, 1945, 1920, - 1963, 1947, 1948, 5044, 1927, 1930, 5045, 5046, - 1931, 1950, 1933, 5047, 1935, 1936, 1937, 5048, - 5049, 5050, 5051, 5052, 5053, 5054, 1941, 5055, - 5056, 5057, 1964, 1946, 5058, 1926, 1928, 1956, - 1965, 5059, 1932, 5060, 5061, 1951, 5062, 5063, - 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5043, 1945, 1920, 1963, 1947, 1948, 5044, - 1927, 1930, 5045, 5046, 1931, 1950, 1933, 5047, - 1935, 1936, 1937, 5048, 5049, 5050, 5051, 5052, - 5053, 5054, 1941, 5055, 5056, 5057, 1964, 1946, - 5058, 1926, 1928, 1956, 1965, 5059, 1932, 5060, - 5061, 1951, 5062, 5063, 5064, 5065, 5066, 5067, - 5068, 5069, 5070, 5071, 5072, 5073, 5074, 0, - 0, 5075, 5076, 1960, 5077, 5078, 5079, 5080, - 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, - 1961, 5089, 5090, 5091, 5092, 5093, 5094, 5095, - 5096, 5097, 5098, 5099, 5100, 1959, 5101, 5102, - 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110, - 5111, 5112, 1958, 5113, 5114, 5115, 5116, 5117, - 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, - 5126, 5127, 5128, 5075, 5076, 1960, 5077, 5078, - 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, - 5087, 5088, 1961, 5089, 5090, 5091, 5092, 5093, - 5094, 5095, 5096, 5097, 5098, 5099, 5100, 1959, - 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, - 5109, 5110, 5111, 5112, 1958, 5113, 5114, 5115, - 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, - 5124, 5125, 5126, 5127, 5128, 5075, 5076, 1960, - 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, - 5085, 5086, 5087, 5088, 1961, 5089, 5090, 5091, - 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, - 5100, 1959, 5101, 5102, 5103, 5104, 5105, 5106, - 5107, 5108, 5109, 5110, 5111, 5112, 1958, 5113, - 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, - 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5075, - 5076, 1960, 5077, 5078, 5079, 5080, 5081, 5082, - 5083, 5084, 5085, 5086, 5087, 5088, 1961, 5089, - 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, - 5098, 5099, 5100, 1959, 5101, 5102, 5103, 5104, - 5105, 5106, 5107, 5108, 5109, 5110, 5111, 5112, - 1958, 5113, 5114, 5115, 5116, 5117, 5118, 5119, - 5120, 5121, 5122, 5123, 5124, 5125, 5126, 5127, - 5128, 5075, 5076, 1960, 5077, 5078, 5079, 5080, - 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, - 1961, 5089, 5090, 5091, 5092, 5093, 5094, 5095, - 5096, 5097, 5098, 5099, 5100, 1959, 5101, 5102, - 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110, - 5111, 5112, 1958, 5113, 5114, 5115, 5116, 5117, - 5118, 5119, 5120, 5121, 5122, 5123, 5124, 5125, - 5126, 5127, 5128, 5129, 5130, 0, 0, 5131, - 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, - 5140, 5131, 5132, 5133, 5134, 5135, 5136, 5137, - 5138, 5139, 5140, 5131, 5132, 5133, 5134, 5135, - 5136, 5137, 5138, 5139, 5140, 5131, 5132, 5133, - 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5131, - 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, - 5140, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5141, 5142, 5143, 5144, 5145, 3725, 5146, - 5147, 5148, 5149, 3726, 5150, 5151, 5152, 3727, - 5153, 5154, 5155, 5156, 5157, 5158, 5159, 5160, - 5161, 5162, 5163, 5164, 3782, 5165, 5166, 5167, - 5168, 5169, 5170, 5171, 5172, 5173, 3787, 3728, - 3729, 3788, 5174, 5175, 3538, 5176, 3730, 5177, - 5178, 5179, 5180, 5180, 5180, 5181, 5182, 5183, - 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, - 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5198, - 3790, 5199, 5200, 5201, 5202, 3732, 5203, 5204, - 5205, 3691, 5206, 5207, 5208, 5209, 5210, 5211, - 5212, 5213, 5214, 5215, 5216, 5217, 5218, 5219, - 5220, 5221, 5222, 5223, 5224, 5225, 5226, 5227, - 5228, 5229, 5230, 5231, 5231, 5232, 5233, 5234, - 3534, 5235, 5236, 5237, 5238, 5239, 5240, 5241, - 5242, 3737, 5243, 5244, 5245, 5246, 5247, 5248, - 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, - 5257, 5258, 5259, 5260, 5261, 5262, 5263, 3480, - 5264, 5265, 5266, 5266, 5267, 5268, 5268, 5269, - 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, - 5278, 5279, 5280, 5281, 3738, 5282, 5283, 5284, - 5285, 3802, 5285, 5286, 3740, 5287, 5288, 5289, - 5290, 3741, 3453, 5291, 5292, 5293, 5294, 5295, - 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, - 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, - 5312, 3742, 5313, 5314, 5315, 5316, 5317, 5318, - 3744, 5319, 5320, 5321, 5322, 5323, 5324, 5325, - 5326, 3481, 3810, 5327, 5328, 5329, 5330, 5331, - 5332, 5333, 5334, 3745, 5335, 5336, 5337, 5338, - 3853, 5339, 5340, 5341, 5342, 5343, 5344, 5345, - 5346, 5347, 5348, 5349, 5350, 5351, 3551, 5352, - 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, - 5361, 5362, 3746, 3638, 5363, 5364, 5365, 5366, - 5367, 5368, 5369, 5370, 3814, 5371, 5372, 5373, - 5374, 5375, 5376, 5377, 5378, 3815, 5379, 5380, - 5381, 5382, 5383, 5384, 5385, 5386, 5387, 5388, - 5389, 5390, 3817, 5391, 5392, 5393, 5394, 5395, - 5396, 5397, 5398, 5399, 5400, 5401, 5401, 5402, - 5403, 3819, 5404, 5405, 5406, 5407, 5408, 5409, - 5410, 3537, 5411, 5412, 5413, 5414, 5415, 5416, - 5417, 3825, 5418, 5419, 5420, 5421, 5422, 5423, - 5423, 3826, 3855, 5424, 5425, 5426, 5427, 5428, - 3499, 3828, 5429, 5430, 3757, 5431, 5432, 3713, - 5433, 5434, 3761, 5435, 5436, 5437, 5438, 5438, - 5439, 5440, 5441, 5442, 5443, 5444, 5445, 5446, - 5447, 5448, 5449, 5450, 5451, 5452, 5453, 5454, - 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, - 5463, 5464, 5465, 3767, 5466, 5467, 5468, 5469, - 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, - 5478, 5479, 5480, 5481, 5267, 5482, 5483, 5484, - 5485, 5486, 5487, 5488, 5489, 5490, 5491, 5492, - 5493, 3555, 5494, 5495, 5496, 5497, 5498, 5499, - 3770, 5500, 5501, 5502, 5503, 5504, 5505, 5506, - 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, - 5515, 5516, 5517, 5518, 5519, 3494, 5520, 5521, - 5522, 5523, 5524, 5525, 3835, 5526, 5527, 5528, - 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, - 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, - 5545, 3840, 3841, 5546, 5547, 5548, 5549, 5550, - 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, - 3842, 5559, 5560, 5561, 5562, 5563, 5564, 5565, - 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, - 5574, 5575, 5576, 5577, 5578, 5579, 5580, 5581, - 5582, 5583, 5584, 5585, 5586, 5587, 5588, 3848, - 3848, 5589, 5590, 5591, 5592, 5593, 5594, 5595, - 5596, 5597, 5598, 3849, 5599, 5600, 5601, 5602, - 5603, 5604, 5605, 5606, 5607, 5608, 5609, 5610, - 5611, 5612, 5613, 5614, 5615, 5616, 5617, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, - 80, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, - 558, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 0, - 0, }; - -const utf8proc_property_t utf8proc_properties[] = { - {0, 0, 0, 0, NULL, false, -1, -1, -1, -1, -1, false}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_BN, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_S, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_B, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_WS, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_B, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CC, 0, UTF8PROC_BIDI_CLASS_S, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ES, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17580, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 17400, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17640, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 97, -1, 0, -1, false, false, false, false, utf8proc_sequences + 0}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 98, -1, 8640, -1, false, false, false, false, utf8proc_sequences + 2}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 99, -1, 60, -1, false, false, false, false, utf8proc_sequences + 4}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 100, -1, 960, -1, false, false, false, false, utf8proc_sequences + 6}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 101, -1, 120, -1, false, false, false, false, utf8proc_sequences + 8}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 102, -1, 9120, -1, false, false, false, false, utf8proc_sequences + 10}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 103, -1, 1080, -1, false, false, false, false, utf8proc_sequences + 12}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 104, -1, 1200, -1, false, false, false, false, utf8proc_sequences + 14}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 105, -1, 180, -1, false, false, false, false, utf8proc_sequences + 16}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 106, -1, 1320, -1, false, false, false, false, utf8proc_sequences + 18}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 107, -1, 1440, -1, false, false, false, false, utf8proc_sequences + 20}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 108, -1, 1560, -1, false, false, false, false, utf8proc_sequences + 22}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 109, -1, 9480, -1, false, false, false, false, utf8proc_sequences + 24}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 110, -1, 240, -1, false, false, false, false, utf8proc_sequences + 26}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 111, -1, 300, -1, false, false, false, false, utf8proc_sequences + 28}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 112, -1, 9720, -1, false, false, false, false, utf8proc_sequences + 30}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 113, -1, -1, -1, false, false, false, false, utf8proc_sequences + 32}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 114, -1, 1680, -1, false, false, false, false, utf8proc_sequences + 34}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 115, -1, 1800, -1, false, false, false, false, utf8proc_sequences + 36}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 116, -1, 1920, -1, false, false, false, false, utf8proc_sequences + 38}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 117, -1, 360, -1, false, false, false, false, utf8proc_sequences + 40}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 118, -1, 10560, -1, false, false, false, false, utf8proc_sequences + 42}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 119, -1, 2040, -1, false, false, false, false, utf8proc_sequences + 44}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 120, -1, 10680, -1, false, false, false, false, utf8proc_sequences + 46}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 121, -1, 420, -1, false, false, false, false, utf8proc_sequences + 48}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 122, -1, 2160, -1, false, false, false, false, utf8proc_sequences + 50}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PC, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 65, -1, 65, 480, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66, -1, 66, 8700, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 67, -1, 67, 540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 68, -1, 68, 1020, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 69, -1, 69, 600, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 70, -1, 70, 9180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 71, -1, 71, 1140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 72, -1, 72, 1260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 73, -1, 73, 660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 74, -1, 74, 1380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 75, -1, 75, 1500, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 76, -1, 76, 1620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 77, -1, 77, 9540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 78, -1, 78, 720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 79, -1, 79, 780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 80, -1, 80, 9780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 81, -1, 81, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 82, -1, 82, 1740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 83, -1, 83, 1860, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 84, -1, 84, 1980, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 85, -1, 85, 840, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 86, -1, 86, 10620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 87, -1, 87, 2100, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 88, -1, 88, 10740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 89, -1, 89, 900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 90, -1, 90, 2220, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_NOBREAK, utf8proc_sequences + 52, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 54, false, -1, -1, -1, 3600, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 0, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PI, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_BN, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 57, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ET, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ET, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 60, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 62, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 64, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 67, false, 924, -1, 924, -1, -1, false, false, false, false, utf8proc_sequences + 67}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 69, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 72, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 28, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PF, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 74, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 78, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 82, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 86, false, -1, 224, -1, -1, -1, false, false, false, false, utf8proc_sequences + 89}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 91, false, -1, 225, -1, -1, -1, false, false, false, false, utf8proc_sequences + 94}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 96, false, -1, 226, -1, 10860, -1, false, false, false, false, utf8proc_sequences + 99}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 101, false, -1, 227, -1, -1, -1, false, false, false, false, utf8proc_sequences + 104}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 106, false, -1, 228, -1, 2400, -1, false, false, false, false, utf8proc_sequences + 109}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 111, false, -1, 229, -1, 3000, -1, false, false, false, false, utf8proc_sequences + 114}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 230, -1, 2640, -1, false, false, false, false, utf8proc_sequences + 116}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 118, false, -1, 231, -1, 8760, -1, false, false, false, false, utf8proc_sequences + 121}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 123, false, -1, 232, -1, -1, -1, false, false, false, false, utf8proc_sequences + 126}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 128, false, -1, 233, -1, -1, -1, false, false, false, false, utf8proc_sequences + 131}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 133, false, -1, 234, -1, 11220, -1, false, false, false, false, utf8proc_sequences + 136}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 138, false, -1, 235, -1, -1, -1, false, false, false, false, utf8proc_sequences + 141}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 143, false, -1, 236, -1, -1, -1, false, false, false, false, utf8proc_sequences + 146}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 148, false, -1, 237, -1, -1, -1, false, false, false, false, utf8proc_sequences + 151}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 153, false, -1, 238, -1, -1, -1, false, false, false, false, utf8proc_sequences + 156}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 158, false, -1, 239, -1, 9240, -1, false, false, false, false, utf8proc_sequences + 161}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 240, -1, -1, -1, false, false, false, false, utf8proc_sequences + 163}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 165, false, -1, 241, -1, -1, -1, false, false, false, false, utf8proc_sequences + 168}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 170, false, -1, 242, -1, -1, -1, false, false, false, false, utf8proc_sequences + 173}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 175, false, -1, 243, -1, -1, -1, false, false, false, false, utf8proc_sequences + 178}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 180, false, -1, 244, -1, 11460, -1, false, false, false, false, utf8proc_sequences + 183}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 185, false, -1, 245, -1, 3360, -1, false, false, false, false, utf8proc_sequences + 188}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 190, false, -1, 246, -1, 3240, -1, false, false, false, false, utf8proc_sequences + 193}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 248, -1, 3120, -1, false, false, false, false, utf8proc_sequences + 195}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 197, false, -1, 249, -1, -1, -1, false, false, false, false, utf8proc_sequences + 200}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 202, false, -1, 250, -1, -1, -1, false, false, false, false, utf8proc_sequences + 205}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 207, false, -1, 251, -1, -1, -1, false, false, false, false, utf8proc_sequences + 210}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 212, false, -1, 252, -1, 2280, -1, false, false, false, false, utf8proc_sequences + 215}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 217, false, -1, 253, -1, -1, -1, false, false, false, false, utf8proc_sequences + 220}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 254, -1, -1, -1, false, false, false, false, utf8proc_sequences + 222}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 224}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 227, false, 192, -1, 192, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 230, false, 193, -1, 193, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 233, false, 194, -1, 194, 10920, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 236, false, 195, -1, 195, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 239, false, 196, -1, 196, 2460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 242, false, 197, -1, 197, 3060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 198, -1, 198, 2700, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 245, false, 199, -1, 199, 8820, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 248, false, 200, -1, 200, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 251, false, 201, -1, 201, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 254, false, 202, -1, 202, 11280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 257, false, 203, -1, 203, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 260, false, 204, -1, 204, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 263, false, 205, -1, 205, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 266, false, 206, -1, 206, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 269, false, 207, -1, 207, 9300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 208, -1, 208, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 272, false, 209, -1, 209, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 275, false, 210, -1, 210, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 278, false, 211, -1, 211, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 281, false, 212, -1, 212, 11520, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 284, false, 213, -1, 213, 3420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 287, false, 214, -1, 214, 3300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 216, -1, 216, 3180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 290, false, 217, -1, 217, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 293, false, 218, -1, 218, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 296, false, 219, -1, 219, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 299, false, 220, -1, 220, 2340, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 302, false, 221, -1, 221, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 222, -1, 222, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 305, false, 376, -1, 376, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 308, false, -1, 257, -1, -1, -1, false, false, false, false, utf8proc_sequences + 311}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 313, false, 256, -1, 256, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 316, false, -1, 259, -1, 11100, -1, false, false, false, false, utf8proc_sequences + 319}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 321, false, 258, -1, 258, 11160, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 324, false, -1, 261, -1, -1, -1, false, false, false, false, utf8proc_sequences + 327}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 329, false, 260, -1, 260, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 332, false, -1, 263, -1, -1, -1, false, false, false, false, utf8proc_sequences + 335}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 337, false, 262, -1, 262, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 340, false, -1, 265, -1, -1, -1, false, false, false, false, utf8proc_sequences + 343}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 345, false, 264, -1, 264, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 348, false, -1, 267, -1, -1, -1, false, false, false, false, utf8proc_sequences + 351}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 353, false, 266, -1, 266, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 356, false, -1, 269, -1, -1, -1, false, false, false, false, utf8proc_sequences + 359}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 361, false, 268, -1, 268, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 364, false, -1, 271, -1, -1, -1, false, false, false, false, utf8proc_sequences + 367}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 369, false, 270, -1, 270, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 273, -1, -1, -1, false, false, false, false, utf8proc_sequences + 372}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 272, -1, 272, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 374, false, -1, 275, -1, 8880, -1, false, false, false, false, utf8proc_sequences + 377}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 379, false, 274, -1, 274, 8940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 382, false, -1, 277, -1, -1, -1, false, false, false, false, utf8proc_sequences + 385}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 387, false, 276, -1, 276, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 390, false, -1, 279, -1, -1, -1, false, false, false, false, utf8proc_sequences + 393}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 395, false, 278, -1, 278, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 398, false, -1, 281, -1, -1, -1, false, false, false, false, utf8proc_sequences + 401}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 403, false, 280, -1, 280, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 406, false, -1, 283, -1, -1, -1, false, false, false, false, utf8proc_sequences + 409}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 411, false, 282, -1, 282, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 414, false, -1, 285, -1, -1, -1, false, false, false, false, utf8proc_sequences + 417}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 419, false, 284, -1, 284, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 422, false, -1, 287, -1, -1, -1, false, false, false, false, utf8proc_sequences + 425}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 427, false, 286, -1, 286, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 430, false, -1, 289, -1, -1, -1, false, false, false, false, utf8proc_sequences + 433}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 435, false, 288, -1, 288, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 438, false, -1, 291, -1, -1, -1, false, false, false, false, utf8proc_sequences + 441}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 443, false, 290, -1, 290, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 446, false, -1, 293, -1, -1, -1, false, false, false, false, utf8proc_sequences + 449}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 451, false, 292, -1, 292, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 295, -1, -1, -1, false, false, false, false, utf8proc_sequences + 454}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 294, -1, 294, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 456, false, -1, 297, -1, -1, -1, false, false, false, false, utf8proc_sequences + 459}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 461, false, 296, -1, 296, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 464, false, -1, 299, -1, -1, -1, false, false, false, false, utf8proc_sequences + 467}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 469, false, 298, -1, 298, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 472, false, -1, 301, -1, -1, -1, false, false, false, false, utf8proc_sequences + 475}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 477, false, 300, -1, 300, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 480, false, -1, 303, -1, -1, -1, false, false, false, false, utf8proc_sequences + 483}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 485, false, 302, -1, 302, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 488, false, -1, 105, -1, -1, -1, false, false, false, false, utf8proc_sequences + 491}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 73, -1, 73, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 494, false, -1, 307, -1, -1, -1, false, false, false, false, utf8proc_sequences + 497}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 499, false, 306, -1, 306, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 502, false, -1, 309, -1, -1, -1, false, false, false, false, utf8proc_sequences + 505}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 507, false, 308, -1, 308, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 510, false, -1, 311, -1, -1, -1, false, false, false, false, utf8proc_sequences + 513}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 515, false, 310, -1, 310, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 518, false, -1, 314, -1, -1, -1, false, false, false, false, utf8proc_sequences + 521}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 523, false, 313, -1, 313, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 526, false, -1, 316, -1, -1, -1, false, false, false, false, utf8proc_sequences + 529}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 531, false, 315, -1, 315, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 534, false, -1, 318, -1, -1, -1, false, false, false, false, utf8proc_sequences + 537}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 539, false, 317, -1, 317, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 542, false, -1, 320, -1, -1, -1, false, false, false, false, utf8proc_sequences + 545}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 547, false, 319, -1, 319, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 322, -1, -1, -1, false, false, false, false, utf8proc_sequences + 550}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 321, -1, 321, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 552, false, -1, 324, -1, -1, -1, false, false, false, false, utf8proc_sequences + 555}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 557, false, 323, -1, 323, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 560, false, -1, 326, -1, -1, -1, false, false, false, false, utf8proc_sequences + 563}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 565, false, 325, -1, 325, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 568, false, -1, 328, -1, -1, -1, false, false, false, false, utf8proc_sequences + 571}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 573, false, 327, -1, 327, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 576, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 576}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 331, -1, -1, -1, false, false, false, false, utf8proc_sequences + 579}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 330, -1, 330, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 581, false, -1, 333, -1, 9600, -1, false, false, false, false, utf8proc_sequences + 584}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 586, false, 332, -1, 332, 9660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 589, false, -1, 335, -1, -1, -1, false, false, false, false, utf8proc_sequences + 592}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 594, false, 334, -1, 334, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 597, false, -1, 337, -1, -1, -1, false, false, false, false, utf8proc_sequences + 600}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 602, false, 336, -1, 336, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 339, -1, -1, -1, false, false, false, false, utf8proc_sequences + 605}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 338, -1, 338, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 607, false, -1, 341, -1, -1, -1, false, false, false, false, utf8proc_sequences + 610}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 612, false, 340, -1, 340, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 615, false, -1, 343, -1, -1, -1, false, false, false, false, utf8proc_sequences + 618}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 620, false, 342, -1, 342, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 623, false, -1, 345, -1, -1, -1, false, false, false, false, utf8proc_sequences + 626}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 628, false, 344, -1, 344, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 631, false, -1, 347, -1, 9960, -1, false, false, false, false, utf8proc_sequences + 634}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 636, false, 346, -1, 346, 10020, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 639, false, -1, 349, -1, -1, -1, false, false, false, false, utf8proc_sequences + 642}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 644, false, 348, -1, 348, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 647, false, -1, 351, -1, -1, -1, false, false, false, false, utf8proc_sequences + 650}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 652, false, 350, -1, 350, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 655, false, -1, 353, -1, 10080, -1, false, false, false, false, utf8proc_sequences + 658}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 660, false, 352, -1, 352, 10140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 663, false, -1, 355, -1, -1, -1, false, false, false, false, utf8proc_sequences + 666}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 668, false, 354, -1, 354, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 671, false, -1, 357, -1, -1, -1, false, false, false, false, utf8proc_sequences + 674}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 676, false, 356, -1, 356, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 359, -1, -1, -1, false, false, false, false, utf8proc_sequences + 679}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 358, -1, 358, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 681, false, -1, 361, -1, 10320, -1, false, false, false, false, utf8proc_sequences + 684}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 686, false, 360, -1, 360, 10380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 689, false, -1, 363, -1, 10440, -1, false, false, false, false, utf8proc_sequences + 692}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 694, false, 362, -1, 362, 10500, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 697, false, -1, 365, -1, -1, -1, false, false, false, false, utf8proc_sequences + 700}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 702, false, 364, -1, 364, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 705, false, -1, 367, -1, -1, -1, false, false, false, false, utf8proc_sequences + 708}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 710, false, 366, -1, 366, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 713, false, -1, 369, -1, -1, -1, false, false, false, false, utf8proc_sequences + 716}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 718, false, 368, -1, 368, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 721, false, -1, 371, -1, -1, -1, false, false, false, false, utf8proc_sequences + 724}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 726, false, 370, -1, 370, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 729, false, -1, 373, -1, -1, -1, false, false, false, false, utf8proc_sequences + 732}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 734, false, 372, -1, 372, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 737, false, -1, 375, -1, -1, -1, false, false, false, false, utf8proc_sequences + 740}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 742, false, 374, -1, 374, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 745, false, -1, 255, -1, -1, -1, false, false, false, false, utf8proc_sequences + 748}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 750, false, -1, 378, -1, -1, -1, false, false, false, false, utf8proc_sequences + 753}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 755, false, 377, -1, 377, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 758, false, -1, 380, -1, -1, -1, false, false, false, false, utf8proc_sequences + 761}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 763, false, 379, -1, 379, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 766, false, -1, 382, -1, -1, -1, false, false, false, false, utf8proc_sequences + 769}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 771, false, 381, -1, 381, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 36, false, 83, -1, 83, 10800, -1, false, false, false, false, utf8proc_sequences + 36}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 579, -1, 579, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 595, -1, -1, -1, false, false, false, false, utf8proc_sequences + 774}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 387, -1, -1, -1, false, false, false, false, utf8proc_sequences + 776}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 386, -1, 386, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 389, -1, -1, -1, false, false, false, false, utf8proc_sequences + 778}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 388, -1, 388, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 596, -1, -1, -1, false, false, false, false, utf8proc_sequences + 780}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 392, -1, -1, -1, false, false, false, false, utf8proc_sequences + 782}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 391, -1, 391, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 598, -1, -1, -1, false, false, false, false, utf8proc_sequences + 784}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 599, -1, -1, -1, false, false, false, false, utf8proc_sequences + 786}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 396, -1, -1, -1, false, false, false, false, utf8proc_sequences + 788}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 395, -1, 395, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 477, -1, -1, -1, false, false, false, false, utf8proc_sequences + 790}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 601, -1, -1, -1, false, false, false, false, utf8proc_sequences + 792}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 603, -1, -1, -1, false, false, false, false, utf8proc_sequences + 794}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 402, -1, -1, -1, false, false, false, false, utf8proc_sequences + 796}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 401, -1, 401, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 608, -1, -1, -1, false, false, false, false, utf8proc_sequences + 798}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 611, -1, -1, -1, false, false, false, false, utf8proc_sequences + 800}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 502, -1, 502, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 617, -1, -1, -1, false, false, false, false, utf8proc_sequences + 802}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 616, -1, -1, -1, false, false, false, false, utf8proc_sequences + 804}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 409, -1, -1, -1, false, false, false, false, utf8proc_sequences + 806}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 408, -1, 408, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 573, -1, 573, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 623, -1, -1, -1, false, false, false, false, utf8proc_sequences + 808}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 626, -1, -1, -1, false, false, false, false, utf8proc_sequences + 810}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 544, -1, 544, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 629, -1, -1, -1, false, false, false, false, utf8proc_sequences + 812}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 814, false, -1, 417, -1, 11700, -1, false, false, false, false, utf8proc_sequences + 817}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 819, false, 416, -1, 416, 11760, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 419, -1, -1, -1, false, false, false, false, utf8proc_sequences + 822}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 418, -1, 418, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 421, -1, -1, -1, false, false, false, false, utf8proc_sequences + 824}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 420, -1, 420, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 640, -1, -1, -1, false, false, false, false, utf8proc_sequences + 826}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 424, -1, -1, -1, false, false, false, false, utf8proc_sequences + 828}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 423, -1, 423, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 643, -1, -1, -1, false, false, false, false, utf8proc_sequences + 830}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 429, -1, -1, -1, false, false, false, false, utf8proc_sequences + 832}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 428, -1, 428, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 648, -1, -1, -1, false, false, false, false, utf8proc_sequences + 834}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 836, false, -1, 432, -1, 11820, -1, false, false, false, false, utf8proc_sequences + 839}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 841, false, 431, -1, 431, 11880, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 650, -1, -1, -1, false, false, false, false, utf8proc_sequences + 844}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 651, -1, -1, -1, false, false, false, false, utf8proc_sequences + 846}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 436, -1, -1, -1, false, false, false, false, utf8proc_sequences + 848}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 435, -1, 435, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 438, -1, -1, -1, false, false, false, false, utf8proc_sequences + 850}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 437, -1, 437, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 658, -1, 2880, -1, false, false, false, false, utf8proc_sequences + 852}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 441, -1, -1, -1, false, false, false, false, utf8proc_sequences + 854}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 440, -1, 440, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 445, -1, -1, -1, false, false, false, false, utf8proc_sequences + 856}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 444, -1, 444, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 503, -1, 503, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 858, false, -1, 454, 453, -1, -1, false, false, false, false, utf8proc_sequences + 861}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 863, false, 452, 454, 453, -1, -1, false, false, false, false, utf8proc_sequences + 861}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 866, false, 452, -1, 453, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 869, false, -1, 457, 456, -1, -1, false, false, false, false, utf8proc_sequences + 872}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 874, false, 455, 457, 456, -1, -1, false, false, false, false, utf8proc_sequences + 872}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 877, false, 455, -1, 456, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 880, false, -1, 460, 459, -1, -1, false, false, false, false, utf8proc_sequences + 883}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 885, false, 458, 460, 459, -1, -1, false, false, false, false, utf8proc_sequences + 883}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 888, false, 458, -1, 459, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 891, false, -1, 462, -1, -1, -1, false, false, false, false, utf8proc_sequences + 894}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 896, false, 461, -1, 461, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 899, false, -1, 464, -1, -1, -1, false, false, false, false, utf8proc_sequences + 902}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 904, false, 463, -1, 463, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 907, false, -1, 466, -1, -1, -1, false, false, false, false, utf8proc_sequences + 910}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 912, false, 465, -1, 465, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 915, false, -1, 468, -1, -1, -1, false, false, false, false, utf8proc_sequences + 918}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 920, false, 467, -1, 467, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 923, false, -1, 470, -1, -1, -1, false, false, false, false, utf8proc_sequences + 926}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 928, false, 469, -1, 469, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 931, false, -1, 472, -1, -1, -1, false, false, false, false, utf8proc_sequences + 934}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 936, false, 471, -1, 471, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 939, false, -1, 474, -1, -1, -1, false, false, false, false, utf8proc_sequences + 942}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 944, false, 473, -1, 473, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 947, false, -1, 476, -1, -1, -1, false, false, false, false, utf8proc_sequences + 950}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 952, false, 475, -1, 475, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 398, -1, 398, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 955, false, -1, 479, -1, -1, -1, false, false, false, false, utf8proc_sequences + 958}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 960, false, 478, -1, 478, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 963, false, -1, 481, -1, -1, -1, false, false, false, false, utf8proc_sequences + 966}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 968, false, 480, -1, 480, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 971, false, -1, 483, -1, -1, -1, false, false, false, false, utf8proc_sequences + 974}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 976, false, 482, -1, 482, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 485, -1, -1, -1, false, false, false, false, utf8proc_sequences + 979}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 484, -1, 484, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 981, false, -1, 487, -1, -1, -1, false, false, false, false, utf8proc_sequences + 984}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 986, false, 486, -1, 486, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 989, false, -1, 489, -1, -1, -1, false, false, false, false, utf8proc_sequences + 992}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 994, false, 488, -1, 488, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 997, false, -1, 491, -1, 2760, -1, false, false, false, false, utf8proc_sequences + 1000}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1002, false, 490, -1, 490, 2820, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1005, false, -1, 493, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1008}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1010, false, 492, -1, 492, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1013, false, -1, 495, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1016}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1018, false, 494, -1, 494, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1021, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1021}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1024, false, -1, 499, 498, -1, -1, false, false, false, false, utf8proc_sequences + 1027}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1029, false, 497, 499, 498, -1, -1, false, false, false, false, utf8proc_sequences + 1027}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1032, false, 497, -1, 498, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1035, false, -1, 501, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1038}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1040, false, 500, -1, 500, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 405, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1043}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 447, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1045}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1047, false, -1, 505, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1050}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1052, false, 504, -1, 504, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1055, false, -1, 507, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1058}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1060, false, 506, -1, 506, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1063, false, -1, 509, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1066}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1068, false, 508, -1, 508, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1071, false, -1, 511, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1074}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1076, false, 510, -1, 510, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1079, false, -1, 513, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1082}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1084, false, 512, -1, 512, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1087, false, -1, 515, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1090}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1092, false, 514, -1, 514, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1095, false, -1, 517, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1098}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1100, false, 516, -1, 516, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1103, false, -1, 519, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1106}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1108, false, 518, -1, 518, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1111, false, -1, 521, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1114}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1116, false, 520, -1, 520, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1119, false, -1, 523, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1122}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1124, false, 522, -1, 522, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1127, false, -1, 525, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1130}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1132, false, 524, -1, 524, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1135, false, -1, 527, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1138}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1140, false, 526, -1, 526, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1143, false, -1, 529, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1146}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1148, false, 528, -1, 528, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1151, false, -1, 531, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1154}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1156, false, 530, -1, 530, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1159, false, -1, 533, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1162}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1164, false, 532, -1, 532, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1167, false, -1, 535, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1170}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1172, false, 534, -1, 534, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1175, false, -1, 537, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1178}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1180, false, 536, -1, 536, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1183, false, -1, 539, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1186}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1188, false, 538, -1, 538, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 541, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1191}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 540, -1, 540, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1193, false, -1, 543, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1196}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1198, false, 542, -1, 542, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 414, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1201}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 547, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1203}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 546, -1, 546, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 549, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1205}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 548, -1, 548, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1207, false, -1, 551, -1, 2520, -1, false, false, false, false, utf8proc_sequences + 1210}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1212, false, 550, -1, 550, 2580, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1215, false, -1, 553, -1, 9000, -1, false, false, false, false, utf8proc_sequences + 1218}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1220, false, 552, -1, 552, 9060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1223, false, -1, 555, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1226}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1228, false, 554, -1, 554, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1231, false, -1, 557, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1234}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1236, false, 556, -1, 556, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1239, false, -1, 559, -1, 3480, -1, false, false, false, false, utf8proc_sequences + 1242}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1244, false, 558, -1, 558, 3540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1247, false, -1, 561, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1250}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1252, false, 560, -1, 560, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1255, false, -1, 563, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1258}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1260, false, 562, -1, 562, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11365, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1263}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 572, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1265}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 571, -1, 571, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 410, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1267}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11366, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1269}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 578, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1271}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 577, -1, 577, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 384, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1273}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 649, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1275}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 652, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1277}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 583, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1279}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 582, -1, 582, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 585, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1281}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 584, -1, 584, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 587, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1283}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 586, -1, 586, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 589, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1285}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 588, -1, 588, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 591, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1287}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 590, -1, 590, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 385, -1, 385, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 390, -1, 390, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 393, -1, 393, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 394, -1, 394, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 399, -1, 399, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 400, -1, 400, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 403, -1, 403, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 404, -1, 404, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 407, -1, 407, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 406, -1, 406, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11362, -1, 11362, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 412, -1, 412, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 413, -1, 413, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 415, -1, 415, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11364, -1, 11364, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 422, -1, 422, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 425, -1, 425, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 430, -1, 430, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 580, -1, 580, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 433, -1, 433, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 434, -1, 434, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 581, -1, 581, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 439, -1, 439, 2940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 14, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1289, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 18, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 34, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1291, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1293, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1295, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 44, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 48, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1297, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1300, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1303, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1306, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1309, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1312, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 800, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 22, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 36, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 46, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1315, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 0, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 2, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 3, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 7, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 8, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 10, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 4, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 46, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 5, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 12, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 11, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 14, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 15, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 47, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 48, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 232, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 216, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 13, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 202, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 40, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 45, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 39, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 16, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 202, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 6, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 202, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 9, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 42, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 44, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 43, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 41, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 1, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 1, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 51, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 1317, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 1319, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 49, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 1321, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 1323, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 240, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, 921, -1, 921, -1, 50, false, false, false, true, utf8proc_sequences + 1326}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, true, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 233, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 234, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 1328, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1330, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1021, -1, 1021, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1022, -1, 1022, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1023, -1, 1023, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 1333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 1335, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1338, false, -1, 940, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1341}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 1343, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1345, false, -1, 941, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1348}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1350, false, -1, 942, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1353}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1355, false, -1, 943, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1358}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1360, false, -1, 972, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1363}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1365, false, -1, 973, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1368}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1370, false, -1, 974, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1373}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1375, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1378}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 945, -1, 3660, -1, false, false, false, false, utf8proc_sequences + 1382}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 946, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1384}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 947, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1386}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 948, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1388}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 949, -1, 3720, -1, false, false, false, false, utf8proc_sequences + 1390}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 950, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1392}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 951, -1, 3780, -1, false, false, false, false, utf8proc_sequences + 1394}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 952, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1396}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 953, -1, 3840, -1, false, false, false, false, utf8proc_sequences + 1326}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 954, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1398}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 955, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1400}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 956, -1, -1, -1, false, false, false, false, utf8proc_sequences + 67}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 957, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1402}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 958, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1404}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 959, -1, 3900, -1, false, false, false, false, utf8proc_sequences + 1406}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 960, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1408}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 961, -1, 16260, -1, false, false, false, false, utf8proc_sequences + 1410}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 963, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1412}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 964, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1414}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 965, -1, 3960, -1, false, false, false, false, utf8proc_sequences + 1416}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 966, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1418}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 967, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1420}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 968, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1422}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 969, -1, 4020, -1, false, false, false, false, utf8proc_sequences + 1424}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1426, false, -1, 970, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1429}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1431, false, -1, 971, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1434}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1436, false, 902, -1, 902, 15780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1439, false, 904, -1, 904, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1442, false, 905, -1, 905, 15960, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1445, false, 906, -1, 906, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1448, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1451}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 913, -1, 913, 4140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 914, -1, 914, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 915, -1, 915, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 916, -1, 916, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 917, -1, 917, 4200, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 918, -1, 918, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 919, -1, 919, 4260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 920, -1, 920, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 921, -1, 921, 4320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 922, -1, 922, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 923, -1, 923, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 924, -1, 924, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 925, -1, 925, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 926, -1, 926, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 927, -1, 927, 4500, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 928, -1, 928, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 929, -1, 929, 16200, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 931, -1, 931, -1, -1, false, false, false, false, utf8proc_sequences + 1412}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 931, -1, 931, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 932, -1, 932, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 933, -1, 933, 4440, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 934, -1, 934, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 935, -1, 935, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 936, -1, 936, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 937, -1, 937, 4560, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1455, false, 938, -1, 938, 4080, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1458, false, 939, -1, 939, 4380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1461, false, 908, -1, 908, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1464, false, 910, -1, 910, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1467, false, 911, -1, 911, 16380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1384, false, 914, -1, 914, -1, -1, false, false, false, false, utf8proc_sequences + 1384}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1396, false, 920, -1, 920, -1, -1, false, false, false, false, utf8proc_sequences + 1396}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1470, false, -1, -1, -1, 4620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1472, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1475, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1418, false, 934, -1, 934, -1, -1, false, false, false, false, utf8proc_sequences + 1418}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1408, false, 928, -1, 928, -1, -1, false, false, false, false, utf8proc_sequences + 1408}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 985, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1478}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 984, -1, 984, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 987, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1480}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 986, -1, 986, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 989, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1482}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 988, -1, 988, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 991, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1484}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 990, -1, 990, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 993, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1486}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 992, -1, 992, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 995, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1488}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 994, -1, 994, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 997, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1490}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 996, -1, 996, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 999, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1492}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 998, -1, 998, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1001, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1494}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1000, -1, 1000, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1003, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1496}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1002, -1, 1002, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1005, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1498}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1004, -1, 1004, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1007, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1500}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1006, -1, 1006, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1398, false, 922, -1, 922, -1, -1, false, false, false, false, utf8proc_sequences + 1398}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1410, false, 929, -1, 929, -1, -1, false, false, false, false, utf8proc_sequences + 1410}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1502, false, 1017, -1, 1017, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1504, false, -1, 952, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1396}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1390, false, 917, -1, 917, -1, -1, false, false, false, false, utf8proc_sequences + 1390}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1016, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1506}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1015, -1, 1015, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 1508, false, -1, 1010, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1510}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1019, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1512}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1018, -1, 1018, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 891, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1514}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 892, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1516}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 893, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1518}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1520, false, -1, 1104, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1523}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1525, false, -1, 1105, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1528}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1106, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1530}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1532, false, -1, 1107, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1535}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1108, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1537}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1109, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1539}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1110, -1, 4800, -1, false, false, false, false, utf8proc_sequences + 1541}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1543, false, -1, 1111, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1546}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1112, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1548}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1113, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1550}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1114, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1552}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1115, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1554}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1556, false, -1, 1116, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1559}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1561, false, -1, 1117, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1564}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1566, false, -1, 1118, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1569}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1119, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1571}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1072, -1, 5640, -1, false, false, false, false, utf8proc_sequences + 1573}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1073, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1575}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1074, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1577}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1075, -1, 4740, -1, false, false, false, false, utf8proc_sequences + 1579}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1076, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1581}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1077, -1, 4680, -1, false, false, false, false, utf8proc_sequences + 1583}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1078, -1, 5520, -1, false, false, false, false, utf8proc_sequences + 1585}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1079, -1, 5880, -1, false, false, false, false, utf8proc_sequences + 1587}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1080, -1, 4920, -1, false, false, false, false, utf8proc_sequences + 1589}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1591, false, -1, 1081, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1594}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1082, -1, 4860, -1, false, false, false, false, utf8proc_sequences + 1596}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1083, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1598}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1084, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1600}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1085, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1602}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1086, -1, 6000, -1, false, false, false, false, utf8proc_sequences + 1604}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1087, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1606}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1088, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1608}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1089, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1610}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1090, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1612}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1091, -1, 4980, -1, false, false, false, false, utf8proc_sequences + 1614}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1092, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1616}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1093, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1618}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1094, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1620}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1095, -1, 6360, -1, false, false, false, false, utf8proc_sequences + 1622}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1096, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1624}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1097, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1626}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1098, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1628}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1099, -1, 6480, -1, false, false, false, false, utf8proc_sequences + 1630}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1100, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1632}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1101, -1, 6240, -1, false, false, false, false, utf8proc_sequences + 1634}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1102, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1636}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1103, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1638}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1040, -1, 1040, 5700, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1041, -1, 1041, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1042, -1, 1042, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1043, -1, 1043, 5160, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1044, -1, 1044, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1045, -1, 1045, 5100, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1046, -1, 1046, 5580, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1047, -1, 1047, 5940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1048, -1, 1048, 5040, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1640, false, 1049, -1, 1049, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1050, -1, 1050, 5280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1051, -1, 1051, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1052, -1, 1052, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1053, -1, 1053, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1054, -1, 1054, 6060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1055, -1, 1055, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1056, -1, 1056, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1057, -1, 1057, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1058, -1, 1058, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1059, -1, 1059, 5340, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1060, -1, 1060, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1061, -1, 1061, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1062, -1, 1062, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1063, -1, 1063, 6420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1064, -1, 1064, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1065, -1, 1065, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1066, -1, 1066, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1067, -1, 1067, 6540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1068, -1, 1068, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1069, -1, 1069, 6300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1070, -1, 1070, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1071, -1, 1071, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1643, false, 1024, -1, 1024, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1646, false, 1025, -1, 1025, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1026, -1, 1026, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1649, false, 1027, -1, 1027, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1028, -1, 1028, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1029, -1, 1029, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1030, -1, 1030, 5220, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1652, false, 1031, -1, 1031, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1032, -1, 1032, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1033, -1, 1033, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1034, -1, 1034, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1035, -1, 1035, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1655, false, 1036, -1, 1036, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1658, false, 1037, -1, 1037, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1661, false, 1038, -1, 1038, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1039, -1, 1039, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1121, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1664}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1120, -1, 1120, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1123, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1666}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1122, -1, 1122, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1125, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1668}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1124, -1, 1124, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1127, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1670}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1126, -1, 1126, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1129, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1672}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1128, -1, 1128, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1131, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1674}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1130, -1, 1130, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1133, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1676}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1132, -1, 1132, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1135, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1678}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1134, -1, 1134, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1137, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1680}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1136, -1, 1136, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1139, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1682}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1138, -1, 1138, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1141, -1, 5400, -1, false, false, false, false, utf8proc_sequences + 1684}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1140, -1, 1140, 5460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1686, false, -1, 1143, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1689}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1691, false, 1142, -1, 1142, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1145, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1694}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1144, -1, 1144, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1147, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1696}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1146, -1, 1146, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1149, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1698}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1148, -1, 1148, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1151, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1700}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1150, -1, 1150, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1153, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1702}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1152, -1, 1152, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ME, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1163, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1704}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1162, -1, 1162, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1165, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1706}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1164, -1, 1164, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1167, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1708}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1166, -1, 1166, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1169, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1710}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1168, -1, 1168, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1171, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1712}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1170, -1, 1170, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1173, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1714}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1172, -1, 1172, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1175, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1716}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1174, -1, 1174, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1177, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1718}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1176, -1, 1176, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1179, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1720}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1178, -1, 1178, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1181, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1722}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1180, -1, 1180, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1183, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1724}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1182, -1, 1182, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1185, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1726}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1184, -1, 1184, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1187, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1728}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1186, -1, 1186, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1189, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1730}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1188, -1, 1188, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1191, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1732}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1190, -1, 1190, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1193, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1734}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1192, -1, 1192, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1195, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1736}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1194, -1, 1194, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1197, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1738}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1196, -1, 1196, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1199, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1740}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1198, -1, 1198, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1201, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1742}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1200, -1, 1200, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1203, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1744}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1202, -1, 1202, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1205, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1746}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1204, -1, 1204, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1207, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1748}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1206, -1, 1206, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1209, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1750}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1208, -1, 1208, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1211, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1752}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1210, -1, 1210, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1213, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1754}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1212, -1, 1212, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1215, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1756}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1214, -1, 1214, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1231, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1758}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1760, false, -1, 1218, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1763}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1765, false, 1217, -1, 1217, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1220, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1768}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1219, -1, 1219, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1222, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1770}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1221, -1, 1221, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1224, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1772}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1223, -1, 1223, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1226, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1774}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1225, -1, 1225, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1228, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1776}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1227, -1, 1227, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1230, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1778}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1229, -1, 1229, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1216, -1, 1216, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1780, false, -1, 1233, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1783}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1785, false, 1232, -1, 1232, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1788, false, -1, 1235, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1791}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1793, false, 1234, -1, 1234, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1237, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1796}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1236, -1, 1236, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1798, false, -1, 1239, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1801}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1803, false, 1238, -1, 1238, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1241, -1, 5760, -1, false, false, false, false, utf8proc_sequences + 1806}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1240, -1, 1240, 5820, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1808, false, -1, 1243, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1811}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1813, false, 1242, -1, 1242, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1816, false, -1, 1245, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1819}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1821, false, 1244, -1, 1244, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1824, false, -1, 1247, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1827}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1829, false, 1246, -1, 1246, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1249, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1832}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1248, -1, 1248, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1834, false, -1, 1251, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1837}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1839, false, 1250, -1, 1250, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1842, false, -1, 1253, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1845}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1847, false, 1252, -1, 1252, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1850, false, -1, 1255, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1853}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1855, false, 1254, -1, 1254, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1257, -1, 6120, -1, false, false, false, false, utf8proc_sequences + 1858}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1256, -1, 1256, 6180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1860, false, -1, 1259, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1863}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1865, false, 1258, -1, 1258, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1868, false, -1, 1261, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1871}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1873, false, 1260, -1, 1260, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1876, false, -1, 1263, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1879}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1881, false, 1262, -1, 1262, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1884, false, -1, 1265, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1887}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1889, false, 1264, -1, 1264, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1892, false, -1, 1267, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1895}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1897, false, 1266, -1, 1266, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1900, false, -1, 1269, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1903}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1905, false, 1268, -1, 1268, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1271, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1908}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1270, -1, 1270, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1910, false, -1, 1273, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1913}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1915, false, 1272, -1, 1272, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1275, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1918}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1274, -1, 1274, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1277, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1920}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1276, -1, 1276, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1279, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1922}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1278, -1, 1278, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1281, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1924}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1280, -1, 1280, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1283, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1926}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1282, -1, 1282, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1285, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1928}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1284, -1, 1284, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1287, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1930}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1286, -1, 1286, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1289, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1932}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1288, -1, 1288, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1291, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1934}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1290, -1, 1290, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1293, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1936}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1292, -1, 1292, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1295, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1938}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1294, -1, 1294, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1297, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1940}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1296, -1, 1296, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1299, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1942}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1298, -1, 1298, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1377, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1944}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1378, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1946}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1379, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1948}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1380, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1950}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1381, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1952}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1382, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1954}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1383, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1956}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1384, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1958}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1385, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1960}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1386, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1962}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1387, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1964}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1388, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1966}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1389, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1968}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1390, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1970}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1391, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1972}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1392, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1974}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1393, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1976}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1394, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1978}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1395, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1980}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1396, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1982}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1397, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1984}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1398, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1986}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1399, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1988}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1400, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1990}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1401, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1992}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1402, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1994}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1403, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1996}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1404, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1998}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1405, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2000}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1406, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2002}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1407, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2004}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1408, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2006}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1409, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2008}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1410, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2010}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1411, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2012}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1412, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2014}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1413, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2016}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 1414, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2018}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1329, -1, 1329, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1330, -1, 1330, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1331, -1, 1331, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1332, -1, 1332, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1333, -1, 1333, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1334, -1, 1334, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1335, -1, 1335, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1336, -1, 1336, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1337, -1, 1337, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1338, -1, 1338, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1339, -1, 1339, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1340, -1, 1340, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1341, -1, 1341, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1342, -1, 1342, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1343, -1, 1343, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1344, -1, 1344, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1345, -1, 1345, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1346, -1, 1346, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1347, -1, 1347, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1348, -1, 1348, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1349, -1, 1349, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1350, -1, 1350, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1351, -1, 1351, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1352, -1, 1352, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1353, -1, 1353, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1354, -1, 1354, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1355, -1, 1355, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1356, -1, 1356, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1357, -1, 1357, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1358, -1, 1358, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1359, -1, 1359, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1360, -1, 1360, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1361, -1, 1361, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1362, -1, 1362, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1363, -1, 1363, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1364, -1, 1364, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1365, -1, 1365, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 1366, -1, 1366, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2020, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2020}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 222, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 228, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 10, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 11, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 12, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 13, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 14, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 15, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 16, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 17, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 18, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 19, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 20, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 21, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 22, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 23, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 24, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 25, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2023, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2026, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2032, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6600, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 27, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 28, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 29, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 30, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 31, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 32, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 33, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 34, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 17, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 230, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 18, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 220, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 19, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_AN, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_AN, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 35, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6840, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2053, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, utf8proc_sequences + 2056, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, 6780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_AL, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 36, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 6960, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7020, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2062, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7080, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2065, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 7, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 20, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 9, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2068, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2071, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2074, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2077, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2080, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2083, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2086, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2089, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 7, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 21, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2092, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 22, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2098, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2101, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2104, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2107, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2110, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2113, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2116, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2119, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2122, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 24, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7200, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2128, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 23, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 25, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2134, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2137, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 27, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2149, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 26, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, 7440, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2152, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 84, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 91, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 28, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7500, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2155, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 31, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7560, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2161, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2164, false, -1, -1, -1, 7620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2167, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 29, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 30, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 32, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7680, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2170, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2173, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2176, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 33, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 9, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 34, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 35, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7800, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2182, false, -1, -1, -1, 7860, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2188, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 36, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2191, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 103, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 107, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2194, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 118, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 122, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2197, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NOBREAK, utf8proc_sequences + 2203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 216, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2205, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2208, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2211, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2214, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2217, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2220, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 129, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 130, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2223, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 132, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2226, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2229, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2232, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2235, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2238, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2241, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2244, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2247, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2250, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2253, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2256, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, utf8proc_sequences + 2259, false, -1, -1, -1, -1, -1, true, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7920, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2262, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 37, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11520, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2265}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11521, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2267}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11522, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2269}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11523, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2271}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11524, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2273}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11525, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2275}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11526, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2277}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11527, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2279}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11528, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2281}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11529, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2283}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11530, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2285}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11531, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2287}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11532, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2289}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11533, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2291}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11534, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2293}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11535, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2295}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11536, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2297}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11537, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2299}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11538, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2301}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11539, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2303}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11540, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2305}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11541, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2307}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11542, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2309}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11543, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2311}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11544, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2313}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11545, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2315}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11546, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2317}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11547, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2319}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11548, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2321}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11549, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2323}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11550, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2325}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11551, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2327}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11552, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2329}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11553, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2331}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11554, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2333}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11555, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2335}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11556, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2337}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11557, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2339}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2341, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, true, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 7980, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2343, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8040, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2346, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8100, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2349, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8160, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2352, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8220, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2355, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2358, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 38, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, 8340, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2361, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, 8400, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2364, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 8520, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2367, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2370, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 0, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, 8580, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2373, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 9, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2376, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2378, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2380, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2388, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2390, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2394, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2396, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2400, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2402, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2406, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2408, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2412, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2414, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2416, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 0, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2418, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2422, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 8, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 792, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 794, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2424, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 12, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 20, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 24, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 579, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 28, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 780, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2426, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2428, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 30, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 38, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 40, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2430, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 808, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 42, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2432, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1388, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1418, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 16, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 34, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 40, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 42, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 1384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 1386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 1410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 1418, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 1420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1602, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11363, -1, 11363, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2434, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2436, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 163, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 10, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2438, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2442, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 804, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 802, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2444, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2446, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2448, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2450, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2452, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2456, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2458, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 810, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2460, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2462, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 812, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2464, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2466, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 830, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2468, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1275, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 844, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 846, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1277, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 50, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2472, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 2474, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 852, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 1396, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2476, false, -1, 7681, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2479}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2481, false, 7680, -1, 7680, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2484, false, -1, 7683, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2487}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2489, false, 7682, -1, 7682, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2492, false, -1, 7685, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2495}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2497, false, 7684, -1, 7684, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2500, false, -1, 7687, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2503}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2505, false, 7686, -1, 7686, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2508, false, -1, 7689, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2511}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2513, false, 7688, -1, 7688, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2516, false, -1, 7691, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2519}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2521, false, 7690, -1, 7690, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2524, false, -1, 7693, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2527}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2529, false, 7692, -1, 7692, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2532, false, -1, 7695, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2535}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2537, false, 7694, -1, 7694, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2540, false, -1, 7697, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2543}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2545, false, 7696, -1, 7696, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2548, false, -1, 7699, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2551}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2553, false, 7698, -1, 7698, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2556, false, -1, 7701, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2559}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2561, false, 7700, -1, 7700, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2564, false, -1, 7703, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2567}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2569, false, 7702, -1, 7702, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2572, false, -1, 7705, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2575}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2577, false, 7704, -1, 7704, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2580, false, -1, 7707, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2583}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2585, false, 7706, -1, 7706, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2588, false, -1, 7709, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2591}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2593, false, 7708, -1, 7708, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2596, false, -1, 7711, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2599}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2601, false, 7710, -1, 7710, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2604, false, -1, 7713, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2607}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2609, false, 7712, -1, 7712, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2612, false, -1, 7715, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2615}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2617, false, 7714, -1, 7714, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2620, false, -1, 7717, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2623}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2625, false, 7716, -1, 7716, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2628, false, -1, 7719, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2631}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2633, false, 7718, -1, 7718, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2636, false, -1, 7721, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2639}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2641, false, 7720, -1, 7720, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2644, false, -1, 7723, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2647}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2649, false, 7722, -1, 7722, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2652, false, -1, 7725, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2655}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2657, false, 7724, -1, 7724, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2660, false, -1, 7727, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2663}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2665, false, 7726, -1, 7726, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2668, false, -1, 7729, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2671}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2673, false, 7728, -1, 7728, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2676, false, -1, 7731, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2679}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2681, false, 7730, -1, 7730, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2684, false, -1, 7733, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2687}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2689, false, 7732, -1, 7732, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2692, false, -1, 7735, -1, 9360, -1, false, false, false, false, utf8proc_sequences + 2695}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2697, false, 7734, -1, 7734, 9420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2700, false, -1, 7737, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2703}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2705, false, 7736, -1, 7736, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2708, false, -1, 7739, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2711}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2713, false, 7738, -1, 7738, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2716, false, -1, 7741, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2719}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2721, false, 7740, -1, 7740, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2724, false, -1, 7743, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2727}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2729, false, 7742, -1, 7742, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2732, false, -1, 7745, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2735}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2737, false, 7744, -1, 7744, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2740, false, -1, 7747, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2743}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2745, false, 7746, -1, 7746, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2748, false, -1, 7749, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2751}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2753, false, 7748, -1, 7748, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2756, false, -1, 7751, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2759}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2761, false, 7750, -1, 7750, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2764, false, -1, 7753, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2767}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2769, false, 7752, -1, 7752, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2772, false, -1, 7755, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2775}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2777, false, 7754, -1, 7754, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2780, false, -1, 7757, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2783}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2785, false, 7756, -1, 7756, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2788, false, -1, 7759, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2791}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2793, false, 7758, -1, 7758, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2796, false, -1, 7761, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2799}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2801, false, 7760, -1, 7760, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2804, false, -1, 7763, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2807}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2809, false, 7762, -1, 7762, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2812, false, -1, 7765, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2815}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2817, false, 7764, -1, 7764, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2820, false, -1, 7767, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2823}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2825, false, 7766, -1, 7766, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2828, false, -1, 7769, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2831}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2833, false, 7768, -1, 7768, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2836, false, -1, 7771, -1, 9840, -1, false, false, false, false, utf8proc_sequences + 2839}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2841, false, 7770, -1, 7770, 9900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2844, false, -1, 7773, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2847}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2849, false, 7772, -1, 7772, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2852, false, -1, 7775, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2855}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2857, false, 7774, -1, 7774, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2860, false, -1, 7777, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2863}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2865, false, 7776, -1, 7776, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2868, false, -1, 7779, -1, 10200, -1, false, false, false, false, utf8proc_sequences + 2871}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2873, false, 7778, -1, 7778, 10260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2876, false, -1, 7781, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2879}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2881, false, 7780, -1, 7780, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2884, false, -1, 7783, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2887}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2889, false, 7782, -1, 7782, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2892, false, -1, 7785, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2895}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2897, false, 7784, -1, 7784, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2900, false, -1, 7787, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2903}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2905, false, 7786, -1, 7786, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2908, false, -1, 7789, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2911}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2913, false, 7788, -1, 7788, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2916, false, -1, 7791, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2919}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2921, false, 7790, -1, 7790, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2924, false, -1, 7793, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2927}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2929, false, 7792, -1, 7792, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2932, false, -1, 7795, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2935}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2937, false, 7794, -1, 7794, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2940, false, -1, 7797, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2943}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2945, false, 7796, -1, 7796, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2948, false, -1, 7799, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2951}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2953, false, 7798, -1, 7798, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2956, false, -1, 7801, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2959}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2961, false, 7800, -1, 7800, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2964, false, -1, 7803, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2967}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2969, false, 7802, -1, 7802, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2972, false, -1, 7805, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2975}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2977, false, 7804, -1, 7804, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2980, false, -1, 7807, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2983}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2985, false, 7806, -1, 7806, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2988, false, -1, 7809, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2991}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2993, false, 7808, -1, 7808, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2996, false, -1, 7811, -1, -1, -1, false, false, false, false, utf8proc_sequences + 2999}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3001, false, 7810, -1, 7810, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3004, false, -1, 7813, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3007}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3009, false, 7812, -1, 7812, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3012, false, -1, 7815, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3015}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3017, false, 7814, -1, 7814, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3020, false, -1, 7817, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3023}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3025, false, 7816, -1, 7816, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3028, false, -1, 7819, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3031}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3033, false, 7818, -1, 7818, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3036, false, -1, 7821, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3039}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3041, false, 7820, -1, 7820, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3044, false, -1, 7823, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3047}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3049, false, 7822, -1, 7822, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3052, false, -1, 7825, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3055}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3057, false, 7824, -1, 7824, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3060, false, -1, 7827, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3063}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3065, false, 7826, -1, 7826, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3068, false, -1, 7829, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3071}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3073, false, 7828, -1, 7828, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3076, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3076}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3079, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3079}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3082, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3082}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3085, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3085}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 3088, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3088}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3091, false, 7776, -1, 7776, -1, -1, false, false, false, false, utf8proc_sequences + 2863}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3094, false, -1, 7841, -1, 10980, -1, false, false, false, false, utf8proc_sequences + 3097}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3099, false, 7840, -1, 7840, 11040, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3102, false, -1, 7843, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3105}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3107, false, 7842, -1, 7842, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3110, false, -1, 7845, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3113}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3115, false, 7844, -1, 7844, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3118, false, -1, 7847, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3121}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3123, false, 7846, -1, 7846, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3126, false, -1, 7849, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3129}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3131, false, 7848, -1, 7848, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3134, false, -1, 7851, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3137}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3139, false, 7850, -1, 7850, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3142, false, -1, 7853, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3145}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3147, false, 7852, -1, 7852, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3150, false, -1, 7855, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3153}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3155, false, 7854, -1, 7854, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3158, false, -1, 7857, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3161}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3163, false, 7856, -1, 7856, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3166, false, -1, 7859, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3169}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3171, false, 7858, -1, 7858, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3174, false, -1, 7861, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3177}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3179, false, 7860, -1, 7860, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3182, false, -1, 7863, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3185}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3187, false, 7862, -1, 7862, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3190, false, -1, 7865, -1, 11340, -1, false, false, false, false, utf8proc_sequences + 3193}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3195, false, 7864, -1, 7864, 11400, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3198, false, -1, 7867, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3201}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3203, false, 7866, -1, 7866, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3206, false, -1, 7869, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3209}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3211, false, 7868, -1, 7868, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3214, false, -1, 7871, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3217}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3219, false, 7870, -1, 7870, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3222, false, -1, 7873, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3225}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3227, false, 7872, -1, 7872, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3230, false, -1, 7875, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3233}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3235, false, 7874, -1, 7874, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3238, false, -1, 7877, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3241}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3243, false, 7876, -1, 7876, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3246, false, -1, 7879, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3249}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3251, false, 7878, -1, 7878, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3254, false, -1, 7881, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3257}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3259, false, 7880, -1, 7880, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3262, false, -1, 7883, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3265}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3267, false, 7882, -1, 7882, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3270, false, -1, 7885, -1, 11580, -1, false, false, false, false, utf8proc_sequences + 3273}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3275, false, 7884, -1, 7884, 11640, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3278, false, -1, 7887, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3281}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3283, false, 7886, -1, 7886, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3286, false, -1, 7889, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3289}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3291, false, 7888, -1, 7888, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3294, false, -1, 7891, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3297}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3299, false, 7890, -1, 7890, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3302, false, -1, 7893, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3305}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3307, false, 7892, -1, 7892, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3310, false, -1, 7895, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3313}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3315, false, 7894, -1, 7894, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3318, false, -1, 7897, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3321}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3323, false, 7896, -1, 7896, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3326, false, -1, 7899, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3329}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3331, false, 7898, -1, 7898, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3334, false, -1, 7901, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3337}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3339, false, 7900, -1, 7900, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3342, false, -1, 7903, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3345}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3347, false, 7902, -1, 7902, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3350, false, -1, 7905, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3353}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3355, false, 7904, -1, 7904, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3358, false, -1, 7907, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3361}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3363, false, 7906, -1, 7906, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3366, false, -1, 7909, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3369}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3371, false, 7908, -1, 7908, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3374, false, -1, 7911, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3377}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3379, false, 7910, -1, 7910, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3382, false, -1, 7913, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3385}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3387, false, 7912, -1, 7912, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3390, false, -1, 7915, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3393}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3395, false, 7914, -1, 7914, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3398, false, -1, 7917, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3401}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3403, false, 7916, -1, 7916, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3406, false, -1, 7919, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3409}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3411, false, 7918, -1, 7918, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3414, false, -1, 7921, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3417}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3419, false, 7920, -1, 7920, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3422, false, -1, 7923, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3425}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3427, false, 7922, -1, 7922, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3430, false, -1, 7925, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3433}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3435, false, 7924, -1, 7924, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3438, false, -1, 7927, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3441}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3443, false, 7926, -1, 7926, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3446, false, -1, 7929, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3449}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3451, false, 7928, -1, 7928, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3454, false, 7944, -1, 7944, 11940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3457, false, 7945, -1, 7945, 12000, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3460, false, 7946, -1, 7946, 13560, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3463, false, 7947, -1, 7947, 13620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3466, false, 7948, -1, 7948, 13680, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3469, false, 7949, -1, 7949, 13740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3472, false, 7950, -1, 7950, 13800, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3475, false, 7951, -1, 7951, 13860, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3478, false, -1, 7936, -1, 12060, -1, false, false, false, false, utf8proc_sequences + 3481}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3483, false, -1, 7937, -1, 12120, -1, false, false, false, false, utf8proc_sequences + 3486}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3488, false, -1, 7938, -1, 13920, -1, false, false, false, false, utf8proc_sequences + 3491}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3493, false, -1, 7939, -1, 13980, -1, false, false, false, false, utf8proc_sequences + 3496}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3498, false, -1, 7940, -1, 14040, -1, false, false, false, false, utf8proc_sequences + 3501}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3503, false, -1, 7941, -1, 14100, -1, false, false, false, false, utf8proc_sequences + 3506}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3508, false, -1, 7942, -1, 14160, -1, false, false, false, false, utf8proc_sequences + 3511}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3513, false, -1, 7943, -1, 14220, -1, false, false, false, false, utf8proc_sequences + 3516}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3518, false, 7960, -1, 7960, 12180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3521, false, 7961, -1, 7961, 12240, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3524, false, 7962, -1, 7962, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3527, false, 7963, -1, 7963, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3530, false, 7964, -1, 7964, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3533, false, 7965, -1, 7965, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3536, false, -1, 7952, -1, 12300, -1, false, false, false, false, utf8proc_sequences + 3539}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3541, false, -1, 7953, -1, 12360, -1, false, false, false, false, utf8proc_sequences + 3544}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3546, false, -1, 7954, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3549}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3551, false, -1, 7955, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3554}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3556, false, -1, 7956, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3559}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3561, false, -1, 7957, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3564}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3566, false, 7976, -1, 7976, 12420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3569, false, 7977, -1, 7977, 12480, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3572, false, 7978, -1, 7978, 14280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3575, false, 7979, -1, 7979, 14340, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3578, false, 7980, -1, 7980, 14400, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3581, false, 7981, -1, 7981, 14460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3584, false, 7982, -1, 7982, 14520, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3587, false, 7983, -1, 7983, 14580, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3590, false, -1, 7968, -1, 12540, -1, false, false, false, false, utf8proc_sequences + 3593}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3595, false, -1, 7969, -1, 12600, -1, false, false, false, false, utf8proc_sequences + 3598}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3600, false, -1, 7970, -1, 14640, -1, false, false, false, false, utf8proc_sequences + 3603}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3605, false, -1, 7971, -1, 14700, -1, false, false, false, false, utf8proc_sequences + 3608}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3610, false, -1, 7972, -1, 14760, -1, false, false, false, false, utf8proc_sequences + 3613}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3615, false, -1, 7973, -1, 14820, -1, false, false, false, false, utf8proc_sequences + 3618}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3620, false, -1, 7974, -1, 14880, -1, false, false, false, false, utf8proc_sequences + 3623}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3625, false, -1, 7975, -1, 14940, -1, false, false, false, false, utf8proc_sequences + 3628}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3630, false, 7992, -1, 7992, 12660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3633, false, 7993, -1, 7993, 12720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3636, false, 7994, -1, 7994, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3639, false, 7995, -1, 7995, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3642, false, 7996, -1, 7996, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3645, false, 7997, -1, 7997, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3648, false, 7998, -1, 7998, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3651, false, 7999, -1, 7999, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3654, false, -1, 7984, -1, 12780, -1, false, false, false, false, utf8proc_sequences + 3657}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3659, false, -1, 7985, -1, 12840, -1, false, false, false, false, utf8proc_sequences + 3662}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3664, false, -1, 7986, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3667}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3669, false, -1, 7987, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3672}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3674, false, -1, 7988, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3677}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3679, false, -1, 7989, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3682}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3684, false, -1, 7990, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3687}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3689, false, -1, 7991, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3692}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3694, false, 8008, -1, 8008, 12900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3697, false, 8009, -1, 8009, 12960, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3700, false, 8010, -1, 8010, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3703, false, 8011, -1, 8011, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3706, false, 8012, -1, 8012, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3709, false, 8013, -1, 8013, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3712, false, -1, 8000, -1, 13020, -1, false, false, false, false, utf8proc_sequences + 3715}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3717, false, -1, 8001, -1, 13080, -1, false, false, false, false, utf8proc_sequences + 3720}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3722, false, -1, 8002, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3725}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3727, false, -1, 8003, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3730}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3732, false, -1, 8004, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3735}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3737, false, -1, 8005, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3740}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3742, false, -1, -1, -1, 13140, -1, false, false, false, false, utf8proc_sequences + 3742}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3745, false, 8025, -1, 8025, 13200, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3748, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3751}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3755, false, 8027, -1, 8027, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3758, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3761}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3765, false, 8029, -1, 8029, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3768, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3771}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3775, false, 8031, -1, 8031, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3778, false, -1, 8017, -1, 13260, -1, false, false, false, false, utf8proc_sequences + 3781}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3783, false, -1, 8019, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3786}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3788, false, -1, 8021, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3791}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3793, false, -1, 8023, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3796}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3798, false, 8040, -1, 8040, 13320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3801, false, 8041, -1, 8041, 13380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3804, false, 8042, -1, 8042, 15000, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3807, false, 8043, -1, 8043, 15060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3810, false, 8044, -1, 8044, 15120, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3813, false, 8045, -1, 8045, 15180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3816, false, 8046, -1, 8046, 15240, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3819, false, 8047, -1, 8047, 15300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3822, false, -1, 8032, -1, 13440, -1, false, false, false, false, utf8proc_sequences + 3825}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3827, false, -1, 8033, -1, 13500, -1, false, false, false, false, utf8proc_sequences + 3830}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3832, false, -1, 8034, -1, 15360, -1, false, false, false, false, utf8proc_sequences + 3835}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3837, false, -1, 8035, -1, 15420, -1, false, false, false, false, utf8proc_sequences + 3840}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3842, false, -1, 8036, -1, 15480, -1, false, false, false, false, utf8proc_sequences + 3845}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3847, false, -1, 8037, -1, 15540, -1, false, false, false, false, utf8proc_sequences + 3850}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3852, false, -1, 8038, -1, 15600, -1, false, false, false, false, utf8proc_sequences + 3855}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3857, false, -1, 8039, -1, 15660, -1, false, false, false, false, utf8proc_sequences + 3860}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3862, false, 8122, -1, 8122, 15720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1341, false, 8123, -1, 8123, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3865, false, 8136, -1, 8136, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1348, false, 8137, -1, 8137, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3868, false, 8138, -1, 8138, 15900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1353, false, 8139, -1, 8139, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3871, false, 8154, -1, 8154, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1358, false, 8155, -1, 8155, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3874, false, 8184, -1, 8184, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1363, false, 8185, -1, 8185, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3877, false, 8170, -1, 8170, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1368, false, 8171, -1, 8171, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3880, false, 8186, -1, 8186, 16320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1373, false, 8187, -1, 8187, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3883, false, 8072, -1, 8072, -1, -1, false, false, false, false, utf8proc_sequences + 3886}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3889, false, 8073, -1, 8073, -1, -1, false, false, false, false, utf8proc_sequences + 3892}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3895, false, 8074, -1, 8074, -1, -1, false, false, false, false, utf8proc_sequences + 3898}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3901, false, 8075, -1, 8075, -1, -1, false, false, false, false, utf8proc_sequences + 3904}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3907, false, 8076, -1, 8076, -1, -1, false, false, false, false, utf8proc_sequences + 3910}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3913, false, 8077, -1, 8077, -1, -1, false, false, false, false, utf8proc_sequences + 3916}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3919, false, 8078, -1, 8078, -1, -1, false, false, false, false, utf8proc_sequences + 3922}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3925, false, 8079, -1, 8079, -1, -1, false, false, false, false, utf8proc_sequences + 3928}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3931, false, -1, 8064, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3934}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3936, false, -1, 8065, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3939}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3941, false, -1, 8066, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3944}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3946, false, -1, 8067, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3949}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3951, false, -1, 8068, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3954}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3956, false, -1, 8069, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3959}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3961, false, -1, 8070, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3964}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3966, false, -1, 8071, -1, -1, -1, false, false, false, false, utf8proc_sequences + 3969}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3971, false, 8088, -1, 8088, -1, -1, false, false, false, false, utf8proc_sequences + 3974}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3977, false, 8089, -1, 8089, -1, -1, false, false, false, false, utf8proc_sequences + 3980}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3983, false, 8090, -1, 8090, -1, -1, false, false, false, false, utf8proc_sequences + 3986}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3989, false, 8091, -1, 8091, -1, -1, false, false, false, false, utf8proc_sequences + 3992}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 3995, false, 8092, -1, 8092, -1, -1, false, false, false, false, utf8proc_sequences + 3998}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4001, false, 8093, -1, 8093, -1, -1, false, false, false, false, utf8proc_sequences + 4004}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4007, false, 8094, -1, 8094, -1, -1, false, false, false, false, utf8proc_sequences + 4010}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4013, false, 8095, -1, 8095, -1, -1, false, false, false, false, utf8proc_sequences + 4016}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4019, false, -1, 8080, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4022}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4024, false, -1, 8081, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4027}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4029, false, -1, 8082, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4032}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4034, false, -1, 8083, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4037}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4039, false, -1, 8084, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4042}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4044, false, -1, 8085, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4047}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4049, false, -1, 8086, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4052}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4054, false, -1, 8087, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4057}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4059, false, 8104, -1, 8104, -1, -1, false, false, false, false, utf8proc_sequences + 4062}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4065, false, 8105, -1, 8105, -1, -1, false, false, false, false, utf8proc_sequences + 4068}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4071, false, 8106, -1, 8106, -1, -1, false, false, false, false, utf8proc_sequences + 4074}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4077, false, 8107, -1, 8107, -1, -1, false, false, false, false, utf8proc_sequences + 4080}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4083, false, 8108, -1, 8108, -1, -1, false, false, false, false, utf8proc_sequences + 4086}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4089, false, 8109, -1, 8109, -1, -1, false, false, false, false, utf8proc_sequences + 4092}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4095, false, 8110, -1, 8110, -1, -1, false, false, false, false, utf8proc_sequences + 4098}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4101, false, 8111, -1, 8111, -1, -1, false, false, false, false, utf8proc_sequences + 4104}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4107, false, -1, 8096, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4110}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4112, false, -1, 8097, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4115}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4117, false, -1, 8098, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4120}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4122, false, -1, 8099, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4125}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4127, false, -1, 8100, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4130}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4132, false, -1, 8101, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4135}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4137, false, -1, 8102, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4140}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4142, false, -1, 8103, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4145}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4147, false, 8120, -1, 8120, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4150, false, 8121, -1, 8121, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4153, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4156}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4159, false, 8124, -1, 8124, -1, -1, false, false, false, false, utf8proc_sequences + 4162}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4165, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4168}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4171, false, -1, -1, -1, 15840, -1, false, false, false, false, utf8proc_sequences + 4171}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4174, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4177}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4181, false, -1, 8112, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4184}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4186, false, -1, 8113, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4189}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4191, false, -1, 8048, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4194}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4196, false, -1, 8049, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4198}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4200, false, -1, 8115, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4203}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4205, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 1326, false, 921, -1, 921, -1, -1, false, false, false, false, utf8proc_sequences + 1326}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4205, false, -1, -1, -1, 16080, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4208, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4211, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4214, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4217}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4220, false, 8140, -1, 8140, -1, -1, false, false, false, false, utf8proc_sequences + 4223}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4226, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4229}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4232, false, -1, -1, -1, 16020, -1, false, false, false, false, utf8proc_sequences + 4232}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4235, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4238}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4242, false, -1, 8050, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4245}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4247, false, -1, 8051, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4249}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4251, false, -1, 8052, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4254}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4256, false, -1, 8053, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4258}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4260, false, -1, 8131, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4263}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4265, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4268, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4271, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4274, false, 8152, -1, 8152, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4277, false, 8153, -1, 8153, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4280, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4283}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4287, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1378}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4289, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4289}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4292, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4295}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4299, false, -1, 8144, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4302}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4304, false, -1, 8145, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4307}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4309, false, -1, 8054, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4312}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4314, false, -1, 8055, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4316}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4318, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4321, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4324, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4327, false, 8168, -1, 8168, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4330, false, 8169, -1, 8169, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4333, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4336}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4340, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1451}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4342, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4342}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4345, false, 8172, -1, 8172, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4348, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4348}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4351, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4354}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4358, false, -1, 8160, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4361}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4363, false, -1, 8161, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4366}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4368, false, -1, 8058, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4371}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4373, false, -1, 8059, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4375}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4377, false, -1, 8165, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4380}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4385, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4387, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4389, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4392}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4395, false, 8188, -1, 8188, -1, -1, false, false, false, false, utf8proc_sequences + 4398}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4401, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4404}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4407, false, -1, -1, -1, 16440, -1, false, false, false, false, utf8proc_sequences + 4407}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4410, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4413}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4417, false, -1, 8056, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4420}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4422, false, -1, 8057, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4424}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4426, false, -1, 8060, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4429}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4431, false, -1, 8061, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4433}, - {UTF8PROC_CATEGORY_LT, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4435, false, -1, 8179, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4438}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4442, false, -1, -1, -1, 16140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, 0, utf8proc_sequences + 4445, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, 0, utf8proc_sequences + 4447, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 52, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, UTF8PROC_DECOMP_TYPE_NOBREAK, utf8proc_sequences + 52, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_BN, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, true, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NOBREAK, utf8proc_sequences + 4449, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4451, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4456, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4459, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZL, 0, UTF8PROC_BIDI_CLASS_WS, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_ZP, 0, UTF8PROC_BIDI_CLASS_B, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_LRE, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_RLE, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_PDF, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_LRO, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_RLO, 0, NULL, false, -1, -1, -1, -1, -1, false, true, true, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4463, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4466, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4473, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4477, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4480, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_CS, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4483, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4486, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4489, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4492, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 16, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4513, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4517, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4519, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 26, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 72, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 60, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 62, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4513, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4517, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 4519, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 0, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 8, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 28, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 46, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUB, utf8proc_sequences + 792, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4521, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4524, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4528, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4534, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4537, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4541, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4545, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4547, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 12, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2390, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 14, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 22, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2402, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4550, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2408, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4553, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4555, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4558, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 4562, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4565, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4567, false, -1, 969, -1, -1, -1, false, false, false, false, utf8proc_sequences + 1424}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 2396, false, -1, 107, -1, -1, -1, false, false, false, false, utf8proc_sequences + 20}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 4569, false, -1, 229, -1, -1, -1, false, false, false, false, utf8proc_sequences + 114}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2380, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4571, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 8526, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4573}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2400, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 28, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4577, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4579, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4581, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 16, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4583, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1408, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4587, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4589, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4591, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 6, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 18, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 8498, -1, 8498, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4593, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4597, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4601, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4605, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4609, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4613, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4617, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4621, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4625, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4629, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4633, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4637, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_FRACTION, utf8proc_sequences + 4641, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2392, false, -1, 8560, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4644}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4646, false, -1, 8561, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4649}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4651, false, -1, 8562, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4655}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4657, false, -1, 8563, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4660}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4662, false, -1, 8564, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4664}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4666, false, -1, 8565, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4669}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4671, false, -1, 8566, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4675}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4677, false, -1, 8567, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4682}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4684, false, -1, 8568, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4687}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4689, false, -1, 8569, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4691}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4693, false, -1, 8570, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4696}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4698, false, -1, 8571, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4702}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2398, false, -1, 8572, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4704}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4532, false, -1, 8573, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4706}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2382, false, -1, 8574, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4708}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 2400, false, -1, 8575, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4710}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 16, false, 8544, -1, 8544, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4712, false, 8545, -1, 8545, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4715, false, 8546, -1, 8546, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4719, false, 8547, -1, 8547, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 42, false, 8548, -1, 8548, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4722, false, 8549, -1, 8549, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4725, false, 8550, -1, 8550, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4729, false, 8551, -1, 8551, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4734, false, 8552, -1, 8552, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 46, false, 8553, -1, 8553, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4737, false, 8554, -1, 8554, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4740, false, 8555, -1, 8555, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 22, false, 8556, -1, 8556, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4, false, 8557, -1, 8557, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6, false, 8558, -1, 8558, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 24, false, 8559, -1, 8559, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 8580, -1, -1, -1, false, false, false, false, utf8proc_sequences + 4744}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 8579, -1, 8579, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16500, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16560, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4746, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4749, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4752, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4755, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4758, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4761, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16680, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16800, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 16740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 16860, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4764, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 16920, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4767, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 16980, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4770, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 17040, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4773, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 17100, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4776, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4779, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4782, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4786, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4789, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17160, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4793, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17220, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4796, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4799, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17340, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4802, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 17520, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4805, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 17460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4808, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17700, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17760, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4811, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4814, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4817, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4820, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4823, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17820, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17880, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4826, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4829, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 17940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18000, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4832, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4835, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18120, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4838, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4841, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18240, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4844, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4847, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18360, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4850, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4853, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18840, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18480, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18600, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4856, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4859, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4862, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4865, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 18960, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 19020, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, true, -1, -1, -1, 19080, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4868, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4871, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4874, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4877, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4880, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4883, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4886, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4889, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4892, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 4894, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 72, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 60, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 62, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4896, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4899, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4905, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4911, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4917, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4923, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4929, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4933, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4937, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4941, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4945, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4949, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4953, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4957, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4970, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4975, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4985, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4990, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 4995, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5000, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5005, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5010, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5015, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5020, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5023, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5026, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5032, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5051, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5055, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5063, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5067, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5075, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5079, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5083, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5111, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5147, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5151, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5155, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5159, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5163, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5167, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5171, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5175, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5183, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5187, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5191, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2376, false, -1, 9424, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5195}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2380, false, -1, 9425, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5197}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4532, false, -1, 9426, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5199}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2382, false, -1, 9427, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5201}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2384, false, -1, 9428, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5203}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4571, false, -1, 9429, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5205}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2388, false, -1, 9430, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5207}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2390, false, -1, 9431, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5209}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2392, false, -1, 9432, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5211}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2394, false, -1, 9433, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5213}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2396, false, -1, 9434, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5215}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2398, false, -1, 9435, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5217}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2400, false, -1, 9436, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5219}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2402, false, -1, 9437, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5221}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2404, false, -1, 9438, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5223}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2408, false, -1, 9439, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5225}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4553, false, -1, 9440, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5227}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2410, false, -1, 9441, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5229}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5231, false, -1, 9442, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5233}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2412, false, -1, 9443, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5235}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2414, false, -1, 9444, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5237}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4662, false, -1, 9445, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5239}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2416, false, -1, 9446, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5241}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4689, false, -1, 9447, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5243}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5245, false, -1, 9448, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5247}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4565, false, -1, 9449, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5249}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 0, false, 9398, -1, 9398, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 2, false, 9399, -1, 9399, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4, false, 9400, -1, 9400, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6, false, 9401, -1, 9401, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 8, false, 9402, -1, 9402, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 10, false, 9403, -1, 9403, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 12, false, 9404, -1, 9404, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 14, false, 9405, -1, 9405, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 16, false, 9406, -1, 9406, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 18, false, 9407, -1, 9407, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 20, false, 9408, -1, 9408, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 22, false, 9409, -1, 9409, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 24, false, 9410, -1, 9410, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 26, false, 9411, -1, 9411, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 28, false, 9412, -1, 9412, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 30, false, 9413, -1, 9413, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 32, false, 9414, -1, 9414, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 34, false, 9415, -1, 9415, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 36, false, 9416, -1, 9416, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 38, false, 9417, -1, 9417, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 40, false, 9418, -1, 9418, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 42, false, 9419, -1, 9419, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 44, false, 9420, -1, 9420, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 46, false, 9421, -1, 9421, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 48, false, 9422, -1, 9422, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 50, false, 9423, -1, 9423, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 4497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5251, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5256, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5260, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, utf8proc_sequences + 5267, true, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, 19140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11312, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5270}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11313, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5272}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11314, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5274}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11315, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5276}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11316, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5278}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11317, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5280}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11318, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5282}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11319, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5284}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11320, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5286}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11321, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5288}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11322, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5290}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11323, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5292}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11324, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5294}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11325, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5296}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11326, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5298}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11327, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5300}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11328, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5302}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11329, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5304}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11330, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5306}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11331, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5308}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11332, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5310}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11333, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5312}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11334, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5314}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11335, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5316}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11336, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5318}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11337, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5320}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11338, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5322}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11339, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5324}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11340, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5326}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11341, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5328}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11342, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5330}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11343, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5332}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11344, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5334}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11345, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5336}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11346, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5338}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11347, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5340}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11348, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5342}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11349, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5344}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11350, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5346}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11351, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5348}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11352, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5350}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11353, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5352}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11354, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5354}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11355, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5356}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11356, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5358}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11357, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5360}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11358, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5362}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11264, -1, 11264, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11265, -1, 11265, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11266, -1, 11266, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11267, -1, 11267, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11268, -1, 11268, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11269, -1, 11269, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11270, -1, 11270, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11271, -1, 11271, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11272, -1, 11272, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11273, -1, 11273, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11274, -1, 11274, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11275, -1, 11275, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11276, -1, 11276, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11277, -1, 11277, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11278, -1, 11278, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11279, -1, 11279, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11280, -1, 11280, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11281, -1, 11281, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11282, -1, 11282, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11283, -1, 11283, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11284, -1, 11284, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11285, -1, 11285, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11286, -1, 11286, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11287, -1, 11287, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11288, -1, 11288, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11289, -1, 11289, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11290, -1, 11290, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11291, -1, 11291, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11292, -1, 11292, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11293, -1, 11293, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11294, -1, 11294, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11295, -1, 11295, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11296, -1, 11296, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11297, -1, 11297, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11298, -1, 11298, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11299, -1, 11299, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11300, -1, 11300, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11301, -1, 11301, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11302, -1, 11302, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11303, -1, 11303, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11304, -1, 11304, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11305, -1, 11305, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11306, -1, 11306, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11307, -1, 11307, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11308, -1, 11308, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11309, -1, 11309, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11310, -1, 11310, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11361, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5364}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11360, -1, 11360, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 619, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5366}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 7549, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5368}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 637, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5370}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 570, -1, 570, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 574, -1, 574, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11368, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5372}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11367, -1, 11367, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11370, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5374}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11369, -1, 11369, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11372, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5376}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11371, -1, 11371, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11382, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5378}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11381, -1, 11381, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11393, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5380}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11392, -1, 11392, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11395, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5382}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11394, -1, 11394, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11397, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5384}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11396, -1, 11396, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11399, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5386}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11398, -1, 11398, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11401, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5388}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11400, -1, 11400, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11403, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5390}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11402, -1, 11402, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11405, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5392}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11404, -1, 11404, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11407, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5394}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11406, -1, 11406, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11409, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5396}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11408, -1, 11408, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11411, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5398}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11410, -1, 11410, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11413, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5400}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11412, -1, 11412, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11415, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5402}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11414, -1, 11414, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11417, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5404}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11416, -1, 11416, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11419, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5406}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11418, -1, 11418, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11421, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5408}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11420, -1, 11420, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11423, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5410}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11422, -1, 11422, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11425, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5412}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11424, -1, 11424, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11427, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5414}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11426, -1, 11426, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11429, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5416}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11428, -1, 11428, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11431, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5418}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11430, -1, 11430, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11433, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5420}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11432, -1, 11432, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11435, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5422}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11434, -1, 11434, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11437, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5424}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11436, -1, 11436, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11439, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5426}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11438, -1, 11438, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11441, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5428}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11440, -1, 11440, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11443, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5430}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11442, -1, 11442, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11445, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5432}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11444, -1, 11444, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11447, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5434}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11446, -1, 11446, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11449, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5436}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11448, -1, 11448, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11451, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5438}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11450, -1, 11450, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11453, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5440}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11452, -1, 11452, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11455, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5442}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11454, -1, 11454, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11457, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5444}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11456, -1, 11456, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11459, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5446}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11458, -1, 11458, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11461, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5448}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11460, -1, 11460, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11463, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5450}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11462, -1, 11462, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11465, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5452}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11464, -1, 11464, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11467, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5454}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11466, -1, 11466, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11469, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5456}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11468, -1, 11468, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11471, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5458}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11470, -1, 11470, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11473, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5460}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11472, -1, 11472, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11475, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5462}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11474, -1, 11474, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11477, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5464}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11476, -1, 11476, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11479, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5466}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11478, -1, 11478, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11481, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5468}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11480, -1, 11480, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11483, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5470}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11482, -1, 11482, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11485, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5472}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11484, -1, 11484, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11487, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5474}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11486, -1, 11486, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11489, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5476}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11488, -1, 11488, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 11491, -1, -1, -1, false, false, false, false, utf8proc_sequences + 5478}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 11490, -1, 11490, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4256, -1, 4256, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4257, -1, 4257, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4258, -1, 4258, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4259, -1, 4259, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4260, -1, 4260, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4261, -1, 4261, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4262, -1, 4262, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4263, -1, 4263, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4264, -1, 4264, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4265, -1, 4265, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4266, -1, 4266, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4267, -1, 4267, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4268, -1, 4268, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4269, -1, 4269, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4270, -1, 4270, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4271, -1, 4271, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4272, -1, 4272, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4273, -1, 4273, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4274, -1, 4274, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4275, -1, 4275, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4276, -1, 4276, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4277, -1, 4277, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4278, -1, 4278, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4279, -1, 4279, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4280, -1, 4280, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4281, -1, 4281, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4282, -1, 4282, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4283, -1, 4283, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4284, -1, 4284, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4285, -1, 4285, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4286, -1, 4286, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4287, -1, 4287, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4288, -1, 4288, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4289, -1, 4289, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4290, -1, 4290, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4291, -1, 4291, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4292, -1, 4292, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 4293, -1, 4293, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 5480, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5484, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5486, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5490, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5492, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5494, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5496, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5498, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5500, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5502, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5504, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5506, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5510, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5512, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5514, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5516, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5518, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5520, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5522, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5524, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5526, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5528, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5530, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5534, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5536, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5538, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5540, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5542, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5544, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5546, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5548, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5550, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5552, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5554, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5556, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5558, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5560, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5562, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5564, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5566, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5568, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5570, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5572, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5574, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5576, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5578, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5580, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5582, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5584, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5586, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5588, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5590, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5592, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5594, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5596, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5598, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5600, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5602, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5604, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5606, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5608, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5610, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5612, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5614, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5616, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5618, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5620, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5622, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5624, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5626, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5628, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5630, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5632, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5634, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5636, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5638, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5640, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5642, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5644, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5646, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5648, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5650, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5652, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5654, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5656, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5658, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5660, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5662, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5664, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5666, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5668, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5670, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5672, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5674, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5676, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5678, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5680, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5682, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5684, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5686, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5688, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5690, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5692, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5694, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5696, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5698, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5700, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5702, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5704, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5706, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5708, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5710, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5712, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5714, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5716, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5718, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5720, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5722, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5724, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5726, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5728, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5730, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5732, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5734, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5736, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5738, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5740, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5742, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5744, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5746, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5748, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5750, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5752, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5754, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5756, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5758, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5760, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5762, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5764, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5766, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5768, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5770, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5772, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5774, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5776, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5778, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5780, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5782, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5784, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5786, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5788, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5790, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5792, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5794, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5796, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5798, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5800, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5802, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5804, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5806, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5808, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5810, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5812, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5814, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5816, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5818, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5820, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5822, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5824, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5826, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5828, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5830, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5832, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5834, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5836, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5838, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5840, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5842, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5844, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5846, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5848, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5850, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5852, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5854, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5856, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5858, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5860, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5862, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5864, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5866, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5868, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5870, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5872, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5874, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5876, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5878, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5880, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5882, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5884, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5886, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5888, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5890, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5892, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5894, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5896, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5898, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5900, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ZS, 0, UTF8PROC_BIDI_CLASS_WS, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 52, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 218, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 224, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20400, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19200, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5923, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19380, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5929, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19440, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5932, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19500, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5935, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19560, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5938, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19620, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5941, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19680, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19740, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5947, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19800, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19860, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5953, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19920, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 19980, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20040, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20100, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5968, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20160, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5971, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5974, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20220, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5977, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20280, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5983, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5986, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20340, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5989, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5992, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5995, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 8, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 52, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MN, 8, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, 53, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 5998, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6001, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20460, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6004, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 6007, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21720, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20520, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6010, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20580, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6013, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20640, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6016, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20700, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6019, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20760, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6022, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20820, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6025, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20880, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6028, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 20940, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6031, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21000, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6034, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21060, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6037, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21120, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6040, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21180, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6043, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21240, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6046, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21300, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6049, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21360, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6052, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21420, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6055, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6058, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21480, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6061, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6064, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21540, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6067, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6070, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21600, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6073, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6076, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21660, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6079, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6082, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21780, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21840, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21900, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 21960, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6085, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6088, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6094, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 22020, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6100, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 6103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6106, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6108, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6110, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6112, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6114, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6116, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6118, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6120, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6124, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6126, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6128, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6130, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6132, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6134, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6136, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6138, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6142, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6144, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6148, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6152, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6154, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6156, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6160, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6162, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6166, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6168, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6170, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6172, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6174, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6176, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6178, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6180, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6184, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6186, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6188, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6190, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6192, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6194, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6196, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6198, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6202, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6204, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6206, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6208, false, -1, -1, -1, -1, -1, false, true, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6210, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6212, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6214, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6216, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6218, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6220, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6222, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6224, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6226, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6228, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6230, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6232, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6234, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6236, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6238, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6240, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6242, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6244, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6246, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6248, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6250, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6252, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6254, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6256, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6258, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6260, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6262, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6264, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6266, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6268, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6270, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6272, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6274, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6276, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6278, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6280, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6282, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6284, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6286, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6288, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6290, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6292, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 5486, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 5498, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6294, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6296, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6298, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6300, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6302, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6304, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 5494, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6306, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6308, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6310, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 6312, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SUPER, utf8proc_sequences + 5502, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6314, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6318, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6322, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6326, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6330, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6334, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6338, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6342, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6346, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6350, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6354, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6358, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6362, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6366, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6370, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6375, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6380, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6385, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6390, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6395, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6400, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6405, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6415, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6425, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6430, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6435, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6445, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6453, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6460, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6464, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6468, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6472, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6476, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6480, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6484, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6492, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6496, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6500, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6504, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6512, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6516, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6520, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6524, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6528, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6536, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6540, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6544, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6548, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6552, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6556, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6560, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6564, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6568, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6572, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6576, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6580, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6584, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6588, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6592, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6596, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6600, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6604, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6608, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6611, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6614, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6617, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6620, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6623, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6626, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6629, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6632, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6635, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6638, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6641, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6644, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6647, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6650, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6106, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6112, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6118, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6138, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6152, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6156, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6160, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6162, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6653, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6656, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6659, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6662, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6665, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6668, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6671, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6674, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6677, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6680, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6683, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6686, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6689, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6692, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6695, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6701, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6706, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5486, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5498, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6294, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6296, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6709, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6711, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6713, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6715, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5632, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5656, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5654, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5634, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5818, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5548, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5628, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6717, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6719, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6721, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6723, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6725, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6727, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6729, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6731, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6733, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6735, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 5560, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6737, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6739, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6741, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6743, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6745, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6747, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6749, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6751, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6298, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6300, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6302, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6753, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6755, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6757, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6759, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6761, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6763, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6765, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6767, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6769, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6771, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6773, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6776, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6779, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6782, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6785, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6788, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6791, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6794, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6797, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6800, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6803, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6806, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6809, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6812, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6815, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6818, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6821, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6824, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6827, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6830, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6833, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6836, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6839, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6842, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6845, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6849, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 6853, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6857, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6860, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6864, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6867, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6871, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6873, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6875, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6877, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6879, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6881, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6883, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6885, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6887, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6889, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6891, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6893, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6895, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6897, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6899, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6901, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6903, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6905, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6907, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6909, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6911, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6913, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6915, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6917, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6919, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6921, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6923, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6925, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6927, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6929, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6931, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6933, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6935, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6937, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6939, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6941, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6943, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6945, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6947, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6949, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6951, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6953, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6955, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6957, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_CIRCLE, utf8proc_sequences + 6963, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6970, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6975, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6984, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6989, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6993, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 6997, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7008, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7012, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7016, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7020, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7025, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7030, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7034, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7045, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7055, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7058, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7064, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7077, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7081, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7093, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7098, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7102, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7106, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7110, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7126, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7130, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7134, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7138, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7144, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7147, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7154, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7168, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7173, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7183, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7186, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7189, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7195, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7206, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7210, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7216, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7219, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7223, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7227, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7231, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7235, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7244, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7248, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7251, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7255, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7259, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7268, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7272, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7276, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7280, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7286, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7291, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7294, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7300, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7303, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7308, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7313, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7317, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7321, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7325, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7330, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7337, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7342, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7345, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7351, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7355, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7358, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7361, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7364, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7367, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7370, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7373, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7376, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7379, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7385, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7389, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7393, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7397, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7405, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7409, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7413, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7417, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7421, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7425, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7429, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7433, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7437, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7441, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7445, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7449, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7452, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7455, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7459, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7462, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7465, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7468, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7472, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7476, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7491, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7496, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7502, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7514, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7517, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7520, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7524, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7529, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7535, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7538, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7541, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7544, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7547, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7550, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7554, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7558, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7562, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7566, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7569, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7572, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7578, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7581, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7584, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7587, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7590, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7593, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7596, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7600, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7604, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7607, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7611, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7615, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7619, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7622, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7626, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7630, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7635, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7638, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7642, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7646, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7650, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7654, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7660, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7667, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7670, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7673, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7676, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7679, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7682, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7685, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7688, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7691, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7694, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7697, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7700, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7703, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7706, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7709, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7712, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7715, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7718, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7721, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7726, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7729, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7732, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7735, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7740, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7744, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7747, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7750, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7753, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7756, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7759, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7762, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7765, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7768, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7771, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7774, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7778, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7781, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7784, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7788, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7792, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7795, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7800, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7804, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7807, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7810, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7813, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7816, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7820, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7824, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7827, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7830, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7833, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7836, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7839, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7842, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7845, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7848, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7851, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7855, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7859, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7863, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7867, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7871, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7875, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7879, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7883, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7887, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7891, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7895, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7899, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7903, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7907, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7911, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7915, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7919, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7923, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7927, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7931, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 7935, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SQUARE, utf8proc_sequences + 7939, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CS, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, true, false, false, NULL}, - {UTF8PROC_CATEGORY_CO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7943, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7945, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5802, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7947, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7949, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7951, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7953, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7955, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5818, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7957, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7963, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7967, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7969, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7971, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7973, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7975, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7977, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7979, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7981, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7983, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7985, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7987, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7989, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7991, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7993, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7995, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7997, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 7999, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8001, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8005, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8007, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8009, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8011, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8013, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8015, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8017, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8019, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8021, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8023, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8025, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8027, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8031, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8033, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8037, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5734, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8039, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8043, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8045, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8049, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8051, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8053, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8055, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8057, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5880, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8061, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8063, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8065, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8067, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8069, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8073, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8075, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8077, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8079, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8081, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8083, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8085, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8093, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8105, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8109, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8111, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8117, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8129, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8133, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8145, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8147, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8149, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8151, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8153, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5806, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8155, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8157, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8159, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8161, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8163, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8165, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8167, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8169, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8171, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8173, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8175, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8177, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8181, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8183, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5560, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8187, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8189, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8191, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8193, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8195, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8197, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8199, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5522, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8201, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8205, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8207, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8209, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8211, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8213, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8215, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8217, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8219, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8221, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8223, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8225, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8227, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8229, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8231, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8233, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8235, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8237, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8241, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8243, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8245, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8247, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8249, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8251, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8253, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8255, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8257, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8259, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8261, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8265, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8267, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8271, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8273, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8275, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8277, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8279, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8281, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8283, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8285, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8287, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8289, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8291, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8293, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8295, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8297, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8299, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8301, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8303, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8305, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8307, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8309, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8311, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8313, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8315, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8317, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8319, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8321, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8323, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8325, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8327, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8329, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8331, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6711, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8335, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8337, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8339, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8341, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8343, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8345, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8347, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8349, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8351, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8353, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8355, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8357, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8359, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8361, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8363, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8365, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8367, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8369, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8371, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8373, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8375, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5816, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8377, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8379, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8381, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8383, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8385, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8387, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8389, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8391, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8393, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8395, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8397, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8399, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5718, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8403, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8405, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8407, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8409, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8411, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8413, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8415, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8417, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8419, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8421, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8423, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8425, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8427, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8429, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8431, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8433, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5772, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8435, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5778, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8437, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8439, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8441, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8443, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8445, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8447, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8449, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8451, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8453, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8455, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8457, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8459, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8461, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8463, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5732, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8465, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8467, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8469, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8471, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8473, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8475, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8477, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8481, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8483, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8487, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8489, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8491, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8493, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8495, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5574, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8513, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8517, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8519, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8521, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8523, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8525, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8527, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8529, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8531, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8533, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6721, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8535, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8537, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8539, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8541, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 6729, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8543, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8545, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8547, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8549, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8551, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8553, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8555, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8557, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8559, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8561, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8563, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8565, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8567, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8569, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8571, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8573, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8577, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8579, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8581, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8583, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8585, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8587, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8589, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8591, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8593, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8595, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8597, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8599, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8601, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8603, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8605, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8607, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8609, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8611, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8613, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8615, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8617, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8619, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8621, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8623, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8625, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8627, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8629, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8631, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8633, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8635, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8637, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8639, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8641, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8643, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8645, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8647, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5640, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8649, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8651, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8653, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8655, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8657, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8659, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8661, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8663, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8665, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8667, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8669, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8671, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8673, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8675, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8677, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8679, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8681, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8683, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8685, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8687, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8689, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8691, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8693, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8695, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8697, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8699, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8701, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8703, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8705, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8707, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8709, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8711, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8713, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8715, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8717, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8719, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8721, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8723, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8725, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8727, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8729, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8731, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8733, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8735, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8737, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8739, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8741, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 8743, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8745, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8745}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8748, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8748}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8751, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8751}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8754, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8754}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8758, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8758}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8762, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8765}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8765, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8765}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8768, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8768}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8771, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8771}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8774, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8774}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8777, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8777}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8780, false, -1, -1, -1, -1, -1, false, false, false, false, utf8proc_sequences + 8780}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8783, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MN, 26, UTF8PROC_BIDI_CLASS_NSM, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8786, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8789, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4581, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8791, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8793, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8795, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8797, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8799, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 8801, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8803, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8806, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8809, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8812, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8815, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8818, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8821, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8824, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8827, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8830, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8833, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8836, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8839, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8842, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8845, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8848, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8851, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8854, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8857, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8860, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8863, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8866, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8869, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8872, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8875, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8878, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8881, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8884, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8887, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8890, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8893, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, 0, utf8proc_sequences + 8896, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_R, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 8899, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8924, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8924, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8924, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8924, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8928, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8928, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8930, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8930, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8932, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8932, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8934, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8934, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8936, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8936, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8938, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8938, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8940, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8940, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8940, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8940, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8942, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8942, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8942, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8942, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8946, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8946, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8946, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8946, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8948, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8948, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8952, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8952, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8958, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8958, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8960, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8960, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8964, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8964, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8966, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8966, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8968, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8968, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8970, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8972, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8972, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8974, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8974, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8976, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8976, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8978, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8978, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8978, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8978, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 8980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 8980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8982, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8982, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8985, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8985, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8988, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8988, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8991, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8991, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8994, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8994, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8997, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8997, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9000, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9000, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9000, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9006, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9006, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9006, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9006, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9008, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9011, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9014, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9017, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9020, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9023, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9026, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9032, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9053, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9056, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9062, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9065, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9068, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9074, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9077, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9080, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9083, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9086, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9092, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9098, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9104, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9110, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9116, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9128, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9134, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9149, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9152, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9155, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9161, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9167, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9170, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9173, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9176, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9188, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9191, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9194, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9197, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9206, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9209, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9212, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9215, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9218, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9221, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9224, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9227, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9230, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9233, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9236, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9242, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9245, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9248, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9251, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9254, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9257, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9260, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9266, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9272, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9275, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9278, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9281, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9284, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9287, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9291, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9295, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9299, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9303, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9307, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9311, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9314, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9014, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9317, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9017, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9320, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9323, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9326, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9032, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9329, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9332, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9335, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9053, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9338, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9341, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9344, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9062, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9065, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9152, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9155, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9167, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9170, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9188, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9191, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9206, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9209, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9347, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9221, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9350, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9353, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9356, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9242, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9245, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9284, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9359, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9362, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9365, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9272, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9275, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9008, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9011, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9368, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9014, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9371, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9020, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9023, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9026, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9374, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9377, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9068, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9074, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9077, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9080, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9086, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9092, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9098, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9380, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9104, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9110, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9116, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9128, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9134, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9149, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9161, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9173, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9176, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9179, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9194, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9197, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9383, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9212, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9215, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9218, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9221, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9230, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9233, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9236, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9248, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9251, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9389, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9260, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9266, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9014, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9371, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9374, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9377, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9395, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9098, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9185, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9203, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9407, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9411, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9415, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9419, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9422, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9425, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9428, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9431, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9434, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9437, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9443, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9446, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9449, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9452, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9455, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9458, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9461, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9464, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9467, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9473, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9476, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9491, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9494, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9419, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9422, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9425, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9428, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9431, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9434, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9437, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9443, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9446, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9449, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9452, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9455, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9458, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9461, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9464, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9467, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9473, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9476, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9491, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9494, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9401, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9092, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9479, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9485, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 9125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9500, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9500, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9519, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9523, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9527, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9531, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9531, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9535, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9539, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9543, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9547, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9551, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9555, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9555, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9559, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9563, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9563, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9567, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9567, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9571, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9575, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9579, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9583, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9583, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9587, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9587, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9591, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9595, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9595, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9599, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9599, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9603, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9607, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9611, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9615, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9615, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9619, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9623, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9627, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9631, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9635, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9635, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9639, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9643, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9647, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9651, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9655, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9659, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9659, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9663, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9663, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9667, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9667, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9671, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9675, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9679, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9683, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9687, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9691, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9695, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9699, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9703, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9707, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9711, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9715, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9719, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9719, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9723, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9727, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9731, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9735, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9735, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9739, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9743, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9747, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9751, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9755, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9759, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9763, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9767, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9771, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9775, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9779, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9783, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9787, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9791, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9795, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9799, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9803, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9807, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9811, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9815, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9819, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9823, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9639, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9647, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9827, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9831, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9835, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9839, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9843, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9847, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9843, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9835, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9851, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9855, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9859, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9863, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9867, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9847, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9611, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 9571, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9871, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 9875, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9879, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9883, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9887, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9892, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9897, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9907, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9917, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9945, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 9954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9963, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 1333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9967, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9969, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9971, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9973, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9975, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9977, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9979, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9981, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PC, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9983, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 4517, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 4519, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9985, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9987, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9989, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9991, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9993, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9995, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9997, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 9999, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 4892, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 4894, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10001, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10003, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10005, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10007, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10009, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_VERTICAL, utf8proc_sequences + 10011, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 10013, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PC, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_COMPAT, utf8proc_sequences + 9983, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 4454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 1333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9969, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9967, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9979, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 4517, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 4519, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9985, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9987, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9989, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 9991, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10015, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10017, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10019, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 4511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10021, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10023, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10025, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 4515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10027, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10031, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_SMALL, utf8proc_sequences + 10033, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10035, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10041, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10047, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10053, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10056, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10059, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10062, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10065, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10068, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10071, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10074, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10077, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10079, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10079, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10081, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10081, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10083, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10083, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10085, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10085, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10087, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10089, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10091, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10093, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10093, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10095, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10097, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10099, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10101, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10103, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10105, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10105, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10107, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10109, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10109, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10111, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10111, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10113, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10115, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10117, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10117, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10117, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10117, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10119, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10121, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10123, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10125, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10127, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10129, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10129, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10129, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10129, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10131, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10133, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10133, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10133, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10133, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10135, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10137, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10139, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10141, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10143, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 8980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 8980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10145, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10145, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_INITIAL, utf8proc_sequences + 10145, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_MEDIAL, utf8proc_sequences + 10145, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10147, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10147, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10153, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10153, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_ISOLATED, utf8proc_sequences + 10156, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_AL, UTF8PROC_DECOMP_TYPE_FINAL, utf8proc_sequences + 10156, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9967, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10159, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10015, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10029, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10031, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10017, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10161, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4517, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4519, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10019, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4511, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9959, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PD, 0, UTF8PROC_BIDI_CLASS_ES, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10021, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10163, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 72, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 60, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 62, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_CS, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9965, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 1333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10023, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4515, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10025, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9969, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10033, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2376, false, -1, 65345, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10165}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2380, false, -1, 65346, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10167}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4532, false, -1, 65347, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10169}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2382, false, -1, 65348, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10171}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2384, false, -1, 65349, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10173}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4571, false, -1, 65350, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10175}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2388, false, -1, 65351, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10177}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2390, false, -1, 65352, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10179}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2392, false, -1, 65353, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10181}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2394, false, -1, 65354, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10183}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2396, false, -1, 65355, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10185}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2398, false, -1, 65356, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10187}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2400, false, -1, 65357, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10189}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2402, false, -1, 65358, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10191}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2404, false, -1, 65359, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10193}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2408, false, -1, 65360, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10195}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4553, false, -1, 65361, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10197}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2410, false, -1, 65362, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10199}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 5231, false, -1, 65363, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10201}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2412, false, -1, 65364, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10203}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2414, false, -1, 65365, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10205}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4662, false, -1, 65366, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10207}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2416, false, -1, 65367, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10209}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4689, false, -1, 65368, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10211}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 5245, false, -1, 65369, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10213}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4565, false, -1, 65370, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10215}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10009, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10027, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10011, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10217, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PC, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9983, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4387, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 0, false, 65313, -1, 65313, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 2, false, 65314, -1, 65314, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 4, false, 65315, -1, 65315, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 6, false, 65316, -1, 65316, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 8, false, 65317, -1, 65317, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10, false, 65318, -1, 65318, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 12, false, 65319, -1, 65319, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 14, false, 65320, -1, 65320, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 16, false, 65321, -1, 65321, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 18, false, 65322, -1, 65322, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 20, false, 65323, -1, 65323, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 22, false, 65324, -1, 65324, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 24, false, 65325, -1, 65325, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 26, false, 65326, -1, 65326, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 28, false, 65327, -1, 65327, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 30, false, 65328, -1, 65328, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 32, false, 65329, -1, 65329, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 34, false, 65330, -1, 65330, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 36, false, 65331, -1, 65331, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 38, false, 65332, -1, 65332, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 40, false, 65333, -1, 65333, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 42, false, 65334, -1, 65334, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 44, false, 65335, -1, 65335, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 46, false, 65336, -1, 65336, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 48, false, 65337, -1, 65337, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 50, false, 65338, -1, 65338, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9985, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10219, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 9987, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10221, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10223, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10225, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 9963, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PS, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10001, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PE, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10003, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 9961, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_PO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10227, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6963, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10229, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10231, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10233, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10235, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10237, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10239, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10241, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10243, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10245, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10247, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6871, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6873, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6875, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6877, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6879, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6881, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6883, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6885, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6887, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6889, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6891, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6893, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6895, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6897, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6899, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6901, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6903, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6905, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6907, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6909, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6911, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6913, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6915, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6917, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6919, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6921, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6923, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6925, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6927, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6929, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6931, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6933, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6935, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6937, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6939, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6941, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6943, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6945, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6947, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6949, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6951, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6953, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6955, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 6957, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10249, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10251, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10253, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10255, false, -1, -1, -1, -1, -1, false, true, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10257, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10259, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10261, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10263, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10265, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10267, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10269, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10271, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10273, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10275, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10277, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10279, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10281, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10283, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10285, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10287, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10289, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10291, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10293, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10295, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10297, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10299, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10301, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10303, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10305, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10307, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10309, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10311, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10313, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10315, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10317, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10319, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10321, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10323, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10325, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10327, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10329, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10331, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10333, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10335, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10337, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10339, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10341, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10343, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10345, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10347, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10349, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10351, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10353, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10355, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10357, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10359, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10361, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10363, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SK, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10365, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10367, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10369, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SC, 0, UTF8PROC_BIDI_CLASS_ET, UTF8PROC_DECOMP_TYPE_WIDE, utf8proc_sequences + 10371, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10373, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10375, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10377, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10379, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10381, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10383, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_ON, UTF8PROC_DECOMP_TYPE_NARROW, utf8proc_sequences + 10385, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_CF, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, true, false, NULL}, - {UTF8PROC_CATEGORY_NL, 0, UTF8PROC_BIDI_CLASS_ON, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66600, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10387}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66601, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10389}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66602, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10391}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66603, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10393}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66604, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10395}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66605, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10397}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66606, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10399}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66607, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10401}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66608, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10403}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66609, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10405}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66610, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10407}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66611, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10409}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66612, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10411}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66613, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10413}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66614, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10415}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66615, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10417}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66616, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10419}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66617, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10421}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66618, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10423}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66619, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10425}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66620, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10427}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66621, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10429}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66622, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10431}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66623, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10433}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66624, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10435}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66625, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10437}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66626, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10439}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66627, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10441}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66628, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10443}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66629, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10445}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66630, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10447}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66631, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10449}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66632, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10451}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66633, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10453}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66634, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10455}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66635, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10457}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66636, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10459}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66637, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10461}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66638, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10463}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, 66639, -1, -1, -1, false, false, false, false, utf8proc_sequences + 10465}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66560, -1, 66560, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66561, -1, 66561, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66562, -1, 66562, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66563, -1, 66563, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66564, -1, 66564, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66565, -1, 66565, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66566, -1, 66566, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66567, -1, 66567, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66568, -1, 66568, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66569, -1, 66569, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66570, -1, 66570, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66571, -1, 66571, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66572, -1, 66572, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66573, -1, 66573, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66574, -1, 66574, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66575, -1, 66575, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66576, -1, 66576, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66577, -1, 66577, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66578, -1, 66578, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66579, -1, 66579, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66580, -1, 66580, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66581, -1, 66581, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66582, -1, 66582, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66583, -1, 66583, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66584, -1, 66584, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66585, -1, 66585, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66586, -1, 66586, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66587, -1, 66587, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66588, -1, 66588, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66589, -1, 66589, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66590, -1, 66590, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66591, -1, 66591, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66592, -1, 66592, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66593, -1, 66593, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66594, -1, 66594, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66595, -1, 66595, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66596, -1, 66596, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66597, -1, 66597, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66598, -1, 66598, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, 66599, -1, 66599, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_NO, 0, UTF8PROC_BIDI_CLASS_R, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 22080, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 22140, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10467, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10470, false, -1, -1, -1, 22200, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10473, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10476, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10479, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10482, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10485, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 54, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 226, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 55, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 56, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 57, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 58, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_MC, 216, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, -1, 59, false, false, false, true, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 22260, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, NULL, false, -1, -1, -1, 22320, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10488, false, -1, -1, -1, 22380, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10491, false, -1, -1, -1, 22440, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10494, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10497, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10500, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10503, false, -1, -1, -1, -1, -1, true, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2376, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2388, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2394, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2396, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 5231, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2412, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2414, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4662, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2416, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4689, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 5245, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 0, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 2, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 20, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 24, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 26, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 30, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 32, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 34, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 36, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 38, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 40, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 42, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 44, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 46, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 48, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 50, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10506, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10510, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10512, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10514, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10516, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10518, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10520, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1504, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10522, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10524, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10526, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10528, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10530, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10532, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10534, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10536, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10538, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1508, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10540, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10542, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10544, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10546, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4567, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10548, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1388, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1390, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1394, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1396, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1326, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1400, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 67, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1402, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1406, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1502, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1412, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1414, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1416, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1418, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1422, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1424, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_SM, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10550, true, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10552, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10554, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10556, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10558, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10560, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10562, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LU, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 10564, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LL, 0, UTF8PROC_BIDI_CLASS_L, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 1482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4497, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 72, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 60, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 62, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4499, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4501, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4503, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4505, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4507, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_ND, 0, UTF8PROC_BIDI_CLASS_EN, UTF8PROC_DECOMP_TYPE_FONT, utf8proc_sequences + 4509, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10566, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10568, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10570, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10572, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10574, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10576, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10578, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10580, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10582, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10584, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10586, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10588, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10590, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10592, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10594, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10596, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10598, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10600, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10602, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10604, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10606, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10608, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10610, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10612, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10614, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5518, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10616, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10618, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10620, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10622, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10624, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10626, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10628, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10630, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10632, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10634, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10636, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10638, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10640, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10642, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10644, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10646, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10648, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10650, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10652, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10654, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10656, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10658, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10660, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10662, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10664, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10666, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10668, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10670, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10672, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10674, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10676, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10678, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10680, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10682, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10684, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10686, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10688, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10690, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10692, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10694, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10696, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10698, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10700, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10702, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10704, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10706, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10708, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10710, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10712, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10714, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10716, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10718, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10720, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10722, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10724, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10726, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10728, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10730, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10732, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10734, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10736, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10738, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10740, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10742, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10744, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10746, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10748, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10750, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10752, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10754, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10756, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10758, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10760, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5570, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10762, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10764, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10766, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10768, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10770, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10772, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10774, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10776, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10778, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10780, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10782, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10784, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10786, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10788, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10790, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10792, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10794, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10796, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10798, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10800, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10802, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10804, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10806, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10808, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5594, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10810, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10812, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10814, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10816, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10818, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10820, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10822, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10824, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10826, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10828, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10830, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10832, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10834, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10836, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10838, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10840, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10842, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10844, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10846, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10848, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10850, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10852, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10854, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10856, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10858, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10860, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10862, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10864, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10866, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10868, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10870, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10872, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10874, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10876, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10878, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10880, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10882, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10884, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10886, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10888, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10890, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10892, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10894, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10896, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10898, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10900, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10904, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10906, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10908, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10910, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10912, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10914, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10916, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10918, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10920, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10922, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10924, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10926, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10928, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10930, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10932, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10934, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10936, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10938, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10940, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10942, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10944, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10946, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10948, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10950, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10952, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10954, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10956, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10958, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10960, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10962, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10964, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10966, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10968, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10970, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10972, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10974, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10976, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10978, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10980, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10982, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10984, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10986, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10988, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10990, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10992, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10994, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10996, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 10998, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11000, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11002, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11004, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11006, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11008, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11010, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11012, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11014, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11016, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11018, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11020, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11022, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11024, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11026, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11028, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11030, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11032, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11034, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11036, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11038, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11040, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11042, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11044, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11046, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11048, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11050, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11052, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11054, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11056, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11058, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11060, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11062, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11064, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11066, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11068, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11070, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11072, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11074, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11076, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11078, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11080, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11082, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11084, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11086, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11088, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11090, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11092, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11094, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11096, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11098, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11100, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11102, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11104, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11106, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11108, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11110, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11112, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11114, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11116, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11118, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11120, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11122, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11124, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11126, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11128, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11130, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11132, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11134, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11136, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11138, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11140, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11142, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11144, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11146, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11148, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11150, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11152, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11154, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11156, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11158, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11160, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11162, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11164, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11166, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11168, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11170, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11172, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11174, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11176, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11178, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11180, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11182, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11184, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11186, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11188, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11190, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11192, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11194, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11196, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11198, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11200, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11202, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11204, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11206, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11208, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11210, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11212, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11214, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11216, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11218, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11220, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11222, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11224, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11226, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11228, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11230, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11232, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11234, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11236, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11238, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11240, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11242, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11244, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11246, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11248, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11250, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11252, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11254, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11256, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11258, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11260, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11262, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11264, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11266, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11268, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11270, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11272, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11274, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11276, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11278, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11280, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11282, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11284, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11286, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11288, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11290, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11292, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11294, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11296, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11298, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11300, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11302, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11304, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11306, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11308, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11310, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11312, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11314, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11316, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11318, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11320, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11322, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11324, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11326, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11328, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11330, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11332, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11334, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11336, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11338, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11340, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11342, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11344, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5774, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11346, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11348, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11350, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11352, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11354, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11356, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11358, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11360, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11362, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11364, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11366, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5788, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11368, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11370, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11372, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11374, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11376, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11378, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11380, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11382, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11384, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11386, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11388, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11390, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11392, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11394, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11396, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11398, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11400, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11402, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11404, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11406, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11408, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11410, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11412, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11414, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11416, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11418, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11420, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11422, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11424, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11426, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11428, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11430, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11432, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11434, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11436, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11438, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11440, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11442, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11444, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11446, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11448, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11450, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11452, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11454, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11456, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11458, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11460, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11462, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11464, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11466, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11468, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11470, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11472, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11474, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11476, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11478, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11480, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11482, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11484, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11486, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11488, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11490, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5884, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11492, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5892, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11494, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11496, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11498, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11500, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 5902, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, - {UTF8PROC_CATEGORY_LO, 0, UTF8PROC_BIDI_CLASS_L, 0, utf8proc_sequences + 11502, false, -1, -1, -1, -1, -1, false, false, false, false, NULL}, -}; - -const int32_t utf8proc_combinations[] = { - 192, 193, 194, 195, 196, 197, -1, - 256, 258, 260, 550, 461, -1, -1, 512, - 514, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7680, 7840, -1, -1, -1, -1, -1, 7842, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 262, 264, - -1, -1, -1, 199, -1, -1, -1, 266, - 268, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 200, 201, 202, 7868, 203, -1, 552, - 274, 276, 280, 278, 282, -1, -1, 516, - 518, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7864, -1, 7704, 7706, -1, -1, 7866, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 204, 205, 206, - 296, 207, -1, -1, 298, 300, 302, 304, - 463, -1, -1, 520, 522, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7882, -1, -1, - 7724, -1, -1, 7880, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 504, 323, -1, 209, -1, -1, 325, - -1, -1, -1, 7748, 327, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7750, 7752, 7754, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 210, 211, 212, - 213, 214, -1, -1, 332, 334, 490, 558, - 465, 336, 416, 524, 526, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7884, -1, -1, - -1, -1, -1, 7886, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 217, 218, 219, 360, 220, 366, -1, - 362, 364, 370, -1, 467, 368, 431, 532, - 534, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7908, -1, 7798, 7796, -1, 7794, 7910, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7922, 221, 374, - 7928, 376, -1, -1, 562, -1, -1, 7822, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7924, -1, -1, - -1, -1, -1, 7926, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 224, 225, 226, 227, 228, 229, -1, - 257, 259, 261, 551, 462, -1, -1, 513, - 515, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7681, 7841, -1, -1, -1, -1, -1, 7843, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 263, 265, - -1, -1, -1, 231, -1, -1, -1, 267, - 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 232, 233, 234, 7869, 235, -1, 553, - 275, 277, 281, 279, 283, -1, -1, 517, - 519, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7865, -1, 7705, 7707, -1, -1, 7867, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 236, 237, 238, - 297, 239, -1, -1, 299, 301, 303, -1, - 464, -1, -1, 521, 523, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7883, -1, -1, - 7725, -1, -1, 7881, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 505, 324, -1, 241, -1, -1, 326, - -1, -1, -1, 7749, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7751, 7753, 7755, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 242, 243, 244, - 245, 246, -1, -1, 333, 335, 491, 559, - 466, 337, 417, 525, 527, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7885, -1, -1, - -1, -1, -1, 7887, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 249, 250, 251, 361, 252, 367, -1, - 363, 365, 371, -1, 468, 369, 432, 533, - 535, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7909, -1, 7799, 7797, -1, 7795, 7911, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7923, 253, 375, - 7929, 255, 7833, -1, 563, -1, -1, 7823, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7925, -1, -1, - -1, -1, -1, 7927, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7696, - -1, -1, -1, 7690, 270, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7692, 7694, 7698, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7697, -1, -1, -1, 7691, - 271, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7693, 7695, 7699, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 500, 284, -1, -1, -1, 290, - 7712, 286, -1, 288, 486, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 501, 285, - -1, -1, -1, 291, 7713, 287, -1, 289, - 487, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 292, -1, 7718, -1, 7720, - -1, -1, -1, 7714, 542, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7716, -1, -1, -1, 7722, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 293, - -1, 7719, -1, 7721, -1, -1, -1, 7715, - 543, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7717, 7830, -1, - -1, 7723, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 308, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 309, - -1, -1, -1, -1, -1, -1, -1, -1, - 496, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7728, -1, -1, -1, -1, 310, - -1, -1, -1, -1, 488, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7730, 7732, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7729, -1, - -1, -1, -1, 311, -1, -1, -1, -1, - 489, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7731, 7733, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 313, -1, -1, -1, -1, 315, - -1, -1, -1, -1, 317, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7734, 7738, 7740, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, - -1, -1, -1, 316, -1, -1, -1, -1, - 318, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7735, 7739, 7741, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 340, -1, -1, -1, -1, 342, - -1, -1, -1, 7768, 344, -1, -1, 528, - 530, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7770, 7774, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 341, -1, - -1, -1, -1, 343, -1, -1, -1, 7769, - 345, -1, -1, 529, 531, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7771, 7775, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 346, 348, -1, -1, -1, 350, - -1, -1, -1, 7776, 352, -1, -1, -1, - -1, 536, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7778, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 347, 349, - -1, -1, -1, 351, -1, -1, -1, 7777, - 353, -1, -1, -1, -1, 537, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7779, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 354, - -1, -1, -1, 7786, 356, -1, -1, -1, - -1, 538, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7788, 7790, 7792, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7831, -1, 355, -1, -1, -1, 7787, - 357, -1, -1, -1, -1, 539, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7789, 7791, 7793, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7808, 7810, 372, -1, 7812, -1, -1, - -1, -1, -1, 7814, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7816, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7809, 7811, 373, - -1, 7813, 7832, -1, -1, -1, -1, 7815, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7817, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 377, 7824, -1, -1, -1, -1, - -1, -1, -1, 379, 381, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7826, 7828, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 378, 7825, - -1, -1, -1, -1, -1, -1, -1, 380, - 382, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7827, 7829, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 475, 471, -1, -1, -1, -1, -1, - 469, -1, -1, -1, 473, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 476, 472, -1, - -1, -1, -1, -1, 470, -1, -1, -1, - 474, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 478, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 479, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 480, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 481, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 508, -1, -1, -1, -1, -1, - 482, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 509, -1, - -1, -1, -1, -1, 483, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 492, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 493, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 494, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 495, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 506, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 507, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 510, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 511, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 554, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 555, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7756, -1, -1, 7758, -1, -1, - 556, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7757, -1, - -1, 7759, -1, -1, 557, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 560, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 561, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8173, 901, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8129, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8122, 902, -1, - -1, -1, -1, -1, 8121, 8120, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7944, 7945, -1, 8124, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8136, 904, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7960, 7961, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8138, 905, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7976, 7977, -1, 8140, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8154, 906, -1, -1, 938, -1, -1, - 8153, 8152, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7992, 7993, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8184, 908, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8008, 8009, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8170, 910, -1, -1, 939, -1, -1, - 8169, 8168, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8025, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8186, 911, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8040, 8041, -1, 8188, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8146, 912, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8151, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8048, 940, -1, - -1, -1, -1, -1, 8113, 8112, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7936, 7937, 8118, 8115, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8050, 941, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7952, 7953, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8052, 942, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7968, 7969, 8134, 8131, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8054, 943, -1, -1, 970, -1, -1, - 8145, 8144, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7984, 7985, 8150, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8162, 944, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8167, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8058, 973, -1, -1, 971, -1, -1, - 8161, 8160, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8016, 8017, 8166, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8056, 972, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8000, 8001, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8060, 974, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8032, 8033, 8182, 8179, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 979, -1, - -1, 980, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1024, -1, -1, -1, 1025, -1, -1, - -1, 1238, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1027, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1031, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1036, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1037, -1, -1, -1, 1252, -1, -1, - 1250, 1049, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1264, -1, -1, 1262, 1038, -1, -1, - -1, 1266, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1117, -1, -1, -1, 1253, -1, -1, - 1251, 1081, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1104, -1, -1, - -1, 1105, -1, -1, -1, 1239, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1107, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1116, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1265, -1, -1, 1263, 1118, -1, -1, - -1, 1267, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1142, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1143, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1244, -1, -1, - -1, 1217, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1245, -1, -1, -1, 1218, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1234, -1, -1, - -1, 1232, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1235, -1, -1, -1, 1233, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1242, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1243, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1246, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1247, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1255, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1258, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1259, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1260, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1261, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1268, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1272, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1273, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1570, 1571, 1573, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1572, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1574, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1728, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1730, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1747, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2345, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2353, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2507, 2508, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 2888, 2891, 2892, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2964, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3020, 3018, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 3019, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3264, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3271, 3272, - 3274, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3275, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3402, 3404, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3403, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3546, 3548, 3550, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3549, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4134, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6918, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 6920, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6922, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 6924, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6926, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 6930, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6971, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 6973, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6976, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 6977, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 6979, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7682, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7684, 7686, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7683, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7685, 7687, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7688, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7689, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7700, 7702, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7701, 7703, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7708, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7709, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7710, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7711, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7726, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7727, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7736, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7737, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7742, -1, -1, -1, -1, -1, - -1, -1, -1, 7744, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7746, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7743, -1, - -1, -1, -1, -1, -1, -1, -1, 7745, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7747, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7760, 7762, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7761, 7763, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7764, -1, -1, -1, -1, -1, - -1, -1, -1, 7766, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7765, -1, - -1, -1, -1, -1, -1, -1, -1, 7767, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7772, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7773, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7780, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7781, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7782, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7783, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7784, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7785, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7800, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7801, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7802, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7803, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7804, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7806, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 7805, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7807, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7820, -1, -1, - -1, -1, -1, 7818, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7821, -1, -1, -1, -1, -1, 7819, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7835, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7846, 7844, -1, - 7850, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7848, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7847, 7845, -1, 7851, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7849, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7852, - -1, -1, -1, -1, -1, 7862, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7853, -1, -1, -1, -1, - -1, 7863, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7856, 7854, -1, - 7860, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7858, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7857, 7855, -1, 7861, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7859, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7872, 7870, -1, - 7876, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7874, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7873, 7871, -1, 7877, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7875, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7878, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7879, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7890, 7888, -1, - 7894, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7892, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7891, 7889, -1, 7895, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7893, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7896, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7897, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7900, 7898, -1, - 7904, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7906, -1, -1, - -1, -1, -1, 7902, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7901, 7899, -1, 7905, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7907, -1, -1, -1, -1, -1, 7903, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7914, 7912, -1, - 7918, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7920, -1, -1, - -1, -1, -1, 7916, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7915, 7913, -1, 7919, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7921, -1, -1, -1, -1, -1, 7917, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7938, 7940, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7942, 8064, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7939, 7941, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7943, 8065, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7946, 7948, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7950, 8072, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7947, 7949, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7951, 8073, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7954, 7956, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7955, 7957, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7962, 7964, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7963, 7965, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7970, 7972, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7974, 8080, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7971, 7973, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7975, 8081, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7978, 7980, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7982, 8088, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7979, 7981, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7983, 8089, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7986, 7988, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7990, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7987, 7989, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7991, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7994, 7996, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 7998, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7995, 7997, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 7999, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8002, 8004, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8003, 8005, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8010, 8012, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8011, 8013, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8018, 8020, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8022, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8019, 8021, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8023, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8027, 8029, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8031, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8034, 8036, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8038, 8096, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8035, 8037, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8039, 8097, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8042, 8044, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8046, 8104, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8043, 8045, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8047, 8105, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8066, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8067, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8068, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8069, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8070, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8071, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8074, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8075, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8076, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8077, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8078, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8079, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8082, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8083, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8084, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8085, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8086, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8087, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8090, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8091, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8092, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8093, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8094, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8095, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8098, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8099, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8100, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8101, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8102, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8103, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8106, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8107, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8108, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8109, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8110, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8111, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8114, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8116, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8130, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8132, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8135, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8141, 8142, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8143, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8157, 8158, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8159, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8164, 8165, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8172, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8178, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8180, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8183, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8602, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8603, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8622, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8653, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8654, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8655, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8708, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8713, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8716, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8740, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8742, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8769, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8772, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8775, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8777, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8800, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8802, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8813, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8814, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8815, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8816, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8817, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8820, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8821, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8824, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8825, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8832, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8833, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8836, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8837, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8840, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8841, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8876, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8877, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8878, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8879, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8928, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8929, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8930, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8931, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8938, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8939, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8940, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8941, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 10972, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12364, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12366, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12368, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12370, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12372, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12374, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12376, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12378, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12380, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12384, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12386, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12389, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12391, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12393, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12400, 12401, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12403, 12404, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12406, 12407, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12409, 12410, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12412, 12413, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12436, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12446, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12460, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12462, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12464, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12466, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12468, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12470, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12472, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12474, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12476, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12478, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12480, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12482, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12485, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12487, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12489, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12496, 12497, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12499, 12500, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12502, 12503, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12505, 12506, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12508, 12509, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12532, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12535, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12536, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12537, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12538, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 12542, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 119134, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 119135, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 119136, 119137, 119138, 119139, 119140, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 119227, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 119228, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 119229, 119231, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 119230, 119232, -1, -1, -1, }; - diff --git a/contrib/netcdf/4.4.1.1/liblib/CMakeLists.txt b/contrib/netcdf/4.4.1.1/liblib/CMakeLists.txt deleted file mode 100644 index f1d7597d26d..00000000000 --- a/contrib/netcdf/4.4.1.1/liblib/CMakeLists.txt +++ /dev/null @@ -1,134 +0,0 @@ - -SET(liblib_LIBS dispatch netcdf3) - -##### -# Add target objects/modules based on options. -##### - -IF(USE_HDF5 OR USE_NETCDF4) - SET(liblib_LIBS ${liblib_LIBS} netcdf4) -ENDIF() - -IF(USE_PNETCDF) - SET(liblib_LIBS ${liblib_LIBS} netcdfp) -ENDIF() - -IF(USE_DAP) - SET(liblib_LIBS ${liblib_LIBS} oc2 dap2) -ENDIF() - - -FOREACH(LIBS ${liblib_LIBS}) - SET(LARGS ${LARGS} $) -ENDFOREACH() - -ADD_LIBRARY(netcdf nc_initialize.c ${LARGS} ) -IF(MOD_NETCDF_NAME) - SET_TARGET_PROPERTIES(netcdf PROPERTIES LIBRARY_OUTPUT_NAME ${NETCDF_LIB_NAME}) - SET_TARGET_PROPERTIES(netcdf PROPERTIES ARCHIVE_OUTPUT_NAME ${NETCDF_LIB_NAME}) - SET_TARGET_PROPERTIES(netcdf PROPERTIES RUNTIME_OUTPUT_NAME ${NETCDF_LIB_NAME}) -ENDIF() - -##### -# Add dependencies required for linking. -##### - -SET(TLL_LIBS "") - -SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY}) - -# Add extra dependencies specified via NC_EXTRA_DEPS -SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS}) - -IF(HAVE_LIBDL) - SET(TLL_LIBS ${LIBDL} ${TLL_LIBS}) -ENDIF() - -IF(USE_HDF5 OR USE_NETCDF4) - IF(NOT MSVC) - # Some version of cmake define HDF5_hdf5_LIBRARY instead of - # HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES - IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARIES) - SET(HDF5_C_LIBRARIES ${HDF5_hdf5_LIBRARY}) - ENDIF() - IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES) - SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY}) - ENDIF() - # The order of the libraries is important here for static - # builds: - # Make sure that HDF5_C_LIBRARY appears *after* - # HDF5_HL_LIBRARY. - SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY}) - ELSE() # Windows CMake defines HDF5_LIBRARIES. - SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY}) - ENDIF() -ENDIF() - -IF(USE_DAP) - SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY}) -ENDIF() - -IF(USE_HDF4) - SET(TLL_LIBS ${HDF4_MFHDF_LIB} ${HDF4_DF_LIB} ${TLL_LIBS}) -ENDIF() - -IF(ENABLE_PNETCDF AND PNETCDF) - SET(TLL_LIBS ${TLL_LIBS} ${PNETCDF}) -ENDIF() - -IF(TLL_LIBS) - LIST(REMOVE_DUPLICATES TLL_LIBS) -ENDIF() - -TARGET_LINK_LIBRARIES(netcdf ${TLL_LIBS}) -SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${TLL_LIBS}) -IF(MSVC) - SET_TARGET_PROPERTIES(netcdf PROPERTIES - LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) -ENDIF() - -IF(NOT MSVC) - IF(BUILD_SHARED_LIBS) - SET_TARGET_PROPERTIES(netcdf PROPERTIES LINK_FLAGS -shared) - ENDIF() -ENDIF() - -IF(ENABLE_SHARED_LIBRARY_VERSION) - SET_TARGET_PROPERTIES(netcdf PROPERTIES - VERSION ${netCDF_LIB_VERSION} - SOVERSION ${netCDF_SO_VERSION} - ) -ENDIF(ENABLE_SHARED_LIBRARY_VERSION) - -### -# The INCLUDES directive was introduced in 2.8.12. -# However, 2.8.11 is still the default on some -# popular linux distributions. See -# https://github.com/Unidata/netcdf-c/issues/135 -# for more information. -### -IF(${CMAKE_VERSION} VERSION_LESS 2.8.12) - INSTALL( - TARGETS netcdf EXPORT netCDFTargets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) -ELSE() - INSTALL( - TARGETS netcdf EXPORT netCDFTargets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) -ENDIF() - -SET(ALL_TLL_LIBS ${TLL_LIBS} PARENT_SCOPE) -SET(NC_LIBS ${NC_LIBS} PARENT_SCOPE) - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.c) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/liblib/Makefile.am b/contrib/netcdf/4.4.1.1/liblib/Makefile.am deleted file mode 100755 index 5d38891c6fb..00000000000 --- a/contrib/netcdf/4.4.1.1/liblib/Makefile.am +++ /dev/null @@ -1,70 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2010, see the COPYRIGHT file for more information. - -# This Makefile assembles the correct libnetcdf based on various -# configure flags. It is assumed that all the relevant convenience -# libraries have been built (e.g. libsrc, libsrc4, libncdap3, libcdmr, -# libncdap4, fortran). - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -# This is our output, the netcdf library the user will install. -lib_LTLIBRARIES = libnetcdf.la - -## -# These linker flags specify libtool version info. -# See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning -# for information regarding incrementing `-version-info`. -## - -libnetcdf_la_LDFLAGS = -version-info 11:4:0 ${NOUNDEFINED} - -libnetcdf_la_CPPFLAGS = ${AM_CPPFLAGS} -libnetcdf_la_LIBADD = -CLEANFILES = - -# Turn on some extra stuff when building a DLL for windows. -if BUILD_DLL -libnetcdf_la_LDFLAGS += -no-undefined -Wl,--output-def,netcdfdll.def -libnetcdf_la_CPPFLAGS += -DDLL_EXPORT -endif # BUILD_DLL - -# The v2 API... -if BUILD_V2 -libnetcdf_la_LIBADD += ${top_builddir}/libdispatch/libnetcdf2.la -endif # BUILD_V2 - -# The output library will always include netcdf3 and dispatch -# libraries -libnetcdf_la_LIBADD += ${top_builddir}/libdispatch/libdispatch.la \ - ${top_builddir}/libsrc/libnetcdf3.la - -# + pnetcdf -if USE_PNETCDF -AM_CPPFLAGS += -I${top_srcdir}/libsrcp -libnetcdf_la_LIBADD += ${top_builddir}/libsrcp/libnetcdfp.la -endif # USE_PNETCDF - -# + dap -if USE_DAP -AM_CPPFLAGS += -I${top_srcdir}/libdap2 -I${top_srcdir}/oc -libnetcdf_la_LIBADD += ${top_builddir}/libdap2/libdap2.la -libnetcdf_la_LIBADD += ${top_builddir}/oc2/liboc.la -endif # USE_DAP - -# NetCDF-4 ... -if USE_NETCDF4 - -AM_CPPFLAGS += -I${top_srcdir}/libsrc4 - -libnetcdf_la_LIBADD += ${top_builddir}/libsrc4/libnetcdf4.la - -# Not ready for prime time yet -# libnetcdf_la_LIBADD += ${top_builddir}/libdiskless/libdiskless.la - -endif #USE_NETCDF4 - -# We need at least one source file -libnetcdf_la_SOURCES = nc_initialize.c -EXTRA_DIST=CMakeLists.txt diff --git a/contrib/netcdf/4.4.1.1/liblib/Makefile.in b/contrib/netcdf/4.4.1.1/liblib/Makefile.in deleted file mode 100644 index 06617f52635..00000000000 --- a/contrib/netcdf/4.4.1.1/liblib/Makefile.in +++ /dev/null @@ -1,789 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2010, see the COPYRIGHT file for more information. - -# This Makefile assembles the correct libnetcdf based on various -# configure flags. It is assumed that all the relevant convenience -# libraries have been built (e.g. libsrc, libsrc4, libncdap3, libcdmr, -# libncdap4, fortran). - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# Turn on some extra stuff when building a DLL for windows. -@BUILD_DLL_TRUE@am__append_3 = -no-undefined -Wl,--output-def,netcdfdll.def -@BUILD_DLL_TRUE@am__append_4 = -DDLL_EXPORT - -# The v2 API... -@BUILD_V2_TRUE@am__append_5 = ${top_builddir}/libdispatch/libnetcdf2.la - -# + pnetcdf -@USE_PNETCDF_TRUE@am__append_6 = -I${top_srcdir}/libsrcp -@USE_PNETCDF_TRUE@am__append_7 = ${top_builddir}/libsrcp/libnetcdfp.la - -# + dap -@USE_DAP_TRUE@am__append_8 = -I${top_srcdir}/libdap2 -I${top_srcdir}/oc -@USE_DAP_TRUE@am__append_9 = ${top_builddir}/libdap2/libdap2.la \ -@USE_DAP_TRUE@ ${top_builddir}/oc2/liboc.la - -# NetCDF-4 ... -@USE_NETCDF4_TRUE@am__append_10 = -I${top_srcdir}/libsrc4 -@USE_NETCDF4_TRUE@am__append_11 = ${top_builddir}/libsrc4/libnetcdf4.la -subdir = liblib -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libnetcdf_la_DEPENDENCIES = $(am__append_5) \ - ${top_builddir}/libdispatch/libdispatch.la \ - ${top_builddir}/libsrc/libnetcdf3.la $(am__append_7) \ - $(am__append_9) $(am__append_11) -am_libnetcdf_la_OBJECTS = libnetcdf_la-nc_initialize.lo -libnetcdf_la_OBJECTS = $(am_libnetcdf_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libnetcdf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libnetcdf_la_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libnetcdf_la-nc_initialize.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libnetcdf_la_SOURCES) -DIST_SOURCES = $(libnetcdf_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ - $(am__append_6) $(am__append_8) $(am__append_10) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. - -# This is our output, the netcdf library the user will install. -lib_LTLIBRARIES = libnetcdf.la - -# These linker flags specify libtool version info. -# See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning -# for information regarding incrementing `-version-info`. -libnetcdf_la_LDFLAGS = -version-info 11:4:0 ${NOUNDEFINED} \ - $(am__append_3) -libnetcdf_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_4) - -# The output library will always include netcdf3 and dispatch -# libraries -libnetcdf_la_LIBADD = $(am__append_5) \ - ${top_builddir}/libdispatch/libdispatch.la \ - ${top_builddir}/libsrc/libnetcdf3.la $(am__append_7) \ - $(am__append_9) $(am__append_11) -CLEANFILES = - -# Not ready for prime time yet -# libnetcdf_la_LIBADD += ${top_builddir}/libdiskless/libdiskless.la - -# We need at least one source file -libnetcdf_la_SOURCES = nc_initialize.c -EXTRA_DIST = CMakeLists.txt -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 liblib/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign liblib/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libnetcdf.la: $(libnetcdf_la_OBJECTS) $(libnetcdf_la_DEPENDENCIES) $(EXTRA_libnetcdf_la_DEPENDENCIES) - $(AM_V_CCLD)$(libnetcdf_la_LINK) -rpath $(libdir) $(libnetcdf_la_OBJECTS) $(libnetcdf_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf_la-nc_initialize.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libnetcdf_la-nc_initialize.lo: nc_initialize.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf_la-nc_initialize.lo -MD -MP -MF $(DEPDIR)/libnetcdf_la-nc_initialize.Tpo -c -o libnetcdf_la-nc_initialize.lo `test -f 'nc_initialize.c' || echo '$(srcdir)/'`nc_initialize.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf_la-nc_initialize.Tpo $(DEPDIR)/libnetcdf_la-nc_initialize.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc_initialize.c' object='libnetcdf_la-nc_initialize.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf_la-nc_initialize.lo `test -f 'nc_initialize.c' || echo '$(srcdir)/'`nc_initialize.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libnetcdf_la-nc_initialize.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libnetcdf_la-nc_initialize.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/libsrc/CMakeLists.txt b/contrib/netcdf/4.4.1.1/libsrc/CMakeLists.txt deleted file mode 100644 index 76eecc8cb0a..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/CMakeLists.txt +++ /dev/null @@ -1,65 +0,0 @@ -## This is a CMake file, part of Unidata's netCDF package. -# Copyright 2012-2013, see the COPYRIGHT file for more information. - -# Process these files with m4. -SET(m4_SOURCES attr ncx putget t_ncxx) -foreach (f ${m4_SOURCES}) -IF(HAVE_M4) - GEN_m4(${f}) -ENDIF() -endforeach(f) - -SET(libsrc_SOURCES v1hpg.c putget.c attr.c nc3dispatch.c - nc3internal.c var.c dim.c ncx.c lookup3.c ncio.c nc_hashmap.c) - -SET(libsrc_SOURCES ${libsrc_SOURCES} pstdint.h ncio.h ncx.h) - -IF (BUILD_DISKLESS) - SET(libsrc_SOURCES ${libsrc_SOURCES} memio.c) - - IF (BUILD_MMAP) - SET(libsrc_SOURCES ${libsrc_SOURCES} mmapio.c) - ENDIF( BUILD_MMAP) -ENDIF (BUILD_DISKLESS) - -IF (USE_FFIO) - SET(libsrc_SOURCES ${libsrc_SOURCES} ffio.c) -ELSEIF (USE_STDIO) - SET(libsrc_SORUCES ${libsrc_SOURCES} ncstdio.c) -ELSE (USE_FFIO) - SET(libsrc_SOURCES ${libsrc_SOURCES} posixio.c) -ENDIF (USE_FFIO) - -add_library(netcdf3 OBJECT ${libsrc_SOURCES}) - -# The C API man page. - -SET(MAN_FILES netcdf.3) - -set(ARGS_MANPAGE -DAPI=C) - -IF (USE_NETCDF4) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) -ENDIF(USE_NETCDF4) - -IF (BUILD_DAP) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) -ENDIF(BUILD_DAP) - -IF (BUILD_PARALLEL) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) -ENDIF(BUILD_PARALLEL) - -# Generate the man page. -IF(HAVE_M4) - - FILE(GLOB libsrc_MANPAGE ${CMAKE_SOURCE_DIR}/docs/netcdf.m4) - FILE(COPY ${libsrc_MANPAGE} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - - ADD_CUSTOM_TARGET(manpage ALL - COMMAND ${NC_M4} ${ARGS_MANPAGE} ${CMAKE_CURRENT_BINARY_DIR}/netcdf.m4 > ${CMAKE_CURRENT_BINARY_DIR}/netcdf.3 - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/netcdf.3 DESTINATION "share/man/man3" COMPONENT documentation) -ENDIF() diff --git a/contrib/netcdf/4.4.1.1/libsrc/Makefile.am b/contrib/netcdf/4.4.1.1/libsrc/Makefile.am deleted file mode 100644 index f7baf872070..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/Makefile.am +++ /dev/null @@ -1,69 +0,0 @@ -## This is an automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file is in charge of building the libsrc directory, -# which contains the classic library code. - -include $(top_srcdir)/lib_flags.am - -libnetcdf3_la_CPPFLAGS = ${AM_CPPFLAGS} - -# Turn on a pre-processor flag when building a DLL for windows. -if BUILD_DLL -libnetcdf3_la_CPPFLAGS += -DDLL_EXPORT -endif # BUILD_DLL - -# These files comprise the netCDF-3 classic library code. -libnetcdf3_la_SOURCES = v1hpg.c \ -putget.c attr.c nc3dispatch.c nc3internal.c var.c dim.c ncx.c nc_hashmap.c \ -ncx.h lookup3.c pstdint.h ncio.c ncio.h - -if BUILD_DISKLESS - libnetcdf3_la_SOURCES += memio.c -if BUILD_MMAP - libnetcdf3_la_SOURCES += mmapio.c -endif BUILD_MMAP -endif BUILD_DISKLESS - -# Does the user want to use ffio, a replacement for posixio for Cray -# computers? -if USE_FFIO -libnetcdf3_la_SOURCES += ffio.c -else !USE_FFIO -if USE_STDIO -libnetcdf3_la_SOURCES += ncstdio.c -else !USE_STDIO -libnetcdf3_la_SOURCES += posixio.c -endif !USE_STDIO -endif !USE_FFIO - -noinst_LTLIBRARIES = libnetcdf3.la - -# These files are cleaned on developer workstations (and then rebuilt -# with m4), but they are included in the distribution so that the user -# does not have to have m4. -MAINTAINERCLEANFILES = $(man_MANS) attrx.c ncx.c putgetx.c -EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt XGetopt.c - -# This tells make how to turn .m4 files into .c files. -.m4.c: - m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >${srcdir}/$@ - -# The C API man page. -man_MANS = netcdf.3 - -# Decide what goes in the man page, based on user configure options. -ARGS_MANPAGE = -DAPI=C -if USE_NETCDF4 -ARGS_MANPAGE += -DNETCDF4=TRUE -endif -if BUILD_DAP -ARGS_MANPAGE += -DDAP=TRUE -endif -if BUILD_PARALLEL -ARGS_MANPAGE += -DPARALLEL_IO=TRUE -endif - -# This rule generates the C manpage. -netcdf.3: $(top_srcdir)/docs/netcdf.m4 - m4 $(M4FLAGS) $(ARGS_MANPAGE) $? >$@ || rm $@ diff --git a/contrib/netcdf/4.4.1.1/libsrc/Makefile.in b/contrib/netcdf/4.4.1.1/libsrc/Makefile.in deleted file mode 100644 index c892818e59e..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/Makefile.in +++ /dev/null @@ -1,984 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file is in charge of building the libsrc directory, -# which contains the classic library code. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# Turn on a pre-processor flag when building a DLL for windows. -@BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT -@BUILD_DISKLESS_TRUE@am__append_4 = memio.c -@BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE@am__append_5 = mmapio.c - -# Does the user want to use ffio, a replacement for posixio for Cray -# computers? -@USE_FFIO_TRUE@am__append_6 = ffio.c -@USE_FFIO_FALSE@@USE_STDIO_TRUE@am__append_7 = ncstdio.c -@USE_FFIO_FALSE@@USE_STDIO_FALSE@am__append_8 = posixio.c -@USE_NETCDF4_TRUE@am__append_9 = -DNETCDF4=TRUE -@BUILD_DAP_TRUE@am__append_10 = -DDAP=TRUE -@BUILD_PARALLEL_TRUE@am__append_11 = -DPARALLEL_IO=TRUE -subdir = libsrc -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libnetcdf3_la_LIBADD = -am__libnetcdf3_la_SOURCES_DIST = v1hpg.c putget.c attr.c nc3dispatch.c \ - nc3internal.c var.c dim.c ncx.c nc_hashmap.c ncx.h lookup3.c \ - pstdint.h ncio.c ncio.h memio.c mmapio.c ffio.c ncstdio.c \ - posixio.c -@BUILD_DISKLESS_TRUE@am__objects_1 = libnetcdf3_la-memio.lo -@BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE@am__objects_2 = \ -@BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE@ libnetcdf3_la-mmapio.lo -@USE_FFIO_TRUE@am__objects_3 = libnetcdf3_la-ffio.lo -@USE_FFIO_FALSE@@USE_STDIO_TRUE@am__objects_4 = \ -@USE_FFIO_FALSE@@USE_STDIO_TRUE@ libnetcdf3_la-ncstdio.lo -@USE_FFIO_FALSE@@USE_STDIO_FALSE@am__objects_5 = \ -@USE_FFIO_FALSE@@USE_STDIO_FALSE@ libnetcdf3_la-posixio.lo -am_libnetcdf3_la_OBJECTS = libnetcdf3_la-v1hpg.lo \ - libnetcdf3_la-putget.lo libnetcdf3_la-attr.lo \ - libnetcdf3_la-nc3dispatch.lo libnetcdf3_la-nc3internal.lo \ - libnetcdf3_la-var.lo libnetcdf3_la-dim.lo libnetcdf3_la-ncx.lo \ - libnetcdf3_la-nc_hashmap.lo libnetcdf3_la-lookup3.lo \ - libnetcdf3_la-ncio.lo $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) $(am__objects_4) $(am__objects_5) -libnetcdf3_la_OBJECTS = $(am_libnetcdf3_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libnetcdf3_la-attr.Plo \ - ./$(DEPDIR)/libnetcdf3_la-dim.Plo \ - ./$(DEPDIR)/libnetcdf3_la-ffio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-lookup3.Plo \ - ./$(DEPDIR)/libnetcdf3_la-memio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-mmapio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo \ - ./$(DEPDIR)/libnetcdf3_la-nc3internal.Plo \ - ./$(DEPDIR)/libnetcdf3_la-nc_hashmap.Plo \ - ./$(DEPDIR)/libnetcdf3_la-ncio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-ncstdio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-ncx.Plo \ - ./$(DEPDIR)/libnetcdf3_la-posixio.Plo \ - ./$(DEPDIR)/libnetcdf3_la-putget.Plo \ - ./$(DEPDIR)/libnetcdf3_la-v1hpg.Plo \ - ./$(DEPDIR)/libnetcdf3_la-var.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libnetcdf3_la_SOURCES) -DIST_SOURCES = $(am__libnetcdf3_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man3dir = $(mandir)/man3 -am__installdirs = "$(DESTDIR)$(man3dir)" -NROFF = nroff -MANS = $(man_MANS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ -libnetcdf3_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3) - -# These files comprise the netCDF-3 classic library code. -libnetcdf3_la_SOURCES = v1hpg.c putget.c attr.c nc3dispatch.c \ - nc3internal.c var.c dim.c ncx.c nc_hashmap.c ncx.h lookup3.c \ - pstdint.h ncio.c ncio.h $(am__append_4) $(am__append_5) \ - $(am__append_6) $(am__append_7) $(am__append_8) -noinst_LTLIBRARIES = libnetcdf3.la - -# These files are cleaned on developer workstations (and then rebuilt -# with m4), but they are included in the distribution so that the user -# does not have to have m4. -MAINTAINERCLEANFILES = $(man_MANS) attrx.c ncx.c putgetx.c -EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt XGetopt.c - -# The C API man page. -man_MANS = netcdf.3 - -# Decide what goes in the man page, based on user configure options. -ARGS_MANPAGE = -DAPI=C $(am__append_9) $(am__append_10) \ - $(am__append_11) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .m4 .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 libsrc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libsrc/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libnetcdf3.la: $(libnetcdf3_la_OBJECTS) $(libnetcdf3_la_DEPENDENCIES) $(EXTRA_libnetcdf3_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libnetcdf3_la_OBJECTS) $(libnetcdf3_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-attr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-dim.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-ffio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-lookup3.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-memio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-mmapio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-nc3internal.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-nc_hashmap.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-ncio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-ncstdio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-ncx.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-posixio.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-putget.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-v1hpg.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf3_la-var.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libnetcdf3_la-v1hpg.lo: v1hpg.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-v1hpg.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-v1hpg.Tpo -c -o libnetcdf3_la-v1hpg.lo `test -f 'v1hpg.c' || echo '$(srcdir)/'`v1hpg.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-v1hpg.Tpo $(DEPDIR)/libnetcdf3_la-v1hpg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v1hpg.c' object='libnetcdf3_la-v1hpg.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-v1hpg.lo `test -f 'v1hpg.c' || echo '$(srcdir)/'`v1hpg.c - -libnetcdf3_la-putget.lo: putget.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-putget.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-putget.Tpo -c -o libnetcdf3_la-putget.lo `test -f 'putget.c' || echo '$(srcdir)/'`putget.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-putget.Tpo $(DEPDIR)/libnetcdf3_la-putget.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='putget.c' object='libnetcdf3_la-putget.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-putget.lo `test -f 'putget.c' || echo '$(srcdir)/'`putget.c - -libnetcdf3_la-attr.lo: attr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-attr.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-attr.Tpo -c -o libnetcdf3_la-attr.lo `test -f 'attr.c' || echo '$(srcdir)/'`attr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-attr.Tpo $(DEPDIR)/libnetcdf3_la-attr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='attr.c' object='libnetcdf3_la-attr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-attr.lo `test -f 'attr.c' || echo '$(srcdir)/'`attr.c - -libnetcdf3_la-nc3dispatch.lo: nc3dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-nc3dispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-nc3dispatch.Tpo -c -o libnetcdf3_la-nc3dispatch.lo `test -f 'nc3dispatch.c' || echo '$(srcdir)/'`nc3dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-nc3dispatch.Tpo $(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc3dispatch.c' object='libnetcdf3_la-nc3dispatch.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-nc3dispatch.lo `test -f 'nc3dispatch.c' || echo '$(srcdir)/'`nc3dispatch.c - -libnetcdf3_la-nc3internal.lo: nc3internal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-nc3internal.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-nc3internal.Tpo -c -o libnetcdf3_la-nc3internal.lo `test -f 'nc3internal.c' || echo '$(srcdir)/'`nc3internal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-nc3internal.Tpo $(DEPDIR)/libnetcdf3_la-nc3internal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc3internal.c' object='libnetcdf3_la-nc3internal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-nc3internal.lo `test -f 'nc3internal.c' || echo '$(srcdir)/'`nc3internal.c - -libnetcdf3_la-var.lo: var.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-var.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-var.Tpo -c -o libnetcdf3_la-var.lo `test -f 'var.c' || echo '$(srcdir)/'`var.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-var.Tpo $(DEPDIR)/libnetcdf3_la-var.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='var.c' object='libnetcdf3_la-var.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-var.lo `test -f 'var.c' || echo '$(srcdir)/'`var.c - -libnetcdf3_la-dim.lo: dim.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-dim.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-dim.Tpo -c -o libnetcdf3_la-dim.lo `test -f 'dim.c' || echo '$(srcdir)/'`dim.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-dim.Tpo $(DEPDIR)/libnetcdf3_la-dim.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dim.c' object='libnetcdf3_la-dim.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-dim.lo `test -f 'dim.c' || echo '$(srcdir)/'`dim.c - -libnetcdf3_la-ncx.lo: ncx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ncx.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ncx.Tpo -c -o libnetcdf3_la-ncx.lo `test -f 'ncx.c' || echo '$(srcdir)/'`ncx.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ncx.Tpo $(DEPDIR)/libnetcdf3_la-ncx.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncx.c' object='libnetcdf3_la-ncx.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ncx.lo `test -f 'ncx.c' || echo '$(srcdir)/'`ncx.c - -libnetcdf3_la-nc_hashmap.lo: nc_hashmap.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-nc_hashmap.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-nc_hashmap.Tpo -c -o libnetcdf3_la-nc_hashmap.lo `test -f 'nc_hashmap.c' || echo '$(srcdir)/'`nc_hashmap.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-nc_hashmap.Tpo $(DEPDIR)/libnetcdf3_la-nc_hashmap.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc_hashmap.c' object='libnetcdf3_la-nc_hashmap.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-nc_hashmap.lo `test -f 'nc_hashmap.c' || echo '$(srcdir)/'`nc_hashmap.c - -libnetcdf3_la-lookup3.lo: lookup3.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-lookup3.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-lookup3.Tpo -c -o libnetcdf3_la-lookup3.lo `test -f 'lookup3.c' || echo '$(srcdir)/'`lookup3.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-lookup3.Tpo $(DEPDIR)/libnetcdf3_la-lookup3.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lookup3.c' object='libnetcdf3_la-lookup3.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-lookup3.lo `test -f 'lookup3.c' || echo '$(srcdir)/'`lookup3.c - -libnetcdf3_la-ncio.lo: ncio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ncio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ncio.Tpo -c -o libnetcdf3_la-ncio.lo `test -f 'ncio.c' || echo '$(srcdir)/'`ncio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ncio.Tpo $(DEPDIR)/libnetcdf3_la-ncio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncio.c' object='libnetcdf3_la-ncio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ncio.lo `test -f 'ncio.c' || echo '$(srcdir)/'`ncio.c - -libnetcdf3_la-memio.lo: memio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-memio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-memio.Tpo -c -o libnetcdf3_la-memio.lo `test -f 'memio.c' || echo '$(srcdir)/'`memio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-memio.Tpo $(DEPDIR)/libnetcdf3_la-memio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memio.c' object='libnetcdf3_la-memio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-memio.lo `test -f 'memio.c' || echo '$(srcdir)/'`memio.c - -libnetcdf3_la-mmapio.lo: mmapio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-mmapio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-mmapio.Tpo -c -o libnetcdf3_la-mmapio.lo `test -f 'mmapio.c' || echo '$(srcdir)/'`mmapio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-mmapio.Tpo $(DEPDIR)/libnetcdf3_la-mmapio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mmapio.c' object='libnetcdf3_la-mmapio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-mmapio.lo `test -f 'mmapio.c' || echo '$(srcdir)/'`mmapio.c - -libnetcdf3_la-ffio.lo: ffio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ffio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ffio.Tpo -c -o libnetcdf3_la-ffio.lo `test -f 'ffio.c' || echo '$(srcdir)/'`ffio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ffio.Tpo $(DEPDIR)/libnetcdf3_la-ffio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ffio.c' object='libnetcdf3_la-ffio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ffio.lo `test -f 'ffio.c' || echo '$(srcdir)/'`ffio.c - -libnetcdf3_la-ncstdio.lo: ncstdio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ncstdio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ncstdio.Tpo -c -o libnetcdf3_la-ncstdio.lo `test -f 'ncstdio.c' || echo '$(srcdir)/'`ncstdio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ncstdio.Tpo $(DEPDIR)/libnetcdf3_la-ncstdio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncstdio.c' object='libnetcdf3_la-ncstdio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ncstdio.lo `test -f 'ncstdio.c' || echo '$(srcdir)/'`ncstdio.c - -libnetcdf3_la-posixio.lo: posixio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-posixio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-posixio.Tpo -c -o libnetcdf3_la-posixio.lo `test -f 'posixio.c' || echo '$(srcdir)/'`posixio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-posixio.Tpo $(DEPDIR)/libnetcdf3_la-posixio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='posixio.c' object='libnetcdf3_la-posixio.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-posixio.lo `test -f 'posixio.c' || echo '$(srcdir)/'`posixio.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man3: $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(man_MANS)'; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ - done; } - -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.3[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(MANS) -installdirs: - for dir in "$(DESTDIR)$(man3dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libnetcdf3_la-attr.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-dim.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ffio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-lookup3.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-memio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-mmapio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc3internal.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc_hashmap.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncstdio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncx.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-posixio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-putget.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-v1hpg.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-var.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -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-man3 - -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 ./$(DEPDIR)/libnetcdf3_la-attr.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-dim.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ffio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-lookup3.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-memio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-mmapio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc3internal.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-nc_hashmap.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncstdio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-ncx.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-posixio.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-putget.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-v1hpg.Plo - -rm -f ./$(DEPDIR)/libnetcdf3_la-var.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man3 - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man3 \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-man uninstall-man3 - -.PRECIOUS: Makefile - - -# This tells make how to turn .m4 files into .c files. -.m4.c: - m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >${srcdir}/$@ - -# This rule generates the C manpage. -netcdf.3: $(top_srcdir)/docs/netcdf.m4 - m4 $(M4FLAGS) $(ARGS_MANPAGE) $? >$@ || rm $@ - -# 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/contrib/netcdf/4.4.1.1/libsrc/attr.c b/contrib/netcdf/4.4.1.1/libsrc/attr.c deleted file mode 100644 index f02d5b33274..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/attr.c +++ /dev/null @@ -1,1553 +0,0 @@ -/* Do not edit this file. It is produced from the corresponding .m4 source */ -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - */ - -#include "nc3internal.h" -#include "ncdispatch.h" -#include "nc3dispatch.h" -#include -#include -#include -#include "ncx.h" -#include "fbits.h" -#include "rnd.h" -#include "utf8proc.h" - - -/* - * Free attr - * Formerly -NC_free_attr() - */ -void -free_NC_attr(NC_attr *attrp) -{ - - if(attrp == NULL) - return; - free_NC_string(attrp->name); - free(attrp); -} - - -/* - * How much space will 'nelems' of 'type' take in - * external representation (as the values of an attribute)? - */ -static size_t -ncx_len_NC_attrV(nc_type type, size_t nelems) -{ - switch(type) { - case NC_BYTE: - case NC_CHAR: - return ncx_len_char(nelems); - case NC_SHORT: - return ncx_len_short(nelems); - case NC_INT: - return ncx_len_int(nelems); - case NC_FLOAT: - return ncx_len_float(nelems); - case NC_DOUBLE: - return ncx_len_double(nelems); - case NC_UBYTE: - return ncx_len_ubyte(nelems); - case NC_USHORT: - return ncx_len_ushort(nelems); - case NC_UINT: - return ncx_len_uint(nelems); - case NC_INT64: - return ncx_len_int64(nelems); - case NC_UINT64: - return ncx_len_uint64(nelems); - default: - assert("ncx_len_NC_attr bad type" == 0); - } - return 0; -} - - -NC_attr * -new_x_NC_attr( - NC_string *strp, - nc_type type, - size_t nelems) -{ - NC_attr *attrp; - const size_t xsz = ncx_len_NC_attrV(type, nelems); - size_t sz = M_RNDUP(sizeof(NC_attr)); - - assert(!(xsz == 0 && nelems != 0)); - - sz += xsz; - - attrp = (NC_attr *) malloc(sz); - if(attrp == NULL ) - return NULL; - - attrp->xsz = xsz; - - attrp->name = strp; - attrp->type = type; - attrp->nelems = nelems; - if(xsz != 0) - attrp->xvalue = (char *)attrp + M_RNDUP(sizeof(NC_attr)); - else - attrp->xvalue = NULL; - - return(attrp); -} - - -/* - * Formerly -NC_new_attr(name,type,count,value) - */ -static NC_attr * -new_NC_attr( - const char *uname, - nc_type type, - size_t nelems) -{ - NC_string *strp; - NC_attr *attrp; - - char *name = (char *)utf8proc_NFC((const unsigned char *)uname); - if(name == NULL) - return NULL; - assert(name != NULL && *name != 0); - - strp = new_NC_string(strlen(name), name); - free(name); - if(strp == NULL) - return NULL; - - attrp = new_x_NC_attr(strp, type, nelems); - if(attrp == NULL) - { - free_NC_string(strp); - return NULL; - } - - return(attrp); -} - - -static NC_attr * -dup_NC_attr(const NC_attr *rattrp) -{ - NC_attr *attrp = new_NC_attr(rattrp->name->cp, - rattrp->type, rattrp->nelems); - if(attrp == NULL) - return NULL; - if(attrp->xvalue != NULL && rattrp->xvalue != NULL) - (void) memcpy(attrp->xvalue, rattrp->xvalue, rattrp->xsz); - return attrp; -} - -/* attrarray */ - -/* - * Free the stuff "in" (referred to by) an NC_attrarray. - * Leaves the array itself allocated. - */ -void -free_NC_attrarrayV0(NC_attrarray *ncap) -{ - assert(ncap != NULL); - - if(ncap->nelems == 0) - return; - - assert(ncap->value != NULL); - - { - NC_attr **app = ncap->value; - NC_attr *const *const end = &app[ncap->nelems]; - for( /*NADA*/; app < end; app++) - { - free_NC_attr(*app); - *app = NULL; - } - } - ncap->nelems = 0; -} - - -/* - * Free NC_attrarray values. - * formerly -NC_free_array() - */ -void -free_NC_attrarrayV(NC_attrarray *ncap) -{ - assert(ncap != NULL); - - if(ncap->nalloc == 0) - return; - - assert(ncap->value != NULL); - - free_NC_attrarrayV0(ncap); - - free(ncap->value); - ncap->value = NULL; - ncap->nalloc = 0; -} - - -int -dup_NC_attrarrayV(NC_attrarray *ncap, const NC_attrarray *ref) -{ - int status = NC_NOERR; - - assert(ref != NULL); - assert(ncap != NULL); - - if(ref->nelems != 0) - { - const size_t sz = ref->nelems * sizeof(NC_attr *); - ncap->value = (NC_attr **) malloc(sz); - if(ncap->value == NULL) - return NC_ENOMEM; - - (void) memset(ncap->value, 0, sz); - ncap->nalloc = ref->nelems; - } - - ncap->nelems = 0; - { - NC_attr **app = ncap->value; - const NC_attr **drpp = (const NC_attr **)ref->value; - NC_attr *const *const end = &app[ref->nelems]; - for( /*NADA*/; app < end; drpp++, app++, ncap->nelems++) - { - *app = dup_NC_attr(*drpp); - if(*app == NULL) - { - status = NC_ENOMEM; - break; - } - } - } - - if(status != NC_NOERR) - { - free_NC_attrarrayV(ncap); - return status; - } - - assert(ncap->nelems == ref->nelems); - - return NC_NOERR; -} - - -/* - * Add a new handle on the end of an array of handles - * Formerly -NC_incr_array(array, tail) - */ -static int -incr_NC_attrarray(NC_attrarray *ncap, NC_attr *newelemp) -{ - NC_attr **vp; - - assert(ncap != NULL); - - if(ncap->nalloc == 0) - { - assert(ncap->nelems == 0); - vp = (NC_attr **) malloc(NC_ARRAY_GROWBY * sizeof(NC_attr *)); - if(vp == NULL) - return NC_ENOMEM; - - ncap->value = vp; - ncap->nalloc = NC_ARRAY_GROWBY; - } - else if(ncap->nelems +1 > ncap->nalloc) - { - vp = (NC_attr **) realloc(ncap->value, - (ncap->nalloc + NC_ARRAY_GROWBY) * sizeof(NC_attr *)); - if(vp == NULL) - return NC_ENOMEM; - - ncap->value = vp; - ncap->nalloc += NC_ARRAY_GROWBY; - } - - if(newelemp != NULL) - { - ncap->value[ncap->nelems] = newelemp; - ncap->nelems++; - } - return NC_NOERR; -} - - -NC_attr * -elem_NC_attrarray(const NC_attrarray *ncap, size_t elem) -{ - assert(ncap != NULL); - /* cast needed for braindead systems with signed size_t */ - if(ncap->nelems == 0 || (unsigned long) elem >= ncap->nelems) - return NULL; - - assert(ncap->value != NULL); - - return ncap->value[elem]; -} - -/* End attarray per se */ - -/* - * Given ncp and varid, return ptr to array of attributes - * else NULL on error - */ -static NC_attrarray * -NC_attrarray0(NC3_INFO* ncp, int varid) -{ - NC_attrarray *ap; - - if(varid == NC_GLOBAL) /* Global attribute, attach to cdf */ - { - ap = &ncp->attrs; - } - else if(varid >= 0 && (size_t) varid < ncp->vars.nelems) - { - NC_var **vpp; - vpp = (NC_var **)ncp->vars.value; - vpp += varid; - ap = &(*vpp)->attrs; - } else { - ap = NULL; - } - return(ap); -} - - -/* - * Step thru NC_ATTRIBUTE array, seeking match on name. - * return match or NULL if Not Found or out of memory. - */ -NC_attr ** -NC_findattr(const NC_attrarray *ncap, const char *uname) -{ - NC_attr **attrpp; - size_t attrid; - size_t slen; - char *name; - - assert(ncap != NULL); - - if(ncap->nelems == 0) - return NULL; - - attrpp = (NC_attr **) ncap->value; - - /* normalized version of uname */ - name = (char *)utf8proc_NFC((const unsigned char *)uname); - if(name == NULL) - return NULL; /* TODO: need better way to indicate no memory */ - slen = strlen(name); - - for(attrid = 0; attrid < ncap->nelems; attrid++, attrpp++) - { - if(strlen((*attrpp)->name->cp) == slen && - strncmp((*attrpp)->name->cp, name, slen) == 0) - { - free(name); - return(attrpp); /* Normal return */ - } - } - free(name); - return(NULL); -} - - -/* - * Look up by ncid, varid and name, return NULL if not found - */ -static int -NC_lookupattr(int ncid, - int varid, - const char *name, /* attribute name */ - NC_attr **attrpp) /* modified on return */ -{ - int status; - NC* nc; - NC3_INFO *ncp; - NC_attrarray *ncap; - NC_attr **tmp; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - tmp = NC_findattr(ncap, name); - if(tmp == NULL) - return NC_ENOTATT; - - if(attrpp != NULL) - *attrpp = *tmp; - - return NC_NOERR; -} - -/* Public */ - -int -NC3_inq_attname(int ncid, int varid, int attnum, char *name) -{ - int status; - NC* nc; - NC3_INFO *ncp; - NC_attrarray *ncap; - NC_attr *attrp; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - attrp = elem_NC_attrarray(ncap, (size_t)attnum); - if(attrp == NULL) - return NC_ENOTATT; - - (void) strncpy(name, attrp->name->cp, attrp->name->nchars); - name[attrp->name->nchars] = 0; - - return NC_NOERR; -} - - -int -NC3_inq_attid(int ncid, int varid, const char *name, int *attnump) -{ - int status; - NC *nc; - NC3_INFO* ncp; - NC_attrarray *ncap; - NC_attr **attrpp; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - - attrpp = NC_findattr(ncap, name); - if(attrpp == NULL) - return NC_ENOTATT; - - if(attnump != NULL) - *attnump = (int)(attrpp - ncap->value); - - return NC_NOERR; -} - -int -NC3_inq_att(int ncid, - int varid, - const char *name, /* input, attribute name */ - nc_type *datatypep, - size_t *lenp) -{ - int status; - NC_attr *attrp; - - status = NC_lookupattr(ncid, varid, name, &attrp); - if(status != NC_NOERR) - return status; - - if(datatypep != NULL) - *datatypep = attrp->type; - if(lenp != NULL) - *lenp = attrp->nelems; - - return NC_NOERR; -} - - -int -NC3_rename_att( int ncid, int varid, const char *name, const char *unewname) -{ - int status; - NC *nc; - NC3_INFO* ncp; - NC_attrarray *ncap; - NC_attr **tmp; - NC_attr *attrp; - NC_string *newStr, *old; - char *newname; /* normalized version */ - - /* sortof inline clone of NC_lookupattr() */ - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - if(NC_readonly(ncp)) - return NC_EPERM; - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - status = NC_check_name(unewname); - if(status != NC_NOERR) - return status; - - tmp = NC_findattr(ncap, name); - if(tmp == NULL) - return NC_ENOTATT; - attrp = *tmp; - /* end inline clone NC_lookupattr() */ - - if(NC_findattr(ncap, unewname) != NULL) - { - /* name in use */ - return NC_ENAMEINUSE; - } - - old = attrp->name; - newname = (char *)utf8proc_NFC((const unsigned char *)unewname); - if(newname == NULL) - return NC_EBADNAME; - if(NC_indef(ncp)) - { - newStr = new_NC_string(strlen(newname), newname); - free(newname); - if( newStr == NULL) - return NC_ENOMEM; - attrp->name = newStr; - free_NC_string(old); - return NC_NOERR; - } - /* else */ - status = set_NC_string(old, newname); - free(newname); - if( status != NC_NOERR) - return status; - - set_NC_hdirty(ncp); - - if(NC_doHsync(ncp)) - { - status = NC_sync(ncp); - if(status != NC_NOERR) - return status; - } - - return NC_NOERR; -} - -int -NC3_del_att(int ncid, int varid, const char *uname) -{ - int status; - NC *nc; - NC3_INFO* ncp; - NC_attrarray *ncap; - NC_attr **attrpp; - NC_attr *old = NULL; - int attrid; - size_t slen; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - if(!NC_indef(ncp)) - return NC_ENOTINDEFINE; - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - { - char *name = (char *)utf8proc_NFC((const unsigned char *)uname); - if(name == NULL) - return NC_ENOMEM; - - /* sortof inline NC_findattr() */ - slen = strlen(name); - - attrpp = (NC_attr **) ncap->value; - for(attrid = 0; (size_t) attrid < ncap->nelems; attrid++, attrpp++) - { - if( slen == (*attrpp)->name->nchars && - strncmp(name, (*attrpp)->name->cp, slen) == 0) - { - old = *attrpp; - break; - } - } - free(name); - } - if( (size_t) attrid == ncap->nelems ) - return NC_ENOTATT; - /* end inline NC_findattr() */ - - /* shuffle down */ - for(attrid++; (size_t) attrid < ncap->nelems; attrid++) - { - *attrpp = *(attrpp + 1); - attrpp++; - } - *attrpp = NULL; - /* decrement count */ - ncap->nelems--; - - free_NC_attr(old); - - return NC_NOERR; -} - - -static int -ncx_pad_putn_Iuchar(void **xpp, size_t nelems, const uchar *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_uchar(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_uchar(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_uchar(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_uchar(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_uchar(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_uchar(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_uchar(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_uchar(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_uchar(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_uchar(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Iuchar invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Iuchar(const void **xpp, size_t nelems, uchar *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_uchar(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_uchar(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_uchar(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_uchar(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_uchar(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_uchar(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_uchar(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_uchar(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_uchar(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_uchar(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Iuchar invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Ischar(void **xpp, size_t nelems, const schar *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_schar(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_schar(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_schar(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_schar(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_schar(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_schar(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_schar(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_schar(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_schar(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_schar(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Ischar invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Ischar(const void **xpp, size_t nelems, schar *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_schar(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_schar(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_schar(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_schar(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_schar(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_schar(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_schar(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_schar(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_schar(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_schar(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Ischar invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Ishort(void **xpp, size_t nelems, const short *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_short(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_short(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_short(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_short(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_short(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_short(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_short(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_short(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_short(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_short(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Ishort invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Ishort(const void **xpp, size_t nelems, short *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_short(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_short(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_short(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_short(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_short(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_short(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_short(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_short(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_short(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_short(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Ishort invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Iint(void **xpp, size_t nelems, const int *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_int(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_int(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_int(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_int(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_int(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_int(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_int(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_int(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_int(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_int(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Iint invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Iint(const void **xpp, size_t nelems, int *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_int(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_int(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_int(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_int(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_int(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_int(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_int(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_int(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_int(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_int(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Iint invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Ifloat(void **xpp, size_t nelems, const float *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_float(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_float(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_float(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_float(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_float(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_float(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_float(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_float(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_float(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_float(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Ifloat invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Ifloat(const void **xpp, size_t nelems, float *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_float(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_float(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_float(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_float(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_float(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_float(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_float(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_float(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_float(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_float(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Ifloat invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Idouble(void **xpp, size_t nelems, const double *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_double(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_double(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_double(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_double(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_double(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_double(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_double(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_double(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_double(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_double(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Idouble invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Idouble(const void **xpp, size_t nelems, double *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_double(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_double(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_double(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_double(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_double(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_double(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_double(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_double(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_double(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_double(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Idouble invalid type" == 0); - } - return NC_EBADTYPE; -} - - -#ifdef IGNORE -static int -ncx_pad_putn_Ilong(void **xpp, size_t nelems, const long *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_long(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_long(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_long(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_long(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_long(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_long(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_long(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_long(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_long(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_long(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Ilong invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Ilong(const void **xpp, size_t nelems, long *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_long(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_long(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_long(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_long(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_long(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_long(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_long(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_long(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_long(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_long(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Ilong invalid type" == 0); - } - return NC_EBADTYPE; -} - -#endif - -static int -ncx_pad_putn_Ilonglong(void **xpp, size_t nelems, const longlong *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_longlong(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_longlong(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_longlong(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_longlong(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_longlong(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_longlong(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_longlong(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_longlong(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_longlong(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_longlong(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Ilonglong invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Ilonglong(const void **xpp, size_t nelems, longlong *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_longlong(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_longlong(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_longlong(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_longlong(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_longlong(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_longlong(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_longlong(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_longlong(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_longlong(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_longlong(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Ilonglong invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Iushort(void **xpp, size_t nelems, const ushort *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_ushort(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_ushort(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_ushort(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_ushort(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_ushort(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_ushort(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_ushort(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_ushort(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_ushort(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_ushort(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Iushort invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Iushort(const void **xpp, size_t nelems, ushort *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_ushort(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_ushort(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_ushort(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_ushort(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_ushort(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_ushort(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_ushort(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_ushort(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_ushort(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_ushort(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Iushort invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Iuint(void **xpp, size_t nelems, const uint *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_uint(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_uint(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_uint(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_uint(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_uint(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_uint(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_uint(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_uint(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_uint(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_uint(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Iuint invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Iuint(const void **xpp, size_t nelems, uint *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_uint(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_uint(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_uint(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_uint(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_uint(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_uint(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_uint(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_uint(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_uint(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_uint(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Iuint invalid type" == 0); - } - return NC_EBADTYPE; -} - - -static int -ncx_pad_putn_Iulonglong(void **xpp, size_t nelems, const ulonglong *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_putn_schar_ulonglong(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_putn_short_ulonglong(xpp, nelems, tp); - case NC_INT: - return ncx_putn_int_ulonglong(xpp, nelems, tp); - case NC_FLOAT: - return ncx_putn_float_ulonglong(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_putn_double_ulonglong(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_putn_uchar_ulonglong(xpp, nelems, tp); - case NC_USHORT: - return ncx_putn_ushort_ulonglong(xpp, nelems, tp); - case NC_UINT: - return ncx_putn_uint_ulonglong(xpp, nelems, tp); - case NC_INT64: - return ncx_putn_longlong_ulonglong(xpp, nelems, tp); - case NC_UINT64: - return ncx_putn_ulonglong_ulonglong(xpp, nelems, tp); - default: - assert("ncx_pad_putn_Iulonglong invalid type" == 0); - } - return NC_EBADTYPE; -} - -static int -ncx_pad_getn_Iulonglong(const void **xpp, size_t nelems, ulonglong *tp, nc_type type) -{ - switch(type) { - case NC_CHAR: - return NC_ECHAR; - case NC_BYTE: - return ncx_pad_getn_schar_ulonglong(xpp, nelems, tp); - case NC_SHORT: - return ncx_pad_getn_short_ulonglong(xpp, nelems, tp); - case NC_INT: - return ncx_getn_int_ulonglong(xpp, nelems, tp); - case NC_FLOAT: - return ncx_getn_float_ulonglong(xpp, nelems, tp); - case NC_DOUBLE: - return ncx_getn_double_ulonglong(xpp, nelems, tp); - case NC_UBYTE: - return ncx_pad_getn_uchar_ulonglong(xpp, nelems, tp); - case NC_USHORT: - return ncx_getn_ushort_ulonglong(xpp, nelems, tp); - case NC_UINT: - return ncx_getn_uint_ulonglong(xpp, nelems, tp); - case NC_INT64: - return ncx_getn_longlong_ulonglong(xpp, nelems, tp); - case NC_UINT64: - return ncx_getn_ulonglong_ulonglong(xpp, nelems, tp); - default: - assert("ncx_pad_getn_Iulonglong invalid type" == 0); - } - return NC_EBADTYPE; -} - - - -/* Common dispatcher for put cases */ -static int -dispatchput(void **xpp, size_t nelems, const void* tp, - nc_type atype, nc_type memtype) -{ - switch (memtype) { - case NC_CHAR: - return ncx_pad_putn_text(xpp,nelems, (char *)tp); - case NC_BYTE: - return ncx_pad_putn_Ischar(xpp, nelems, (schar*)tp, atype); - case NC_SHORT: - return ncx_pad_putn_Ishort(xpp, nelems, (short*)tp, atype); - case NC_INT: - return ncx_pad_putn_Iint(xpp, nelems, (int*)tp, atype); - case NC_FLOAT: - return ncx_pad_putn_Ifloat(xpp, nelems, (float*)tp, atype); - case NC_DOUBLE: - return ncx_pad_putn_Idouble(xpp, nelems, (double*)tp, atype); - case NC_UBYTE: /*Synthetic*/ - return ncx_pad_putn_Iuchar(xpp,nelems, (uchar *)tp, atype); - case NC_INT64: - return ncx_pad_putn_Ilonglong(xpp, nelems, (longlong*)tp, atype); - case NC_USHORT: - return ncx_pad_putn_Iushort(xpp, nelems, (ushort*)tp, atype); - case NC_UINT: - return ncx_pad_putn_Iuint(xpp, nelems, (uint*)tp, atype); - case NC_UINT64: - return ncx_pad_putn_Iulonglong(xpp, nelems, (ulonglong*)tp, atype); - case NC_NAT: - return NC_EBADTYPE; - default: - break; - } - return NC_EBADTYPE; -} - -int -NC3_put_att( - int ncid, - int varid, - const char *name, - nc_type type, - size_t nelems, - const void *value, - nc_type memtype) -{ - int status; - NC *nc; - NC3_INFO* ncp; - NC_attrarray *ncap; - NC_attr **attrpp; - NC_attr *old = NULL; - NC_attr *attrp; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - ncp = NC3_DATA(nc); - - if(NC_readonly(ncp)) - return NC_EPERM; - - ncap = NC_attrarray0(ncp, varid); - if(ncap == NULL) - return NC_ENOTVAR; - - status = nc3_cktype(nc->mode, type); - if(status != NC_NOERR) - return status; - - if(memtype == NC_NAT) memtype = type; - - if(memtype != NC_CHAR && type == NC_CHAR) - return NC_ECHAR; - if(memtype == NC_CHAR && type != NC_CHAR) - return NC_ECHAR; - - /* cast needed for braindead systems with signed size_t */ - if((unsigned long) nelems > X_INT_MAX) /* backward compat */ - return NC_EINVAL; /* Invalid nelems */ - - if(nelems != 0 && value == NULL) - return NC_EINVAL; /* Null arg */ - - attrpp = NC_findattr(ncap, name); - - /* 4 cases: exists X indef */ - - if(attrpp != NULL) { /* name in use */ - if(!NC_indef(ncp)) { - const size_t xsz = ncx_len_NC_attrV(type, nelems); - attrp = *attrpp; /* convenience */ - - if(xsz > attrp->xsz) return NC_ENOTINDEFINE; - /* else, we can reuse existing without redef */ - - attrp->xsz = xsz; - attrp->type = type; - attrp->nelems = nelems; - - if(nelems != 0) { - void *xp = attrp->xvalue; - status = dispatchput(&xp, nelems, (const void*)value, type, memtype); - } - - set_NC_hdirty(ncp); - - if(NC_doHsync(ncp)) { - const int lstatus = NC_sync(ncp); - /* - * N.B.: potentially overrides NC_ERANGE - * set by ncx_pad_putn_I$1 - */ - if(lstatus != NC_NOERR) return lstatus; - } - - return status; - } - /* else, redefine using existing array slot */ - old = *attrpp; - } else { - if(!NC_indef(ncp)) return NC_ENOTINDEFINE; - - if(ncap->nelems >= NC_MAX_ATTRS) return NC_EMAXATTS; - } - - status = NC_check_name(name); - if(status != NC_NOERR) return status; - - attrp = new_NC_attr(name, type, nelems); - if(attrp == NULL) return NC_ENOMEM; - - if(nelems != 0) { - void *xp = attrp->xvalue; - status = dispatchput(&xp, nelems, (const void*)value, type, memtype); - } - - if(attrpp != NULL) { - *attrpp = attrp; - if(old != NULL) - free_NC_attr(old); - } else { - const int lstatus = incr_NC_attrarray(ncap, attrp); - /* - * N.B.: potentially overrides NC_ERANGE - * set by ncx_pad_putn_I$1 - */ - if(lstatus != NC_NOERR) { - free_NC_attr(attrp); - return lstatus; - } - } - return status; -} - -int -NC3_get_att( - int ncid, - int varid, - const char *name, - void *value, - nc_type memtype) -{ - int status; - NC_attr *attrp; - const void *xp; - - status = NC_lookupattr(ncid, varid, name, &attrp); - if(status != NC_NOERR) return status; - - if(attrp->nelems == 0) return NC_NOERR; - - if(memtype == NC_NAT) memtype = attrp->type; - - if(memtype != NC_CHAR && attrp->type == NC_CHAR) - return NC_ECHAR; - if(memtype == NC_CHAR && attrp->type != NC_CHAR) - return NC_ECHAR; - - xp = attrp->xvalue; - switch (memtype) { - case NC_CHAR: - return ncx_pad_getn_text(&xp, attrp->nelems , (char *)value); - case NC_BYTE: - return ncx_pad_getn_Ischar(&xp,attrp->nelems,(schar*)value,attrp->type); - case NC_SHORT: - return ncx_pad_getn_Ishort(&xp,attrp->nelems,(short*)value,attrp->type); - case NC_INT: - return ncx_pad_getn_Iint(&xp,attrp->nelems,(int*)value,attrp->type); - case NC_FLOAT: - return ncx_pad_getn_Ifloat(&xp,attrp->nelems,(float*)value,attrp->type); - case NC_DOUBLE: - return ncx_pad_getn_Idouble(&xp,attrp->nelems,(double*)value,attrp->type); - case NC_INT64: - return ncx_pad_getn_Ilonglong(&xp,attrp->nelems,(longlong*)value,attrp->type); - case NC_UBYTE: /* Synthetic */ - return ncx_pad_getn_Iuchar(&xp, attrp->nelems , (uchar *)value, attrp->type); - case NC_USHORT: - return ncx_pad_getn_Iushort(&xp,attrp->nelems,(ushort*)value,attrp->type); - case NC_UINT: - return ncx_pad_getn_Iuint(&xp,attrp->nelems,(uint*)value,attrp->type); - case NC_UINT64: - return ncx_pad_getn_Iulonglong(&xp,attrp->nelems,(ulonglong*)value,attrp->type); - - case NC_NAT: - return NC_EBADTYPE; - default: - break; - } - status = NC_EBADTYPE; - return status; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/memio.c b/contrib/netcdf/4.4.1.1/libsrc/memio.c deleted file mode 100644 index efcd0979b79..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/memio.c +++ /dev/null @@ -1,630 +0,0 @@ -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - */ -#if defined (_WIN32) || defined (_WIN64) -#include -#include -#include -#define lseek64 lseek -#endif - -#include "config.h" -#include -#include -#include -#include -#ifdef _MSC_VER /* Microsoft Compilers */ -#include -#else -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif -#include "ncdispatch.h" -#include "nc3internal.h" - -#undef DEBUG - -#ifdef DEBUG -#include -#endif - -#ifndef HAVE_SSIZE_T -#define ssize_t int -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#define SEEK_CUR 1 -#define SEEK_END 2 -#endif - -/* Define the mode flags for create: let umask rule */ -#define OPENMODE 0666 - -#include "ncio.h" -#include "fbits.h" -#include "rnd.h" - -/* #define INSTRUMENT 1 */ -#if INSTRUMENT /* debugging */ -#undef NDEBUG -#include -#include "instr.h" -#endif - -#ifndef MEMIO_MAXBLOCKSIZE -#define MEMIO_MAXBLOCKSIZE 268435456 /* sanity check, about X_SIZE_T_MAX/8 */ -#endif - -#undef MIN /* system may define MIN somewhere and complain */ -#define MIN(mm,nn) (((mm) < (nn)) ? (mm) : (nn)) - -#if !defined(NDEBUG) && !defined(X_INT_MAX) -#define X_INT_MAX 2147483647 -#endif - -#if 0 /* !defined(NDEBUG) && !defined(X_ALIGN) */ -#define X_ALIGN 4 -#else -#undef X_ALIGN -#endif - -/* Private data for memio */ - -typedef struct NCMEMIO { - int locked; /* => we cannot realloc */ - int persist; /* => save to a file; triggered by NC_WRITE */ - char* memory; - off_t alloc; - off_t size; - off_t pos; -} NCMEMIO; - -/* Forward */ -static int memio_rel(ncio *const nciop, off_t offset, int rflags); -static int memio_get(ncio *const nciop, off_t offset, size_t extent, int rflags, void **const vpp); -static int memio_move(ncio *const nciop, off_t to, off_t from, size_t nbytes, int rflags); -static int memio_sync(ncio *const nciop); -static int memio_filesize(ncio* nciop, off_t* filesizep); -static int memio_pad_length(ncio* nciop, off_t length); -static int memio_close(ncio* nciop, int); - -/* Mnemonic */ -#define DOOPEN 1 - -static long pagesize = 0; - -/*! Create a new ncio struct to hold info about the file. */ -static int memio_new(const char* path, int ioflags, off_t initialsize, void* memory, ncio** nciopp, NCMEMIO** memiop) -{ - int status = NC_NOERR; - ncio* nciop = NULL; - NCMEMIO* memio = NULL; - off_t minsize = initialsize; - int inmemory = (fIsSet(ioflags,NC_INMEMORY)); - - /* use asserts because this is an internal function */ - assert(memiop != NULL && nciopp != NULL); - assert(path != NULL || (memory != NULL && initialsize > 0)); - assert(!inmemory || (memory != NULL && initialsize > 0)); - - if(pagesize == 0) { -#if defined (_WIN32) || defined(_WIN64) - SYSTEM_INFO info; - GetSystemInfo (&info); - pagesize = info.dwPageSize; -#elif defined HAVE_SYSCONF - pagesize = sysconf(_SC_PAGE_SIZE); -#elif defined HAVE_GETPAGESIZE - pagesize = getpagesize(); -#else - pagesize = 4096; /* good guess */ -#endif - } - - /* We need to catch errors. - sysconf, at least, can return a negative value - when there is an error. */ - if(pagesize < 0) { - status = NC_EIO; - goto fail; - } - - errno = 0; - - /* Always force the allocated size to be a multiple of pagesize */ - if(initialsize == 0) initialsize = pagesize; - if((initialsize % pagesize) != 0) - initialsize += (pagesize - (initialsize % pagesize)); - - nciop = (ncio* )calloc(1,sizeof(ncio)); - if(nciop == NULL) {status = NC_ENOMEM; goto fail;} - - nciop->ioflags = ioflags; - *((int*)&nciop->fd) = -1; /* caller will fix */ - - *((ncio_relfunc**)&nciop->rel) = memio_rel; - *((ncio_getfunc**)&nciop->get) = memio_get; - *((ncio_movefunc**)&nciop->move) = memio_move; - *((ncio_syncfunc**)&nciop->sync) = memio_sync; - *((ncio_filesizefunc**)&nciop->filesize) = memio_filesize; - *((ncio_pad_lengthfunc**)&nciop->pad_length) = memio_pad_length; - *((ncio_closefunc**)&nciop->close) = memio_close; - - memio = (NCMEMIO*)calloc(1,sizeof(NCMEMIO)); - if(memio == NULL) {status = NC_ENOMEM; goto fail;} - *((void* *)&nciop->pvt) = memio; - - *((char**)&nciop->path) = strdup(path); - if(nciop->path == NULL) {status = NC_ENOMEM; goto fail;} - memio->alloc = initialsize; - memio->pos = 0; - memio->size = minsize; - memio->memory = NULL; - memio->persist = fIsSet(ioflags,NC_WRITE); - if(memiop && memio) *memiop = memio; else free(memio); - if(nciopp && nciop) *nciopp = nciop; - else { - if(nciop->path != NULL) free((char*)nciop->path); - free(nciop); - } - if(inmemory) { - memio->memory = memory; - } else { - /* malloc memory */ - memio->memory = (char*)malloc(memio->alloc); - if(memio->memory == NULL) {status = NC_ENOMEM; goto fail;} - } - -done: - return status; - -fail: - if(memio != NULL) free(memio); - if(nciop != NULL) { - if(nciop->path != NULL) free((char*)nciop->path); - free(nciop); - } - goto done; -} - -/* Create a file, and the ncio struct to go with it. - - path - path of file to create. - ioflags - flags from nc_create - initialsz - From the netcdf man page: "The argument - initialsize sets the initial size of the file at creation time." - igeto - - igetsz - - sizehintp - the size of a page of data for buffered reads and writes. - parameters - arbitrary data - nciopp - pointer to a pointer that will get location of newly - created and inited ncio struct. - mempp - pointer to pointer to the initial memory read. -*/ -int -memio_create(const char* path, int ioflags, - size_t initialsz, - off_t igeto, size_t igetsz, size_t* sizehintp, - void* parameters, - ncio* *nciopp, void** const mempp) -{ - ncio* nciop; - int fd; - int status; - NCMEMIO* memio = NULL; - int persist = (ioflags & NC_WRITE?1:0); - int oflags; - - if(path == NULL ||* path == 0) - return NC_EINVAL; - - status = memio_new(path, ioflags, initialsz, NULL, &nciop, &memio); - if(status != NC_NOERR) - return status; - - if(persist) { - /* Open the file just tomake sure we can write it if needed */ - oflags = (persist ? O_RDWR : O_RDONLY); -#ifdef O_BINARY - fSet(oflags, O_BINARY); -#endif - oflags |= (O_CREAT|O_TRUNC); - if(fIsSet(ioflags,NC_NOCLOBBER)) - oflags |= O_EXCL; -#ifdef vms - fd = open(path, oflags, 0, "ctx=stm"); -#else - fd = open(path, oflags, OPENMODE); -#endif - if(fd < 0) {status = errno; goto unwind_open;} - - (void)close(fd); /* will reopen at nc_close */ - } /*!persist*/ - -#ifdef DEBUG -fprintf(stderr,"memio_create: initial memory: %lu/%lu\n",(unsigned long)memio->memory,(unsigned long)memio->alloc); -#endif - - fd = nc__pseudofd(); - *((int* )&nciop->fd) = fd; - - fSet(nciop->ioflags, NC_WRITE); - - if(igetsz != 0) - { - status = nciop->get(nciop, - igeto, igetsz, - RGN_WRITE, - mempp); - if(status != NC_NOERR) - goto unwind_open; - } - - /* Pick a default sizehint */ - if(sizehintp) *sizehintp = pagesize; - - *nciopp = nciop; - return NC_NOERR; - -unwind_open: - memio_close(nciop,1); - return status; -} - -/* This function opens the data file. - - path - path of data file. - ioflags - flags passed into nc_open. - igeto - looks like this function can do an initial page get, and - igeto is going to be the offset for that. But it appears to be - unused - igetsz - the size in bytes of initial page get (a.k.a. extent). Not - ever used in the library. - sizehintp - the size of a page of data for buffered reads and writes. - parameters - arbitrary data - nciopp - pointer to pointer that will get address of newly created - and inited ncio struct. - mempp - pointer to pointer to the initial memory read. -*/ -int -memio_open(const char* path, - int ioflags, - off_t igeto, size_t igetsz, size_t* sizehintp, - void* parameters, - ncio* *nciopp, void** const mempp) -{ - ncio* nciop = NULL; - int fd = -1; - int status = NC_NOERR; - int persist = (fIsSet(ioflags,NC_WRITE)?1:0); - int inmemory = (fIsSet(ioflags,NC_INMEMORY)); - int oflags = 0; - NCMEMIO* memio = NULL; - size_t sizehint = 0; - off_t filesize = 0; - off_t red = 0; - char* pos = NULL; - NC_MEM_INFO* meminfo = (NC_MEM_INFO*)parameters; - - if(path == NULL || strlen(path) == 0) - return NC_EINVAL; - - assert(sizehintp != NULL); - sizehint = *sizehintp; - - if(inmemory) { - filesize = meminfo->size; - } else { - /* Open the file,and make sure we can write it if needed */ - oflags = (persist ? O_RDWR : O_RDONLY); -#ifdef O_BINARY - fSet(oflags, O_BINARY); -#endif - oflags |= O_EXCL; -#ifdef vms - fd = open(path, oflags, 0, "ctx=stm"); -#else - fd = open(path, oflags, OPENMODE); -#endif -#ifdef DEBUG - if(fd < 0) { - fprintf(stderr,"open failed: file=%s err=",path); - perror(""); - } -#endif - if(fd < 0) {status = errno; goto unwind_open;} - - /* get current filesize = max(|file|,initialize)*/ - filesize = lseek(fd,0,SEEK_END); - if(filesize < 0) {status = errno; goto unwind_open;} - /* move pointer back to beginning of file */ - (void)lseek(fd,0,SEEK_SET); - if(filesize < (off_t)sizehint) - filesize = (off_t)sizehint; - } - - if(inmemory) - status = memio_new(path, ioflags, filesize, meminfo->memory, &nciop, &memio); - else - status = memio_new(path, ioflags, filesize, NULL, &nciop, &memio); - if(status != NC_NOERR) { - if(fd >= 0) - close(fd); - return status; - } - -#ifdef DEBUG -fprintf(stderr,"memio_open: initial memory: %lu/%lu\n",(unsigned long)memio->memory,(unsigned long)memio->alloc); -#endif - - if(!inmemory) { - /* Read the file into the memio memory */ - /* We need to do multiple reads because there is no - guarantee that the amount read will be the full amount */ - red = memio->size; - pos = memio->memory; - while(red > 0) { - ssize_t count = read(fd, pos, red); - if(count < 0) {status = errno; goto unwind_open;} - if(count == 0) {status = NC_ENOTNC; goto unwind_open;} - red -= count; - pos += count; - } - (void)close(fd); - } - - /* Use half the filesize as the blocksize ; why? */ - sizehint = filesize/2; - - fd = nc__pseudofd(); - *((int* )&nciop->fd) = fd; - - if(igetsz != 0) - { - status = nciop->get(nciop, - igeto, igetsz, - 0, - mempp); - if(status != NC_NOERR) - goto unwind_open; - } - - if(sizehintp) *sizehintp = sizehint; - if(nciopp) *nciopp = nciop; else {ncio_close(nciop,0);} - return NC_NOERR; - -unwind_open: - if(fd >= 0) - close(fd); - memio_close(nciop,0); - return status; -} - -/* - * Get file size in bytes. - */ -static int -memio_filesize(ncio* nciop, off_t* filesizep) -{ - NCMEMIO* memio; - if(nciop == NULL || nciop->pvt == NULL) return NC_EINVAL; - memio = (NCMEMIO*)nciop->pvt; - if(filesizep != NULL) *filesizep = memio->size; - return NC_NOERR; -} - -/* - * Sync any changes to disk, then truncate or extend file so its size - * is length. This is only intended to be called before close, if the - * file is open for writing and the actual size does not match the - * calculated size, perhaps as the result of having been previously - * written in NOFILL mode. - */ -static int -memio_pad_length(ncio* nciop, off_t length) -{ - NCMEMIO* memio; - if(nciop == NULL || nciop->pvt == NULL) return NC_EINVAL; - memio = (NCMEMIO*)nciop->pvt; - - if(!fIsSet(nciop->ioflags, NC_WRITE)) - return EPERM; /* attempt to write readonly file*/ - - if(memio->locked > 0) - return NC_EDISKLESS; - - if(length > memio->alloc) { - /* Realloc the allocated memory to a multiple of the pagesize*/ - off_t newsize = length; - void* newmem = NULL; - /* Round to a multiple of pagesize */ - if((newsize % pagesize) != 0) - newsize += (pagesize - (newsize % pagesize)); - - newmem = (char*)realloc(memio->memory,newsize); - if(newmem == NULL) return NC_ENOMEM; - - /* zero out the extra memory */ - memset((void*)((char*)newmem+memio->alloc),0,(newsize - memio->alloc)); - -#ifdef DEBUG -fprintf(stderr,"realloc: %lu/%lu -> %lu/%lu\n", -(unsigned long)memio->memory,(unsigned long)memio->alloc, -(unsigned long)newmem,(unsigned long)newsize); -#endif - memio->memory = newmem; - memio->alloc = newsize; - } - memio->size = length; - return NC_NOERR; -} - -/*! Write out any dirty buffers to disk. - - Write out any dirty buffers to disk and ensure that next read will get data from disk. Sync any changes, then close the open file associated with the ncio struct, and free its memory. - - @param[in] nciop pointer to ncio to close. - @param[in] doUnlink if true, unlink file - @return NC_NOERR on success, error code on failure. -*/ - -static int -memio_close(ncio* nciop, int doUnlink) -{ - int status = NC_NOERR; - NCMEMIO* memio ; - int fd = -1; - int inmemory = 0; - - if(nciop == NULL || nciop->pvt == NULL) return NC_NOERR; - - inmemory = (fIsSet(nciop->ioflags,NC_INMEMORY)); - memio = (NCMEMIO*)nciop->pvt; - assert(memio != NULL); - - /* See if the user wants the contents persisted to a file */ - if(!inmemory && memio->persist) { - /* Try to open the file for writing */ - int oflags = O_WRONLY|O_CREAT|O_TRUNC; -#ifdef O_BINARY - fSet(oflags, O_BINARY); -#endif - fd = open(nciop->path, oflags, OPENMODE); - if(fd >= 0) { - /* We need to do multiple writes because there is no - guarantee that the amount written will be the full amount */ - off_t written = memio->size; - char* pos = memio->memory; - while(written > 0) { - ssize_t count = write(fd, pos, written); - if(count < 0) - {status = errno; goto done;} - if(count == 0) - {status = NC_ENOTNC; goto done;} - written -= count; - pos += count; - } - } else - status = errno; - } - -done: - if(!inmemory && memio->memory != NULL) - free(memio->memory); - /* do cleanup */ - if(fd >= 0) (void)close(fd); - if(memio != NULL) free(memio); - if(nciop->path != NULL) free((char*)nciop->path); - free(nciop); - return status; -} - -static int -guarantee(ncio* nciop, off_t endpoint) -{ - NCMEMIO* memio = (NCMEMIO*)nciop->pvt; - if(endpoint > memio->alloc) { - /* extend the allocated memory and size */ - int status = memio_pad_length(nciop,endpoint); - if(status != NC_NOERR) return status; - } - if(memio->size < endpoint) - memio->size = endpoint; - return NC_NOERR; -} - -/* - * Request that the region (offset, extent) - * be made available through *vpp. - */ -static int -memio_get(ncio* const nciop, off_t offset, size_t extent, int rflags, void** const vpp) -{ - int status = NC_NOERR; - NCMEMIO* memio; - if(nciop == NULL || nciop->pvt == NULL) return NC_EINVAL; - memio = (NCMEMIO*)nciop->pvt; - status = guarantee(nciop, offset+extent); - memio->locked++; - if(status != NC_NOERR) return status; - if(vpp) *vpp = memio->memory+offset; - return NC_NOERR; -} - -/* - * Like memmove(), safely move possibly overlapping data. - */ -static int -memio_move(ncio* const nciop, off_t to, off_t from, size_t nbytes, int ignored) -{ - int status = NC_NOERR; - NCMEMIO* memio; - - if(nciop == NULL || nciop->pvt == NULL) return NC_EINVAL; - memio = (NCMEMIO*)nciop->pvt; - if(from < to) { - /* extend if "to" is not currently allocated */ - status = guarantee(nciop,to+nbytes); - if(status != NC_NOERR) return status; - } - /* check for overlap */ - if((to + nbytes) > from || (from + nbytes) > to) { - /* Ranges overlap */ -#ifdef HAVE_MEMMOVE - memmove((void*)(memio->memory+to),(void*)(memio->memory+from),nbytes); -#else - off_t overlap; - off_t nbytes1; - if((from + nbytes) > to) { - overlap = ((from + nbytes) - to); /* # bytes of overlap */ - nbytes1 = (nbytes - overlap); /* # bytes of non-overlap */ - /* move the non-overlapping part */ - memcpy((void*)(memio->memory+(to+overlap)), - (void*)(memio->memory+(from+overlap)), - nbytes1); - /* move the overlapping part */ - memcpy((void*)(memio->memory+to), - (void*)(memio->memory+from), - overlap); - } else { /*((to + nbytes) > from) */ - overlap = ((to + nbytes) - from); /* # bytes of overlap */ - nbytes1 = (nbytes - overlap); /* # bytes of non-overlap */ - /* move the non-overlapping part */ - memcpy((void*)(memio->memory+to), - (void*)(memio->memory+from), - nbytes1); - /* move the overlapping part */ - memcpy((void*)(memio->memory+(to+nbytes1)), - (void*)(memio->memory+(from+nbytes1)), - overlap); - } -#endif - } else {/* no overlap */ - memcpy((void*)(memio->memory+to),(void*)(memio->memory+from),nbytes); - } - return status; -} - -static int -memio_rel(ncio* const nciop, off_t offset, int rflags) -{ - NCMEMIO* memio; - if(nciop == NULL || nciop->pvt == NULL) return NC_EINVAL; - memio = (NCMEMIO*)nciop->pvt; - memio->locked--; - return NC_NOERR; /* do nothing */ -} - -/* - * Write out any dirty buffers to disk and - * ensure that next read will get data from disk. - */ -static int -memio_sync(ncio* const nciop) -{ - return NC_NOERR; /* do nothing */ -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/nc3internal.c b/contrib/netcdf/4.4.1.1/libsrc/nc3internal.c deleted file mode 100644 index 13e83ced413..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/nc3internal.c +++ /dev/null @@ -1,1726 +0,0 @@ -/* - * Copyright 1996, Unuiversity Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - */ - -#include -#include -#include -#include -#if defined(LOCKNUMREC) /* && _CRAYMPP */ -# include -# include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif - -#include "nc3internal.h" -#include "rnd.h" -#include "ncx.h" - -/* These have to do with version numbers. */ -#define MAGIC_NUM_LEN 4 -#define VER_CLASSIC 1 -#define VER_64BIT_OFFSET 2 -#define VER_HDF5 3 - -#define NC_NUMRECS_OFFSET 4 - -/* For netcdf classic */ -#define NC_NUMRECS_EXTENT3 4 -/* For cdf5 */ -#define NC_NUMRECS_EXTENT5 8 - -static void -free_NC3INFO(NC3_INFO *nc3) -{ - if(nc3 == NULL) - return; - free_NC_dimarrayV(&nc3->dims); - free_NC_attrarrayV(&nc3->attrs); - free_NC_vararrayV(&nc3->vars); -#if _CRAYMPP && defined(LOCKNUMREC) - shfree(nc3); -#else - free(nc3); -#endif /* _CRAYMPP && LOCKNUMREC */ -} - -static NC3_INFO * -new_NC3INFO(const size_t *chunkp) -{ - NC3_INFO *ncp; - ncp = (NC3_INFO*)calloc(1,sizeof(NC3_INFO)); - if(ncp == NULL) return ncp; - ncp->chunk = chunkp != NULL ? *chunkp : NC_SIZEHINT_DEFAULT; - /* Note that ncp->xsz is not set yet because we do not know the file format */ - return ncp; -} - -static NC3_INFO * -dup_NC3INFO(const NC3_INFO *ref) -{ - NC3_INFO *ncp; - ncp = (NC3_INFO*)calloc(1,sizeof(NC3_INFO)); - if(ncp == NULL) return ncp; - - if(dup_NC_dimarrayV(&ncp->dims, &ref->dims) != NC_NOERR) - goto err; - if(dup_NC_attrarrayV(&ncp->attrs, &ref->attrs) != NC_NOERR) - goto err; - if(dup_NC_vararrayV(&ncp->vars, &ref->vars) != NC_NOERR) - goto err; - - ncp->xsz = ref->xsz; - ncp->begin_var = ref->begin_var; - ncp->begin_rec = ref->begin_rec; - ncp->recsize = ref->recsize; - NC_set_numrecs(ncp, NC_get_numrecs(ref)); - return ncp; -err: - free_NC3INFO(ncp); - return NULL; -} - - -/* - * Verify that this is a user nc_type - * Formerly NCcktype() - * Sense of the return is changed. - */ -int -nc3_cktype(int mode, nc_type type) -{ - if (mode & NC_CDF5) { /* CDF-5 format */ - if (type >= NC_BYTE && type < NC_STRING) return NC_NOERR; - } else if (mode & NC_64BIT_OFFSET) { /* CDF-2 format */ - if (type >= NC_BYTE && type <= NC_DOUBLE) return NC_NOERR; - } else if ((mode & NC_64BIT_OFFSET) == 0) { /* CDF-1 format */ - if (type >= NC_BYTE && type <= NC_DOUBLE) return NC_NOERR; - } - return(NC_EBADTYPE); -} - - -/* - * How many objects of 'type' - * will fit into xbufsize? - */ -size_t -ncx_howmany(nc_type type, size_t xbufsize) -{ - switch(type){ - case NC_BYTE: - case NC_CHAR: - return xbufsize; - case NC_SHORT: - return xbufsize/X_SIZEOF_SHORT; - case NC_INT: - return xbufsize/X_SIZEOF_INT; - case NC_FLOAT: - return xbufsize/X_SIZEOF_FLOAT; - case NC_DOUBLE: - return xbufsize/X_SIZEOF_DOUBLE; - case NC_UBYTE: - return xbufsize; - case NC_USHORT: - return xbufsize/X_SIZEOF_USHORT; - case NC_UINT: - return xbufsize/X_SIZEOF_UINT; - case NC_INT64: - return xbufsize/X_SIZEOF_LONGLONG; - case NC_UINT64: - return xbufsize/X_SIZEOF_ULONGLONG; - default: - assert("ncx_howmany: Bad type" == 0); - return(0); - } -} - -#define D_RNDUP(x, align) _RNDUP(x, (off_t)(align)) - -/* - * Compute each variable's 'begin' offset, - * update 'begin_rec' as well. - */ -static int -NC_begins(NC3_INFO* ncp, - size_t h_minfree, size_t v_align, - size_t v_minfree, size_t r_align) -{ - size_t ii, j; - int sizeof_off_t; - off_t index = 0; - NC_var **vpp; - NC_var *last = NULL; - NC_var *first_var = NULL; /* first "non-record" var */ - - - if(v_align == NC_ALIGN_CHUNK) - v_align = ncp->chunk; - if(r_align == NC_ALIGN_CHUNK) - r_align = ncp->chunk; - - if (fIsSet(ncp->flags, NC_64BIT_OFFSET) || fIsSet(ncp->flags, NC_64BIT_DATA)) { - sizeof_off_t = 8; - } else { - sizeof_off_t = 4; - } - - ncp->xsz = ncx_len_NC(ncp,sizeof_off_t); - - if(ncp->vars.nelems == 0) - return NC_NOERR; - - /* only (re)calculate begin_var if there is not sufficient space in header - or start of non-record variables is not aligned as requested by valign */ - if (ncp->begin_var < ncp->xsz + h_minfree || - ncp->begin_var != D_RNDUP(ncp->begin_var, v_align) ) - { - index = (off_t) ncp->xsz; - ncp->begin_var = D_RNDUP(index, v_align); - if(ncp->begin_var < index + h_minfree) - { - ncp->begin_var = D_RNDUP(index + (off_t)h_minfree, v_align); - } - } - - if (ncp->old != NULL) { - /* check whether the new begin_var is smaller */ - if (ncp->begin_var < ncp->old->begin_var) - ncp->begin_var = ncp->old->begin_var; - } - - index = ncp->begin_var; - - /* loop thru vars, first pass is for the 'non-record' vars */ - j = 0; - vpp = ncp->vars.value; - for(ii = 0; ii < ncp->vars.nelems ; ii++, vpp++) - { - if( IS_RECVAR(*vpp) ) - { - /* skip record variables on this pass */ - continue; - } - if (first_var == NULL) first_var = *vpp; - -#if 0 -fprintf(stderr, " VAR %d %s: %ld\n", ii, (*vpp)->name->cp, (long)index); -#endif - if( sizeof_off_t == 4 && (index > X_OFF_MAX || index < 0) ) - { - return NC_EVARSIZE; - } - (*vpp)->begin = index; - - if (ncp->old != NULL) { - /* move to the next fixed variable */ - for (; jold->vars.nelems; j++) { - if (!IS_RECVAR(ncp->old->vars.value[j])) - break; - } - - if (j < ncp->old->vars.nelems) { - if ((*vpp)->begin < ncp->old->vars.value[j]->begin) { - /* the first ncp->vars.nelems fixed variables - should be the same. If the new begin is smaller, - reuse the old begin */ - (*vpp)->begin = ncp->old->vars.value[j]->begin; - index = (*vpp)->begin; - } - j++; - } - } - - index += (*vpp)->len; - } - - if (ncp->old != NULL) { - /* check whether the new begin_rec is smaller */ - if (ncp->begin_rec < ncp->old->begin_rec) - ncp->begin_rec = ncp->old->begin_rec; - } - - /* only (re)calculate begin_rec if there is not sufficient - space at end of non-record variables or if start of record - variables is not aligned as requested by r_align */ - if (ncp->begin_rec < index + v_minfree || - ncp->begin_rec != D_RNDUP(ncp->begin_rec, r_align) ) - { - ncp->begin_rec = D_RNDUP(index, r_align); - if(ncp->begin_rec < index + v_minfree) - { - ncp->begin_rec = D_RNDUP(index + (off_t)v_minfree, r_align); - } - } - - if (first_var != NULL) - ncp->begin_var = first_var->begin; - else - ncp->begin_var = ncp->begin_rec; - - index = ncp->begin_rec; - - ncp->recsize = 0; - - /* loop thru vars, second pass is for the 'record' vars */ - j = 0; - vpp = (NC_var **)ncp->vars.value; - for(ii = 0; ii < ncp->vars.nelems; ii++, vpp++) - { - if( !IS_RECVAR(*vpp) ) - { - /* skip non-record variables on this pass */ - continue; - } - -#if 0 -fprintf(stderr, " REC %d %s: %ld\n", ii, (*vpp)->name->cp, (long)index); -#endif - if( sizeof_off_t == 4 && (index > X_OFF_MAX || index < 0) ) - { - return NC_EVARSIZE; - } - (*vpp)->begin = index; - - if (ncp->old != NULL) { - /* move to the next record variable */ - for (; jold->vars.nelems; j++) - if (IS_RECVAR(ncp->old->vars.value[j])) - break; - if (j < ncp->old->vars.nelems) { - if ((*vpp)->begin < ncp->old->vars.value[j]->begin) - /* if the new begin is smaller, use the old begin */ - (*vpp)->begin = ncp->old->vars.value[j]->begin; - j++; - } - } - - index += (*vpp)->len; - /* check if record size must fit in 32-bits */ -#if SIZEOF_OFF_T == SIZEOF_SIZE_T && SIZEOF_SIZE_T == 4 - if( ncp->recsize > X_UINT_MAX - (*vpp)->len ) - { - return NC_EVARSIZE; - } -#endif - if((*vpp)->len != UINT32_MAX) /* flag for vars >= 2**32 bytes */ - ncp->recsize += (*vpp)->len; - last = (*vpp); - } - - /* - * for special case of - */ - if(last != NULL) { - if(ncp->recsize == last->len) { /* exactly one record variable, pack value */ - ncp->recsize = *last->dsizes * last->xsz; - } else if(last->len == UINT32_MAX) { /* huge last record variable */ - ncp->recsize += *last->dsizes * last->xsz; - } - } - if(NC_IsNew(ncp)) - NC_set_numrecs(ncp, 0); - return NC_NOERR; -} - - -/* - * Read just the numrecs member. - * (A relatively expensive way to do things.) - */ -int -read_numrecs(NC3_INFO *ncp) -{ - int status = NC_NOERR; - const void *xp = NULL; - size_t new_nrecs = 0; - size_t old_nrecs = NC_get_numrecs(ncp); - size_t nc_numrecs_extent = NC_NUMRECS_EXTENT3; /* CDF-1 and CDF-2 */ - - assert(!NC_indef(ncp)); - - if (fIsSet(ncp->flags, NC_64BIT_DATA)) - nc_numrecs_extent = NC_NUMRECS_EXTENT5; /* CDF-5 */ - - status = ncio_get(ncp->nciop, - NC_NUMRECS_OFFSET, nc_numrecs_extent, 0, (void **)&xp);/* cast away const */ - if(status != NC_NOERR) - return status; - - if (fIsSet(ncp->flags, NC_64BIT_DATA)) { - long long tmp=0; - status = ncx_get_int64(&xp, &tmp); - new_nrecs = tmp; - } else - status = ncx_get_size_t(&xp, &new_nrecs); - - (void) ncio_rel(ncp->nciop, NC_NUMRECS_OFFSET, 0); - - if(status == NC_NOERR && old_nrecs != new_nrecs) - { - NC_set_numrecs(ncp, new_nrecs); - fClr(ncp->flags, NC_NDIRTY); - } - - return status; -} - - -/* - * Write out just the numrecs member. - * (A relatively expensive way to do things.) - */ -int -write_numrecs(NC3_INFO *ncp) -{ - int status = NC_NOERR; - void *xp = NULL; - size_t nc_numrecs_extent = NC_NUMRECS_EXTENT3; /* CDF-1 and CDF-2 */ - - assert(!NC_readonly(ncp)); - assert(!NC_indef(ncp)); - - if (fIsSet(ncp->flags, NC_64BIT_DATA)) - nc_numrecs_extent = NC_NUMRECS_EXTENT5; /* CDF-5 */ - - status = ncio_get(ncp->nciop, - NC_NUMRECS_OFFSET, nc_numrecs_extent, RGN_WRITE, &xp); - if(status != NC_NOERR) - return status; - - { - const size_t nrecs = NC_get_numrecs(ncp); - if (fIsSet(ncp->flags, NC_64BIT_DATA)) - status = ncx_put_int64(&xp, nrecs); - else - status = ncx_put_size_t(&xp, &nrecs); - } - - (void) ncio_rel(ncp->nciop, NC_NUMRECS_OFFSET, RGN_MODIFIED); - - if(status == NC_NOERR) - fClr(ncp->flags, NC_NDIRTY); - - return status; -} - - -/* - * Read in the header - * It is expensive. - */ -static int -read_NC(NC3_INFO *ncp) -{ - int status = NC_NOERR; - - free_NC_dimarrayV(&ncp->dims); - free_NC_attrarrayV(&ncp->attrs); - free_NC_vararrayV(&ncp->vars); - - status = nc_get_NC(ncp); - - if(status == NC_NOERR) - fClr(ncp->flags, NC_NDIRTY | NC_HDIRTY); - - return status; -} - - -/* - * Write out the header - */ -static int -write_NC(NC3_INFO *ncp) -{ - int status = NC_NOERR; - - assert(!NC_readonly(ncp)); - - status = ncx_put_NC(ncp, NULL, 0, 0); - - if(status == NC_NOERR) - fClr(ncp->flags, NC_NDIRTY | NC_HDIRTY); - - return status; -} - - -/* - * Write the header or the numrecs if necessary. - */ -int -NC_sync(NC3_INFO *ncp) -{ - assert(!NC_readonly(ncp)); - - if(NC_hdirty(ncp)) - { - return write_NC(ncp); - } - /* else */ - - if(NC_ndirty(ncp)) - { - return write_numrecs(ncp); - } - /* else */ - - return NC_NOERR; -} - - -/* - * Initialize the 'non-record' variables. - */ -static int -fillerup(NC3_INFO *ncp) -{ - int status = NC_NOERR; - size_t ii; - NC_var **varpp; - - assert(!NC_readonly(ncp)); - assert(NC_dofill(ncp)); - - /* loop thru vars */ - varpp = ncp->vars.value; - for(ii = 0; ii < ncp->vars.nelems; ii++, varpp++) - { - if(IS_RECVAR(*varpp)) - { - /* skip record variables */ - continue; - } - - status = fill_NC_var(ncp, *varpp, (*varpp)->len, 0); - if(status != NC_NOERR) - break; - } - return status; -} - -/* Begin endef */ - -/* - */ -static int -fill_added_recs(NC3_INFO *gnu, NC3_INFO *old) -{ - NC_var ** const gnu_varpp = (NC_var **)gnu->vars.value; - - const int old_nrecs = (int) NC_get_numrecs(old); - int recno = 0; - NC_var **vpp = gnu_varpp; - NC_var *const *const end = &vpp[gnu->vars.nelems]; - int numrecvars = 0; - - /* Determine if there is only one record variable. If so, we - must treat as a special case because there's no record padding */ - for(; vpp < end; vpp++) { - if(IS_RECVAR(*vpp)) { - numrecvars++; - } - } - - for(; recno < old_nrecs; recno++) - { - int varid = (int)old->vars.nelems; - for(; varid < (int)gnu->vars.nelems; varid++) - { - const NC_var *const gnu_varp = *(gnu_varpp + varid); - if(!IS_RECVAR(gnu_varp)) - { - /* skip non-record variables */ - continue; - } - /* else */ - { - size_t varsize = numrecvars == 1 ? gnu->recsize : gnu_varp->len; - const int status = fill_NC_var(gnu, gnu_varp, varsize, recno); - if(status != NC_NOERR) - return status; - } - } - } - return NC_NOERR; -} - -/* - */ -static int -fill_added(NC3_INFO *gnu, NC3_INFO *old) -{ - NC_var ** const gnu_varpp = (NC_var **)gnu->vars.value; - int varid = (int)old->vars.nelems; - - for(; varid < (int)gnu->vars.nelems; varid++) - { - const NC_var *const gnu_varp = *(gnu_varpp + varid); - if(IS_RECVAR(gnu_varp)) - { - /* skip record variables */ - continue; - } - /* else */ - { - const int status = fill_NC_var(gnu, gnu_varp, gnu_varp->len, 0); - if(status != NC_NOERR) - return status; - } - } - - return NC_NOERR; -} - - -/* - * Move the records "out". - * Fill as needed. - */ -static int -move_recs_r(NC3_INFO *gnu, NC3_INFO *old) -{ - int status; - int recno; - int varid; - NC_var **gnu_varpp = (NC_var **)gnu->vars.value; - NC_var **old_varpp = (NC_var **)old->vars.value; - NC_var *gnu_varp; - NC_var *old_varp; - off_t gnu_off; - off_t old_off; - const size_t old_nrecs = NC_get_numrecs(old); - - /* Don't parallelize this loop */ - for(recno = (int)old_nrecs -1; recno >= 0; recno--) - { - /* Don't parallelize this loop */ - for(varid = (int)old->vars.nelems -1; varid >= 0; varid--) - { - gnu_varp = *(gnu_varpp + varid); - if(!IS_RECVAR(gnu_varp)) - { - /* skip non-record variables on this pass */ - continue; - } - /* else */ - - /* else, a pre-existing variable */ - old_varp = *(old_varpp + varid); - gnu_off = gnu_varp->begin + (off_t)(gnu->recsize * recno); - old_off = old_varp->begin + (off_t)(old->recsize * recno); - - if(gnu_off == old_off) - continue; /* nothing to do */ - - assert(gnu_off > old_off); - - status = ncio_move(gnu->nciop, gnu_off, old_off, - old_varp->len, 0); - - if(status != NC_NOERR) - return status; - - } - } - - NC_set_numrecs(gnu, old_nrecs); - - return NC_NOERR; -} - - -/* - * Move the "non record" variables "out". - * Fill as needed. - */ -static int -move_vars_r(NC3_INFO *gnu, NC3_INFO *old) -{ - int err, status=NC_NOERR; - int varid; - NC_var **gnu_varpp = (NC_var **)gnu->vars.value; - NC_var **old_varpp = (NC_var **)old->vars.value; - NC_var *gnu_varp; - NC_var *old_varp; - off_t gnu_off; - off_t old_off; - - /* Don't parallelize this loop */ - for(varid = (int)old->vars.nelems -1; - varid >= 0; varid--) - { - gnu_varp = *(gnu_varpp + varid); - if(IS_RECVAR(gnu_varp)) - { - /* skip record variables on this pass */ - continue; - } - /* else */ - - old_varp = *(old_varpp + varid); - gnu_off = gnu_varp->begin; - old_off = old_varp->begin; - - if (gnu_off > old_off) { - err = ncio_move(gnu->nciop, gnu_off, old_off, - old_varp->len, 0); - if (status == NC_NOERR) status = err; - } - } - return status; -} - - -/* - * Given a valid ncp, return NC_EVARSIZE if any variable has a bad len - * (product of non-rec dim sizes too large), else return NC_NOERR. - */ -static int -NC_check_vlens(NC3_INFO *ncp) -{ - NC_var **vpp; - /* maximum permitted variable size (or size of one record's worth - of a record variable) in bytes. This is different for format 1 - and format 2. */ - size_t vlen_max; - size_t ii; - size_t large_vars_count; - size_t rec_vars_count; - int last = 0; - - if(ncp->vars.nelems == 0) - return NC_NOERR; - - if (fIsSet(ncp->flags,NC_64BIT_DATA)) { - /* CDF5 format allows many large vars */ - return NC_NOERR; - } - if (fIsSet(ncp->flags,NC_64BIT_OFFSET) && sizeof(off_t) > 4) { - /* CDF2 format and LFS */ - vlen_max = X_UINT_MAX - 3; /* "- 3" handles rounded-up size */ - } else { - /* CDF1 format */ - vlen_max = X_INT_MAX - 3; - } - /* Loop through vars, first pass is for non-record variables. */ - large_vars_count = 0; - rec_vars_count = 0; - vpp = ncp->vars.value; - for (ii = 0; ii < ncp->vars.nelems; ii++, vpp++) { - if( !IS_RECVAR(*vpp) ) { - last = 0; - if( NC_check_vlen(*vpp, vlen_max) == 0 ) { - large_vars_count++; - last = 1; - } - } else { - rec_vars_count++; - } - } - /* OK if last non-record variable size too large, since not used to - compute an offset */ - if( large_vars_count > 1) { /* only one "too-large" variable allowed */ - return NC_EVARSIZE; - } - /* and it has to be the last one */ - if( large_vars_count == 1 && last == 0) { - return NC_EVARSIZE; - } - if( rec_vars_count > 0 ) { - /* and if it's the last one, there can't be any record variables */ - if( large_vars_count == 1 && last == 1) { - return NC_EVARSIZE; - } - /* Loop through vars, second pass is for record variables. */ - large_vars_count = 0; - vpp = ncp->vars.value; - for (ii = 0; ii < ncp->vars.nelems; ii++, vpp++) { - if( IS_RECVAR(*vpp) ) { - last = 0; - if( NC_check_vlen(*vpp, vlen_max) == 0 ) { - large_vars_count++; - last = 1; - } - } - } - /* OK if last record variable size too large, since not used to - compute an offset */ - if( large_vars_count > 1) { /* only one "too-large" variable allowed */ - return NC_EVARSIZE; - } - /* and it has to be the last one */ - if( large_vars_count == 1 && last == 0) { - return NC_EVARSIZE; - } - } - return NC_NOERR; -} - - -/* - * End define mode. - * Common code for ncendef, ncclose(endef) - * Flushes I/O buffers. - */ -static int -NC_endef(NC3_INFO *ncp, - size_t h_minfree, size_t v_align, - size_t v_minfree, size_t r_align) -{ - int status = NC_NOERR; - - assert(!NC_readonly(ncp)); - assert(NC_indef(ncp)); - - status = NC_check_vlens(ncp); - if(status != NC_NOERR) - return status; - status = NC_begins(ncp, h_minfree, v_align, v_minfree, r_align); - if(status != NC_NOERR) - return status; - - if(ncp->old != NULL) - { - /* a plain redef, not a create */ - assert(!NC_IsNew(ncp)); - assert(fIsSet(ncp->flags, NC_INDEF)); - assert(ncp->begin_rec >= ncp->old->begin_rec); - assert(ncp->begin_var >= ncp->old->begin_var); - - if(ncp->vars.nelems != 0) - { - if(ncp->begin_rec > ncp->old->begin_rec) - { - status = move_recs_r(ncp, ncp->old); - if(status != NC_NOERR) - return status; - if(ncp->begin_var > ncp->old->begin_var) - { - status = move_vars_r(ncp, ncp->old); - if(status != NC_NOERR) - return status; - } - /* else if (ncp->begin_var == ncp->old->begin_var) { NOOP } */ - } - else - { - /* due to fixed variable alignment, it is possible that header - grows but begin_rec did not change */ - if(ncp->begin_var > ncp->old->begin_var) - { - status = move_vars_r(ncp, ncp->old); - if(status != NC_NOERR) - return status; - } - /* Even if (ncp->begin_rec == ncp->old->begin_rec) - and (ncp->begin_var == ncp->old->begin_var) - might still have added a new record variable */ - if(ncp->recsize > ncp->old->recsize) - { - status = move_recs_r(ncp, ncp->old); - if(status != NC_NOERR) - return status; - } - } - } - } - - status = write_NC(ncp); - if(status != NC_NOERR) - return status; - - if(NC_dofill(ncp)) - { - if(NC_IsNew(ncp)) - { - status = fillerup(ncp); - if(status != NC_NOERR) - return status; - - } - else if(ncp->old == NULL ? 0 - : (ncp->vars.nelems > ncp->old->vars.nelems)) - { - status = fill_added(ncp, ncp->old); - if(status != NC_NOERR) - return status; - status = fill_added_recs(ncp, ncp->old); - if(status != NC_NOERR) - return status; - } - } - - if(ncp->old != NULL) - { - free_NC3INFO(ncp->old); - ncp->old = NULL; - } - - fClr(ncp->flags, NC_CREAT | NC_INDEF); - - return ncio_sync(ncp->nciop); -} - -#ifdef LOCKNUMREC -static int -NC_init_pe(NC *ncp, int basepe) { - if (basepe < 0 || basepe >= _num_pes()) { - return NC_EINVAL; /* invalid base pe */ - } - /* initialize common values */ - ncp->lock[LOCKNUMREC_VALUE] = 0; - ncp->lock[LOCKNUMREC_LOCK] = 0; - ncp->lock[LOCKNUMREC_SERVING] = 0; - ncp->lock[LOCKNUMREC_BASEPE] = basepe; - return NC_NOERR; -} -#endif - - -/* - * Compute the expected size of the file. - */ -int -NC_calcsize(const NC3_INFO *ncp, off_t *calcsizep) -{ - NC_var **vpp = (NC_var **)ncp->vars.value; - NC_var *const *const end = &vpp[ncp->vars.nelems]; - NC_var *last_fix = NULL; /* last "non-record" var */ - int numrecvars = 0; /* number of record variables */ - - if(ncp->vars.nelems == 0) { /* no non-record variables and - no record variables */ - *calcsizep = ncp->xsz; /* size of header */ - return NC_NOERR; - } - - for( /*NADA*/; vpp < end; vpp++) { - if(IS_RECVAR(*vpp)) { - numrecvars++; - } else { - last_fix = *vpp; - } - } - - if(numrecvars == 0) { - off_t varsize; - assert(last_fix != NULL); - varsize = last_fix->len; - if(last_fix->len == X_UINT_MAX) { /* huge last fixed var */ - int i; - varsize = 1; - for(i = 0; i < last_fix->ndims; i++ ) { - varsize *= (last_fix->shape ? last_fix->shape[i] : 1); - } - } - *calcsizep = last_fix->begin + varsize; - /*last_var = last_fix;*/ - } else { /* we have at least one record variable */ - *calcsizep = ncp->begin_rec + ncp->numrecs * ncp->recsize; - } - - return NC_NOERR; -} - -/* Public */ - -#if 0 /* no longer needed */ -int NC3_new_nc(NC3_INFO** ncpp) -{ - NC *nc; - NC3_INFO* nc3; - -#if _CRAYMPP && defined(LOCKNUMREC) - ncp = (NC *) shmalloc(sizeof(NC)); -#else - ncp = (NC *) malloc(sizeof(NC)); -#endif /* _CRAYMPP && LOCKNUMREC */ - if(ncp == NULL) - return NC_ENOMEM; - (void) memset(ncp, 0, sizeof(NC)); - - ncp->xsz = MIN_NC_XSZ; - assert(ncp->xsz == ncx_len_NC(ncp,0)); - - if(ncpp) *ncpp = ncp; - return NC_NOERR; - -} -#endif - -/* WARNING: SIGNATURE CHANGE */ -int -NC3_create(const char *path, int ioflags, - size_t initialsz, int basepe, - size_t *chunksizehintp, - int use_parallel, void* parameters, - NC_Dispatch* dispatch, NC* nc) -{ - int status; - void *xp = NULL; - int sizeof_off_t = 0; - NC3_INFO* nc3 = NULL; - - /* Create our specific NC3_INFO instance */ - nc3 = new_NC3INFO(chunksizehintp); - -#if ALWAYS_NC_SHARE /* DEBUG */ - fSet(ioflags, NC_SHARE); -#endif - -#if defined(LOCKNUMREC) /* && _CRAYMPP */ - if (status = NC_init_pe(nc3, basepe)) { - return status; - } -#else - /* - * !_CRAYMPP, only pe 0 is valid - */ - if(basepe != 0) { - if(nc3) free(nc3); - return NC_EINVAL; - } -#endif - - assert(nc3->flags == 0); - - /* Apply default create format. */ - if (nc_get_default_format() == NC_FORMAT_64BIT_OFFSET) - ioflags |= NC_64BIT_OFFSET; - else if (nc_get_default_format() == NC_FORMAT_CDF5) - ioflags |= NC_64BIT_DATA; - - /* Now we can set min size */ - if (fIsSet(ioflags, NC_64BIT_DATA)) - nc3->xsz = MIN_NC5_XSZ; /* CDF-5 has minimum 16 extra bytes */ - else - nc3->xsz = MIN_NC3_XSZ; - - if (fIsSet(ioflags, NC_64BIT_OFFSET)) { - fSet(nc3->flags, NC_64BIT_OFFSET); - sizeof_off_t = 8; - } else if (fIsSet(ioflags, NC_64BIT_DATA)) { - fSet(nc3->flags, NC_64BIT_DATA); - sizeof_off_t = 8; - } else { - sizeof_off_t = 4; - } - - assert(nc3->xsz == ncx_len_NC(nc3,sizeof_off_t)); - - status = ncio_create(path, ioflags, initialsz, - 0, nc3->xsz, &nc3->chunk, NULL, - &nc3->nciop, &xp); - if(status != NC_NOERR) - { - /* translate error status */ - if(status == EEXIST) - status = NC_EEXIST; - goto unwind_alloc; - } - - fSet(nc3->flags, NC_CREAT); - - if(fIsSet(nc3->nciop->ioflags, NC_SHARE)) - { - /* - * NC_SHARE implies sync up the number of records as well. - * (File format version one.) - * Note that other header changes are not shared - * automatically. Some sort of IPC (external to this package) - * would be used to trigger a call to nc_sync(). - */ - fSet(nc3->flags, NC_NSYNC); - } - - status = ncx_put_NC(nc3, &xp, sizeof_off_t, nc3->xsz); - if(status != NC_NOERR) - goto unwind_ioc; - - if(chunksizehintp != NULL) - *chunksizehintp = nc3->chunk; - - /* Link nc3 and nc */ - NC3_DATA_SET(nc,nc3); - nc->int_ncid = nc3->nciop->fd; - - return NC_NOERR; - -unwind_ioc: - if(nc3 != NULL) { - (void) ncio_close(nc3->nciop, 1); /* N.B.: unlink */ - nc3->nciop = NULL; - } - /*FALLTHRU*/ -unwind_alloc: - free_NC3INFO(nc3); - if(nc) - NC3_DATA_SET(nc,NULL); - return status; -} - -#if 0 -/* This function sets a default create flag that will be logically - or'd to whatever flags are passed into nc_create for all future - calls to nc_create. - Valid default create flags are NC_64BIT_OFFSET, NC_CDF5, NC_CLOBBER, - NC_LOCK, NC_SHARE. */ -int -nc_set_default_format(int format, int *old_formatp) -{ - /* Return existing format if desired. */ - if (old_formatp) - *old_formatp = default_create_format; - - /* Make sure only valid format is set. */ -#ifdef USE_NETCDF4 - if (format != NC_FORMAT_CLASSIC && format != NC_FORMAT_64BIT_OFFSET && - format != NC_FORMAT_NETCDF4 && format != NC_FORMAT_NETCDF4_CLASSIC) - return NC_EINVAL; -#else - if (format != NC_FORMAT_CLASSIC && format != NC_FORMAT_64BIT_OFFSET && - format != NC_FORMAT_CDF5) - return NC_EINVAL; -#endif - default_create_format = format; - return NC_NOERR; -} -#endif - -int -NC3_open(const char * path, int ioflags, - int basepe, size_t *chunksizehintp, - int use_parallel,void* parameters, - NC_Dispatch* dispatch, NC* nc) -{ - int status; - NC3_INFO* nc3 = NULL; - - /* Create our specific NC3_INFO instance */ - nc3 = new_NC3INFO(chunksizehintp); - -#if ALWAYS_NC_SHARE /* DEBUG */ - fSet(ioflags, NC_SHARE); -#endif - -#if defined(LOCKNUMREC) /* && _CRAYMPP */ - if (status = NC_init_pe(nc3, basepe)) { - return status; - } -#else - /* - * !_CRAYMPP, only pe 0 is valid - */ - if(basepe != 0) { - if(nc3) free(nc3); - return NC_EINVAL; - } -#endif - status = ncio_open(path, ioflags, 0, 0, &nc3->chunk, parameters, - &nc3->nciop, NULL); - if(status) - goto unwind_alloc; - - assert(nc3->flags == 0); - - if(fIsSet(nc3->nciop->ioflags, NC_SHARE)) - { - /* - * NC_SHARE implies sync up the number of records as well. - * (File format version one.) - * Note that other header changes are not shared - * automatically. Some sort of IPC (external to this package) - * would be used to trigger a call to nc_sync(). - */ - fSet(nc3->flags, NC_NSYNC); - } - - status = nc_get_NC(nc3); - if(status != NC_NOERR) - goto unwind_ioc; - - if(chunksizehintp != NULL) - *chunksizehintp = nc3->chunk; - - /* Link nc3 and nc */ - NC3_DATA_SET(nc,nc3); - nc->int_ncid = nc3->nciop->fd; - - return NC_NOERR; - -unwind_ioc: - if(nc3) { - (void) ncio_close(nc3->nciop, 0); - nc3->nciop = NULL; - } - /*FALLTHRU*/ -unwind_alloc: - free_NC3INFO(nc3); - if(nc) - NC3_DATA_SET(nc,NULL); - return status; -} - -int -NC3__enddef(int ncid, - size_t h_minfree, size_t v_align, - size_t v_minfree, size_t r_align) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(!NC_indef(nc3)) - return(NC_ENOTINDEFINE); - - return (NC_endef(nc3, h_minfree, v_align, v_minfree, r_align)); -} - -/* - * In data mode, same as ncclose. - * In define mode, restore previous definition. - * In create, remove the file. - */ -int -NC3_abort(int ncid) -{ - int status; - NC *nc; - NC3_INFO* nc3; - int doUnlink = 0; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - doUnlink = NC_IsNew(nc3); - - if(nc3->old != NULL) - { - /* a plain redef, not a create */ - assert(!NC_IsNew(nc3)); - assert(fIsSet(nc3->flags, NC_INDEF)); - free_NC3INFO(nc3->old); - nc3->old = NULL; - fClr(nc3->flags, NC_INDEF); - } - else if(!NC_readonly(nc3)) - { - status = NC_sync(nc3); - if(status != NC_NOERR) - return status; - } - - - (void) ncio_close(nc3->nciop, doUnlink); - nc3->nciop = NULL; - - free_NC3INFO(nc3); - if(nc) - NC3_DATA_SET(nc,NULL); - - return NC_NOERR; -} - -int -NC3_close(int ncid) -{ - int status = NC_NOERR; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_indef(nc3)) - { - status = NC_endef(nc3, 0, 1, 0, 1); /* TODO: defaults */ - if(status != NC_NOERR ) - { - (void) NC3_abort(ncid); - return status; - } - } - else if(!NC_readonly(nc3)) - { - status = NC_sync(nc3); - /* flush buffers before any filesize comparisons */ - (void) ncio_sync(nc3->nciop); - } - - /* - * If file opened for writing and filesize is less than - * what it should be (due to previous use of NOFILL mode), - * pad it to correct size, as reported by NC_calcsize(). - */ - if (status == NC_NOERR) { - off_t filesize; /* current size of open file */ - off_t calcsize; /* calculated file size, from header */ - status = ncio_filesize(nc3->nciop, &filesize); - if(status != NC_NOERR) - return status; - status = NC_calcsize(nc3, &calcsize); - if(status != NC_NOERR) - return status; - if(filesize < calcsize && !NC_readonly(nc3)) { - status = ncio_pad_length(nc3->nciop, calcsize); - if(status != NC_NOERR) - return status; - } - } - - (void) ncio_close(nc3->nciop, 0); - nc3->nciop = NULL; - - free_NC3INFO(nc3); - NC3_DATA_SET(nc,NULL); - - return status; -} - -int -NC3_redef(int ncid) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_readonly(nc3)) - return NC_EPERM; - - if(NC_indef(nc3)) - return NC_EINDEFINE; - - - if(fIsSet(nc3->nciop->ioflags, NC_SHARE)) - { - /* read in from disk */ - status = read_NC(nc3); - if(status != NC_NOERR) - return status; - } - - nc3->old = dup_NC3INFO(nc3); - if(nc3->old == NULL) - return NC_ENOMEM; - - fSet(nc3->flags, NC_INDEF); - - return NC_NOERR; -} - - -int -NC3_inq(int ncid, - int *ndimsp, - int *nvarsp, - int *nattsp, - int *xtendimp) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(ndimsp != NULL) - *ndimsp = (int) nc3->dims.nelems; - if(nvarsp != NULL) - *nvarsp = (int) nc3->vars.nelems; - if(nattsp != NULL) - *nattsp = (int) nc3->attrs.nelems; - if(xtendimp != NULL) - *xtendimp = find_NC_Udim(&nc3->dims, NULL); - - return NC_NOERR; -} - -int -NC3_inq_unlimdim(int ncid, int *xtendimp) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(xtendimp != NULL) - *xtendimp = find_NC_Udim(&nc3->dims, NULL); - - return NC_NOERR; -} - -int -NC3_sync(int ncid) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_indef(nc3)) - return NC_EINDEFINE; - - if(NC_readonly(nc3)) - { - return read_NC(nc3); - } - /* else, read/write */ - - status = NC_sync(nc3); - if(status != NC_NOERR) - return status; - - status = ncio_sync(nc3->nciop); - if(status != NC_NOERR) - return status; - -#ifdef USE_FSYNC - /* may improve concurrent access, but slows performance if - * called frequently */ -#ifndef WIN32 - status = fsync(nc3->nciop->fd); -#else - status = _commit(nc3->nciop->fd); -#endif /* WIN32 */ -#endif /* USE_FSYNC */ - - return status; -} - - -int -NC3_set_fill(int ncid, - int fillmode, int *old_mode_ptr) -{ - int status; - NC *nc; - NC3_INFO* nc3; - int oldmode; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_readonly(nc3)) - return NC_EPERM; - - oldmode = fIsSet(nc3->flags, NC_NOFILL) ? NC_NOFILL : NC_FILL; - - if(fillmode == NC_NOFILL) - { - fSet(nc3->flags, NC_NOFILL); - } - else if(fillmode == NC_FILL) - { - if(fIsSet(nc3->flags, NC_NOFILL)) - { - /* - * We are changing back to fill mode - * so do a sync - */ - status = NC_sync(nc3); - if(status != NC_NOERR) - return status; - } - fClr(nc3->flags, NC_NOFILL); - } - else - { - return NC_EINVAL; /* Invalid fillmode */ - } - - if(old_mode_ptr != NULL) - *old_mode_ptr = oldmode; - - return NC_NOERR; -} - -#ifdef LOCKNUMREC - -/* create function versions of the NC_*_numrecs macros */ -size_t -NC_get_numrecs(const NC *nc3) { - shmem_t numrec; - shmem_short_get(&numrec, (shmem_t *) nc3->lock + LOCKNUMREC_VALUE, 1, - nc3->lock[LOCKNUMREC_BASEPE]); - return (size_t) numrec; -} - -void -NC_set_numrecs(NC *nc3, size_t nrecs) -{ - shmem_t numrec = (shmem_t) nrecs; - /* update local value too */ - nc3->lock[LOCKNUMREC_VALUE] = (ushmem_t) numrec; - shmem_short_put((shmem_t *) nc3->lock + LOCKNUMREC_VALUE, &numrec, 1, - nc3->lock[LOCKNUMREC_BASEPE]); -} - -void NC_increase_numrecs(NC *nc3, size_t nrecs) -{ - /* this is only called in one place that's already protected - * by a lock ... so don't worry about it */ - if (nrecs > NC_get_numrecs(nc3)) - NC_set_numrecs(nc3, nrecs); -} - -#endif /* LOCKNUMREC */ - -/* everyone in communicator group will be executing this */ -/*ARGSUSED*/ -int -NC3_set_base_pe(int ncid, int pe) -{ -#if _CRAYMPP && defined(LOCKNUMREC) - int status; - NC *nc; - NC3_INFO* nc3; - shmem_t numrecs; - - if ((status = NC_check_id(ncid, &nc) != NC_NOERR) { - return status; - } - if (pe < 0 || pe >= _num_pes()) { - return NC_EINVAL; /* invalid base pe */ - } - nc3 = NC3_DATA(nc); - - numrecs = (shmem_t) NC_get_numrecs(nc3); - - nc3->lock[LOCKNUMREC_VALUE] = (ushmem_t) numrecs; - - /* update serving & lock values for a "smooth" transition */ - /* note that the "real" server will being doing this as well */ - /* as all the rest in the group */ - /* must have synchronization before & after this step */ - shmem_short_get( - (shmem_t *) nc3->lock + LOCKNUMREC_SERVING, - (shmem_t *) nc3->lock + LOCKNUMREC_SERVING, - 1, nc3->lock[LOCKNUMREC_BASEPE]); - - shmem_short_get( - (shmem_t *) nc3->lock + LOCKNUMREC_LOCK, - (shmem_t *) nc3->lock + LOCKNUMREC_LOCK, - 1, nc3->lock[LOCKNUMREC_BASEPE]); - - /* complete transition */ - nc3->lock[LOCKNUMREC_BASEPE] = (ushmem_t) pe; - -#endif /* _CRAYMPP && LOCKNUMREC */ - return NC_NOERR; -} - -/*ARGSUSED*/ -int -NC3_inq_base_pe(int ncid, int *pe) -{ -#if _CRAYMPP && defined(LOCKNUMREC) - int status; - NC *nc; - NC3_INFO* nc3; - - if ((status = NC_check_id(ncid, &nc)) != NC_NOERR) { - return status; - } - - *pe = (int) nc3->lock[LOCKNUMREC_BASEPE]; - nc3 = NC3_DATA(nc); -#else - /* - * !_CRAYMPP, only pe 0 is valid - */ - *pe = 0; -#endif /* _CRAYMPP && LOCKNUMREC */ - return NC_NOERR; -} - -int -NC3_inq_format(int ncid, int *formatp) -{ - int status; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - /* only need to check for netCDF-3 variants, since this is never called for netCDF-4 files */ - if (fIsSet(nc3->flags, NC_64BIT_DATA)) - *formatp = NC_FORMAT_CDF5; - else if (fIsSet(nc3->flags, NC_64BIT_OFFSET)) - *formatp = NC_FORMAT_64BIT_OFFSET; - else - *formatp = NC_FORMAT_CLASSIC; - return NC_NOERR; -} - -int -NC3_inq_format_extended(int ncid, int *formatp, int *modep) -{ - int status; - NC *nc; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - if(formatp) *formatp = NC_FORMATX_NC3; - if(modep) *modep = nc->mode; - return NC_NOERR; -} - -/* The sizes of types may vary from platform to platform, but within - * netCDF files, type sizes are fixed. */ -#define NC_BYTE_LEN 1 -#define NC_CHAR_LEN 1 -#define NC_SHORT_LEN 2 -#define NC_INT_LEN 4 -#define NC_FLOAT_LEN 4 -#define NC_DOUBLE_LEN 8 -#define NUM_ATOMIC_TYPES 6 - -/* This netCDF-4 function proved so popular that a netCDF-classic - * version is provided. You're welcome. */ -int -NC3_inq_type(int ncid, nc_type typeid, char *name, size_t *size) -{ -#if 0 - int atomic_size[NUM_ATOMIC_TYPES] = {NC_BYTE_LEN, NC_CHAR_LEN, NC_SHORT_LEN, - NC_INT_LEN, NC_FLOAT_LEN, NC_DOUBLE_LEN}; - char atomic_name[NUM_ATOMIC_TYPES][NC_MAX_NAME + 1] = {"byte", "char", "short", - "int", "float", "double"}; -#endif - - NC *ncp; - int stat = NC_check_id(ncid, &ncp); - if (stat != NC_NOERR) - return stat; - - /* Only netCDF classic model and CDF-5 need to be handled. */ - /* After discussion, this seems like an artificial limitation. - See https://github.com/Unidata/netcdf-c/issues/240 for more - discussion. */ - /* - if((ncp->mode & NC_CDF5) != 0) { - if (typeid < NC_BYTE || typeid > NC_STRING) - return NC_EBADTYPE; - } else if (typeid < NC_BYTE || typeid > NC_DOUBLE) - return NC_EBADTYPE; - */ - if(typeid < NC_BYTE || typeid > NC_STRING) - return NC_EBADTYPE; - - /* Give the user the values they want. Subtract one because types - * are numbered starting at 1, not 0. */ - if (name) - strcpy(name, NC_atomictypename(typeid)); - if (size) - *size = NC_atomictypelen(typeid); - - return NC_NOERR; -} - -/**************************************************/ -#if 0 -int -NC3_set_content(int ncid, size_t size, void* memory) -{ - int status = NC_NOERR; - NC *nc; - NC3_INFO* nc3; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - -#ifdef USE_DISKLESS - fClr(nc3->flags, NC_CREAT); - status = memio_set_content(nc3->nciop, size, memory); - if(status != NC_NOERR) goto done; - status = nc_get_NC(nc3); - if(status != NC_NOERR) goto done; -#else - status = NC_EDISKLESS; -#endif - -done: - return status; -} -#endif - -/**************************************************/ - -int -nc_delete_mp(const char * path, int basepe) -{ - NC *nc; - NC3_INFO* nc3; - int status; - int ncid; - size_t chunk = 512; - - status = nc_open(path,NC_NOWRITE,&ncid); - if(status) return status; - - status = NC_check_id(ncid,&nc); - if(status) return status; - nc3 = NC3_DATA(nc); - - nc3->chunk = chunk; - -#if defined(LOCKNUMREC) /* && _CRAYMPP */ - if (status = NC_init_pe(nc3, basepe)) { - return status; - } -#else - /* - * !_CRAYMPP, only pe 0 is valid - */ - if(basepe != 0) - return NC_EINVAL; -#endif - - (void) nc_close(ncid); - if(unlink(path) == -1) { - return NC_EIO; /* No more specific error code is appropriate */ - } - return NC_NOERR; -} - -int -nc_delete(const char * path) -{ - return nc_delete_mp(path, 0); -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/nc_hashmap.c b/contrib/netcdf/4.4.1.1/libsrc/nc_hashmap.c deleted file mode 100644 index 2e27596587e..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/nc_hashmap.c +++ /dev/null @@ -1,375 +0,0 @@ -#include "nc3internal.h" - -#include -#include -#include -#include - -/* this should be prime */ -#define TABLE_STARTSIZE 1021 - -#define ACTIVE 1 - -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - -extern uint32_t hash_fast(const void *key, size_t length); - -static int isPrime(unsigned long val) -{ - int i; - - for (i = 9; i--;) - { -#ifdef HAVE_RANDOM - unsigned long a = ((unsigned long)random() % (val-4)) + 2; -#else - unsigned long a = ((unsigned long)rand() % (val - 4)) + 2; -#endif - unsigned long p = 1; - unsigned long exp = val-1; - while (exp) - { - if (exp & 1) - p = (p*a)%val; - - a = (a*a)%val; - exp >>= 1; - } - - if (p != 1) - return 0; - } - - return 1; -} - -static unsigned long findPrimeGreaterThan(unsigned long val) -{ - if (val & 1) - val+=2; - else - val++; - - while (!isPrime(val)) - val+=2; - - return val; -} - -static void rehashDim(const NC_dimarray* ncap) -{ - NC_hashmap* hm = ncap->hashmap; - unsigned long size = hm->size; - unsigned long count = hm->count; - - hEntry* table = hm->table; - - hm->size = findPrimeGreaterThan(size<<1); - hm->table = (hEntry*)calloc(sizeof(hEntry), hm->size); - hm->count = 0; - - while(size > 0) { - --size; - if (table[size].flags == ACTIVE) { - NC_dim *elem = ncap->value[table[size].data-1]; - NC_hashmapAddDim(ncap, table[size].data-1, elem->name->cp); - assert(NC_hashmapGetDim(ncap, elem->name->cp) == table[size].data-1); - } - } - - free(table); - assert(count == hm->count); -} - -static void rehashVar(const NC_vararray* ncap) -{ - NC_hashmap* hm = ncap->hashmap; - unsigned long size = hm->size; - unsigned long count = hm->count; - - hEntry* table = hm->table; - - hm->size = findPrimeGreaterThan(size<<1); - hm->table = (hEntry*)calloc(sizeof(hEntry), (size_t)hm->size); - hm->count = 0; - - while(size > 0) { - --size; - if (table[size].flags == ACTIVE) { - NC_var *elem = ncap->value[table[size].data-1]; - NC_hashmapAddVar(ncap, table[size].data-1, elem->name->cp); - assert(NC_hashmapGetVar(ncap, elem->name->cp) == table[size].data-1); - } - } - - free(table); - assert(count == hm->count); -} - -NC_hashmap* NC_hashmapCreate(unsigned long startsize) -{ - NC_hashmap* hm = (NC_hashmap*)malloc(sizeof(NC_hashmap)); - - if (!startsize) - startsize = TABLE_STARTSIZE; - else { - startsize *= 4; - startsize /= 3; - startsize = findPrimeGreaterThan(startsize-2); - } - - hm->table = (hEntry*)calloc(sizeof(hEntry), (size_t)startsize); - hm->size = startsize; - hm->count = 0; - - return hm; -} - -void NC_hashmapAddDim(const NC_dimarray* ncap, long data, const char *name) -{ - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - if (hash->size*3/4 <= hash->count) { - rehashDim(ncap); - } - - do - { - unsigned long i; - unsigned long index = key % hash->size; - unsigned long step = (key % MAX(1,(hash->size-2))) + 1; - - for (i = 0; i < hash->size; i++) - { - if (hash->table[index].flags & ACTIVE) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - hash->table[index].data = data+1; - return; - } - } - else - { - hash->table[index].flags |= ACTIVE; - hash->table[index].data = data+1; - hash->table[index].key = key; - ++hash->count; - return; - } - - index = (index + step) % hash->size; - } - - /* it should not be possible that we EVER come this far, but unfortunately - not every generated prime number is prime (Carmichael numbers...) */ - rehashDim(ncap); - } - while (1); -} - -void NC_hashmapAddVar(const NC_vararray* ncap, long data, const char *name) -{ - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - if (hash->size*3/4 <= hash->count) { - rehashVar(ncap); - } - - do - { - unsigned long i; - unsigned long index = key % hash->size; - unsigned long step = (key % MAX(1,(hash->size-2))) + 1; - - for (i = 0; i < hash->size; i++) - { - if (hash->table[index].flags & ACTIVE) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - hash->table[index].data = data+1; - return; - } - } - else - { - hash->table[index].flags |= ACTIVE; - hash->table[index].data = data+1; - hash->table[index].key = key; - ++hash->count; - return; - } - - index = (index + step) % hash->size; - } - - /* it should not be possible that we EVER come this far, but unfortunately - not every generated prime number is prime (Carmichael numbers...) */ - rehashVar(ncap); - } - while (1); -} - -long NC_hashmapRemoveDim(const NC_dimarray* ncap, const char *name) -{ - unsigned long i; - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - unsigned long index = key % hash->size; - unsigned long step = (key % (hash->size-2)) + 1; - - for (i = 0; i < hash->size; i++) - { - if (hash->table[index].data > 0) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - if (hash->table[index].flags & ACTIVE) - { - hash->table[index].flags &= ~ACTIVE; - --hash->count; - return hash->table[index].data-1; - } - else /* in, but not active (i.e. deleted) */ - return -1; - } - } - else /* found an empty place (can't be in) */ - return -1; - - index = (index + step) % hash->size; - } - /* everything searched through, but not in */ - return -1; -} - -long NC_hashmapRemoveVar(const NC_vararray* ncap, const char *name) -{ - unsigned long i; - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - unsigned long index = key % hash->size; - unsigned long step = (key % (hash->size-2)) + 1; - - for (i = 0; i < hash->size; i++) - { - if (hash->table[index].data > 0) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - if (hash->table[index].flags & ACTIVE) - { - hash->table[index].flags &= ~ACTIVE; - --hash->count; - return hash->table[index].data-1; - } - else /* in, but not active (i.e. deleted) */ - return -1; - } - } - else /* found an empty place (can't be in) */ - return -1; - - index = (index + step) % hash->size; - } - /* everything searched through, but not in */ - return -1; -} - -long NC_hashmapGetDim(const NC_dimarray* ncap, const char *name) -{ - NC_hashmap* hash = ncap->hashmap; - if (hash->count) - { - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - unsigned long i; - unsigned long index = key % hash->size; - unsigned long step = (key % (hash->size-2)) + 1; - - for (i = 0; i < hash->size; i++) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - if (entry.flags & ACTIVE) - return entry.data-1; - break; - } - else - if (!(entry.flags & ACTIVE)) - break; - - index = (index + step) % hash->size; - } - } - - return -1; -} - -long NC_hashmapGetVar(const NC_vararray* ncap, const char *name) -{ - NC_hashmap* hash = ncap->hashmap; - if (hash->count) - { - unsigned long key = hash_fast(name, strlen(name)); - NC_hashmap* hash = ncap->hashmap; - - unsigned long i; - unsigned long index = key % hash->size; - unsigned long step = (key % (hash->size-2)) + 1; - - for (i = 0; i < hash->size; i++) - { - hEntry entry = hash->table[index]; - if (entry.key == key && - strncmp(name, ncap->value[entry.data-1]->name->cp, - ncap->value[entry.data-1]->name->nchars) == 0) - { - if (entry.flags & ACTIVE) - return entry.data-1; - break; - } - else - if (!(entry.flags & ACTIVE)) - break; - - index = (index + step) % hash->size; - } - } - - return -1; -} - -unsigned long NC_hashmapCount(NC_hashmap* hash) -{ - return hash->count; -} - -void NC_hashmapDelete(NC_hashmap* hash) -{ - if (hash) { - free(hash->table); - free(hash); - } -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/ncx.c b/contrib/netcdf/4.4.1.1/libsrc/ncx.c deleted file mode 100644 index 20902a113b4..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/ncx.c +++ /dev/null @@ -1,17362 +0,0 @@ -/* Do not edit this file. It is produced from the corresponding .m4 source */ -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * - * This file contains some routines derived from code - * which is copyrighted by Sun Microsystems, Inc. - * The "#ifdef vax" versions of - * ncx_put_float_float() - * ncx_get_float_float() - * ncx_put_double_double() - * ncx_get_double_double() - * ncx_putn_float_float() - * ncx_getn_float_float() - * ncx_putn_double_double() - * ncx_getn_double_double() - * are derived from xdr_float() and xdr_double() routines - * in the freely available, copyrighted Sun RPCSRC 3.9 - * distribution, xdr_float.c. - * Our "value added" is that these are always memory to memory, - * they handle IEEE subnormals properly, and their "n" versions - * operate speedily on arrays. - */ -/* $Id: ncx.m4 2795 2014-10-27 23:12:51Z wkliao $ */ - -/* - * An external data representation interface. - */ - -#pragma GCC diagnostic ignored "-Wdeprecated" - -#include "ncx.h" -#include "nc3dispatch.h" -#include -#include - -/* alias poorly named limits.h macros */ -#define SHORT_MAX SHRT_MAX -#define SHORT_MIN SHRT_MIN -#define USHORT_MAX USHRT_MAX -#ifndef LLONG_MAX -# define LLONG_MAX 9223372036854775807LL -# define LLONG_MIN (-LLONG_MAX - 1LL) -# define ULLONG_MAX 18446744073709551615ULL -#endif -#ifndef LONG_LONG_MAX -#define LONG_LONG_MAX LLONG_MAX -#endif -#ifndef LONGLONG_MAX -#define LONGLONG_MAX LONG_LONG_MAX -#endif -#ifndef LONG_LONG_MIN -#define LONG_LONG_MIN LLONG_MIN -#endif -#ifndef LONGLONG_MIN -#define LONGLONG_MIN LONG_LONG_MIN -#endif -#ifndef ULONG_LONG_MAX -#define ULONG_LONG_MAX ULLONG_MAX -#endif -#ifndef ULONGLONG_MAX -#define ULONGLONG_MAX ULONG_LONG_MAX -#endif -#include -#ifndef FLT_MAX /* This POSIX macro missing on some systems */ -# ifndef NO_IEEE_FLOAT -# define FLT_MAX 3.40282347e+38f -# else -# error "You will need to define FLT_MAX" -# endif -#endif -/* alias poorly named float.h macros */ -#define FLOAT_MAX FLT_MAX -#define FLOAT_MIN (-FLT_MAX) -#define DOUBLE_MAX DBL_MAX -#define DOUBLE_MIN (-DBL_MAX) -#define FLOAT_MAX_EXP FLT_MAX_EXP -#define DOUBLE_MAX_EXP DBL_MAX_EXP -#include -#define UCHAR_MIN 0 -#define Min(a,b) ((a) < (b) ? (a) : (b)) -#define Max(a,b) ((a) > (b) ? (a) : (b)) - -#ifndef SIZEOF_USHORT -#define SIZEOF_USHORT SIZEOF_UNSIGNED_SHORT_INT -#endif -#ifndef SIZEOF_UINT -#define SIZEOF_UINT SIZEOF_UNSIGNED_INT -#endif -#ifndef SIZEOF_ULONG_LONG -#define SIZEOF_ULONG_LONG SIZEOF_UNSIGNED_LONG_LONG -#endif - -/* - * If the machine's float domain is "smaller" than the external one - * use the machine domain - */ -#if defined(FLT_MAX_EXP) && FLT_MAX_EXP < 128 /* 128 is X_FLT_MAX_EXP */ -#undef X_FLOAT_MAX -# define X_FLOAT_MAX FLT_MAX -#undef X_FLOAT_MIN -# define X_FLOAT_MIN (-X_FLOAT_MAX) -#endif - -#if _SX /* NEC SUPER UX */ -#define LOOPCNT 256 /* must be no longer than hardware vector length */ -#if _INT64 -#undef INT_MAX /* workaround cpp bug */ -#define INT_MAX X_INT_MAX -#undef INT_MIN /* workaround cpp bug */ -#define INT_MIN X_INT_MIN -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX X_INT_MAX -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN X_INT_MIN -#elif _LONG64 -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX 4294967295L -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN -4294967295L -#endif -#if !_FLOAT0 -#error "FLOAT1 and FLOAT2 not supported" -#endif -#endif /* _SX */ - -static const char nada[X_ALIGN] = {0, 0, 0, 0}; - -#ifndef WORDS_BIGENDIAN -/* LITTLE_ENDIAN: DEC and intel */ -/* - * Routines to convert to BIGENDIAN. - * Optimize the swapn?b() and swap?b() routines aggressivly. - */ - -#define SWAP2(a) ( (((a) & 0xff) << 8) | \ - (((a) >> 8) & 0xff) ) - -#define SWAP4(a) ( ((a) << 24) | \ - (((a) << 8) & 0x00ff0000) | \ - (((a) >> 8) & 0x0000ff00) | \ - (((a) >> 24) & 0x000000ff) ) - - -static void -swapn2b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * - * while(nn-- != 0) - * { - * *op++ = *(++ip); - * *op++ = *(ip++ -1); - * } - */ - while(nn > 3) - { - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - nn -= 4; - } - while(nn-- > 0) - { - *op++ = *(++ip); - *op++ = *(ip++ -1); - } -} - -# ifndef vax -void -swap4b(void *dst, const void *src) -{ - unsigned int *op = dst; - const char *ip = src; - unsigned int tempIn; - unsigned int tempOut; - - tempIn = *(unsigned int *)(ip+0); - tempOut = - ( tempIn << 24) | - ((tempIn & 0x0000ff00) << 8) | - ((tempIn & 0x00ff0000) >> 8) | - ( tempIn >> 24); - - *(float *)op = *(float *)(&tempOut); -} -# endif /* !vax */ - -static void -swapn4b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * while(nn-- != 0) - * { - * op[0] = ip[3]; - * op[1] = ip[2]; - * op[2] = ip[1]; - * op[3] = ip[0]; - * op += 4; - * ip += 4; - * } - */ - while(nn > 3) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; - op[8] = ip[11]; - op[9] = ip[10]; - op[10] = ip[9]; - op[11] = ip[8]; - op[12] = ip[15]; - op[13] = ip[14]; - op[14] = ip[13]; - op[15] = ip[12]; - op += 16; - ip += 16; - nn -= 4; - } - while(nn-- > 0) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op += 4; - ip += 4; - } -} - -# ifndef vax -static void -swap8b(void *dst, const void *src) -{ - char *op = dst; - const char *ip = src; -# ifndef FLOAT_WORDS_BIGENDIAN - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; -# else - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; -# endif -} -# endif /* !vax */ - -# ifndef vax -static void -swapn8b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * while(nn-- != 0) - * { - * op[0] = ip[7]; - * op[1] = ip[6]; - * op[2] = ip[5]; - * op[3] = ip[4]; - * op[4] = ip[3]; - * op[5] = ip[2]; - * op[6] = ip[1]; - * op[7] = ip[0]; - * op += 8; - * ip += 8; - * } - */ -# ifndef FLOAT_WORDS_BIGENDIAN - while(nn > 1) - { - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; - op[8] = ip[15]; - op[9] = ip[14]; - op[10] = ip[13]; - op[11] = ip[12]; - op[12] = ip[11]; - op[13] = ip[10]; - op[14] = ip[9]; - op[15] = ip[8]; - op += 16; - ip += 16; - nn -= 2; - } - while(nn-- != 0) - { - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; - op += 8; - ip += 8; - } -# else - while(nn-- != 0) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; - op += 8; - ip += 8; - } -# endif -} -# endif /* !vax */ - -#endif /* LITTLE_ENDIAN */ - - - - - - - - - - - - -/* - * Primitive numeric conversion functions. - */ - - - - - -/* x_schar */ -/* x_uchar */ - -/* We don't implement any x_schar and x_uchar primitives. */ - - -/* x_short -------------------------------------------------------------------*/ - -#if SHORT_MAX == X_SHORT_MAX -typedef short ix_short; -#define SIZEOF_IX_SHORT SIZEOF_SHORT -#define IX_SHORT_MAX SHORT_MAX -#elif INT_MAX >= X_SHORT_MAX -typedef int ix_short; -#define SIZEOF_IX_SHORT SIZEOF_INT -#define IX_SHORT_MAX INT_MAX -#elif LONG_MAX >= X_SHORT_MAX -typedef long ix_short; -#define SIZEOF_IX_SHORT SIZEOF_LONG -#define IX_SHORT_MAX LONG_MAX -#elif LLONG_MAX >= X_SHORT_MAX -typedef long long ix_short; -#define SIZEOF_IX_SHORT SIZEOF_LONG_LONG -#define IX_SHORT_MAX LLONG_MAX -#else -#error "ix_short implementation" -#endif - -static void -get_ix_short(const void *xp, ix_short *ip) -{ - const uchar *cp = (const uchar *) xp; - *ip = *cp++ << 8; -#if SIZEOF_IX_SHORT > X_SIZEOF_SHORT - if(*ip & 0x8000) - { - /* extern is negative */ - *ip |= (~(0xffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= *cp; -} - -static void -put_ix_short(void *xp, const ix_short *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = (*ip) >> 8; - *cp = (*ip) & 0xff; -} - -static int -ncx_get_short_schar(const void *xp, schar *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (schar) xx; -#if IX_SHORT_MAX > SCHAR_MAX - if (xx > SCHAR_MAX || xx < SCHAR_MIN) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_short_short(const void *xp, short *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_SHORT && IX_SHORT_MAX == SHORT_MAX - get_ix_short(xp, (ix_short *)ip); - return NC_NOERR; -#else - ix_short xx; - get_ix_short(xp, &xx); - *ip = (short) xx; -#if IX_SHORT_MAX > SHORT_MAX - if (xx > SHORT_MAX || xx < SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_short_int(const void *xp, int *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_INT && IX_SHORT_MAX == INT_MAX - get_ix_short(xp, (ix_short *)ip); - return NC_NOERR; -#else - ix_short xx; - get_ix_short(xp, &xx); - *ip = (int) xx; -#if IX_SHORT_MAX > INT_MAX - if (xx > INT_MAX || xx < INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_short_longlong(const void *xp, longlong *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_LONGLONG && IX_SHORT_MAX == LONGLONG_MAX - get_ix_short(xp, (ix_short *)ip); - return NC_NOERR; -#else - ix_short xx; - get_ix_short(xp, &xx); - *ip = (longlong) xx; -#if IX_SHORT_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX || xx < LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_short_ushort(const void *xp, ushort *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (ushort) xx; -#if IX_SHORT_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_short_uchar(const void *xp, uchar *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (uchar) xx; -#if IX_SHORT_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_short_uint(const void *xp, uint *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (uint) xx; -#if IX_SHORT_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_short_ulonglong(const void *xp, ulonglong *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (ulonglong) xx; -#if IX_SHORT_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_short_float(const void *xp, float *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_short_double(const void *xp, double *ip) -{ - ix_short xx; - get_ix_short(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_short_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - *cp++ = 0xff; - else - *cp++ = 0; - *cp = (uchar)(signed)*ip; - return NC_NOERR; -} - -static int -ncx_put_short_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0; - *cp = *ip; - return NC_NOERR; -} - -static int -ncx_put_short_short(void *xp, const short *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_SHORT && IX_SHORT_MAX == SHORT_MAX - put_ix_short(xp, (const ix_short *)ip); - return NC_NOERR; -#else - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < SHORT_MAX - if (*ip > IX_SHORT_MAX || *ip < X_SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_short_int(void *xp, const int *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_INT && IX_SHORT_MAX == INT_MAX - put_ix_short(xp, (const ix_short *)ip); - return NC_NOERR; -#else - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < INT_MAX - if (*ip > IX_SHORT_MAX || *ip < X_SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_short_longlong(void *xp, const longlong *ip) -{ -#if SIZEOF_IX_SHORT == SIZEOF_LONGLONG && IX_SHORT_MAX == LONGLONG_MAX - put_ix_short(xp, (const ix_short *)ip); - return NC_NOERR; -#else - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < LONGLONG_MAX - if (*ip > IX_SHORT_MAX || *ip < X_SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_short_ushort(void *xp, const ushort *ip) -{ - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < USHORT_MAX - if (*ip > IX_SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_short_uint(void *xp, const uint *ip) -{ - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < UINT_MAX - if (*ip > IX_SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_short_ulonglong(void *xp, const ulonglong *ip) -{ - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); -#if IX_SHORT_MAX < ULONGLONG_MAX - if (*ip > IX_SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_short_float(void *xp, const float *ip) -{ - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); - if(*ip > (double)X_SHORT_MAX || *ip < (double)X_SHORT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_short_double(void *xp, const double *ip) -{ - ix_short xx = (ix_short)*ip; - put_ix_short(xp, &xx); - if(*ip > X_SHORT_MAX || *ip < X_SHORT_MIN) return NC_ERANGE; - return NC_NOERR; -} - - -/* x_ushort ------------------------------------------------------------------*/ - -#if USHORT_MAX == X_USHORT_MAX -typedef unsigned short ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_USHORT -#define IX_USHORT_MAX USHORT_MAX -#elif UINT_MAX >= X_USHORT_MAX -typedef unsigned int ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_UINT -#define IX_USHORT_MAX UINT_MAX -#elif ULONG_MAX >= X_USHORT_MAX -typedef unsigned long ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_ULONG -#define IX_USHORT_MAX ULONG_MAX -#elif ULLONG_MAX >= X_USHORT_MAX -typedef unsigned long long ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_ULONG_LONG -#define IX_USHORT_MAX ULLONG_MAX -#else -#error "ix_ushort implementation" -#endif - -static void -get_ix_ushort(const void *xp, ix_ushort *ip) -{ - const uchar *cp = (const uchar *) xp; - *ip = *cp++ << 8; -#if SIZEOF_IX_SHORT > X_SIZEOF_SHORT - if(*ip & 0x8000) - { - /* extern is negative */ - *ip |= (~(0xffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= *cp; -} - -static void -put_ix_ushort(void *xp, const ix_ushort *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = (*ip) >> 8; - *cp = (*ip) & 0xff; -} - -static int -ncx_get_ushort_schar(const void *xp, schar *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (schar) xx; -#if IX_USHORT_MAX > SCHAR_MAX - if (xx > SCHAR_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ushort_short(const void *xp, short *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (short) xx; -#if IX_USHORT_MAX > SHORT_MAX - if (xx > SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ushort_int(const void *xp, int *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (int) xx; -#if IX_USHORT_MAX > INT_MAX - if (xx > INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ushort_longlong(const void *xp, longlong *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (longlong) xx; -#if IX_USHORT_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ushort_ushort(const void *xp, ushort *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_USHORT && IX_USHORT_MAX == USHORT_MAX - get_ix_ushort(xp, (ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (ushort) xx; -#if IX_USHORT_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ushort_uchar(const void *xp, uchar *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_UCHAR && IX_USHORT_MAX == UCHAR_MAX - get_ix_ushort(xp, (ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (uchar) xx; -#if IX_USHORT_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ushort_uint(const void *xp, uint *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_UINT && IX_USHORT_MAX == UINT_MAX - get_ix_ushort(xp, (ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (uint) xx; -#if IX_USHORT_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ushort_ulonglong(const void *xp, ulonglong *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_ULONGLONG && IX_USHORT_MAX == ULONGLONG_MAX - get_ix_ushort(xp, (ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (ulonglong) xx; -#if IX_USHORT_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ushort_float(const void *xp, float *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_ushort_double(const void *xp, double *ip) -{ - ix_ushort xx; - get_ix_ushort(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_ushort_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - *cp++ = 0xff; - else - *cp++ = 0; - *cp = (uchar)(signed)*ip; - if (*ip < 0) return NC_ERANGE; - - return NC_NOERR; -} - -static int -ncx_put_ushort_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0; - *cp = *ip; - return NC_NOERR; -} - -static int -ncx_put_ushort_short(void *xp, const short *ip) -{ - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < SHORT_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ushort_int(void *xp, const int *ip) -{ - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < INT_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ushort_longlong(void *xp, const longlong *ip) -{ - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < LONGLONG_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ushort_ushort(void *xp, const ushort *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_USHORT && IX_USHORT_MAX == USHORT_MAX - put_ix_ushort(xp, (const ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < USHORT_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ushort_uint(void *xp, const uint *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_UINT && IX_USHORT_MAX == UINT_MAX - put_ix_ushort(xp, (const ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < UINT_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ushort_ulonglong(void *xp, const ulonglong *ip) -{ -#if SIZEOF_IX_USHORT == SIZEOF_ULONGLONG && IX_USHORT_MAX == ULONGLONG_MAX - put_ix_ushort(xp, (const ix_ushort *)ip); - return NC_NOERR; -#else - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); -#if IX_USHORT_MAX < ULONGLONG_MAX - if (*ip > IX_USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ushort_float(void *xp, const float *ip) -{ - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); - if(*ip > (double)X_USHORT_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_ushort_double(void *xp, const double *ip) -{ - ix_ushort xx = (ix_ushort)*ip; - put_ix_ushort(xp, &xx); - if(*ip > X_USHORT_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - - -/* x_int ---------------------------------------------------------------------*/ - -#if SHORT_MAX == X_INT_MAX -typedef short ix_int; -#define SIZEOF_IX_INT SIZEOF_SHORT -#define IX_INT_MAX SHORT_MAX -#elif INT_MAX >= X_INT_MAX -typedef int ix_int; -#define SIZEOF_IX_INT SIZEOF_INT -#define IX_INT_MAX INT_MAX -#elif LONG_MAX >= X_INT_MAX -typedef long ix_int; -#define SIZEOF_IX_INT SIZEOF_LONG -#define IX_INT_MAX LONG_MAX -#else -#error "ix_int implementation" -#endif - - -static void -get_ix_int(const void *xp, ix_int *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = *cp++ << 24; -#if SIZEOF_IX_INT > X_SIZEOF_INT - if(*ip & 0x80000000) - { - /* extern is negative */ - *ip |= (~(0xffffffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; -} - -static void -put_ix_int(void *xp, const ix_int *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 24; - *cp++ = ((*ip) & 0x00ff0000) >> 16; - *cp++ = ((*ip) & 0x0000ff00) >> 8; - *cp = ((*ip) & 0x000000ff); -} - -static int -ncx_get_int_schar(const void *xp, schar *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (schar) xx; -#if IX_INT_MAX > SCHAR_MAX - if (xx > SCHAR_MAX || xx < SCHAR_MIN) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_int_short(const void *xp, short *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_SHORT && IX_INT_MAX == SHORT_MAX - get_ix_int(xp, (ix_int *)ip); - return NC_NOERR; -#else - ix_int xx; - get_ix_int(xp, &xx); - *ip = (short) xx; -#if IX_INT_MAX > SHORT_MAX - if (xx > SHORT_MAX || xx < SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - - int -ncx_get_int_int(const void *xp, int *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_INT && IX_INT_MAX == INT_MAX - get_ix_int(xp, (ix_int *)ip); - return NC_NOERR; -#else - ix_int xx; - get_ix_int(xp, &xx); - *ip = (int) xx; -#if IX_INT_MAX > INT_MAX - if (xx > INT_MAX || xx < INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_int_longlong(const void *xp, longlong *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_LONGLONG && IX_INT_MAX == LONGLONG_MAX - get_ix_int(xp, (ix_int *)ip); - return NC_NOERR; -#else - ix_int xx; - get_ix_int(xp, &xx); - *ip = (longlong) xx; -#if IX_INT_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX || xx < LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_int_ushort(const void *xp, ushort *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (ushort) xx; -#if IX_INT_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_int_uchar(const void *xp, uchar *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (uchar) xx; -#if IX_INT_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_int_uint(const void *xp, uint *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (uint) xx; -#if IX_INT_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_int_ulonglong(const void *xp, ulonglong *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (ulonglong) xx; -#if IX_INT_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_int_float(const void *xp, float *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_int_double(const void *xp, double *ip) -{ - ix_int xx; - get_ix_int(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_int_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - { - *cp++ = 0xff; - *cp++ = 0xff; - *cp++ = 0xff; - } - else - { - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - } - *cp = (uchar)(signed)*ip; - return NC_NOERR; -} - -static int -ncx_put_int_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = *ip; - return NC_NOERR; -} - -static int -ncx_put_int_short(void *xp, const short *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_SHORT && IX_INT_MAX == SHORT_MAX - put_ix_int(xp, (const ix_int *)ip); - return NC_NOERR; -#else - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < SHORT_MAX - if (*ip > IX_INT_MAX || *ip < X_INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - - int -ncx_put_int_int(void *xp, const int *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_INT && IX_INT_MAX == INT_MAX - put_ix_int(xp, (const ix_int *)ip); - return NC_NOERR; -#else - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < INT_MAX - if (*ip > IX_INT_MAX || *ip < X_INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_int_longlong(void *xp, const longlong *ip) -{ -#if SIZEOF_IX_INT == SIZEOF_LONGLONG && IX_INT_MAX == LONGLONG_MAX - put_ix_int(xp, (const ix_int *)ip); - return NC_NOERR; -#else - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < LONGLONG_MAX - if (*ip > IX_INT_MAX || *ip < X_INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_int_ushort(void *xp, const ushort *ip) -{ - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < USHORT_MAX - if (*ip > IX_INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_int_uint(void *xp, const uint *ip) -{ - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < UINT_MAX - if (*ip > IX_INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_int_ulonglong(void *xp, const ulonglong *ip) -{ - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); -#if IX_INT_MAX < ULONGLONG_MAX - if (*ip > IX_INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_int_float(void *xp, const float *ip) -{ - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); - if(*ip > (double)X_INT_MAX || *ip < (double)X_INT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_int_double(void *xp, const double *ip) -{ - ix_int xx = (ix_int)*ip; - put_ix_int(xp, &xx); - if(*ip > X_INT_MAX || *ip < X_INT_MIN) return NC_ERANGE; - return NC_NOERR; -} - - - -/* x_uint --------------------------------------------------------------------*/ - -#if USHORT_MAX == X_UINT_MAX -typedef ushort ix_uint; -#define SIZEOF_IX_UINT SIZEOF_USHORT -#define IX_UINT_MAX USHORT_MAX -#elif UINT_MAX >= X_UINT_MAX -typedef uint ix_uint; -#define SIZEOF_IX_UINT SIZEOF_UINT -#define IX_UINT_MAX UINT_MAX -#elif ULONG_MAX >= X_UINT_MAX -typedef ulong ix_uint; -#define SIZEOF_IX_UINT SIZEOF_ULONG -#define IX_UINT_MAX ULONG_MAX -#else -#error "ix_uint implementation" -#endif - - -static void -get_ix_uint(const void *xp, ix_uint *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = *cp++ << 24; - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; -} - -static void -put_ix_uint(void *xp, const ix_uint *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 24; - *cp++ = ((*ip) & 0x00ff0000) >> 16; - *cp++ = ((*ip) & 0x0000ff00) >> 8; - *cp = ((*ip) & 0x000000ff); -} - -#if X_SIZEOF_UINT != SIZEOF_UINT -static int -ncx_get_uint_uint(const void *xp, uint *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_UINT && IX_UINT_MAX == UINT_MAX - get_ix_uint(xp, (ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (uint) xx; -#if IX_UINT_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -#endif - -static int -ncx_get_uint_schar(const void *xp, schar *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (schar) xx; -#if IX_UINT_MAX > SCHAR_MAX - if (xx > SCHAR_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_uint_short(const void *xp, short *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (short) xx; -#if IX_UINT_MAX > SHORT_MAX - if (xx > SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_uint_int(const void *xp, int *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (int) xx; -#if IX_UINT_MAX > INT_MAX - if (xx > INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_uint_longlong(const void *xp, longlong *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (longlong) xx; -#if IX_UINT_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_uint_ushort(const void *xp, ushort *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_USHORT && IX_UINT_MAX == USHORT_MAX - get_ix_uint(xp, (ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (ushort) xx; -#if IX_UINT_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_uint_uchar(const void *xp, uchar *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_UCHAR && IX_UINT_MAX == UCHAR_MAX - get_ix_uint(xp, (ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (uchar) xx; -#if IX_UINT_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_uint_ulonglong(const void *xp, ulonglong *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_ULONGLONG && IX_UINT_MAX == ULONGLONG_MAX - get_ix_uint(xp, (ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (ulonglong) xx; -#if IX_UINT_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_uint_float(const void *xp, float *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_uint_double(const void *xp, double *ip) -{ - ix_uint xx; - get_ix_uint(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_uint_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = (uchar)(signed)*ip; - - if (*ip < 0) return NC_ERANGE; - - return NC_NOERR; -} - -static int -ncx_put_uint_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = *ip; - return NC_NOERR; -} - -#if X_SIZEOF_UINT != SIZEOF_UINT -static int -ncx_put_uint_uint(void *xp, const uint *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_UINT && IX_UINT_MAX == UINT_MAX - put_ix_uint(xp, (const ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < UINT_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -#endif - -static int -ncx_put_uint_short(void *xp, const short *ip) -{ - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < SHORT_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_uint_int(void *xp, const int *ip) -{ - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < INT_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_uint_longlong(void *xp, const longlong *ip) -{ - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < LONGLONG_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_uint_ushort(void *xp, const ushort *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_USHORT && IX_UINT_MAX == USHORT_MAX - put_ix_uint(xp, (const ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < USHORT_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_uint_ulonglong(void *xp, const ulonglong *ip) -{ -#if SIZEOF_IX_UINT == SIZEOF_ULONGLONG && IX_UINT_MAX == ULONGLONG_MAX - put_ix_uint(xp, (const ix_uint *)ip); - return NC_NOERR; -#else - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); -#if IX_UINT_MAX < ULONGLONG_MAX - if (*ip > IX_UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_uint_float(void *xp, const float *ip) -{ - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); - if(*ip > (double)X_UINT_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_uint_double(void *xp, const double *ip) -{ - ix_uint xx = (ix_uint)*ip; - put_ix_uint(xp, &xx); - if(*ip > X_UINT_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - - -/* x_float -------------------------------------------------------------------*/ - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) - -static void -get_ix_float(const void *xp, float *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(ip, xp, sizeof(float)); -#else - swap4b(ip, xp); -#endif -} - -static void -put_ix_float(void *xp, const float *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(xp, ip, X_SIZEOF_FLOAT); -#else - swap4b(xp, ip); -#endif -} - -#elif vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int exp_hi : 7; - unsigned int sign : 1; - unsigned int mant_hi : 7; - unsigned int exp_lo : 1; - unsigned int mant_lo_hi : 8; - unsigned int mant_lo_lo : 8; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} max = { - { 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0 } /* Max IEEE */ -}; -static struct sgl_limits min = { - { 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } /* Min IEEE */ -}; - -static void -get_ix_float(const void *xp, float *ip) -{ - struct vax_single *const vsp = (struct vax_single *) ip; - const struct ieee_single *const isp = - (const struct ieee_single *) xp; - unsigned exp = isp->exp_hi << 1 | isp->exp_lo; - - switch(exp) { - case 0 : - /* ieee subnormal */ - if(isp->mant_hi == min.ieee.mant_hi - && isp->mant_lo_hi == min.ieee.mant_lo_hi - && isp->mant_lo_lo == min.ieee.mant_lo_lo) - { - *vsp = min.s; - } - else - { - unsigned mantissa = (isp->mant_hi << 16) - | isp->mant_lo_hi << 8 - | isp->mant_lo_lo; - unsigned tmp = mantissa >> 20; - if(tmp >= 4) { - vsp->exp = 2; - } else if (tmp >= 2) { - vsp->exp = 1; - } else { - *vsp = min.s; - break; - } /* else */ - tmp = mantissa - (1 << (20 + vsp->exp )); - tmp <<= 3 - vsp->exp; - vsp->mantissa2 = tmp; - vsp->mantissa1 = (tmp >> 16); - } - break; - case 0xfe : - case 0xff : - *vsp = max.s; - break; - default : - vsp->exp = exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = isp->mant_lo_hi << 8 | isp->mant_lo_lo; - vsp->mantissa1 = isp->mant_hi; - } - - vsp->sign = isp->sign; - -} - - -static void -put_ix_float(void *xp, const float *ip) -{ - const struct vax_single *const vsp = - (const struct vax_single *)ip; - struct ieee_single *const isp = (struct ieee_single *) xp; - - switch(vsp->exp){ - case 0 : - /* all vax float with zero exponent map to zero */ - *isp = min.ieee; - break; - case 2 : - case 1 : - { - /* These will map to subnormals */ - unsigned mantissa = (vsp->mantissa1 << 16) - | vsp->mantissa2; - mantissa >>= 3 - vsp->exp; - mantissa += (1 << (20 + vsp->exp)); - isp->mant_lo_lo = mantissa; - isp->mant_lo_hi = mantissa >> 8; - isp->mant_hi = mantissa >> 16; - isp->exp_lo = 0; - isp->exp_hi = 0; - } - break; - case 0xff : /* max.s.exp */ - if( vsp->mantissa2 == max.s.mantissa2 - && vsp->mantissa1 == max.s.mantissa1) - { - /* map largest vax float to ieee infinity */ - *isp = max.ieee; - break; - } /* else, fall thru */ - default : - { - unsigned exp = vsp->exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - isp->exp_hi = exp >> 1; - isp->exp_lo = exp; - isp->mant_lo_lo = vsp->mantissa2; - isp->mant_lo_hi = vsp->mantissa2 >> 8; - isp->mant_hi = vsp->mantissa1; - } - } - - isp->sign = vsp->sign; - -} - - /* vax */ -#elif defined(_CRAY) && !defined(__crayx1) - -/* - * Return the number of bytes until the next "word" boundary - * N.B. This is based on the very weird YMP address structure, - * which puts the address within a word in the leftmost 3 bits - * of the address. - */ -static size_t -word_align(const void *vp) -{ - const size_t rem = ((size_t)vp >> (64 - 3)) & 0x7; - return (rem != 0); -} - -struct ieee_single_hi { - unsigned int sign : 1; - unsigned int exp : 8; - unsigned int mant :23; - unsigned int pad :32; -}; -typedef struct ieee_single_hi ieee_single_hi; - -struct ieee_single_lo { - unsigned int pad :32; - unsigned int sign : 1; - unsigned int exp : 8; - unsigned int mant :23; -}; -typedef struct ieee_single_lo ieee_single_lo; - -static const int ieee_single_bias = 0x7f; - -struct ieee_double { - unsigned int sign : 1; - unsigned int exp :11; - unsigned int mant :52; -}; -typedef struct ieee_double ieee_double; - -static const int ieee_double_bias = 0x3ff; - -#if defined(NO_IEEE_FLOAT) - -struct cray_single { - unsigned int sign : 1; - unsigned int exp :15; - unsigned int mant :48; -}; -typedef struct cray_single cray_single; - -static const int cs_ieis_bias = 0x4000 - 0x7f; - -static const int cs_id_bias = 0x4000 - 0x3ff; - - -static void -get_ix_float(const void *xp, float *ip) -{ - - if(word_align(xp) == 0) - { - const ieee_single_hi *isp = (const ieee_single_hi *) xp; - cray_single *csp = (cray_single *) ip; - - if(isp->exp == 0) - { - /* ieee subnormal */ - *ip = (double)isp->mant; - if(isp->mant != 0) - { - csp->exp -= (ieee_single_bias + 22); - } - } - else - { - csp->exp = isp->exp + cs_ieis_bias + 1; - csp->mant = isp->mant << (48 - 1 - 23); - csp->mant |= (1 << (48 - 1)); - } - csp->sign = isp->sign; - - - } - else - { - const ieee_single_lo *isp = (const ieee_single_lo *) xp; - cray_single *csp = (cray_single *) ip; - - if(isp->exp == 0) - { - /* ieee subnormal */ - *ip = (double)isp->mant; - if(isp->mant != 0) - { - csp->exp -= (ieee_single_bias + 22); - } - } - else - { - csp->exp = isp->exp + cs_ieis_bias + 1; - csp->mant = isp->mant << (48 - 1 - 23); - csp->mant |= (1 << (48 - 1)); - } - csp->sign = isp->sign; - - - } -} - -static void -put_ix_float(void *xp, const float *ip) -{ - if(word_align(xp) == 0) - { - ieee_single_hi *isp = (ieee_single_hi*)xp; - const cray_single *csp = (const cray_single *) ip; - int ieee_exp = csp->exp - cs_ieis_bias -1; - - isp->sign = csp->sign; - - if(ieee_exp >= 0xff) - { - /* NC_ERANGE => ieee Inf */ - isp->exp = 0xff; - isp->mant = 0x0; - } - else if(ieee_exp > 0) - { - /* normal ieee representation */ - isp->exp = ieee_exp; - /* assumes cray rep is in normal form */ - assert(csp->mant & 0x800000000000); - isp->mant = (((csp->mant << 1) & - 0xffffffffffff) >> (48 - 23)); - } - else if(ieee_exp > -23) - { - /* ieee subnormal, right shift */ - const int rshift = (48 - 23 - ieee_exp); - - isp->mant = csp->mant >> rshift; - -#if 0 - if(csp->mant & (1 << (rshift -1))) - { - /* round up */ - isp->mant++; - } -#endif - - isp->exp = 0; - } - else - { - /* smaller than ieee can represent */ - isp->exp = 0; - isp->mant = 0; - } - - } - else - { - ieee_single_lo *isp = (ieee_single_lo*)xp; - const cray_single *csp = (const cray_single *) ip; - int ieee_exp = csp->exp - cs_ieis_bias -1; - - isp->sign = csp->sign; - - if(ieee_exp >= 0xff) - { - /* NC_ERANGE => ieee Inf */ - isp->exp = 0xff; - isp->mant = 0x0; - } - else if(ieee_exp > 0) - { - /* normal ieee representation */ - isp->exp = ieee_exp; - /* assumes cray rep is in normal form */ - assert(csp->mant & 0x800000000000); - isp->mant = (((csp->mant << 1) & - 0xffffffffffff) >> (48 - 23)); - } - else if(ieee_exp > -23) - { - /* ieee subnormal, right shift */ - const int rshift = (48 - 23 - ieee_exp); - - isp->mant = csp->mant >> rshift; - -#if 0 - if(csp->mant & (1 << (rshift -1))) - { - /* round up */ - isp->mant++; - } -#endif - - isp->exp = 0; - } - else - { - /* smaller than ieee can represent */ - isp->exp = 0; - isp->mant = 0; - } - - } -} - -#else - /* IEEE Cray with only doubles */ -static void -get_ix_float(const void *xp, float *ip) -{ - - ieee_double *idp = (ieee_double *) ip; - - if(word_align(xp) == 0) - { - const ieee_single_hi *isp = (const ieee_single_hi *) xp; - if(isp->exp == 0 && isp->mant == 0) - { - idp->exp = 0; - idp->mant = 0; - } - else - { - idp->exp = isp->exp + (ieee_double_bias - ieee_single_bias); - idp->mant = isp->mant << (52 - 23); - } - idp->sign = isp->sign; - } - else - { - const ieee_single_lo *isp = (const ieee_single_lo *) xp; - if(isp->exp == 0 && isp->mant == 0) - { - idp->exp = 0; - idp->mant = 0; - } - else - { - idp->exp = isp->exp + (ieee_double_bias - ieee_single_bias); - idp->mant = isp->mant << (52 - 23); - } - idp->sign = isp->sign; - } -} - -static void -put_ix_float(void *xp, const float *ip) -{ - const ieee_double *idp = (const ieee_double *) ip; - if(word_align(xp) == 0) - { - ieee_single_hi *isp = (ieee_single_hi*)xp; - if(idp->exp > (ieee_double_bias - ieee_single_bias)) - isp->exp = idp->exp - (ieee_double_bias - ieee_single_bias); - else - isp->exp = 0; - isp->mant = idp->mant >> (52 - 23); - isp->sign = idp->sign; - } - else - { - ieee_single_lo *isp = (ieee_single_lo*)xp; - if(idp->exp > (ieee_double_bias - ieee_single_bias)) - isp->exp = idp->exp - (ieee_double_bias - ieee_single_bias); - else - isp->exp = 0; - isp->mant = idp->mant >> (52 - 23); - isp->sign = idp->sign; - } -} -#endif - -#else -#error "ix_float implementation" -#endif - -#if X_SIZEOF_FLOAT != SIZEOF_FLOAT || defined(NO_IEEE_FLOAT) -static int -ncx_get_float_float(const void *xp, float *ip) -{ - /* TODO */ - get_ix_float(xp, ip); - return NC_NOERR; -} -#endif - -#define ix_float float - -static int -ncx_get_float_schar(const void *xp, schar *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (schar) xx; - if(xx > (double)SCHAR_MAX || xx < (double)SCHAR_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_short(const void *xp, short *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (short) xx; - if(xx > (double)SHORT_MAX || xx < (double)SHORT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_int(const void *xp, int *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (int) xx; - if(xx > (double)INT_MAX || xx < (double)INT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_double(const void *xp, double *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - -static int -ncx_get_float_longlong(const void *xp, longlong *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (longlong) xx; - if(xx > (double)LONGLONG_MAX || xx < (double)LONGLONG_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_uchar(const void *xp, uchar *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (uchar) xx; - if(xx > (double)UCHAR_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_ushort(const void *xp, ushort *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (ushort) xx; - if(xx > (double)USHORT_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_uint(const void *xp, uint *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (uint) xx; - if(xx > (double)UINT_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_float_ulonglong(const void *xp, ulonglong *ip) -{ - ix_float xx; - get_ix_float(xp, &xx); - *ip = (ulonglong) xx; - if(xx > (double)ULONGLONG_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - - -#if X_SIZEOF_FLOAT != SIZEOF_FLOAT || defined(NO_IEEE_FLOAT) -static int -ncx_put_float_float(void *xp, const float *ip) -{ - put_ix_float(xp, ip); -#ifdef NO_IEEE_FLOAT - if(*ip > X_FLOAT_MAX || *ip < X_FLOAT_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} -#endif - -static int -ncx_put_float_schar(void *xp, const schar *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_short(void *xp, const short *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_int(void *xp, const int *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_double(void *xp, const double *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - if(*ip > X_FLOAT_MAX || *ip < X_FLOAT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_float_longlong(void *xp, const longlong *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_uchar(void *xp, const uchar *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_ushort(void *xp, const ushort *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_uint(void *xp, const uint *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_float_ulonglong(void *xp, const ulonglong *ip) -{ - ix_float xx = (ix_float)*ip; - put_ix_float(xp, &xx); - - return NC_NOERR; -} - - - -/* x_double ------------------------------------------------------------------*/ - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) - -static void -get_ix_double(const void *xp, double *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(ip, xp, sizeof(double)); -#else - swap8b(ip, xp); -#endif -} - -static void -put_ix_double(void *xp, const double *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(xp, ip, X_SIZEOF_DOUBLE); -#else - swap8b(xp, ip); -#endif -} - -#elif vax - -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int exp_hi : 7; - unsigned int sign : 1; - unsigned int mant_6 : 4; - unsigned int exp_lo : 4; - unsigned int mant_5 : 8; - unsigned int mant_4 : 8; - - unsigned int mant_lo : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static const struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x7f, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0}}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, /* Min IEEE */ -}; - - -static void -get_ix_double(const void *xp, double *ip) -{ - struct vax_double *const vdp = - (struct vax_double *)ip; - const struct ieee_double *const idp = - (const struct ieee_double *) xp; - { - const struct dbl_limits *lim; - int ii; - for (ii = 0, lim = dbl_limits; - ii < sizeof(dbl_limits)/sizeof(struct dbl_limits); - ii++, lim++) - { - if ((idp->mant_lo == lim->ieee.mant_lo) - && (idp->mant_4 == lim->ieee.mant_4) - && (idp->mant_5 == lim->ieee.mant_5) - && (idp->mant_6 == lim->ieee.mant_6) - && (idp->exp_lo == lim->ieee.exp_lo) - && (idp->exp_hi == lim->ieee.exp_hi) - ) - { - *vdp = lim->d; - goto doneit; - } - } - } - { - unsigned exp = idp->exp_hi << 4 | idp->exp_lo; - vdp->exp = exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - } - { - unsigned mant_hi = ((idp->mant_6 << 16) - | (idp->mant_5 << 8) - | idp->mant_4); - unsigned mant_lo = SWAP4(idp->mant_lo); - vdp->mantissa1 = (mant_hi >> 13); - vdp->mantissa2 = ((mant_hi & MASK(13)) << 3) - | (mant_lo >> 29); - vdp->mantissa3 = (mant_lo >> 13); - vdp->mantissa4 = (mant_lo << 3); - } - doneit: - vdp->sign = idp->sign; - -} - - -static void -put_ix_double(void *xp, const double *ip) -{ - const struct vax_double *const vdp = - (const struct vax_double *)ip; - struct ieee_double *const idp = - (struct ieee_double *) xp; - - if ((vdp->mantissa4 > (dbl_limits[0].d.mantissa4 - 3)) && - (vdp->mantissa3 == dbl_limits[0].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[0].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[0].d.mantissa1) && - (vdp->exp == dbl_limits[0].d.exp)) - { - *idp = dbl_limits[0].ieee; - goto shipit; - } - if ((vdp->mantissa4 == dbl_limits[1].d.mantissa4) && - (vdp->mantissa3 == dbl_limits[1].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[1].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[1].d.mantissa1) && - (vdp->exp == dbl_limits[1].d.exp)) - { - *idp = dbl_limits[1].ieee; - goto shipit; - } - - { - unsigned exp = vdp->exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - - unsigned mant_lo = ((vdp->mantissa2 & MASK(3)) << 29) | - (vdp->mantissa3 << 13) | - ((vdp->mantissa4 >> 3) & MASK(13)); - - unsigned mant_hi = (vdp->mantissa1 << 13) - | (vdp->mantissa2 >> 3); - - if((vdp->mantissa4 & 7) > 4) - { - /* round up */ - mant_lo++; - if(mant_lo == 0) - { - mant_hi++; - if(mant_hi > 0xffffff) - { - mant_hi = 0; - exp++; - } - } - } - - idp->mant_lo = SWAP4(mant_lo); - idp->mant_6 = mant_hi >> 16; - idp->mant_5 = (mant_hi & 0xff00) >> 8; - idp->mant_4 = mant_hi; - idp->exp_hi = exp >> 4; - idp->exp_lo = exp; - } - - shipit: - idp->sign = vdp->sign; - -} - - /* vax */ -#elif defined(_CRAY) && !defined(__crayx1) - -static void -get_ix_double(const void *xp, double *ip) -{ - const ieee_double *idp = (const ieee_double *) xp; - cray_single *csp = (cray_single *) ip; - - if(idp->exp == 0) - { - /* ieee subnormal */ - *ip = (double)idp->mant; - if(idp->mant != 0) - { - csp->exp -= (ieee_double_bias + 51); - } - } - else - { - csp->exp = idp->exp + cs_id_bias + 1; - csp->mant = idp->mant >> (52 - 48 + 1); - csp->mant |= (1 << (48 - 1)); - } - csp->sign = idp->sign; -} - -static void -put_ix_double(void *xp, const double *ip) -{ - ieee_double *idp = (ieee_double *) xp; - const cray_single *csp = (const cray_single *) ip; - - int ieee_exp = csp->exp - cs_id_bias -1; - - idp->sign = csp->sign; - - if(ieee_exp >= 0x7ff) - { - /* NC_ERANGE => ieee Inf */ - idp->exp = 0x7ff; - idp->mant = 0x0; - } - else if(ieee_exp > 0) - { - /* normal ieee representation */ - idp->exp = ieee_exp; - /* assumes cray rep is in normal form */ - assert(csp->mant & 0x800000000000); - idp->mant = (((csp->mant << 1) & - 0xffffffffffff) << (52 - 48)); - } - else if(ieee_exp >= (-(52 -48))) - { - /* ieee subnormal, left shift */ - const int lshift = (52 - 48) + ieee_exp; - idp->mant = csp->mant << lshift; - idp->exp = 0; - } - else if(ieee_exp >= -52) - { - /* ieee subnormal, right shift */ - const int rshift = (- (52 - 48) - ieee_exp); - - idp->mant = csp->mant >> rshift; - -#if 0 - if(csp->mant & (1 << (rshift -1))) - { - /* round up */ - idp->mant++; - } -#endif - - idp->exp = 0; - } - else - { - /* smaller than ieee can represent */ - idp->exp = 0; - idp->mant = 0; - } -} -#else -#error "ix_double implementation" -#endif - -#define ix_double double - -static int -ncx_get_double_schar(const void *xp, schar *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (schar) xx; - if(xx > SCHAR_MAX || xx < SCHAR_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_short(const void *xp, short *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (short) xx; - if(xx > SHORT_MAX || xx < SHORT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_int(const void *xp, int *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (int) xx; - if(xx > INT_MAX || xx < INT_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_longlong(const void *xp, longlong *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (longlong) xx; - if(xx > LONGLONG_MAX || xx < LONGLONG_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_uchar(const void *xp, uchar *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (uchar) xx; - if(xx > UCHAR_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_ushort(const void *xp, ushort *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (ushort) xx; - if(xx > USHORT_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_uint(const void *xp, uint *ip) -{ - ix_double xx; - get_ix_double(xp, &xx); - *ip = (uint) xx; - if(xx > UINT_MAX || xx < 0) return NC_ERANGE; - return NC_NOERR; -} - - -int -ncx_get_double_ulonglong(const void *xp, unsigned long long *ip) -{ - double xx; - get_ix_double(xp, &xx); - *ip = (unsigned long long) xx; - if(xx > ULONG_LONG_MAX || xx < 0) - return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_float(const void *xp, float *ip) -{ - double xx; - get_ix_double(xp, &xx); - if(xx > FLT_MAX) - { - *ip = FLT_MAX; - return NC_ERANGE; - } - if(xx < (-FLT_MAX)) - { - *ip = (-FLT_MAX); - return NC_ERANGE; - } - *ip = (float) xx; - return NC_NOERR; -} - -#if X_SIZEOF_DOUBLE != SIZEOF_DOUBLE || defined(NO_IEEE_FLOAT) -static int -ncx_get_double_double(const void *xp, double *ip) -{ - /* TODO */ - get_ix_double(xp, ip); - return NC_NOERR; -} -#endif - -static int -ncx_put_double_schar(void *xp, const schar *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_uchar(void *xp, const uchar *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_short(void *xp, const short *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_ushort(void *xp, const ushort *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_int(void *xp, const int *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_uint(void *xp, const uint *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_longlong(void *xp, const longlong *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - -static int -ncx_put_double_ulonglong(void *xp, const ulonglong *ip) -{ - ix_double xx = (ix_double)*ip; - put_ix_double(xp, &xx); - - return NC_NOERR; -} - - -static int -ncx_put_double_float(void *xp, const float *ip) -{ - double xx = (double) *ip; - put_ix_double(xp, &xx); -#if 1 /* TODO: figure this out */ - if((double)(*ip) > X_DOUBLE_MAX || (double)(*ip) < X_DOUBLE_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} - -#if X_SIZEOF_DOUBLE != SIZEOF_DOUBLE || defined(NO_IEEE_FLOAT) -static int -ncx_put_double_double(void *xp, const double *ip) -{ - put_ix_double(xp, ip); -#ifdef NO_IEEE_FLOAT - if(*ip > X_DOUBLE_MAX || *ip < X_DOUBLE_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} -#endif - - -/* x_longlong ---------------------------------------------------------------------*/ - -#if SHORT_MAX == X_LONGLONG_MAX -typedef short ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_SHORT -#define IX_LONGLONG_MAX SHORT_MAX -#elif LONG_LONG_MAX >= X_LONGLONG_MAX -typedef longlong ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_LONGLONG -#define IX_LONGLONG_MAX LONG_LONG_MAX -#elif LONG_MAX >= X_LONGLONG_MAX -typedef long ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_LONG -#define IX_LONGLONG_MAX LONG_MAX -#else -#error "ix_longlong implementation" -#endif - - -static void -get_ix_longlong(const void *xp, ix_longlong *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = ((long long)(*cp++) << 56); - *ip |= ((long long)(*cp++) << 48); - *ip |= ((long long)(*cp++) << 40); - *ip |= ((long long)(*cp++) << 32); - *ip |= ((long long)(*cp++) << 24); - *ip |= ((long long)(*cp++) << 16); - *ip |= ((long long)(*cp++) << 8); - *ip |= (long long)*cp; -} - -static void -put_ix_longlong(void *xp, const ix_longlong *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 56; - *cp++ = ((*ip) & 0x00ff000000000000LL) >> 48; - *cp++ = ((*ip) & 0x0000ff0000000000LL) >> 40; - *cp++ = ((*ip) & 0x000000ff00000000LL) >> 32; - *cp++ = ((*ip) & 0x00000000ff000000LL) >> 24; - *cp++ = ((*ip) & 0x0000000000ff0000LL) >> 16; - *cp++ = ((*ip) & 0x000000000000ff00LL) >> 8; - *cp = ((*ip) & 0x00000000000000ffLL); -} - -static int -ncx_get_longlong_schar(const void *xp, schar *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (schar) xx; -#if IX_LONGLONG_MAX > SCHAR_MAX - if (xx > SCHAR_MAX || xx < SCHAR_MIN) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_longlong_short(const void *xp, short *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_SHORT && IX_LONGLONG_MAX == SHORT_MAX - get_ix_longlong(xp, (ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (short) xx; -#if IX_LONGLONG_MAX > SHORT_MAX - if (xx > SHORT_MAX || xx < SHORT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_longlong_int(const void *xp, int *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_INT && IX_LONGLONG_MAX == INT_MAX - get_ix_longlong(xp, (ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (int) xx; -#if IX_LONGLONG_MAX > INT_MAX - if (xx > INT_MAX || xx < INT_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_longlong_longlong(const void *xp, longlong *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_LONGLONG && IX_LONGLONG_MAX == LONGLONG_MAX - get_ix_longlong(xp, (ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (longlong) xx; -#if IX_LONGLONG_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX || xx < LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_longlong_ushort(const void *xp, ushort *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (ushort) xx; -#if IX_LONGLONG_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_longlong_uchar(const void *xp, uchar *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (uchar) xx; -#if IX_LONGLONG_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_longlong_uint(const void *xp, uint *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (uint) xx; -#if IX_LONGLONG_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_longlong_ulonglong(const void *xp, ulonglong *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (ulonglong) xx; -#if IX_LONGLONG_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - if (xx < 0) return NC_ERANGE; /* because ip is unsigned */ - return NC_NOERR; -} - -static int -ncx_get_longlong_float(const void *xp, float *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_longlong_double(const void *xp, double *ip) -{ - ix_longlong xx; - get_ix_longlong(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_longlong_schar(void *xp, const schar *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < SCHAR_MAX - if (*ip > IX_LONGLONG_MAX || *ip < X_LONGLONG_MIN) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_longlong_short(void *xp, const short *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_SHORT && IX_LONGLONG_MAX == SHORT_MAX - put_ix_longlong(xp, (const ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < SHORT_MAX - if (*ip > IX_LONGLONG_MAX || *ip < X_LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_longlong_int(void *xp, const int *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_INT && IX_LONGLONG_MAX == INT_MAX - put_ix_longlong(xp, (const ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < INT_MAX - if (*ip > IX_LONGLONG_MAX || *ip < X_LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_longlong_longlong(void *xp, const longlong *ip) -{ -#if SIZEOF_IX_LONGLONG == SIZEOF_LONGLONG && IX_LONGLONG_MAX == LONGLONG_MAX - put_ix_longlong(xp, (const ix_longlong *)ip); - return NC_NOERR; -#else - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < LONGLONG_MAX - if (*ip > IX_LONGLONG_MAX || *ip < X_LONGLONG_MIN) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_longlong_ushort(void *xp, const ushort *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < USHORT_MAX - if (*ip > IX_LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_longlong_uchar(void *xp, const uchar *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < UCHAR_MAX - if (*ip > IX_LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_longlong_uint(void *xp, const uint *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < UINT_MAX - if (*ip > IX_LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_longlong_ulonglong(void *xp, const ulonglong *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); -#if IX_LONGLONG_MAX < ULONGLONG_MAX - if (*ip > IX_LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_put_longlong_float(void *xp, const float *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); - if(*ip > (double)X_LONGLONG_MAX || *ip < (double)X_LONGLONG_MIN) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_longlong_double(void *xp, const double *ip) -{ - ix_longlong xx = (ix_longlong)*ip; - put_ix_longlong(xp, &xx); - if(*ip > X_LONGLONG_MAX || *ip < X_LONGLONG_MIN) return NC_ERANGE; - return NC_NOERR; -} - - -/* x_ulonglong --------------------------------------------------------------------*/ - -#if USHORT_MAX == X_ULONGLONG_MAX -typedef ushort ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_USHORT -#define IX_ULONGLONG_MAX USHORT_MAX -#elif ULONG_LONG_MAX >= X_ULONGLONG_MAX -typedef ulonglong ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_ULONGLONG -#define IX_ULONGLONG_MAX ULONG_LONG_MAX -#elif ULONG_MAX >= X_ULONGLONG_MAX -typedef ulong ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_ULONG -#define IX_ULONGLONG_MAX ULONG_MAX -#else -#error "ix_ulonglong implementation" -#endif - - -static void -get_ix_ulonglong(const void *xp, ix_ulonglong *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = ((unsigned long long)(*cp++) << 56); - *ip |= ((unsigned long long)(*cp++) << 48); - *ip |= ((unsigned long long)(*cp++) << 40); - *ip |= ((unsigned long long)(*cp++) << 32); - *ip |= ((unsigned long long)(*cp++) << 24); - *ip |= ((unsigned long long)(*cp++) << 16); - *ip |= ((unsigned long long)(*cp++) << 8); - *ip |= (unsigned long long)*cp; -} - -static void -put_ix_ulonglong(void *xp, const ix_ulonglong *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 56; - *cp++ = ((*ip) & 0x00ff000000000000ULL) >> 48; - *cp++ = ((*ip) & 0x0000ff0000000000ULL) >> 40; - *cp++ = ((*ip) & 0x000000ff00000000ULL) >> 32; - *cp++ = ((*ip) & 0x00000000ff000000ULL) >> 24; - *cp++ = ((*ip) & 0x0000000000ff0000ULL) >> 16; - *cp++ = ((*ip) & 0x000000000000ff00ULL) >> 8; - *cp = ((*ip) & 0x00000000000000ffULL); -} - -static int -ncx_get_ulonglong_schar(const void *xp, schar *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (schar) xx; -#if IX_ULONGLONG_MAX > SCHAR_MAX - if (xx > SCHAR_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ulonglong_short(const void *xp, short *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (short) xx; -#if IX_ULONGLONG_MAX > SHORT_MAX - if (xx > SHORT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ulonglong_int(const void *xp, int *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (int) xx; -#if IX_ULONGLONG_MAX > INT_MAX - if (xx > INT_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ulonglong_longlong(const void *xp, longlong *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (longlong) xx; -#if IX_ULONGLONG_MAX > LONGLONG_MAX - if (xx > LONGLONG_MAX) return NC_ERANGE; -#endif - - return NC_NOERR; -} - -static int -ncx_get_ulonglong_ushort(const void *xp, ushort *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_USHORT && IX_ULONGLONG_MAX == USHORT_MAX - get_ix_ulonglong(xp, (ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (ushort) xx; -#if IX_ULONGLONG_MAX > USHORT_MAX - if (xx > USHORT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ulonglong_uchar(const void *xp, uchar *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_UCHAR && IX_ULONGLONG_MAX == UCHAR_MAX - get_ix_ulonglong(xp, (ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (uchar) xx; -#if IX_ULONGLONG_MAX > UCHAR_MAX - if (xx > UCHAR_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ulonglong_uint(const void *xp, uint *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_UINT && IX_ULONGLONG_MAX == UINT_MAX - get_ix_ulonglong(xp, (ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (uint) xx; -#if IX_ULONGLONG_MAX > UINT_MAX - if (xx > UINT_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ulonglong_ulonglong(const void *xp, ulonglong *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_ULONGLONG && IX_ULONGLONG_MAX == ULONGLONG_MAX - get_ix_ulonglong(xp, (ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (ulonglong) xx; -#if IX_ULONGLONG_MAX > ULONGLONG_MAX - if (xx > ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_get_ulonglong_float(const void *xp, float *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (float) xx; - - return NC_NOERR; -} - -static int -ncx_get_ulonglong_double(const void *xp, double *ip) -{ - ix_ulonglong xx; - get_ix_ulonglong(xp, &xx); - *ip = (double) xx; - - return NC_NOERR; -} - - -static int -ncx_put_ulonglong_schar(void *xp, const schar *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < SCHAR_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ulonglong_short(void *xp, const short *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < SHORT_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ulonglong_int(void *xp, const int *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < INT_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ulonglong_longlong(void *xp, const longlong *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < LONGLONG_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */ - return NC_NOERR; -} - -static int -ncx_put_ulonglong_uchar(void *xp, const uchar *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_UCHAR && IX_ULONGLONG_MAX == UCHAR_MAX - put_ix_ulonglong(xp, (const ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < UCHAR_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ulonglong_ushort(void *xp, const ushort *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_USHORT && IX_ULONGLONG_MAX == USHORT_MAX - put_ix_ulonglong(xp, (const ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < USHORT_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ulonglong_uint(void *xp, const uint *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_UINT && IX_ULONGLONG_MAX == UINT_MAX - put_ix_ulonglong(xp, (const ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < UINT_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ulonglong_ulonglong(void *xp, const ulonglong *ip) -{ -#if SIZEOF_IX_ULONGLONG == SIZEOF_ULONGLONG && IX_ULONGLONG_MAX == ULONGLONG_MAX - put_ix_ulonglong(xp, (const ix_ulonglong *)ip); - return NC_NOERR; -#else - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); -#if IX_ULONGLONG_MAX < ULONGLONG_MAX - if (*ip > IX_ULONGLONG_MAX) return NC_ERANGE; -#endif - -#endif - return NC_NOERR; -} - -static int -ncx_put_ulonglong_float(void *xp, const float *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); - if(*ip > (double)X_ULONGLONG_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_put_ulonglong_double(void *xp, const double *ip) -{ - ix_ulonglong xx = (ix_ulonglong)*ip; - put_ix_ulonglong(xp, &xx); - if(*ip > X_ULONGLONG_MAX || *ip < 0) return NC_ERANGE; - return NC_NOERR; -} - - -/* x_size_t */ - -#if SIZEOF_SIZE_T < X_SIZEOF_SIZE_T -#error "x_size_t implementation" -/* netcdf requires size_t which can hold a values from 0 to 2^32 -1 */ -#endif - -int -ncx_put_size_t(void **xpp, const size_t *ulp) -{ - /* similar to put_ix_int() */ - uchar *cp = (uchar *) *xpp; - assert(*ulp <= X_SIZE_MAX); - - *cp++ = (uchar)((*ulp) >> 24); - *cp++ = (uchar)(((*ulp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*ulp) & 0x0000ff00) >> 8); - *cp = (uchar)((*ulp) & 0x000000ff); - - *xpp = (void *)((char *)(*xpp) + X_SIZEOF_SIZE_T); - return NC_NOERR; -} - -int -ncx_get_size_t(const void **xpp, size_t *ulp) -{ - /* similar to get_ix_int */ - const uchar *cp = (const uchar *) *xpp; - - *ulp = (unsigned)(*cp++ << 24); - *ulp |= (*cp++ << 16); - *ulp |= (*cp++ << 8); - *ulp |= *cp; - - *xpp = (const void *)((const char *)(*xpp) + X_SIZEOF_SIZE_T); - return NC_NOERR; -} - -/* x_off_t */ - -int -ncx_put_off_t(void **xpp, const off_t *lp, size_t sizeof_off_t) -{ - /* similar to put_ix_int() */ - uchar *cp = (uchar *) *xpp; - /* No negative offsets stored in netcdf */ - if (*lp < 0) { - /* Assume this is an overflow of a 32-bit int... */ - return NC_ERANGE; - } - - assert(sizeof_off_t == 4 || sizeof_off_t == 8); - - if (sizeof_off_t == 4) { - *cp++ = (uchar) ((*lp) >> 24); - *cp++ = (uchar)(((*lp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*lp) & 0x0000ff00) >> 8); - *cp = (uchar)( (*lp) & 0x000000ff); - } else { -#if SIZEOF_OFF_T == 4 -/* Write a 64-bit offset on a system with only a 32-bit offset */ - *cp++ = (uchar)0; - *cp++ = (uchar)0; - *cp++ = (uchar)0; - *cp++ = (uchar)0; - - *cp++ = (uchar)(((*lp) & 0xff000000) >> 24); - *cp++ = (uchar)(((*lp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*lp) & 0x0000ff00) >> 8); - *cp = (uchar)( (*lp) & 0x000000ff); -#else - *cp++ = (uchar) ((*lp) >> 56); - *cp++ = (uchar)(((*lp) & 0x00ff000000000000ULL) >> 48); - *cp++ = (uchar)(((*lp) & 0x0000ff0000000000ULL) >> 40); - *cp++ = (uchar)(((*lp) & 0x000000ff00000000ULL) >> 32); - *cp++ = (uchar)(((*lp) & 0x00000000ff000000ULL) >> 24); - *cp++ = (uchar)(((*lp) & 0x0000000000ff0000ULL) >> 16); - *cp++ = (uchar)(((*lp) & 0x000000000000ff00ULL) >> 8); - *cp = (uchar)( (*lp) & 0x00000000000000ffULL); -#endif - } - *xpp = (void *)((char *)(*xpp) + sizeof_off_t); - return NC_NOERR; -} - -int -ncx_get_off_t(const void **xpp, off_t *lp, size_t sizeof_off_t) -{ - /* similar to get_ix_int() */ - const uchar *cp = (const uchar *) *xpp; - assert(sizeof_off_t == 4 || sizeof_off_t == 8); - - if (sizeof_off_t == 4) { - *lp = (off_t)(*cp++ << 24); - *lp |= (off_t)(*cp++ << 16); - *lp |= (off_t)(*cp++ << 8); - *lp |= (off_t)*cp; - } else { -#if SIZEOF_OFF_T == 4 -/* Read a 64-bit offset on a system with only a 32-bit offset */ -/* If the offset overflows, set an error code and return */ - *lp = ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= ((off_t)(*cp++)); -/* - * lp now contains the upper 32-bits of the 64-bit offset. if lp is - * not zero, then the dataset is larger than can be represented - * on this system. Set an error code and return. - */ - if (*lp != 0) { - return NC_ERANGE; - } - - *lp = ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= (off_t)*cp; - - if (*lp < 0) { - /* - * If this fails, then the offset is >2^31, but less - * than 2^32 which is not allowed, but is not caught - * by the previous check - */ - return NC_ERANGE; - } -#else - *lp = ((off_t)(*cp++) << 56); - *lp |= ((off_t)(*cp++) << 48); - *lp |= ((off_t)(*cp++) << 40); - *lp |= ((off_t)(*cp++) << 32); - *lp |= ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= (off_t)*cp; -#endif - } - *xpp = (const void *)((const char *)(*xpp) + sizeof_off_t); - return NC_NOERR; -} - -/*----< ncx_get_int32() >--------------------------------------------------*/ -int -ncx_get_int32(const void **xpp, - int *ip) -{ - const uchar *cp = (const uchar *) *xpp; - - /* cannot call swap4b(), as lp is 8-byte */ - *ip = (*cp++ << 24); - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; - - /* advance *xpp 4 bytes */ - *xpp = (void *)((const char *)(*xpp) + 4); - - return NC_NOERR; -} - -/*----< ncx_get_int64() >-------------------------------------------------*/ -int -ncx_get_int64(const void **xpp, - long long *llp) -{ - const uchar *cp = (const uchar *) *xpp; - - /* below is the same as calling swap8b(llp, *xpp) */ - *llp = ((long long)(*cp++) << 56); - *llp |= ((long long)(*cp++) << 48); - *llp |= ((long long)(*cp++) << 40); - *llp |= ((long long)(*cp++) << 32); - *llp |= ((long long)(*cp++) << 24); - *llp |= ((long long)(*cp++) << 16); - *llp |= ((long long)(*cp++) << 8); - *llp |= (long long)*cp; - - /* advance *xpp 8 bytes */ - *xpp = (void *)((const char *)(*xpp) + 8); - - return NC_NOERR; -} - -/*---< ncx_put_int32() >-----------------------------------------------------*/ -/* copy the contents of lp (a signed 32-bit integer) to xpp in Big Endian - * form and advance *xpp 4 bytes - */ -int -ncx_put_int32(void **xpp, - const int ip) -{ -#ifdef WORDS_BIGENDIAN - int *ptr = (int*) (*xpp); /* typecast to 4-byte integer */ - *ptr = ip; -#else - /* bitwise shifts below are to produce an integer in Big Endian */ - /* cannot call swap4b(), as lp is 8-byte */ - uchar *cp = (uchar *) *xpp; - *cp++ = (uchar)((ip & 0xff000000) >> 24); - *cp++ = (uchar)((ip & 0x00ff0000) >> 16); - *cp++ = (uchar)((ip & 0x0000ff00) >> 8); - *cp = (uchar)( ip & 0x000000ff); -#endif - /* advance *xpp 4 bytes */ - *xpp = (void *)((char *)(*xpp) + 4); - - return NC_NOERR; -} - -/*---< ncx_put_int64() >-----------------------------------------------------*/ -/* copy the contents of lp (a signed 64-bit integer) to xpp in Big Endian - * form and advance *xpp 8 bytes - */ -int -ncx_put_int64(void **xpp, - const long long ip) -{ -#ifdef WORDS_BIGENDIAN - long long *ptr = (long long*) (*xpp); /* typecast to 8-byte integer */ - *ptr = ip; -#else - uchar *cp = (uchar *) *xpp; - /* below is the same as calling swap8b(*xpp, &ip) */ - *cp++ = (uchar)((ip & 0xff00000000000000ULL) >> 56); - *cp++ = (uchar)((ip & 0x00ff000000000000ULL) >> 48); - *cp++ = (uchar)((ip & 0x0000ff0000000000ULL) >> 40); - *cp++ = (uchar)((ip & 0x000000ff00000000ULL) >> 32); - *cp++ = (uchar)((ip & 0x00000000ff000000ULL) >> 24); - *cp++ = (uchar)((ip & 0x0000000000ff0000ULL) >> 16); - *cp++ = (uchar)((ip & 0x000000000000ff00ULL) >> 8); - *cp = (uchar)( ip & 0x00000000000000ffULL); -#endif - /* advance *xpp 8 bytes */ - *xpp = (void *)((char *)(*xpp) + 8); - - return NC_NOERR; -} - - -/* - * Aggregate numeric conversion functions. - */ - - - -/* schar ---------------------------------------------------------------------*/ - -int -ncx_getn_schar_schar(const void **xpp, size_t nelems, schar *tp) -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} -int -ncx_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} -int -ncx_getn_schar_short(const void **xpp, size_t nelems, short *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_int(const void **xpp, size_t nelems, int *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_float(const void **xpp, size_t nelems, float *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_double(const void **xpp, size_t nelems, double *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_uint(const void **xpp, size_t nelems, uint *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *)(*xpp); - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - - -int -ncx_pad_getn_schar_schar(const void **xpp, size_t nelems, schar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} -int -ncx_pad_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} -int -ncx_pad_getn_schar_short(const void **xpp, size_t nelems, short *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_int(const void **xpp, size_t nelems, int *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_float(const void **xpp, size_t nelems, float *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_double(const void **xpp, size_t nelems, double *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_uint(const void **xpp, size_t nelems, uint *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if (*xp < 0) status = NC_ERANGE; - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - - -int -ncx_putn_schar_schar(void **xpp, size_t nelems, const schar *tp) -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} -int -ncx_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} -int -ncx_putn_schar_short(void **xpp, size_t nelems, const short *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_int(void **xpp, size_t nelems, const int *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_float(void **xpp, size_t nelems, const float *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_double(void **xpp, size_t nelems, const double *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_uint(void **xpp, size_t nelems, const uint *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - int status = NC_NOERR; - schar *xp = (schar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - - -int -ncx_pad_putn_schar_schar(void **xpp, size_t nelems, const schar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} -int -ncx_pad_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} -int -ncx_pad_putn_schar_short(void **xpp, size_t nelems, const short *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_int(void **xpp, size_t nelems, const int *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_float(void **xpp, size_t nelems, const float *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_double(void **xpp, size_t nelems, const double *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_uint(void **xpp, size_t nelems, const uint *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - schar *xp = (schar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_SCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (schar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - - - -/* uchar ---------------------------------------------------------------------*/ -int -ncx_getn_uchar_schar(const void **xpp, size_t nelems, schar *tp) -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} -int -ncx_getn_uchar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} -int -ncx_getn_uchar_short(const void **xpp, size_t nelems, short *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_int(const void **xpp, size_t nelems, int *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_float(const void **xpp, size_t nelems, float *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_double(const void **xpp, size_t nelems, double *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_uint(const void **xpp, size_t nelems, uint *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - -int -ncx_getn_uchar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *)(*xpp); - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} - - -int -ncx_pad_getn_uchar_schar(const void **xpp, size_t nelems, schar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} -int -ncx_pad_getn_uchar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} -int -ncx_pad_getn_uchar_short(const void **xpp, size_t nelems, short *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_int(const void **xpp, size_t nelems, int *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_float(const void **xpp, size_t nelems, float *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_double(const void **xpp, size_t nelems, double *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_uint(const void **xpp, size_t nelems, uint *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - -int -ncx_pad_getn_uchar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} - - -int -ncx_putn_uchar_schar(void **xpp, size_t nelems, const schar *tp) -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} -int -ncx_putn_uchar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} -int -ncx_putn_uchar_short(void **xpp, size_t nelems, const short *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_int(void **xpp, size_t nelems, const int *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_float(void **xpp, size_t nelems, const float *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_double(void **xpp, size_t nelems, const double *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_uint(void **xpp, size_t nelems, const uint *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_putn_uchar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - int status = NC_NOERR; - uchar *xp = (uchar *) *xpp; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} - - -int -ncx_pad_putn_uchar_schar(void **xpp, size_t nelems, const schar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} -int -ncx_pad_putn_uchar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} -int -ncx_pad_putn_uchar_short(void **xpp, size_t nelems, const short *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_int(void **xpp, size_t nelems, const int *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_float(void **xpp, size_t nelems, const float *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_double(void **xpp, size_t nelems, const double *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX || *tp < 0) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_uint(void **xpp, size_t nelems, const uint *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_uchar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - uchar *xp = (uchar *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > X_UCHAR_MAX ) - status = NC_ERANGE; - *xp++ = (uchar) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} - - -/* short ---------------------------------------------------------------------*/ - -#if X_SIZEOF_SHORT == SIZEOF_SHORT -/* optimized version */ -int -ncx_getn_short_short(const void **xpp, size_t nelems, short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(short)); -# else - swapn2b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_SHORT); - return NC_NOERR; -} -#else -int -ncx_getn_short_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX || xp[i] < SHORT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_short_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX || xp[i] < SCHAR_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX || xp[i] < INT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX || xp[i] < FLOAT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX || xp[i] < DOUBLE_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX || xp[i] < LONGLONG_MIN; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (short *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -int -ncx_pad_getn_short_schar(const void **xpp, size_t nelems, schar *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_short(const void **xpp, size_t nelems, short *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_int(const void **xpp, size_t nelems, int *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_float(const void **xpp, size_t nelems, float *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_double(const void **xpp, size_t nelems, double *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_uint(const void **xpp, size_t nelems, uint *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_short_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - const int lstatus = ncx_get_short_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_SHORT; - *xpp = (void *)xp; - return status; -} - - -#if X_SIZEOF_SHORT == SIZEOF_SHORT -/* optimized version */ -int -ncx_putn_short_short(void **xpp, size_t nelems, const short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_SHORT); -# else - swapn2b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_SHORT); - return NC_NOERR; -} -#else -int -ncx_putn_short_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_short_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX || tp[i] < X_SHORT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_short_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - short tmp[LOOPCNT]; /* in case input is misaligned */ - short *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_SHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_SHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT); - xp = (short *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - -int -ncx_pad_putn_short_schar(void **xpp, size_t nelems, const schar *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_short(void **xpp, size_t nelems, const short *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_int(void **xpp, size_t nelems, const int *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_float(void **xpp, size_t nelems, const float *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_double(void **xpp, size_t nelems, const double *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_uint(void **xpp, size_t nelems, const uint *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_short_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++) - { - int lstatus = ncx_put_short_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_SHORT); - xp += X_SIZEOF_SHORT; - } - - *xpp = (void *)xp; - return status; -} - - - -/* ushort --------------------------------------------------------------------*/ - -#if X_SIZEOF_USHORT == SIZEOF_USHORT -/* optimized version */ -int -ncx_getn_ushort_ushort(const void **xpp, size_t nelems, unsigned short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(unsigned short)); -# else - swapn2b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_USHORT); - return NC_NOERR; -} -#else -int -ncx_getn_ushort_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_ushort_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ushort_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ushort *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -int -ncx_pad_getn_ushort_schar(const void **xpp, size_t nelems, schar *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_short(const void **xpp, size_t nelems, short *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_ushort(const void **xpp, size_t nelems, ushort *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_int(const void **xpp, size_t nelems, int *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_uint(const void **xpp, size_t nelems, uint *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_float(const void **xpp, size_t nelems, float *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_double(const void **xpp, size_t nelems, double *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_longlong(const void **xpp, size_t nelems, longlong *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_getn_ushort_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - const int lstatus = ncx_get_ushort_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += X_SIZEOF_USHORT; - *xpp = (void *)xp; - return status; -} - - -#if X_SIZEOF_USHORT == SIZEOF_USHORT -/* optimized version */ -int -ncx_putn_ushort_ushort(void **xpp, size_t nelems, const unsigned short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_USHORT); -# else - swapn2b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_USHORT); - return NC_NOERR; -} -#else -int -ncx_putn_ushort_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_ushort_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ushort_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_USHORT == SIZEOF_USHORT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ushort tmp[LOOPCNT]; /* in case input is misaligned */ - ushort *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_USHORT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_USHORT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_USHORT); - xp = (ushort *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - -int -ncx_pad_putn_ushort_schar(void **xpp, size_t nelems, const schar *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_short(void **xpp, size_t nelems, const short *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_int(void **xpp, size_t nelems, const int *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_float(void **xpp, size_t nelems, const float *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_double(void **xpp, size_t nelems, const double *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_uint(void **xpp, size_t nelems, const uint *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_longlong(void **xpp, size_t nelems, const longlong *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - -int -ncx_pad_putn_ushort_ushort(void **xpp, size_t nelems, const ushort *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_USHORT, tp++) - { - int lstatus = ncx_put_ushort_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, X_SIZEOF_USHORT); - xp += X_SIZEOF_USHORT; - } - - *xpp = (void *)xp; - return status; -} - - - -/* int -----------------------------------------------------------------------*/ - -#if X_SIZEOF_INT == SIZEOF_INT -/* optimized version */ -int -ncx_getn_int_int(const void **xpp, size_t nelems, int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(int)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_INT); - return NC_NOERR; -} -#else -int -ncx_getn_int_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX || xp[i] < INT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_int_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX || xp[i] < SCHAR_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX || xp[i] < SHORT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX || xp[i] < FLOAT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX || xp[i] < DOUBLE_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX || xp[i] < LONGLONG_MIN; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_int_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (int *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - const int lstatus = ncx_get_int_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_INT == SIZEOF_INT -/* optimized version */ -int -ncx_putn_int_int(void **xpp, size_t nelems, const int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_INT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_INT); - return NC_NOERR; -} -#else -int -ncx_putn_int_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_int_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - double d; /* special case for ncx_putn_int_float */ - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX || tp[i] < X_INT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_int_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_INT == SIZEOF_INT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - int tmp[LOOPCNT]; /* in case input is misaligned */ - int *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_INT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_INT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_INT); - xp = (int *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++) - { - int lstatus = ncx_put_int_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - -/* uint ----------------------------------------------------------------------*/ - -#if X_SIZEOF_UINT == SIZEOF_UINT -/* optimized version */ -int -ncx_getn_uint_uint(const void **xpp, size_t nelems, unsigned int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(uint)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_UINT); - return NC_NOERR; -} -#else -int -ncx_getn_uint_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_uint_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_uint_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (uint *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - const int lstatus = ncx_get_uint_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_UINT == SIZEOF_UINT -/* optimized version */ -int -ncx_putn_uint_uint(void **xpp, size_t nelems, const unsigned int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_UINT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_UINT); - return NC_NOERR; -} -#else -int -ncx_putn_uint_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_uint_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_uint_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_UINT == SIZEOF_UINT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - uint tmp[LOOPCNT]; /* in case input is misaligned */ - uint *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_UINT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_UINT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_UINT); - xp = (uint *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_UINT, tp++) - { - int lstatus = ncx_put_uint_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - - -/* float ---------------------------------------------------------------------*/ - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_getn_float_float(const void **xpp, size_t nelems, float *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(float)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_FLOAT); - return NC_NOERR; -} -#elif vax -int -ncx_getn_float_float(const void **xpp, size_t nfloats, float *ip) -{ - float *const end = ip + nfloats; - - while(ip < end) - { - struct vax_single *const vsp = (struct vax_single *) ip; - const struct ieee_single *const isp = - (const struct ieee_single *) (*xpp); - unsigned exp = isp->exp_hi << 1 | isp->exp_lo; - - switch(exp) { - case 0 : - /* ieee subnormal */ - if(isp->mant_hi == min.ieee.mant_hi - && isp->mant_lo_hi == min.ieee.mant_lo_hi - && isp->mant_lo_lo == min.ieee.mant_lo_lo) - { - *vsp = min.s; - } - else - { - unsigned mantissa = (isp->mant_hi << 16) - | isp->mant_lo_hi << 8 - | isp->mant_lo_lo; - unsigned tmp = mantissa >> 20; - if(tmp >= 4) { - vsp->exp = 2; - } else if (tmp >= 2) { - vsp->exp = 1; - } else { - *vsp = min.s; - break; - } /* else */ - tmp = mantissa - (1 << (20 + vsp->exp )); - tmp <<= 3 - vsp->exp; - vsp->mantissa2 = tmp; - vsp->mantissa1 = (tmp >> 16); - } - break; - case 0xfe : - case 0xff : - *vsp = max.s; - break; - default : - vsp->exp = exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = isp->mant_lo_hi << 8 | isp->mant_lo_lo; - vsp->mantissa1 = isp->mant_hi; - } - - vsp->sign = isp->sign; - - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_FLOAT; - } - return NC_NOERR; -} -#else -int -ncx_getn_float_float(const void **xpp, size_t nelems, float *tp) -{ - const char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -} - -#endif -int -ncx_getn_float_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX || xp[i] < SCHAR_MIN; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX || xp[i] < SHORT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX || xp[i] < INT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX || xp[i] < DOUBLE_MIN; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX || xp[i] < LONGLONG_MIN; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_float_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (float *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_putn_float_float(void **xpp, size_t nelems, const float *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_FLOAT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_FLOAT); - return NC_NOERR; -} -#elif vax -int -ncx_putn_float_float(void **xpp, size_t nfloats, const float *ip) -{ - const float *const end = ip + nfloats; - - while(ip < end) - { - const struct vax_single *const vsp = - (const struct vax_single *)ip; - struct ieee_single *const isp = (struct ieee_single *) (*xpp); - - switch(vsp->exp){ - case 0 : - /* all vax float with zero exponent map to zero */ - *isp = min.ieee; - break; - case 2 : - case 1 : - { - /* These will map to subnormals */ - unsigned mantissa = (vsp->mantissa1 << 16) - | vsp->mantissa2; - mantissa >>= 3 - vsp->exp; - mantissa += (1 << (20 + vsp->exp)); - isp->mant_lo_lo = mantissa; - isp->mant_lo_hi = mantissa >> 8; - isp->mant_hi = mantissa >> 16; - isp->exp_lo = 0; - isp->exp_hi = 0; - } - break; - case 0xff : /* max.s.exp */ - if( vsp->mantissa2 == max.s.mantissa2 - && vsp->mantissa1 == max.s.mantissa1) - { - /* map largest vax float to ieee infinity */ - *isp = max.ieee; - break; - } /* else, fall thru */ - default : - { - unsigned exp = vsp->exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - isp->exp_hi = exp >> 1; - isp->exp_lo = exp; - isp->mant_lo_lo = vsp->mantissa2; - isp->mant_lo_hi = vsp->mantissa2 >> 8; - isp->mant_hi = vsp->mantissa1; - } - } - - isp->sign = vsp->sign; - - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_FLOAT; - } - return NC_NOERR; -} -#else -int -ncx_putn_float_float(void **xpp, size_t nelems, const float *tp) -{ - char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -} -#endif -int -ncx_putn_float_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX || tp[i] < X_FLOAT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX || tp[i] < X_FLOAT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX || tp[i] < X_FLOAT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX || tp[i] < X_FLOAT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX || tp[i] < X_FLOAT_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_float_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - float tmp[LOOPCNT]; /* in case input is misaligned */ - float *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_FLOAT; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_FLOAT_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT); - xp = (float *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - -/* double --------------------------------------------------------------------*/ - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_getn_double_double(const void **xpp, size_t nelems, double *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(double)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_DOUBLE); - return NC_NOERR; -} -#elif vax -int -ncx_getn_double_double(const void **xpp, size_t ndoubles, double *ip) -{ - double *const end = ip + ndoubles; - - while(ip < end) - { - struct vax_double *const vdp = - (struct vax_double *)ip; - const struct ieee_double *const idp = - (const struct ieee_double *) (*xpp); - { - const struct dbl_limits *lim; - int ii; - for (ii = 0, lim = dbl_limits; - ii < sizeof(dbl_limits)/sizeof(struct dbl_limits); - ii++, lim++) - { - if ((idp->mant_lo == lim->ieee.mant_lo) - && (idp->mant_4 == lim->ieee.mant_4) - && (idp->mant_5 == lim->ieee.mant_5) - && (idp->mant_6 == lim->ieee.mant_6) - && (idp->exp_lo == lim->ieee.exp_lo) - && (idp->exp_hi == lim->ieee.exp_hi) - ) - { - *vdp = lim->d; - goto doneit; - } - } - } - { - unsigned exp = idp->exp_hi << 4 | idp->exp_lo; - vdp->exp = exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - } - { - unsigned mant_hi = ((idp->mant_6 << 16) - | (idp->mant_5 << 8) - | idp->mant_4); - unsigned mant_lo = SWAP4(idp->mant_lo); - vdp->mantissa1 = (mant_hi >> 13); - vdp->mantissa2 = ((mant_hi & MASK(13)) << 3) - | (mant_lo >> 29); - vdp->mantissa3 = (mant_lo >> 13); - vdp->mantissa4 = (mant_lo << 3); - } - doneit: - vdp->sign = idp->sign; - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE; - } - return NC_NOERR; -} - /* vax */ -#else -int -ncx_getn_double_double(const void **xpp, size_t nelems, double *tp) -{ - const char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -} -#endif -int -ncx_getn_double_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX || xp[i] < SCHAR_MIN; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX || xp[i] < SHORT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX || xp[i] < INT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX || xp[i] < FLOAT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX || xp[i] < LONGLONG_MIN; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_double_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (double *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_putn_double_double(void **xpp, size_t nelems, const double *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_DOUBLE); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_DOUBLE); - return NC_NOERR; -} -#elif vax -int -ncx_putn_double_double(void **xpp, size_t ndoubles, const double *ip) -{ - const double *const end = ip + ndoubles; - - while(ip < end) - { - const struct vax_double *const vdp = - (const struct vax_double *)ip; - struct ieee_double *const idp = - (struct ieee_double *) (*xpp); - - if ((vdp->mantissa4 > (dbl_limits[0].d.mantissa4 - 3)) && - (vdp->mantissa3 == dbl_limits[0].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[0].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[0].d.mantissa1) && - (vdp->exp == dbl_limits[0].d.exp)) - { - *idp = dbl_limits[0].ieee; - goto shipit; - } - if ((vdp->mantissa4 == dbl_limits[1].d.mantissa4) && - (vdp->mantissa3 == dbl_limits[1].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[1].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[1].d.mantissa1) && - (vdp->exp == dbl_limits[1].d.exp)) - { - *idp = dbl_limits[1].ieee; - goto shipit; - } - - { - unsigned exp = vdp->exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - - unsigned mant_lo = ((vdp->mantissa2 & MASK(3)) << 29) | - (vdp->mantissa3 << 13) | - ((vdp->mantissa4 >> 3) & MASK(13)); - - unsigned mant_hi = (vdp->mantissa1 << 13) - | (vdp->mantissa2 >> 3); - - if((vdp->mantissa4 & 7) > 4) - { - /* round up */ - mant_lo++; - if(mant_lo == 0) - { - mant_hi++; - if(mant_hi > 0xffffff) - { - mant_hi = 0; - exp++; - } - } - } - - idp->mant_lo = SWAP4(mant_lo); - idp->mant_6 = mant_hi >> 16; - idp->mant_5 = (mant_hi & 0xff00) >> 8; - idp->mant_4 = mant_hi; - idp->exp_hi = exp >> 4; - idp->exp_lo = exp; - } - - shipit: - idp->sign = vdp->sign; - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE; - } - return NC_NOERR; -} - /* vax */ -#else -int -ncx_putn_double_double(void **xpp, size_t nelems, const double *tp) -{ - char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -} -#endif -int -ncx_putn_double_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX || tp[i] < X_DOUBLE_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX || tp[i] < X_DOUBLE_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX || tp[i] < X_DOUBLE_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX || tp[i] < X_DOUBLE_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX || tp[i] < X_DOUBLE_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_double_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - double tmp[LOOPCNT]; /* in case input is misaligned */ - double *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_DOUBLE; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_DOUBLE_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE); - xp = (double *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - - -/* longlong -----------------------------------------------------------------------*/ - -#if X_SIZEOF_LONGLONG == SIZEOF_LONGLONG -/* optimized version */ -int -ncx_getn_longlong_longlong(const void **xpp, size_t nelems, long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(long long)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_LONGLONG); - return NC_NOERR; -} -#else -int -ncx_getn_longlong_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX || xp[i] < LONGLONG_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_longlong_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX || xp[i] < SCHAR_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX || xp[i] < SHORT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX || xp[i] < INT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX || xp[i] < FLOAT_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX || xp[i] < DOUBLE_MIN; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_longlong_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX || xp[i] < 0; - } - /* update xpp and tp */ - if (realign) xp = (longlong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - const int lstatus = ncx_get_longlong_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_LONGLONG == SIZEOF_LONGLONG -/* optimized version */ -int -ncx_putn_longlong_longlong(void **xpp, size_t nelems, const long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_LONGLONG); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_LONGLONG); - return NC_NOERR; -} -#else -int -ncx_putn_longlong_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_longlong_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX || tp[i] < X_LONGLONG_MIN; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_longlong_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_LONGLONG == SIZEOF_LONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - longlong tmp[LOOPCNT]; /* in case input is misaligned */ - longlong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_LONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_LONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_LONGLONG); - xp = (longlong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_LONGLONG, tp++) - { - int lstatus = ncx_put_longlong_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - -/* ulonglong ----------------------------------------------------------------------*/ - -#if X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG -/* optimized version */ -int -ncx_getn_ulonglong_ulonglong(const void **xpp, size_t nelems, unsigned long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(unsigned long long)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_ULONGLONG); - return NC_NOERR; -} -#else -int -ncx_getn_ulonglong_ulonglong(const void **xpp, size_t nelems, ulonglong *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > ULONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -#endif -int -ncx_getn_ulonglong_schar(const void **xpp, size_t nelems, schar *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_short(const void **xpp, size_t nelems, short *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > SHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_int(const void **xpp, size_t nelems, int *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > INT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_float(const void **xpp, size_t nelems, float *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > FLOAT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_double(const void **xpp, size_t nelems, double *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > DOUBLE_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_longlong(const void **xpp, size_t nelems, longlong *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > LONGLONG_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_uchar(const void **xpp, size_t nelems, uchar *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UCHAR_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_ushort(const void **xpp, size_t nelems, ushort *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > USHORT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - -int -ncx_getn_ulonglong_uint(const void **xpp, size_t nelems, uint *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > UINT_MAX ; - } - /* update xpp and tp */ - if (realign) xp = (ulonglong *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - const int lstatus = ncx_get_ulonglong_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} - - -#if X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG -/* optimized version */ -int -ncx_putn_ulonglong_ulonglong(void **xpp, size_t nelems, const unsigned long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_ULONGLONG); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_ULONGLONG); - return NC_NOERR; -} -#else -int -ncx_putn_ulonglong_ulonglong(void **xpp, size_t nelems, const ulonglong *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_ulonglong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -#endif -int -ncx_putn_ulonglong_schar(void **xpp, size_t nelems, const schar *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_schar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_short(void **xpp, size_t nelems, const short *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_short(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_int(void **xpp, size_t nelems, const int *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_int(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_float(void **xpp, size_t nelems, const float *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_double(void **xpp, size_t nelems, const double *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_longlong(void **xpp, size_t nelems, const longlong *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX || tp[i] < 0; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_longlong(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_uchar(void **xpp, size_t nelems, const uchar *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_uchar(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_ushort(void **xpp, size_t nelems, const ushort *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_ushort(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - -int -ncx_putn_ulonglong_uint(void **xpp, size_t nelems, const uint *tp) -{ -#if _SX && X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - ulonglong tmp[LOOPCNT]; /* in case input is misaligned */ - ulonglong *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % SIZEOF_ULONGLONG; - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - /* if tp is unsigned, we need not check if tp[i] < X__MIN */ - nrange += tp[i] > X_ULONGLONG_MAX ; - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*X_SIZEOF_ULONGLONG); - xp = (ulonglong *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_ULONGLONG, tp++) - { - int lstatus = ncx_put_ulonglong_uint(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} - - - -/* - * Other aggregate conversion functions. - */ - -/* text */ -#ifdef __arm__ -int -ncx_getn_text(const void **xpp, size_t nelems, signed char *tp) -#else -int -ncx_getn_text(const void **xpp, size_t nelems, char *tp) -#endif -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} - -#ifdef __arm__ -int -ncx_pad_getn_text(const void **xpp, size_t nelems, signed char *tp) -#else -int -ncx_pad_getn_text(const void **xpp, size_t nelems, char *tp) -#endif -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} - -#ifdef __arm__ -int ncx_putn_text(void **xpp, size_t nelems, const signed char *tp) -#else -int -ncx_putn_text(void **xpp, size_t nelems, const char *tp) -#endif -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} - -#ifdef __arm__ -int -ncx_pad_putn_text(void **xpp, size_t nelems, const signed char *tp) -#else -int -ncx_pad_putn_text(void **xpp, size_t nelems, const char *tp) -#endif -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} - - -/* opaque */ - -int -ncx_getn_void(const void **xpp, size_t nelems, void *tp) -{ - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; - -} - -int -ncx_pad_getn_void(const void **xpp, size_t nelems, void *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; - -} - -int -ncx_putn_void(void **xpp, size_t nelems, const void *tp) -{ - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; - -} - -int -ncx_pad_putn_void(void **xpp, size_t nelems, const void *tp) -{ - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; - -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/ncx.m4 b/contrib/netcdf/4.4.1.1/libsrc/ncx.m4 deleted file mode 100644 index 7f0e1e49398..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/ncx.m4 +++ /dev/null @@ -1,3394 +0,0 @@ -dnl -dnl sjl: this version of ncx.m4 has SX-specific optimisations as per -dnl Harveys mods to earlier versions. However, I have removed -dnl support for FLOAT2 and attempted to tidy up the mods to -dnl reduce the complexity a bit -dnl -dnl This is m4 source. -dnl Process using m4 to produce 'C' language file. -dnl -dnl If you see this line, you can ignore the next one. -/* Do not edit this file. It is produced from the corresponding .m4 source */ -dnl -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * - * This file contains some routines derived from code - * which is copyrighted by Sun Microsystems, Inc. - * The "#ifdef vax" versions of - * ncx_put_float_float() - * ncx_get_float_float() - * ncx_put_double_double() - * ncx_get_double_double() - * ncx_putn_float_float() - * ncx_getn_float_float() - * ncx_putn_double_double() - * ncx_getn_double_double() - * are derived from xdr_float() and xdr_double() routines - * in the freely available, copyrighted Sun RPCSRC 3.9 - * distribution, xdr_float.c. - * Our "value added" is that these are always memory to memory, - * they handle IEEE subnormals properly, and their "n" versions - * operate speedily on arrays. - */ -/* $Id: ncx.m4 2795 2014-10-27 23:12:51Z wkliao $ */ - -/* - * An external data representation interface. - */ - -#pragma GCC diagnostic ignored "-Wdeprecated" - -#include "ncx.h" -#include "nc3dispatch.h" -#include -#include - -/* alias poorly named limits.h macros */ -#define SHORT_MAX SHRT_MAX -#define SHORT_MIN SHRT_MIN -#define USHORT_MAX USHRT_MAX -#ifndef LLONG_MAX -# define LLONG_MAX 9223372036854775807LL -# define LLONG_MIN (-LLONG_MAX - 1LL) -# define ULLONG_MAX 18446744073709551615ULL -#endif -#ifndef LONG_LONG_MAX -#define LONG_LONG_MAX LLONG_MAX -#endif -#ifndef LONGLONG_MAX -#define LONGLONG_MAX LONG_LONG_MAX -#endif -#ifndef LONG_LONG_MIN -#define LONG_LONG_MIN LLONG_MIN -#endif -#ifndef LONGLONG_MIN -#define LONGLONG_MIN LONG_LONG_MIN -#endif -#ifndef ULONG_LONG_MAX -#define ULONG_LONG_MAX ULLONG_MAX -#endif -#ifndef ULONGLONG_MAX -#define ULONGLONG_MAX ULONG_LONG_MAX -#endif -#include -#ifndef FLT_MAX /* This POSIX macro missing on some systems */ -# ifndef NO_IEEE_FLOAT -# define FLT_MAX 3.40282347e+38f -# else -# error "You will need to define FLT_MAX" -# endif -#endif -/* alias poorly named float.h macros */ -#define FLOAT_MAX FLT_MAX -#define FLOAT_MIN (-FLT_MAX) -#define DOUBLE_MAX DBL_MAX -#define DOUBLE_MIN (-DBL_MAX) -#define FLOAT_MAX_EXP FLT_MAX_EXP -#define DOUBLE_MAX_EXP DBL_MAX_EXP -#include -#define UCHAR_MIN 0 -#define Min(a,b) ((a) < (b) ? (a) : (b)) -#define Max(a,b) ((a) > (b) ? (a) : (b)) - -#ifndef SIZEOF_USHORT -#define SIZEOF_USHORT SIZEOF_UNSIGNED_SHORT_INT -#endif -#ifndef SIZEOF_UINT -#define SIZEOF_UINT SIZEOF_UNSIGNED_INT -#endif -#ifndef SIZEOF_ULONG_LONG -#define SIZEOF_ULONG_LONG SIZEOF_UNSIGNED_LONG_LONG -#endif - -/* - * If the machine's float domain is "smaller" than the external one - * use the machine domain - */ -#if defined(FLT_MAX_EXP) && FLT_MAX_EXP < 128 /* 128 is X_FLT_MAX_EXP */ -#undef X_FLOAT_MAX -# define X_FLOAT_MAX FLT_MAX -#undef X_FLOAT_MIN -# define X_FLOAT_MIN (-X_FLOAT_MAX) -#endif - -#if _SX /* NEC SUPER UX */ -#define LOOPCNT 256 /* must be no longer than hardware vector length */ -#if _INT64 -#undef INT_MAX /* workaround cpp bug */ -#define INT_MAX X_INT_MAX -#undef INT_MIN /* workaround cpp bug */ -#define INT_MIN X_INT_MIN -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX X_INT_MAX -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN X_INT_MIN -#elif _LONG64 -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX 4294967295L -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN -4294967295L -#endif -#if !_FLOAT0 -#error "FLOAT1 and FLOAT2 not supported" -#endif -#endif /* _SX */ - -static const char nada[X_ALIGN] = {0, 0, 0, 0}; - -#ifndef WORDS_BIGENDIAN -/* LITTLE_ENDIAN: DEC and intel */ -/* - * Routines to convert to BIGENDIAN. - * Optimize the swapn?b() and swap?b() routines aggressivly. - */ - -#define SWAP2(a) ( (((a) & 0xff) << 8) | \ - (((a) >> 8) & 0xff) ) - -#define SWAP4(a) ( ((a) << 24) | \ - (((a) << 8) & 0x00ff0000) | \ - (((a) >> 8) & 0x0000ff00) | \ - (((a) >> 24) & 0x000000ff) ) - - -static void -swapn2b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * - * while(nn-- != 0) - * { - * *op++ = *(++ip); - * *op++ = *(ip++ -1); - * } - */ - while(nn > 3) - { - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - *op++ = *(++ip); - *op++ = *(ip++ -1); - nn -= 4; - } - while(nn-- > 0) - { - *op++ = *(++ip); - *op++ = *(ip++ -1); - } -} - -# ifndef vax -void -swap4b(void *dst, const void *src) -{ - unsigned int *op = dst; - const char *ip = src; - unsigned int tempIn; - unsigned int tempOut; - - tempIn = *(unsigned int *)(ip+0); - tempOut = - ( tempIn << 24) | - ((tempIn & 0x0000ff00) << 8) | - ((tempIn & 0x00ff0000) >> 8) | - ( tempIn >> 24); - - *(float *)op = *(float *)(&tempOut); -} -# endif /* !vax */ - -static void -swapn4b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * while(nn-- != 0) - * { - * op[0] = ip[3]; - * op[1] = ip[2]; - * op[2] = ip[1]; - * op[3] = ip[0]; - * op += 4; - * ip += 4; - * } - */ - while(nn > 3) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; - op[8] = ip[11]; - op[9] = ip[10]; - op[10] = ip[9]; - op[11] = ip[8]; - op[12] = ip[15]; - op[13] = ip[14]; - op[14] = ip[13]; - op[15] = ip[12]; - op += 16; - ip += 16; - nn -= 4; - } - while(nn-- > 0) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op += 4; - ip += 4; - } -} - -# ifndef vax -static void -swap8b(void *dst, const void *src) -{ - char *op = dst; - const char *ip = src; -# ifndef FLOAT_WORDS_BIGENDIAN - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; -# else - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; -# endif -} -# endif /* !vax */ - -# ifndef vax -static void -swapn8b(void *dst, const void *src, size_t nn) -{ - char *op = dst; - const char *ip = src; - -/* unroll the following to reduce loop overhead - * while(nn-- != 0) - * { - * op[0] = ip[7]; - * op[1] = ip[6]; - * op[2] = ip[5]; - * op[3] = ip[4]; - * op[4] = ip[3]; - * op[5] = ip[2]; - * op[6] = ip[1]; - * op[7] = ip[0]; - * op += 8; - * ip += 8; - * } - */ -# ifndef FLOAT_WORDS_BIGENDIAN - while(nn > 1) - { - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; - op[8] = ip[15]; - op[9] = ip[14]; - op[10] = ip[13]; - op[11] = ip[12]; - op[12] = ip[11]; - op[13] = ip[10]; - op[14] = ip[9]; - op[15] = ip[8]; - op += 16; - ip += 16; - nn -= 2; - } - while(nn-- != 0) - { - op[0] = ip[7]; - op[1] = ip[6]; - op[2] = ip[5]; - op[3] = ip[4]; - op[4] = ip[3]; - op[5] = ip[2]; - op[6] = ip[1]; - op[7] = ip[0]; - op += 8; - ip += 8; - } -# else - while(nn-- != 0) - { - op[0] = ip[3]; - op[1] = ip[2]; - op[2] = ip[1]; - op[3] = ip[0]; - op[4] = ip[7]; - op[5] = ip[6]; - op[6] = ip[5]; - op[7] = ip[4]; - op += 8; - ip += 8; - } -# endif -} -# endif /* !vax */ - -#endif /* LITTLE_ENDIAN */ - -dnl dnl dnl -dnl -dnl Upcase(str) -dnl -define(`Upcase',dnl -`dnl -translit($1, abcdefghijklmnopqrstuvwxyz, ABCDEFGHIJKLMNOPQRSTUVWXYZ)')dnl -dnl -dnl dnl dnl -dnl -define(`Isizeof', ``SIZEOF_'Upcase($1)')dnl -define(`Xsizeof', ``X_SIZEOF_'Upcase($1)')dnl -define(`IXsizeof', ``SIZEOF_IX_'Upcase($1)')dnl -define(`Imax', `Upcase($1)`_MAX'')dnl -define(`Imin', `Upcase($1)`_MIN'')dnl -define(`Xmax', ``X_'Upcase($1)`_MAX'')dnl -define(`Xmin', ``X_'Upcase($1)`_MIN'')dnl -define(`IXmax', ``IX_'Upcase($1)`_MAX'')dnl -dnl -define(`Fmin', `ifelse(index(`$1',`u'), 0, `0', `(double)Imin($1)')')dnl -define(`Dmin', `ifelse(index(`$1',`u'), 0, `0', `Imin($1)')')dnl -define(`FXmin', `ifelse(index(`$1',`u'), 0, `0', `(double)Xmin($1)')')dnl -define(`DXmin', `ifelse(index(`$1',`u'), 0, `0', `Xmin($1)')')dnl - -dnl -dnl For GET APIs: -dnl check for negative xx if xp is signed && ip is unsigned -dnl Don't check for negative xx if xp is signed && ip is signed -dnl Don't check for negative xx if xp is unsigned -dnl -define(`GETI_CheckNeg', `ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, ` if (xx < 0) return NC_ERANGE; /* because ip is unsigned */')')')dnl - -dnl -dnl For PUT APIs: -dnl check for negative ip if xp is unsigned && ip is signed -dnl Don't check for negative ip if xp is unsigned && ip is unsigned -dnl Don't check for negative ip if xp is signed -dnl -define(`PUTI_CheckNeg', `ifelse(index(`$1',`u'), 0, `ifelse(index(`$2',`u'), 0, , ` if (*ip < 0) return NC_ERANGE; /* because xp is unsigned */')')')dnl - -dnl -dnl For GET APIs and either $1 and $2 is float or double: -dnl -define(`GETF_CheckBND', -`ifelse(`$1', `double', ` if(xx > Upcase($2)_MAX || xx < Dmin($2)) return NC_ERANGE;', - `ifelse(`$1', `float', `ifelse(`$2', `double',,` if(xx > (double)Upcase($2)_MAX || xx < Fmin($2)) return NC_ERANGE;')')'dnl -)') - -dnl -dnl For PUT APIs and either $1 and $2 is float or double: -dnl -define(`PUTF_CheckBND', -`ifelse(`$2', `double', ` if(*ip > Xmax($1) || *ip < DXmin($1)) return NC_ERANGE;', - `ifelse(`$2', `float', ` if(*ip > (double)Xmax($1) || *ip < FXmin($1)) return NC_ERANGE;')'dnl -)') - -dnl -dnl For GET APIs and $1 and $2 are not float or double -dnl -define(`GETI_CheckBND', -``#'if IXmax($1) > Imax($2) - if (xx > Imax($2)'`ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, , ` || xx < Imin($2)')')'`) return NC_ERANGE;' -`#'endif) - -dnl -dnl For PUT APIs and $1 and $2 are not float or double -dnl -define(`PUTI_CheckBND', -``#'if IXmax($1) < Imax($2) - if (*ip > IXmax($1)'`ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, , ` || *ip < Xmin($1)')')'`) return NC_ERANGE;' -`#'endif) - -/* - * Primitive numeric conversion functions. - */ - -dnl dnl dnl -dnl -dnl NCX_GET1F(xtype, itype) for floating-point types -dnl -define(`NCX_GET1F',dnl -`dnl -int -ncx_get_$1_$2(const void *xp, $2 *ip) -{ - ix_$1 xx; - get_ix_$1(xp, &xx); - *ip = ($2) xx; -GETF_CheckBND($1, $2) - return NC_NOERR; -} -')dnl - -dnl dnl dnl -dnl -dnl NCX_GET1I(xtype, itype, isComptable) for integral types -dnl -define(`NCX_GET1I',dnl -`dnl -int -ncx_get_$1_$2(const void *xp, $2 *ip) -{ -ifelse(`$3', `1', -``#'if IXsizeof($1) == Isizeof($2) && IXmax($1) == Upcase($2)_MAX - get_ix_$1(xp, (ix_$1 *)ip); - return NC_NOERR; -`#'else -')dnl - ix_$1 xx; - get_ix_$1(xp, &xx); - *ip = ($2) xx; -GETI_CheckBND($1, $2) -GETI_CheckNeg($1, $2) -ifelse(`$3', `1', ``#'endif -')dnl - return NC_NOERR; -} -')dnl - -dnl dnl dnl -dnl -dnl NCX_PUT1F(xtype, itype) for floating-point types -dnl -define(`NCX_PUT1F',dnl -`dnl -int -ncx_put_$1_$2(void *xp, const $2 *ip) -{ - ix_$1 xx = (ix_$1)*ip; - put_ix_$1(xp, &xx); -PUTF_CheckBND($1, $2) - return NC_NOERR; -} -')dnl - -dnl dnl dnl -dnl -dnl NCX_PUT1I(xtype, itype, isComptable) for integral types -dnl -define(`NCX_PUT1I',dnl -`dnl -int -ncx_put_$1_$2(void *xp, const $2 *ip) -{ -ifelse(`$3', `1', -``#'if IXsizeof($1) == Isizeof($2) && IXmax($1) == Upcase($2)_MAX - put_ix_$1(xp, (const ix_$1 *)ip); - return NC_NOERR; -`#'else -')dnl - ix_$1 xx = (ix_$1)*ip; - put_ix_$1(xp, &xx); -PUTI_CheckBND($1, $2) -PUTI_CheckNeg($1, $2) -ifelse(`$3', `1', ``#'endif -')dnl - return NC_NOERR; -} -')dnl - -/* x_schar */ -/* x_uchar */ - -/* We don't implement any x_schar and x_uchar primitives. */ - - -/* x_short -------------------------------------------------------------------*/ - -#if SHORT_MAX == X_SHORT_MAX -typedef short ix_short; -#define SIZEOF_IX_SHORT SIZEOF_SHORT -#define IX_SHORT_MAX SHORT_MAX -#elif INT_MAX >= X_SHORT_MAX -typedef int ix_short; -#define SIZEOF_IX_SHORT SIZEOF_INT -#define IX_SHORT_MAX INT_MAX -#elif LONG_MAX >= X_SHORT_MAX -typedef long ix_short; -#define SIZEOF_IX_SHORT SIZEOF_LONG -#define IX_SHORT_MAX LONG_MAX -#elif LLONG_MAX >= X_SHORT_MAX -typedef long long ix_short; -#define SIZEOF_IX_SHORT SIZEOF_LONG_LONG -#define IX_SHORT_MAX LLONG_MAX -#else -#error "ix_short implementation" -#endif - -static void -get_ix_short(const void *xp, ix_short *ip) -{ - const uchar *cp = (const uchar *) xp; - *ip = *cp++ << 8; -#if SIZEOF_IX_SHORT > X_SIZEOF_SHORT - if(*ip & 0x8000) - { - /* extern is negative */ - *ip |= (~(0xffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= *cp; -} - -static void -put_ix_short(void *xp, const ix_short *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = (*ip) >> 8; - *cp = (*ip) & 0xff; -} - -static NCX_GET1I(short, schar, 0) -static NCX_GET1I(short, short, 1) -static NCX_GET1I(short, int, 1) -static NCX_GET1I(short, longlong, 1) -static NCX_GET1I(short, ushort, 0) -static NCX_GET1I(short, uchar, 0) -static NCX_GET1I(short, uint, 0) -static NCX_GET1I(short, ulonglong, 0) -static NCX_GET1F(short, float) -static NCX_GET1F(short, double) - -static int -ncx_put_short_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - *cp++ = 0xff; - else - *cp++ = 0; - *cp = (uchar)(signed)*ip; - return NC_NOERR; -} - -static int -ncx_put_short_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0; - *cp = *ip; - return NC_NOERR; -} - -static NCX_PUT1I(short, short, 1) -static NCX_PUT1I(short, int, 1) -static NCX_PUT1I(short, longlong, 1) -static NCX_PUT1I(short, ushort, 0) -static NCX_PUT1I(short, uint, 0) -static NCX_PUT1I(short, ulonglong, 0) -static NCX_PUT1F(short, float) -static NCX_PUT1F(short, double) - -/* x_ushort ------------------------------------------------------------------*/ - -#if USHORT_MAX == X_USHORT_MAX -typedef unsigned short ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_USHORT -#define IX_USHORT_MAX USHORT_MAX -#elif UINT_MAX >= X_USHORT_MAX -typedef unsigned int ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_UINT -#define IX_USHORT_MAX UINT_MAX -#elif ULONG_MAX >= X_USHORT_MAX -typedef unsigned long ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_ULONG -#define IX_USHORT_MAX ULONG_MAX -#elif ULLONG_MAX >= X_USHORT_MAX -typedef unsigned long long ix_ushort; -#define SIZEOF_IX_USHORT SIZEOF_ULONG_LONG -#define IX_USHORT_MAX ULLONG_MAX -#else -#error "ix_ushort implementation" -#endif - -static void -get_ix_ushort(const void *xp, ix_ushort *ip) -{ - const uchar *cp = (const uchar *) xp; - *ip = *cp++ << 8; -#if SIZEOF_IX_SHORT > X_SIZEOF_SHORT - if(*ip & 0x8000) - { - /* extern is negative */ - *ip |= (~(0xffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= *cp; -} - -static void -put_ix_ushort(void *xp, const ix_ushort *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = (*ip) >> 8; - *cp = (*ip) & 0xff; -} - -static NCX_GET1I(ushort, schar, 0) -static NCX_GET1I(ushort, short, 0) -static NCX_GET1I(ushort, int, 0) -static NCX_GET1I(ushort, longlong, 0) -static NCX_GET1I(ushort, ushort, 1) -static NCX_GET1I(ushort, uchar, 1) -static NCX_GET1I(ushort, uint, 1) -static NCX_GET1I(ushort, ulonglong, 1) -static NCX_GET1F(ushort, float) -static NCX_GET1F(ushort, double) - -static int -ncx_put_ushort_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - *cp++ = 0xff; - else - *cp++ = 0; - *cp = (uchar)(signed)*ip; - if (*ip < 0) return NC_ERANGE; - - return NC_NOERR; -} - -static int -ncx_put_ushort_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0; - *cp = *ip; - return NC_NOERR; -} - -static NCX_PUT1I(ushort, short, 0) -static NCX_PUT1I(ushort, int, 0) -static NCX_PUT1I(ushort, longlong, 0) -static NCX_PUT1I(ushort, ushort, 1) -static NCX_PUT1I(ushort, uint, 1) -static NCX_PUT1I(ushort, ulonglong, 1) -static NCX_PUT1F(ushort, float) -static NCX_PUT1F(ushort, double) - -/* x_int ---------------------------------------------------------------------*/ - -#if SHORT_MAX == X_INT_MAX -typedef short ix_int; -#define SIZEOF_IX_INT SIZEOF_SHORT -#define IX_INT_MAX SHORT_MAX -#elif INT_MAX >= X_INT_MAX -typedef int ix_int; -#define SIZEOF_IX_INT SIZEOF_INT -#define IX_INT_MAX INT_MAX -#elif LONG_MAX >= X_INT_MAX -typedef long ix_int; -#define SIZEOF_IX_INT SIZEOF_LONG -#define IX_INT_MAX LONG_MAX -#else -#error "ix_int implementation" -#endif - - -static void -get_ix_int(const void *xp, ix_int *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = *cp++ << 24; -#if SIZEOF_IX_INT > X_SIZEOF_INT - if(*ip & 0x80000000) - { - /* extern is negative */ - *ip |= (~(0xffffffff)); /* N.B. Assumes "twos complement" */ - } -#endif - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; -} - -static void -put_ix_int(void *xp, const ix_int *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 24; - *cp++ = ((*ip) & 0x00ff0000) >> 16; - *cp++ = ((*ip) & 0x0000ff00) >> 8; - *cp = ((*ip) & 0x000000ff); -} - -static NCX_GET1I(int, schar, 0) -static NCX_GET1I(int, short, 1) - NCX_GET1I(int, int, 1) -static NCX_GET1I(int, longlong, 1) -static NCX_GET1I(int, ushort, 0) -static NCX_GET1I(int, uchar, 0) -static NCX_GET1I(int, uint, 0) -static NCX_GET1I(int, ulonglong, 0) -static NCX_GET1F(int, float) -static NCX_GET1F(int, double) - -static int -ncx_put_int_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - if(*ip & 0x80) - { - *cp++ = 0xff; - *cp++ = 0xff; - *cp++ = 0xff; - } - else - { - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - } - *cp = (uchar)(signed)*ip; - return NC_NOERR; -} - -static int -ncx_put_int_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = *ip; - return NC_NOERR; -} - -static NCX_PUT1I(int, short, 1) - NCX_PUT1I(int, int, 1) -static NCX_PUT1I(int, longlong, 1) -static NCX_PUT1I(int, ushort, 0) -static NCX_PUT1I(int, uint, 0) -static NCX_PUT1I(int, ulonglong, 0) -static NCX_PUT1F(int, float) -static NCX_PUT1F(int, double) - - -/* x_uint --------------------------------------------------------------------*/ - -#if USHORT_MAX == X_UINT_MAX -typedef ushort ix_uint; -#define SIZEOF_IX_UINT SIZEOF_USHORT -#define IX_UINT_MAX USHORT_MAX -#elif UINT_MAX >= X_UINT_MAX -typedef uint ix_uint; -#define SIZEOF_IX_UINT SIZEOF_UINT -#define IX_UINT_MAX UINT_MAX -#elif ULONG_MAX >= X_UINT_MAX -typedef ulong ix_uint; -#define SIZEOF_IX_UINT SIZEOF_ULONG -#define IX_UINT_MAX ULONG_MAX -#else -#error "ix_uint implementation" -#endif - - -static void -get_ix_uint(const void *xp, ix_uint *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = *cp++ << 24; - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; -} - -static void -put_ix_uint(void *xp, const ix_uint *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 24; - *cp++ = ((*ip) & 0x00ff0000) >> 16; - *cp++ = ((*ip) & 0x0000ff00) >> 8; - *cp = ((*ip) & 0x000000ff); -} - -#if X_SIZEOF_UINT != SIZEOF_UINT -static NCX_GET1I(uint, uint, 1) -#endif - -static NCX_GET1I(uint, schar, 0) -static NCX_GET1I(uint, short, 0) -static NCX_GET1I(uint, int, 0) -static NCX_GET1I(uint, longlong, 0) -static NCX_GET1I(uint, ushort, 1) -static NCX_GET1I(uint, uchar, 1) -static NCX_GET1I(uint, ulonglong, 1) -static NCX_GET1F(uint, float) -static NCX_GET1F(uint, double) - -static int -ncx_put_uint_schar(void *xp, const schar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = (uchar)(signed)*ip; - - if (*ip < 0) return NC_ERANGE; - - return NC_NOERR; -} - -static int -ncx_put_uint_uchar(void *xp, const uchar *ip) -{ - uchar *cp = (uchar *) xp; - *cp++ = 0x00; - *cp++ = 0x00; - *cp++ = 0x00; - *cp = *ip; - return NC_NOERR; -} - -#if X_SIZEOF_UINT != SIZEOF_UINT -static NCX_PUT1I(uint, uint, 1) -#endif - -static NCX_PUT1I(uint, short, 0) -static NCX_PUT1I(uint, int, 0) -static NCX_PUT1I(uint, longlong, 0) -static NCX_PUT1I(uint, ushort, 1) -static NCX_PUT1I(uint, ulonglong, 1) -static NCX_PUT1F(uint, float) -static NCX_PUT1F(uint, double) - -/* x_float -------------------------------------------------------------------*/ - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) - -static void -get_ix_float(const void *xp, float *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(ip, xp, sizeof(float)); -#else - swap4b(ip, xp); -#endif -} - -static void -put_ix_float(void *xp, const float *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(xp, ip, X_SIZEOF_FLOAT); -#else - swap4b(xp, ip); -#endif -} - -#elif vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int exp_hi : 7; - unsigned int sign : 1; - unsigned int mant_hi : 7; - unsigned int exp_lo : 1; - unsigned int mant_lo_hi : 8; - unsigned int mant_lo_lo : 8; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} max = { - { 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0 } /* Max IEEE */ -}; -static struct sgl_limits min = { - { 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } /* Min IEEE */ -}; - -dnl dnl dnl -dnl -dnl GET_VAX_DFLOAT_Body(xp) (body for get_ix_float) -dnl -define(`GET_VAX_DFLOAT_Body',dnl -`dnl - struct vax_single *const vsp = (struct vax_single *) ip; - const struct ieee_single *const isp = - (const struct ieee_single *) $1; - unsigned exp = isp->exp_hi << 1 | isp->exp_lo; - - switch(exp) { - case 0 : - /* ieee subnormal */ - if(isp->mant_hi == min.ieee.mant_hi - && isp->mant_lo_hi == min.ieee.mant_lo_hi - && isp->mant_lo_lo == min.ieee.mant_lo_lo) - { - *vsp = min.s; - } - else - { - unsigned mantissa = (isp->mant_hi << 16) - | isp->mant_lo_hi << 8 - | isp->mant_lo_lo; - unsigned tmp = mantissa >> 20; - if(tmp >= 4) { - vsp->exp = 2; - } else if (tmp >= 2) { - vsp->exp = 1; - } else { - *vsp = min.s; - break; - } /* else */ - tmp = mantissa - (1 << (20 + vsp->exp )); - tmp <<= 3 - vsp->exp; - vsp->mantissa2 = tmp; - vsp->mantissa1 = (tmp >> 16); - } - break; - case 0xfe : - case 0xff : - *vsp = max.s; - break; - default : - vsp->exp = exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = isp->mant_lo_hi << 8 | isp->mant_lo_lo; - vsp->mantissa1 = isp->mant_hi; - } - - vsp->sign = isp->sign; -')dnl -static void -get_ix_float(const void *xp, float *ip) -{ -GET_VAX_DFLOAT_Body(xp) -} - -dnl dnl dnl -dnl -dnl PUT_VAX_DFLOAT_Body(xp) (body for get_ix_float) -dnl -define(`PUT_VAX_DFLOAT_Body',dnl -`dnl - const struct vax_single *const vsp = - (const struct vax_single *)ip; - struct ieee_single *const isp = (struct ieee_single *) $1; - - switch(vsp->exp){ - case 0 : - /* all vax float with zero exponent map to zero */ - *isp = min.ieee; - break; - case 2 : - case 1 : - { - /* These will map to subnormals */ - unsigned mantissa = (vsp->mantissa1 << 16) - | vsp->mantissa2; - mantissa >>= 3 - vsp->exp; - mantissa += (1 << (20 + vsp->exp)); - isp->mant_lo_lo = mantissa; - isp->mant_lo_hi = mantissa >> 8; - isp->mant_hi = mantissa >> 16; - isp->exp_lo = 0; - isp->exp_hi = 0; - } - break; - case 0xff : /* max.s.exp */ - if( vsp->mantissa2 == max.s.mantissa2 - && vsp->mantissa1 == max.s.mantissa1) - { - /* map largest vax float to ieee infinity */ - *isp = max.ieee; - break; - } /* else, fall thru */ - default : - { - unsigned exp = vsp->exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - isp->exp_hi = exp >> 1; - isp->exp_lo = exp; - isp->mant_lo_lo = vsp->mantissa2; - isp->mant_lo_hi = vsp->mantissa2 >> 8; - isp->mant_hi = vsp->mantissa1; - } - } - - isp->sign = vsp->sign; -')dnl - -static void -put_ix_float(void *xp, const float *ip) -{ -PUT_VAX_DFLOAT_Body(xp) -} - - /* vax */ -#elif defined(_CRAY) && !defined(__crayx1) - -/* - * Return the number of bytes until the next "word" boundary - * N.B. This is based on the very weird YMP address structure, - * which puts the address within a word in the leftmost 3 bits - * of the address. - */ -static size_t -word_align(const void *vp) -{ - const size_t rem = ((size_t)vp >> (64 - 3)) & 0x7; - return (rem != 0); -} - -struct ieee_single_hi { - unsigned int sign : 1; - unsigned int exp : 8; - unsigned int mant :23; - unsigned int pad :32; -}; -typedef struct ieee_single_hi ieee_single_hi; - -struct ieee_single_lo { - unsigned int pad :32; - unsigned int sign : 1; - unsigned int exp : 8; - unsigned int mant :23; -}; -typedef struct ieee_single_lo ieee_single_lo; - -static const int ieee_single_bias = 0x7f; - -struct ieee_double { - unsigned int sign : 1; - unsigned int exp :11; - unsigned int mant :52; -}; -typedef struct ieee_double ieee_double; - -static const int ieee_double_bias = 0x3ff; - -#if defined(NO_IEEE_FLOAT) - -struct cray_single { - unsigned int sign : 1; - unsigned int exp :15; - unsigned int mant :48; -}; -typedef struct cray_single cray_single; - -static const int cs_ieis_bias = 0x4000 - 0x7f; - -static const int cs_id_bias = 0x4000 - 0x3ff; - -dnl dnl dnl -dnl -dnl GET_IX_FLOAT_Body (body for get_ix_float) -dnl -define(`GET_IX_FLOAT_Body',dnl -`dnl - cray_single *csp = (cray_single *) ip; - - if(isp->exp == 0) - { - /* ieee subnormal */ - *ip = (double)isp->mant; - if(isp->mant != 0) - { - csp->exp -= (ieee_single_bias + 22); - } - } - else - { - csp->exp = isp->exp + cs_ieis_bias + 1; - csp->mant = isp->mant << (48 - 1 - 23); - csp->mant |= (1 << (48 - 1)); - } - csp->sign = isp->sign; - -')dnl -dnl dnl dnl -dnl -dnl PUT_IX_FLOAT_Body (body for put_ix_float) -dnl -define(`PUT_IX_FLOAT_Body',dnl -`dnl - const cray_single *csp = (const cray_single *) ip; - int ieee_exp = csp->exp - cs_ieis_bias -1; - - isp->sign = csp->sign; - - if(ieee_exp >= 0xff) - { - /* NC_ERANGE => ieee Inf */ - isp->exp = 0xff; - isp->mant = 0x0; - } - else if(ieee_exp > 0) - { - /* normal ieee representation */ - isp->exp = ieee_exp; - /* assumes cray rep is in normal form */ - assert(csp->mant & 0x800000000000); - isp->mant = (((csp->mant << 1) & - 0xffffffffffff) >> (48 - 23)); - } - else if(ieee_exp > -23) - { - /* ieee subnormal, right shift */ - const int rshift = (48 - 23 - ieee_exp); - - isp->mant = csp->mant >> rshift; - -#if 0 - if(csp->mant & (1 << (rshift -1))) - { - /* round up */ - isp->mant++; - } -#endif - - isp->exp = 0; - } - else - { - /* smaller than ieee can represent */ - isp->exp = 0; - isp->mant = 0; - } -')dnl - -static void -get_ix_float(const void *xp, float *ip) -{ - - if(word_align(xp) == 0) - { - const ieee_single_hi *isp = (const ieee_single_hi *) xp; -GET_IX_FLOAT_Body - } - else - { - const ieee_single_lo *isp = (const ieee_single_lo *) xp; -GET_IX_FLOAT_Body - } -} - -static void -put_ix_float(void *xp, const float *ip) -{ - if(word_align(xp) == 0) - { - ieee_single_hi *isp = (ieee_single_hi*)xp; -PUT_IX_FLOAT_Body - } - else - { - ieee_single_lo *isp = (ieee_single_lo*)xp; -PUT_IX_FLOAT_Body - } -} - -#else - /* IEEE Cray with only doubles */ -static void -get_ix_float(const void *xp, float *ip) -{ - - ieee_double *idp = (ieee_double *) ip; - - if(word_align(xp) == 0) - { - const ieee_single_hi *isp = (const ieee_single_hi *) xp; - if(isp->exp == 0 && isp->mant == 0) - { - idp->exp = 0; - idp->mant = 0; - } - else - { - idp->exp = isp->exp + (ieee_double_bias - ieee_single_bias); - idp->mant = isp->mant << (52 - 23); - } - idp->sign = isp->sign; - } - else - { - const ieee_single_lo *isp = (const ieee_single_lo *) xp; - if(isp->exp == 0 && isp->mant == 0) - { - idp->exp = 0; - idp->mant = 0; - } - else - { - idp->exp = isp->exp + (ieee_double_bias - ieee_single_bias); - idp->mant = isp->mant << (52 - 23); - } - idp->sign = isp->sign; - } -} - -static void -put_ix_float(void *xp, const float *ip) -{ - const ieee_double *idp = (const ieee_double *) ip; - if(word_align(xp) == 0) - { - ieee_single_hi *isp = (ieee_single_hi*)xp; - if(idp->exp > (ieee_double_bias - ieee_single_bias)) - isp->exp = idp->exp - (ieee_double_bias - ieee_single_bias); - else - isp->exp = 0; - isp->mant = idp->mant >> (52 - 23); - isp->sign = idp->sign; - } - else - { - ieee_single_lo *isp = (ieee_single_lo*)xp; - if(idp->exp > (ieee_double_bias - ieee_single_bias)) - isp->exp = idp->exp - (ieee_double_bias - ieee_single_bias); - else - isp->exp = 0; - isp->mant = idp->mant >> (52 - 23); - isp->sign = idp->sign; - } -} -#endif - -#else -#error "ix_float implementation" -#endif - -#if X_SIZEOF_FLOAT != SIZEOF_FLOAT || defined(NO_IEEE_FLOAT) -static int -ncx_get_float_float(const void *xp, float *ip) -{ - /* TODO */ - get_ix_float(xp, ip); - return NC_NOERR; -} -#endif - -#define ix_float float - -static NCX_GET1F(float, schar) -static NCX_GET1F(float, short) -static NCX_GET1F(float, int) -static NCX_GET1F(float, double) -static NCX_GET1F(float, longlong) -static NCX_GET1F(float, uchar) -static NCX_GET1F(float, ushort) -static NCX_GET1F(float, uint) -static NCX_GET1F(float, ulonglong) - -#if X_SIZEOF_FLOAT != SIZEOF_FLOAT || defined(NO_IEEE_FLOAT) -static int -ncx_put_float_float(void *xp, const float *ip) -{ - put_ix_float(xp, ip); -#ifdef NO_IEEE_FLOAT - if(*ip > X_FLOAT_MAX || *ip < X_FLOAT_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} -#endif - -static NCX_PUT1F(float, schar) -static NCX_PUT1F(float, short) -static NCX_PUT1F(float, int) -static NCX_PUT1F(float, double) -static NCX_PUT1F(float, longlong) -static NCX_PUT1F(float, uchar) -static NCX_PUT1F(float, ushort) -static NCX_PUT1F(float, uint) -static NCX_PUT1F(float, ulonglong) - - -/* x_double ------------------------------------------------------------------*/ - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) - -static void -get_ix_double(const void *xp, double *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(ip, xp, sizeof(double)); -#else - swap8b(ip, xp); -#endif -} - -static void -put_ix_double(void *xp, const double *ip) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(xp, ip, X_SIZEOF_DOUBLE); -#else - swap8b(xp, ip); -#endif -} - -#elif vax - -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int exp_hi : 7; - unsigned int sign : 1; - unsigned int mant_6 : 4; - unsigned int exp_lo : 4; - unsigned int mant_5 : 8; - unsigned int mant_4 : 8; - - unsigned int mant_lo : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static const struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x7f, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0}}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, /* Min IEEE */ -}; - - -dnl dnl dnl -dnl -dnl GET_VAX_DDOUBLE_Body(xp) (body for get_ix_double) -dnl -define(`GET_VAX_DDOUBLE_Body',dnl -`dnl - struct vax_double *const vdp = - (struct vax_double *)ip; - const struct ieee_double *const idp = - (const struct ieee_double *) $1; - { - const struct dbl_limits *lim; - int ii; - for (ii = 0, lim = dbl_limits; - ii < sizeof(dbl_limits)/sizeof(struct dbl_limits); - ii++, lim++) - { - if ((idp->mant_lo == lim->ieee.mant_lo) - && (idp->mant_4 == lim->ieee.mant_4) - && (idp->mant_5 == lim->ieee.mant_5) - && (idp->mant_6 == lim->ieee.mant_6) - && (idp->exp_lo == lim->ieee.exp_lo) - && (idp->exp_hi == lim->ieee.exp_hi) - ) - { - *vdp = lim->d; - goto doneit; - } - } - } - { - unsigned exp = idp->exp_hi << 4 | idp->exp_lo; - vdp->exp = exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - } - { - unsigned mant_hi = ((idp->mant_6 << 16) - | (idp->mant_5 << 8) - | idp->mant_4); - unsigned mant_lo = SWAP4(idp->mant_lo); - vdp->mantissa1 = (mant_hi >> 13); - vdp->mantissa2 = ((mant_hi & MASK(13)) << 3) - | (mant_lo >> 29); - vdp->mantissa3 = (mant_lo >> 13); - vdp->mantissa4 = (mant_lo << 3); - } - doneit: - vdp->sign = idp->sign; -')dnl -static void -get_ix_double(const void *xp, double *ip) -{ -GET_VAX_DDOUBLE_Body(xp) -} - - -dnl dnl dnl -dnl -dnl PUT_VAX_DDOUBLE_Body(xp) (body for put_ix_double) -dnl -define(`PUT_VAX_DDOUBLE_Body',dnl -`dnl - const struct vax_double *const vdp = - (const struct vax_double *)ip; - struct ieee_double *const idp = - (struct ieee_double *) $1; - - if ((vdp->mantissa4 > (dbl_limits[0].d.mantissa4 - 3)) && - (vdp->mantissa3 == dbl_limits[0].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[0].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[0].d.mantissa1) && - (vdp->exp == dbl_limits[0].d.exp)) - { - *idp = dbl_limits[0].ieee; - goto shipit; - } - if ((vdp->mantissa4 == dbl_limits[1].d.mantissa4) && - (vdp->mantissa3 == dbl_limits[1].d.mantissa3) && - (vdp->mantissa2 == dbl_limits[1].d.mantissa2) && - (vdp->mantissa1 == dbl_limits[1].d.mantissa1) && - (vdp->exp == dbl_limits[1].d.exp)) - { - *idp = dbl_limits[1].ieee; - goto shipit; - } - - { - unsigned exp = vdp->exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - - unsigned mant_lo = ((vdp->mantissa2 & MASK(3)) << 29) | - (vdp->mantissa3 << 13) | - ((vdp->mantissa4 >> 3) & MASK(13)); - - unsigned mant_hi = (vdp->mantissa1 << 13) - | (vdp->mantissa2 >> 3); - - if((vdp->mantissa4 & 7) > 4) - { - /* round up */ - mant_lo++; - if(mant_lo == 0) - { - mant_hi++; - if(mant_hi > 0xffffff) - { - mant_hi = 0; - exp++; - } - } - } - - idp->mant_lo = SWAP4(mant_lo); - idp->mant_6 = mant_hi >> 16; - idp->mant_5 = (mant_hi & 0xff00) >> 8; - idp->mant_4 = mant_hi; - idp->exp_hi = exp >> 4; - idp->exp_lo = exp; - } - - shipit: - idp->sign = vdp->sign; -')dnl -static void -put_ix_double(void *xp, const double *ip) -{ -PUT_VAX_DDOUBLE_Body(xp) -} - - /* vax */ -#elif defined(_CRAY) && !defined(__crayx1) - -static void -get_ix_double(const void *xp, double *ip) -{ - const ieee_double *idp = (const ieee_double *) xp; - cray_single *csp = (cray_single *) ip; - - if(idp->exp == 0) - { - /* ieee subnormal */ - *ip = (double)idp->mant; - if(idp->mant != 0) - { - csp->exp -= (ieee_double_bias + 51); - } - } - else - { - csp->exp = idp->exp + cs_id_bias + 1; - csp->mant = idp->mant >> (52 - 48 + 1); - csp->mant |= (1 << (48 - 1)); - } - csp->sign = idp->sign; -} - -static void -put_ix_double(void *xp, const double *ip) -{ - ieee_double *idp = (ieee_double *) xp; - const cray_single *csp = (const cray_single *) ip; - - int ieee_exp = csp->exp - cs_id_bias -1; - - idp->sign = csp->sign; - - if(ieee_exp >= 0x7ff) - { - /* NC_ERANGE => ieee Inf */ - idp->exp = 0x7ff; - idp->mant = 0x0; - } - else if(ieee_exp > 0) - { - /* normal ieee representation */ - idp->exp = ieee_exp; - /* assumes cray rep is in normal form */ - assert(csp->mant & 0x800000000000); - idp->mant = (((csp->mant << 1) & - 0xffffffffffff) << (52 - 48)); - } - else if(ieee_exp >= (-(52 -48))) - { - /* ieee subnormal, left shift */ - const int lshift = (52 - 48) + ieee_exp; - idp->mant = csp->mant << lshift; - idp->exp = 0; - } - else if(ieee_exp >= -52) - { - /* ieee subnormal, right shift */ - const int rshift = (- (52 - 48) - ieee_exp); - - idp->mant = csp->mant >> rshift; - -#if 0 - if(csp->mant & (1 << (rshift -1))) - { - /* round up */ - idp->mant++; - } -#endif - - idp->exp = 0; - } - else - { - /* smaller than ieee can represent */ - idp->exp = 0; - idp->mant = 0; - } -} -#else -#error "ix_double implementation" -#endif - -#define ix_double double - -static NCX_GET1F(double, schar) -static NCX_GET1F(double, short) -static NCX_GET1F(double, int) -static NCX_GET1F(double, longlong) -static NCX_GET1F(double, uchar) -static NCX_GET1F(double, ushort) -static NCX_GET1F(double, uint) - -int -ncx_get_double_ulonglong(const void *xp, unsigned long long *ip) -{ - double xx; - get_ix_double(xp, &xx); - *ip = (unsigned long long) xx; - if(xx > ULONG_LONG_MAX || xx < 0) - return NC_ERANGE; - return NC_NOERR; -} - -static int -ncx_get_double_float(const void *xp, float *ip) -{ - double xx; - get_ix_double(xp, &xx); - if(xx > FLT_MAX) - { - *ip = FLT_MAX; - return NC_ERANGE; - } - if(xx < (-FLT_MAX)) - { - *ip = (-FLT_MAX); - return NC_ERANGE; - } - *ip = (float) xx; - return NC_NOERR; -} - -#if X_SIZEOF_DOUBLE != SIZEOF_DOUBLE || defined(NO_IEEE_FLOAT) -static int -ncx_get_double_double(const void *xp, double *ip) -{ - /* TODO */ - get_ix_double(xp, ip); - return NC_NOERR; -} -#endif - -static NCX_PUT1F(double, schar) -static NCX_PUT1F(double, uchar) -static NCX_PUT1F(double, short) -static NCX_PUT1F(double, ushort) -static NCX_PUT1F(double, int) -static NCX_PUT1F(double, uint) -static NCX_PUT1F(double, longlong) -static NCX_PUT1F(double, ulonglong) - -static int -ncx_put_double_float(void *xp, const float *ip) -{ - double xx = (double) *ip; - put_ix_double(xp, &xx); -#if 1 /* TODO: figure this out */ - if((double)(*ip) > X_DOUBLE_MAX || (double)(*ip) < X_DOUBLE_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} - -#if X_SIZEOF_DOUBLE != SIZEOF_DOUBLE || defined(NO_IEEE_FLOAT) -static int -ncx_put_double_double(void *xp, const double *ip) -{ - put_ix_double(xp, ip); -#ifdef NO_IEEE_FLOAT - if(*ip > X_DOUBLE_MAX || *ip < X_DOUBLE_MIN) - return NC_ERANGE; -#endif - return NC_NOERR; -} -#endif - - -/* x_longlong ---------------------------------------------------------------------*/ - -#if SHORT_MAX == X_LONGLONG_MAX -typedef short ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_SHORT -#define IX_LONGLONG_MAX SHORT_MAX -#elif LONG_LONG_MAX >= X_LONGLONG_MAX -typedef longlong ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_LONGLONG -#define IX_LONGLONG_MAX LONG_LONG_MAX -#elif LONG_MAX >= X_LONGLONG_MAX -typedef long ix_longlong; -#define SIZEOF_IX_LONGLONG SIZEOF_LONG -#define IX_LONGLONG_MAX LONG_MAX -#else -#error "ix_longlong implementation" -#endif - - -static void -get_ix_longlong(const void *xp, ix_longlong *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = ((long long)(*cp++) << 56); - *ip |= ((long long)(*cp++) << 48); - *ip |= ((long long)(*cp++) << 40); - *ip |= ((long long)(*cp++) << 32); - *ip |= ((long long)(*cp++) << 24); - *ip |= ((long long)(*cp++) << 16); - *ip |= ((long long)(*cp++) << 8); - *ip |= (long long)*cp; -} - -static void -put_ix_longlong(void *xp, const ix_longlong *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 56; - *cp++ = ((*ip) & 0x00ff000000000000LL) >> 48; - *cp++ = ((*ip) & 0x0000ff0000000000LL) >> 40; - *cp++ = ((*ip) & 0x000000ff00000000LL) >> 32; - *cp++ = ((*ip) & 0x00000000ff000000LL) >> 24; - *cp++ = ((*ip) & 0x0000000000ff0000LL) >> 16; - *cp++ = ((*ip) & 0x000000000000ff00LL) >> 8; - *cp = ((*ip) & 0x00000000000000ffLL); -} - -static NCX_GET1I(longlong, schar, 0) -static NCX_GET1I(longlong, short, 1) -static NCX_GET1I(longlong, int, 1) -static NCX_GET1I(longlong, longlong, 1) -static NCX_GET1I(longlong, ushort, 0) -static NCX_GET1I(longlong, uchar, 0) -static NCX_GET1I(longlong, uint, 0) -static NCX_GET1I(longlong, ulonglong, 0) -static NCX_GET1F(longlong, float) -static NCX_GET1F(longlong, double) - -static NCX_PUT1I(longlong, schar, 0) -static NCX_PUT1I(longlong, short, 1) -static NCX_PUT1I(longlong, int, 1) -static NCX_PUT1I(longlong, longlong, 1) -static NCX_PUT1I(longlong, ushort, 0) -static NCX_PUT1I(longlong, uchar, 0) -static NCX_PUT1I(longlong, uint, 0) -static NCX_PUT1I(longlong, ulonglong, 0) -static NCX_PUT1F(longlong, float) -static NCX_PUT1F(longlong, double) - -/* x_ulonglong --------------------------------------------------------------------*/ - -#if USHORT_MAX == X_ULONGLONG_MAX -typedef ushort ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_USHORT -#define IX_ULONGLONG_MAX USHORT_MAX -#elif ULONG_LONG_MAX >= X_ULONGLONG_MAX -typedef ulonglong ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_ULONGLONG -#define IX_ULONGLONG_MAX ULONG_LONG_MAX -#elif ULONG_MAX >= X_ULONGLONG_MAX -typedef ulong ix_ulonglong; -#define SIZEOF_IX_ULONGLONG SIZEOF_ULONG -#define IX_ULONGLONG_MAX ULONG_MAX -#else -#error "ix_ulonglong implementation" -#endif - - -static void -get_ix_ulonglong(const void *xp, ix_ulonglong *ip) -{ - const uchar *cp = (const uchar *) xp; - - *ip = ((unsigned long long)(*cp++) << 56); - *ip |= ((unsigned long long)(*cp++) << 48); - *ip |= ((unsigned long long)(*cp++) << 40); - *ip |= ((unsigned long long)(*cp++) << 32); - *ip |= ((unsigned long long)(*cp++) << 24); - *ip |= ((unsigned long long)(*cp++) << 16); - *ip |= ((unsigned long long)(*cp++) << 8); - *ip |= (unsigned long long)*cp; -} - -static void -put_ix_ulonglong(void *xp, const ix_ulonglong *ip) -{ - uchar *cp = (uchar *) xp; - - *cp++ = (*ip) >> 56; - *cp++ = ((*ip) & 0x00ff000000000000ULL) >> 48; - *cp++ = ((*ip) & 0x0000ff0000000000ULL) >> 40; - *cp++ = ((*ip) & 0x000000ff00000000ULL) >> 32; - *cp++ = ((*ip) & 0x00000000ff000000ULL) >> 24; - *cp++ = ((*ip) & 0x0000000000ff0000ULL) >> 16; - *cp++ = ((*ip) & 0x000000000000ff00ULL) >> 8; - *cp = ((*ip) & 0x00000000000000ffULL); -} - -static NCX_GET1I(ulonglong, schar, 0) -static NCX_GET1I(ulonglong, short, 0) -static NCX_GET1I(ulonglong, int, 0) -static NCX_GET1I(ulonglong, longlong, 0) -static NCX_GET1I(ulonglong, ushort, 1) -static NCX_GET1I(ulonglong, uchar, 1) -static NCX_GET1I(ulonglong, uint, 1) -static NCX_GET1I(ulonglong, ulonglong, 1) -static NCX_GET1F(ulonglong, float) -static NCX_GET1F(ulonglong, double) - -static NCX_PUT1I(ulonglong, schar, 0) -static NCX_PUT1I(ulonglong, short, 0) -static NCX_PUT1I(ulonglong, int, 0) -static NCX_PUT1I(ulonglong, longlong, 0) -static NCX_PUT1I(ulonglong, uchar, 1) -static NCX_PUT1I(ulonglong, ushort, 1) -static NCX_PUT1I(ulonglong, uint, 1) -static NCX_PUT1I(ulonglong, ulonglong, 1) -static NCX_PUT1F(ulonglong, float) -static NCX_PUT1F(ulonglong, double) - -/* x_size_t */ - -#if SIZEOF_SIZE_T < X_SIZEOF_SIZE_T -#error "x_size_t implementation" -/* netcdf requires size_t which can hold a values from 0 to 2^32 -1 */ -#endif - -int -ncx_put_size_t(void **xpp, const size_t *ulp) -{ - /* similar to put_ix_int() */ - uchar *cp = (uchar *) *xpp; - assert(*ulp <= X_SIZE_MAX); - - *cp++ = (uchar)((*ulp) >> 24); - *cp++ = (uchar)(((*ulp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*ulp) & 0x0000ff00) >> 8); - *cp = (uchar)((*ulp) & 0x000000ff); - - *xpp = (void *)((char *)(*xpp) + X_SIZEOF_SIZE_T); - return NC_NOERR; -} - -int -ncx_get_size_t(const void **xpp, size_t *ulp) -{ - /* similar to get_ix_int */ - const uchar *cp = (const uchar *) *xpp; - - *ulp = (unsigned)(*cp++ << 24); - *ulp |= (*cp++ << 16); - *ulp |= (*cp++ << 8); - *ulp |= *cp; - - *xpp = (const void *)((const char *)(*xpp) + X_SIZEOF_SIZE_T); - return NC_NOERR; -} - -/* x_off_t */ - -int -ncx_put_off_t(void **xpp, const off_t *lp, size_t sizeof_off_t) -{ - /* similar to put_ix_int() */ - uchar *cp = (uchar *) *xpp; - /* No negative offsets stored in netcdf */ - if (*lp < 0) { - /* Assume this is an overflow of a 32-bit int... */ - return NC_ERANGE; - } - - assert(sizeof_off_t == 4 || sizeof_off_t == 8); - - if (sizeof_off_t == 4) { - *cp++ = (uchar) ((*lp) >> 24); - *cp++ = (uchar)(((*lp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*lp) & 0x0000ff00) >> 8); - *cp = (uchar)( (*lp) & 0x000000ff); - } else { -#if SIZEOF_OFF_T == 4 -/* Write a 64-bit offset on a system with only a 32-bit offset */ - *cp++ = (uchar)0; - *cp++ = (uchar)0; - *cp++ = (uchar)0; - *cp++ = (uchar)0; - - *cp++ = (uchar)(((*lp) & 0xff000000) >> 24); - *cp++ = (uchar)(((*lp) & 0x00ff0000) >> 16); - *cp++ = (uchar)(((*lp) & 0x0000ff00) >> 8); - *cp = (uchar)( (*lp) & 0x000000ff); -#else - *cp++ = (uchar) ((*lp) >> 56); - *cp++ = (uchar)(((*lp) & 0x00ff000000000000ULL) >> 48); - *cp++ = (uchar)(((*lp) & 0x0000ff0000000000ULL) >> 40); - *cp++ = (uchar)(((*lp) & 0x000000ff00000000ULL) >> 32); - *cp++ = (uchar)(((*lp) & 0x00000000ff000000ULL) >> 24); - *cp++ = (uchar)(((*lp) & 0x0000000000ff0000ULL) >> 16); - *cp++ = (uchar)(((*lp) & 0x000000000000ff00ULL) >> 8); - *cp = (uchar)( (*lp) & 0x00000000000000ffULL); -#endif - } - *xpp = (void *)((char *)(*xpp) + sizeof_off_t); - return NC_NOERR; -} - -int -ncx_get_off_t(const void **xpp, off_t *lp, size_t sizeof_off_t) -{ - /* similar to get_ix_int() */ - const uchar *cp = (const uchar *) *xpp; - assert(sizeof_off_t == 4 || sizeof_off_t == 8); - - if (sizeof_off_t == 4) { - *lp = (off_t)(*cp++ << 24); - *lp |= (off_t)(*cp++ << 16); - *lp |= (off_t)(*cp++ << 8); - *lp |= (off_t)*cp; - } else { -#if SIZEOF_OFF_T == 4 -/* Read a 64-bit offset on a system with only a 32-bit offset */ -/* If the offset overflows, set an error code and return */ - *lp = ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= ((off_t)(*cp++)); -/* - * lp now contains the upper 32-bits of the 64-bit offset. if lp is - * not zero, then the dataset is larger than can be represented - * on this system. Set an error code and return. - */ - if (*lp != 0) { - return NC_ERANGE; - } - - *lp = ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= (off_t)*cp; - - if (*lp < 0) { - /* - * If this fails, then the offset is >2^31, but less - * than 2^32 which is not allowed, but is not caught - * by the previous check - */ - return NC_ERANGE; - } -#else - *lp = ((off_t)(*cp++) << 56); - *lp |= ((off_t)(*cp++) << 48); - *lp |= ((off_t)(*cp++) << 40); - *lp |= ((off_t)(*cp++) << 32); - *lp |= ((off_t)(*cp++) << 24); - *lp |= ((off_t)(*cp++) << 16); - *lp |= ((off_t)(*cp++) << 8); - *lp |= (off_t)*cp; -#endif - } - *xpp = (const void *)((const char *)(*xpp) + sizeof_off_t); - return NC_NOERR; -} - -/*----< ncx_get_int32() >--------------------------------------------------*/ -int -ncx_get_int32(const void **xpp, - int *ip) -{ - const uchar *cp = (const uchar *) *xpp; - - /* cannot call swap4b(), as lp is 8-byte */ - *ip = (*cp++ << 24); - *ip |= (*cp++ << 16); - *ip |= (*cp++ << 8); - *ip |= *cp; - - /* advance *xpp 4 bytes */ - *xpp = (void *)((const char *)(*xpp) + 4); - - return NC_NOERR; -} - -/*----< ncx_get_int64() >-------------------------------------------------*/ -int -ncx_get_int64(const void **xpp, - long long *llp) -{ - const uchar *cp = (const uchar *) *xpp; - - /* below is the same as calling swap8b(llp, *xpp) */ - *llp = ((long long)(*cp++) << 56); - *llp |= ((long long)(*cp++) << 48); - *llp |= ((long long)(*cp++) << 40); - *llp |= ((long long)(*cp++) << 32); - *llp |= ((long long)(*cp++) << 24); - *llp |= ((long long)(*cp++) << 16); - *llp |= ((long long)(*cp++) << 8); - *llp |= (long long)*cp; - - /* advance *xpp 8 bytes */ - *xpp = (void *)((const char *)(*xpp) + 8); - - return NC_NOERR; -} - -/*---< ncx_put_int32() >-----------------------------------------------------*/ -/* copy the contents of lp (a signed 32-bit integer) to xpp in Big Endian - * form and advance *xpp 4 bytes - */ -int -ncx_put_int32(void **xpp, - const int ip) -{ -#ifdef WORDS_BIGENDIAN - int *ptr = (int*) (*xpp); /* typecast to 4-byte integer */ - *ptr = ip; -#else - /* bitwise shifts below are to produce an integer in Big Endian */ - /* cannot call swap4b(), as lp is 8-byte */ - uchar *cp = (uchar *) *xpp; - *cp++ = (uchar)((ip & 0xff000000) >> 24); - *cp++ = (uchar)((ip & 0x00ff0000) >> 16); - *cp++ = (uchar)((ip & 0x0000ff00) >> 8); - *cp = (uchar)( ip & 0x000000ff); -#endif - /* advance *xpp 4 bytes */ - *xpp = (void *)((char *)(*xpp) + 4); - - return NC_NOERR; -} - -/*---< ncx_put_int64() >-----------------------------------------------------*/ -/* copy the contents of lp (a signed 64-bit integer) to xpp in Big Endian - * form and advance *xpp 8 bytes - */ -int -ncx_put_int64(void **xpp, - const long long ip) -{ -#ifdef WORDS_BIGENDIAN - long long *ptr = (long long*) (*xpp); /* typecast to 8-byte integer */ - *ptr = ip; -#else - uchar *cp = (uchar *) *xpp; - /* below is the same as calling swap8b(*xpp, &ip) */ - *cp++ = (uchar)((ip & 0xff00000000000000ULL) >> 56); - *cp++ = (uchar)((ip & 0x00ff000000000000ULL) >> 48); - *cp++ = (uchar)((ip & 0x0000ff0000000000ULL) >> 40); - *cp++ = (uchar)((ip & 0x000000ff00000000ULL) >> 32); - *cp++ = (uchar)((ip & 0x00000000ff000000ULL) >> 24); - *cp++ = (uchar)((ip & 0x0000000000ff0000ULL) >> 16); - *cp++ = (uchar)((ip & 0x000000000000ff00ULL) >> 8); - *cp = (uchar)( ip & 0x00000000000000ffULL); -#endif - /* advance *xpp 8 bytes */ - *xpp = (void *)((char *)(*xpp) + 8); - - return NC_NOERR; -} - - -/* - * Aggregate numeric conversion functions. - */ -dnl -define(`GETN_CheckBND', `ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, `|| xp[i] < 0', `|| xp[i] < Imin($2)')')')dnl -define(`PUTN_CheckBND', `ifelse(index(`$2',`u'), 0, , `ifelse(index(`$1',`u'), 0, `|| tp[i] < 0', `|| tp[i] < Xmin($1)')')')dnl - -dnl -dnl dnl dnl -dnl -dnl NCX_GETN_Byte_Body (body for one byte types on diagonal) -dnl -define(`NCX_GETN_Byte_Body',dnl -`dnl - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((schar *)(*xpp) + nelems); - return NC_NOERR; -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_GETN_Byte_body (body for one byte types on diagonal) -dnl -define(`NCX_PAD_GETN_Byte_Body',dnl -`dnl - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(tp, *xpp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems + rndup); - - return NC_NOERR; -')dnl -dnl dnl dnl -dnl -dnl NCX_GETN_CHAR(Type) -dnl -define(`NCX_GETN_CHAR',dnl -`dnl -int -ncx_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp) -{ - int status = NC_NOERR; - $1 *xp = ($1 *)(*xpp); - - while(nelems-- != 0) - { -ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, ` if (*xp < 0) status = NC_ERANGE;')') - *tp++ = *xp++; - } - - *xpp = (const void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_GETN_CHAR(Type) -dnl -define(`NCX_PAD_GETN_CHAR',dnl -`dnl -int -ncx_pad_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - $1 *xp = ($1 *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { -ifelse(index(`$1',`u'), 0, , `ifelse(index(`$2',`u'), 0, ` if (*xp < 0) status = NC_ERANGE;')') - *tp++ = *xp++; - } - - *xpp = (void *)(xp + rndup); - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_GETNo(XType, Type) deprecated -dnl -define(`NCX_GETNo',dnl -`dnl -int -ncx_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp) -{ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - $1 xx; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - const int lstatus = ncx_get_$1_$1(xp, &xx); - *tp = ($2)xx; - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_GETN(XType, Type, condition) -dnl -define(`NCX_GETN',dnl -`dnl -int -ncx_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp) -{ -`#'if _SX && Xsizeof($1) == Isizeof($1) - - /* basic algorithm is: - * - ensure sane alignment of input data - * - copy (conversion happens automatically) input data - * to output - * - update xpp to point at next unconverted input, and tp to point - * at next location for converted output - */ - long i, j, ni; - $1 tmp[LOOPCNT]; /* in case input is misaligned */ - $1 *xp; - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % Isizeof($1); - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j= 0 */ - nrange += xp[i] > Imax($2) GETN_CheckBND($1, $2); - } - /* update xpp and tp */ - if (realign) xp = ($1 *) *xpp; - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - const int lstatus = ncx_get_$1_$2(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -# endif -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_GETN_SHORT(xtype ttype) -dnl -define(`NCX_PAD_GETN_SHORT',dnl -`dnl -int -ncx_pad_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp) -{ - const size_t rndup = nelems % 2; - - const char *xp = (const char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - const int lstatus = ncx_get_$1_$2(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - xp += Xsizeof($1); - *xpp = (void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PUTN_Byte_Body(Type) (body for one byte types) -dnl -define(`NCX_PUTN_Byte_Body',dnl -`dnl - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - return NC_NOERR; -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_PUTN_Byte_Body(Type) (body for one byte types) -dnl -define(`NCX_PAD_PUTN_Byte_Body',dnl - size_t rndup = nelems % X_ALIGN; - - if(rndup) - rndup = X_ALIGN - rndup; - - (void) memcpy(*xpp, tp, nelems); - *xpp = (void *)((char *)(*xpp) + nelems); - - if(rndup) - { - (void) memcpy(*xpp, nada, rndup); - *xpp = (void *)((char *)(*xpp) + rndup); - } - - return NC_NOERR; -`dnl -')dnl -dnl dnl dnl -dnl -dnl NCX_PUTN_CHAR(Type) -dnl -define(`NCX_PUTN_CHAR',dnl -`dnl -int -ncx_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp) -{ - int status = NC_NOERR; - $1 *xp = ($1 *) *xpp; - - while(nelems-- != 0) - { - if(*tp > Xmax($1) ifelse(index(`$2',`u'), 0, , `ifelse(index(`$1',`u'), 0, `|| *tp < 0',`|| *tp < Xmin(schar)')')) - status = NC_ERANGE; - *xp++ = ($1) (signed)*tp++; - } - - *xpp = (void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_PUTN_CHAR(xtype, ttype) -dnl -define(`NCX_PAD_PUTN_CHAR',dnl -`dnl -int -ncx_pad_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp) -{ - int status = NC_NOERR; - size_t rndup = nelems % X_ALIGN; - $1 *xp = ($1 *) *xpp; - - if(rndup) - rndup = X_ALIGN - rndup; - - while(nelems-- != 0) - { - if(*tp > Xmax($1) ifelse(index(`$2',`u'), 0, , `ifelse(index(`$1',`u'), 0, `|| *tp < 0',`|| *tp < Xmin(schar)')')) - status = NC_ERANGE; - *xp++ = ($1) (signed) *tp++; - } - - - if(rndup) - { - (void) memcpy(xp, nada, rndup); - xp += rndup; - } - - *xpp = (void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PUTNo(XType, Type) deprecated -dnl -define(`NCX_PUTNo',dnl -`dnl -int -ncx_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp) -{ - char *xp = (char *) *xpp; - int status = NC_NOERR; - $1 xx; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - xx = ($1) *tp; - { - int lstatus = ncx_put_$1_$1(xp, &xx); - if(lstatus != NC_NOERR) - status = lstatus; - } - } - - *xpp = (void *)xp; - return status; -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PUTN(XType, Type, condition) -dnl -define(`NCX_PUTN',dnl -`dnl -int -ncx_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp) -{ -`#'if _SX && Xsizeof($1) == Isizeof($1) - - /* basic algorithm is: - * - ensure sane alignment of output data - * - copy (conversion happens automatically) input data - * to output - * - update tp to point at next unconverted input, and xpp to point - * at next location for converted output - */ - long i, j, ni; - $1 tmp[LOOPCNT]; /* in case input is misaligned */ - $1 *xp; -ifelse( $1$2, intfloat,dnl -`dnl - double d; /* special case for ncx_putn_int_float */ -')dnl - int nrange = 0; /* number of range errors */ - int realign = 0; /* "do we need to fix input data alignment?" */ - long cxp = (long) *((char**)xpp); - - realign = (cxp & 7) % Isizeof($1); - /* sjl: manually stripmine so we can limit amount of - * vector work space reserved to LOOPCNT elements. Also - * makes vectorisation easy */ - for (j=0; j Xmax($1) PUTN_CheckBND($1, $2); -',dnl -`dnl - /* the normal case: */ - xp[i] = ($1) Max( Xmin($1), Min(Xmax($1), ($1) tp[i])); - /* test for range errors (not always needed but do it anyway) */ - /* if xpp is unsigned && tp is signed, we need check if tp[i] >= 0 */ - /* if tp is unsigned, we need not check if tp[i] < Xmin */ - nrange += tp[i] > Xmax($1) PUTN_CheckBND($1, $2); -')dnl - } - /* copy workspace back if necessary */ - if (realign) { - memcpy(*xpp, tmp, ni*Xsizeof($1)); - xp = ($1 *) *xpp; - } - /* update xpp and tp */ - xp += ni; - tp += ni; - *xpp = (void*)xp; - } - return nrange == 0 ? NC_NOERR : NC_ERANGE; - -#else /* not SX */ - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - int lstatus = ncx_put_$1_$2(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -#endif -} -')dnl -dnl dnl dnl -dnl -dnl NCX_PAD_PUTN_SHORT(xtype, ttype) -dnl -define(`NCX_PAD_PUTN_SHORT',dnl -`dnl -int -ncx_pad_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp) -{ - const size_t rndup = nelems % 2; - - char *xp = (char *) *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += Xsizeof($1), tp++) - { - int lstatus = ncx_put_$1_$2(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - if(rndup != 0) - { - (void) memcpy(xp, nada, Xsizeof($1)); - xp += Xsizeof($1); - } - - *xpp = (void *)xp; - return status; -} -')dnl - -dnl dnl dnl -dnl -dnl Declare & define routines -dnl -dnl dnl dnl - -/* schar ---------------------------------------------------------------------*/ - -dnl NCX_GETN_CHAR(schar, schar) -int -ncx_getn_schar_schar(const void **xpp, size_t nelems, schar *tp) -{ - NCX_GETN_Byte_Body -} -dnl NCX_GETN_CHAR(schar, uchar) -int -ncx_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - NCX_GETN_Byte_Body -} -NCX_GETN_CHAR(schar, short) -NCX_GETN_CHAR(schar, int) -NCX_GETN_CHAR(schar, float) -NCX_GETN_CHAR(schar, double) -NCX_GETN_CHAR(schar, longlong) -NCX_GETN_CHAR(schar, ushort) -NCX_GETN_CHAR(schar, uint) -NCX_GETN_CHAR(schar, ulonglong) - -dnl NCX_PAD_GETN_CHAR(schar, schar) -int -ncx_pad_getn_schar_schar(const void **xpp, size_t nelems, schar *tp) -{ - NCX_PAD_GETN_Byte_Body -} -dnl NCX_PAD_GETN_CHAR(schar, uchar) -int -ncx_pad_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - NCX_PAD_GETN_Byte_Body -} -NCX_PAD_GETN_CHAR(schar, short) -NCX_PAD_GETN_CHAR(schar, int) -NCX_PAD_GETN_CHAR(schar, float) -NCX_PAD_GETN_CHAR(schar, double) -NCX_PAD_GETN_CHAR(schar, longlong) -NCX_PAD_GETN_CHAR(schar, ushort) -NCX_PAD_GETN_CHAR(schar, uint) -NCX_PAD_GETN_CHAR(schar, ulonglong) - -dnl NCX_PUTN_CHAR(schar, schar) -int -ncx_putn_schar_schar(void **xpp, size_t nelems, const schar *tp) -{ - NCX_PUTN_Byte_Body -} -dnl NCX_PUTN_CHAR(schar, uchar) -int -ncx_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - NCX_PUTN_Byte_Body -} -NCX_PUTN_CHAR(schar, short) -NCX_PUTN_CHAR(schar, int) -NCX_PUTN_CHAR(schar, float) -NCX_PUTN_CHAR(schar, double) -NCX_PUTN_CHAR(schar, longlong) -NCX_PUTN_CHAR(schar, ushort) -NCX_PUTN_CHAR(schar, uint) -NCX_PUTN_CHAR(schar, ulonglong) - -dnl NCX_PAD_PUTN_CHAR(schar, schar) -int -ncx_pad_putn_schar_schar(void **xpp, size_t nelems, const schar *tp) -{ - NCX_PAD_PUTN_Byte_Body -} -dnl NCX_PAD_PUTN_CHAR(schar, uchar) -int -ncx_pad_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - NCX_PAD_PUTN_Byte_Body -} -NCX_PAD_PUTN_CHAR(schar, short) -NCX_PAD_PUTN_CHAR(schar, int) -NCX_PAD_PUTN_CHAR(schar, float) -NCX_PAD_PUTN_CHAR(schar, double) -NCX_PAD_PUTN_CHAR(schar, longlong) -NCX_PAD_PUTN_CHAR(schar, ushort) -NCX_PAD_PUTN_CHAR(schar, uint) -NCX_PAD_PUTN_CHAR(schar, ulonglong) - - -/* uchar ---------------------------------------------------------------------*/ -dnl -dnl NCX_GETN_CHAR(uchar, schar) -int -ncx_getn_uchar_schar(const void **xpp, size_t nelems, schar *tp) -{ - NCX_GETN_Byte_Body -} -dnl NCX_GETN_CHAR(uchar, uchar) -int -ncx_getn_uchar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - NCX_GETN_Byte_Body -} -NCX_GETN_CHAR(uchar, short) -NCX_GETN_CHAR(uchar, int) -NCX_GETN_CHAR(uchar, float) -NCX_GETN_CHAR(uchar, double) -NCX_GETN_CHAR(uchar, longlong) -NCX_GETN_CHAR(uchar, ushort) -NCX_GETN_CHAR(uchar, uint) -NCX_GETN_CHAR(uchar, ulonglong) - -dnl NCX_PAD_GETN_CHAR(uchar, schar) -int -ncx_pad_getn_uchar_schar(const void **xpp, size_t nelems, schar *tp) -{ - NCX_PAD_GETN_Byte_Body -} -dnl NCX_PAD_GETN_CHAR(uchar, uchar) -int -ncx_pad_getn_uchar_uchar(const void **xpp, size_t nelems, uchar *tp) -{ - NCX_PAD_GETN_Byte_Body -} -NCX_PAD_GETN_CHAR(uchar, short) -NCX_PAD_GETN_CHAR(uchar, int) -NCX_PAD_GETN_CHAR(uchar, float) -NCX_PAD_GETN_CHAR(uchar, double) -NCX_PAD_GETN_CHAR(uchar, longlong) -NCX_PAD_GETN_CHAR(uchar, ushort) -NCX_PAD_GETN_CHAR(uchar, uint) -NCX_PAD_GETN_CHAR(uchar, ulonglong) - -dnl NCX_PUTN_CHAR(uchar, schar) -int -ncx_putn_uchar_schar(void **xpp, size_t nelems, const schar *tp) -{ - NCX_PUTN_Byte_Body -} -dnl NCX_PUTN_CHAR(uchar, uchar) -int -ncx_putn_uchar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - NCX_PUTN_Byte_Body -} -NCX_PUTN_CHAR(uchar, short) -NCX_PUTN_CHAR(uchar, int) -NCX_PUTN_CHAR(uchar, float) -NCX_PUTN_CHAR(uchar, double) -NCX_PUTN_CHAR(uchar, longlong) -NCX_PUTN_CHAR(uchar, ushort) -NCX_PUTN_CHAR(uchar, uint) -NCX_PUTN_CHAR(uchar, ulonglong) - -dnl NCX_PAD_PUTN_UCHAR(uchar, schar) -int -ncx_pad_putn_uchar_schar(void **xpp, size_t nelems, const schar *tp) -{ - NCX_PAD_PUTN_Byte_Body -} -dnl NCX_PAD_PUTN_UCHAR(uchar, uchar) -int -ncx_pad_putn_uchar_uchar(void **xpp, size_t nelems, const uchar *tp) -{ - NCX_PAD_PUTN_Byte_Body -} -NCX_PAD_PUTN_CHAR(uchar, short) -NCX_PAD_PUTN_CHAR(uchar, int) -NCX_PAD_PUTN_CHAR(uchar, float) -NCX_PAD_PUTN_CHAR(uchar, double) -NCX_PAD_PUTN_CHAR(uchar, longlong) -NCX_PAD_PUTN_CHAR(uchar, ushort) -NCX_PAD_PUTN_CHAR(uchar, uint) -NCX_PAD_PUTN_CHAR(uchar, ulonglong) - -/* short ---------------------------------------------------------------------*/ - -#if X_SIZEOF_SHORT == SIZEOF_SHORT -/* optimized version */ -int -ncx_getn_short_short(const void **xpp, size_t nelems, short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(short)); -# else - swapn2b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_SHORT); - return NC_NOERR; -} -#else -NCX_GETN(short, short) -#endif -NCX_GETN(short, schar) -NCX_GETN(short, int) -NCX_GETN(short, float) -NCX_GETN(short, double) -NCX_GETN(short, longlong) -NCX_GETN(short, uchar) -NCX_GETN(short, ushort) -NCX_GETN(short, uint) -NCX_GETN(short, ulonglong) - -NCX_PAD_GETN_SHORT(short, schar) -NCX_PAD_GETN_SHORT(short, uchar) -NCX_PAD_GETN_SHORT(short, short) -NCX_PAD_GETN_SHORT(short, int) -NCX_PAD_GETN_SHORT(short, float) -NCX_PAD_GETN_SHORT(short, double) -NCX_PAD_GETN_SHORT(short, uint) -NCX_PAD_GETN_SHORT(short, longlong) -NCX_PAD_GETN_SHORT(short, ulonglong) -NCX_PAD_GETN_SHORT(short, ushort) - -#if X_SIZEOF_SHORT == SIZEOF_SHORT -/* optimized version */ -int -ncx_putn_short_short(void **xpp, size_t nelems, const short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_SHORT); -# else - swapn2b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_SHORT); - return NC_NOERR; -} -#else -NCX_PUTN(short, short) -#endif -NCX_PUTN(short, schar) -NCX_PUTN(short, int) -NCX_PUTN(short, float) -NCX_PUTN(short, double) -NCX_PUTN(short, longlong) -NCX_PUTN(short, uchar) -NCX_PUTN(short, uint) -NCX_PUTN(short, ulonglong) -NCX_PUTN(short, ushort) - -NCX_PAD_PUTN_SHORT(short, schar) -NCX_PAD_PUTN_SHORT(short, uchar) -NCX_PAD_PUTN_SHORT(short, short) -NCX_PAD_PUTN_SHORT(short, int) -NCX_PAD_PUTN_SHORT(short, float) -NCX_PAD_PUTN_SHORT(short, double) -NCX_PAD_PUTN_SHORT(short, uint) -NCX_PAD_PUTN_SHORT(short, longlong) -NCX_PAD_PUTN_SHORT(short, ulonglong) -NCX_PAD_PUTN_SHORT(short, ushort) - - -/* ushort --------------------------------------------------------------------*/ - -#if X_SIZEOF_USHORT == SIZEOF_USHORT -/* optimized version */ -int -ncx_getn_ushort_ushort(const void **xpp, size_t nelems, unsigned short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(unsigned short)); -# else - swapn2b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_USHORT); - return NC_NOERR; -} -#else -NCX_GETN(ushort, ushort) -#endif -NCX_GETN(ushort, schar) -NCX_GETN(ushort, short) -NCX_GETN(ushort, int) -NCX_GETN(ushort, float) -NCX_GETN(ushort, double) -NCX_GETN(ushort, longlong) -NCX_GETN(ushort, uchar) -NCX_GETN(ushort, uint) -NCX_GETN(ushort, ulonglong) - -NCX_PAD_GETN_SHORT(ushort, schar) -NCX_PAD_GETN_SHORT(ushort, uchar) -NCX_PAD_GETN_SHORT(ushort, short) -NCX_PAD_GETN_SHORT(ushort, ushort) -NCX_PAD_GETN_SHORT(ushort, int) -NCX_PAD_GETN_SHORT(ushort, uint) -NCX_PAD_GETN_SHORT(ushort, float) -NCX_PAD_GETN_SHORT(ushort, double) -NCX_PAD_GETN_SHORT(ushort, longlong) -NCX_PAD_GETN_SHORT(ushort, ulonglong) - -#if X_SIZEOF_USHORT == SIZEOF_USHORT -/* optimized version */ -int -ncx_putn_ushort_ushort(void **xpp, size_t nelems, const unsigned short *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_USHORT); -# else - swapn2b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_USHORT); - return NC_NOERR; -} -#else -NCX_PUTN(ushort, ushort) -#endif -NCX_PUTN(ushort, schar) -NCX_PUTN(ushort, short) -NCX_PUTN(ushort, int) -NCX_PUTN(ushort, float) -NCX_PUTN(ushort, double) -NCX_PUTN(ushort, longlong) -NCX_PUTN(ushort, uchar) -NCX_PUTN(ushort, uint) -NCX_PUTN(ushort, ulonglong) - -NCX_PAD_PUTN_SHORT(ushort, schar) -NCX_PAD_PUTN_SHORT(ushort, uchar) -NCX_PAD_PUTN_SHORT(ushort, short) -NCX_PAD_PUTN_SHORT(ushort, int) -NCX_PAD_PUTN_SHORT(ushort, float) -NCX_PAD_PUTN_SHORT(ushort, double) -NCX_PAD_PUTN_SHORT(ushort, uint) -NCX_PAD_PUTN_SHORT(ushort, longlong) -NCX_PAD_PUTN_SHORT(ushort, ulonglong) -NCX_PAD_PUTN_SHORT(ushort, ushort) - - -/* int -----------------------------------------------------------------------*/ - -#if X_SIZEOF_INT == SIZEOF_INT -/* optimized version */ -int -ncx_getn_int_int(const void **xpp, size_t nelems, int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(int)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_INT); - return NC_NOERR; -} -#else -NCX_GETN(int, int) -#endif -NCX_GETN(int, schar) -NCX_GETN(int, short) -NCX_GETN(int, float) -NCX_GETN(int, double) -NCX_GETN(int, longlong) -NCX_GETN(int, uchar) -NCX_GETN(int, ushort) -NCX_GETN(int, uint) -NCX_GETN(int, ulonglong) - -#if X_SIZEOF_INT == SIZEOF_INT -/* optimized version */ -int -ncx_putn_int_int(void **xpp, size_t nelems, const int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_INT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_INT); - return NC_NOERR; -} -#else -NCX_PUTN(int, int) -#endif -NCX_PUTN(int, schar) -NCX_PUTN(int, short) -NCX_PUTN(int, float) -NCX_PUTN(int, double) -NCX_PUTN(int, longlong) -NCX_PUTN(int, uchar) -NCX_PUTN(int, ushort) -NCX_PUTN(int, uint) -NCX_PUTN(int, ulonglong) - -/* uint ----------------------------------------------------------------------*/ - -#if X_SIZEOF_UINT == SIZEOF_UINT -/* optimized version */ -int -ncx_getn_uint_uint(const void **xpp, size_t nelems, unsigned int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(uint)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_UINT); - return NC_NOERR; -} -#else -NCX_GETN(uint, uint) -#endif -NCX_GETN(uint, schar) -NCX_GETN(uint, short) -NCX_GETN(uint, int) -NCX_GETN(uint, float) -NCX_GETN(uint, double) -NCX_GETN(uint, longlong) -NCX_GETN(uint, uchar) -NCX_GETN(uint, ushort) -NCX_GETN(uint, ulonglong) - -#if X_SIZEOF_UINT == SIZEOF_UINT -/* optimized version */ -int -ncx_putn_uint_uint(void **xpp, size_t nelems, const unsigned int *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_UINT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_UINT); - return NC_NOERR; -} -#else -NCX_PUTN(uint, uint) -#endif -NCX_PUTN(uint, schar) -NCX_PUTN(uint, short) -NCX_PUTN(uint, int) -NCX_PUTN(uint, float) -NCX_PUTN(uint, double) -NCX_PUTN(uint, longlong) -NCX_PUTN(uint, uchar) -NCX_PUTN(uint, ushort) -NCX_PUTN(uint, ulonglong) - - -/* float ---------------------------------------------------------------------*/ - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_getn_float_float(const void **xpp, size_t nelems, float *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(float)); -# else - swapn4b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_FLOAT); - return NC_NOERR; -} -#elif vax -int -ncx_getn_float_float(const void **xpp, size_t nfloats, float *ip) -{ - float *const end = ip + nfloats; - - while(ip < end) - { -GET_VAX_DFLOAT_Body(`(*xpp)') - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_FLOAT; - } - return NC_NOERR; -} -#else -int -ncx_getn_float_float(const void **xpp, size_t nelems, float *tp) -{ - const char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - const int lstatus = ncx_get_float_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -} - -#endif -NCX_GETN(float, schar) -NCX_GETN(float, short) -NCX_GETN(float, int) -NCX_GETN(float, double) -NCX_GETN(float, longlong) -NCX_GETN(float, ushort) -NCX_GETN(float, uchar) -NCX_GETN(float, uint) -NCX_GETN(float, ulonglong) - -#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_putn_float_float(void **xpp, size_t nelems, const float *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_FLOAT); -# else - swapn4b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_FLOAT); - return NC_NOERR; -} -#elif vax -int -ncx_putn_float_float(void **xpp, size_t nfloats, const float *ip) -{ - const float *const end = ip + nfloats; - - while(ip < end) - { -PUT_VAX_DFLOAT_Body(`(*xpp)') - - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_FLOAT; - } - return NC_NOERR; -} -#else -int -ncx_putn_float_float(void **xpp, size_t nelems, const float *tp) -{ - char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++) - { - int lstatus = ncx_put_float_float(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -} -#endif -NCX_PUTN(float, schar) -NCX_PUTN(float, short) -NCX_PUTN(float, int) -NCX_PUTN(float, double) -NCX_PUTN(float, longlong) -NCX_PUTN(float, uchar) -NCX_PUTN(float, ushort) -NCX_PUTN(float, uint) -NCX_PUTN(float, ulonglong) - -/* double --------------------------------------------------------------------*/ - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_getn_double_double(const void **xpp, size_t nelems, double *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(double)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_DOUBLE); - return NC_NOERR; -} -#elif vax -int -ncx_getn_double_double(const void **xpp, size_t ndoubles, double *ip) -{ - double *const end = ip + ndoubles; - - while(ip < end) - { -GET_VAX_DDOUBLE_Body(`(*xpp)') - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE; - } - return NC_NOERR; -} - /* vax */ -#else -int -ncx_getn_double_double(const void **xpp, size_t nelems, double *tp) -{ - const char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - const int lstatus = ncx_get_double_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (const void *)xp; - return status; -} -#endif -NCX_GETN(double, schar) -NCX_GETN(double, short) -NCX_GETN(double, int) -NCX_GETN(double, float) -NCX_GETN(double, longlong) -NCX_GETN(double, uchar) -NCX_GETN(double, ushort) -NCX_GETN(double, uint) -NCX_GETN(double, ulonglong) - -#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT) -/* optimized version */ -int -ncx_putn_double_double(void **xpp, size_t nelems, const double *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_DOUBLE); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_DOUBLE); - return NC_NOERR; -} -#elif vax -int -ncx_putn_double_double(void **xpp, size_t ndoubles, const double *ip) -{ - const double *const end = ip + ndoubles; - - while(ip < end) - { -PUT_VAX_DDOUBLE_Body(`(*xpp)') - ip++; - *xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE; - } - return NC_NOERR; -} - /* vax */ -#else -int -ncx_putn_double_double(void **xpp, size_t nelems, const double *tp) -{ - char *xp = *xpp; - int status = NC_NOERR; - - for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++) - { - int lstatus = ncx_put_double_double(xp, tp); - if(lstatus != NC_NOERR) - status = lstatus; - } - - *xpp = (void *)xp; - return status; -} -#endif -NCX_PUTN(double, schar) -NCX_PUTN(double, short) -NCX_PUTN(double, int) -NCX_PUTN(double, float) -NCX_PUTN(double, longlong) -NCX_PUTN(double, uchar) -NCX_PUTN(double, ushort) -NCX_PUTN(double, uint) -NCX_PUTN(double, ulonglong) - - -/* longlong -----------------------------------------------------------------------*/ - -#if X_SIZEOF_LONGLONG == SIZEOF_LONGLONG -/* optimized version */ -int -ncx_getn_longlong_longlong(const void **xpp, size_t nelems, long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(long long)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_LONGLONG); - return NC_NOERR; -} -#else -NCX_GETN(longlong, longlong) -#endif -NCX_GETN(longlong, schar) -NCX_GETN(longlong, short) -NCX_GETN(longlong, int) -NCX_GETN(longlong, float) -NCX_GETN(longlong, double) -NCX_GETN(longlong, uchar) -NCX_GETN(longlong, ushort) -NCX_GETN(longlong, uint) -NCX_GETN(longlong, ulonglong) - -#if X_SIZEOF_LONGLONG == SIZEOF_LONGLONG -/* optimized version */ -int -ncx_putn_longlong_longlong(void **xpp, size_t nelems, const long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_LONGLONG); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_LONGLONG); - return NC_NOERR; -} -#else -NCX_PUTN(longlong, longlong) -#endif -NCX_PUTN(longlong, schar) -NCX_PUTN(longlong, short) -NCX_PUTN(longlong, int) -NCX_PUTN(longlong, float) -NCX_PUTN(longlong, double) -NCX_PUTN(longlong, uchar) -NCX_PUTN(longlong, ushort) -NCX_PUTN(longlong, uint) -NCX_PUTN(longlong, ulonglong) - -/* ulonglong ----------------------------------------------------------------------*/ - -#if X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG -/* optimized version */ -int -ncx_getn_ulonglong_ulonglong(const void **xpp, size_t nelems, unsigned long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(tp, *xpp, nelems * sizeof(unsigned long long)); -# else - swapn8b(tp, *xpp, nelems); -# endif - *xpp = (const void *)((const char *)(*xpp) + nelems * X_SIZEOF_ULONGLONG); - return NC_NOERR; -} -#else -NCX_GETN(ulonglong, ulonglong) -#endif -NCX_GETN(ulonglong, schar) -NCX_GETN(ulonglong, short) -NCX_GETN(ulonglong, int) -NCX_GETN(ulonglong, float) -NCX_GETN(ulonglong, double) -NCX_GETN(ulonglong, longlong) -NCX_GETN(ulonglong, uchar) -NCX_GETN(ulonglong, ushort) -NCX_GETN(ulonglong, uint) - -#if X_SIZEOF_ULONGLONG == SIZEOF_ULONGLONG -/* optimized version */ -int -ncx_putn_ulonglong_ulonglong(void **xpp, size_t nelems, const unsigned long long *tp) -{ -#ifdef WORDS_BIGENDIAN - (void) memcpy(*xpp, tp, nelems * X_SIZEOF_ULONGLONG); -# else - swapn8b(*xpp, tp, nelems); -# endif - *xpp = (void *)((char *)(*xpp) + nelems * X_SIZEOF_ULONGLONG); - return NC_NOERR; -} -#else -NCX_PUTN(ulonglong, ulonglong) -#endif -NCX_PUTN(ulonglong, schar) -NCX_PUTN(ulonglong, short) -NCX_PUTN(ulonglong, int) -NCX_PUTN(ulonglong, float) -NCX_PUTN(ulonglong, double) -NCX_PUTN(ulonglong, longlong) -NCX_PUTN(ulonglong, uchar) -NCX_PUTN(ulonglong, ushort) -NCX_PUTN(ulonglong, uint) - - -/* - * Other aggregate conversion functions. - */ - -/* text */ -#ifdef __arm__ -int -ncx_getn_text(const void **xpp, size_t nelems, signed char *tp) -#else -int -ncx_getn_text(const void **xpp, size_t nelems, char *tp) -#endif -{ -NCX_GETN_Byte_Body -} - -#ifdef __arm__ -int -ncx_pad_getn_text(const void **xpp, size_t nelems, signed char *tp) -#else -int -ncx_pad_getn_text(const void **xpp, size_t nelems, char *tp) -#endif -{ -NCX_PAD_GETN_Byte_Body -} - -#ifdef __arm__ -int ncx_putn_text(void **xpp, size_t nelems, const signed char *tp) -#else -int -ncx_putn_text(void **xpp, size_t nelems, const char *tp) -#endif -{ -NCX_PUTN_Byte_Body -} - -#ifdef __arm__ -int -ncx_pad_putn_text(void **xpp, size_t nelems, const signed char *tp) -#else -int -ncx_pad_putn_text(void **xpp, size_t nelems, const char *tp) -#endif -{ -NCX_PAD_PUTN_Byte_Body -} - - -/* opaque */ - -int -ncx_getn_void(const void **xpp, size_t nelems, void *tp) -{ -NCX_GETN_Byte_Body -} - -int -ncx_pad_getn_void(const void **xpp, size_t nelems, void *tp) -{ -NCX_PAD_GETN_Byte_Body -} - -int -ncx_putn_void(void **xpp, size_t nelems, const void *tp) -{ -NCX_PUTN_Byte_Body -} - -int -ncx_pad_putn_void(void **xpp, size_t nelems, const void *tp) -{ -NCX_PAD_PUTN_Byte_Body -} diff --git a/contrib/netcdf/4.4.1.1/libsrc/putget.c b/contrib/netcdf/4.4.1.1/libsrc/putget.c deleted file mode 100644 index 2ae29b20c5f..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc/putget.c +++ /dev/null @@ -1,10569 +0,0 @@ -/* Do not edit this file. It is produced from the corresponding .m4 source */ -/* - * Copyright 1996, University Corporation for Atmospheric Research - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - */ -/* $Id: putget.m4 2783 2014-10-26 05:19:35Z wkliao $ */ - -#include "config.h" -#include -#include -#include - -#include "netcdf.h" -#include "nc3internal.h" -#include "ncx.h" -#include "fbits.h" -#include "onstack.h" -#ifdef LOCKNUMREC -# include /* for SGI/Cray SHMEM routines */ -# ifdef LN_TEST -# include -# endif -#endif -#include "nc3dispatch.h" - - -#undef MIN /* system may define MIN somewhere and complain */ -#define MIN(mm,nn) (((mm) < (nn)) ? (mm) : (nn)) - -static int -readNCv(const NC3_INFO* ncp, const NC_var* varp, const size_t* start, - const size_t nelems, void* value, const nc_type memtype); -static int -writeNCv(NC3_INFO* ncp, const NC_var* varp, const size_t* start, - const size_t nelems, const void* value, const nc_type memtype); - - -/* #define ODEBUG 1 */ - -#if ODEBUG -#include -/* - * Print the values of an array of size_t - */ -void -arrayp(const char *label, size_t count, const size_t *array) -{ - (void) fprintf(stderr, "%s", label); - (void) fputc('\t',stderr); - for(; count > 0; count--, array++) - (void) fprintf(stderr," %lu", (unsigned long)*array); - (void) fputc('\n',stderr); -} -#endif /* ODEBUG */ - - -/* Begin fill */ -/* - * This is tunable parameter. - * It essentially controls the tradeoff between the number of times - * memcpy() gets called to copy the external data to fill - * a large buffer vs the number of times its called to - * prepare the external data. - */ -#if _SX -/* NEC SX specific optimization */ -#define NFILL 2048 -#else -#define NFILL 16 -#endif - - - -/* - * Next 6 type specific functions - * Fill a some memory with the default special value. - * Formerly -NC_arrayfill() - */ -static int -NC_fill_schar( - void **xpp, - size_t nelems) /* how many */ -{ - schar fillp[NFILL * sizeof(double)/X_SIZEOF_CHAR]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - schar *vp = fillp; /* lower bound of area to be filled */ - const schar *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_BYTE; - } - } - return ncx_putn_schar_schar(xpp, nelems, fillp); -} - -static int -NC_fill_char( - void **xpp, - size_t nelems) /* how many */ -{ - char fillp[NFILL * sizeof(double)/X_SIZEOF_CHAR]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - char *vp = fillp; /* lower bound of area to be filled */ - const char *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_CHAR; - } - } - return ncx_putn_char_char(xpp, nelems, fillp); -} - -static int -NC_fill_short( - void **xpp, - size_t nelems) /* how many */ -{ - short fillp[NFILL * sizeof(double)/X_SIZEOF_SHORT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - short *vp = fillp; /* lower bound of area to be filled */ - const short *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_SHORT; - } - } - return ncx_putn_short_short(xpp, nelems, fillp); -} - - -#if (SIZEOF_INT >= X_SIZEOF_INT) -static int -NC_fill_int( - void **xpp, - size_t nelems) /* how many */ -{ - int fillp[NFILL * sizeof(double)/X_SIZEOF_INT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - int *vp = fillp; /* lower bound of area to be filled */ - const int *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_INT; - } - } - return ncx_putn_int_int(xpp, nelems, fillp); -} - -#elif SIZEOF_LONG == X_SIZEOF_INT -static int -NC_fill_int( - void **xpp, - size_t nelems) /* how many */ -{ - long fillp[NFILL * sizeof(double)/X_SIZEOF_INT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - long *vp = fillp; /* lower bound of area to be filled */ - const long *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_INT; - } - } - return ncx_putn_int_long(xpp, nelems, fillp); -} - -#else -#error "NC_fill_int implementation" -#endif - -static int -NC_fill_float( - void **xpp, - size_t nelems) /* how many */ -{ - float fillp[NFILL * sizeof(double)/X_SIZEOF_FLOAT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - float *vp = fillp; /* lower bound of area to be filled */ - const float *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_FLOAT; - } - } - return ncx_putn_float_float(xpp, nelems, fillp); -} - -static int -NC_fill_double( - void **xpp, - size_t nelems) /* how many */ -{ - double fillp[NFILL * sizeof(double)/X_SIZEOF_DOUBLE]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - double *vp = fillp; /* lower bound of area to be filled */ - const double *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_DOUBLE; - } - } - return ncx_putn_double_double(xpp, nelems, fillp); -} - - -static int -NC_fill_uchar( - void **xpp, - size_t nelems) /* how many */ -{ - uchar fillp[NFILL * sizeof(double)/X_SIZEOF_UBYTE]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - uchar *vp = fillp; /* lower bound of area to be filled */ - const uchar *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_UBYTE; - } - } - return ncx_putn_uchar_uchar(xpp, nelems, fillp); -} - -static int -NC_fill_ushort( - void **xpp, - size_t nelems) /* how many */ -{ - ushort fillp[NFILL * sizeof(double)/X_SIZEOF_USHORT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - ushort *vp = fillp; /* lower bound of area to be filled */ - const ushort *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_USHORT; - } - } - return ncx_putn_ushort_ushort(xpp, nelems, fillp); -} - -static int -NC_fill_uint( - void **xpp, - size_t nelems) /* how many */ -{ - uint fillp[NFILL * sizeof(double)/X_SIZEOF_UINT]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - uint *vp = fillp; /* lower bound of area to be filled */ - const uint *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_UINT; - } - } - return ncx_putn_uint_uint(xpp, nelems, fillp); -} - -static int -NC_fill_longlong( - void **xpp, - size_t nelems) /* how many */ -{ - longlong fillp[NFILL * sizeof(double)/X_SIZEOF_LONGLONG]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - longlong *vp = fillp; /* lower bound of area to be filled */ - const longlong *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_INT64; - } - } - return ncx_putn_longlong_longlong(xpp, nelems, fillp); -} - -static int -NC_fill_ulonglong( - void **xpp, - size_t nelems) /* how many */ -{ - ulonglong fillp[NFILL * sizeof(double)/X_SIZEOF_ULONGLONG]; - - assert(nelems <= sizeof(fillp)/sizeof(fillp[0])); - - { - ulonglong *vp = fillp; /* lower bound of area to be filled */ - const ulonglong *const end = vp + nelems; - while(vp < end) - { - *vp++ = NC_FILL_UINT64; - } - } - return ncx_putn_ulonglong_ulonglong(xpp, nelems, fillp); -} - - - - -/* - * Fill the external space for variable 'varp' values at 'recno' with - * the appropriate value. If 'varp' is not a record variable, fill the - * whole thing. For the special case when 'varp' is the only record - * variable and it is of type byte, char, or short, varsize should be - * ncp->recsize, otherwise it should be varp->len. - * Formerly -xdr_NC_fill() - */ -int -fill_NC_var(NC3_INFO* ncp, const NC_var *varp, size_t varsize, size_t recno) -{ - char xfillp[NFILL * X_SIZEOF_DOUBLE]; - const size_t step = varp->xsz; - const size_t nelems = sizeof(xfillp)/step; - const size_t xsz = varp->xsz * nelems; - NC_attr **attrpp = NULL; - off_t offset; - size_t remaining = varsize; - - void *xp; - int status = NC_NOERR; - - /* - * Set up fill value - */ - attrpp = NC_findattr(&varp->attrs, _FillValue); - if( attrpp != NULL ) - { - /* User defined fill value */ - if( (*attrpp)->type != varp->type || (*attrpp)->nelems != 1 ) - { - return NC_EBADTYPE; - } - else - { - /* Use the user defined value */ - char *cp = xfillp; - const char *const end = &xfillp[sizeof(xfillp)]; - - assert(step <= (*attrpp)->xsz); - - for( /*NADA*/; cp < end; cp += step) - { - (void) memcpy(cp, (*attrpp)->xvalue, step); - } - } - } - else - { - /* use the default */ - - assert(xsz % X_ALIGN == 0); - assert(xsz <= sizeof(xfillp)); - - xp = xfillp; - - switch(varp->type){ - case NC_BYTE : - status = NC_fill_schar(&xp, nelems); - break; - case NC_CHAR : - status = NC_fill_char(&xp, nelems); - break; - case NC_SHORT : - status = NC_fill_short(&xp, nelems); - break; - case NC_INT : - status = NC_fill_int(&xp, nelems); - break; - case NC_FLOAT : - status = NC_fill_float(&xp, nelems); - break; - case NC_DOUBLE : - status = NC_fill_double(&xp, nelems); - break; - case NC_UBYTE : - status = NC_fill_uchar(&xp, nelems); - break; - case NC_USHORT : - status = NC_fill_ushort(&xp, nelems); - break; - case NC_UINT : - status = NC_fill_uint(&xp, nelems); - break; - case NC_INT64 : - status = NC_fill_longlong(&xp, nelems); - break; - case NC_UINT64 : - status = NC_fill_ulonglong(&xp, nelems); - break; - default : - assert("fill_NC_var invalid type" == 0); - status = NC_EBADTYPE; - break; - } - if(status != NC_NOERR) - return status; - - assert(xp == xfillp + xsz); - } - - /* - * copyout: - * xfillp now contains 'nelems' elements of the fill value - * in external representation. - */ - - /* - * Copy it out. - */ - - offset = varp->begin; - if(IS_RECVAR(varp)) - { - offset += (off_t)ncp->recsize * recno; - } - - assert(remaining > 0); - for(;;) - { - const size_t chunksz = MIN(remaining, ncp->chunk); - size_t ii; - - status = ncio_get(ncp->nciop, offset, chunksz, - RGN_WRITE, &xp); - if(status != NC_NOERR) - { - return status; - } - - /* - * fill the chunksz buffer in units of xsz - */ - for(ii = 0; ii < chunksz/xsz; ii++) - { - (void) memcpy(xp, xfillp, xsz); - xp = (char *)xp + xsz; - } - /* - * Deal with any remainder - */ - { - const size_t rem = chunksz % xsz; - if(rem != 0) - { - (void) memcpy(xp, xfillp, rem); - /* xp = (char *)xp + xsz; */ - } - - } - - status = ncio_rel(ncp->nciop, offset, RGN_MODIFIED); - - if(status != NC_NOERR) - { - break; - } - - remaining -= chunksz; - if(remaining == 0) - break; /* normal loop exit */ - offset += chunksz; - - } - - return status; -} -/* End fill */ - - -/* - * Add a record containing the fill values. - */ -static int -NCfillrecord(NC3_INFO* ncp, const NC_var *const *varpp, size_t recno) -{ - size_t ii = 0; - for(; ii < ncp->vars.nelems; ii++, varpp++) - { - if( !IS_RECVAR(*varpp) ) - { - continue; /* skip non-record variables */ - } - { - const int status = fill_NC_var(ncp, *varpp, (*varpp)->len, recno); - if(status != NC_NOERR) - return status; - } - } - return NC_NOERR; -} - - -/* - * Add a record containing the fill values in the special case when - * there is exactly one record variable, where we don't require each - * record to be four-byte aligned (no record padding). - */ -static int -NCfillspecialrecord(NC3_INFO* ncp, const NC_var *varp, size_t recno) -{ - int status; - assert(IS_RECVAR(varp)); - status = fill_NC_var(ncp, varp, ncp->recsize, recno); - if(status != NC_NOERR) - return status; - return NC_NOERR; -} - - -/* - * It is advantageous to - * #define TOUCH_LAST - * when using memory mapped io. - */ -#if TOUCH_LAST -/* - * Grow the file to a size which can contain recno - */ -static int -NCtouchlast(NC3_INFO* ncp, const NC_var *const *varpp, size_t recno) -{ - int status = NC_NOERR; - const NC_var *varp = NULL; - - { - size_t ii = 0; - for(; ii < ncp->vars.nelems; ii++, varpp++) - { - if( !IS_RECVAR(*varpp) ) - { - continue; /* skip non-record variables */ - } - varp = *varpp; - } - } - assert(varp != NULL); - assert( IS_RECVAR(varp) ); - { - const off_t offset = varp->begin - + (off_t)(recno-1) * (off_t)ncp->recsize - + (off_t)(varp->len - varp->xsz); - void *xp; - - - status = ncio_get(ncp->nciop, offset, varp->xsz, - RGN_WRITE, &xp); - if(status != NC_NOERR) - return status; - (void)memset(xp, 0, varp->xsz); - status = ncio_rel(ncp->nciop, offset, RGN_MODIFIED); - } - return status; -} -#endif /* TOUCH_LAST */ - - -/* - * Ensure that the netcdf file has 'numrecs' records, - * add records and fill as necessary. - */ -static int -NCvnrecs(NC3_INFO* ncp, size_t numrecs) -{ - int status = NC_NOERR; -#ifdef LOCKNUMREC - ushmem_t myticket = 0, nowserving = 0; - ushmem_t numpe = (ushmem_t) _num_pes(); - - /* get ticket and wait */ - myticket = shmem_short_finc((shmem_t *) ncp->lock + LOCKNUMREC_LOCK, - ncp->lock[LOCKNUMREC_BASEPE]); -#ifdef LN_TEST - fprintf(stderr,"%d of %d : ticket = %hu\n", - _my_pe(), _num_pes(), myticket); -#endif - do { - shmem_short_get((shmem_t *) &nowserving, - (shmem_t *) ncp->lock + LOCKNUMREC_SERVING, 1, - ncp->lock[LOCKNUMREC_BASEPE]); -#ifdef LN_TEST - fprintf(stderr,"%d of %d : serving = %hu\n", - _my_pe(), _num_pes(), nowserving); -#endif - /* work-around for non-unique tickets */ - if (nowserving > myticket && nowserving < myticket + numpe ) { - /* get a new ticket ... you've been bypassed */ - /* and handle the unlikely wrap-around effect */ - myticket = shmem_short_finc( - (shmem_t *) ncp->lock + LOCKNUMREC_LOCK, - ncp->lock[LOCKNUMREC_BASEPE]); -#ifdef LN_TEST - fprintf(stderr,"%d of %d : new ticket = %hu\n", - _my_pe(), _num_pes(), myticket); -#endif - } - } while(nowserving != myticket); - /* now our turn to check & update value */ -#endif - - if(numrecs > NC_get_numrecs(ncp)) - { - - -#if TOUCH_LAST - status = NCtouchlast(ncp, - (const NC_var *const*)ncp->vars.value, - numrecs); - if(status != NC_NOERR) - goto common_return; -#endif /* TOUCH_LAST */ - - set_NC_ndirty(ncp); - - if(!NC_dofill(ncp)) - { - /* Simply set the new numrecs value */ - NC_set_numrecs(ncp, numrecs); - } - else - { - /* Treat two cases differently: - - exactly one record variable (no padding) - - multiple record variables (each record padded - to 4-byte alignment) - */ - NC_var **vpp = (NC_var **)ncp->vars.value; - NC_var *const *const end = &vpp[ncp->vars.nelems]; - NC_var *recvarp = NULL; /* last record var */ - int numrecvars = 0; - size_t cur_nrecs; - - /* determine how many record variables */ - for( /*NADA*/; vpp < end; vpp++) { - if(IS_RECVAR(*vpp)) { - recvarp = *vpp; - numrecvars++; - } - } - - if (numrecvars != 1) { /* usual case */ - /* Fill each record out to numrecs */ - while((cur_nrecs = NC_get_numrecs(ncp)) < numrecs) - { - status = NCfillrecord(ncp, - (const NC_var *const*)ncp->vars.value, - cur_nrecs); - if(status != NC_NOERR) - { - break; - } - NC_increase_numrecs(ncp, cur_nrecs +1); - } - if(status != NC_NOERR) - goto common_return; - } else { /* special case */ - /* Fill each record out to numrecs */ - while((cur_nrecs = NC_get_numrecs(ncp)) < numrecs) - { - status = NCfillspecialrecord(ncp, - recvarp, - cur_nrecs); - if(status != NC_NOERR) - { - break; - } - NC_increase_numrecs(ncp, cur_nrecs +1); - } - if(status != NC_NOERR) - goto common_return; - - } - } - - if(NC_doNsync(ncp)) - { - status = write_numrecs(ncp); - } - - } -common_return: -#ifdef LOCKNUMREC - /* finished with our lock - increment serving number */ - (void) shmem_short_finc((shmem_t *) ncp->lock + LOCKNUMREC_SERVING, - ncp->lock[LOCKNUMREC_BASEPE]); -#endif - return status; -} - - -/* - * Check whether 'coord' values are valid for the variable. - */ -static int -NCcoordck(NC3_INFO* ncp, const NC_var *varp, const size_t *coord) -{ - const size_t *ip; - size_t *up; - - if(varp->ndims == 0) - return NC_NOERR; /* 'scalar' variable */ - - if(IS_RECVAR(varp)) - { - if(*coord > X_UINT_MAX) /* rkr: bug fix from previous X_INT_MAX */ - return NC_EINVALCOORDS; /* sanity check */ - if(NC_readonly(ncp) && *coord >= NC_get_numrecs(ncp)) - { - if(!NC_doNsync(ncp)) - return NC_EINVALCOORDS; - /* else */ - { - /* Update from disk and check again */ - const int status = read_numrecs(ncp); - if(status != NC_NOERR) - return status; - if(*coord >= NC_get_numrecs(ncp)) - return NC_EINVALCOORDS; - } - } - ip = coord + 1; - up = varp->shape + 1; - } - else - { - ip = coord; - up = varp->shape; - } - -#ifdef CDEBUG -fprintf(stderr," NCcoordck: coord %ld, count %d, ip %ld\n", - coord, varp->ndims, ip ); -#endif /* CDEBUG */ - - for(; ip < coord + varp->ndims; ip++, up++) - { - -#ifdef CDEBUG -fprintf(stderr," NCcoordck: ip %p, *ip %ld, up %p, *up %lu\n", - ip, *ip, up, *up ); -#endif /* CDEBUG */ - - /* cast needed for braindead systems with signed size_t */ - if((unsigned long) *ip >= (unsigned long) *up ) - return NC_EINVALCOORDS; - } - - return NC_NOERR; -} - - -/* - * Check whether 'edges' are valid for the variable and 'start' - */ -/*ARGSUSED*/ -static int -NCedgeck(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, const size_t *edges) -{ - const size_t *const end = start + varp->ndims; - const size_t *shp = varp->shape; - - if(varp->ndims == 0) - return NC_NOERR; /* 'scalar' variable */ - - if(IS_RECVAR(varp)) - { - start++; - edges++; - shp++; - } - - for(; start < end; start++, edges++, shp++) - { - /* cast needed for braindead systems with signed size_t */ - if((unsigned long) *edges > *shp || - (unsigned long) *start + (unsigned long) *edges > *shp) - { - return(NC_EEDGE); - } - } - return NC_NOERR; -} - - -/* - * Translate the (variable, coord) pair into a seek index - */ -static off_t -NC_varoffset(const NC3_INFO* ncp, const NC_var *varp, const size_t *coord) -{ - if(varp->ndims == 0) /* 'scalar' variable */ - return varp->begin; - - if(varp->ndims == 1) - { - if(IS_RECVAR(varp)) - return varp->begin + - (off_t)(*coord) * (off_t)ncp->recsize; - /* else */ - return varp->begin + (off_t)(*coord) * (off_t)varp->xsz; - } - /* else */ - { - off_t lcoord = (off_t)coord[varp->ndims -1]; - - off_t *up = varp->dsizes +1; - const size_t *ip = coord; - const off_t *const end = varp->dsizes + varp->ndims; - - if(IS_RECVAR(varp)) - up++, ip++; - - for(; up < end; up++, ip++) - lcoord += (off_t)(*up) * (off_t)(*ip); - - lcoord *= varp->xsz; - - if(IS_RECVAR(varp)) - lcoord += (off_t)(*coord) * ncp->recsize; - - lcoord += varp->begin; - return lcoord; - } -} - - - -static int -putNCvx_char_char(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const char *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_char_char(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_schar_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_schar_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_schar_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_short_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_short_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_short_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_int_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_int_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_int_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_float_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_float_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_float_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_double_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_double_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_double_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_uchar_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uchar_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uchar_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_ushort_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ushort_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ushort_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_uint_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_uint_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_uint_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_longlong_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_longlong_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_longlong_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - -static int -putNCvx_ulonglong_schar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_schar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_uchar(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_uchar(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_short(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_short(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_int(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_int(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_float(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_float(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_double(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_double(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_longlong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_longlong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_ushort(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_ushort(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_uint(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_uint(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - -static int -putNCvx_ulonglong_ulonglong(NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, const ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nput = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - RGN_WRITE, &xp); - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_putn_ulonglong_ulonglong(&xp, nput, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - { - /* not fatal to the loop */ - status = lstatus; - } - - (void) ncio_rel(ncp->nciop, offset, - RGN_MODIFIED); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nput; - - } - - return status; -} - - - -static int -getNCvx_char_char(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, char *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_char_char(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_schar_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_schar_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_short_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_short_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_short_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_int_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_int_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_int_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_float_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_float_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_float_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_double_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_double_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_double_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_uchar_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uchar_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uchar_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_ushort_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ushort_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ushort_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_uint_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_uint_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_uint_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_longlong_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_longlong_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_longlong_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -static int -getNCvx_ulonglong_schar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, schar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_schar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_short(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, short *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_short(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_int(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, int *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_int(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_float(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, float *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_float(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_double(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, double *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_double(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_longlong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, longlong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_longlong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_uint(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uint *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_uint(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_ulonglong(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ulonglong *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_ulonglong(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -static int -getNCvx_ulonglong_ushort(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, ushort *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_ulonglong_ushort(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - - -#ifdef NOTUSED -static int -getNCvx_schar_uchar(const NC3_INFO* ncp, const NC_var *varp, - const size_t *start, size_t nelems, uchar *value) -{ - off_t offset = NC_varoffset(ncp, varp, start); - size_t remaining = varp->xsz * nelems; - int status = NC_NOERR; - const void *xp; - - if(nelems == 0) - return NC_NOERR; - - assert(value != NULL); - - for(;;) - { - size_t extent = MIN(remaining, ncp->chunk); - size_t nget = ncx_howmany(varp->type, extent); - - int lstatus = ncio_get(ncp->nciop, offset, extent, - 0, (void **)&xp); /* cast away const */ - if(lstatus != NC_NOERR) - return lstatus; - - lstatus = ncx_getn_schar_uchar(&xp, nget, value); - if(lstatus != NC_NOERR && status == NC_NOERR) - status = lstatus; - - (void) ncio_rel(ncp->nciop, offset, 0); - - remaining -= extent; - if(remaining == 0) - break; /* normal loop exit */ - offset += extent; - value += nget; - } - - return status; -} - -#endif /*NOTUSED*/ - -/* - * For ncvar{put,get}, - * find the largest contiguous block from within 'edges'. - * returns the index to the left of this (which may be -1). - * Compute the number of contiguous elements and return - * that in *iocountp. - * The presence of "record" variables makes this routine - * overly subtle. - */ -static int -NCiocount(const NC3_INFO* const ncp, const NC_var *const varp, - const size_t *const edges, - size_t *const iocountp) -{ - const size_t *edp0 = edges; - const size_t *edp = edges + varp->ndims; - const size_t *shp = varp->shape + varp->ndims; - - if(IS_RECVAR(varp)) - { - if(varp->ndims == 1 && ncp->recsize <= varp->len) - { - /* one dimensional && the only 'record' variable */ - *iocountp = *edges; - return(0); - } - /* else */ - edp0++; - } - - assert(edges != NULL); - - /* find max contiguous */ - while(edp > edp0) - { - shp--; edp--; - if(*edp < *shp ) - { - const size_t *zedp = edp; - while(zedp >= edp0) - { - if(*zedp == 0) - { - *iocountp = 0; - goto done; - } - /* Tip of the hat to segmented architectures */ - if(zedp == edp0) - break; - zedp--; - } - break; - } - assert(*edp == *shp); - } - - /* - * edp, shp reference rightmost index s.t. *(edp +1) == *(shp +1) - * - * Or there is only one dimension. - * If there is only one dimension and it is 'non record' dimension, - * edp is &edges[0] and we will return -1. - * If there is only one dimension and and it is a "record dimension", - * edp is &edges[1] (out of bounds) and we will return 0; - */ - assert(shp >= varp->shape + varp->ndims -1 - || *(edp +1) == *(shp +1)); - - /* now accumulate max count for a single io operation */ - for(*iocountp = 1, edp0 = edp; - edp0 < edges + varp->ndims; - edp0++) - { - *iocountp *= *edp0; - } - -done: - return((int)(edp - edges) - 1); -} - - -/* - * Set the elements of the array 'upp' to - * the sum of the corresponding elements of - * 'stp' and 'edp'. 'end' should be &stp[nelems]. - */ -static void -set_upper(size_t *upp, /* modified on return */ - const size_t *stp, - const size_t *edp, - const size_t *const end) -{ - while(upp < end) { - *upp++ = *stp++ + *edp++; - } -} - - -/* - * The infamous and oft-discussed odometer code. - * - * 'start[]' is the starting coordinate. - * 'upper[]' is the upper bound s.t. start[ii] < upper[ii]. - * 'coord[]' is the register, the current coordinate value. - * For some ii, - * upp == &upper[ii] - * cdp == &coord[ii] - * - * Running this routine increments *cdp. - * - * If after the increment, *cdp is equal to *upp - * (and cdp is not the leftmost dimension), - * *cdp is "zeroed" to the starting value and - * we need to "carry", eg, increment one place to - * the left. - * - * TODO: Some architectures hate recursion? - * Reimplement non-recursively. - */ -static void -odo1(const size_t *const start, const size_t *const upper, - size_t *const coord, /* modified on return */ - const size_t *upp, - size_t *cdp) -{ - assert(coord <= cdp && cdp <= coord + NC_MAX_VAR_DIMS); - assert(upper <= upp && upp <= upper + NC_MAX_VAR_DIMS); - assert(upp - upper == cdp - coord); - - assert(*cdp <= *upp); - - (*cdp)++; - if(cdp != coord && *cdp >= *upp) - { - *cdp = start[cdp - coord]; - odo1(start, upper, coord, upp -1, cdp -1); - } -} -#ifdef _CRAYC -#pragma _CRI noinline odo1 -#endif - - - -/* Define a macro to allow hash on two type values */ -#define CASE(nc1,nc2) (nc1*256+nc2) - -static int -readNCv(const NC3_INFO* ncp, const NC_var* varp, const size_t* start, - const size_t nelems, void* value, const nc_type memtype) -{ - int status = NC_NOERR; - switch (CASE(varp->type,memtype)) { - - case CASE(NC_CHAR,NC_CHAR): - case CASE(NC_CHAR,NC_UBYTE): -#ifndef __CHAR_UNSIGNED__ - return getNCvx_char_char(ncp,varp,start,nelems,(char*)value); -#else - return getNCvx_schar_schar(ncp,varp,start,nelems,(signed char*)value); -#endif - break; - case CASE(NC_BYTE,NC_BYTE): - return getNCvx_schar_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_BYTE,NC_UBYTE): - return getNCvx_schar_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_BYTE,NC_SHORT): - return getNCvx_schar_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_BYTE,NC_INT): - return getNCvx_schar_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_BYTE,NC_FLOAT): - return getNCvx_schar_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_BYTE,NC_DOUBLE): - return getNCvx_schar_double(ncp,varp,start,nelems,(double *)value); - break; - case CASE(NC_BYTE,NC_INT64): - return getNCvx_schar_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_BYTE,NC_UINT): - return getNCvx_schar_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_BYTE,NC_UINT64): - return getNCvx_schar_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_BYTE,NC_USHORT): - return getNCvx_schar_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_SHORT,NC_BYTE): - return getNCvx_short_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_SHORT,NC_UBYTE): - return getNCvx_short_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_SHORT,NC_SHORT): - return getNCvx_short_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_SHORT,NC_INT): - return getNCvx_short_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_SHORT,NC_FLOAT): - return getNCvx_short_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_SHORT,NC_DOUBLE): - return getNCvx_short_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_SHORT,NC_INT64): - return getNCvx_short_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_SHORT,NC_UINT): - return getNCvx_short_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_SHORT,NC_UINT64): - return getNCvx_short_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_SHORT,NC_USHORT): - return getNCvx_short_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_INT,NC_BYTE): - return getNCvx_int_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_INT,NC_UBYTE): - return getNCvx_int_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_INT,NC_SHORT): - return getNCvx_int_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_INT,NC_INT): - return getNCvx_int_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_INT,NC_FLOAT): - return getNCvx_int_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_INT,NC_DOUBLE): - return getNCvx_int_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_INT,NC_INT64): - return getNCvx_int_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_INT,NC_UINT): - return getNCvx_int_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_INT,NC_UINT64): - return getNCvx_int_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_INT,NC_USHORT): - return getNCvx_int_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_FLOAT,NC_BYTE): - return getNCvx_float_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_FLOAT,NC_UBYTE): - return getNCvx_float_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_FLOAT,NC_SHORT): - return getNCvx_float_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_FLOAT,NC_INT): - return getNCvx_float_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_FLOAT,NC_FLOAT): - return getNCvx_float_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_FLOAT,NC_DOUBLE): - return getNCvx_float_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_FLOAT,NC_INT64): - return getNCvx_float_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_FLOAT,NC_UINT): - return getNCvx_float_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_FLOAT,NC_UINT64): - return getNCvx_float_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_FLOAT,NC_USHORT): - return getNCvx_float_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_DOUBLE,NC_BYTE): - return getNCvx_double_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_DOUBLE,NC_UBYTE): - return getNCvx_double_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_DOUBLE,NC_SHORT): - return getNCvx_double_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_DOUBLE,NC_INT): - return getNCvx_double_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_DOUBLE,NC_FLOAT): - return getNCvx_double_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_DOUBLE,NC_DOUBLE): - return getNCvx_double_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_DOUBLE,NC_INT64): - return getNCvx_double_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_DOUBLE,NC_UINT): - return getNCvx_double_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_DOUBLE,NC_UINT64): - return getNCvx_double_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_DOUBLE,NC_USHORT): - return getNCvx_double_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_UBYTE,NC_UBYTE): - return getNCvx_uchar_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UBYTE,NC_BYTE): - return getNCvx_uchar_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UBYTE,NC_SHORT): - return getNCvx_uchar_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UBYTE,NC_INT): - return getNCvx_uchar_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UBYTE,NC_FLOAT): - return getNCvx_uchar_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UBYTE,NC_DOUBLE): - return getNCvx_uchar_double(ncp,varp,start,nelems,(double *)value); - break; - case CASE(NC_UBYTE,NC_INT64): - return getNCvx_uchar_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UBYTE,NC_UINT): - return getNCvx_uchar_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UBYTE,NC_UINT64): - return getNCvx_uchar_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UBYTE,NC_USHORT): - return getNCvx_uchar_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_USHORT,NC_BYTE): - return getNCvx_ushort_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_USHORT,NC_UBYTE): - return getNCvx_ushort_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_USHORT,NC_SHORT): - return getNCvx_ushort_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_USHORT,NC_INT): - return getNCvx_ushort_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_USHORT,NC_FLOAT): - return getNCvx_ushort_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_USHORT,NC_DOUBLE): - return getNCvx_ushort_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_USHORT,NC_INT64): - return getNCvx_ushort_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_USHORT,NC_UINT): - return getNCvx_ushort_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_USHORT,NC_UINT64): - return getNCvx_ushort_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_USHORT,NC_USHORT): - return getNCvx_ushort_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_UINT,NC_BYTE): - return getNCvx_uint_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UINT,NC_UBYTE): - return getNCvx_uint_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UINT,NC_SHORT): - return getNCvx_uint_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UINT,NC_INT): - return getNCvx_uint_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UINT,NC_FLOAT): - return getNCvx_uint_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UINT,NC_DOUBLE): - return getNCvx_uint_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_UINT,NC_INT64): - return getNCvx_uint_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UINT,NC_UINT): - return getNCvx_uint_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UINT,NC_UINT64): - return getNCvx_uint_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UINT,NC_USHORT): - return getNCvx_uint_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_INT64,NC_BYTE): - return getNCvx_longlong_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_INT64,NC_UBYTE): - return getNCvx_longlong_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_INT64,NC_SHORT): - return getNCvx_longlong_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_INT64,NC_INT): - return getNCvx_longlong_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_INT64,NC_FLOAT): - return getNCvx_longlong_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_INT64,NC_DOUBLE): - return getNCvx_longlong_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_INT64,NC_INT64): - return getNCvx_longlong_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_INT64,NC_UINT): - return getNCvx_longlong_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_INT64,NC_UINT64): - return getNCvx_longlong_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_INT64,NC_USHORT): - return getNCvx_longlong_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - case CASE(NC_UINT64,NC_BYTE): - return getNCvx_ulonglong_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UINT64,NC_UBYTE): - return getNCvx_ulonglong_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UINT64,NC_SHORT): - return getNCvx_ulonglong_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UINT64,NC_INT): - return getNCvx_ulonglong_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UINT64,NC_FLOAT): - return getNCvx_ulonglong_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UINT64,NC_DOUBLE): - return getNCvx_ulonglong_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_UINT64,NC_INT64): - return getNCvx_ulonglong_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UINT64,NC_UINT): - return getNCvx_ulonglong_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UINT64,NC_UINT64): - return getNCvx_ulonglong_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UINT64,NC_USHORT): - return getNCvx_ulonglong_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - default: - return NC_EBADTYPE; - break; - } - return status; -} - - -static int -writeNCv(NC3_INFO* ncp, const NC_var* varp, const size_t* start, - const size_t nelems, const void* value, const nc_type memtype) -{ - int status = NC_NOERR; - switch (CASE(varp->type,memtype)) { - - case CASE(NC_CHAR,NC_CHAR): - case CASE(NC_CHAR,NC_UBYTE): - return putNCvx_char_char(ncp,varp,start,nelems,(char*)value); - break; - case CASE(NC_BYTE,NC_BYTE): - return putNCvx_schar_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_BYTE,NC_UBYTE): - return putNCvx_schar_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_BYTE,NC_SHORT): - return putNCvx_schar_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_BYTE,NC_INT): - return putNCvx_schar_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_BYTE,NC_FLOAT): - return putNCvx_schar_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_BYTE,NC_DOUBLE): - return putNCvx_schar_double(ncp,varp,start,nelems,(double *)value); - break; - case CASE(NC_BYTE,NC_INT64): - return putNCvx_schar_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_BYTE,NC_UINT): - return putNCvx_schar_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_BYTE,NC_UINT64): - return putNCvx_schar_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_BYTE,NC_USHORT): - return putNCvx_schar_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_SHORT,NC_BYTE): - return putNCvx_short_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_SHORT,NC_UBYTE): - return putNCvx_short_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_SHORT,NC_SHORT): - return putNCvx_short_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_SHORT,NC_INT): - return putNCvx_short_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_SHORT,NC_FLOAT): - return putNCvx_short_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_SHORT,NC_DOUBLE): - return putNCvx_short_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_SHORT,NC_INT64): - return putNCvx_short_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_SHORT,NC_UINT): - return putNCvx_short_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_SHORT,NC_UINT64): - return putNCvx_short_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_SHORT,NC_USHORT): - return putNCvx_short_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_INT,NC_BYTE): - return putNCvx_int_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_INT,NC_UBYTE): - return putNCvx_int_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_INT,NC_SHORT): - return putNCvx_int_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_INT,NC_INT): - return putNCvx_int_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_INT,NC_FLOAT): - return putNCvx_int_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_INT,NC_DOUBLE): - return putNCvx_int_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_INT,NC_INT64): - return putNCvx_int_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_INT,NC_UINT): - return putNCvx_int_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_INT,NC_UINT64): - return putNCvx_int_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_INT,NC_USHORT): - return putNCvx_int_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_FLOAT,NC_BYTE): - return putNCvx_float_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_FLOAT,NC_UBYTE): - return putNCvx_float_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_FLOAT,NC_SHORT): - return putNCvx_float_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_FLOAT,NC_INT): - return putNCvx_float_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_FLOAT,NC_FLOAT): - return putNCvx_float_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_FLOAT,NC_DOUBLE): - return putNCvx_float_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_FLOAT,NC_INT64): - return putNCvx_float_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_FLOAT,NC_UINT): - return putNCvx_float_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_FLOAT,NC_UINT64): - return putNCvx_float_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_FLOAT,NC_USHORT): - return putNCvx_float_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_DOUBLE,NC_BYTE): - return putNCvx_double_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_DOUBLE,NC_UBYTE): - return putNCvx_double_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_DOUBLE,NC_SHORT): - return putNCvx_double_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_DOUBLE,NC_INT): - return putNCvx_double_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_DOUBLE,NC_FLOAT): - return putNCvx_double_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_DOUBLE,NC_DOUBLE): - return putNCvx_double_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_DOUBLE,NC_INT64): - return putNCvx_double_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_DOUBLE,NC_UINT): - return putNCvx_double_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_DOUBLE,NC_UINT64): - return putNCvx_double_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_DOUBLE,NC_USHORT): - return putNCvx_double_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_UBYTE,NC_UBYTE): - return putNCvx_uchar_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UBYTE,NC_BYTE): - return putNCvx_uchar_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UBYTE,NC_SHORT): - return putNCvx_uchar_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UBYTE,NC_INT): - return putNCvx_uchar_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UBYTE,NC_FLOAT): - return putNCvx_uchar_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UBYTE,NC_DOUBLE): - return putNCvx_uchar_double(ncp,varp,start,nelems,(double *)value); - break; - case CASE(NC_UBYTE,NC_INT64): - return putNCvx_uchar_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UBYTE,NC_UINT): - return putNCvx_uchar_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UBYTE,NC_UINT64): - return putNCvx_uchar_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UBYTE,NC_USHORT): - return putNCvx_uchar_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_USHORT,NC_BYTE): - return putNCvx_ushort_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_USHORT,NC_UBYTE): - return putNCvx_ushort_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_USHORT,NC_SHORT): - return putNCvx_ushort_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_USHORT,NC_INT): - return putNCvx_ushort_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_USHORT,NC_FLOAT): - return putNCvx_ushort_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_USHORT,NC_DOUBLE): - return putNCvx_ushort_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_USHORT,NC_INT64): - return putNCvx_ushort_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_USHORT,NC_UINT): - return putNCvx_ushort_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_USHORT,NC_UINT64): - return putNCvx_ushort_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_USHORT,NC_USHORT): - return putNCvx_ushort_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_UINT,NC_BYTE): - return putNCvx_uint_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UINT,NC_UBYTE): - return putNCvx_uint_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UINT,NC_SHORT): - return putNCvx_uint_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UINT,NC_INT): - return putNCvx_uint_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UINT,NC_FLOAT): - return putNCvx_uint_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UINT,NC_DOUBLE): - return putNCvx_uint_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_UINT,NC_INT64): - return putNCvx_uint_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UINT,NC_UINT): - return putNCvx_uint_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UINT,NC_UINT64): - return putNCvx_uint_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UINT,NC_USHORT): - return putNCvx_uint_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_INT64,NC_BYTE): - return putNCvx_longlong_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_INT64,NC_UBYTE): - return putNCvx_longlong_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_INT64,NC_SHORT): - return putNCvx_longlong_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_INT64,NC_INT): - return putNCvx_longlong_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_INT64,NC_FLOAT): - return putNCvx_longlong_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_INT64,NC_DOUBLE): - return putNCvx_longlong_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_INT64,NC_INT64): - return putNCvx_longlong_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_INT64,NC_UINT): - return putNCvx_longlong_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_INT64,NC_UINT64): - return putNCvx_longlong_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_INT64,NC_USHORT): - return putNCvx_longlong_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - case CASE(NC_UINT64,NC_BYTE): - return putNCvx_ulonglong_schar(ncp,varp,start,nelems,(signed char*)value); - break; - case CASE(NC_UINT64,NC_UBYTE): - return putNCvx_ulonglong_uchar(ncp,varp,start,nelems,(unsigned char*)value); - break; - case CASE(NC_UINT64,NC_SHORT): - return putNCvx_ulonglong_short(ncp,varp,start,nelems,(short*)value); - break; - case CASE(NC_UINT64,NC_INT): - return putNCvx_ulonglong_int(ncp,varp,start,nelems,(int*)value); - break; - case CASE(NC_UINT64,NC_FLOAT): - return putNCvx_ulonglong_float(ncp,varp,start,nelems,(float*)value); - break; - case CASE(NC_UINT64,NC_DOUBLE): - return putNCvx_ulonglong_double(ncp,varp,start,nelems,(double*)value); - break; - case CASE(NC_UINT64,NC_INT64): - return putNCvx_ulonglong_longlong(ncp,varp,start,nelems,(long long*)value); - break; - case CASE(NC_UINT64,NC_UINT): - return putNCvx_ulonglong_uint(ncp,varp,start,nelems,(unsigned int*)value); - break; - case CASE(NC_UINT64,NC_UINT64): - return putNCvx_ulonglong_ulonglong(ncp,varp,start,nelems,(unsigned long long*)value); - break; - case CASE(NC_UINT64,NC_USHORT): - return putNCvx_ulonglong_ushort(ncp,varp,start,nelems,(unsigned short*)value); - break; - - default: - return NC_EBADTYPE; - break; - } - return status; -} - -/**************************************************/ - -int -NC3_get_vara(int ncid, int varid, - const size_t *start, const size_t *edges0, - void *value0, - nc_type memtype) -{ - int status = NC_NOERR; - NC* nc; - NC3_INFO* nc3; - NC_var *varp; - int ii; - size_t iocount; - size_t memtypelen; - signed char* value = (signed char*) value0; /* legally allow ptr arithmetic */ - const size_t* edges = edges0; /* so we can modify for special cases */ - size_t modedges[NC_MAX_VAR_DIMS]; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_indef(nc3)) - return NC_EINDEFINE; - - status = NC_lookupvar(nc3, varid, &varp); - if(status != NC_NOERR) - return status; - - if(memtype == NC_NAT) memtype=varp->type; - - if(memtype == NC_CHAR && varp->type != NC_CHAR) - return NC_ECHAR; - else if(memtype != NC_CHAR && varp->type == NC_CHAR) - return NC_ECHAR; - - /* If edges is NULL, then this was called from nc_get_var() */ - if(edges == NULL && varp->ndims > 0) { - /* If this is a record variable, then we have to - substitute the number of records into dimension 0. */ - if(varp->shape[0] == 0) { - (void)memcpy((void*)modedges,(void*)varp->shape, - sizeof(size_t)*varp->ndims); - modedges[0] = NC_get_numrecs(nc3); - edges = modedges; - } else - edges = varp->shape; - } - - status = NCcoordck(nc3, varp, start); - if(status != NC_NOERR) - return status; - - status = NCedgeck(nc3, varp, start, edges); - if(status != NC_NOERR) - return status; - - /* Get the size of the memtype */ - memtypelen = nctypelen(memtype); - - if(varp->ndims == 0) /* scalar variable */ - { - return( readNCv(nc3, varp, start, 1, (void*)value, memtype) ); - } - - if(IS_RECVAR(varp)) - { - if(*start + *edges > NC_get_numrecs(nc3)) - return NC_EEDGE; - if(varp->ndims == 1 && nc3->recsize <= varp->len) - { - /* one dimensional && the only record variable */ - return( readNCv(nc3, varp, start, *edges, (void*)value, memtype) ); - } - } - - /* - * find max contiguous - * and accumulate max count for a single io operation - */ - ii = NCiocount(nc3, varp, edges, &iocount); - - if(ii == -1) - { - return( readNCv(nc3, varp, start, iocount, (void*)value, memtype) ); - } - - assert(ii >= 0); - - { /* inline */ - ALLOC_ONSTACK(coord, size_t, varp->ndims); - ALLOC_ONSTACK(upper, size_t, varp->ndims); - const size_t index = ii; - - /* copy in starting indices */ - (void) memcpy(coord, start, varp->ndims * sizeof(size_t)); - - /* set up in maximum indices */ - set_upper(upper, start, edges, &upper[varp->ndims]); - - /* ripple counter */ - while(*coord < *upper) - { - const int lstatus = readNCv(nc3, varp, coord, iocount, (void*)value, memtype); - if(lstatus != NC_NOERR) - { - if(lstatus != NC_ERANGE) - { - status = lstatus; - /* fatal for the loop */ - break; - } - /* else NC_ERANGE, not fatal for the loop */ - if(status == NC_NOERR) - status = lstatus; - } - value += (iocount * memtypelen); - odo1(start, upper, coord, &upper[index], &coord[index]); - } - - FREE_ONSTACK(upper); - FREE_ONSTACK(coord); - } /* end inline */ - - return status; -} - -int -NC3_put_vara(int ncid, int varid, - const size_t *start, const size_t *edges0, - const void *value0, - nc_type memtype) -{ - int status = NC_NOERR; - NC *nc; - NC3_INFO* nc3; - NC_var *varp; - int ii; - size_t iocount; - size_t memtypelen; - signed char* value = (signed char*) value0; /* legally allow ptr arithmetic */ - const size_t* edges = edges0; /* so we can modify for special cases */ - size_t modedges[NC_MAX_VAR_DIMS]; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - nc3 = NC3_DATA(nc); - - if(NC_readonly(nc3)) - return NC_EPERM; - - if(NC_indef(nc3)) - return NC_EINDEFINE; - - status = NC_lookupvar(nc3, varid, &varp); - if(status != NC_NOERR) - return status; /*invalid varid */ - - - if(memtype == NC_NAT) memtype=varp->type; - - if(memtype == NC_CHAR && varp->type != NC_CHAR) - return NC_ECHAR; - else if(memtype != NC_CHAR && varp->type == NC_CHAR) - return NC_ECHAR; - - /* Get the size of the memtype */ - memtypelen = nctypelen(memtype); - - /* If edges is NULL, then this was called from nc_get_var() */ - if(edges == NULL && varp->ndims > 0) { - /* If this is a record variable, then we have to - substitute the number of records into dimension 0. */ - if(varp->shape[0] == 0) { - (void)memcpy((void*)modedges,(void*)varp->shape, - sizeof(size_t)*varp->ndims); - modedges[0] = NC_get_numrecs(nc3); - edges = modedges; - } else - edges = varp->shape; - } - - status = NCcoordck(nc3, varp, start); - if(status != NC_NOERR) - return status; - status = NCedgeck(nc3, varp, start, edges); - if(status != NC_NOERR) - return status; - - if(varp->ndims == 0) /* scalar variable */ - { - return( writeNCv(nc3, varp, start, 1, (void*)value, memtype) ); - } - - if(IS_RECVAR(varp)) - { - status = NCvnrecs(nc3, *start + *edges); - if(status != NC_NOERR) - return status; - - if(varp->ndims == 1 - && nc3->recsize <= varp->len) - { - /* one dimensional && the only record variable */ - return( writeNCv(nc3, varp, start, *edges, (void*)value, memtype) ); - } - } - - /* - * find max contiguous - * and accumulate max count for a single io operation - */ - ii = NCiocount(nc3, varp, edges, &iocount); - - if(ii == -1) - { - return( writeNCv(nc3, varp, start, iocount, (void*)value, memtype) ); - } - - assert(ii >= 0); - - { /* inline */ - ALLOC_ONSTACK(coord, size_t, varp->ndims); - ALLOC_ONSTACK(upper, size_t, varp->ndims); - const size_t index = ii; - - /* copy in starting indices */ - (void) memcpy(coord, start, varp->ndims * sizeof(size_t)); - - /* set up in maximum indices */ - set_upper(upper, start, edges, &upper[varp->ndims]); - - /* ripple counter */ - while(*coord < *upper) - { - const int lstatus = writeNCv(nc3, varp, coord, iocount, (void*)value, memtype); - if(lstatus != NC_NOERR) - { - if(lstatus != NC_ERANGE) - { - status = lstatus; - /* fatal for the loop */ - break; - } - /* else NC_ERANGE, not fatal for the loop */ - if(status == NC_NOERR) - status = lstatus; - } - value += (iocount * memtypelen); - odo1(start, upper, coord, &upper[index], &coord[index]); - } - - FREE_ONSTACK(upper); - FREE_ONSTACK(coord); - } /* end inline */ - - return status; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/CMakeLists.txt b/contrib/netcdf/4.4.1.1/libsrc4/CMakeLists.txt deleted file mode 100644 index 8890a095381..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -# Process these files with m4. - -SET(libsrc4_SOURCES nc4dispatch.c nc4attr.c nc4dim.c nc4file.c nc4grp.c nc4type.c nc4var.c ncfunc.c nc4internal.c nc4hdf.c nc4info.c) - -IF(LOGGING) - SET(libsrc4_SOURCES ${libsrc4_SOURCES} error4.c) -ENDIF() - -add_library(netcdf4 OBJECT ${libsrc4_SOURCES}) - -# Files for make dist -FILE(GLOB libsrc4_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST error4.c CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${libsrc4_SOURCES}") -ADD_EXTRA_DIST("${libsrc4_HEADERS}") -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") - -### -# Options related to the man page generation. -### - -### -# The C API man page. -### - -set(man_MANS netcdf.3) - -set(ARGS_MANPAGE -DAPI=C) - -IF (USE_NETCDF4) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) -ENDIF(USE_NETCDF4) - -IF (BUILD_DAP) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) -ENDIF(BUILD_DAP) - -IF (BUILD_PARALLEL) - SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) -ENDIF(BUILD_PARALLEL) - - - diff --git a/contrib/netcdf/4.4.1.1/libsrc4/Makefile.am b/contrib/netcdf/4.4.1.1/libsrc4/Makefile.am deleted file mode 100644 index eb474ae17b7..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -# This is part of Unidata's netCDF package. Copyright 2005-2011, see -# the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build netCDF-4. - -include $(top_srcdir)/lib_flags.am - -libnetcdf4_la_CPPFLAGS = ${AM_CPPFLAGS} - -# This turns on declspec magic in netcdf.h for windows DLLs. -if BUILD_DLL -libnetcdf4_la_CPPFLAGS += -DDLL_EXPORT -endif - -# This is our output. The netCDF-4 convenience library. -noinst_LTLIBRARIES = libnetcdf4.la -libnetcdf4_la_SOURCES = nc4dispatch.c nc4dispatch.h nc4attr.c nc4dim.c \ -nc4file.c nc4grp.c nc4hdf.c nc4internal.c nc4type.c nc4var.c ncfunc.c error4.c \ -nc4info.c - -EXTRA_DIST=CMakeLists.txt - - - - - diff --git a/contrib/netcdf/4.4.1.1/libsrc4/Makefile.in b/contrib/netcdf/4.4.1.1/libsrc4/Makefile.in deleted file mode 100644 index 54bb96f74ff..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/Makefile.in +++ /dev/null @@ -1,816 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# This is part of Unidata's netCDF package. Copyright 2005-2011, see -# the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build netCDF-4. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT -subdir = libsrc4 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libnetcdf4_la_LIBADD = -am_libnetcdf4_la_OBJECTS = libnetcdf4_la-nc4dispatch.lo \ - libnetcdf4_la-nc4attr.lo libnetcdf4_la-nc4dim.lo \ - libnetcdf4_la-nc4file.lo libnetcdf4_la-nc4grp.lo \ - libnetcdf4_la-nc4hdf.lo libnetcdf4_la-nc4internal.lo \ - libnetcdf4_la-nc4type.lo libnetcdf4_la-nc4var.lo \ - libnetcdf4_la-ncfunc.lo libnetcdf4_la-error4.lo \ - libnetcdf4_la-nc4info.lo -libnetcdf4_la_OBJECTS = $(am_libnetcdf4_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libnetcdf4_la-error4.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4attr.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4dim.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4file.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4grp.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4hdf.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4info.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4internal.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4type.Plo \ - ./$(DEPDIR)/libnetcdf4_la-nc4var.Plo \ - ./$(DEPDIR)/libnetcdf4_la-ncfunc.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libnetcdf4_la_SOURCES) -DIST_SOURCES = $(libnetcdf4_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ -libnetcdf4_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3) - -# This is our output. The netCDF-4 convenience library. -noinst_LTLIBRARIES = libnetcdf4.la -libnetcdf4_la_SOURCES = nc4dispatch.c nc4dispatch.h nc4attr.c nc4dim.c \ -nc4file.c nc4grp.c nc4hdf.c nc4internal.c nc4type.c nc4var.c ncfunc.c error4.c \ -nc4info.c - -EXTRA_DIST = CMakeLists.txt -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 libsrc4/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libsrc4/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libnetcdf4.la: $(libnetcdf4_la_OBJECTS) $(libnetcdf4_la_DEPENDENCIES) $(EXTRA_libnetcdf4_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libnetcdf4_la_OBJECTS) $(libnetcdf4_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-error4.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4attr.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4dim.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4file.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4grp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4hdf.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4info.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4internal.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4type.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-nc4var.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdf4_la-ncfunc.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libnetcdf4_la-nc4dispatch.lo: nc4dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4dispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4dispatch.Tpo -c -o libnetcdf4_la-nc4dispatch.lo `test -f 'nc4dispatch.c' || echo '$(srcdir)/'`nc4dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4dispatch.Tpo $(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4dispatch.c' object='libnetcdf4_la-nc4dispatch.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4dispatch.lo `test -f 'nc4dispatch.c' || echo '$(srcdir)/'`nc4dispatch.c - -libnetcdf4_la-nc4attr.lo: nc4attr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4attr.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4attr.Tpo -c -o libnetcdf4_la-nc4attr.lo `test -f 'nc4attr.c' || echo '$(srcdir)/'`nc4attr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4attr.Tpo $(DEPDIR)/libnetcdf4_la-nc4attr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4attr.c' object='libnetcdf4_la-nc4attr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4attr.lo `test -f 'nc4attr.c' || echo '$(srcdir)/'`nc4attr.c - -libnetcdf4_la-nc4dim.lo: nc4dim.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4dim.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4dim.Tpo -c -o libnetcdf4_la-nc4dim.lo `test -f 'nc4dim.c' || echo '$(srcdir)/'`nc4dim.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4dim.Tpo $(DEPDIR)/libnetcdf4_la-nc4dim.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4dim.c' object='libnetcdf4_la-nc4dim.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4dim.lo `test -f 'nc4dim.c' || echo '$(srcdir)/'`nc4dim.c - -libnetcdf4_la-nc4file.lo: nc4file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4file.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4file.Tpo -c -o libnetcdf4_la-nc4file.lo `test -f 'nc4file.c' || echo '$(srcdir)/'`nc4file.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4file.Tpo $(DEPDIR)/libnetcdf4_la-nc4file.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4file.c' object='libnetcdf4_la-nc4file.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4file.lo `test -f 'nc4file.c' || echo '$(srcdir)/'`nc4file.c - -libnetcdf4_la-nc4grp.lo: nc4grp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4grp.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4grp.Tpo -c -o libnetcdf4_la-nc4grp.lo `test -f 'nc4grp.c' || echo '$(srcdir)/'`nc4grp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4grp.Tpo $(DEPDIR)/libnetcdf4_la-nc4grp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4grp.c' object='libnetcdf4_la-nc4grp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4grp.lo `test -f 'nc4grp.c' || echo '$(srcdir)/'`nc4grp.c - -libnetcdf4_la-nc4hdf.lo: nc4hdf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4hdf.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4hdf.Tpo -c -o libnetcdf4_la-nc4hdf.lo `test -f 'nc4hdf.c' || echo '$(srcdir)/'`nc4hdf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4hdf.Tpo $(DEPDIR)/libnetcdf4_la-nc4hdf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4hdf.c' object='libnetcdf4_la-nc4hdf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4hdf.lo `test -f 'nc4hdf.c' || echo '$(srcdir)/'`nc4hdf.c - -libnetcdf4_la-nc4internal.lo: nc4internal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4internal.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4internal.Tpo -c -o libnetcdf4_la-nc4internal.lo `test -f 'nc4internal.c' || echo '$(srcdir)/'`nc4internal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4internal.Tpo $(DEPDIR)/libnetcdf4_la-nc4internal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4internal.c' object='libnetcdf4_la-nc4internal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4internal.lo `test -f 'nc4internal.c' || echo '$(srcdir)/'`nc4internal.c - -libnetcdf4_la-nc4type.lo: nc4type.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4type.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4type.Tpo -c -o libnetcdf4_la-nc4type.lo `test -f 'nc4type.c' || echo '$(srcdir)/'`nc4type.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4type.Tpo $(DEPDIR)/libnetcdf4_la-nc4type.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4type.c' object='libnetcdf4_la-nc4type.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4type.lo `test -f 'nc4type.c' || echo '$(srcdir)/'`nc4type.c - -libnetcdf4_la-nc4var.lo: nc4var.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4var.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4var.Tpo -c -o libnetcdf4_la-nc4var.lo `test -f 'nc4var.c' || echo '$(srcdir)/'`nc4var.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4var.Tpo $(DEPDIR)/libnetcdf4_la-nc4var.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4var.c' object='libnetcdf4_la-nc4var.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4var.lo `test -f 'nc4var.c' || echo '$(srcdir)/'`nc4var.c - -libnetcdf4_la-ncfunc.lo: ncfunc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-ncfunc.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-ncfunc.Tpo -c -o libnetcdf4_la-ncfunc.lo `test -f 'ncfunc.c' || echo '$(srcdir)/'`ncfunc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-ncfunc.Tpo $(DEPDIR)/libnetcdf4_la-ncfunc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncfunc.c' object='libnetcdf4_la-ncfunc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-ncfunc.lo `test -f 'ncfunc.c' || echo '$(srcdir)/'`ncfunc.c - -libnetcdf4_la-error4.lo: error4.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-error4.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-error4.Tpo -c -o libnetcdf4_la-error4.lo `test -f 'error4.c' || echo '$(srcdir)/'`error4.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-error4.Tpo $(DEPDIR)/libnetcdf4_la-error4.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error4.c' object='libnetcdf4_la-error4.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-error4.lo `test -f 'error4.c' || echo '$(srcdir)/'`error4.c - -libnetcdf4_la-nc4info.lo: nc4info.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4info.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4info.Tpo -c -o libnetcdf4_la-nc4info.lo `test -f 'nc4info.c' || echo '$(srcdir)/'`nc4info.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4info.Tpo $(DEPDIR)/libnetcdf4_la-nc4info.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4info.c' object='libnetcdf4_la-nc4info.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4info.lo `test -f 'nc4info.c' || echo '$(srcdir)/'`nc4info.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libnetcdf4_la-error4.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4attr.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4dim.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4file.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4grp.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4hdf.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4info.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4internal.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4type.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4var.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-ncfunc.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libnetcdf4_la-error4.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4attr.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4dim.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4file.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4grp.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4hdf.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4info.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4internal.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4type.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-nc4var.Plo - -rm -f ./$(DEPDIR)/libnetcdf4_la-ncfunc.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/libsrc4/error4.c b/contrib/netcdf/4.4.1.1/libsrc4/error4.c deleted file mode 100644 index 23f82c3a814..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/error4.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file contains functions relating to logging errors. Also it -contains the functions nc_malloc, nc_calloc, and nc_free. - -Copyright 2003, University Corporation for Atmospheric Research. See -netcdf-4/docs/COPYRIGHT file for copying and redistribution -conditions. - -$Id: error4.c,v 1.4 2010/06/01 17:48:55 ed Exp $ -*/ - -#include -#include -#include -#include -#include "assert.h" -#include - -/* This contents of this file get skipped if LOGGING is not defined - * during compile. */ -#ifdef LOGGING - -extern int nc_log_level; - -/* This function prints out a message, if the severity of the message - is lower than the global nc_log_level. To use it, do something like - this: - - nc_log(0, "this computer will explode in %d seconds", i); - - After the first arg (the severity), use the rest like a normal - printf statement. Output will appear on stdout. - - This function is heavily based on the function in section 15.5 of - the C FAQ. */ -void -nc_log(int severity, const char *fmt, ...) -{ - va_list argp; - int t; - - /* If the severity is greater than the log level, we don' care to - print this message. */ - if (severity > nc_log_level) - return; - - /* If the severity is zero, this is an error. Otherwise insert that - many tabs before the message. */ - if (!severity) - fprintf(stdout, "ERROR: "); - for (t=0; troot_grp, (ncid & GRP_ID_MASK)))) - BAIL(NC_EBADGRPID); - - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - BAIL(retval); - - if(nc->ext_ncid == ncid && varid == NC_GLOBAL) { - const char** sp; - for(sp = NC_RESERVED_SPECIAL_LIST;*sp;sp++) { - if(strcmp(name,*sp)==0) { - return nc4_get_att_special(h5, norm_name, xtype, mem_type, lenp, attnum, is_long, data); - } - } - } - - /* Find the attribute, if it exists. - If we don't find it, we are major failures. - */ - if ((retval = nc4_find_grp_att(grp, varid, norm_name, my_attnum, &att))) { - if(retval == NC_ENOTATT) - return retval; - else - BAIL(retval); - } - - /* If mem_type is NC_NAT, it means we want to use the attribute's - * file type as the mem type as well. */ - if (mem_type == NC_NAT) - mem_type = att->nc_typeid; - - /* If the attribute is NC_CHAR, and the mem_type isn't, or vice - * versa, that's a freakish attempt to convert text to - * numbers. Some pervert out there is trying to pull a fast one! - * Send him an NC_ECHAR error...*/ - if (data && att->len && - ((att->nc_typeid == NC_CHAR && mem_type != NC_CHAR) || - (att->nc_typeid != NC_CHAR && mem_type == NC_CHAR))) - BAIL(NC_ECHAR); /* take that, you freak! */ - - /* Copy the info. */ - if (lenp) - *lenp = att->len; - if (xtype) - *xtype = att->nc_typeid; - if (attnum) { - *attnum = att->attnum; - } - - /* Zero len attributes are easy to read! */ - if (!att->len) - BAIL(NC_NOERR); - - /* Later on, we will need to know the size of this type. */ - if ((retval = nc4_get_typelen_mem(h5, mem_type, is_long, &type_size))) - BAIL(retval); - - /* We may have to convert data. Treat NC_CHAR the same as - * NC_UBYTE. If the mem_type is NAT, don't try any conversion - use - * the attribute's type. */ - if (data && att->len && mem_type != att->nc_typeid && - mem_type != NC_NAT && - !(mem_type == NC_CHAR && - (att->nc_typeid == NC_UBYTE || att->nc_typeid == NC_BYTE))) - { - if (!(bufr = malloc((size_t)(att->len * type_size)))) - BAIL(NC_ENOMEM); - need_to_convert++; - if ((retval = nc4_convert_type(att->data, bufr, att->nc_typeid, - mem_type, (size_t)att->len, &range_error, - NULL, (h5->cmode & NC_CLASSIC_MODEL), 0, is_long))) - BAIL(retval); - - /* For strict netcdf-3 rules, ignore erange errors between UBYTE - * and BYTE types. */ - if ((h5->cmode & NC_CLASSIC_MODEL) && - (att->nc_typeid == NC_UBYTE || att->nc_typeid == NC_BYTE) && - (mem_type == NC_UBYTE || mem_type == NC_BYTE) && - range_error) - range_error = 0; - } - else - { - bufr = att->data; - } - - /* If the caller wants data, copy it for him. If he hasn't - allocated enough memory for it, he will burn in segmentation - fault hell, writhing with the agony of undiscovered memory - bugs! */ - if (data) - { - if (att->vldata) - { - size_t base_typelen; - hvl_t *vldest = data; - NC_TYPE_INFO_T *type; - - /* Get the type object for the attribute's type */ - if ((retval = nc4_find_type(h5, att->nc_typeid, &type))) - BAIL(retval); - - /* Retrieve the size of the base type */ - if ((retval = nc4_get_typelen_mem(h5, type->u.v.base_nc_typeid, 0, &base_typelen))) - BAIL(retval); - - for (i = 0; i < att->len; i++) - { - vldest[i].len = att->vldata[i].len; - if (!(vldest[i].p = malloc(vldest[i].len * base_typelen))) - BAIL(NC_ENOMEM); - memcpy(vldest[i].p, att->vldata[i].p, vldest[i].len * base_typelen); - } - } - else if (att->stdata) - { - for (i = 0; i < att->len; i++) - { - /* Check for NULL pointer for string (valid in HDF5) */ - if(att->stdata[i]) - { - if (!(((char **)data)[i] = strdup(att->stdata[i]))) - BAIL(NC_ENOMEM); - } - else - ((char **)data)[i] = att->stdata[i]; - } - } - else - { - /* For long types, we need to handle this special... */ - if (is_long && att->nc_typeid == NC_INT) - { - long *lp = data; - int *ip = bufr; - - for (i = 0; i < att->len; i++) - *lp++ = *ip++; - } - else - memcpy(data, bufr, (size_t)(att->len * type_size)); - } - } - - exit: - if (need_to_convert) - free(bufr); - if (range_error) - retval = NC_ERANGE; - return retval; -} - -/* Put attribute metadata into our global metadata. */ -static int -nc4_put_att(int ncid, NC *nc, int varid, const char *name, - nc_type file_type, nc_type mem_type, size_t len, int is_long, - const void *data) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var = NULL; - NC_ATT_INFO_T *att, **attlist = NULL; - char norm_name[NC_MAX_NAME + 1]; - nc_bool_t new_att = NC_FALSE; - int retval = NC_NOERR, range_error = 0; - size_t type_size; - int i; - int res; - - if (!name) - return NC_EBADNAME; - assert(nc && NC4_DATA(nc)); - - LOG((1, "nc4_put_att: ncid 0x%x varid %d name %s " - "file_type %d mem_type %d len %d", ncid, varid, - name, file_type, mem_type, len)); - - /* If len is not zero, then there must be some data. */ - if (len && !data) - return NC_EINVAL; - - /* Find info for this file and group, and set pointer to each. */ - h5 = NC4_DATA(nc); - if (!(grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK)))) - return NC_EBADGRPID; - - /* If the file is read-only, return an error. */ - if (h5->no_write) - return NC_EPERM; - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - if(nc->ext_ncid == ncid && varid == NC_GLOBAL) { - const char** sp; - for(sp = NC_RESERVED_SPECIAL_LIST;*sp;sp++) { - if(strcmp(name,*sp)==0) { - return NC_ENOTATT; /* Not settable */ - } - } - } - - /* Find att, if it exists. */ - if (varid == NC_GLOBAL) - attlist = &grp->att; - else - { - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - { - attlist = &var->att; - break; - } - if (!var) - return NC_ENOTVAR; - } - - for (att = *attlist; att; att = att->l.next) - if (!strcmp(att->name, norm_name)) - break; - - if (!att) - { - /* If this is a new att, require define mode. */ - if (!(h5->flags & NC_INDEF)) - { - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_EINDEFINE; - if ((retval = NC4_redef(ncid))) - BAIL(retval); - } - new_att = NC_TRUE; - } - else - { - /* For an existing att, if we're not in define mode, the len - must not be greater than the existing len for classic model. */ - if (!(h5->flags & NC_INDEF) && - len * nc4typelen(file_type) > (size_t)att->len * nc4typelen(att->nc_typeid)) - { - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_EINDEFINE; - if ((retval = NC4_redef(ncid))) - BAIL(retval); - } - } - - /* We must have two valid types to continue. */ - if (file_type == NC_NAT || mem_type == NC_NAT) - return NC_EBADTYPE; - - /* Get information about this type. */ - if ((retval = nc4_get_typelen_mem(h5, file_type, is_long, &type_size))) - return retval; - - /* No character conversions are allowed. */ - if (file_type != mem_type && - (file_type == NC_CHAR || mem_type == NC_CHAR || - file_type == NC_STRING || mem_type == NC_STRING)) - return NC_ECHAR; - - /* For classic mode file, only allow atts with classic types to be - * created. */ - if (h5->cmode & NC_CLASSIC_MODEL && file_type > NC_DOUBLE) - return NC_ESTRICTNC3; - - /* Add to the end of the attribute list, if this att doesn't - already exist. */ - if (new_att) - { - LOG((3, "adding attribute %s to the list...", norm_name)); - if ((res = nc4_att_list_add(attlist, &att))) - BAIL (res); - if (!(att->name = strdup(norm_name))) - return NC_ENOMEM; - } - - /* Now fill in the metadata. */ - att->dirty = NC_TRUE; - att->nc_typeid = file_type; - - /* If this att has vlen or string data, release it before we lose the length value. */ - if (att->stdata) - { - for (i = 0; i < att->len; i++) - if(att->stdata[i]) - free(att->stdata[i]); - free(att->stdata); - att->stdata = NULL; - } - if (att->vldata) - { - for (i = 0; i < att->len; i++) - nc_free_vlen(&att->vldata[i]); - free(att->vldata); - att->vldata = NULL; - } - - att->len = len; - if (att->l.prev) - att->attnum = ((NC_ATT_INFO_T *)att->l.prev)->attnum + 1; - else - att->attnum = 0; - - /* If this is the _FillValue attribute, then we will also have to - * copy the value to the fill_vlue pointer of the NC_VAR_INFO_T - * struct for this var. (But ignore a global _FillValue - * attribute). */ - if (!strcmp(att->name, _FillValue) && varid != NC_GLOBAL) - { - NC_ATT_INFO_T *varatt; - int size; - - /* Fill value must be same type and have exactly one value */ - if (att->nc_typeid != var->type_info->nc_typeid) - return NC_EBADTYPE; - if (att->len != 1) - return NC_EINVAL; - - /* If we already wrote to the dataset, then return an error. */ - if (var->written_to) - return NC_ELATEFILL; - - /* If fill value hasn't been set, allocate space. Of course, - * vlens have to be different... */ - if ((retval = nc4_get_typelen_mem(grp->nc4_info, var->type_info->nc_typeid, 0, - &type_size))) - return retval; - - /* Already set a fill value? Now I'll have to free the old - * one. Make up your damn mind, would you? */ - if (var->fill_value) - { - if (var->type_info->nc_type_class == NC_VLEN) - { - if ((retval = nc_free_vlen(var->fill_value))) - return retval; - } - else if (var->type_info->nc_type_class == NC_STRING) - { - if (*(char **)var->fill_value) - free(*(char **)var->fill_value); - } - free(var->fill_value); - } - - /* Allocate space for the fill value. */ - if (var->type_info->nc_type_class == NC_VLEN) - size = sizeof(hvl_t); - else if (var->type_info->nc_type_class == NC_STRING) - size = sizeof(char *); - else - size = type_size; - - if (!(var->fill_value = calloc(1, size))) - return NC_ENOMEM; - - /* Copy the fill_value. */ - LOG((4, "Copying fill value into metadata for variable %s", var->name)); - if (var->type_info->nc_type_class == NC_VLEN) - { - nc_vlen_t *in_vlen = (nc_vlen_t *)data, *fv_vlen = (nc_vlen_t *)(var->fill_value); - - fv_vlen->len = in_vlen->len; - if (!(fv_vlen->p = malloc(size * in_vlen->len))) - return NC_ENOMEM; - memcpy(fv_vlen->p, in_vlen->p, in_vlen->len * size); - } - else if (var->type_info->nc_type_class == NC_STRING) - { - if(NULL != (*(char **)data)) - { - if (!(*(char **)(var->fill_value) = malloc(strlen(*(char **)data) + 1))) - return NC_ENOMEM; - strcpy(*(char **)var->fill_value, *(char **)data); - } - else - *(char **)var->fill_value = NULL; - } - else - memcpy(var->fill_value, data, type_size); - - /* Indicate that the fill value was changed, if the variable has already - * been created in the file, so the dataset gets deleted and re-created. */ - if (var->created) - var->fill_val_changed = NC_TRUE; - } - - /* Copy the attribute data, if there is any. VLENs and string - * arrays have to be handled specially. */ - if(att->len) - { - nc_type type_class; /* Class of attribute's type */ - - /* Get class for this type. */ - if ((retval = nc4_get_typeclass(h5, file_type, &type_class))) - return retval; - - assert(data); - if (type_class == NC_VLEN) - { - const hvl_t *vldata1; - NC_TYPE_INFO_T *type; - size_t base_typelen; - - /* Get the type object for the attribute's type */ - if ((retval = nc4_find_type(h5, file_type, &type))) - BAIL(retval); - - /* Retrieve the size of the base type */ - if ((retval = nc4_get_typelen_mem(h5, type->u.v.base_nc_typeid, 0, &base_typelen))) - BAIL(retval); - - vldata1 = data; - if (!(att->vldata = (nc_vlen_t*)malloc(att->len * sizeof(hvl_t)))) - BAIL(NC_ENOMEM); - for (i = 0; i < att->len; i++) - { - att->vldata[i].len = vldata1[i].len; - if (!(att->vldata[i].p = malloc(base_typelen * att->vldata[i].len))) - BAIL(NC_ENOMEM); - memcpy(att->vldata[i].p, vldata1[i].p, base_typelen * att->vldata[i].len); - } - } - else if (type_class == NC_STRING) - { - LOG((4, "copying array of NC_STRING")); - if (!(att->stdata = malloc(sizeof(char *) * att->len))) { - BAIL(NC_ENOMEM); - } - - /* If we are overwriting an existing attribute, - specifically an NC_CHAR, we need to clean up - the pre-existing att->data. */ - if (!new_att && att->data) { - free(att->data); - att->data = NULL; - } - - for (i = 0; i < att->len; i++) - { - if(NULL != ((char **)data)[i]) { - LOG((5, "copying string %d of size %d", i, strlen(((char **)data)[i]) + 1)); - if (!(att->stdata[i] = strdup(((char **)data)[i]))) - BAIL(NC_ENOMEM); - } - else - att->stdata[i] = ((char **)data)[i]; - } - } - else - { - /* [Re]allocate memory for the attribute data */ - if (!new_att) - free (att->data); - if (!(att->data = malloc(att->len * type_size))) - BAIL(NC_ENOMEM); - - /* Just copy the data, for non-atomic types */ - if (type_class == NC_OPAQUE || type_class == NC_COMPOUND || type_class == NC_ENUM) - memcpy(att->data, data, len * type_size); - else - { - /* Data types are like religions, in that one can convert. */ - if ((retval = nc4_convert_type(data, att->data, mem_type, file_type, - len, &range_error, NULL, - (h5->cmode & NC_CLASSIC_MODEL), is_long, 0))) - BAIL(retval); - } - } - } - att->dirty = NC_TRUE; - att->created = NC_FALSE; - - /* Mark attributes on variable dirty, so they get written */ - if(var) - var->attr_dirty = NC_TRUE; - - exit: - /* If there was an error return it, otherwise return any potential - range error value. If none, return NC_NOERR as usual.*/ - if (retval) - return retval; - if (range_error) - return NC_ERANGE; - return NC_NOERR; -} - -/* Learn about an att. All the nc4 nc_inq_ functions just call - * nc4_get_att to get the metadata on an attribute. */ -int -NC4_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - - LOG((2, "nc_inq_att: ncid 0x%x varid %d name %s", ncid, varid, name)); - - /* Find metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* get netcdf-4 metadata */ - h5 = NC4_DATA(nc); - assert(h5); - - /* Handle netcdf-4 files. */ - return nc4_get_att(ncid, nc, varid, name, xtypep, NC_NAT, lenp, NULL, 0, NULL); -} - -/* Learn an attnum, given a name. */ -int -NC4_inq_attid(int ncid, int varid, const char *name, int *attnump) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - int stat; - - LOG((2, "nc_inq_attid: ncid 0x%x varid %d name %s", ncid, varid, name)); - - /* Find metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* get netcdf-4 metadata */ - h5 = NC4_DATA(nc); - assert(h5); - - /* Handle netcdf-4 files. */ - stat = nc4_get_att(ncid, nc, varid, name, NULL, NC_NAT, - NULL, attnump, 0, NULL); - return stat; -} - - -/* Given an attnum, find the att's name. */ -int -NC4_inq_attname(int ncid, int varid, int attnum, char *name) -{ - NC *nc; - NC_ATT_INFO_T *att; - NC_HDF5_FILE_INFO_T *h5; - int retval = NC_NOERR; - - LOG((2, "nc_inq_attname: ncid 0x%x varid %d attnum %d", - ncid, varid, attnum)); - - /* Find metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* get netcdf-4 metadata */ - h5 = NC4_DATA(nc); - assert(h5); - - /* Handle netcdf-4 files. */ - if ((retval = nc4_find_nc_att(ncid, varid, NULL, attnum, &att))) - return retval; - - /* Get the name. */ - if (name) - strcpy(name, att->name); - - return NC_NOERR; -} - -/* I think all atts should be named the exact same thing, to avoid - confusion! */ -int -NC4_rename_att(int ncid, int varid, const char *name, - const char *newname) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var = NULL; - NC_ATT_INFO_T *att, *list; - char norm_newname[NC_MAX_NAME + 1], norm_name[NC_MAX_NAME + 1]; - hid_t datasetid = 0; - int retval = NC_NOERR; - - if (!name || !newname) - return NC_EINVAL; - - LOG((2, "nc_rename_att: ncid 0x%x varid %d name %s newname %s", - ncid, varid, name, newname)); - - /* If the new name is too long, that's an error. */ - if (strlen(newname) > NC_MAX_NAME) - return NC_EMAXNAME; - - /* Find metadata for this file. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5 && grp); - - /* If the file is read-only, return an error. */ - if (h5->no_write) - return NC_EPERM; - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(newname, norm_newname))) - return retval; - - /* Is norm_newname in use? */ - if (varid == NC_GLOBAL) - { - list = grp->att; - } - else - { - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - { - list = var->att; - break; - } - if (!var) - return NC_ENOTVAR; - } - for (att = list; att; att = att->l.next) - if (!strncmp(att->name, norm_newname, NC_MAX_NAME)) - return NC_ENAMEINUSE; - - /* Normalize name and find the attribute. */ - if ((retval = nc4_normalize_name(name, norm_name))) - return retval; - for (att = list; att; att = att->l.next) - if (!strncmp(att->name, norm_name, NC_MAX_NAME)) - break; - if (!att) - return NC_ENOTATT; - - /* If we're not in define mode, new name must be of equal or - less size, if complying with strict NC3 rules. */ - if (!(h5->flags & NC_INDEF) && strlen(norm_newname) > strlen(att->name) && - (h5->cmode & NC_CLASSIC_MODEL)) - return NC_ENOTINDEFINE; - - /* Delete the original attribute, if it exists in the HDF5 file. */ - if (att->created) - { - if (varid == NC_GLOBAL) - { - if (H5Adelete(grp->hdf_grpid, att->name) < 0) - return NC_EHDFERR; - } - else - { - if ((retval = nc4_open_var_grp2(grp, varid, &datasetid))) - return retval; - if (H5Adelete(datasetid, att->name) < 0) - return NC_EHDFERR; - } - att->created = NC_FALSE; - } - - /* Copy the new name into our metadata. */ - free(att->name); - if (!(att->name = malloc((strlen(norm_newname) + 1) * sizeof(char)))) - return NC_ENOMEM; - strcpy(att->name, norm_newname); - att->dirty = NC_TRUE; - - /* Mark attributes on variable dirty, so they get written */ - if(var) - var->attr_dirty = NC_TRUE; - - return retval; -} - -/* Delete an att. Rub it out. Push the button on it. Liquidate - it. Bump it off. Take it for a one-way ride. Terminate it. Drop the - bomb on it. You get the idea. - Ed Hartnett, 10/1/3 -*/ -int -NC4_del_att(int ncid, int varid, const char *name) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_ATT_INFO_T *att, *natt; - NC_VAR_INFO_T *var; - NC_ATT_INFO_T **attlist = NULL; - hid_t locid = 0, datasetid = 0; - int retval = NC_NOERR; - - if (!name) - return NC_EINVAL; - - LOG((2, "nc_del_att: ncid 0x%x varid %d name %s", - ncid, varid, name)); - - /* Find metadata for this file. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5 && grp); - - /* If the file is read-only, return an error. */ - if (h5->no_write) - return NC_EPERM; - - /* If it's not in define mode, forget it. */ - if (!(h5->flags & NC_INDEF)) - { - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_ENOTINDEFINE; - if ((retval = NC4_redef(ncid))) - BAIL(retval); - } - - /* Get either the global or a variable attribute list. Also figure - out the HDF5 location it's attached to. */ - if (varid == NC_GLOBAL) - { - attlist = &grp->att; - locid = grp->hdf_grpid; - } - else - { - for(var = grp->var; var; var = var->l.next) - { - if (var->varid == varid) - { - attlist = &var->att; - break; - } - } - if (!var) - return NC_ENOTVAR; - if (var->created) - locid = var->hdf_datasetid; - } - - /* Now find the attribute by name or number. */ - for (att = *attlist; att; att = att->l.next) - if (!strcmp(att->name, name)) - break; - - /* If att is NULL, we couldn't find the attribute. */ - if (!att) - BAIL_QUIET(NC_ENOTATT); - - /* Delete it from the HDF5 file, if it's been created. */ - if (att->created) - { - assert(locid); - - if(H5Adelete(locid, att->name) < 0) - BAIL(NC_EATTMETA); - } - - /* Renumber all following attributes. */ - for (natt = att->l.next; natt; natt = natt->l.next) - natt->attnum--; - - /* Delete this attribute from this list. */ - if ((retval = nc4_att_list_del(attlist, att))) - BAIL(retval); - - exit: - if (datasetid > 0) H5Dclose(datasetid); - return retval; -} - -/* Write an attribute with type conversion. */ -static int -nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type, - nc_type mem_type, int mem_type_is_long, size_t len, - const void *op) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - - if (!name || strlen(name) > NC_MAX_NAME) - return NC_EBADNAME; - - LOG((3, "nc4_put_att_tc: ncid 0x%x varid %d name %s file_type %d " - "mem_type %d len %d", ncid, varid, name, file_type, mem_type, len)); - - /* The length needs to be positive (cast needed for braindead - systems with signed size_t). */ - if((unsigned long) len > X_INT_MAX) - return NC_EINVAL; - - /* Find metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* get netcdf-4 metadata */ - h5 = NC4_DATA(nc); - assert(h5); - - if(nc->ext_ncid == ncid && varid == NC_GLOBAL) { - const char** reserved = NC_RESERVED_ATT_LIST; - for(;*reserved;reserved++) { - if(strcmp(name,*reserved)==0) - return NC_ENAMEINUSE; - } - } - - if(varid != NC_GLOBAL) { - const char** reserved = NC_RESERVED_VARATT_LIST; - for(;*reserved;reserved++) { - if(strcmp(name,*reserved)==0) - return NC_ENAMEINUSE; - } - } - - /* Otherwise, handle things the netcdf-4 way. */ - return nc4_put_att(ncid, nc, varid, name, file_type, mem_type, len, - mem_type_is_long, op); -} - -static int -nc4_get_att_special(NC_HDF5_FILE_INFO_T* h5, const char* name, - nc_type* filetypep, nc_type mem_type, size_t* lenp, - int* attnump, int is_long, void* data) -{ - /* Fail if asking for att id */ - if(attnump) - return NC_EATTMETA; - - if(strcmp(name,NCPROPS)==0) { - char* propdata = NULL; - int stat = NC_NOERR; - int len; - if(h5->fileinfo->propattr.version == 0) - return NC_ENOTATT; - if(mem_type == NC_NAT) mem_type = NC_CHAR; - if(mem_type != NC_CHAR) - return NC_ECHAR; - if(filetypep) *filetypep = NC_CHAR; - stat = NC4_buildpropinfo(&h5->fileinfo->propattr, &propdata); - if(stat != NC_NOERR) return stat; - len = strlen(propdata); - if(lenp) *lenp = len; - if(data) strncpy((char*)data,propdata,len+1); - free(propdata); - } else if(strcmp(name,ISNETCDF4ATT)==0 - || strcmp(name,SUPERBLOCKATT)==0) { - unsigned long long iv = 0; - if(filetypep) *filetypep = NC_INT; - if(lenp) *lenp = 1; - if(strcmp(name,SUPERBLOCKATT)==0) - iv = (unsigned long long)h5->fileinfo->superblockversion; - else /* strcmp(name,ISNETCDF4ATT)==0 */ - iv = NC4_isnetcdf4(h5); - if(mem_type == NC_NAT) mem_type = NC_INT; - if(data) - switch (mem_type) { - case NC_BYTE: *((char*)data) = (char)iv; break; - case NC_SHORT: *((short*)data) = (short)iv; break; - case NC_INT: *((int*)data) = (int)iv; break; - case NC_UBYTE: *((unsigned char*)data) = (unsigned char)iv; break; - case NC_USHORT: *((unsigned short*)data) = (unsigned short)iv; break; - case NC_UINT: *((unsigned int*)data) = (unsigned int)iv; break; - case NC_INT64: *((long long*)data) = (long long)iv; break; - case NC_UINT64: *((unsigned long long*)data) = (unsigned long long)iv; break; - default: - return NC_ERANGE; - } - } - return NC_NOERR; -} - -/* Read an attribute of any type, with type conversion. This may be - * called by any of the nc_get_att_* functions. */ -int -nc4_get_att_tc(int ncid, int varid, const char *name, nc_type mem_type, - int mem_type_is_long, void *ip) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - - LOG((3, "nc4_get_att_tc: ncid 0x%x varid %d name %s mem_type %d", - ncid, varid, name, mem_type)); - - /* Find metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* get netcdf-4 metadata */ - h5 = NC4_DATA(nc); - assert(h5); - - return nc4_get_att(ncid, nc, varid, name, NULL, mem_type, - NULL, NULL, mem_type_is_long, ip); -} - -int -NC4_put_att(int ncid, int varid, const char *name, nc_type xtype, - size_t nelems, const void *value, nc_type memtype) -{ - return nc4_put_att_tc(ncid, varid, name, xtype, memtype, 0, nelems, value); -} - -int -NC4_get_att(int ncid, int varid, const char *name, void *value, nc_type memtype) -{ - return nc4_get_att_tc(ncid, varid, name, memtype, 0, value); -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4dim.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4dim.c deleted file mode 100644 index 8d17c9aa5ab..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4dim.c +++ /dev/null @@ -1,383 +0,0 @@ -/* - -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file handles the nc4 dimension functions. - -Copyright 2003-5, University Corporation for Atmospheric Research. See -the COPYRIGHT file for copying and redistribution conditions. - -$Id: nc4dim.c,v 1.41 2010/05/25 17:54:23 dmh Exp $ -*/ - -#include "nc4internal.h" -#include "nc4dispatch.h" - -/* Netcdf-4 files might have more than one unlimited dimension, but - return the first one anyway. */ -/* Note that this code is inconsistent with nc_inq */ -int -NC4_inq_unlimdim(int ncid, int *unlimdimidp) -{ - NC *nc; - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - NC_DIM_INFO_T *dim; - int found = 0; - int retval; - - LOG((2, "%s: called", __func__)); - - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - assert(h5); - - /* According to netcdf-3 manual, return -1 if there is no unlimited - dimension. */ - *unlimdimidp = -1; - for (g = grp; g && !found; g = g->parent) - { - for (dim = g->dim; dim; dim = dim->l.next) - { - if (dim->unlimited) - { - *unlimdimidp = dim->dimid; - found++; - break; - } - } - } - - return NC_NOERR; -} - -/* Dimensions are defined in attributes attached to the appropriate - group in the data file. */ -int -NC4_def_dim(int ncid, const char *name, size_t len, int *idp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_DIM_INFO_T *dim; - char norm_name[NC_MAX_NAME + 1]; - int retval = NC_NOERR; - uint32_t nn_hash; - - LOG((2, "%s: ncid 0x%x name %s len %d", __func__, ncid, name, - (int)len)); - - /* Find our global metadata structure. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5 && nc /*& grp*/); - - /* If the file is read-only, return an error. */ - if (h5->no_write) - return NC_EPERM; - - /* Check some stuff if strict nc3 rules are in effect. */ - if (h5->cmode & NC_CLASSIC_MODEL) - { - /* Only one limited dimenson for strict nc3. */ - if (len == NC_UNLIMITED) - for (dim = grp->dim; dim; dim = dim->l.next) - if (dim->unlimited) - return NC_EUNLIMIT; - - /* Must be in define mode for stict nc3. */ - if (!(h5->flags & NC_INDEF)) - return NC_ENOTINDEFINE; - } - - /* If it's not in define mode, enter define mode. */ - if (!(h5->flags & NC_INDEF)) - if ((retval = NC4_redef(ncid))) - return retval; - - /* Make sure this is a valid netcdf name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - /* For classic model: dim length has to fit in a 32-bit unsigned - * int, as permitted for 64-bit offset format. */ - if (h5->cmode & NC_CLASSIC_MODEL) - if(len > X_UINT_MAX) /* Backward compat */ - return NC_EDIMSIZE; - - nn_hash = hash_fast(norm_name, strlen(norm_name)); - - /* Make sure the name is not already in use. */ - for (dim = grp->dim; dim; dim = dim->l.next) - if (nn_hash == dim->hash && !strncmp(dim->name, norm_name, NC_MAX_NAME)) - return NC_ENAMEINUSE; - - /* Add a dimension to the list. The ID must come from the file - * information, since dimids are visible in more than one group. */ - nc4_dim_list_add(&grp->dim, &dim); - dim->dimid = grp->nc4_info->next_dimid++; - - /* Initialize the metadata for this dimension. */ - if (!(dim->name = strdup(norm_name))) - return NC_ENOMEM; - dim->len = len; - if (len == NC_UNLIMITED) - dim->unlimited = NC_TRUE; - - dim->hash = nn_hash; - - /* Pass back the dimid. */ - if (idp) - *idp = dim->dimid; - - return retval; -} - -/* Given dim name, find its id. */ -int -NC4_inq_dimid(int ncid, const char *name, int *idp) -{ - NC *nc; - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - NC_DIM_INFO_T *dim; - char norm_name[NC_MAX_NAME + 1]; - int finished = 0; - int retval; - uint32_t shash; - - LOG((2, "%s: ncid 0x%x name %s", __func__, ncid, name)); - - /* Find metadata for this file. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5); - assert(nc && grp); - - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - return retval; - - shash = hash_fast(norm_name, strlen(norm_name)); - - /* Go through each dim and check for a name match. */ - for (g = grp; g && !finished; g = g->parent) - for (dim = g->dim; dim; dim = dim->l.next) - if (dim->hash == shash && !strncmp(dim->name, norm_name, NC_MAX_NAME)) - { - if (idp) - *idp = dim->dimid; - return NC_NOERR; - } - - return NC_EBADDIM; -} - -/* Find out name and len of a dim. For an unlimited dimension, the - length is the largest length so far written. If the name of lenp - pointers are NULL, they will be ignored. */ -int -NC4_inq_dim(int ncid, int dimid, char *name, size_t *lenp) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - NC_GRP_INFO_T *grp, *dim_grp; - NC_DIM_INFO_T *dim; - int ret = NC_NOERR; - - LOG((2, "%s: ncid 0x%x dimid %d", __func__, ncid, dimid)); - - /* Find our global metadata structure. */ - if ((ret = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return ret; - - assert(h5); - assert(nc && grp); - - /* Find the dimension and its home group. */ - if ((ret = nc4_find_dim(grp, dimid, &dim, &dim_grp))) - return ret; - assert(dim); - - /* Return the dimension name, if the caller wants it. */ - if (name && dim->name) - strcpy(name, dim->name); - - /* Return the dimension length, if the caller wants it. */ - if (lenp) - { - if (dim->unlimited) - { - /* Since this is an unlimited dimension, go to the file - and see how many records there are. Take the max number - of records from all the vars that share this - dimension. */ - *lenp = 0; - if ((ret = nc4_find_dim_len(dim_grp, dimid, &lenp))) - return ret; - } - else - { - if (dim->too_long) - { - ret = NC_EDIMSIZE; - *lenp = NC_MAX_UINT; - } - else - *lenp = dim->len; - } - } - - return ret; -} - -/* Rename a dimension, for those who like to prevaricate. */ -int -NC4_rename_dim(int ncid, int dimid, const char *name) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_DIM_INFO_T *dim, *tmp_dim; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - if (!name) - return NC_EINVAL; - - LOG((2, "%s: ncid 0x%x dimid %d name %s", __func__, ncid, - dimid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(nc); - assert(h5 && grp); - - /* Trying to write to a read-only file? No way, Jose! */ - if (h5->no_write) - return NC_EPERM; - - /* Make sure this is a valid netcdf name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - /* Check if name is in use, and retain a pointer to the correct dim */ - tmp_dim = NULL; - for (dim = grp->dim; dim; dim = dim->l.next) - { - if (!strncmp(dim->name, norm_name, NC_MAX_NAME)) - return NC_ENAMEINUSE; - if (dim->dimid == dimid) - tmp_dim = dim; - } - if (!tmp_dim) - return NC_EBADDIM; - dim = tmp_dim; - - /* Check for renaming dimension w/o variable */ - if (dim->hdf_dimscaleid) - { - /* Sanity check */ - assert(!dim->coord_var); - - /* Close the HDF5 dataset */ - if (H5Dclose(dim->hdf_dimscaleid) < 0) - return NC_EHDFERR; - dim->hdf_dimscaleid = 0; - - /* Now delete the dataset (it will be recreated later, if necessary) */ - if (H5Gunlink(grp->hdf_grpid, dim->name) < 0) - return NC_EDIMMETA; - } - - /* Give the dimension its new name in metadata. UTF8 normalization - * has been done. */ - if(dim->name) - free(dim->name); - if (!(dim->name = malloc((strlen(norm_name) + 1) * sizeof(char)))) - return NC_ENOMEM; - strcpy(dim->name, norm_name); - - dim->hash = hash_fast(norm_name, strlen(norm_name)); - - /* Check if dimension was a coordinate variable, but names are different now */ - if (dim->coord_var && strcmp(dim->name, dim->coord_var->name)) - { - /* Break up the coordinate variable */ - if ((retval = nc4_break_coord_var(grp, dim->coord_var, dim))) - return retval; - } - - /* Check if dimension should become a coordinate variable */ - if (!dim->coord_var) - { - NC_VAR_INFO_T *var; - - /* Attempt to find a variable with the same name as the dimension in - * the current group. */ - if ((retval = nc4_find_var(grp, dim->name, &var))) - return retval; - - /* Check if we found a variable and the variable has the dimension in - * index 0. */ - if (var && var->dim[0] == dim) - { - /* Sanity check */ - assert(var->dimids[0] == dim->dimid); - - /* Reform the coordinate variable */ - if ((retval = nc4_reform_coord_var(grp, var, dim))) - return retval; - } - } - - return NC_NOERR; -} - -/* Returns an array of unlimited dimension ids.The user can get the - number of unlimited dimensions by first calling this with NULL for - the second pointer. -*/ -int -NC4_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp) -{ - NC_DIM_INFO_T *dim; - NC_GRP_INFO_T *grp; - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - int num_unlim = 0; - int retval; - - LOG((2, "%s: ncid 0x%x", __func__, ncid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - /* Get our dim info. */ - assert(h5); - { - for (dim=grp->dim; dim; dim=dim->l.next) - { - if (dim->unlimited) - { - if (unlimdimidsp) - unlimdimidsp[num_unlim] = dim->dimid; - num_unlim++; - } - } - } - - /* Give the number if the user wants it. */ - if (nunlimdimsp) - *nunlimdimsp = num_unlim; - - return NC_NOERR; -} - - diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.c deleted file mode 100644 index 02d01fbf00c..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.c +++ /dev/null @@ -1,116 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/libsrc4/nc4dispatch.c,v 1.5 2010/05/27 02:19:37 dmh Exp $ - *********************************************************************/ - -#include "config.h" -#include -#include "nc.h" -#include "ncdispatch.h" -#include "nc4dispatch.h" - -static NC_Dispatch NC4_dispatcher = { - -NC_FORMATX_NC4, - -NC4_create, -NC4_open, - -NC4_redef, -NC4__enddef, -NC4_sync, -NC4_abort, -NC4_close, -NC4_set_fill, -NC4_inq_base_pe, -NC4_set_base_pe, -NC4_inq_format, -NC4_inq_format_extended, - -NC4_inq, -NC4_inq_type, - -NC4_def_dim, -NC4_inq_dimid, -NC4_inq_dim, -NC4_inq_unlimdim, -NC4_rename_dim, - -NC4_inq_att, -NC4_inq_attid, -NC4_inq_attname, -NC4_rename_att, -NC4_del_att, -NC4_get_att, -NC4_put_att, - -NC4_def_var, -NC4_inq_varid, -NC4_rename_var, -NC4_get_vara, -NC4_put_vara, -NCDEFAULT_get_vars, -NCDEFAULT_put_vars, -NCDEFAULT_get_varm, -NCDEFAULT_put_varm, - -NC4_inq_var_all, - -NC4_var_par_access, - -NC4_show_metadata, -NC4_inq_unlimdims, - -NC4_inq_ncid, -NC4_inq_grps, -NC4_inq_grpname, -NC4_inq_grpname_full, -NC4_inq_grp_parent, -NC4_inq_grp_full_ncid, -NC4_inq_varids, -NC4_inq_dimids, -NC4_inq_typeids, -NC4_inq_type_equal, -NC4_def_grp, -NC4_rename_grp, -NC4_inq_user_type, -NC4_inq_typeid, - -NC4_def_compound, -NC4_insert_compound, -NC4_insert_array_compound, -NC4_inq_compound_field, -NC4_inq_compound_fieldindex, -NC4_def_vlen, -NC4_put_vlen_element, -NC4_get_vlen_element, -NC4_def_enum, -NC4_insert_enum, -NC4_inq_enum_member, -NC4_inq_enum_ident, -NC4_def_opaque, -NC4_def_var_deflate, -NC4_def_var_fletcher32, -NC4_def_var_chunking, -NC4_def_var_fill, -NC4_def_var_endian, -NC4_set_var_chunk_cache, -NC4_get_var_chunk_cache, - -}; - -NC_Dispatch* NC4_dispatch_table = NULL; /* moved here from ddispatch.c */ - -int -NC4_initialize(void) -{ - NC4_dispatch_table = &NC4_dispatcher; - return NC_NOERR; -} - -int -NC4_finalize(void) -{ - return NC_NOERR; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4file.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4file.c deleted file mode 100644 index 7667b358626..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4file.c +++ /dev/null @@ -1,3296 +0,0 @@ -/** \file -The netCDF-4 file functions. - -This file is part of netcdf-4, a netCDF-like interface for HDF5, or -a HDF5 backend for netCDF, depending on your point of view. - -Copyright 2003, University Corporation for Atmospheric Research. See -COPYRIGHT file for copying and redistribution conditions. - -*/ - -#include "config.h" -#include /* netcdf functions sometimes return system errors */ - -#include "nc.h" -#include "nc4internal.h" -#include "nc4dispatch.h" - -/* must be after nc4internal.h */ -#include -#include -#ifdef USE_HDF4 -#include -#endif - -#ifdef USE_DISKLESS -#include -#endif - -/* When we have open objects at file close, should - we log them or print to stdout. Default is to log -*/ -#define LOGOPEN 1 - -/* This is to track opened HDF5 objects to make sure they are - * closed. */ -#ifdef EXTRA_TESTS -extern int num_plists; -extern int num_spaces; -#endif /* EXTRA_TESTS */ - -#define MIN_DEFLATE_LEVEL 0 -#define MAX_DEFLATE_LEVEL 9 - -/* Define the illegal mode flags */ -static const int ILLEGAL_OPEN_FLAGS = (NC_MMAP|NC_64BIT_OFFSET); - -static const int ILLEGAL_CREATE_FLAGS = (NC_NOWRITE|NC_MMAP|NC_INMEMORY|NC_64BIT_OFFSET|NC_CDF5); - -extern void reportopenobjects(int log, hid_t); - -/*! Struct to track information about objects in a group, for nc4_rec_read_metadata() - - \internal - -*/ -typedef struct NC4_rec_read_metadata_obj_info -{ - hid_t oid; /* HDF5 object ID */ - char oname[NC_MAX_NAME + 1]; /* Name of object */ - H5G_stat_t statbuf; /* Information about the object */ - struct NC4_rec_read_metadata_obj_info *next; /* Pointer to next node in list */ -} NC4_rec_read_metadata_obj_info_t; - -/*! User data struct for call to H5Literate() in nc4_rec_read_metadata() - -\internal - -Tracks the groups, named datatypes and datasets in the group, for later use. -*/ -typedef struct NC4_rec_read_metadata_ud -{ - NC4_rec_read_metadata_obj_info_t *grps_head, *grps_tail; /* Pointers to head & tail of list of groups */ - NC_GRP_INFO_T *grp; /* Pointer to parent group */ -} NC4_rec_read_metadata_ud_t; - -/* Forward */ -static int NC4_enddef(int ncid); -static int nc4_rec_read_metadata(NC_GRP_INFO_T *grp); -static int close_netcdf4_file(NC_HDF5_FILE_INFO_T *h5, int abort); - -/* Define the names of attributes to ignore - * added by the HDF5 dimension scale; these - * attached to variables. - * They cannot be modified thru the netcdf-4 API. - */ -const char* NC_RESERVED_VARATT_LIST[] = { -NC_ATT_REFERENCE_LIST, -NC_ATT_CLASS, -NC_ATT_DIMENSION_LIST, -NC_ATT_NAME, -NC_ATT_COORDINATES, -NC_DIMID_ATT_NAME, -NULL -}; - -/* Define the names of attributes to ignore - * because they are "hidden" global attributes. - * They can be read, but not modified thru the netcdf-4 API. - */ -const char* NC_RESERVED_ATT_LIST[] = { -NC_ATT_FORMAT, -NC3_STRICT_ATT_NAME, -NCPROPS, -ISNETCDF4ATT, -SUPERBLOCKATT, -NULL -}; - -/* Define the subset of the reserved list that is readable by name only */ -const char* NC_RESERVED_SPECIAL_LIST[] = { -ISNETCDF4ATT, -SUPERBLOCKATT, -NCPROPS, -NULL -}; - -/* These are the default chunk cache sizes for HDF5 files created or - * opened with netCDF-4. */ -size_t nc4_chunk_cache_size = CHUNK_CACHE_SIZE; -size_t nc4_chunk_cache_nelems = CHUNK_CACHE_NELEMS; -float nc4_chunk_cache_preemption = CHUNK_CACHE_PREEMPTION; - -/* For performance, fill this array only the first time, and keep it - * in global memory for each further use. */ -#define NUM_TYPES 12 -static hid_t h5_native_type_constant_g[NUM_TYPES]; -static const char nc_type_name_g[NUM_TYPES][NC_MAX_NAME + 1] = {"char", "byte", "short", - "int", "float", "double", "ubyte", - "ushort", "uint", "int64", - "uint64", "string"}; -static const nc_type nc_type_constant_g[NUM_TYPES] = {NC_CHAR, NC_BYTE, NC_SHORT, - NC_INT, NC_FLOAT, NC_DOUBLE, NC_UBYTE, - NC_USHORT, NC_UINT, NC_INT64, - NC_UINT64, NC_STRING}; -static const int nc_type_size_g[NUM_TYPES] = {sizeof(char), sizeof(char), sizeof(short), - sizeof(int), sizeof(float), sizeof(double), sizeof(unsigned char), - sizeof(unsigned short), sizeof(unsigned int), sizeof(long long), - sizeof(unsigned long long), sizeof(char *)}; - -/* Set chunk cache size. Only affects files opened/created *after* it - * is called. */ -int -nc_set_chunk_cache(size_t size, size_t nelems, float preemption) -{ - if (preemption < 0 || preemption > 1) - return NC_EINVAL; - nc4_chunk_cache_size = size; - nc4_chunk_cache_nelems = nelems; - nc4_chunk_cache_preemption = preemption; - return NC_NOERR; -} - -/* Get chunk cache size. Only affects files opened/created *after* it - * is called. */ -int -nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp) -{ - if (sizep) - *sizep = nc4_chunk_cache_size; - - if (nelemsp) - *nelemsp = nc4_chunk_cache_nelems; - - if (preemptionp) - *preemptionp = nc4_chunk_cache_preemption; - return NC_NOERR; -} - -/* Required for fortran to avoid size_t issues. */ -int -nc_set_chunk_cache_ints(int size, int nelems, int preemption) -{ - if (size <= 0 || nelems <= 0 || preemption < 0 || preemption > 100) - return NC_EINVAL; - nc4_chunk_cache_size = size; - nc4_chunk_cache_nelems = nelems; - nc4_chunk_cache_preemption = (float)preemption / 100; - return NC_NOERR; -} - -int -nc_get_chunk_cache_ints(int *sizep, int *nelemsp, int *preemptionp) -{ - if (sizep) - *sizep = (int)nc4_chunk_cache_size; - if (nelemsp) - *nelemsp = (int)nc4_chunk_cache_nelems; - if (preemptionp) - *preemptionp = (int)(nc4_chunk_cache_preemption * 100); - - return NC_NOERR; -} - -/* This will return the length of a netcdf data type in bytes. */ -int -nc4typelen(nc_type type) -{ - switch(type){ - case NC_BYTE: - case NC_CHAR: - case NC_UBYTE: - return 1; - case NC_USHORT: - case NC_SHORT: - return 2; - case NC_FLOAT: - case NC_INT: - case NC_UINT: - return 4; - case NC_DOUBLE: - case NC_INT64: - case NC_UINT64: - return 8; - } - return -1; -} - -/* Given a filename, check to see if it is a HDF5 file. */ -#define MAGIC_NUMBER_LEN 4 -#define NC_HDF5_FILE 1 -#define NC_HDF4_FILE 2 -static int -nc_check_for_hdf(const char *path, int flags, void* parameters, int *hdf_file) -{ - char blob[MAGIC_NUMBER_LEN]; -#ifdef USE_PARALLEL4 - int use_parallel = ((flags & NC_MPIIO) == NC_MPIIO); - NC_MPI_INFO* mpiinfo = (NC_MPI_INFO*)parameters; - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; -#endif - int inmemory = ((flags & NC_INMEMORY) == NC_INMEMORY); -#ifdef USE_DISKLESS - NC_MEM_INFO* meminfo = (NC_MEM_INFO*)parameters; -#endif - -#ifdef USE_PARALLEL4 - if(use_parallel) { - comm = mpiinfo->comm; - info = mpiinfo->info; - } -#endif - - assert(hdf_file); - LOG((3, "%s: path %s", __func__, path)); - - /* HDF5 function handles possible user block at beginning of file */ - if(!inmemory && H5Fis_hdf5(path)) - { - *hdf_file = NC_HDF5_FILE; - } else { - -/* Get the 4-byte blob from the beginning of the file. Don't use posix - * for parallel, use the MPI functions instead. */ -#ifdef USE_PARALLEL4 - if (!inmemory && use_parallel) - { - MPI_File fh; - MPI_Status status; - int retval; - if ((retval = MPI_File_open(comm, (char *)path, MPI_MODE_RDONLY, - info, &fh)) != MPI_SUCCESS) - return NC_EPARINIT; - if ((retval = MPI_File_read(fh, blob, MAGIC_NUMBER_LEN, MPI_CHAR, - &status)) != MPI_SUCCESS) - return NC_EPARINIT; - if ((retval = MPI_File_close(&fh)) != MPI_SUCCESS) - return NC_EPARINIT; - } - else -#endif /* USE_PARALLEL4 */ - if(!inmemory) { - FILE *fp; - if (!(fp = fopen(path, "r")) || - fread(blob, MAGIC_NUMBER_LEN, 1, fp) != 1) { - - if(fp) fclose(fp); - return errno; - } - fclose(fp); - } else { /*inmemory*/ - if(meminfo->size < MAGIC_NUMBER_LEN) - return NC_ENOTNC; - memcpy(blob,meminfo->memory,MAGIC_NUMBER_LEN); - } - - /* Check for HDF4. */ - if (memcmp(blob, "\016\003\023\001", 4)==0) - *hdf_file = NC_HDF4_FILE; - else if (memcmp(blob, "HDF", 3)==0) - *hdf_file = NC_HDF5_FILE; - else - *hdf_file = 0; - } - return NC_NOERR; -} - -/* Create a HDF5/netcdf-4 file. */ - -static int -nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info, - NC *nc) -{ - hid_t fcpl_id, fapl_id = -1; - unsigned flags; - FILE *fp; - int retval = NC_NOERR; - NC_HDF5_FILE_INFO_T* nc4_info = NULL; -#ifdef USE_PARALLEL4 - int comm_duped = 0; /* Whether the MPI Communicator was duplicated */ - int info_duped = 0; /* Whether the MPI Info object was duplicated */ -#else /* !USE_PARALLEL4 */ - int persist = 0; /* Should diskless try to persist its data into file?*/ -#endif - - assert(nc); - - if(cmode & NC_DISKLESS) - flags = H5F_ACC_TRUNC; - else if(cmode & NC_NOCLOBBER) - flags = H5F_ACC_EXCL; - else - flags = H5F_ACC_TRUNC; - - LOG((3, "%s: path %s mode 0x%x", __func__, path, cmode)); - assert(nc && path); - - /* If this file already exists, and NC_NOCLOBBER is specified, - return an error. */ - if (cmode & NC_DISKLESS) { -#ifndef USE_PARALLEL4 - if(cmode & NC_WRITE) - persist = 1; -#endif - } else if ((cmode & NC_NOCLOBBER) && (fp = fopen(path, "r"))) { - fclose(fp); - return NC_EEXIST; - } - - /* Add necessary structs to hold netcdf-4 file data. */ - if ((retval = nc4_nc4f_list_add(nc, path, (NC_WRITE | cmode)))) - BAIL(retval); - nc4_info = NC4_DATA(nc); - assert(nc4_info && nc4_info->root_grp); - - /* Need this access plist to control how HDF5 handles open objects - * on file close. (Setting H5F_CLOSE_SEMI will cause H5Fclose to - * fail if there are any open objects in the file. */ - if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif -#ifdef EXTRA_TESTS - if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_SEMI)) - BAIL(NC_EHDFERR); -#else - if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_STRONG)) - BAIL(NC_EHDFERR); -#endif /* EXTRA_TESTS */ - -#ifdef USE_PARALLEL4 - /* If this is a parallel file create, set up the file creation - property list. */ - if ((cmode & NC_MPIIO) || (cmode & NC_MPIPOSIX)) - { - nc4_info->parallel = NC_TRUE; - if (cmode & NC_MPIIO) /* MPI/IO */ - { - LOG((4, "creating parallel file with MPI/IO")); - if (H5Pset_fapl_mpio(fapl_id, comm, info) < 0) - BAIL(NC_EPARINIT); - } -#ifdef USE_PARALLEL_POSIX - else /* MPI/POSIX */ - { - LOG((4, "creating parallel file with MPI/posix")); - if (H5Pset_fapl_mpiposix(fapl_id, comm, 0) < 0) - BAIL(NC_EPARINIT); - } -#else /* USE_PARALLEL_POSIX */ - /* Should not happen! Code in NC4_create/NC4_open should alias the - * NC_MPIPOSIX flag to NC_MPIIO, if the MPI-POSIX VFD is not - * available in HDF5. -QAK - */ - else /* MPI/POSIX */ - BAIL(NC_EPARINIT); -#endif /* USE_PARALLEL_POSIX */ - - /* Keep copies of the MPI Comm & Info objects */ - if (MPI_SUCCESS != MPI_Comm_dup(comm, &nc4_info->comm)) - BAIL(NC_EMPI); - comm_duped++; - if (MPI_INFO_NULL != info) - { - if (MPI_SUCCESS != MPI_Info_dup(info, &nc4_info->info)) - BAIL(NC_EMPI); - info_duped++; - } - else - { - /* No dup, just copy it. */ - nc4_info->info = info; - } - } -#else /* only set cache for non-parallel... */ - if(cmode & NC_DISKLESS) { - if (H5Pset_fapl_core(fapl_id, 4096, persist)) - BAIL(NC_EDISKLESS); - } - if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size, - nc4_chunk_cache_preemption) < 0) - BAIL(NC_EHDFERR); - LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f", - __func__, nc4_chunk_cache_size, nc4_chunk_cache_nelems, nc4_chunk_cache_preemption)); -#endif /* USE_PARALLEL4 */ - -#ifdef HDF5_HAS_LIBVER_BOUNDS - if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST) < 0) - BAIL(NC_EHDFERR); -#endif - - /* Create the property list. */ - if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */ - if (H5Pset_obj_track_times(fcpl_id,0)<0) - BAIL(NC_EHDFERR); - - /* Set latest_format in access propertly list and - * H5P_CRT_ORDER_TRACKED in the creation property list. This turns - * on HDF5 creation ordering. */ - if (H5Pset_link_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | - H5P_CRT_ORDER_INDEXED)) < 0) - BAIL(NC_EHDFERR); - if (H5Pset_attr_creation_order(fcpl_id, (H5P_CRT_ORDER_TRACKED | - H5P_CRT_ORDER_INDEXED)) < 0) - BAIL(NC_EHDFERR); - - /* Create the file. */ - if ((nc4_info->hdfid = H5Fcreate(path, flags, fcpl_id, fapl_id)) < 0) - /*Change the return error from NC_EFILEMETADATA to - System error EACCES because that is the more likely problem */ - BAIL(EACCES); - - /* Open the root group. */ - if ((nc4_info->root_grp->hdf_grpid = H5Gopen2(nc4_info->hdfid, "/", - H5P_DEFAULT)) < 0) - BAIL(NC_EFILEMETA); - - /* Release the property lists. */ - if (H5Pclose(fapl_id) < 0 || H5Pclose(fcpl_id) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; - num_plists--; -#endif - - /* Define mode gets turned on automatically on create. */ - nc4_info->flags |= NC_INDEF; - - NC4_get_fileinfo(nc4_info,&globalpropinfo); - NC4_put_propattr(nc4_info); - - return NC_NOERR; - -exit: /*failure exit*/ -#ifdef USE_PARALLEL4 - if (comm_duped) MPI_Comm_free(&nc4_info->comm); - if (info_duped) MPI_Info_free(&nc4_info->info); -#endif -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (fapl_id != H5P_DEFAULT) H5Pclose(fapl_id); - if(!nc4_info) return retval; - close_netcdf4_file(nc4_info,1); /* treat like abort */ - return retval; -} - -/** \ingroup netcdf4 -Create a netCDF-4/HDF5 file. - -\param path The file name of the new file. -\param cmode The creation mode flag. -\param initialsz Ignored by this function. -\param basepe Ignored by this function. -\param chunksizehintp Ignored by this function. -\param use_parallel 0 for sequential, non-zero for parallel I/O. -\param parameters pointer to struct holding extra data (e.g. for parallel I/O) -layer. Ignored if NULL. -\param dispatch Pointer to the dispatch table for this file. -\param nc_file Pointer to an instance of NC. -\return NC_INVAL Invalid input (check cmode). -*/ -int -NC4_create(const char* path, int cmode, size_t initialsz, int basepe, - size_t *chunksizehintp, int use_parallel, void *parameters, - NC_Dispatch *dispatch, NC* nc_file) -{ - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; - int res; - NC* nc; - - assert(nc_file && path); - - LOG((1, "%s: path %s cmode 0x%x comm %d info %d", - __func__, path, cmode, comm, info)); - -#ifdef USE_PARALLEL4 - if (parameters) - { - comm = ((NC_MPI_INFO *)parameters)->comm; - info = ((NC_MPI_INFO *)parameters)->info; - } -#endif /* USE_PARALLEL4 */ - - /* If this is our first file, turn off HDF5 error messages. */ - if (!nc4_hdf5_initialized) - nc4_hdf5_initialize(); - - /* Check the cmode for validity. */ - if((cmode & ILLEGAL_CREATE_FLAGS) != 0) - return NC_EINVAL; - - /* Cannot have both */ - if((cmode & (NC_MPIIO|NC_MPIPOSIX)) == (NC_MPIIO|NC_MPIPOSIX)) - return NC_EINVAL; - - /* Currently no parallel diskless io */ - if((cmode & (NC_MPIIO | NC_MPIPOSIX)) && (cmode & NC_DISKLESS)) - return NC_EINVAL; - -#ifndef USE_PARALLEL_POSIX -/* If the HDF5 library has been compiled without the MPI-POSIX VFD, alias - * the NC_MPIPOSIX flag to NC_MPIIO. -QAK - */ - if(cmode & NC_MPIPOSIX) - { - cmode &= ~NC_MPIPOSIX; - cmode |= NC_MPIIO; - } -#endif /* USE_PARALLEL_POSIX */ - - cmode |= NC_NETCDF4; - - /* Apply default create format. */ - if (nc_get_default_format() == NC_FORMAT_CDF5) - cmode |= NC_CDF5; - else if (nc_get_default_format() == NC_FORMAT_64BIT_OFFSET) - cmode |= NC_64BIT_OFFSET; - else if (nc_get_default_format() == NC_FORMAT_NETCDF4_CLASSIC) - cmode |= NC_CLASSIC_MODEL; - - LOG((2, "cmode after applying default format: 0x%x", cmode)); - - nc_file->int_ncid = nc_file->ext_ncid; - res = nc4_create_file(path, cmode, comm, info, nc_file); - - return res; -} - -/* This function is called by read_dataset when a dimension scale - * dataset is encountered. It reads in the dimension data (creating a - * new NC_DIM_INFO_T object), and also checks to see if this is a - * dimension without a variable - that is, a coordinate dimension - * which does not have any coordinate data. */ -static int -read_scale(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name, - const H5G_stat_t *statbuf, hsize_t scale_size, hsize_t max_scale_size, - NC_DIM_INFO_T **dim) -{ - NC_DIM_INFO_T *new_dim; /* Dimension added to group */ - char dimscale_name_att[NC_MAX_NAME + 1] = ""; /* Dimscale name, for checking if dim without var */ - htri_t attr_exists = -1; /* Flag indicating hidden attribute exists */ - hid_t attid = -1; /* ID of hidden attribute (to store dim ID) */ - int dimscale_created = 0; /* Remember if a dimension was created (for error recovery) */ - int initial_grp_ndims = grp->ndims; /* Retain for error recovery */ - short initial_next_dimid = grp->nc4_info->next_dimid;/* Retain for error recovery */ - int retval; - - /* Add a dimension for this scale. */ - if ((retval = nc4_dim_list_add(&grp->dim, &new_dim))) - BAIL(retval); - dimscale_created++; - - /* Does this dataset have a hidden attribute that tells us its - * dimid? If so, read it. */ - if ((attr_exists = H5Aexists(datasetid, NC_DIMID_ATT_NAME)) < 0) - BAIL(NC_EHDFERR); - if (attr_exists) - { - if ((attid = H5Aopen_name(datasetid, NC_DIMID_ATT_NAME)) < 0) - BAIL(NC_EHDFERR); - - if (H5Aread(attid, H5T_NATIVE_INT, &new_dim->dimid) < 0) - BAIL(NC_EHDFERR); - - /* Check if scale's dimid should impact the group's next dimid */ - if (new_dim->dimid >= grp->nc4_info->next_dimid) - grp->nc4_info->next_dimid = new_dim->dimid + 1; - } - else - { - /* Assign dimid */ - new_dim->dimid = grp->nc4_info->next_dimid++; - } - - /* Increment number of dimensions. */ - grp->ndims++; - - if (!(new_dim->name = strdup(obj_name))) - BAIL(NC_ENOMEM); - if (SIZEOF_SIZE_T < 8 && scale_size > NC_MAX_UINT) - { - new_dim->len = NC_MAX_UINT; - new_dim->too_long = NC_TRUE; - } - else - new_dim->len = scale_size; - new_dim->hdf5_objid.fileno[0] = statbuf->fileno[0]; - new_dim->hdf5_objid.fileno[1] = statbuf->fileno[1]; - new_dim->hdf5_objid.objno[0] = statbuf->objno[0]; - new_dim->hdf5_objid.objno[1] = statbuf->objno[1]; - new_dim->hash = hash_fast(obj_name, strlen(obj_name)); - - /* If the dimscale has an unlimited dimension, then this dimension - * is unlimited. */ - if (max_scale_size == H5S_UNLIMITED) - new_dim->unlimited = NC_TRUE; - - /* If the scale name is set to DIM_WITHOUT_VARIABLE, then this is a - * dimension, but not a variable. (If get_scale_name returns an - * error, just move on, there's no NAME.) */ - if (H5DSget_scale_name(datasetid, dimscale_name_att, NC_MAX_NAME) >= 0) - { - if (!strncmp(dimscale_name_att, DIM_WITHOUT_VARIABLE, - strlen(DIM_WITHOUT_VARIABLE))) - { - if (new_dim->unlimited) - { - size_t len = 0, *lenp = &len; - - if ((retval = nc4_find_dim_len(grp, new_dim->dimid, &lenp))) - BAIL(retval); - new_dim->len = *lenp; - } - - /* Hold open the dataset, since the dimension doesn't have a coordinate variable */ - new_dim->hdf_dimscaleid = datasetid; - H5Iinc_ref(new_dim->hdf_dimscaleid); /* Increment number of objects using ID */ - } - } - - /* Set the dimension created */ - *dim = new_dim; - -exit: - /* Close the hidden attribute, if it was opened (error, or no error) */ - if (attid > 0 && H5Aclose(attid) < 0) - BAIL2(NC_EHDFERR); - - /* On error, undo any dimscale creation */ - if (retval < 0 && dimscale_created) - { - /* Delete the dimension */ - if ((retval = nc4_dim_list_del(&grp->dim, new_dim))) - BAIL2(retval); - - /* Reset the group's information */ - grp->ndims = initial_grp_ndims; - grp->nc4_info->next_dimid = initial_next_dimid; - } - - return retval; -} - -/* This function reads the hacked in coordinates attribute I use for - * multi-dimensional coordinates. */ -static int -read_coord_dimids(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var) -{ - hid_t coord_att_typeid = -1, coord_attid = -1, spaceid = -1; - hssize_t npoints; - int ret = 0; - int d; - - /* There is a hidden attribute telling us the ids of the - * dimensions that apply to this multi-dimensional coordinate - * variable. Read it. */ - if ((coord_attid = H5Aopen_name(var->hdf_datasetid, COORDINATES)) < 0) ret++; - if (!ret && (coord_att_typeid = H5Aget_type(coord_attid)) < 0) ret++; - - /* How many dimensions are there? */ - if (!ret && (spaceid = H5Aget_space(coord_attid)) < 0) ret++; -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if (!ret && (npoints = H5Sget_simple_extent_npoints(spaceid)) < 0) ret++; - - /* Check that the number of points is the same as the number of dimensions - * for the variable */ - if (!ret && npoints != var->ndims) ret++; - - if (!ret && H5Aread(coord_attid, coord_att_typeid, var->dimids) < 0) ret++; - LOG((4, "dimscale %s is multidimensional and has coords", var->name)); - - /* Update var->dim field based on the var->dimids */ - for (d = 0; d < var->ndims; d++) { - /* Ok if does not find a dim at this time, but if found set it */ - nc4_find_dim(grp, var->dimids[d], &var->dim[d], NULL); - } - - /* Set my HDF5 IDs free! */ - if (spaceid >= 0 && H5Sclose(spaceid) < 0) ret++; -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (coord_att_typeid >= 0 && H5Tclose(coord_att_typeid) < 0) ret++; - if (coord_attid >= 0 && H5Aclose(coord_attid) < 0) ret++; - return ret ? NC_EATTMETA : NC_NOERR; -} - -/* This function is called when reading a file's metadata for each - * dimension scale attached to a variable.*/ -static herr_t -dimscale_visitor(hid_t did, unsigned dim, hid_t dsid, - void *dimscale_hdf5_objids) -{ - H5G_stat_t statbuf; - - /* Get more info on the dimscale object.*/ - if (H5Gget_objinfo(dsid, ".", 1, &statbuf) < 0) - return -1; - - /* Pass this information back to caller. */ - (*(HDF5_OBJID_T *)dimscale_hdf5_objids).fileno[0] = statbuf.fileno[0]; - (*(HDF5_OBJID_T *)dimscale_hdf5_objids).fileno[1] = statbuf.fileno[1]; - (*(HDF5_OBJID_T *)dimscale_hdf5_objids).objno[0] = statbuf.objno[0]; - (*(HDF5_OBJID_T *)dimscale_hdf5_objids).objno[1] = statbuf.objno[1]; - return 0; -} - -/* Given an HDF5 type, set a pointer to netcdf type. */ -static int -get_netcdf_type(NC_HDF5_FILE_INFO_T *h5, hid_t native_typeid, - nc_type *xtype) -{ - NC_TYPE_INFO_T *type; - H5T_class_t class; - htri_t is_str, equal = 0; - - assert(h5 && xtype); - - if ((class = H5Tget_class(native_typeid)) < 0) - return NC_EHDFERR; - - /* H5Tequal doesn't work with H5T_C_S1 for some reason. But - * H5Tget_class will return H5T_STRING if this is a string. */ - if (class == H5T_STRING) - { - if ((is_str = H5Tis_variable_str(native_typeid)) < 0) - return NC_EHDFERR; - if (is_str) - *xtype = NC_STRING; - else - *xtype = NC_CHAR; - return NC_NOERR; - } - else if (class == H5T_INTEGER || class == H5T_FLOAT) - { - /* For integers and floats, we don't have to worry about - * endianness if we compare native types. */ - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_SCHAR)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_BYTE; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_SHORT)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_SHORT; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_INT)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_INT; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_FLOAT)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_FLOAT; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_DOUBLE)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_DOUBLE; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_UCHAR)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_UBYTE; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_USHORT)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_USHORT; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_UINT)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_UINT; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_LLONG)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_INT64; - return NC_NOERR; - } - if ((equal = H5Tequal(native_typeid, H5T_NATIVE_ULLONG)) < 0) - return NC_EHDFERR; - if (equal) - { - *xtype = NC_UINT64; - return NC_NOERR; - } - } - - /* Maybe we already know about this type. */ - if (!equal) - if((type = nc4_rec_find_hdf_type(h5->root_grp, native_typeid))) - { - *xtype = type->nc_typeid; - return NC_NOERR; - } - - *xtype = NC_NAT; - return NC_EBADTYPID; -} - -/* Given an HDF5 type, set a pointer to netcdf type_info struct, - * either an existing one (for user-defined types) or a newly created - * one. */ -static int -get_type_info2(NC_HDF5_FILE_INFO_T *h5, hid_t datasetid, - NC_TYPE_INFO_T **type_info) -{ - htri_t is_str, equal = 0; - H5T_class_t class; - hid_t native_typeid, hdf_typeid; - H5T_order_t order; - int t; - - assert(h5 && type_info); - - /* Because these N5T_NATIVE_* constants are actually function calls - * (!) in H5Tpublic.h, I can't initialize this array in the usual - * way, because at least some C compilers (like Irix) complain - * about calling functions when defining constants. So I have to do - * it like this. Note that there's no native types for char or - * string. Those are handled later. */ - if (!h5_native_type_constant_g[1]) - { - h5_native_type_constant_g[1] = H5T_NATIVE_SCHAR; - h5_native_type_constant_g[2] = H5T_NATIVE_SHORT; - h5_native_type_constant_g[3] = H5T_NATIVE_INT; - h5_native_type_constant_g[4] = H5T_NATIVE_FLOAT; - h5_native_type_constant_g[5] = H5T_NATIVE_DOUBLE; - h5_native_type_constant_g[6] = H5T_NATIVE_UCHAR; - h5_native_type_constant_g[7] = H5T_NATIVE_USHORT; - h5_native_type_constant_g[8] = H5T_NATIVE_UINT; - h5_native_type_constant_g[9] = H5T_NATIVE_LLONG; - h5_native_type_constant_g[10] = H5T_NATIVE_ULLONG; - } - - /* Get the HDF5 typeid - we'll need it later. */ - if ((hdf_typeid = H5Dget_type(datasetid)) < 0) - return NC_EHDFERR; - - /* Get the native typeid. Will be equivalent to hdf_typeid when - * creating but not necessarily when reading, a variable. */ - if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0) - return NC_EHDFERR; - - /* Is this type an integer, string, compound, or what? */ - if ((class = H5Tget_class(native_typeid)) < 0) - return NC_EHDFERR; - - /* Is this an atomic type? */ - if (class == H5T_STRING || class == H5T_INTEGER || class == H5T_FLOAT) - { - /* Allocate a phony NC_TYPE_INFO_T struct to hold type info. */ - if (!(*type_info = calloc(1, sizeof(NC_TYPE_INFO_T)))) - return NC_ENOMEM; - - /* H5Tequal doesn't work with H5T_C_S1 for some reason. But - * H5Tget_class will return H5T_STRING if this is a string. */ - if (class == H5T_STRING) - { - if ((is_str = H5Tis_variable_str(native_typeid)) < 0) - return NC_EHDFERR; - /* Make sure fixed-len strings will work like variable-len strings */ - if (is_str || H5Tget_size(hdf_typeid) > 1) - { - /* Set a class for the type */ - t = NUM_TYPES - 1; - (*type_info)->nc_type_class = NC_STRING; - } - else - { - /* Set a class for the type */ - t = 0; - (*type_info)->nc_type_class = NC_CHAR; - } - } - else if (class == H5T_INTEGER || class == H5T_FLOAT) - { - for (t = 1; t < NUM_TYPES - 1; t++) - { - if ((equal = H5Tequal(native_typeid, h5_native_type_constant_g[t])) < 0) - return NC_EHDFERR; - if (equal) - break; - } - - /* Find out about endianness. - * As of HDF 1.8.6, this works with all data types - * Not just H5T_INTEGER. - * - * See https://www.hdfgroup.org/HDF5/doc/RM/RM_H5T.html#Datatype-GetOrder - */ - if((order = H5Tget_order(hdf_typeid)) < 0) - return NC_EHDFERR; - - if(order == H5T_ORDER_LE) - (*type_info)->endianness = NC_ENDIAN_LITTLE; - else if(order == H5T_ORDER_BE) - (*type_info)->endianness = NC_ENDIAN_BIG; - else - return NC_EBADTYPE; - - if(class == H5T_INTEGER) - (*type_info)->nc_type_class = NC_INT; - else - (*type_info)->nc_type_class = NC_FLOAT; - } - (*type_info)->nc_typeid = nc_type_constant_g[t]; - (*type_info)->size = nc_type_size_g[t]; - if (!((*type_info)->name = strdup(nc_type_name_g[t]))) - return NC_ENOMEM; - (*type_info)->hdf_typeid = hdf_typeid; - (*type_info)->native_hdf_typeid = native_typeid; - return NC_NOERR; - } - else - { - NC_TYPE_INFO_T *type; - - /* This is a user-defined type. */ - if((type = nc4_rec_find_hdf_type(h5->root_grp, native_typeid))) - *type_info = type; - - /* The type entry in the array of user-defined types already has - * an open data typeid (and native typeid), so close the ones we - * opened above. */ - if (H5Tclose(native_typeid) < 0) - return NC_EHDFERR; - if (H5Tclose(hdf_typeid) < 0) - return NC_EHDFERR; - - if (type) - return NC_NOERR; - } - - return NC_EBADTYPID; -} - -/* Read an attribute. */ -static int -read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att) -{ - hid_t spaceid = 0, file_typeid = 0; - hsize_t dims[1] = {0}; /* netcdf attributes always 1-D. */ - int retval = NC_NOERR; - size_t type_size; - int att_ndims; - hssize_t att_npoints; - H5T_class_t att_class; - int fixed_len_string = 0; - size_t fixed_size = 0; - - assert(att->name); - LOG((5, "%s: att->attnum %d att->name %s att->nc_typeid %d att->len %d", - __func__, att->attnum, att->name, (int)att->nc_typeid, att->len)); - - /* Get type of attribute in file. */ - if ((file_typeid = H5Aget_type(attid)) < 0) - return NC_EATTMETA; - if ((att->native_hdf_typeid = H5Tget_native_type(file_typeid, H5T_DIR_DEFAULT)) < 0) - BAIL(NC_EHDFERR); - if ((att_class = H5Tget_class(att->native_hdf_typeid)) < 0) - BAIL(NC_EATTMETA); - if (att_class == H5T_STRING && !H5Tis_variable_str(att->native_hdf_typeid)) - { - fixed_len_string++; - if (!(fixed_size = H5Tget_size(att->native_hdf_typeid))) - BAIL(NC_EATTMETA); - } - if ((retval = get_netcdf_type(grp->nc4_info, att->native_hdf_typeid, &(att->nc_typeid)))) - BAIL(retval); - - - /* Get len. */ - if ((spaceid = H5Aget_space(attid)) < 0) - BAIL(NC_EATTMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if ((att_ndims = H5Sget_simple_extent_ndims(spaceid)) < 0) - BAIL(NC_EATTMETA); - if ((att_npoints = H5Sget_simple_extent_npoints(spaceid)) < 0) - BAIL(NC_EATTMETA); - - /* If both att_ndims and att_npoints are zero, then this is a - * zero length att. */ - if (att_ndims == 0 && att_npoints == 0) - dims[0] = 0; - else if (att->nc_typeid == NC_STRING) - dims[0] = att_npoints; - else if (att->nc_typeid == NC_CHAR) - { - /* NC_CHAR attributes are written as a scalar in HDF5, of type - * H5T_C_S1, of variable length. */ - if (att_ndims == 0) - { - if (!(dims[0] = H5Tget_size(file_typeid))) - BAIL(NC_EATTMETA); - } - else - { - /* This is really a string type! */ - att->nc_typeid = NC_STRING; - dims[0] = att_npoints; - } - } - else - { - H5S_class_t space_class; - - /* All netcdf attributes are scalar or 1-D only. */ - if (att_ndims > 1) - BAIL(NC_EATTMETA); - - /* Check class of HDF5 dataspace */ - if ((space_class = H5Sget_simple_extent_type(spaceid)) < 0) - BAIL(NC_EATTMETA); - - /* Check for NULL HDF5 dataspace class (should be weeded out earlier) */ - if (H5S_NULL == space_class) - BAIL(NC_EATTMETA); - - /* check for SCALAR HDF5 dataspace class */ - if (H5S_SCALAR == space_class) - dims[0] = 1; - else /* Must be "simple" dataspace */ - { - /* Read the size of this attribute. */ - if (H5Sget_simple_extent_dims(spaceid, dims, NULL) < 0) - BAIL(NC_EATTMETA); - } - } - - /* Tell the user what the length if this attribute is. */ - att->len = dims[0]; - - /* Allocate some memory if the len is not zero, and read the - attribute. */ - if (dims[0]) - { - if ((retval = nc4_get_typelen_mem(grp->nc4_info, att->nc_typeid, 0, - &type_size))) - return retval; - if (att_class == H5T_VLEN) - { - if (!(att->vldata = malloc((unsigned int)(att->len * sizeof(hvl_t))))) - BAIL(NC_ENOMEM); - if (H5Aread(attid, att->native_hdf_typeid, att->vldata) < 0) - BAIL(NC_EATTMETA); - } - else if (att->nc_typeid == NC_STRING) - { - if (!(att->stdata = calloc(att->len, sizeof(char *)))) - BAIL(NC_ENOMEM); - /* For a fixed length HDF5 string, the read requires - * contiguous memory. Meanwhile, the netCDF API requires that - * nc_free_string be called on string arrays, which would not - * work if one contiguous memory block were used. So here I - * convert the contiguous block of strings into an array of - * malloced strings (each string with its own malloc). Then I - * copy the data and free the contiguous memory. This - * involves copying the data, which is bad, but this only - * occurs for fixed length string attributes, and presumably - * these are small. (And netCDF-4 does not create them - it - * always uses variable length strings. */ - if (fixed_len_string) - { - int i; - char *contig_buf, *cur; - - /* Alloc space for the contiguous memory read. */ - if (!(contig_buf = malloc(att->len * fixed_size * sizeof(char)))) - BAIL(NC_ENOMEM); - - /* Read the fixed-len strings as one big block. */ - if (H5Aread(attid, att->native_hdf_typeid, contig_buf) < 0) { - free(contig_buf); - BAIL(NC_EATTMETA); - } - - /* Copy strings, one at a time, into their new home. Alloc - space for each string. The user will later free this - space with nc_free_string. */ - cur = contig_buf; - for (i = 0; i < att->len; i++) - { - if (!(att->stdata[i] = malloc(fixed_size))) { - free(contig_buf); - BAIL(NC_ENOMEM); - } - strncpy(att->stdata[i], cur, fixed_size); - cur += fixed_size; - } - - /* Free contiguous memory buffer. */ - free(contig_buf); - } - else - { - /* Read variable-length string atts. */ - if (H5Aread(attid, att->native_hdf_typeid, att->stdata) < 0) - BAIL(NC_EATTMETA); - } - } - else - { - if (!(att->data = malloc((unsigned int)(att->len * type_size)))) - BAIL(NC_ENOMEM); - if (H5Aread(attid, att->native_hdf_typeid, att->data) < 0) - BAIL(NC_EATTMETA); - } - } - - if (H5Tclose(file_typeid) < 0) - BAIL(NC_EHDFERR); - if (H5Sclose(spaceid) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_spaces--; -#endif - - return NC_NOERR; - - exit: - if (H5Tclose(file_typeid) < 0) - BAIL2(NC_EHDFERR); - if (spaceid > 0 && H5Sclose(spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - return retval; -} - -/* Read information about a user defined type from the HDF5 file, and - * stash it in the group's list of types. */ -static int -read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name) -{ - NC_TYPE_INFO_T *type; - H5T_class_t class; - hid_t native_typeid; - size_t type_size; - int retval = NC_NOERR; - - assert(grp && type_name); - - LOG((4, "%s: type_name %s grp->name %s", __func__, type_name, grp->name)); - - /* What is the native type for this platform? */ - if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0) - return NC_EHDFERR; - - /* What is the size of this type on this platform. */ - if (!(type_size = H5Tget_size(native_typeid))) - return NC_EHDFERR; - LOG((5, "type_size %d", type_size)); - - /* Add to the list for this new type, and get a local pointer to it. */ - if ((retval = nc4_type_list_add(grp, type_size, type_name, &type))) - return retval; - - /* Remember common info about this type. */ - type->committed = NC_TRUE; - type->hdf_typeid = hdf_typeid; - H5Iinc_ref(type->hdf_typeid); /* Increment number of objects using ID */ - type->native_hdf_typeid = native_typeid; - - /* What is the class of this type, compound, vlen, etc. */ - if ((class = H5Tget_class(hdf_typeid)) < 0) - return NC_EHDFERR; - switch (class) - { - case H5T_STRING: - type->nc_type_class = NC_STRING; - break; - - case H5T_COMPOUND: - { - int nmembers; - unsigned int m; - char* member_name = NULL; -#ifdef JNA - char jna[1001]; -#endif - - type->nc_type_class = NC_COMPOUND; - - if ((nmembers = H5Tget_nmembers(hdf_typeid)) < 0) - return NC_EHDFERR; - LOG((5, "compound type has %d members", nmembers)); - for (m = 0; m < nmembers; m++) - { - hid_t member_hdf_typeid; - hid_t member_native_typeid; - size_t member_offset; - H5T_class_t mem_class; - nc_type member_xtype; - - - /* Get the typeid and native typeid of this member of the - * compound type. */ - if ((member_hdf_typeid = H5Tget_member_type(type->native_hdf_typeid, m)) < 0) - return NC_EHDFERR; - - if ((member_native_typeid = H5Tget_native_type(member_hdf_typeid, H5T_DIR_DEFAULT)) < 0) - return NC_EHDFERR; - - /* Get the name of the member.*/ - member_name = H5Tget_member_name(type->native_hdf_typeid, m); - if (!member_name || strlen(member_name) > NC_MAX_NAME) { - retval = NC_EBADNAME; - break; - } -#ifdef JNA - else { - strncpy(jna,member_name,1000); - member_name = jna; - } -#endif - - /* Offset in bytes on *this* platform. */ - member_offset = H5Tget_member_offset(type->native_hdf_typeid, m); - - /* Get dimensional data if this member is an array of something. */ - if ((mem_class = H5Tget_class(member_hdf_typeid)) < 0) - return NC_EHDFERR; - if (mem_class == H5T_ARRAY) - { - int ndims, dim_size[NC_MAX_VAR_DIMS]; - hsize_t dims[NC_MAX_VAR_DIMS]; - int d; - - if ((ndims = H5Tget_array_ndims(member_hdf_typeid)) < 0) { - retval = NC_EHDFERR; - break; - } - if (H5Tget_array_dims(member_hdf_typeid, dims, NULL) != ndims) { - retval = NC_EHDFERR; - break; - } - for (d = 0; d < ndims; d++) - dim_size[d] = dims[d]; - - /* What is the netCDF typeid of this member? */ - if ((retval = get_netcdf_type(grp->nc4_info, H5Tget_super(member_hdf_typeid), - &member_xtype))) - break; - - /* Add this member to our list of fields in this compound type. */ - if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name, - member_offset, H5Tget_super(member_hdf_typeid), - H5Tget_super(member_native_typeid), - member_xtype, ndims, dim_size))) - break; - } - else - { - /* What is the netCDF typeid of this member? */ - if ((retval = get_netcdf_type(grp->nc4_info, member_native_typeid, - &member_xtype))) - break; - - /* Add this member to our list of fields in this compound type. */ - if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name, - member_offset, member_hdf_typeid, member_native_typeid, - member_xtype, 0, NULL))) - break; - } - -#ifndef JNA - - /* Free the member name (which HDF5 allocated for us). */ - /* On Windows using the microsoft runtime, it is an error - for one library to free memory allocated by a different library. - IF it is available, we should use H5free_memory*/ - -#ifdef HDF5_HAS_H5FREE - if(member_name != NULL) H5free_memory(member_name); -#else -#ifndef _MSC_VER - if(member_name != NULL) free(member_name); -#endif -#endif -#endif - member_name = NULL; - } -#ifndef JNA - if(member_name != NULL) - free(member_name); -#endif - if(retval) /* error exit from loop */ - return retval; - } - break; - - case H5T_VLEN: - { - htri_t ret; - - /* For conveninence we allow user to pass vlens of strings - * with null terminated strings. This means strings are - * treated slightly differently by the API, although they are - * really just VLENs of characters. */ - if ((ret = H5Tis_variable_str(hdf_typeid)) < 0) - return NC_EHDFERR; - if (ret) - type->nc_type_class = NC_STRING; - else - { - hid_t base_hdf_typeid; - nc_type base_nc_type = NC_NAT; - - type->nc_type_class = NC_VLEN; - - /* Find the base type of this vlen (i.e. what is this a - * vlen of?) */ - if (!(base_hdf_typeid = H5Tget_super(native_typeid))) - return NC_EHDFERR; - - /* What size is this type? */ - if (!(type_size = H5Tget_size(base_hdf_typeid))) - return NC_EHDFERR; - - /* What is the netcdf corresponding type. */ - if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid, - &base_nc_type))) - return retval; - LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d", - base_hdf_typeid, type_size, base_nc_type)); - - /* Remember the base types for this vlen */ - type->u.v.base_nc_typeid = base_nc_type; - type->u.v.base_hdf_typeid = base_hdf_typeid; - } - } - break; - - case H5T_OPAQUE: - type->nc_type_class = NC_OPAQUE; - break; - - case H5T_ENUM: - { - hid_t base_hdf_typeid; - nc_type base_nc_type = NC_NAT; - void *value; - int i; - char *member_name = NULL; -#ifdef JNA - char jna[1001]; -#endif - - type->nc_type_class = NC_ENUM; - - /* Find the base type of this enum (i.e. what is this a - * enum of?) */ - if (!(base_hdf_typeid = H5Tget_super(hdf_typeid))) - return NC_EHDFERR; - /* What size is this type? */ - if (!(type_size = H5Tget_size(base_hdf_typeid))) - return NC_EHDFERR; - /* What is the netcdf corresponding type. */ - if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid, - &base_nc_type))) - return retval; - LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d", - base_hdf_typeid, type_size, base_nc_type)); - - /* Remember the base types for this enum */ - type->u.e.base_nc_typeid = base_nc_type; - type->u.e.base_hdf_typeid = base_hdf_typeid; - - /* Find out how many member are in the enum. */ - if ((type->u.e.num_members = H5Tget_nmembers(hdf_typeid)) < 0) - return NC_EHDFERR; - - /* Allocate space for one value. */ - if (!(value = calloc(1, type_size))) - return NC_ENOMEM; - - /* Read each name and value defined in the enum. */ - for (i = 0; i < type->u.e.num_members; i++) - { - - /* Get the name and value from HDF5. */ - if (!(member_name = H5Tget_member_name(hdf_typeid, i))) - { - retval = NC_EHDFERR; - break; - } -#ifdef JNA - strncpy(jna,member_name,1000); - member_name = jna; -#endif - - if (strlen(member_name) > NC_MAX_NAME) - { - retval = NC_EBADNAME; - break; - } - if (H5Tget_member_value(hdf_typeid, i, value) < 0) - { - retval = NC_EHDFERR; - break; - } - - /* Insert new field into this type's list of fields. */ - if ((retval = nc4_enum_member_add(&type->u.e.enum_member, type->size, - member_name, value))) - { - break; - } - -#ifndef JNA - /* Free the member name (which HDF5 allocated for us). */ - if(member_name != NULL) free(member_name); -#endif - member_name = NULL; - } - -#ifndef JNA - if(member_name != NULL) - free(member_name); -#endif - if(value) free(value); - if(retval) /* error exit from loop */ - return retval; - } - break; - - default: - LOG((0, "unknown class")); - return NC_EBADCLASS; - } - return retval; -} - -/* This function is called by read_dataset, (which is called by - * nc4_rec_read_metadata) when a netCDF variable is found in the - * file. This function reads in all the metadata about the var, - * including the attributes. */ -static int -read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name, - size_t ndims, NC_DIM_INFO_T *dim) -{ - NC_VAR_INFO_T *var = NULL; - hid_t access_pid = 0; - int incr_id_rc = 0; /* Whether the dataset ID's ref count has been incremented */ - int natts, a, d; - const char** reserved; - - NC_ATT_INFO_T *att; - hid_t attid = 0; - char att_name[NC_MAX_HDF5_NAME + 1]; - -#define CD_NELEMS_ZLIB 1 -#define CD_NELEMS_SZIP 4 - H5Z_filter_t filter; - int num_filters; - unsigned int cd_values[CD_NELEMS_SZIP]; - size_t cd_nelems = CD_NELEMS_SZIP; - hid_t propid = 0; - H5D_fill_value_t fill_status; - H5D_layout_t layout; - hsize_t chunksize[NC_MAX_VAR_DIMS] = {0}; - int retval = NC_NOERR; - double rdcc_w0; - int f; - - assert(obj_name && grp); - LOG((4, "%s: obj_name %s", __func__, obj_name)); - - /* Add a variable to the end of the group's var list. */ - if ((retval = nc4_var_list_add(&grp->var, &var))) - BAIL(retval); - - /* Fill in what we already know. */ - var->hdf_datasetid = datasetid; - H5Iinc_ref(var->hdf_datasetid); /* Increment number of objects using ID */ - incr_id_rc++; /* Indicate that we've incremented the ref. count (for errors) */ - var->varid = grp->nvars++; - var->created = NC_TRUE; - var->ndims = ndims; - - /* We need some room to store information about dimensions for this - * var. */ - if (var->ndims) - { - if (!(var->dim = calloc(var->ndims, sizeof(NC_DIM_INFO_T *)))) - BAIL(NC_ENOMEM); - if (!(var->dimids = calloc(var->ndims, sizeof(int)))) - BAIL(NC_ENOMEM); - } - - /* Get the current chunk cache settings. */ - if ((access_pid = H5Dget_access_plist(datasetid)) < 0) - BAIL(NC_EVARMETA); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* Learn about current chunk cache settings. */ - if ((H5Pget_chunk_cache(access_pid, &(var->chunk_cache_nelems), - &(var->chunk_cache_size), &rdcc_w0)) < 0) - BAIL(NC_EHDFERR); - var->chunk_cache_preemption = rdcc_w0; - - /* Check for a weird case: a non-coordinate variable that has the - * same name as a dimension. It's legal in netcdf, and requires - * that the HDF5 dataset name be changed. */ - if (strlen(obj_name) > strlen(NON_COORD_PREPEND) && - !strncmp(obj_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND))) - { - /* Allocate space for the name. */ - if (!(var->name = malloc(((strlen(obj_name) - strlen(NON_COORD_PREPEND))+ 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - - strcpy(var->name, &obj_name[strlen(NON_COORD_PREPEND)]); - - /* Allocate space for the HDF5 name. */ - if (!(var->hdf5_name = malloc((strlen(obj_name) + 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - - strcpy(var->hdf5_name, obj_name); - } - else - { - /* Allocate space for the name. */ - if (!(var->name = malloc((strlen(obj_name) + 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - - strcpy(var->name, obj_name); - } - - var->hash = hash_fast(var->name, strlen(var->name)); - /* Find out what filters are applied to this HDF5 dataset, - * fletcher32, deflate, and/or shuffle. All other filters are - * ignored. */ - if ((propid = H5Dget_create_plist(datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif /* EXTRA_TESTS */ - - /* Get the chunking info for non-scalar vars. */ - if ((layout = H5Pget_layout(propid)) < -1) - BAIL(NC_EHDFERR); - if (layout == H5D_CHUNKED) - { - if (H5Pget_chunk(propid, NC_MAX_VAR_DIMS, chunksize) < 0) - BAIL(NC_EHDFERR); - if (!(var->chunksizes = malloc(var->ndims * sizeof(size_t)))) - BAIL(NC_ENOMEM); - for (d = 0; d < var->ndims; d++) - var->chunksizes[d] = chunksize[d]; - } - else if (layout == H5D_CONTIGUOUS || layout == H5D_COMPACT) - var->contiguous = NC_TRUE; - - /* The possible values of filter (which is just an int) can be - * found in H5Zpublic.h. */ - if ((num_filters = H5Pget_nfilters(propid)) < 0) - BAIL(NC_EHDFERR); - for (f = 0; f < num_filters; f++) - { - if ((filter = H5Pget_filter2(propid, f, NULL, &cd_nelems, - cd_values, 0, NULL, NULL)) < 0) - BAIL(NC_EHDFERR); - switch (filter) - { - case H5Z_FILTER_SHUFFLE: - var->shuffle = NC_TRUE; - break; - - case H5Z_FILTER_FLETCHER32: - var->fletcher32 = NC_TRUE; - break; - - case H5Z_FILTER_DEFLATE: - var->deflate = NC_TRUE; - if (cd_nelems != CD_NELEMS_ZLIB || cd_values[0] > MAX_DEFLATE_LEVEL) - BAIL(NC_EHDFERR); - var->deflate_level = cd_values[0]; - break; - - case H5Z_FILTER_SZIP: - var->szip = NC_TRUE; - if (cd_nelems != CD_NELEMS_SZIP) - BAIL(NC_EHDFERR); - var->options_mask = cd_values[0]; - var->pixels_per_block = cd_values[1]; - break; - - default: - LOG((1, "Yikes! Unknown filter type found on dataset!")); - break; - } - } - - /* Learn all about the type of this variable. */ - if ((retval = get_type_info2(grp->nc4_info, datasetid, - &var->type_info))) - BAIL(retval); - - /* Indicate that the variable has a pointer to the type */ - var->type_info->rc++; - - /* Is there a fill value associated with this dataset? */ - if (H5Pfill_value_defined(propid, &fill_status) < 0) - BAIL(NC_EHDFERR); - - /* Get the fill value, if there is one defined. */ - if (fill_status == H5D_FILL_VALUE_USER_DEFINED) - { - /* Allocate space to hold the fill value. */ - if (!var->fill_value) - { - if (var->type_info->nc_type_class == NC_VLEN) - { - if (!(var->fill_value = malloc(sizeof(nc_vlen_t)))) - BAIL(NC_ENOMEM); - } - else if (var->type_info->nc_type_class == NC_STRING) - { - if (!(var->fill_value = malloc(sizeof(char *)))) - BAIL(NC_ENOMEM); - } - else - { - assert(var->type_info->size); - if (!(var->fill_value = malloc(var->type_info->size))) - BAIL(NC_ENOMEM); - } - } - - /* Get the fill value from the HDF5 property lust. */ - if (H5Pget_fill_value(propid, var->type_info->native_hdf_typeid, - var->fill_value) < 0) - BAIL(NC_EHDFERR); - } - else - var->no_fill = NC_TRUE; - - /* If it's a scale, mark it as such. */ - if (dim) - { - assert(ndims); - var->dimscale = NC_TRUE; - if (var->ndims > 1) - { - if ((retval = read_coord_dimids(grp, var))) - BAIL(retval); - } - else - { - /* sanity check */ - assert(0 == strcmp(var->name, dim->name)); - - var->dimids[0] = dim->dimid; - var->dim[0] = dim; - } - dim->coord_var = var; - } - /* If this is not a scale, but has scales, iterate - * through them. (i.e. this is a variable that is not a - * coordinate variable) */ - else - { - int num_scales = 0; - - /* Find out how many scales are attached to this - * dataset. H5DSget_num_scales returns an error if there are no - * scales, so convert a negative return value to zero. */ - num_scales = H5DSget_num_scales(datasetid, 0); - if (num_scales < 0) - num_scales = 0; - - if (num_scales && ndims) - { - /* Allocate space to remember whether the dimscale has been attached - * for each dimension. */ - if (NULL == (var->dimscale_attached = calloc(ndims, sizeof(nc_bool_t)))) - BAIL(NC_ENOMEM); - - /* Store id information allowing us to match hdf5 - * dimscales to netcdf dimensions. */ - if (NULL == (var->dimscale_hdf5_objids = malloc(ndims * sizeof(struct hdf5_objid)))) - BAIL(NC_ENOMEM); - for (d = 0; d < var->ndims; d++) - { - if (H5DSiterate_scales(var->hdf_datasetid, d, NULL, dimscale_visitor, - &(var->dimscale_hdf5_objids[d])) < 0) - BAIL(NC_EHDFERR); - var->dimscale_attached[d] = NC_TRUE; - } - } - } - - /* Now read all the attributes of this variable, ignoring the - ones that hold HDF5 dimension scale information. */ - if ((natts = H5Aget_num_attrs(var->hdf_datasetid)) < 0) - BAIL(NC_EATTMETA); - for (a = 0; a < natts; a++) - { - /* Close the attribute and try to move on with our - * lives. Like bits through the network port, so - * flows the Days of Our Lives! */ - if (attid && H5Aclose(attid) < 0) - BAIL(NC_EHDFERR); - - /* Open the att and get its name. */ - if ((attid = H5Aopen_idx(var->hdf_datasetid, (unsigned int)a)) < 0) - BAIL(NC_EATTMETA); - if (H5Aget_name(attid, NC_MAX_HDF5_NAME, att_name) < 0) - BAIL(NC_EATTMETA); - LOG((4, "%s:: a %d att_name %s", __func__, a, att_name)); - - /* Should we ignore this attribute? */ - for(reserved=NC_RESERVED_VARATT_LIST;*reserved;reserved++) { - if (strcmp(att_name, *reserved)==0) break; - } - if(*reserved == NULL) { - /* Add to the end of the list of atts for this var. */ - if ((retval = nc4_att_list_add(&var->att, &att))) - BAIL(retval); - - /* Fill in the information we know. */ - att->attnum = var->natts++; - if (!(att->name = strdup(att_name))) - BAIL(NC_ENOMEM); - - /* Read the rest of the info about the att, - * including its values. */ - if ((retval = read_hdf5_att(grp, attid, att))) - { - if (NC_EBADTYPID == retval) - { - if ((retval = nc4_att_list_del(&var->att, att))) - BAIL(retval); - continue; - } - else - BAIL(retval); - } - - att->created = NC_TRUE; - } /* endif not HDF5 att */ - } /* next attribute */ - - /* Is this a deflated variable with a chunksize greater than the - * current cache size? */ - if ((retval = nc4_adjust_var_cache(grp, var))) - BAIL(retval); - -exit: - if (retval) - { - if (incr_id_rc && H5Idec_ref(datasetid) < 0) - BAIL2(NC_EHDFERR); - if (var && nc4_var_list_del(&grp->var, var)) - BAIL2(NC_EHDFERR); - } - if (access_pid && H5Pclose(access_pid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (propid > 0 && H5Pclose(propid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (attid > 0 && H5Aclose(attid) < 0) - BAIL2(NC_EHDFERR); - return retval; -} - -/* This function is called by nc4_rec_read_metadata to read all the - * group level attributes (the NC_GLOBAL atts for this group). */ -static int -read_grp_atts(NC_GRP_INFO_T *grp) -{ - hid_t attid = -1; - hsize_t num_obj, i; - NC_ATT_INFO_T *att; - NC_TYPE_INFO_T *type; - char obj_name[NC_MAX_HDF5_NAME + 1]; - int max_len; - int retval = NC_NOERR; - int hidden = 0; - - num_obj = H5Aget_num_attrs(grp->hdf_grpid); - for (i = 0; i < num_obj; i++) - { - if ((attid = H5Aopen_idx(grp->hdf_grpid, (unsigned int)i)) < 0) - BAIL(NC_EATTMETA); - if (H5Aget_name(attid, NC_MAX_NAME + 1, obj_name) < 0) - BAIL(NC_EATTMETA); - LOG((3, "reading attribute of _netCDF group, named %s", obj_name)); - - /* See if this a hidden, global attribute */ - if(grp->nc4_info->root_grp == grp) { - const char** reserved = NC_RESERVED_ATT_LIST; - hidden = 0; - for(;*reserved;reserved++) { - if(strcmp(*reserved,obj_name)==0) { - hidden = 1; - break; - } - } - } - - /* This may be an attribute telling us that strict netcdf-3 - * rules are in effect. If so, we will make note of the fact, - * but not add this attribute to the metadata. It's not a user - * attribute, but an internal netcdf-4 one. */ - if(strcmp(obj_name, NC3_STRICT_ATT_NAME)==0) - grp->nc4_info->cmode |= NC_CLASSIC_MODEL; - else if(!hidden) { - /* Add an att struct at the end of the list, and then go to it. */ - if ((retval = nc4_att_list_add(&grp->att, &att))) - BAIL(retval); - - /* Add the info about this attribute. */ - max_len = strlen(obj_name) > NC_MAX_NAME ? NC_MAX_NAME : strlen(obj_name); - if (!(att->name = malloc((max_len + 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - strncpy(att->name, obj_name, max_len); - att->name[max_len] = 0; - att->attnum = grp->natts++; - retval = read_hdf5_att(grp, attid, att); - if(retval == NC_EBADTYPID) { - if((retval = nc4_att_list_del(&grp->att, att))) - BAIL(retval); - } else if(retval) { - BAIL(retval); - } else { - att->created = NC_TRUE; - if ((retval = nc4_find_type(grp->nc4_info, att->nc_typeid, &type))) - BAIL(retval); - } - } - /* Unconditionally close the open attribute */ - H5Aclose(attid); - attid = -1; - } - -exit: - if (attid > 0) { - if(H5Aclose(attid) < 0) - BAIL2(NC_EHDFERR); - } - return retval; -} - -/* This function is called when nc4_rec_read_metadata encounters an HDF5 - * dataset when reading a file. */ -static int -read_dataset(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name, - const H5G_stat_t *statbuf) -{ - NC_DIM_INFO_T *dim = NULL; /* Dimension created for scales */ - hid_t spaceid = 0; - int ndims; - htri_t is_scale; - int retval = NC_NOERR; - - /* Get the dimension information for this dataset. */ - if ((spaceid = H5Dget_space(datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if ((ndims = H5Sget_simple_extent_ndims(spaceid)) < 0) - BAIL(NC_EHDFERR); - - /* Is this a dimscale? */ - if ((is_scale = H5DSis_scale(datasetid)) < 0) - BAIL(NC_EHDFERR); - if (is_scale) - { - hsize_t dims[H5S_MAX_RANK]; - hsize_t max_dims[H5S_MAX_RANK]; - - /* Query the scale's size & max. size */ - if (H5Sget_simple_extent_dims(spaceid, dims, max_dims) < 0) - BAIL(NC_EHDFERR); - - /* Read the scale information. */ - if ((retval = read_scale(grp, datasetid, obj_name, statbuf, dims[0], - max_dims[0], &dim))) - BAIL(retval); - } - - /* Add a var to the linked list, and get its metadata, - * unless this is one of those funny dimscales that are a - * dimension in netCDF but not a variable. (Spooky!) */ - if (NULL == dim || (dim && !dim->hdf_dimscaleid)) - if ((retval = read_var(grp, datasetid, obj_name, ndims, dim))) - BAIL(retval); - -exit: - if (spaceid && H5Sclose(spaceid) <0) - BAIL2(retval); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - - return retval; -} - -static int -nc4_rec_read_metadata_cb_list_add(NC4_rec_read_metadata_obj_info_t **head, - NC4_rec_read_metadata_obj_info_t **tail, - const NC4_rec_read_metadata_obj_info_t *oinfo) -{ - NC4_rec_read_metadata_obj_info_t *new_oinfo; /* Pointer to info for object */ - - /* Allocate memory for the object's info */ - if (!(new_oinfo = calloc(1, sizeof(*new_oinfo)))) - return NC_ENOMEM; - - /* Make a copy of the object's info */ - memcpy(new_oinfo, oinfo, sizeof(*oinfo)); - - if (*tail) - { - assert(*head); - (*tail)->next = new_oinfo; - *tail = new_oinfo; - } - else - { - assert(NULL == *head); - *head = *tail = new_oinfo; - } - - return (NC_NOERR); -} - -static int -nc4_rec_read_metadata_cb(hid_t grpid, const char *name, const H5L_info_t *info, - void *_op_data) -{ - NC4_rec_read_metadata_ud_t *udata = (NC4_rec_read_metadata_ud_t *)_op_data; /* Pointer to user data for callback */ - NC4_rec_read_metadata_obj_info_t oinfo; /* Pointer to info for object */ - int retval = H5_ITER_CONT; - - /* Reset the memory for the object's info */ - memset(&oinfo, 0, sizeof(oinfo)); - - /* Open this critter. */ - if ((oinfo.oid = H5Oopen(grpid, name, H5P_DEFAULT)) < 0) - BAIL(H5_ITER_ERROR); - - /* Get info about the object.*/ - if (H5Gget_objinfo(oinfo.oid, ".", 1, &oinfo.statbuf) < 0) - BAIL(H5_ITER_ERROR); - - strncpy(oinfo.oname, name, NC_MAX_NAME); - - /* Add object to list, for later */ - switch(oinfo.statbuf.type) - { - case H5G_GROUP: - LOG((3, "found group %s", oinfo.oname)); - - /* Defer descending into child group immediately, so that the types - * in the current group can be processed and be ready for use by - * vars in the child group(s). - */ - if (nc4_rec_read_metadata_cb_list_add(&udata->grps_head, &udata->grps_tail, &oinfo)) - BAIL(H5_ITER_ERROR); - break; - - case H5G_DATASET: - LOG((3, "found dataset %s", oinfo.oname)); - - /* Learn all about this dataset, which may be a dimscale - * (i.e. dimension metadata), or real data. */ - if ((retval = read_dataset(udata->grp, oinfo.oid, oinfo.oname, &oinfo.statbuf))) - { - /* Allow NC_EBADTYPID to transparently skip over datasets - * which have a datatype that netCDF-4 doesn't undertand - * (currently), but break out of iteration for other - * errors. - */ - if(NC_EBADTYPID != retval) - BAIL(H5_ITER_ERROR); - else - retval = H5_ITER_CONT; - } - - /* Close the object */ - if (H5Oclose(oinfo.oid) < 0) - BAIL(H5_ITER_ERROR); - break; - - case H5G_TYPE: - LOG((3, "found datatype %s", oinfo.oname)); - - /* Process the named datatype */ - if (read_type(udata->grp, oinfo.oid, oinfo.oname)) - BAIL(H5_ITER_ERROR); - - /* Close the object */ - if (H5Oclose(oinfo.oid) < 0) - BAIL(H5_ITER_ERROR); - break; - - default: - LOG((0, "Unknown object class %d in %s!", oinfo.statbuf.type, __func__)); - BAIL(H5_ITER_ERROR); - } - -exit: - if (retval) - { - if (oinfo.oid > 0 && H5Oclose(oinfo.oid) < 0) - BAIL2(H5_ITER_ERROR); - } - - return (retval); -} - -/* This is the main function to recursively read all the metadata for the file. */ -/* The links in the 'grp' are iterated over and added to the file's metadata - * information. Note that child groups are not immediately processed, but - * are deferred until all the other links in the group are handled (so that - * vars in the child groups are guaranteed to have types that they use in - * a parent group in place). - */ -static int -nc4_rec_read_metadata(NC_GRP_INFO_T *grp) -{ - NC4_rec_read_metadata_ud_t udata; /* User data for iteration */ - NC4_rec_read_metadata_obj_info_t *oinfo; /* Pointer to info for object */ - hsize_t idx=0; - hid_t pid = 0; - unsigned crt_order_flags = 0; - H5_index_t iter_index; - int retval = NC_NOERR; /* everything worked! */ - - assert(grp && grp->name); - LOG((3, "%s: grp->name %s", __func__, grp->name)); - - /* Portably initialize user data for later */ - memset(&udata, 0, sizeof(udata)); - - /* Open this HDF5 group and retain its grpid. It will remain open - * with HDF5 until this file is nc_closed. */ - if (!grp->hdf_grpid) - { - if (grp->parent) - { - if ((grp->hdf_grpid = H5Gopen2(grp->parent->hdf_grpid, - grp->name, H5P_DEFAULT)) < 0) - BAIL(NC_EHDFERR); - } - else - { - if ((grp->hdf_grpid = H5Gopen2(grp->nc4_info->hdfid, - "/", H5P_DEFAULT)) < 0) - BAIL(NC_EHDFERR); - } - } - assert(grp->hdf_grpid > 0); - - /* Get the group creation flags, to check for creation ordering */ - pid = H5Gget_create_plist(grp->hdf_grpid); - H5Pget_link_creation_order(pid, &crt_order_flags); - if (H5Pclose(pid) < 0) - BAIL(NC_EHDFERR); - - /* Set the iteration index to use */ - if (crt_order_flags & H5P_CRT_ORDER_TRACKED) - iter_index = H5_INDEX_CRT_ORDER; - else - { - NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info; - - /* Without creation ordering, file must be read-only. */ - if (!h5->no_write) - BAIL(NC_ECANTWRITE); - - iter_index = H5_INDEX_NAME; - } - - /* Set user data for iteration */ - udata.grp = grp; - - /* Iterate over links in this group, building lists for the types, - * datasets and groups encountered - */ - if (H5Literate(grp->hdf_grpid, iter_index, H5_ITER_INC, &idx, - nc4_rec_read_metadata_cb, (void *)&udata) < 0) - BAIL(NC_EHDFERR); - - /* Process the child groups found */ - /* (Deferred until now, so that the types in the current group get - * processed and are available for vars in the child group(s).) - */ - for (oinfo = udata.grps_head; oinfo; oinfo = udata.grps_head) - { - NC_GRP_INFO_T *child_grp; - NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info; - - /* Add group to file's hierarchy */ - if ((retval = nc4_grp_list_add(&(grp->children), h5->next_nc_grpid++, - grp, grp->nc4_info->controller, oinfo->oname, &child_grp))) - BAIL(retval); - - /* Recursively read the child group's metadata */ - if ((retval = nc4_rec_read_metadata(child_grp))) - BAIL(retval); - - /* Close the object */ - if (H5Oclose(oinfo->oid) < 0) - BAIL(NC_EHDFERR); - - /* Advance to next node, free current node */ - udata.grps_head = oinfo->next; - free(oinfo); - } - - /* Scan the group for global (i.e. group-level) attributes. */ - if ((retval = read_grp_atts(grp))) - BAIL(retval); - -exit: - /* Clean up local information on error, if anything remains */ - if (retval) - { - for (oinfo = udata.grps_head; oinfo; oinfo = udata.grps_head) - { - /* Close the object */ - if (H5Oclose(oinfo->oid) < 0) - BAIL2(NC_EHDFERR); - - /* Advance to next node, free current node */ - udata.grps_head = oinfo->next; - free(oinfo); - } - } - - return retval; -} - -/* Open a netcdf-4 file. Things have already been kicked off in - * ncfunc.c in nc_open, but here the netCDF-4 part of opening a file - * is handled. */ -static int -nc4_open_file(const char *path, int mode, void* parameters, NC *nc) -{ - hid_t fapl_id = H5P_DEFAULT; - unsigned flags = (mode & NC_WRITE) ? - H5F_ACC_RDWR : H5F_ACC_RDONLY; - int retval; - NC_HDF5_FILE_INFO_T* nc4_info = NULL; - int inmemory = ((mode & NC_INMEMORY) == NC_INMEMORY); -#ifdef USE_DISKLESS - NC_MEM_INFO* meminfo = (NC_MEM_INFO*)parameters; -#endif -#ifdef USE_PARALLEL4 - NC_MPI_INFO* mpiinfo = (NC_MPI_INFO*)parameters; - int comm_duped = 0; /* Whether the MPI Communicator was duplicated */ - int info_duped = 0; /* Whether the MPI Info object was duplicated */ -#endif /* !USE_PARALLEL4 */ - - LOG((3, "%s: path %s mode %d", __func__, path, mode)); - assert(path && nc); - - /* Add necessary structs to hold netcdf-4 file data. */ - if ((retval = nc4_nc4f_list_add(nc, path, mode))) - BAIL(retval); - nc4_info = NC4_DATA(nc); - assert(nc4_info && nc4_info->root_grp); - - /* Need this access plist to control how HDF5 handles open objects - * on file close. (Setting H5F_CLOSE_SEMI will cause H5Fclose to - * fail if there are any open objects in the file. */ - if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) - BAIL(NC_EHDFERR); - -#ifdef EXTRA_TESTS - num_plists++; -#endif -#ifdef EXTRA_TESTS - if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_SEMI)) - BAIL(NC_EHDFERR); -#else - if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_STRONG)) - BAIL(NC_EHDFERR); -#endif - -#ifdef USE_PARALLEL4 - /* If this is a parallel file create, set up the file creation - property list. */ - if (mode & NC_MPIIO || mode & NC_MPIPOSIX) - { - nc4_info->parallel = NC_TRUE; - if (mode & NC_MPIIO) /* MPI/IO */ - { - LOG((4, "opening parallel file with MPI/IO")); - if (H5Pset_fapl_mpio(fapl_id, mpiinfo->comm, mpiinfo->info) < 0) - BAIL(NC_EPARINIT); - } -#ifdef USE_PARALLEL_POSIX - else /* MPI/POSIX */ - { - LOG((4, "opening parallel file with MPI/posix")); - if (H5Pset_fapl_mpiposix(fapl_id, mpiinfo->comm, 0) < 0) - BAIL(NC_EPARINIT); - } -#else /* USE_PARALLEL_POSIX */ - /* Should not happen! Code in NC4_create/NC4_open should alias the - * NC_MPIPOSIX flag to NC_MPIIO, if the MPI-POSIX VFD is not - * available in HDF5. -QAK - */ - else /* MPI/POSIX */ - BAIL(NC_EPARINIT); -#endif /* USE_PARALLEL_POSIX */ - - /* Keep copies of the MPI Comm & Info objects */ - if (MPI_SUCCESS != MPI_Comm_dup(mpiinfo->comm, &nc4_info->comm)) - BAIL(NC_EMPI); - comm_duped++; - if (MPI_INFO_NULL != mpiinfo->info) - { - if (MPI_SUCCESS != MPI_Info_dup(mpiinfo->info, &nc4_info->info)) - BAIL(NC_EMPI); - info_duped++; - } - else - { - /* No dup, just copy it. */ - nc4_info->info = mpiinfo->info; - } - } -#else /* only set cache for non-parallel. */ - if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size, - nc4_chunk_cache_preemption) < 0) - BAIL(NC_EHDFERR); - LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f", - __func__, nc4_chunk_cache_size, nc4_chunk_cache_nelems, nc4_chunk_cache_preemption)); -#endif /* USE_PARALLEL4 */ - - /* The NetCDF-3.x prototype contains an mode option NC_SHARE for - multiple processes accessing the dataset concurrently. As there - is no HDF5 equivalent, NC_SHARE is treated as NC_NOWRITE. */ - if(inmemory) { - if((nc4_info->hdfid = H5LTopen_file_image(meminfo->memory,meminfo->size, - H5LT_FILE_IMAGE_DONT_COPY|H5LT_FILE_IMAGE_DONT_RELEASE - )) < 0) - BAIL(NC_EHDFERR); - nc4_info->no_write = NC_TRUE; - } else if ((nc4_info->hdfid = H5Fopen(path, flags, fapl_id)) < 0) - BAIL(NC_EHDFERR); - - /* Does the mode specify that this file is read-only? */ - if ((mode & NC_WRITE) == 0) - nc4_info->no_write = NC_TRUE; - - /* Now read in all the metadata. Some types and dimscale - * information may be difficult to resolve here, if, for example, a - * dataset of user-defined type is encountered before the - * definition of that type. */ - if ((retval = nc4_rec_read_metadata(nc4_info->root_grp))) - BAIL(retval); - - /* Now figure out which netCDF dims are indicated by the dimscale - * information. */ - if ((retval = nc4_rec_match_dimscales(nc4_info->root_grp))) - BAIL(retval); - -#ifdef LOGGING - /* This will print out the names, types, lens, etc of the vars and - atts in the file, if the logging level is 2 or greater. */ - log_metadata_nc(nc); -#endif - - /* Close the property list. */ - if (H5Pclose(fapl_id) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - - NC4_get_fileinfo(nc4_info,NULL); - - return NC_NOERR; - -exit: -#ifdef USE_PARALLEL4 - if (comm_duped) MPI_Comm_free(&nc4_info->comm); - if (info_duped) MPI_Info_free(&nc4_info->info); -#endif -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (fapl_id != H5P_DEFAULT) H5Pclose(fapl_id); - if (!nc4_info) return retval; - close_netcdf4_file(nc4_info,1); /* treat like abort*/ - return retval; -} - -#ifdef USE_HDF4 -/*! Given an HDF4 type, set a pointer to netcdf type. - * - * Given an HDF4 type, set a pointer to a netcdf type. - * See http://www.hdfgroup.org/training/HDFtraining/UsersGuide/Fundmtls.fm3.html - * for more information re: HDF4 types. - * - * \param NC_HDF5_FILE_INFO_T* Pointer to h5 - * \param int32 TypeID for hdf4 datatype. - * \param nc_type* Pointer to netcdf type, where result will be stored. - * \param NC_TYPE_INFO_T* (Optiona) Type info for the variable. - * \return Error code, 0 on success. - * - */ -static int -get_netcdf_type_from_hdf4(NC_HDF5_FILE_INFO_T *h5, int32 hdf4_typeid, - nc_type *xtype, NC_TYPE_INFO_T *type_info) -{ - int t = 0; - - /* Added this variable in the course of fixing NCF-332. - * Prior to the fix, all data types were assigned - * NC_ENDIAN_BIG, so I am preserving that here for now. - * Not sure why it wouldn't be NC_ENDIAN_NATIVE, although - * I can hazard a guess or two. - */ - - int endianness = NC_ENDIAN_BIG; - assert(h5 && xtype); - - switch(hdf4_typeid) - { - case DFNT_CHAR: - *xtype = NC_CHAR; - t = 0; - break; - case DFNT_UCHAR: - case DFNT_UINT8: - *xtype = NC_UBYTE; - t = 6; - break; - case DFNT_LUINT8: - *xtype = NC_UBYTE; - t = 6; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_INT8: - *xtype = NC_BYTE; - t = 1; - break; - case DFNT_LINT8: - *xtype = NC_BYTE; - t = 1; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_INT16: - *xtype = NC_SHORT; - t = 2; - break; - case DFNT_LINT16: - *xtype = NC_SHORT; - t = 2; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_UINT16: - *xtype = NC_USHORT; - t = 7; - break; - case DFNT_LUINT16: - *xtype = NC_USHORT; - t = 7; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_INT32: - *xtype = NC_INT; - t = 3; - break; - case DFNT_LINT32: - *xtype = NC_INT; - t = 3; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_UINT32: - *xtype = NC_UINT; - t = 8; - break; - case DFNT_LUINT32: - *xtype = NC_UINT; - t = 8; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_FLOAT32: - *xtype = NC_FLOAT; - t = 4; - break; - case DFNT_LFLOAT32: - *xtype = NC_FLOAT; - t = 4; - endianness = NC_ENDIAN_LITTLE; - break; - case DFNT_FLOAT64: - *xtype = NC_DOUBLE; - t = 5; - break; - case DFNT_LFLOAT64: - *xtype = NC_DOUBLE; - t = 5; - endianness = NC_ENDIAN_LITTLE; - break; - default: - *xtype = NC_NAT; - return NC_EBADTYPID; - } - - if (type_info) - { - if (hdf4_typeid == DFNT_FLOAT32) - type_info->nc_type_class = NC_FLOAT; - else if (hdf4_typeid == DFNT_FLOAT64) - type_info->nc_type_class = NC_DOUBLE; - else if (hdf4_typeid == DFNT_CHAR) - type_info->nc_type_class = NC_STRING; - else - type_info->nc_type_class = NC_INT; - type_info->endianness = endianness; - type_info->nc_typeid = *xtype; - type_info->size = nc_type_size_g[t]; - if (!(type_info->name = strdup(nc_type_name_g[t]))) - return NC_ENOMEM; - } - - return NC_NOERR; -} - -/* Open a HDF4 file. Things have already been kicked off in nc_open, - * but here the netCDF-4 part of opening a file is handled. */ -static int -nc4_open_hdf4_file(const char *path, int mode, NC *nc) -{ - NC_HDF5_FILE_INFO_T *h5; - NC_GRP_INFO_T *grp; - NC_ATT_INFO_T *att; - int32 num_datasets, num_gatts; - int32 rank; - int v, d, a; - int retval; - NC_HDF5_FILE_INFO_T* nc4_info = NULL; - - LOG((3, "%s: path %s mode %d", __func__, path, mode)); - assert(path && nc); - - /* Must be read-only access to hdf4 files. */ - if (mode & NC_WRITE) - return NC_EINVAL; - - /* Add necessary structs to hold netcdf-4 file data. */ - if ((retval = nc4_nc4f_list_add(nc, path, mode))) - return retval; - nc4_info = NC4_DATA(nc); - assert(nc4_info && nc4_info->root_grp); - h5 = nc4_info; - h5->hdf4 = NC_TRUE; - grp = h5->root_grp; - h5->no_write = NC_TRUE; - - /* Open the file and initialize SD interface. */ - if ((h5->sdid = SDstart(path, DFACC_READ)) == FAIL) - return NC_EHDFERR; - - /* Learn how many datasets and global atts we have. */ - if (SDfileinfo(h5->sdid, &num_datasets, &num_gatts)) - return NC_EHDFERR; - - /* Read the atts. */ - for (a = 0; a < num_gatts; a++) - { - int32 att_data_type, att_count; - size_t att_type_size; - - /* Add to the end of the list of atts for this var. */ - if ((retval = nc4_att_list_add(&h5->root_grp->att, &att))) - return retval; - att->attnum = grp->natts++; - att->created = NC_TRUE; - - /* Learn about this attribute. */ - if (!(att->name = malloc(NC_MAX_HDF4_NAME * sizeof(char)))) - return NC_ENOMEM; - if (SDattrinfo(h5->sdid, a, att->name, &att_data_type, &att_count)) - return NC_EATTMETA; - if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type, - &att->nc_typeid, NULL))) - return retval; - att->len = att_count; - - /* Allocate memory to hold the data. */ - if ((retval = nc4_get_typelen_mem(h5, att->nc_typeid, 0, &att_type_size))) - return retval; - if (!(att->data = malloc(att_type_size * att->len))) - return NC_ENOMEM; - - /* Read the data. */ - if (SDreadattr(h5->sdid, a, att->data)) - return NC_EHDFERR; - } - - /* Read each dataset. */ - for (v = 0; v < num_datasets; v++) - { - NC_VAR_INFO_T *var; - int32 data_type, num_atts; - /* Problem: Number of dims is returned by the call that requires - a pre-allocated array, 'dimsize'. - From SDS_SD website: - http://www.hdfgroup.org/training/HDFtraining/UsersGuide/SDS_SD.fm3.html - The maximum rank is 32, or MAX_VAR_DIMS (as defined in netcdf.h). - - int32 dimsize[MAX_VAR_DIMS]; - */ - int32 *dimsize = NULL; - size_t var_type_size; - int a; - - /* Add a variable to the end of the group's var list. */ - if ((retval = nc4_var_list_add(&grp->var, &var))) - return retval; - - var->varid = grp->nvars++; - var->created = NC_TRUE; - var->written_to = NC_TRUE; - - /* Open this dataset in HDF4 file. */ - if ((var->sdsid = SDselect(h5->sdid, v)) == FAIL) - return NC_EVARMETA; - - /* Get shape, name, type, and attribute info about this dataset. */ - if (!(var->name = malloc(NC_MAX_HDF4_NAME + 1))) - return NC_ENOMEM; - - /* Invoke SDgetInfo with null dimsize to get rank. */ - if (SDgetinfo(var->sdsid, var->name, &rank, NULL, &data_type, &num_atts)) - return NC_EVARMETA; - - var->hash = hash_fast(var->name, strlen(var->name)); - - if(!(dimsize = (int32*)malloc(sizeof(int32)*rank))) - return NC_ENOMEM; - - if (SDgetinfo(var->sdsid, var->name, &rank, dimsize, &data_type, &num_atts)) { - if(dimsize) free(dimsize); - return NC_EVARMETA; - } - - var->ndims = rank; - var->hdf4_data_type = data_type; - - /* Fill special type_info struct for variable type information. */ - if (!(var->type_info = calloc(1, sizeof(NC_TYPE_INFO_T)))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - - if ((retval = get_netcdf_type_from_hdf4(h5, data_type, &var->type_info->nc_typeid, var->type_info))) { - if(dimsize) free(dimsize); - return retval; - } - - /* Indicate that the variable has a pointer to the type */ - var->type_info->rc++; - - if ((retval = nc4_get_typelen_mem(h5, var->type_info->nc_typeid, 0, &var_type_size))) { - if(dimsize) free(dimsize); - return retval; - } - - var->type_info->size = var_type_size; - LOG((3, "reading HDF4 dataset %s, rank %d netCDF type %d", var->name, - rank, var->type_info->nc_typeid)); - - /* Get the fill value. */ - if (!(var->fill_value = malloc(var_type_size))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - - if (SDgetfillvalue(var->sdsid, var->fill_value)) - { - /* Whoops! No fill value! */ - free(var->fill_value); - var->fill_value = NULL; - } - - /* Allocate storage for dimension info in this variable. */ - if (var->ndims) - { - if (!(var->dim = malloc(sizeof(NC_DIM_INFO_T *) * var->ndims))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - - if (!(var->dimids = malloc(sizeof(int) * var->ndims))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - } - - - /* Find its dimensions. */ - for (d = 0; d < var->ndims; d++) - { - int32 dimid, dim_len, dim_data_type, dim_num_attrs; - char dim_name[NC_MAX_NAME + 1]; - NC_DIM_INFO_T *dim; - - if ((dimid = SDgetdimid(var->sdsid, d)) == FAIL) { - if(dimsize) free(dimsize); - return NC_EDIMMETA; - } - if (SDdiminfo(dimid, dim_name, &dim_len, &dim_data_type, - &dim_num_attrs)) - { - if(dimsize) free(dimsize); - return NC_EDIMMETA; - } - - /* Do we already have this dimension? HDF4 explicitly uses - * the name to tell. */ - for (dim = grp->dim; dim; dim = dim->l.next) - if (!strcmp(dim->name, dim_name)) - break; - - /* If we didn't find this dimension, add one. */ - if (!dim) - { - LOG((4, "adding dimension %s for HDF4 dataset %s", - dim_name, var->name)); - if ((retval = nc4_dim_list_add(&grp->dim, &dim))) - return retval; - grp->ndims++; - dim->dimid = grp->nc4_info->next_dimid++; - if (strlen(dim_name) > NC_MAX_HDF4_NAME) - return NC_EMAXNAME; - if (!(dim->name = strdup(dim_name))) - return NC_ENOMEM; - if (dim_len) - dim->len = dim_len; - else - dim->len = *dimsize; - dim->hash = hash_fast(dim_name, strlen(dim_name)); - } - - /* Tell the variable the id of this dimension. */ - var->dimids[d] = dim->dimid; - var->dim[d] = dim; - } - - /* Read the atts. */ - for (a = 0; a < num_atts; a++) - { - int32 att_data_type, att_count; - size_t att_type_size; - - /* Add to the end of the list of atts for this var. */ - if ((retval = nc4_att_list_add(&var->att, &att))) { - if(dimsize) free(dimsize); - return retval; - } - att->attnum = var->natts++; - att->created = NC_TRUE; - - /* Learn about this attribute. */ - if (!(att->name = malloc(NC_MAX_HDF4_NAME * sizeof(char)))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - if (SDattrinfo(var->sdsid, a, att->name, &att_data_type, &att_count)) { - if(dimsize) free(dimsize); - return NC_EATTMETA; - } - if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type, - &att->nc_typeid, NULL))) { - if(dimsize) free(dimsize); - return retval; - } - - att->len = att_count; - - /* Allocate memory to hold the data. */ - if ((retval = nc4_get_typelen_mem(h5, att->nc_typeid, 0, &att_type_size))) { - if(dimsize) free(dimsize); - return retval; - } - if (!(att->data = malloc(att_type_size * att->len))) { - if(dimsize) free(dimsize); - return NC_ENOMEM; - } - - /* Read the data. */ - if (SDreadattr(var->sdsid, a, att->data)) { - if(dimsize) free(dimsize); - return NC_EHDFERR; - } - } - if(dimsize) free(dimsize); - - { - /* HDF4 files can be chunked */ - HDF_CHUNK_DEF chunkdefs; - int flag; - if(!SDgetchunkinfo(var->sdsid, &chunkdefs, &flag)) { - if(flag == HDF_NONE) - var->contiguous = NC_TRUE; - else if((flag & HDF_CHUNK) != 0) { - var->contiguous = NC_FALSE; - if (!(var->chunksizes = malloc(var->ndims * sizeof(size_t)))) - return NC_ENOMEM; - for (d = 0; d < var->ndims; d++) { - var->chunksizes[d] = chunkdefs.chunk_lengths[d]; - } - } - } - } - - } /* next var */ - -#ifdef LOGGING - /* This will print out the names, types, lens, etc of the vars and - atts in the file, if the logging level is 2 or greater. */ - log_metadata_nc(h5->root_grp->nc4_info->controller); -#endif - return NC_NOERR; - return NC_ENOTBUILT; -} -#endif /* USE_HDF4 */ - -int -NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp, - int use_parallel, void *parameters, NC_Dispatch *dispatch, NC *nc_file) -{ - int res; - int hdf_file = 0; -#ifdef USE_PARALLEL4 - NC_MPI_INFO mpidfalt = {MPI_COMM_WORLD, MPI_INFO_NULL}; -#endif -#if defined USE_PARALLEL4 || defined USE_HDF4 - int inmemory = ((mode & NC_INMEMORY) == NC_INMEMORY); -#endif - - assert(nc_file && path); - - LOG((1, "%s: path %s mode %d params %x", - __func__, path, mode, parameters)); - -#ifdef USE_PARALLEL4 - if (!inmemory && use_parallel && parameters == NULL) - parameters = &mpidfalt; -#endif /* USE_PARALLEL4 */ - - /* If this is our first file, initialize HDF5. */ - if (!nc4_hdf5_initialized) - nc4_hdf5_initialize(); - - /* Check the mode for validity */ - if((mode & ILLEGAL_OPEN_FLAGS) != 0) - return NC_EINVAL; - - /* Cannot have both */ - if((mode & (NC_MPIIO|NC_MPIPOSIX)) == (NC_MPIIO|NC_MPIPOSIX)) - return NC_EINVAL; - -#ifndef USE_PARALLEL_POSIX -/* If the HDF5 library has been compiled without the MPI-POSIX VFD, alias - * the NC_MPIPOSIX flag to NC_MPIIO. -QAK - */ - if(mode & NC_MPIPOSIX) - { - mode &= ~NC_MPIPOSIX; - mode |= NC_MPIIO; - } -#endif /* USE_PARALLEL_POSIX */ - - /* Figure out if this is a hdf4 or hdf5 file. */ - if ((res = nc_check_for_hdf(path, use_parallel, parameters, &hdf_file))) - return res; - - /* Depending on the type of file, open it. */ - nc_file->int_ncid = nc_file->ext_ncid; - if (hdf_file == NC_HDF5_FILE) - res = nc4_open_file(path, mode, parameters, nc_file); -#ifdef USE_HDF4 - else if (hdf_file == NC_HDF4_FILE && inmemory) - return NC_EDISKLESS; - else if (hdf_file == NC_HDF4_FILE) - res = nc4_open_hdf4_file(path, mode, nc_file); -#endif /* USE_HDF4 */ - else - assert(0); /* should never happen */ - return res; -} - -/* Unfortunately HDF only allows specification of fill value only when - a dataset is created. Whereas in netcdf, you first create the - variable and then (optionally) specify the fill value. To - accomplish this in HDF5 I have to delete the dataset, and recreate - it, with the fill value specified. */ -/* QAK: This looks completely unused in the code. (?) */ -int -NC4_set_fill(int ncid, int fillmode, int *old_modep) -{ - NC *nc; - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((2, "%s: ncid 0x%x fillmode %d", __func__, ncid, fillmode)); - - if (!(nc = nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - assert(nc4_info); - - /* Trying to set fill on a read-only file? You sicken me! */ - if (nc4_info->no_write) - return NC_EPERM; - - /* Did you pass me some weird fillmode? */ - if (fillmode != NC_FILL && fillmode != NC_NOFILL) - return NC_EINVAL; - - /* If the user wants to know, tell him what the old mode was. */ - if (old_modep) - *old_modep = nc4_info->fill_mode; - - nc4_info->fill_mode = fillmode; - - - return NC_NOERR; -} - -/* Put the file back in redef mode. This is done automatically for - * netcdf-4 files, if the user forgets. */ -int -NC4_redef(int ncid) -{ - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((1, "%s: ncid 0x%x", __func__, ncid)); - - /* Find this file's metadata. */ - if (!(nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - assert(nc4_info); - - /* If we're already in define mode, return an error. */ - if (nc4_info->flags & NC_INDEF) - return NC_EINDEFINE; - - /* If the file is read-only, return an error. */ - if (nc4_info->no_write) - return NC_EPERM; - - /* Set define mode. */ - nc4_info->flags |= NC_INDEF; - - /* For nc_abort, we need to remember if we're in define mode as a - redef. */ - nc4_info->redef = NC_TRUE; - - return NC_NOERR; -} - -/* For netcdf-4 files, this just calls nc_enddef, ignoring the extra - * parameters. */ -int -NC4__enddef(int ncid, size_t h_minfree, size_t v_align, - size_t v_minfree, size_t r_align) -{ - if (nc4_find_nc_file(ncid,NULL) == NULL) - return NC_EBADID; - - return NC4_enddef(ncid); -} - -/* Take the file out of define mode. This is called automatically for - * netcdf-4 files, if the user forgets. */ -static int NC4_enddef(int ncid) -{ - NC *nc; - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((1, "%s: ncid 0x%x", __func__, ncid)); - - if (!(nc = nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - assert(nc4_info); - - return nc4_enddef_netcdf4_file(nc4_info); -} - -/* This function will write all changed metadata, and (someday) reread - * all metadata from the file. */ -static int -sync_netcdf4_file(NC_HDF5_FILE_INFO_T *h5) -{ - int retval; - - assert(h5); - LOG((3, "%s", __func__)); - - /* If we're in define mode, that's an error, for strict nc3 rules, - * otherwise, end define mode. */ - if (h5->flags & NC_INDEF) - { - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_EINDEFINE; - - /* Turn define mode off. */ - h5->flags ^= NC_INDEF; - - /* Redef mode needs to be tracked separately for nc_abort. */ - h5->redef = NC_FALSE; - } - -#ifdef LOGGING - /* This will print out the names, types, lens, etc of the vars and - atts in the file, if the logging level is 2 or greater. */ - log_metadata_nc(h5->root_grp->nc4_info->controller); -#endif - - /* Write any metadata that has changed. */ - if (!(h5->cmode & NC_NOWRITE)) - { - nc_bool_t bad_coord_order = NC_FALSE; /* if detected, propagate to all groups to consistently store dimids */ - - if ((retval = nc4_rec_write_groups_types(h5->root_grp))) - return retval; - if ((retval = nc4_rec_detect_need_to_preserve_dimids(h5->root_grp, &bad_coord_order))) - return retval; - if ((retval = nc4_rec_write_metadata(h5->root_grp, bad_coord_order))) - return retval; - } - - if (H5Fflush(h5->hdfid, H5F_SCOPE_GLOBAL) < 0) - return NC_EHDFERR; - - return retval; -} - -/* Flushes all buffers associated with the file, after writing all - changed metadata. This may only be called in data mode. */ -int -NC4_sync(int ncid) -{ - NC *nc; - int retval; - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((2, "%s: ncid 0x%x", __func__, ncid)); - - if (!(nc = nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - assert(nc4_info); - - /* If we're in define mode, we can't sync. */ - if (nc4_info && nc4_info->flags & NC_INDEF) - { - if (nc4_info->cmode & NC_CLASSIC_MODEL) - return NC_EINDEFINE; - if ((retval = NC4_enddef(ncid))) - return retval; - } - - return sync_netcdf4_file(nc4_info); -} - -/* This function will free all allocated metadata memory, and close - the HDF5 file. The group that is passed in must be the root group - of the file. */ -static int -close_netcdf4_file(NC_HDF5_FILE_INFO_T *h5, int abort) -{ - int retval = NC_NOERR; - - assert(h5 && h5->root_grp); - LOG((3, "%s: h5->path %s abort %d", __func__, h5->controller->path, abort)); - - /* According to the docs, always end define mode on close. */ - if (h5->flags & NC_INDEF) - h5->flags ^= NC_INDEF; - - /* Sync the file, unless we're aborting, or this is a read-only - * file. */ - if (!h5->no_write && !abort) - if ((retval = sync_netcdf4_file(h5))) - goto exit; - - /* Delete all the list contents for vars, dims, and atts, in each - * group. */ - if ((retval = nc4_rec_grp_del(&h5->root_grp, h5->root_grp))) - goto exit; - - /* Close hdf file. */ -#ifdef USE_HDF4 - if (h5->hdf4) - { - if (SDend(h5->sdid)) - BAIL_QUIET(NC_EHDFERR); - } - else -#endif /* USE_HDF4 */ - { -#ifdef USE_PARALLEL4 - /* Free the MPI Comm & Info objects, if we opened the file in parallel */ - if(h5->parallel) - { - if(MPI_COMM_NULL != h5->comm) - MPI_Comm_free(&h5->comm); - if(MPI_INFO_NULL != h5->info) - MPI_Info_free(&h5->info); - } -#endif - - if(h5->fileinfo) free(h5->fileinfo); - - if (H5Fclose(h5->hdfid) < 0) - { - int nobjs; - - nobjs = H5Fget_obj_count(h5->hdfid, H5F_OBJ_ALL); - /* Apparently we can get an error even when nobjs == 0 */ - if(nobjs < 0) { - BAIL_QUIET(NC_EHDFERR); - } else if(nobjs > 0) { -#ifdef LOGGING - char msg[1024]; - int logit = 1; - /* If the close doesn't work, probably there are still some HDF5 - * objects open, which means there's a bug in the library. So - * print out some info on to help the poor programmer figure it - * out. */ - snprintf(msg,sizeof(msg),"There are %d HDF5 objects open!", nobjs); -#ifdef LOGOPEN - LOG((0, msg)); -#else - fprintf(stdout,msg); - logit = 0; -#endif - reportopenobjects(logit,h5->hdfid); -#endif - } - } - } -exit: - /* Free the nc4_info struct; above code should have reclaimed - everything else */ - if(h5 != NULL) - free(h5); - return retval; -} - -/* From the netcdf-3 docs: The function nc_abort just closes the - netCDF dataset, if not in define mode. If the dataset is being - created and is still in define mode, the dataset is deleted. If - define mode was entered by a call to nc_redef, the netCDF dataset - is restored to its state before definition mode was entered and the - dataset is closed. */ -int -NC4_abort(int ncid) -{ - NC *nc; - int delete_file = 0; - char path[NC_MAX_NAME + 1]; - int retval = NC_NOERR; - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((2, "%s: ncid 0x%x", __func__, ncid)); - - /* Find metadata for this file. */ - if (!(nc = nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - - assert(nc4_info); - - /* If we're in define mode, but not redefing the file, delete it. */ - if (nc4_info->flags & NC_INDEF && !nc4_info->redef) - { - delete_file++; - strncpy(path, nc->path,NC_MAX_NAME); - } - - /* Free any resources the netcdf-4 library has for this file's - * metadata. */ - if ((retval = close_netcdf4_file(nc4_info, 1))) - return retval; - - /* Delete the file, if we should. */ - if (delete_file) - if (remove(path) < 0) - return NC_ECANTREMOVE; - - return retval; -} - -/* Close the netcdf file, writing any changes first. */ -int -NC4_close(int ncid) -{ - NC_GRP_INFO_T *grp; - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - int retval; - - LOG((1, "%s: ncid 0x%x", __func__, ncid)); - - /* Find our metadata for this file. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(nc && h5 && grp); - - /* This must be the root group. */ - if (grp->parent) - return NC_EBADGRPID; - - /* Call the nc4 close. */ - if ((retval = close_netcdf4_file(grp->nc4_info, 0))) - return retval; - - return NC_NOERR; -} - -/* It's possible for any of these pointers to be NULL, in which case - don't try to figure out that value. */ -int -NC4_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - NC_GRP_INFO_T *grp; - NC_DIM_INFO_T *dim; - NC_ATT_INFO_T *att; - NC_VAR_INFO_T *var; - int retval; - - LOG((2, "%s: ncid 0x%x", __func__, ncid)); - - /* Find file metadata. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5 && grp && nc); - - /* Count the number of dims, vars, and global atts. */ - if (ndimsp) - { - *ndimsp = 0; - for (dim = grp->dim; dim; dim = dim->l.next) - (*ndimsp)++; - } - if (nvarsp) - { - *nvarsp = 0; - for (var = grp->var; var; var= var->l.next) - (*nvarsp)++; - } - if (nattsp) - { - *nattsp = 0; - for (att = grp->att; att; att = att->l.next) - (*nattsp)++; - } - - if (unlimdimidp) - { - /* Default, no unlimited dimension */ - *unlimdimidp = -1; - - /* If there's more than one unlimited dim, which was not possible - with netcdf-3, then only the last unlimited one will be reported - back in xtendimp. */ - /* Note that this code is inconsistent with nc_inq_unlimid() */ - for (dim = grp->dim; dim; dim = dim->l.next) - if (dim->unlimited) - { - *unlimdimidp = dim->dimid; - break; - } - } - - return NC_NOERR; -} - -/* This function will do the enddef stuff for a netcdf-4 file. */ -int -nc4_enddef_netcdf4_file(NC_HDF5_FILE_INFO_T *h5) -{ - assert(h5); - LOG((3, "%s", __func__)); - - /* If we're not in define mode, return an error. */ - if (!(h5->flags & NC_INDEF)) - return NC_ENOTINDEFINE; - - /* Turn define mode off. */ - h5->flags ^= NC_INDEF; - - /* Redef mode needs to be tracked separately for nc_abort. */ - h5->redef = NC_FALSE; - - return sync_netcdf4_file(h5); -} - -#ifdef EXTRA_TESTS -int -nc_exit() -{ - if (num_plists || num_spaces) - return NC_EHDFERR; - - return NC_NOERR; -} -#endif /* EXTRA_TESTS */ - -#ifdef USE_PARALLEL4 -int -nc_use_parallel_enabled() -{ - return 0; -} -#endif /* USE_PARALLEL4 */ diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4grp.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4grp.c deleted file mode 100644 index fa8babfdb7f..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4grp.c +++ /dev/null @@ -1,508 +0,0 @@ -/* -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file handles the nc4 groups. - -Copyright 2005, University Corporation for Atmospheric Research. See -netcdf-4/docs/COPYRIGHT file for copying and redistribution -conditions. - -$Id: nc4grp.c,v 1.44 2010/05/25 17:54:23 dmh Exp $ -*/ - -#include "nc4internal.h" -#include "nc4dispatch.h" - -/* Create a group. It's ncid is returned in the new_ncid pointer. */ -int -NC4_def_grp(int parent_ncid, const char *name, int *new_ncid) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "%s: parent_ncid 0x%x name %s", __func__, parent_ncid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(parent_ncid, &grp, &h5))) - return retval; - if (!h5) - return NC_ENOTNC4; - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - /* Check that this name is not in use as a var, grp, or type. */ - if ((retval = nc4_check_dup_name(grp, norm_name))) - return retval; - - /* No groups in netcdf-3! */ - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_ESTRICTNC3; - - /* If it's not in define mode, switch to define mode. */ - if (!(h5->flags & NC_INDEF)) - if ((retval = NC4_redef(parent_ncid))) - return retval; - - /* Update internal lists to reflect new group. The actual HDF5 - * group creation will be done when metadata is written by a - * sync. */ - if ((retval = nc4_grp_list_add(&(grp->children), h5->next_nc_grpid, - grp, grp->nc4_info->controller, norm_name, NULL))) - return retval; - if (new_ncid) - *new_ncid = grp->nc4_info->controller->ext_ncid | h5->next_nc_grpid; - h5->next_nc_grpid++; - - return NC_NOERR; -} - -/* Rename a group. */ -int -NC4_rename_grp(int grpid, const char *name) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "nc_rename_grp: grpid 0x%x name %s", grpid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(grpid, &grp, &h5))) - return retval; - if (!h5) - return NC_ENOTNC4; - - if (h5->no_write) - return NC_EPERM; /* attempt to write to a read-only file */ - - /* Do not allow renaming the root group */ - if(grp->parent == NULL) - return NC_EBADGRPID; - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - /* Check that this name is not in use as a var, grp, or type. */ - if ((retval = nc4_check_dup_name(grp, norm_name))) - return retval; - - /* If it's not in define mode, switch to define mode. */ - if (!(h5->flags & NC_INDEF)) - if ((retval = NC4_redef(grpid))) - return retval; - - /* Rename the group, if it exists in the file */ - if (grp->hdf_grpid) - { - /* Close the group */ - if (H5Gclose(grp->hdf_grpid) < 0) - return NC_EHDFERR; - grp->hdf_grpid = 0; - - /* Attempt to rename & re-open the group, if the parent group is open */ - if (grp->parent->hdf_grpid) - { - /* Rename the group */ - if (H5Gmove(grp->parent->hdf_grpid, grp->name, name) < 0) - return NC_EHDFERR; - - /* Reopen the group, with the new name */ - if ((grp->hdf_grpid = H5Gopen2(grp->parent->hdf_grpid, name, H5P_DEFAULT)) < 0) - return NC_EHDFERR; - } - } - - /* Give the group its new name in metadata. UTF8 normalization - * has been done. */ - free(grp->name); - if (!(grp->name = malloc((strlen(norm_name) + 1) * sizeof(char)))) - return NC_ENOMEM; - strcpy(grp->name, norm_name); - - return NC_NOERR; -} - -/* Given an ncid and group name (NULL gets root group), return - * the ncid of that group. */ -int -NC4_inq_ncid(int ncid, const char *name, int *grp_ncid) -{ - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "nc_inq_ncid: ncid 0x%x name %s", ncid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* Groups only work with netCDF-4/HDF5 files... */ - if (!h5) - return NC_ENOTNC4; - - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - return retval; - - /* Look through groups for one of this name. */ - for (g = grp->children; g; g = g->l.next) - if (!strcmp(norm_name, g->name)) /* found it! */ - { - if (grp_ncid) - *grp_ncid = grp->nc4_info->controller->ext_ncid | g->nc_grpid; - return NC_NOERR; - } - - /* If we got here, we didn't find the named group. */ - return NC_ENOGRP; -} - -/* Given a location id, return the number of groups it contains, and - * an array of their locids. */ -int -NC4_inq_grps(int ncid, int *numgrps, int *ncids) -{ - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - int num = 0; - int retval; - - LOG((2, "nc_inq_grps: ncid 0x%x", ncid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* For netCDF-3 files, just report zero groups. */ - if (!h5) - { - if (numgrps) - *numgrps = 0; - return NC_NOERR; - } - - /* Count the number of groups in this group. */ - for (g = grp->children; g; g = g->l.next) - { - if (ncids) - { - /* Combine the nc_grpid in a bitwise or with the ext_ncid, - * which allows the returned ncid to carry both file and - * group information. */ - *ncids = g->nc_grpid | g->nc4_info->controller->ext_ncid; - ncids++; - } - num++; - } - - if (numgrps) - *numgrps = num; - - return NC_NOERR; -} - -/* Given locid, find name of group. (Root group is named "/".) */ -int -NC4_inq_grpname(int ncid, char *name) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - int retval; - - LOG((2, "nc_inq_grpname: ncid 0x%x", ncid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - if (name) - { - if (!h5) - strcpy(name, "/"); - else - strcpy(name, grp->name); - } - - return NC_NOERR; -} - -/* Find the full path name to the group represented by ncid. Either - * pointer argument may be NULL; pass a NULL for the third parameter - * to get the length of the full path name. The length will not - * include room for a null pointer. */ -int -NC4_inq_grpname_full(int ncid, size_t *lenp, char *full_name) -{ - char *name, grp_name[NC_MAX_NAME + 1]; - int g, id = ncid, parent_id, *gid; - int i, ret = NC_NOERR; - - /* How many generations? */ - for (g = 0; !NC4_inq_grp_parent(id, &parent_id); g++, id = parent_id) - ; - - /* Allocate storage. */ - if (!(name = malloc((g + 1) * (NC_MAX_NAME + 1) + 1))) - return NC_ENOMEM; - if (!(gid = malloc((g + 1) * sizeof(int)))) - { - free(name); - return NC_ENOMEM; - } - assert(name && gid); - - /* Always start with a "/" for the root group. */ - strcpy(name, "/"); - - /* Get the ncids for all generations. */ - gid[0] = ncid; - for (i = 1; i < g && !ret; i++) - ret = NC4_inq_grp_parent(gid[i - 1], &gid[i]); - - /* Assemble the full name. */ - for (i = g - 1; !ret && i >= 0 && !ret; i--) - { - if ((ret = NC4_inq_grpname(gid[i], grp_name))) - break; - strcat(name, grp_name); - if (i) - strcat(name, "/"); - } - - /* Give the user the length of the name, if he wants it. */ - if (!ret && lenp) - *lenp = strlen(name); - - /* Give the user the name, if he wants it. */ - if (!ret && full_name) - strcpy(full_name, name); - - free(gid); - free(name); - - return ret; -} - -/* Find the parent ncid of a group. For the root group, return - * NC_ENOGRP error. *Now* I know what kind of tinfoil hat wearing nut - * job would call this function with a NULL pointer for parent_ncid - - * Russ Rew!! */ -int -NC4_inq_grp_parent(int ncid, int *parent_ncid) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - int retval; - - LOG((2, "nc_inq_grp_parent: ncid 0x%x", ncid)); - - /* Find info for this file and group. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* Groups only work with netCDF-4/HDF5 files... */ - if (!h5) - return NC_ENOGRP; - - /* Set the parent ncid, if there is one. */ - if (grp->parent) - { - if (parent_ncid) - *parent_ncid = grp->nc4_info->controller->ext_ncid | grp->parent->nc_grpid; - } - else - return NC_ENOGRP; - - return NC_NOERR; -} - -/* Given a full name and ncid, find group ncid. */ -int -NC4_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - int id1 = ncid, id2; - char *cp, *full_name_cpy; - int ret; - - if (!full_name) - return NC_EINVAL; - - /* Find info for this file and group, and set pointer to each. */ - if ((ret = nc4_find_grp_h5(ncid, &grp, &h5))) - return ret; - - /* Copy full_name because strtok messes with the value it works - * with, and we don't want to mess up full_name. */ - if (!(full_name_cpy = malloc(strlen(full_name) + 1))) - return NC_ENOMEM; - strcpy(full_name_cpy, full_name); - - /* Get the first part of the name. */ - if (!(cp = strtok(full_name_cpy, "/"))) - { - /* If "/" is passed, and this is the root group, return the root - * group id. */ - if (!grp->parent) - id2 = ncid; - else - { - free(full_name_cpy); - return NC_ENOGRP; - } - } - else - { - /* Keep parsing the string. */ - for (; cp; id1 = id2) - { - if ((ret = NC4_inq_ncid(id1, cp, &id2))) - { - free(full_name_cpy); - return ret; - } - cp = strtok(NULL, "/"); - } - } - - /* Give the user the requested value. */ - if (grp_ncid) - *grp_ncid = id2; - - free(full_name_cpy); - - return NC_NOERR; -} - -/* Get a list of ids for all the variables in a group. */ -int -NC4_inq_varids(int ncid, int *nvars, int *varids) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int v, num_vars = 0; - int retval; - - LOG((2, "nc_inq_varids: ncid 0x%x", ncid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - if (!h5) - { - /* If this is a netcdf-3 file, there is only one group, the root - * group, and its vars have ids 0 thru nvars - 1. */ - if ((retval = NC4_inq(ncid, NULL, &num_vars, NULL, NULL))) - return retval; - if (varids) - for (v = 0; v < num_vars; v++) - varids[v] = v; - } - else - { - /* This is a netCDF-4 group. Round up them doggies and count - * 'em. The list is in correct (i.e. creation) order. */ - if (grp->var) - { - for (var = grp->var; var; var = var->l.next) - { - if (varids) - varids[num_vars] = var->varid; - num_vars++; - } - } - } - - /* If the user wants to know how many vars in the group, tell - * him. */ - if (nvars) - *nvars = num_vars; - - return NC_NOERR; -} - -/* This is the comparison function used for sorting dim ids. Integer - comparison: returns negative if b > a and positive if a > b. */ -int int_cmp(const void *a, const void *b) -{ - const int *ia = (const int *)a; - const int *ib = (const int *)b; - return *ia - *ib; -} - -/* Find all dimids for a location. This finds all dimensions in a - * group, with or without any of its parents, depending on last - * parameter. */ -int -NC4_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents) -{ - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - NC_DIM_INFO_T *dim; - int d, num = 0; - int retval; - - LOG((2, "nc_inq_dimids: ncid 0x%x include_parents: %d", ncid, - include_parents)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - if (!h5) - { - /* If this is a netcdf-3 file, then the dimids are going to be 0 - * thru ndims-1, so just provide them. */ - if ((retval = NC4_inq(ncid, &num, NULL, NULL, NULL))) - return retval; - if (dimids) - for (d = 0; d < num; d++) - dimids[d] = d; - } - else - { - /* First count them. */ - for (dim = grp->dim; dim; dim = dim->l.next) - num++; - if (include_parents) - for (g = grp->parent; g; g = g->parent) - for (dim = g->dim; dim; dim = dim->l.next) - num++; - - /* If the user wants the dimension ids, get them. */ - if (dimids) - { - int n = 0; - - /* Get dimension ids from this group. */ - for (dim = grp->dim; dim; dim = dim->l.next) - dimids[n++] = dim->dimid; - - /* Get dimension ids from parent groups. */ - if (include_parents) - for (g = grp->parent; g; g = g->parent) - for (dim = g->dim; dim; dim = dim->l.next) - dimids[n++] = dim->dimid; - - qsort(dimids, num, sizeof(int), int_cmp); - } - } - - /* If the user wants the number of dims, give it. */ - if (ndims) - *ndims = num; - - return NC_NOERR; -} - diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4hdf.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4hdf.c deleted file mode 100644 index d82d5016f84..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4hdf.c +++ /dev/null @@ -1,4136 +0,0 @@ -/* - This file is part of netcdf-4, a netCDF-like interface for HDF5, or a - HDF5 backend for netCDF, depending on your point of view. - - This file contains functions internal to the netcdf4 library. None of - the functions in this file are exposed in the exetnal API. These - functions handle the HDF interface. - - Copyright 2003, University Corporation for Atmospheric - Research. See the COPYRIGHT file for copying and redistribution - conditions. - - $Id: nc4hdf.c,v 1.273 2010/05/27 21:34:14 dmh Exp $ -*/ - -#include "config.h" -#include "nc4internal.h" -#include "nc4dispatch.h" -#include -#include - -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif - -#define NC3_STRICT_ATT_NAME "_nc3_strict" - -#define NC_HDF5_MAX_NAME 1024 - -/* This is to track opened HDF5 objects to make sure they are - * closed. */ -#ifdef EXTRA_TESTS -int num_plists; -int num_spaces; -#endif /* EXTRA_TESTS */ - -/*! Flag attributes in a linked list as dirty. - * - * Given a linked list of attributes, flag each - * dirty. - * - * @param[in] attlist List of attributes, may be NULL. - * @return Returns NC_NOERR on succes, error on failure. - */ -static int flag_atts_dirty(NC_ATT_INFO_T **attlist) { - - NC_ATT_INFO_T *att = NULL; - - if(attlist == NULL) { - return NC_NOERR; - } - - for(att = *attlist; att; att = att->l.next) { - att->dirty = NC_TRUE; - } - - return NC_NOERR; - -} - -/* This function is needed to handle one special case: what if the - * user defines a dim, writes metadata, then goes back into define - * mode and adds a coordinate var for the already existing dim. In - * that case, I need to recreate the dim's dimension scale dataset, - * and then I need to go to every var in the file which uses that - * dimension, and attach the new dimension scale. */ -int -rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid) -{ - NC_VAR_INFO_T *var; - NC_GRP_INFO_T *child_grp; - int d; - int retval; - - assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0); - LOG((3, "%s: grp->name %s", __func__, grp->name)); - - /* If there are any child groups, attach dimscale there, if needed. */ - for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next) - if ((retval = rec_reattach_scales(child_grp, dimid, dimscaleid))) - return retval; - - /* Find any vars that use this dimension id. */ - for (var = grp->var; var; var = var->l.next) - for (d = 0; d < var->ndims; d++) - if (var->dimids[d] == dimid && !var->dimscale) - { - LOG((2, "%s: attaching scale for dimid %d to var %s", - __func__, var->dimids[d], var->name)); - if (var->created) - { - if (H5DSattach_scale(var->hdf_datasetid, dimscaleid, d) < 0) - return NC_EHDFERR; - var->dimscale_attached[d] = NC_TRUE; - } - } - - return NC_NOERR; -} - -/* This function is needed to handle one special case: what if the - * user defines a dim, writes metadata, then goes back into define - * mode and adds a coordinate var for the already existing dim. In - * that case, I need to recreate the dim's dimension scale dataset, - * and then I need to go to every var in the file which uses that - * dimension, and attach the new dimension scale. */ -int -rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid) -{ - NC_VAR_INFO_T *var; - NC_GRP_INFO_T *child_grp; - int d; - int retval; - - assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0); - LOG((3, "%s: grp->name %s", __func__, grp->name)); - - /* If there are any child groups, detach dimscale there, if needed. */ - for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next) - if ((retval = rec_detach_scales(child_grp, dimid, dimscaleid))) - return retval; - - /* Find any vars that use this dimension id. */ - for (var = grp->var; var; var = var->l.next) - for (d = 0; d < var->ndims; d++) - if (var->dimids[d] == dimid && !var->dimscale) - { - LOG((2, "%s: detaching scale for dimid %d to var %s", - __func__, var->dimids[d], var->name)); - if (var->created) - if (var->dimscale_attached && var->dimscale_attached[d]) - { - if (H5DSdetach_scale(var->hdf_datasetid, dimscaleid, d) < 0) - return NC_EHDFERR; - var->dimscale_attached[d] = NC_FALSE; - } - } - - return NC_NOERR; -} - -/* Open the dataset and leave it open. */ -int -nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset) -{ - NC_VAR_INFO_T *var; - - /* Find the requested varid. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - if (!var) - return NC_ENOTVAR; - - /* Open this dataset if necessary. */ - if (!var->hdf_datasetid) - if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name, - H5P_DEFAULT)) < 0) - return NC_ENOTVAR; - - *dataset = var->hdf_datasetid; - - return NC_NOERR; -} - -/* Get the default fill value for an atomic type. Memory for - * fill_value must already be allocated, or you are DOOMED!!!*/ -int -nc4_get_default_fill_value(const NC_TYPE_INFO_T *type_info, void *fill_value) -{ - switch (type_info->nc_typeid) - { - case NC_CHAR: - *(char *)fill_value = NC_FILL_CHAR; - break; - - case NC_STRING: - *(char **)fill_value = strdup(NC_FILL_STRING); - break; - - case NC_BYTE: - *(signed char *)fill_value = NC_FILL_BYTE; - break; - - case NC_SHORT: - *(short *)fill_value = NC_FILL_SHORT; - break; - - case NC_INT: - *(int *)fill_value = NC_FILL_INT; - break; - - case NC_UBYTE: - *(unsigned char *)fill_value = NC_FILL_UBYTE; - break; - - case NC_USHORT: - *(unsigned short *)fill_value = NC_FILL_USHORT; - break; - - case NC_UINT: - *(unsigned int *)fill_value = NC_FILL_UINT; - break; - - case NC_INT64: - *(long long *)fill_value = NC_FILL_INT64; - break; - - case NC_UINT64: - *(unsigned long long *)fill_value = NC_FILL_UINT64; - break; - - case NC_FLOAT: - *(float *)fill_value = NC_FILL_FLOAT; - break; - - case NC_DOUBLE: - *(double *)fill_value = NC_FILL_DOUBLE; - break; - - default: - return NC_EINVAL; - } - - return NC_NOERR; -} - -/* What fill value should be used for a variable? */ -static int -get_fill_value(NC_HDF5_FILE_INFO_T *h5, NC_VAR_INFO_T *var, void **fillp) -{ - size_t size; - int retval; - - /* Find out how much space we need for this type's fill value. */ - if (var->type_info->nc_type_class == NC_VLEN) - size = sizeof(nc_vlen_t); - else if (var->type_info->nc_type_class == NC_STRING) - size = sizeof(char *); - else - { - if ((retval = nc4_get_typelen_mem(h5, var->type_info->nc_typeid, 0, &size))) - return retval; - } - assert(size); - - /* Allocate the space. */ - if (!((*fillp) = calloc(1, size))) - return NC_ENOMEM; - - /* If the user has set a fill_value for this var, use, otherwise - * find the default fill value. */ - if (var->fill_value) - { - LOG((4, "Found a fill value for var %s", var->name)); - if (var->type_info->nc_type_class == NC_VLEN) - { - nc_vlen_t *in_vlen = (nc_vlen_t *)(var->fill_value), *fv_vlen = (nc_vlen_t *)(*fillp); - - fv_vlen->len = in_vlen->len; - if (!(fv_vlen->p = malloc(size * in_vlen->len))) - { - free(*fillp); - *fillp = NULL; - return NC_ENOMEM; - } - memcpy(fv_vlen->p, in_vlen->p, in_vlen->len * size); - } - else if (var->type_info->nc_type_class == NC_STRING) - { - if (*(char **)var->fill_value) - if (!(**(char ***)fillp = strdup(*(char **)var->fill_value))) - { - free(*fillp); - *fillp = NULL; - return NC_ENOMEM; - } - } - else - memcpy((*fillp), var->fill_value, size); - } - else - { - if (nc4_get_default_fill_value(var->type_info, *fillp)) - { - /* Note: release memory, but don't return error on failure */ - free(*fillp); - *fillp = NULL; - } - } - - return NC_NOERR; -} - -/* Given a netcdf type, return appropriate HDF typeid. */ -/* (All hdf_typeid's returned from this routine must be H5Tclosed by the caller) */ -int -nc4_get_hdf_typeid(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, - hid_t *hdf_typeid, int endianness) -{ - NC_TYPE_INFO_T *type; - hid_t typeid = 0; - int retval = NC_NOERR; - - assert(hdf_typeid && h5); - - *hdf_typeid = -1; - - /* Determine an appropriate HDF5 datatype */ - if (xtype == NC_NAT) - /* NAT = 'Not A Type' (c.f. NaN) */ - return NC_EBADTYPE; - else if (xtype == NC_CHAR || xtype == NC_STRING) - { - /* NC_CHAR & NC_STRING types create a new HDF5 datatype */ - if (xtype == NC_CHAR) - { - if ((typeid = H5Tcopy(H5T_C_S1)) < 0) - return NC_EHDFERR; - if (H5Tset_strpad(typeid, H5T_STR_NULLTERM) < 0) - BAIL(NC_EVARMETA); - if(H5Tset_cset(typeid, H5T_CSET_UTF8) < 0) - BAIL(NC_EVARMETA); - - /* Take ownership of the newly created HDF5 datatype */ - *hdf_typeid = typeid; - typeid = 0; - } - else - { - if ((typeid = H5Tcopy(H5T_C_S1)) < 0) - return NC_EHDFERR; - if (H5Tset_size(typeid, H5T_VARIABLE) < 0) - BAIL(NC_EVARMETA); - if(H5Tset_cset(typeid, H5T_CSET_UTF8) < 0) - BAIL(NC_EVARMETA); - - /* Take ownership of the newly created HDF5 datatype */ - *hdf_typeid = typeid; - typeid = 0; - } - } - else - { - /* All other types use an existing HDF5 datatype */ - switch (xtype) - { - case NC_BYTE: /* signed 1 byte integer */ - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_I8LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_I8BE; - else - typeid = H5T_NATIVE_SCHAR; - break; - - case NC_SHORT: /* signed 2 byte integer */ - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_I16LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_I16BE; - else - typeid = H5T_NATIVE_SHORT; - break; - - case NC_INT: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_I32LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_I32BE; - else - typeid = H5T_NATIVE_INT; - break; - - case NC_UBYTE: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_U8LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_U8BE; - else - typeid = H5T_NATIVE_UCHAR; - break; - - case NC_USHORT: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_U16LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_U16BE; - else - typeid = H5T_NATIVE_USHORT; - break; - - case NC_UINT: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_U32LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_U32BE; - else - typeid = H5T_NATIVE_UINT; - break; - - case NC_INT64: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_I64LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_I64BE; - else - typeid = H5T_NATIVE_LLONG; - break; - - case NC_UINT64: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_STD_U64LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_STD_U64BE; - else - typeid = H5T_NATIVE_ULLONG; - break; - - case NC_FLOAT: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_IEEE_F32LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_IEEE_F32BE; - else - typeid = H5T_NATIVE_FLOAT; - break; - - case NC_DOUBLE: - if (endianness == NC_ENDIAN_LITTLE) - typeid = H5T_IEEE_F64LE; - else if (endianness == NC_ENDIAN_BIG) - typeid = H5T_IEEE_F64BE; - else - typeid = H5T_NATIVE_DOUBLE; - break; - - default: - /* Maybe this is a user defined type? */ - if (nc4_find_type(h5, xtype, &type)) - return NC_EBADTYPE; - if (!type) - return NC_EBADTYPE; - typeid = type->hdf_typeid; - break; - } - assert(typeid); - - /* Copy the HDF5 datatype, so the function operates uniformly */ - if ((*hdf_typeid = H5Tcopy(typeid)) < 0) - return NC_EHDFERR; - typeid = 0; - } - assert(*hdf_typeid != -1); - - exit: - if (typeid > 0 && H5Tclose(typeid) < 0) - BAIL2(NC_EHDFERR); - return retval; -} - -/* Do some common check for nc4_put_vara and nc4_get_vara. These - * checks have to be done when both reading and writing data. */ -static int -check_for_vara(nc_type *mem_nc_type, NC_VAR_INFO_T *var, NC_HDF5_FILE_INFO_T *h5) -{ - int retval; - - /* If mem_nc_type is NC_NAT, it means we want to use the file type - * as the mem type as well. */ - assert(mem_nc_type); - if (*mem_nc_type == NC_NAT) - *mem_nc_type = var->type_info->nc_typeid; - assert(*mem_nc_type); - - /* No NC_CHAR conversions, you pervert! */ - if (var->type_info->nc_typeid != *mem_nc_type && - (var->type_info->nc_typeid == NC_CHAR || *mem_nc_type == NC_CHAR)) - return NC_ECHAR; - - /* If we're in define mode, we can't read or write data. */ - if (h5->flags & NC_INDEF) - { - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_EINDEFINE; - if ((retval = nc4_enddef_netcdf4_file(h5))) - return retval; - } - - return NC_NOERR; -} - -#ifdef LOGGING -/* Print some debug info about dimensions to the log. */ -static void -log_dim_info(NC_VAR_INFO_T *var, hsize_t *fdims, hsize_t *fmaxdims, - hsize_t *start, hsize_t *count) -{ - int d2; - - /* Print some debugging info... */ - LOG((4, "%s: var name %s ndims %d", __func__, var->name, var->ndims)); - LOG((4, "File space, and requested:")); - for (d2 = 0; d2 < var->ndims; d2++) - { - LOG((4, "fdims[%d]=%Ld fmaxdims[%d]=%Ld", d2, fdims[d2], d2, - fmaxdims[d2])); - LOG((4, "start[%d]=%Ld count[%d]=%Ld", d2, start[d2], d2, count[d2])); - } -} -#endif /* LOGGING */ - -#ifdef USE_PARALLEL4 -static int -set_par_access(NC_HDF5_FILE_INFO_T *h5, NC_VAR_INFO_T *var, hid_t xfer_plistid) -{ - /* If netcdf is built with parallel I/O, then parallel access can - * be used, and, if this file was opened or created for parallel - * access, we need to set the transfer mode. */ - if (h5->parallel) - { - H5FD_mpio_xfer_t hdf5_xfer_mode; - - /* Decide on collective or independent. */ - hdf5_xfer_mode = (var->parallel_access != NC_INDEPENDENT) ? - H5FD_MPIO_COLLECTIVE : H5FD_MPIO_INDEPENDENT; - - /* Set the mode in the transfer property list. */ - if (H5Pset_dxpl_mpio(xfer_plistid, hdf5_xfer_mode) < 0) - return NC_EPARINIT; - - LOG((4, "%s: %d H5FD_MPIO_COLLECTIVE: %d H5FD_MPIO_INDEPENDENT: %d", - __func__, (int)hdf5_xfer_mode, H5FD_MPIO_COLLECTIVE, H5FD_MPIO_INDEPENDENT)); - } - return NC_NOERR; -} -#endif - -/* Write an array of data to a variable. When it comes right down to - * it, this is what netCDF-4 is all about, this is *the* function, the - * big enchilda, the grand poo-bah, the alpha dog, the head honcho, - * the big cheese, the mighty kahuna, the top bananna, the high - * muckity-muck, numero uno. Well, you get the idea. */ -int -nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp, - const size_t *countp, nc_type mem_nc_type, int is_long, void *data) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - hid_t file_spaceid = 0, mem_spaceid = 0, xfer_plistid = 0; - long long unsigned xtend_size[NC_MAX_VAR_DIMS]; - hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS]; - hsize_t start[NC_MAX_VAR_DIMS], count[NC_MAX_VAR_DIMS]; - char *name_to_use; - int need_to_extend = 0; - int retval = NC_NOERR, range_error = 0, i, d2; - void *bufr = NULL; -#ifndef HDF5_CONVERT - int need_to_convert = 0; - size_t len = 1; -#endif -#ifdef HDF5_CONVERT - hid_t mem_typeid = 0; -#endif - - /* Find our metadata for this file, group, and var. */ - assert(nc); - if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var))) - return retval; - h5 = NC4_DATA(nc); - assert(grp && h5 && var && var->name); - - LOG((3, "%s: var->name %s mem_nc_type %d is_long %d", - __func__, var->name, mem_nc_type, is_long)); - - /* Check some stuff about the type and the file. If the file must - * be switched from define mode, it happens here. */ - if ((retval = check_for_vara(&mem_nc_type, var, h5))) - return retval; - - /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */ - for (i = 0; i < var->ndims; i++) - { - start[i] = startp[i]; - count[i] = countp[i]; - } - - /* Open this dataset if necessary, also checking for a weird case: - * a non-coordinate (and non-scalar) variable that has the same - * name as a dimension. */ - if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) && - strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 && - var->ndims) - name_to_use = var->hdf5_name; - else - name_to_use = var->name; - if (!var->hdf_datasetid) - if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, name_to_use, H5P_DEFAULT)) < 0) - return NC_ENOTVAR; - - /* Get file space of data. */ - if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - - /* Check to ensure the user selection is - * valid. H5Sget_simple_extent_dims gets the sizes of all the dims - * and put them in fdims. */ - if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0) - BAIL(NC_EHDFERR); - -#ifdef LOGGING - log_dim_info(var, fdims, fmaxdims, start, count); -#endif - - /* Check dimension bounds. Remember that unlimited dimensions can - * put data beyond their current length. */ - for (d2 = 0; d2 < var->ndims; d2++) - { - dim = var->dim[d2]; - assert(dim && dim->dimid == var->dimids[d2]); - if (!dim->unlimited) - { - if (start[d2] > (hssize_t)fdims[d2] || - (start[d2] == (hssize_t)fdims[d2] && count[d2] > 0)) - BAIL_QUIET(NC_EINVALCOORDS); - if (start[d2] + count[d2] > fdims[d2]) - BAIL_QUIET(NC_EEDGE); - } - } - - /* Now you would think that no one would be crazy enough to write - a scalar dataspace with one of the array function calls, but you - would be wrong. So let's check to see if the dataset is - scalar. If it is, we won't try to set up a hyperslab. */ - if (H5Sget_simple_extent_type(file_spaceid) == H5S_SCALAR) - { - if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - else - { - if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET, start, NULL, - count, NULL) < 0) - BAIL(NC_EHDFERR); - - /* Create a space for the memory, just big enough to hold the slab - we want. */ - if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - -#ifndef HDF5_CONVERT - /* Are we going to convert any data? (No converting of compound or - * opaque types.) */ - if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) && - mem_nc_type != NC_COMPOUND && mem_nc_type != NC_OPAQUE) - { - size_t file_type_size; - - /* We must convert - allocate a buffer. */ - need_to_convert++; - if (var->ndims) - for (d2=0; d2ndims; d2++) - len *= countp[d2]; - LOG((4, "converting data for var %s type=%d len=%d", var->name, - var->type_info->nc_typeid, len)); - - /* Later on, we will need to know the size of this type in the - * file. */ - assert(var->type_info->size); - file_type_size = var->type_info->size; - - /* If we're reading, we need bufr to have enough memory to store - * the data in the file. If we're writing, we need bufr to be - * big enough to hold all the data in the file's type. */ - if(len > 0) - if (!(bufr = malloc(len * file_type_size))) - BAIL(NC_ENOMEM); - } - else -#endif /* ifndef HDF5_CONVERT */ - bufr = data; - -#ifdef HDF5_CONVERT - /* Get the HDF type of the data in memory. */ - if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid, - var->type_info->endianness))) - BAIL(retval); -#endif - - /* Create the data transfer property list. */ - if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* Apply the callback function which will detect range - * errors. Which one to call depends on the length of the - * destination buffer type. */ -#ifdef HDF5_CONVERT - if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0) - BAIL(NC_EHDFERR); -#endif - -#ifdef USE_PARALLEL4 - /* Set up parallel I/O, if needed. */ - if ((retval = set_par_access(h5, var, xfer_plistid))) - BAIL(retval); -#endif - - /* Read/write this hyperslab into memory. */ - /* Does the dataset have to be extended? If it's already - extended to the required size, it will do no harm to reextend - it to that size. */ - if (var->ndims) - { - for (d2 = 0; d2 < var->ndims; d2++) - { - dim = var->dim[d2]; - assert(dim && dim->dimid == var->dimids[d2]); - if (dim->unlimited) - { - if (start[d2] + count[d2] > fdims[d2]) - { - xtend_size[d2] = (long long unsigned)(start[d2] + count[d2]); - need_to_extend++; - } - else - xtend_size[d2] = (long long unsigned)fdims[d2]; - - if (start[d2] + count[d2] > dim->len) - { - dim->len = start[d2] + count[d2]; - dim->extended = NC_TRUE; - } - } - else - { - xtend_size[d2] = (long long unsigned)dim->len; - } - } - -#ifdef USE_PARALLEL4 - /* Check if anyone wants to extend */ - if (h5->parallel && NC_COLLECTIVE == var->parallel_access) - { - /* Form consensus opinion among all processes about whether to perform - * collective I/O - */ - if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, &need_to_extend, 1, MPI_INT, MPI_BOR, h5->comm)) - BAIL(NC_EMPI); - } -#endif /* USE_PARALLEL4 */ - - /* If we need to extend it, we also need a new file_spaceid - to reflect the new size of the space. */ - if (need_to_extend) - { - LOG((4, "extending dataset")); -#ifdef USE_PARALLEL4 - if (h5->parallel) - { - if(NC_COLLECTIVE != var->parallel_access) - BAIL(NC_ECANTEXTEND); - - /* Reach consensus about dimension sizes to extend to */ - if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, xtend_size, var->ndims, MPI_UNSIGNED_LONG_LONG, MPI_MAX, h5->comm)) - BAIL(NC_EMPI); - } -#endif /* USE_PARALLEL4 */ - /* Convert xtend_size back to hsize_t for use with H5Dset_extent */ - for (d2 = 0; d2 < var->ndims; d2++) - fdims[d2] = (hsize_t)xtend_size[d2]; - - if (H5Dset_extent(var->hdf_datasetid, fdims) < 0) - BAIL(NC_EHDFERR); - if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0) - BAIL2(NC_EHDFERR); - if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET, - start, NULL, count, NULL) < 0) - BAIL(NC_EHDFERR); - } - } - -#ifndef HDF5_CONVERT - /* Do we need to convert the data? */ - if (need_to_convert) - { - if ((retval = nc4_convert_type(data, bufr, mem_nc_type, var->type_info->nc_typeid, - len, &range_error, var->fill_value, - (h5->cmode & NC_CLASSIC_MODEL), is_long, 0))) - BAIL(retval); - } -#endif - - /* Write the data. At last! */ - LOG((4, "about to H5Dwrite datasetid 0x%x mem_spaceid 0x%x " - "file_spaceid 0x%x", var->hdf_datasetid, mem_spaceid, file_spaceid)); - if (H5Dwrite(var->hdf_datasetid, var->type_info->hdf_typeid, - mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0) - BAIL(NC_EHDFERR); - - /* Remember that we have written to this var so that Fill Value - * can't be set for it. */ - if (!var->written_to) - var->written_to = NC_TRUE; - - /* For strict netcdf-3 rules, ignore erange errors between UBYTE - * and BYTE types. */ - if ((h5->cmode & NC_CLASSIC_MODEL) && - (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) && - (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) && - range_error) - range_error = 0; - - exit: -#ifdef HDF5_CONVERT - if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0) - BAIL2(NC_EHDFERR); -#endif - if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (mem_spaceid > 0 && H5Sclose(mem_spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (xfer_plistid && (H5Pclose(xfer_plistid) < 0)) - BAIL2(NC_EPARINIT); -#ifdef EXTRA_TESTS - num_plists--; -#endif -#ifndef HDF5_CONVERT - if (need_to_convert && bufr) free(bufr); -#endif - - /* If there was an error return it, otherwise return any potential - range error value. If none, return NC_NOERR as usual.*/ - if (retval) - return retval; - if (range_error) - return NC_ERANGE; - return NC_NOERR; -} - -int -nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp, - const size_t *countp, nc_type mem_nc_type, int is_long, void *data) -{ - NC_GRP_INFO_T *grp, *g; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - hid_t file_spaceid = 0, mem_spaceid = 0; - hid_t xfer_plistid = 0; - size_t file_type_size; - hsize_t *xtend_size = NULL, count[NC_MAX_VAR_DIMS]; - hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS]; - hsize_t start[NC_MAX_VAR_DIMS]; - char *name_to_use; - void *fillvalue = NULL; - int no_read = 0, provide_fill = 0; - int fill_value_size[NC_MAX_VAR_DIMS]; - int scalar = 0, retval = NC_NOERR, range_error = 0, i, d2; - void *bufr = NULL; -#ifdef HDF5_CONVERT - hid_t mem_typeid = 0; -#endif -#ifndef HDF5_CONVERT - int need_to_convert = 0; - size_t len = 1; -#endif - - /* Find our metadata for this file, group, and var. */ - assert(nc); - if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var))) - return retval; - h5 = NC4_DATA(nc); - assert(grp && h5 && var && var->name); - - LOG((3, "%s: var->name %s mem_nc_type %d is_long %d", - __func__, var->name, mem_nc_type, is_long)); - - /* Check some stuff about the type and the file. */ - if ((retval = check_for_vara(&mem_nc_type, var, h5))) - return retval; - - /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */ - for (i = 0; i < var->ndims; i++) - { - start[i] = startp[i]; - count[i] = countp[i]; - } - - /* Open this dataset if necessary, also checking for a weird case: - * a non-coordinate (and non-scalar) variable that has the same - * name as a dimension. */ - if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) && - strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 && - var->ndims) - name_to_use = var->hdf5_name; - else - name_to_use = var->name; - if (!var->hdf_datasetid) - if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, name_to_use, H5P_DEFAULT)) < 0) - return NC_ENOTVAR; - - /* Get file space of data. */ - if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - - /* Check to ensure the user selection is - * valid. H5Sget_simple_extent_dims gets the sizes of all the dims - * and put them in fdims. */ - if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0) - BAIL(NC_EHDFERR); - -#ifdef LOGGING - log_dim_info(var, fdims, fmaxdims, start, count); -#endif - - /* Check dimension bounds. Remember that unlimited dimensions can - * put data beyond their current length. */ - for (d2 = 0; d2 < var->ndims; d2++) { - dim = var->dim[d2]; - assert(dim && dim->dimid == var->dimids[d2]); - if (dim->unlimited) - { - size_t ulen; - - /* We can't go beyond the largest current extent of - the unlimited dim. */ - if ((retval = NC4_inq_dim(ncid, dim->dimid, NULL, &ulen))) - BAIL(retval); - - /* Check for out of bound requests. */ - if (start[d2] > (hssize_t)ulen || - (start[d2] == (hssize_t)ulen && count[d2] > 0)) - BAIL_QUIET(NC_EINVALCOORDS); - if (start[d2] + count[d2] > ulen) - BAIL_QUIET(NC_EEDGE); - - /* Things get a little tricky here. If we're getting - a GET request beyond the end of this var's - current length in an unlimited dimension, we'll - later need to return the fill value for the - variable. */ - if (start[d2] >= (hssize_t)fdims[d2]) - fill_value_size[d2] = count[d2]; - else if (start[d2] + count[d2] > fdims[d2]) - fill_value_size[d2] = count[d2] - (fdims[d2] - start[d2]); - else - fill_value_size[d2] = 0; - count[d2] -= fill_value_size[d2]; - if (fill_value_size[d2]) - provide_fill++; - } - else - { - /* Check for out of bound requests. */ - if (start[d2] > (hssize_t)fdims[d2] || - (start[d2] == (hssize_t)fdims[d2] && count[d2] > 0)) - BAIL_QUIET(NC_EINVALCOORDS); - if (start[d2] + count[d2] > fdims[d2]) - BAIL_QUIET(NC_EEDGE); - - /* Set the fill value boundary */ - fill_value_size[d2] = count[d2]; - } - } - - /* A little quirk: if any of the count values are zero, don't - * read. */ - for (d2 = 0; d2 < var->ndims; d2++) - if (count[d2] == 0) - no_read++; - - /* Later on, we will need to know the size of this type in the - * file. */ - assert(var->type_info->size); - file_type_size = var->type_info->size; - - if (!no_read) - { - /* Now you would think that no one would be crazy enough to write - a scalar dataspace with one of the array function calls, but you - would be wrong. So let's check to see if the dataset is - scalar. If it is, we won't try to set up a hyperslab. */ - if (H5Sget_simple_extent_type(file_spaceid) == H5S_SCALAR) - { - if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0) - BAIL(NC_EHDFERR); - scalar++; -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - else - { - if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET, - start, NULL, count, NULL) < 0) - BAIL(NC_EHDFERR); - /* Create a space for the memory, just big enough to hold the slab - we want. */ - if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - - /* Fix bug when reading HDF5 files with variable of type - * fixed-length string. We need to make it look like a - * variable-length string, because that's all netCDF-4 data - * model supports, lacking anonymous dimensions. So - * variable-length strings are in allocated memory that user has - * to free, which we allocate here. */ - if(var->type_info->nc_type_class == NC_STRING && - H5Tget_size(var->type_info->hdf_typeid) > 1 && - !H5Tis_variable_str(var->type_info->hdf_typeid)) { - hsize_t fstring_len; - - if ((fstring_len = H5Tget_size(var->type_info->hdf_typeid)) == 0) - BAIL(NC_EHDFERR); - if (!(*(char **)data = malloc(1 + fstring_len))) - BAIL(NC_ENOMEM); - bufr = *(char **)data; - } - -#ifndef HDF5_CONVERT - /* Are we going to convert any data? (No converting of compound or - * opaque types.) */ - if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) && - mem_nc_type != NC_COMPOUND && mem_nc_type != NC_OPAQUE) - { - /* We must convert - allocate a buffer. */ - need_to_convert++; - if (var->ndims) - for (d2 = 0; d2 < var->ndims; d2++) - len *= countp[d2]; - LOG((4, "converting data for var %s type=%d len=%d", var->name, - var->type_info->nc_typeid, len)); - - /* If we're reading, we need bufr to have enough memory to store - * the data in the file. If we're writing, we need bufr to be - * big enough to hold all the data in the file's type. */ - if(len > 0) - if (!(bufr = malloc(len * file_type_size))) - BAIL(NC_ENOMEM); - } - else -#endif /* ifndef HDF5_CONVERT */ - if(!bufr) - bufr = data; - - /* Get the HDF type of the data in memory. */ -#ifdef HDF5_CONVERT - if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid, - var->type_info->endianness))) - BAIL(retval); -#endif - - /* Create the data transfer property list. */ - if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - -#ifdef HDF5_CONVERT - /* Apply the callback function which will detect range - * errors. Which one to call depends on the length of the - * destination buffer type. */ - if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0) - BAIL(NC_EHDFERR); -#endif - -#ifdef USE_PARALLEL4 - /* Set up parallel I/O, if needed. */ - if ((retval = set_par_access(h5, var, xfer_plistid))) - BAIL(retval); -#endif - - /* Read this hyperslab into memory. */ - LOG((5, "About to H5Dread some data...")); - if (H5Dread(var->hdf_datasetid, var->type_info->native_hdf_typeid, - mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0) - BAIL(NC_EHDFERR); - -#ifndef HDF5_CONVERT - /* Eventually the block below will go away. Right now it's - needed to support conversions between int/float, and range - checking converted data in the netcdf way. These features are - being added to HDF5 at the HDF5 World Hall of Coding right - now, by a staff of thousands of programming gnomes. */ - if (need_to_convert) - { - if ((retval = nc4_convert_type(bufr, data, var->type_info->nc_typeid, mem_nc_type, - len, &range_error, var->fill_value, - (h5->cmode & NC_CLASSIC_MODEL), 0, is_long))) - BAIL(retval); - - /* For strict netcdf-3 rules, ignore erange errors between UBYTE - * and BYTE types. */ - if ((h5->cmode & NC_CLASSIC_MODEL) && - (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) && - (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) && - range_error) - range_error = 0; - } -#endif - - /* For strict netcdf-3 rules, ignore erange errors between UBYTE - * and BYTE types. */ - if ((h5->cmode & NC_CLASSIC_MODEL) && - (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) && - (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) && - range_error) - range_error = 0; - - } /* endif ! no_read */ - - else { -#ifdef USE_PARALLEL4 /* Start block contributed by HDF group. */ - /* For collective IO read, some processes may not have any element for reading. - Collective requires all processes to participate, so we use H5Sselect_none - for these processes. */ - if(var->parallel_access == NC_COLLECTIVE) { - - /* Create the data transfer property list. */ - if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - if ((retval = set_par_access(h5, var, xfer_plistid))) - BAIL(retval); - - if (H5Sselect_none(file_spaceid)<0) - BAIL(NC_EHDFERR); - - /* Since no element will be selected, we just get the memory space the same as the file space. - */ - if((mem_spaceid = H5Dget_space(var->hdf_datasetid))<0) - BAIL(NC_EHDFERR); - if (H5Sselect_none(mem_spaceid)<0) - BAIL(NC_EHDFERR); - -#ifdef EXTRA_TESTS - num_spaces++; -#endif - /* Read this hyperslab into memory. */ - LOG((5, "About to H5Dread some data...")); - if (H5Dread(var->hdf_datasetid, var->type_info->native_hdf_typeid, - mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0) - BAIL(NC_EHDFERR); - } -#endif /* End ifdef USE_PARALLEL4 */ - } - /* Now we need to fake up any further data that was asked for, - using the fill values instead. First skip past the data we - just read, if any. */ - if (!scalar && provide_fill) - { - void *filldata; - size_t real_data_size = 0; - size_t fill_len; - - /* Skip past the real data we've already read. */ - if (!no_read) - for (real_data_size = file_type_size, d2 = 0; d2 < var->ndims; d2++) - real_data_size *= (count[d2] - start[d2]); - - /* Get the fill value from the HDF5 variable. Memory will be - * allocated. */ - if (get_fill_value(h5, var, &fillvalue) < 0) - BAIL(NC_EHDFERR); - - /* How many fill values do we need? */ - for (fill_len = 1, d2 = 0; d2 < var->ndims; d2++) - fill_len *= (fill_value_size[d2] ? fill_value_size[d2] : 1); - - /* Copy the fill value into the rest of the data buffer. */ - filldata = (char *)data + real_data_size; - for (i = 0; i < fill_len; i++) - { - - if (var->type_info->nc_type_class == NC_STRING) - { - if (*(char **)fillvalue) - { - if (!(*(char **)filldata = strdup(*(char **)fillvalue))) - BAIL(NC_ENOMEM); - } - else - *(char **)filldata = NULL; - } - else if(var->type_info->nc_type_class == NC_VLEN) { - if(fillvalue) { - memcpy(filldata,fillvalue,file_type_size); - } else { - *(char **)filldata = NULL; - } - } else - memcpy(filldata, fillvalue, file_type_size); - filldata = (char *)filldata + file_type_size; - } - } - - exit: -#ifdef HDF5_CONVERT - if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0) - BAIL2(NC_EHDFERR); -#endif - if (file_spaceid > 0) - { - if (H5Sclose(file_spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - } - if (mem_spaceid > 0) - { - if (H5Sclose(mem_spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - } - if (xfer_plistid > 0) - { - if (H5Pclose(xfer_plistid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - } -#ifndef HDF5_CONVERT - if (need_to_convert && bufr != NULL) - free(bufr); -#endif - if (xtend_size) - free(xtend_size); - if (fillvalue) - { - if (var->type_info->nc_type_class == NC_VLEN) - nc_free_vlen((nc_vlen_t *)fillvalue); - else if (var->type_info->nc_type_class == NC_STRING && *(char **)fillvalue) - free(*(char **)fillvalue); - free(fillvalue); - } - - /* If there was an error return it, otherwise return any potential - range error value. If none, return NC_NOERR as usual.*/ - if (retval) - return retval; - if (range_error) - return NC_ERANGE; - return NC_NOERR; -} - -/* Read or write an attribute. */ -static int -put_att_grpa(NC_GRP_INFO_T *grp, int varid, NC_ATT_INFO_T *att) -{ - hid_t datasetid = 0, locid; - hid_t attid = 0, spaceid = 0, file_typeid = 0; - hsize_t dims[1]; /* netcdf attributes always 1-D. */ - htri_t attr_exists; - int retval = NC_NOERR; - void *data; - int phoney_data = 99; - - assert(att->name); - LOG((3, "%s: varid %d att->attnum %d att->name %s att->nc_typeid %d att->len %d", - __func__, varid, att->attnum, att->name, - att->nc_typeid, att->len)); - - /* If the file is read-only, return an error. */ - if (grp->nc4_info->no_write) - BAIL(NC_EPERM); - - /* Get the hid to attach the attribute to, or read it from. */ - if (varid == NC_GLOBAL) - locid = grp->hdf_grpid; - else - { - if ((retval = nc4_open_var_grp2(grp, varid, &datasetid))) - BAIL(retval); - locid = datasetid; - } - - /* Delete the att if it exists already. */ - if ((attr_exists = H5Aexists(locid, att->name)) < 0) - BAIL(NC_EHDFERR); - if (attr_exists) - { - if (H5Adelete(locid, att->name) < 0) - BAIL(NC_EHDFERR); - } - - /* Get the length ready, and find the HDF type we'll be - * writing. */ - dims[0] = att->len; - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, att->nc_typeid, - &file_typeid, 0))) - BAIL(retval); - - /* Even if the length is zero, HDF5 won't let me write with a - * NULL pointer. So if the length of the att is zero, point to - * some phoney data (which won't be written anyway.)*/ - if (!dims[0]) - data = &phoney_data; - else if (att->data) - data = att->data; - else if (att->stdata) - data = att->stdata; - else - data = att->vldata; - - /* NC_CHAR types require some extra work. The space ID is set to - * scalar, and the type is told how long the string is. If it's - * really zero length, set the size to 1. (The fact that it's - * really zero will be marked by the NULL dataspace, but HDF5 - * doesn't allow me to set the size of the type to zero.)*/ - if (att->nc_typeid == NC_CHAR) - { - size_t string_size = dims[0]; - if (!string_size) - { - string_size = 1; - if ((spaceid = H5Screate(H5S_NULL)) < 0) - BAIL(NC_EATTMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - else - { - if ((spaceid = H5Screate(H5S_SCALAR)) < 0) - BAIL(NC_EATTMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - if (H5Tset_size(file_typeid, string_size) < 0) - BAIL(NC_EATTMETA); - if (H5Tset_strpad(file_typeid, H5T_STR_NULLTERM) < 0) - BAIL(NC_EATTMETA); - } - else - { - if (!att->len) - { - if ((spaceid = H5Screate(H5S_NULL)) < 0) - BAIL(NC_EATTMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - else - { - if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0) - BAIL(NC_EATTMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - } - if ((attid = H5Acreate(locid, att->name, file_typeid, spaceid, - H5P_DEFAULT)) < 0) - BAIL(NC_EATTMETA); - - /* Write the values, (even if length is zero). */ - if (H5Awrite(attid, file_typeid, data) < 0) - BAIL(NC_EATTMETA); - - exit: - if (file_typeid && H5Tclose(file_typeid)) - BAIL2(NC_EHDFERR); - if (attid > 0 && H5Aclose(attid) < 0) - BAIL2(NC_EHDFERR); - if (spaceid > 0 && H5Sclose(spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - return retval; -} - -/* Write all the dirty atts in an attlist. */ -static int -write_attlist(NC_ATT_INFO_T *attlist, int varid, NC_GRP_INFO_T *grp) -{ - NC_ATT_INFO_T *att; - int retval; - - for (att = attlist; att; att = att->l.next) - { - if (att->dirty) - { - LOG((4, "%s: writing att %s to varid %d", __func__, att->name, varid)); - if ((retval = put_att_grpa(grp, varid, att))) - return retval; - att->dirty = NC_FALSE; - att->created = NC_TRUE; - } - } - return NC_NOERR; -} - - -/* This function is a bit of a hack. Turns out that HDF5 dimension - * scales cannot themselves have scales attached. This leaves - * multidimensional coordinate variables hosed. So this function - * writes a special attribute for such a variable, which has the ids - * of all the dimensions for that coordinate variable. This sucks, - * really. But that's the way the cookie crumbles. Better luck next - * time. This function also contains a new way of dealing with HDF5 - * error handling, abandoning the BAIL macros for a more organic and - * natural approach, made with whole grains, and locally-grown - * vegetables. */ -static int -write_coord_dimids(NC_VAR_INFO_T *var) -{ - hsize_t coords_len[1]; - hid_t c_spaceid = -1, c_attid = -1; - int ret = 0; - - /* Write our attribute. */ - coords_len[0] = var->ndims; - if ((c_spaceid = H5Screate_simple(1, coords_len, coords_len)) < 0) ret++; -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if (!ret && (c_attid = H5Acreate(var->hdf_datasetid, COORDINATES, H5T_NATIVE_INT, - c_spaceid, H5P_DEFAULT)) < 0) ret++; - if (!ret && H5Awrite(c_attid, H5T_NATIVE_INT, var->dimids) < 0) ret++; - - /* Close up shop. */ - if (c_spaceid > 0 && H5Sclose(c_spaceid) < 0) ret++; -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (c_attid > 0 && H5Aclose(c_attid) < 0) ret++; - return ret ? NC_EHDFERR : 0; -} - -/* Write a special attribute for the netCDF-4 dimension ID. */ -static int -write_netcdf4_dimid(hid_t datasetid, int dimid) -{ - hid_t dimid_spaceid, dimid_attid; - htri_t attr_exists; - - /* Create the space. */ - if ((dimid_spaceid = H5Screate(H5S_SCALAR)) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_spaces++; -#endif - - /* Does the attribute already exist? If so, don't try to create it. */ - if ((attr_exists = H5Aexists(datasetid, NC_DIMID_ATT_NAME)) < 0) - return NC_EHDFERR; - if (attr_exists) - dimid_attid = H5Aopen_by_name(datasetid, ".", NC_DIMID_ATT_NAME, - H5P_DEFAULT, H5P_DEFAULT); - else - /* Create the attribute if needed. */ - dimid_attid = H5Acreate(datasetid, NC_DIMID_ATT_NAME, - H5T_NATIVE_INT, dimid_spaceid, H5P_DEFAULT); - if (dimid_attid < 0) - return NC_EHDFERR; - - - /* Write it. */ - LOG((4, "%s: writing secret dimid %d", __func__, dimid)); - if (H5Awrite(dimid_attid, H5T_NATIVE_INT, &dimid) < 0) - return NC_EHDFERR; - - /* Close stuff*/ - if (H5Sclose(dimid_spaceid) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (H5Aclose(dimid_attid) < 0) - return NC_EHDFERR; - - return NC_NOERR; -} - -/* This function creates the HDF5 dataset for a variable. */ -static int -var_create_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, nc_bool_t write_dimid) -{ - NC_GRP_INFO_T *g; - hid_t plistid = 0, access_plistid = 0, typeid = 0, spaceid = 0; - hsize_t chunksize[H5S_MAX_RANK], dimsize[H5S_MAX_RANK], maxdimsize[H5S_MAX_RANK]; - int d; - void *fillp = NULL; - NC_DIM_INFO_T *dim = NULL; - int dims_found = 0; - char *name_to_use; - int retval = NC_NOERR; - - LOG((3, "%s:: name %s", __func__, var->name)); - - /* Scalar or not, we need a creation property list. */ - if ((plistid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - if ((access_plistid = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */ - if (H5Pset_obj_track_times(plistid,0)<0) - BAIL(NC_EHDFERR); - - /* Find the HDF5 type of the dataset. */ - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &typeid, - var->type_info->endianness))) - BAIL(retval); - - /* Figure out what fill value to set, if any. */ - if (var->no_fill) - { - /* Required to truly turn HDF5 fill values off */ - if (H5Pset_fill_time(plistid, H5D_FILL_TIME_NEVER) < 0) - BAIL(NC_EHDFERR); - } - else - { - if ((retval = get_fill_value(grp->nc4_info, var, &fillp))) - BAIL(retval); - - /* If there is a fill value, set it. */ - if (fillp) - { - if (var->type_info->nc_type_class == NC_STRING) - { - if (H5Pset_fill_value(plistid, typeid, fillp) < 0) - BAIL(NC_EHDFERR); - } - else - { - /* The fill value set in HDF5 must always be presented as - * a native type, even if the endianness for this dataset - * is non-native. HDF5 will translate the fill value to - * the target endiannesss. */ - hid_t fill_typeid = 0; - - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &fill_typeid, - NC_ENDIAN_NATIVE))) - BAIL(retval); - if (H5Pset_fill_value(plistid, fill_typeid, fillp) < 0) - { - if (H5Tclose(fill_typeid) < 0) - BAIL(NC_EHDFERR); - BAIL(NC_EHDFERR); - } - if (H5Tclose(fill_typeid) < 0) - BAIL(NC_EHDFERR); - } - } - } - - /* If the user wants to shuffle the data, set that up now. */ - if (var->shuffle) - if (H5Pset_shuffle(plistid) < 0) - BAIL(NC_EHDFERR); - - /* If the user wants to deflate the data, set that up now. */ - if (var->deflate) - if (H5Pset_deflate(plistid, var->deflate_level) < 0) - BAIL(NC_EHDFERR); - - /* Szip? NO! We don't want anyone to produce szipped netCDF files! */ - /* #ifdef USE_SZIP */ - /* if (var->options_mask) */ - /* if (H5Pset_szip(plistid, var->options_mask, var->bits_per_pixel) < 0) */ - /* BAIL(NC_EHDFERR); */ - /* #endif */ - - /* If the user wants to fletcher error correcton, set that up now. */ - if (var->fletcher32) - if (H5Pset_fletcher32(plistid) < 0) - BAIL(NC_EHDFERR); - - /* If ndims non-zero, get info for all dimensions. We look up the - dimids and get the len of each dimension. We need this to create - the space for the dataset. In netCDF a dimension length of zero - means an unlimited dimension. */ - if (var->ndims) - { - int unlimdim = 0; - - /* Check to see if any unlimited dimensions are used in this var. */ - for (d = 0; d < var->ndims; d++) { - dim = var->dim[d]; - assert(dim && dim->dimid == var->dimids[d]); - if (dim->unlimited) - unlimdim++; - } - - /* If there are no unlimited dims, and no filters, and the user - * has not specified chunksizes, use contiguous variable for - * better performance. */ - - if(!var->shuffle && !var->deflate && !var->options_mask && - !var->fletcher32 && (var->chunksizes == NULL || !var->chunksizes[0])) { -#ifdef USE_HDF4 - NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info; - if(h5->hdf4 || !unlimdim) -#else - if(!unlimdim) -#endif - var->contiguous = NC_TRUE; - } - - /* Gather current & maximum dimension sizes, along with chunk sizes */ - for (d = 0; d < var->ndims; d++) - { - dim = var->dim[d]; - assert(dim && dim->dimid == var->dimids[d]); - dimsize[d] = dim->unlimited ? NC_HDF5_UNLIMITED_DIMSIZE : dim->len; - maxdimsize[d] = dim->unlimited ? H5S_UNLIMITED : (hsize_t)dim->len; - if (!var->contiguous) { - if (var->chunksizes[d]) - chunksize[d] = var->chunksizes[d]; - else - { - size_t type_size; - if (var->type_info->nc_type_class == NC_STRING) - type_size = sizeof(char *); - else - type_size = var->type_info->size; - - /* Unlimited dim always gets chunksize of 1. */ - if (dim->unlimited) - chunksize[d] = 1; - else - chunksize[d] = pow((double)DEFAULT_CHUNK_SIZE/type_size, - 1/(double)(var->ndims - unlimdim)); - - /* If the chunksize is greater than the dim - * length, make it the dim length. */ - if (!dim->unlimited && chunksize[d] > dim->len) - chunksize[d] = dim->len; - - /* Remember the computed chunksize */ - var->chunksizes[d] = chunksize[d]; - } - } - } - - if (var->contiguous) - { - if (H5Pset_layout(plistid, H5D_CONTIGUOUS) < 0) - BAIL(NC_EHDFERR); - } - else - { - if (H5Pset_chunk(plistid, var->ndims, chunksize) < 0) - BAIL(NC_EHDFERR); - } - - /* Create the dataspace. */ - if ((spaceid = H5Screate_simple(var->ndims, dimsize, maxdimsize)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - else - { - if ((spaceid = H5Screate(H5S_SCALAR)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - } - - /* Turn on creation order tracking. */ - if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED| - H5P_CRT_ORDER_INDEXED) < 0) - BAIL(NC_EHDFERR); - - /* Set per-var chunk cache, for chunked datasets. */ - if (!var->contiguous && var->chunk_cache_size) - if (H5Pset_chunk_cache(access_plistid, var->chunk_cache_nelems, - var->chunk_cache_size, var->chunk_cache_preemption) < 0) - BAIL(NC_EHDFERR); - - /* At long last, create the dataset. */ - name_to_use = var->hdf5_name ? var->hdf5_name : var->name; - LOG((4, "%s: about to H5Dcreate2 dataset %s of type 0x%x", __func__, - name_to_use, typeid)); - if ((var->hdf_datasetid = H5Dcreate2(grp->hdf_grpid, name_to_use, typeid, - spaceid, H5P_DEFAULT, plistid, access_plistid)) < 0) - BAIL(NC_EHDFERR); - var->created = NC_TRUE; - var->is_new_var = NC_FALSE; - - /* If this is a dimscale, mark it as such in the HDF5 file. Also - * find the dimension info and store the dataset id of the dimscale - * dataset. */ - if (var->dimscale) - { - if (H5DSset_scale(var->hdf_datasetid, var->name) < 0) - BAIL(NC_EHDFERR); - - /* If this is a multidimensional coordinate variable, write a - * coordinates attribute. */ - if (var->ndims > 1) - if ((retval = write_coord_dimids(var))) - BAIL(retval); - - /* If desired, write the netCDF dimid. */ - if (write_dimid) - if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0]))) - BAIL(retval); - } - - - /* Write attributes for this var. */ - if ((retval = write_attlist(var->att, var->varid, grp))) - BAIL(retval); - var->attr_dirty = NC_FALSE; - - exit: - if (typeid > 0 && H5Tclose(typeid) < 0) - BAIL2(NC_EHDFERR); - if (plistid > 0 && H5Pclose(plistid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (access_plistid > 0 && H5Pclose(access_plistid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (spaceid > 0 && H5Sclose(spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (fillp) - { - if (var->type_info->nc_type_class == NC_VLEN) - nc_free_vlen((nc_vlen_t *)fillp); - else if (var->type_info->nc_type_class == NC_STRING && *(char **)fillp) - free(*(char **)fillp); - free(fillp); - } - - return retval; -} - -/* Adjust the chunk cache of a var for better performance. */ -int -nc4_adjust_var_cache(NC_GRP_INFO_T *grp, NC_VAR_INFO_T * var) -{ - size_t chunk_size_bytes = 1; - int d; - int retval; - - /* Nothing to be done. */ - if (var->contiguous) - return NC_NOERR; -#ifdef USE_PARALLEL4 - return NC_NOERR; -#endif - - /* How many bytes in the chunk? */ - for (d = 0; d < var->ndims; d++) - chunk_size_bytes *= var->chunksizes[d]; - if (var->type_info->size) - chunk_size_bytes *= var->type_info->size; - else - chunk_size_bytes *= sizeof(char *); - - /* If the chunk cache is too small, and the user has not changed - * the default value of the chunk cache size, then increase the - * size of the cache. */ - if (var->chunk_cache_size == CHUNK_CACHE_SIZE) - if (chunk_size_bytes > var->chunk_cache_size) - { - var->chunk_cache_size = chunk_size_bytes * DEFAULT_CHUNKS_IN_CACHE; - if (var->chunk_cache_size > MAX_DEFAULT_CACHE_SIZE) - var->chunk_cache_size = MAX_DEFAULT_CACHE_SIZE; - if ((retval = nc4_reopen_dataset(grp, var))) - return retval; - } - - return NC_NOERR; -} - -/* Create a HDF5 defined type from a NC_TYPE_INFO_T struct, and commit - * it to the file. */ -static int -commit_type(NC_GRP_INFO_T *grp, NC_TYPE_INFO_T *type) -{ - int retval; - - assert(grp && type); - - /* Did we already record this type? */ - if (type->committed) - return NC_NOERR; - - /* Is this a compound type? */ - if (type->nc_type_class == NC_COMPOUND) - { - NC_FIELD_INFO_T *field; - hid_t hdf_base_typeid, hdf_typeid; - - if ((type->hdf_typeid = H5Tcreate(H5T_COMPOUND, type->size)) < 0) - return NC_EHDFERR; - LOG((4, "creating compound type %s hdf_typeid 0x%x", type->name, - type->hdf_typeid)); - - for (field = type->u.c.field; field; field = field->l.next) - { - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, field->nc_typeid, - &hdf_base_typeid, type->endianness))) - return retval; - - /* If this is an array, create a special array type. */ - if (field->ndims) - { - int d; - hsize_t dims[NC_MAX_VAR_DIMS]; - - for (d = 0; d < field->ndims; d++) - dims[d] = field->dim_size[d]; - if ((hdf_typeid = H5Tarray_create(hdf_base_typeid, field->ndims, - dims, NULL)) < 0) - { - if (H5Tclose(hdf_base_typeid) < 0) - return NC_EHDFERR; - return NC_EHDFERR; - } - if (H5Tclose(hdf_base_typeid) < 0) - return NC_EHDFERR; - } - else - hdf_typeid = hdf_base_typeid; - LOG((4, "inserting field %s offset %d hdf_typeid 0x%x", field->name, - field->offset, hdf_typeid)); - if (H5Tinsert(type->hdf_typeid, field->name, field->offset, - hdf_typeid) < 0) - return NC_EHDFERR; - if (H5Tclose(hdf_typeid) < 0) - return NC_EHDFERR; - } - } - else if (type->nc_type_class == NC_VLEN) - { - /* Find the HDF typeid of the base type of this vlen. */ - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.v.base_nc_typeid, - &type->u.v.base_hdf_typeid, type->endianness))) - return retval; - - /* Create a vlen type. */ - if ((type->hdf_typeid = H5Tvlen_create(type->u.v.base_hdf_typeid)) < 0) - return NC_EHDFERR; - } - else if (type->nc_type_class == NC_OPAQUE) - { - /* Create the opaque type. */ - if ((type->hdf_typeid = H5Tcreate(H5T_OPAQUE, type->size)) < 0) - return NC_EHDFERR; - } - else if (type->nc_type_class == NC_ENUM) - { - NC_ENUM_MEMBER_INFO_T *enum_m; - - if (!type->u.e.enum_member) - return NC_EINVAL; - - /* Find the HDF typeid of the base type of this enum. */ - if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.e.base_nc_typeid, - &type->u.e.base_hdf_typeid, type->endianness))) - return retval; - - /* Create an enum type. */ - if ((type->hdf_typeid = H5Tenum_create(type->u.e.base_hdf_typeid)) < 0) - return NC_EHDFERR; - - /* Add all the members to the HDF5 type. */ - for (enum_m = type->u.e.enum_member; enum_m; enum_m = enum_m->l.next) - if (H5Tenum_insert(type->hdf_typeid, enum_m->name, enum_m->value) < 0) - return NC_EHDFERR; - } - else - { - LOG((0, "Unknown class: %d", type->nc_type_class)); - return NC_EBADTYPE; - } - - /* Commit the type. */ - if (H5Tcommit(grp->hdf_grpid, type->name, type->hdf_typeid) < 0) - return NC_EHDFERR; - type->committed = NC_TRUE; - LOG((4, "just committed type %s, HDF typeid: 0x%x", type->name, - type->hdf_typeid)); - - /* Later we will always use the native typeid. In this case, it is - * a copy of the same type pointed to by hdf_typeid, but it's - * easier to maintain a copy. */ - if ((type->native_hdf_typeid = H5Tget_native_type(type->hdf_typeid, - H5T_DIR_DEFAULT)) < 0) - return NC_EHDFERR; - - return NC_NOERR; -} - -/* Write an attribute, with value 1, to indicate that strict NC3 rules - * apply to this file. */ -static int -write_nc3_strict_att(hid_t hdf_grpid) -{ - hid_t attid = 0, spaceid = 0; - int one = 1, num, a; - char att_name[NC_MAX_HDF5_NAME + 1]; - int retval = NC_NOERR; - htri_t attr_exists; - - /* If the attribute already exists, call that a success and return - * NC_NOERR. */ - if ((attr_exists = H5Aexists(hdf_grpid, NC3_STRICT_ATT_NAME)) < 0) - return NC_EHDFERR; - if (attr_exists) - return NC_NOERR; - - /* Create the attribute to mark this as a file that needs to obey - * strict netcdf-3 rules. */ - if ((spaceid = H5Screate(H5S_SCALAR)) < 0) - BAIL(NC_EFILEMETA); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - if ((attid = H5Acreate(hdf_grpid, NC3_STRICT_ATT_NAME, - H5T_NATIVE_INT, spaceid, H5P_DEFAULT)) < 0) - BAIL(NC_EFILEMETA); - if (H5Awrite(attid, H5T_NATIVE_INT, &one) < 0) - BAIL(NC_EFILEMETA); - - exit: - if (spaceid > 0 && (H5Sclose(spaceid) < 0)) - BAIL2(NC_EFILEMETA); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (attid > 0 && (H5Aclose(attid) < 0)) - BAIL2(NC_EFILEMETA); - return retval; -} - -static int -create_group(NC_GRP_INFO_T *grp) -{ - hid_t gcpl_id = 0; - int retval = NC_NOERR;; - - assert(grp); - - /* If this is not the root group, create it in the HDF5 file. */ - if (grp->parent) - { - /* Create group, with link_creation_order set in the group - * creation property list. */ - if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */ - if (H5Pset_obj_track_times(gcpl_id,0)<0) - BAIL(NC_EHDFERR); - - if (H5Pset_link_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0) - BAIL(NC_EHDFERR); - if (H5Pset_attr_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0) - BAIL(NC_EHDFERR); - if ((grp->hdf_grpid = H5Gcreate2(grp->parent->hdf_grpid, grp->name, - H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) - BAIL(NC_EHDFERR); - if (H5Pclose(gcpl_id) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - } - else - { - /* Since this is the root group, we have to open it. */ - if ((grp->hdf_grpid = H5Gopen2(grp->nc4_info->hdfid, "/", H5P_DEFAULT)) < 0) - BAIL(NC_EFILEMETA); - } - return NC_NOERR; - - exit: - if (gcpl_id > 0 && H5Pclose(gcpl_id) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - if (grp->hdf_grpid > 0 && H5Gclose(grp->hdf_grpid) < 0) - BAIL2(NC_EHDFERR); - return retval; -} - -/* After all the datasets of the file have been read, it's time to - * sort the wheat from the chaff. Which of the datasets are netCDF - * dimensions, and which are coordinate variables, and which are - * non-coordinate variables. */ -static int -attach_dimscales(NC_GRP_INFO_T *grp) -{ - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim1; - NC_GRP_INFO_T *g; - int d; - int retval = NC_NOERR; - - /* Attach dimension scales. */ - for (var = grp->var; var; var = var->l.next) - { - /* Scales themselves do not attach. But I really wish they - * would. */ - if (var->dimscale) - { - /* If this is a multidimensional coordinate variable, it will - * have a special coords attribute (read earlier) with a list - * of the dimensions for this variable. */ - } - else /* not a dimscale... */ - { - /* Find the scale for each dimension and attach it. */ - for (d = 0; d < var->ndims; d++) - { - /* Is there a dimscale for this dimension? */ - if (var->dimscale_attached) - { - if (!var->dimscale_attached[d]) - { - hid_t dim_datasetid; /* Dataset ID for dimension */ - dim1 = var->dim[d]; - assert(dim1 && dim1->dimid == var->dimids[d]); - - LOG((2, "%s: attaching scale for dimid %d to var %s", - __func__, var->dimids[d], var->name)); - - /* Find dataset ID for dimension */ - if (dim1->coord_var) - dim_datasetid = dim1->coord_var->hdf_datasetid; - else - dim_datasetid = dim1->hdf_dimscaleid; - assert(dim_datasetid > 0); - if (H5DSattach_scale(var->hdf_datasetid, dim_datasetid, d) < 0) - BAIL(NC_EHDFERR); - var->dimscale_attached[d] = NC_TRUE; - } - - /* If we didn't find a dimscale to attach, that's a problem! */ - if (!var->dimscale_attached[d]) - { - LOG((0, "no dimscale found!")); - return NC_EDIMSCALE; - } - } - } - } - } - - exit: - return retval; -} - -static int -var_exists(hid_t grpid, char *name, nc_bool_t *exists) -{ - htri_t link_exists; - - /* Reset the boolean */ - *exists = NC_FALSE; - - /* Check if the object name exists in the group */ - if ((link_exists = H5Lexists(grpid, name, H5P_DEFAULT)) < 0) - return NC_EHDFERR; - if (link_exists) - { - H5G_stat_t statbuf; - - /* Get info about the object */ - if (H5Gget_objinfo(grpid, name, 1, &statbuf) < 0) - return NC_EHDFERR; - - if (H5G_DATASET == statbuf.type) - *exists = NC_TRUE; - } - - return NC_NOERR; -} - -/* This function writes a variable. The principle difficulty comes - * from the possibility that this is a coordinate variable, and was - * already written to the file as a dimension-only dimscale. If this - * occurs, then it must be deleted and recreated. */ -static int -write_var(NC_VAR_INFO_T *var, NC_GRP_INFO_T *grp, nc_bool_t write_dimid) -{ - nc_bool_t replace_existing_var = NC_FALSE; - int retval; - - LOG((4, "%s: writing var %s", __func__, var->name)); - - /* If the variable has already been created & the fill value changed, - * indicate that the existing variable should be replaced. */ - if (var->created && var->fill_val_changed) - { - replace_existing_var = NC_TRUE; - var->fill_val_changed = NC_FALSE; - /* If the variable is going to be replaced, - we need to flag any other attributes associated - with the variable as 'dirty', or else - *only* the fill value attribute will be copied over - and the rest will be lost. See: - - * https://github.com/Unidata/netcdf-c/issues/239 */ - - flag_atts_dirty(&var->att); - } - - /* Is this a coordinate var that has already been created in - * the HDF5 file as a dimscale dataset? Check for dims with the - * same name in this group. If there is one, check to see if - * this object exists in the HDF group. */ - if (var->became_coord_var) - { - NC_DIM_INFO_T *d1; - - for (d1 = grp->dim; d1; d1 = d1->l.next) - if (!strcmp(d1->name, var->name)) - { - nc_bool_t exists; - - if ((retval = var_exists(grp->hdf_grpid, var->name, &exists))) - return retval; - if (exists) - { - /* Indicate that the variable already exists, and should be replaced */ - replace_existing_var = NC_TRUE; - flag_atts_dirty(&var->att); - break; - } - } - } - - /* Check dims if the variable will be replaced, so that the dimensions - * will be de-attached and re-attached correctly. */ - /* (Note: There's a temptation to merge this loop over the dimensions with - * the prior loop over dimensions, but that blurs the line over the - * purpose of them, so they are currently separate. If performance - * becomes an issue here, it would be possible to merge them. -QAK) - */ - if (replace_existing_var) - { - NC_DIM_INFO_T *d1; - - for (d1 = grp->dim; d1; d1 = d1->l.next) - if (!strcmp(d1->name, var->name)) - { - nc_bool_t exists; - - if ((retval = var_exists(grp->hdf_grpid, var->name, &exists))) - return retval; - if (exists) - { - hid_t dim_datasetid; /* Dataset ID for dimension */ - - /* Find dataset ID for dimension */ - if (d1->coord_var) - dim_datasetid = d1->coord_var->hdf_datasetid; - else - dim_datasetid = d1->hdf_dimscaleid; - assert(dim_datasetid > 0); - - /* If we're replacing an existing dimscale dataset, go to - * every var in the file and detach this dimension scale, - * because we have to delete it. */ - if ((retval = rec_detach_scales(grp->nc4_info->root_grp, - var->dimids[0], dim_datasetid))) - return retval; - break; - } - } - } - - /* If this is not a dimension scale, do this stuff. */ - if (var->was_coord_var && var->dimscale_attached) - { - /* If the variable already exists in the file, Remove any dimension scale - * attributes from it, if they exist. */ - /* (The HDF5 Dimension Scale API should really have an API routine - * for making a dataset not a scale. -QAK) */ - if (var->created) - { - htri_t attr_exists; - - /* (We could do a better job here and verify that the attributes are - * really dimension scale 'CLASS' & 'NAME' attributes, but that would be - * poking about in the HDF5 DimScale internal data) */ - if ((attr_exists = H5Aexists(var->hdf_datasetid, "CLASS")) < 0) - BAIL(NC_EHDFERR); - if (attr_exists) - { - if (H5Adelete(var->hdf_datasetid, "CLASS") < 0) - BAIL(NC_EHDFERR); - } - if ((attr_exists = H5Aexists(var->hdf_datasetid, "NAME")) < 0) - BAIL(NC_EHDFERR); - if (attr_exists) - { - if (H5Adelete(var->hdf_datasetid, "NAME") < 0) - BAIL(NC_EHDFERR); - } - } - - if (var->dimscale_attached) - { - int d; - - /* If this is a regular var, detach all its dim scales. */ - for (d = 0; d < var->ndims; d++) - if (var->dimscale_attached[d]) - { - hid_t dim_datasetid; /* Dataset ID for dimension */ - NC_DIM_INFO_T *dim1 = var->dim[d]; - assert(dim1 && dim1->dimid == var->dimids[d]); - - /* Find dataset ID for dimension */ - if (dim1->coord_var) - dim_datasetid = dim1->coord_var->hdf_datasetid; - else - dim_datasetid = dim1->hdf_dimscaleid; - assert(dim_datasetid > 0); - - if (H5DSdetach_scale(var->hdf_datasetid, dim_datasetid, d) < 0) - BAIL(NC_EHDFERR); - var->dimscale_attached[d] = NC_FALSE; - } - } - } - - /* Delete the HDF5 dataset that is to be replaced. */ - if (replace_existing_var) - { - /* Free the HDF5 dataset id. */ - if (var->hdf_datasetid && H5Dclose(var->hdf_datasetid) < 0) - BAIL(NC_EHDFERR); - var->hdf_datasetid = 0; - - /* Now delete the variable. */ - if (H5Gunlink(grp->hdf_grpid, var->name) < 0) - return NC_EDIMMETA; - } - - /* Create the dataset. */ - if (var->is_new_var || replace_existing_var) - { - if ((retval = var_create_dataset(grp, var, write_dimid))) - return retval; - } - else - { - if (write_dimid && var->ndims) - if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0]))) - BAIL(retval); - } - - if (replace_existing_var) - { - /* If this is a dimension scale, reattach the scale everywhere it - * is used. (Recall that netCDF dimscales are always 1-D). */ - if(var->dimscale) - { - if ((retval = rec_reattach_scales(grp->nc4_info->root_grp, - var->dimids[0], var->hdf_datasetid))) - return retval; - } - /* If it's not a dimension scale, clear the dimscale attached flags, - * so the dimensions are re-attached. */ - else - { - if (var->dimscale_attached) - memset(var->dimscale_attached, 0, sizeof(nc_bool_t) * var->ndims); - } - } - - /* Clear coord. var state transition flags */ - var->was_coord_var = NC_FALSE; - var->became_coord_var = NC_FALSE; - - /* Now check the attributes for this var. */ - if (var->attr_dirty) - { - /* Write attributes for this var. */ - if ((retval = write_attlist(var->att, var->varid, grp))) - BAIL(retval); - var->attr_dirty = NC_FALSE; - } - - return NC_NOERR; - exit: - return retval; -} - -static int -write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, nc_bool_t write_dimid) -{ - int retval; - - /* If there's no dimscale dataset for this dim, create one, - * and mark that it should be hidden from netCDF as a - * variable. (That is, it should appear as a dimension - * without an associated variable.) */ - if (0 == dim->hdf_dimscaleid) - { - hid_t spaceid, create_propid; - hsize_t dims[1], max_dims[1], chunk_dims[1] = {1}; - char dimscale_wo_var[NC_MAX_NAME]; - - LOG((4, "%s: creating dim %s", __func__, dim->name)); - - /* Sanity check */ - assert(NULL == dim->coord_var); - - /* Create a property list. If this dimension scale is - * unlimited (i.e. it's an unlimited dimension), then set - * up chunking, with a chunksize of 1. */ - if ((create_propid = H5Pcreate(H5P_DATASET_CREATE)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists++; -#endif - - /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */ - if (H5Pset_obj_track_times(create_propid,0)<0) - BAIL(NC_EHDFERR); - - dims[0] = dim->len; - max_dims[0] = dim->len; - if (dim->unlimited) - { - max_dims[0] = H5S_UNLIMITED; - if (H5Pset_chunk(create_propid, 1, chunk_dims) < 0) - BAIL(NC_EHDFERR); - } - - /* Set up space. */ - if ((spaceid = H5Screate_simple(1, dims, max_dims)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - - if (H5Pset_attr_creation_order(create_propid, H5P_CRT_ORDER_TRACKED| - H5P_CRT_ORDER_INDEXED) < 0) - BAIL(NC_EHDFERR); - - /* Create the dataset that will be the dimension scale. */ - LOG((4, "%s: about to H5Dcreate1 a dimscale dataset %s", __func__, dim->name)); - if ((dim->hdf_dimscaleid = H5Dcreate1(grp->hdf_grpid, dim->name, H5T_IEEE_F32BE, - spaceid, create_propid)) < 0) - BAIL(NC_EHDFERR); - - /* Close the spaceid and create_propid. */ - if (H5Sclose(spaceid) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (H5Pclose(create_propid) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_plists--; -#endif - - /* Indicate that this is a scale. Also indicate that not - * be shown to the user as a variable. It is hidden. It is - * a DIM WITHOUT A VARIABLE! */ - sprintf(dimscale_wo_var, "%s%10d", DIM_WITHOUT_VARIABLE, (int)dim->len); - if (H5DSset_scale(dim->hdf_dimscaleid, dimscale_wo_var) < 0) - BAIL(NC_EHDFERR); - } - - /* Did we extend an unlimited dimension? */ - if (dim->extended) - { - NC_VAR_INFO_T *v1; - - assert(dim->unlimited); - /* If this is a dimension without a variable, then update - * the secret length information at the end of the NAME - * attribute. */ - for (v1 = grp->var; v1; v1 = v1->l.next) - if (!strcmp(v1->name, dim->name)) - break; - - if (v1) - { - hsize_t *new_size = NULL; - NC_DIM_INFO_T *dim1; - int d1; - - /* Extend the dimension scale dataset to reflect the new - * length of the dimension. */ - if (!(new_size = malloc(v1->ndims * sizeof(hsize_t)))) - BAIL(NC_ENOMEM); - for (d1 = 0; d1 < v1->ndims; d1++) - { - assert(v1->dim[d1] && v1->dim[d1]->dimid == v1->dimids[d1]); - new_size[d1] = v1->dim[d1]->len; - } - if (H5Dset_extent(v1->hdf_datasetid, new_size) < 0) { - free(new_size); - BAIL(NC_EHDFERR); - } - free(new_size); - } - } - - /* If desired, write the secret dimid. This will be used instead of - * the dimid that the dimension would otherwise receive based on - * creation order. This can be necessary when dims and their - * coordinate variables were created in different order. */ - if (write_dimid && dim->hdf_dimscaleid) - if ((retval = write_netcdf4_dimid(dim->hdf_dimscaleid, dim->dimid))) - BAIL(retval); - - return NC_NOERR; - exit: - - return retval; -} - -/* Recursively determine if there is a mismatch between order of - * coordinate creation and associated dimensions in this group or any - * subgroups, to find out if we have to handle that situation. Also - * check if there are any multidimensional coordinate variables - * defined, which require the same treatment to fix a potential bug - * when such variables occur in subgroups. */ -int -nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp) -{ - NC_VAR_INFO_T *var; - NC_GRP_INFO_T *child_grp; - int last_dimid = -1; - int retval; - - /* Iterate over variables in this group */ - for (var = grp->var; var; var = var->l.next) - { - /* Only matters for dimension scale variables, with non-scalar dimensionality */ - if (var->dimscale && var->ndims) - { - /* If the user writes coord vars in a different order then he - * defined their dimensions, then, when the file is reopened, the - * order of the dimids will change to match the order of the coord - * vars. Detect if this is about to happen. */ - if (var->dimids[0] < last_dimid) - { - LOG((5, "%s: %s is out of order coord var", __func__, var->name)); - *bad_coord_orderp = NC_TRUE; - return NC_NOERR; - } - last_dimid = var->dimids[0]; - - /* If there are multidimensional coordinate variables defined, then - * it's also necessary to preserve dimension IDs when the file is - * reopened ... */ - if (var->ndims > 1) - { - LOG((5, "%s: %s is multidimensional coord var", __func__, var->name)); - *bad_coord_orderp = NC_TRUE; - return NC_NOERR; - } - - /* Did the user define a dimension, end define mode, reenter define - * mode, and then define a coordinate variable for that dimension? - * If so, dimensions will be out of order. */ - if (var->is_new_var || var->became_coord_var) - { - LOG((5, "%s: coord var defined after enddef/redef", __func__)); - *bad_coord_orderp = NC_TRUE; - return NC_NOERR; - } - } - } - - /* If there are any child groups, check them also for this condition. */ - for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next) - if ((retval = nc4_rec_detect_need_to_preserve_dimids(child_grp, bad_coord_orderp))) - return retval; - - return NC_NOERR; -} - - -/* Recursively write all the metadata in a group. Groups and types - * have all already been written. Propagate bad cooordinate order to - * subgroups, if detected. */ -int -nc4_rec_write_metadata(NC_GRP_INFO_T *grp, nc_bool_t bad_coord_order) -{ - NC_DIM_INFO_T *dim; - NC_VAR_INFO_T *var; - NC_GRP_INFO_T *child_grp; - int coord_varid = -1; - - int retval; - assert(grp && grp->name && grp->hdf_grpid); - LOG((3, "%s: grp->name %s, bad_coord_order %d", __func__, grp->name, bad_coord_order)); - - /* Write global attributes for this group. */ - if ((retval = write_attlist(grp->att, NC_GLOBAL, grp))) - return retval; - /* Set the pointers to the beginning of the list of dims & vars in this - * group. */ - dim = grp->dim; - var = grp->var; - - /* Because of HDF5 ordering the dims and vars have to be stored in - * this way to ensure that the dims and coordinate vars come out in - * the correct order. */ - while (dim || var) - { - nc_bool_t found_coord, wrote_coord; - - /* Write non-coord dims in order, stopping at the first one that - * has an associated coord var. */ - for (found_coord = NC_FALSE; dim && !found_coord; dim = dim->l.next) - { - if (!dim->coord_var) - { - if ((retval = write_dim(dim, grp, bad_coord_order))) - return retval; - } - else - { - coord_varid = dim->coord_var->varid; - found_coord = NC_TRUE; - } - } - - /* Write each var. When we get to the coord var we are waiting - * for (if any), then we break after writing it. */ - for (wrote_coord = NC_FALSE; var && !wrote_coord; var = var->l.next) - { - if ((retval = write_var(var, grp, bad_coord_order))) - return retval; - if (found_coord && var->varid == coord_varid) - wrote_coord = NC_TRUE; - } - } /* end while */ - - if ((retval = attach_dimscales(grp))) - return retval; - - /* If there are any child groups, write their metadata. */ - for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next) - if ((retval = nc4_rec_write_metadata(child_grp, bad_coord_order))) - return retval; - - return NC_NOERR; -} - -/* Recursively write all groups and types. */ -int -nc4_rec_write_groups_types(NC_GRP_INFO_T *grp) -{ - NC_GRP_INFO_T *child_grp; - NC_TYPE_INFO_T *type; - int retval; - - assert(grp && grp->name); - LOG((3, "%s: grp->name %s", __func__, grp->name)); - - /* Create the group in the HDF5 file if it doesn't exist. */ - if (!grp->hdf_grpid) - if ((retval = create_group(grp))) - return retval; - - /* If this is the root group of a file with strict NC3 rules, write - * an attribute. But don't leave the attribute open. */ - if (!grp->parent && (grp->nc4_info->cmode & NC_CLASSIC_MODEL)) - if ((retval = write_nc3_strict_att(grp->hdf_grpid))) - return retval; - - /* If there are any user-defined types, write them now. */ - for (type = grp->type; type; type = type->l.next) - if ((retval = commit_type(grp, type))) - return retval; - - /* If there are any child groups, write their groups and types. */ - for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next) - if ((retval = nc4_rec_write_groups_types(child_grp))) - return retval; - - return NC_NOERR; -} - -/*! Copy data from one buffer to another, performing appropriate data conversion. - - This function will copy data from one buffer to another, in - accordance with the types. Range errors will be noted, and the fill - value used (or the default fill value if none is supplied) for - values that overflow the type. - - I should be able to take this out when HDF5 does the right thing - with data type conversion. - - Ed Hartnett, 11/15/3 -*/ -int -nc4_convert_type(const void *src, void *dest, - const nc_type src_type, const nc_type dest_type, - const size_t len, int *range_error, - const void *fill_value, int strict_nc3, int src_long, - int dest_long) -{ - char *cp, *cp1; - float *fp, *fp1; - double *dp, *dp1; - int *ip, *ip1; - signed long *lp, *lp1; - short *sp, *sp1; - signed char *bp, *bp1; - unsigned char *ubp, *ubp1; - unsigned short *usp, *usp1; - unsigned int *uip, *uip1; - long long *lip, *lip1; - unsigned long long *ulip, *ulip1; - size_t count = 0; - - *range_error = 0; - LOG((3, "%s: len %d src_type %d dest_type %d src_long %d dest_long %d", - __func__, len, src_type, dest_type, src_long, dest_long)); - - /* OK, this is ugly. If you can think of anything better, I'm open - to suggestions! - - Note that we don't use a default fill value for type - NC_BYTE. This is because Lord Voldemort cast a nofilleramous spell - at Harry Potter, but it bounced off his scar and hit the netcdf-4 - code. - */ - switch (src_type) - { - case NC_CHAR: - switch (dest_type) - { - case NC_CHAR: - for (cp = (char *)src, cp1 = dest; count < len; count++) - *cp1++ = *cp++; - break; - default: - LOG((0, "%s: Uknown destination type.", __func__)); - } - break; - - case NC_BYTE: - switch (dest_type) - { - case NC_BYTE: - for (bp = (signed char *)src, bp1 = dest; count < len; count++) - *bp1++ = *bp++; - break; - case NC_UBYTE: - for (bp = (signed char *)src, ubp = dest; count < len; count++) - { - if (*bp < 0) - (*range_error)++; - *ubp++ = *bp++; - } - break; - case NC_SHORT: - for (bp = (signed char *)src, sp = dest; count < len; count++) - *sp++ = *bp++; - break; - case NC_USHORT: - for (bp = (signed char *)src, usp = dest; count < len; count++) - { - if (*bp < 0) - (*range_error)++; - *usp++ = *bp++; - } - break; - case NC_INT: - if (dest_long) - { - for (bp = (signed char *)src, lp = dest; count < len; count++) - *lp++ = *bp++; - break; - } - else - { - for (bp = (signed char *)src, ip = dest; count < len; count++) - *ip++ = *bp++; - break; - } - case NC_UINT: - for (bp = (signed char *)src, uip = dest; count < len; count++) - { - if (*bp < 0) - (*range_error)++; - *uip++ = *bp++; - } - break; - case NC_INT64: - for (bp = (signed char *)src, lip = dest; count < len; count++) - *lip++ = *bp++; - break; - case NC_UINT64: - for (bp = (signed char *)src, ulip = dest; count < len; count++) - { - if (*bp < 0) - (*range_error)++; - *ulip++ = *bp++; - } - break; - case NC_FLOAT: - for (bp = (signed char *)src, fp = dest; count < len; count++) - *fp++ = *bp++; - break; - case NC_DOUBLE: - for (bp = (signed char *)src, dp = dest; count < len; count++) - *dp++ = *bp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_UBYTE: - switch (dest_type) - { - case NC_BYTE: - for (ubp = (unsigned char *)src, bp = dest; count < len; count++) - { - if (!strict_nc3 && *ubp > X_SCHAR_MAX) - (*range_error)++; - *bp++ = *ubp++; - } - break; - case NC_SHORT: - for (ubp = (unsigned char *)src, sp = dest; count < len; count++) - *sp++ = *ubp++; - break; - case NC_UBYTE: - for (ubp = (unsigned char *)src, ubp1 = dest; count < len; count++) - *ubp1++ = *ubp++; - break; - case NC_USHORT: - for (ubp = (unsigned char *)src, usp = dest; count < len; count++) - *usp++ = *ubp++; - break; - case NC_INT: - if (dest_long) - { - for (ubp = (unsigned char *)src, lp = dest; count < len; count++) - *lp++ = *ubp++; - break; - } - else - { - for (ubp = (unsigned char *)src, ip = dest; count < len; count++) - *ip++ = *ubp++; - break; - } - case NC_UINT: - for (ubp = (unsigned char *)src, uip = dest; count < len; count++) - *uip++ = *ubp++; - break; - case NC_INT64: - for (ubp = (unsigned char *)src, lip = dest; count < len; count++) - *lip++ = *ubp++; - break; - case NC_UINT64: - for (ubp = (unsigned char *)src, ulip = dest; count < len; count++) - *ulip++ = *ubp++; - break; - case NC_FLOAT: - for (ubp = (unsigned char *)src, fp = dest; count < len; count++) - *fp++ = *ubp++; - break; - case NC_DOUBLE: - for (ubp = (unsigned char *)src, dp = dest; count < len; count++) - *dp++ = *ubp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_SHORT: - switch (dest_type) - { - case NC_UBYTE: - for (sp = (short *)src, ubp = dest; count < len; count++) - { - if (*sp > X_UCHAR_MAX || *sp < 0) - (*range_error)++; - *ubp++ = *sp++; - } - break; - case NC_BYTE: - for (sp = (short *)src, bp = dest; count < len; count++) - { - if (*sp > X_SCHAR_MAX || *sp < X_SCHAR_MIN) - (*range_error)++; - *bp++ = *sp++; - } - break; - case NC_SHORT: - for (sp = (short *)src, sp1 = dest; count < len; count++) - *sp1++ = *sp++; - break; - case NC_USHORT: - for (sp = (short *)src, usp = dest; count < len; count++) - { - if (*sp < 0) - (*range_error)++; - *usp++ = *sp++; - } - break; - case NC_INT: - if (dest_long) - for (sp = (short *)src, lp = dest; count < len; count++) - *lp++ = *sp++; - else - for (sp = (short *)src, ip = dest; count < len; count++) - *ip++ = *sp++; - break; - case NC_UINT: - for (sp = (short *)src, uip = dest; count < len; count++) - { - if (*sp < 0) - (*range_error)++; - *uip++ = *sp++; - } - break; - case NC_INT64: - for (sp = (short *)src, lip = dest; count < len; count++) - *lip++ = *sp++; - break; - case NC_UINT64: - for (sp = (short *)src, ulip = dest; count < len; count++) - { - if (*sp < 0) - (*range_error)++; - *ulip++ = *sp++; - } - break; - case NC_FLOAT: - for (sp = (short *)src, fp = dest; count < len; count++) - *fp++ = *sp++; - break; - case NC_DOUBLE: - for (sp = (short *)src, dp = dest; count < len; count++) - *dp++ = *sp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_USHORT: - switch (dest_type) - { - case NC_UBYTE: - for (usp = (unsigned short *)src, ubp = dest; count < len; count++) - { - if (*usp > X_UCHAR_MAX) - (*range_error)++; - *ubp++ = *usp++; - } - break; - case NC_BYTE: - for (usp = (unsigned short *)src, bp = dest; count < len; count++) - { - if (*usp > X_SCHAR_MAX) - (*range_error)++; - *bp++ = *usp++; - } - break; - case NC_SHORT: - for (usp = (unsigned short *)src, sp = dest; count < len; count++) - { - if (*usp > X_SHORT_MAX) - (*range_error)++; - *sp++ = *usp++; - } - break; - case NC_USHORT: - for (usp = (unsigned short *)src, usp1 = dest; count < len; count++) - *usp1++ = *usp++; - break; - case NC_INT: - if (dest_long) - for (usp = (unsigned short *)src, lp = dest; count < len; count++) - *lp++ = *usp++; - else - for (usp = (unsigned short *)src, ip = dest; count < len; count++) - *ip++ = *usp++; - break; - case NC_UINT: - for (usp = (unsigned short *)src, uip = dest; count < len; count++) - *uip++ = *usp++; - break; - case NC_INT64: - for (usp = (unsigned short *)src, lip = dest; count < len; count++) - *lip++ = *usp++; - break; - case NC_UINT64: - for (usp = (unsigned short *)src, ulip = dest; count < len; count++) - *ulip++ = *usp++; - break; - case NC_FLOAT: - for (usp = (unsigned short *)src, fp = dest; count < len; count++) - *fp++ = *usp++; - break; - case NC_DOUBLE: - for (usp = (unsigned short *)src, dp = dest; count < len; count++) - *dp++ = *usp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_INT: - if (src_long) - { - switch (dest_type) - { - case NC_UBYTE: - for (lp = (long *)src, ubp = dest; count < len; count++) - { - if (*lp > X_UCHAR_MAX || *lp < 0) - (*range_error)++; - *ubp++ = *lp++; - } - break; - case NC_BYTE: - for (lp = (long *)src, bp = dest; count < len; count++) - { - if (*lp > X_SCHAR_MAX || *lp < X_SCHAR_MIN) - (*range_error)++; - *bp++ = *lp++; - } - break; - case NC_SHORT: - for (lp = (long *)src, sp = dest; count < len; count++) - { - if (*lp > X_SHORT_MAX || *lp < X_SHORT_MIN) - (*range_error)++; - *sp++ = *lp++; - } - break; - case NC_USHORT: - for (lp = (long *)src, usp = dest; count < len; count++) - { - if (*lp > X_USHORT_MAX || *lp < 0) - (*range_error)++; - *usp++ = *lp++; - } - break; - case NC_INT: /* src is long */ - if (dest_long) - { - for (lp = (long *)src, lp1 = dest; count < len; count++) - { - if (*lp > X_LONG_MAX || *lp < X_LONG_MIN) - (*range_error)++; - *lp1++ = *lp++; - } - } - else /* dest is int */ - { - for (lp = (long *)src, ip = dest; count < len; count++) - { - if (*lp > X_INT_MAX || *lp < X_INT_MIN) - (*range_error)++; - *ip++ = *lp++; - } - } - break; - case NC_UINT: - for (lp = (long *)src, uip = dest; count < len; count++) - { - if (*lp > X_UINT_MAX || *lp < 0) - (*range_error)++; - *uip++ = *lp++; - } - break; - case NC_INT64: - for (lp = (long *)src, lip = dest; count < len; count++) - *lip++ = *lp++; - break; - case NC_UINT64: - for (lp = (long *)src, ulip = dest; count < len; count++) - { - if (*lp < 0) - (*range_error)++; - *ulip++ = *lp++; - } - break; - case NC_FLOAT: - for (lp = (long *)src, fp = dest; count < len; count++) - *fp++ = *lp++; - break; - case NC_DOUBLE: - for (lp = (long *)src, dp = dest; count < len; count++) - *dp++ = *lp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - } - else - { - switch (dest_type) - { - case NC_UBYTE: - for (ip = (int *)src, ubp = dest; count < len; count++) - { - if (*ip > X_UCHAR_MAX || *ip < 0) - (*range_error)++; - *ubp++ = *ip++; - } - break; - case NC_BYTE: - for (ip = (int *)src, bp = dest; count < len; count++) - { - if (*ip > X_SCHAR_MAX || *ip < X_SCHAR_MIN) - (*range_error)++; - *bp++ = *ip++; - } - break; - case NC_SHORT: - for (ip = (int *)src, sp = dest; count < len; count++) - { - if (*ip > X_SHORT_MAX || *ip < X_SHORT_MIN) - (*range_error)++; - *sp++ = *ip++; - } - break; - case NC_USHORT: - for (ip = (int *)src, usp = dest; count < len; count++) - { - if (*ip > X_USHORT_MAX || *ip < 0) - (*range_error)++; - *usp++ = *ip++; - } - break; - case NC_INT: /* src is int */ - if (dest_long) - { - for (ip = (int *)src, lp1 = dest; count < len; count++) - { - if (*ip > X_LONG_MAX || *ip < X_LONG_MIN) - (*range_error)++; - *lp1++ = *ip++; - } - } - else /* dest is int */ - { - for (ip = (int *)src, ip1 = dest; count < len; count++) - { - if (*ip > X_INT_MAX || *ip < X_INT_MIN) - (*range_error)++; - *ip1++ = *ip++; - } - } - break; - case NC_UINT: - for (ip = (int *)src, uip = dest; count < len; count++) - { - if (*ip > X_UINT_MAX || *ip < 0) - (*range_error)++; - *uip++ = *ip++; - } - break; - case NC_INT64: - for (ip = (int *)src, lip = dest; count < len; count++) - *lip++ = *ip++; - break; - case NC_UINT64: - for (ip = (int *)src, ulip = dest; count < len; count++) - { - if (*ip < 0) - (*range_error)++; - *ulip++ = *ip++; - } - break; - case NC_FLOAT: - for (ip = (int *)src, fp = dest; count < len; count++) - *fp++ = *ip++; - break; - case NC_DOUBLE: - for (ip = (int *)src, dp = dest; count < len; count++) - *dp++ = *ip++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - } - break; - - case NC_UINT: - switch (dest_type) - { - case NC_UBYTE: - for (uip = (unsigned int *)src, ubp = dest; count < len; count++) - { - if (*uip > X_UCHAR_MAX) - (*range_error)++; - *ubp++ = *uip++; - } - break; - case NC_BYTE: - for (uip = (unsigned int *)src, bp = dest; count < len; count++) - { - if (*uip > X_SCHAR_MAX) - (*range_error)++; - *bp++ = *uip++; - } - break; - case NC_SHORT: - for (uip = (unsigned int *)src, sp = dest; count < len; count++) - { - if (*uip > X_SHORT_MAX) - (*range_error)++; - *sp++ = *uip++; - } - break; - case NC_USHORT: - for (uip = (unsigned int *)src, usp = dest; count < len; count++) - { - if (*uip > X_USHORT_MAX) - (*range_error)++; - *usp++ = *uip++; - } - break; - case NC_INT: - if (dest_long) - for (uip = (unsigned int *)src, lp = dest; count < len; count++) - { - if (*uip > X_LONG_MAX) - (*range_error)++; - *lp++ = *uip++; - } - else - for (uip = (unsigned int *)src, ip = dest; count < len; count++) - { - if (*uip > X_INT_MAX) - (*range_error)++; - *ip++ = *uip++; - } - break; - case NC_UINT: - for (uip = (unsigned int *)src, uip1 = dest; count < len; count++) - { - if (*uip > X_UINT_MAX) - (*range_error)++; - *uip1++ = *uip++; - } - break; - case NC_INT64: - for (uip = (unsigned int *)src, lip = dest; count < len; count++) - *lip++ = *uip++; - break; - case NC_UINT64: - for (uip = (unsigned int *)src, ulip = dest; count < len; count++) - *ulip++ = *uip++; - break; - case NC_FLOAT: - for (uip = (unsigned int *)src, fp = dest; count < len; count++) - *fp++ = *uip++; - break; - case NC_DOUBLE: - for (uip = (unsigned int *)src, dp = dest; count < len; count++) - *dp++ = *uip++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_INT64: - switch (dest_type) - { - case NC_UBYTE: - for (lip = (long long *)src, ubp = dest; count < len; count++) - { - if (*lip > X_UCHAR_MAX || *lip < 0) - (*range_error)++; - *ubp++ = *lip++; - } - break; - case NC_BYTE: - for (lip = (long long *)src, bp = dest; count < len; count++) - { - if (*lip > X_SCHAR_MAX || *lip < X_SCHAR_MIN) - (*range_error)++; - *bp++ = *lip++; - } - break; - case NC_SHORT: - for (lip = (long long *)src, sp = dest; count < len; count++) - { - if (*lip > X_SHORT_MAX || *lip < X_SHORT_MIN) - (*range_error)++; - *sp++ = *lip++; - } - break; - case NC_USHORT: - for (lip = (long long *)src, usp = dest; count < len; count++) - { - if (*lip > X_USHORT_MAX || *lip < 0) - (*range_error)++; - *usp++ = *lip++; - } - break; - case NC_UINT: - for (lip = (long long *)src, uip = dest; count < len; count++) - { - if (*lip > X_UINT_MAX || *lip < 0) - (*range_error)++; - *uip++ = *lip++; - } - break; - case NC_INT: - if (dest_long) - for (lip = (long long *)src, lp = dest; count < len; count++) - { - if (*lip > X_LONG_MAX || *lip < X_LONG_MIN) - (*range_error)++; - *lp++ = *lip++; - } - else - for (lip = (long long *)src, ip = dest; count < len; count++) - { - if (*lip > X_INT_MAX || *lip < X_INT_MIN) - (*range_error)++; - *ip++ = *lip++; - } - break; - case NC_INT64: - for (lip = (long long *)src, lip1 = dest; count < len; count++) - *lip1++ = *lip++; - break; - case NC_UINT64: - for (lip = (long long *)src, ulip = dest; count < len; count++) - { - if (*lip < 0) - (*range_error)++; - *ulip++ = *lip++; - } - break; - case NC_FLOAT: - for (lip = (long long *)src, fp = dest; count < len; count++) - *fp++ = *lip++; - break; - case NC_DOUBLE: - for (lip = (long long *)src, dp = dest; count < len; count++) - *dp++ = *lip++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_UINT64: - switch (dest_type) - { - case NC_UBYTE: - for (ulip = (unsigned long long *)src, ubp = dest; count < len; count++) - { - if (*ulip > X_UCHAR_MAX) - (*range_error)++; - *ubp++ = *ulip++; - } - break; - case NC_BYTE: - for (ulip = (unsigned long long *)src, bp = dest; count < len; count++) - { - if (*ulip > X_SCHAR_MAX) - (*range_error)++; - *bp++ = *ulip++; - } - break; - case NC_SHORT: - for (ulip = (unsigned long long *)src, sp = dest; count < len; count++) - { - if (*ulip > X_SHORT_MAX) - (*range_error)++; - *sp++ = *ulip++; - } - break; - case NC_USHORT: - for (ulip = (unsigned long long *)src, usp = dest; count < len; count++) - { - if (*ulip > X_USHORT_MAX) - (*range_error)++; - *usp++ = *ulip++; - } - break; - case NC_UINT: - for (ulip = (unsigned long long *)src, uip = dest; count < len; count++) - { - if (*ulip > X_UINT_MAX) - (*range_error)++; - *uip++ = *ulip++; - } - break; - case NC_INT: - if (dest_long) - for (ulip = (unsigned long long *)src, lp = dest; count < len; count++) - { - if (*ulip > X_LONG_MAX) - (*range_error)++; - *lp++ = *ulip++; - } - else - for (ulip = (unsigned long long *)src, ip = dest; count < len; count++) - { - if (*ulip > X_INT_MAX) - (*range_error)++; - *ip++ = *ulip++; - } - break; - case NC_INT64: - for (ulip = (unsigned long long *)src, lip = dest; count < len; count++) - { - if (*ulip > X_INT64_MAX) - (*range_error)++; - *lip++ = *ulip++; - } - break; - case NC_UINT64: - for (ulip = (unsigned long long *)src, ulip1 = dest; count < len; count++) - *ulip1++ = *ulip++; - break; - case NC_FLOAT: - for (ulip = (unsigned long long *)src, fp = dest; count < len; count++) - *fp++ = *ulip++; - break; - case NC_DOUBLE: - for (ulip = (unsigned long long *)src, dp = dest; count < len; count++) - *dp++ = *ulip++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_FLOAT: - switch (dest_type) - { - case NC_UBYTE: - for (fp = (float *)src, ubp = dest; count < len; count++) - { - if (*fp > X_UCHAR_MAX || *fp < 0) - (*range_error)++; - *ubp++ = *fp++; - } - break; - case NC_BYTE: - for (fp = (float *)src, bp = dest; count < len; count++) - { - if (*fp > (double)X_SCHAR_MAX || *fp < (double)X_SCHAR_MIN) - (*range_error)++; - *bp++ = *fp++; - } - break; - case NC_SHORT: - for (fp = (float *)src, sp = dest; count < len; count++) - { - if (*fp > (double)X_SHORT_MAX || *fp < (double)X_SHORT_MIN) - (*range_error)++; - *sp++ = *fp++; - } - break; - case NC_USHORT: - for (fp = (float *)src, usp = dest; count < len; count++) - { - if (*fp > X_USHORT_MAX || *fp < 0) - (*range_error)++; - *usp++ = *fp++; - } - break; - case NC_UINT: - for (fp = (float *)src, uip = dest; count < len; count++) - { - if (*fp > X_UINT_MAX || *fp < 0) - (*range_error)++; - *uip++ = *fp++; - } - break; - case NC_INT: - if (dest_long) - for (fp = (float *)src, lp = dest; count < len; count++) - { - if (*fp > (double)X_LONG_MAX || *fp < (double)X_LONG_MIN) - (*range_error)++; - *lp++ = *fp++; - } - else - for (fp = (float *)src, ip = dest; count < len; count++) - { - if (*fp > (double)X_INT_MAX || *fp < (double)X_INT_MIN) - (*range_error)++; - *ip++ = *fp++; - } - break; - case NC_INT64: - for (fp = (float *)src, lip = dest; count < len; count++) - { - if (*fp > X_INT64_MAX || *fp X_UINT64_MAX || *fp < 0) - (*range_error)++; - *lip++ = *fp++; - } - break; - case NC_FLOAT: - for (fp = (float *)src, fp1 = dest; count < len; count++) - { - /* if (*fp > X_FLOAT_MAX || *fp < X_FLOAT_MIN) - (*range_error)++;*/ - *fp1++ = *fp++; - } - break; - case NC_DOUBLE: - for (fp = (float *)src, dp = dest; count < len; count++) - *dp++ = *fp++; - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - case NC_DOUBLE: - switch (dest_type) - { - case NC_UBYTE: - for (dp = (double *)src, ubp = dest; count < len; count++) - { - if (*dp > X_UCHAR_MAX || *dp < 0) - (*range_error)++; - *ubp++ = *dp++; - } - break; - case NC_BYTE: - for (dp = (double *)src, bp = dest; count < len; count++) - { - if (*dp > X_SCHAR_MAX || *dp < X_SCHAR_MIN) - (*range_error)++; - *bp++ = *dp++; - } - break; - case NC_SHORT: - for (dp = (double *)src, sp = dest; count < len; count++) - { - if (*dp > X_SHORT_MAX || *dp < X_SHORT_MIN) - (*range_error)++; - *sp++ = *dp++; - } - break; - case NC_USHORT: - for (dp = (double *)src, usp = dest; count < len; count++) - { - if (*dp > X_USHORT_MAX || *dp < 0) - (*range_error)++; - *usp++ = *dp++; - } - break; - case NC_UINT: - for (dp = (double *)src, uip = dest; count < len; count++) - { - if (*dp > X_UINT_MAX || *dp < 0) - (*range_error)++; - *uip++ = *dp++; - } - break; - case NC_INT: - if (dest_long) - for (dp = (double *)src, lp = dest; count < len; count++) - { - if (*dp > X_LONG_MAX || *dp < X_LONG_MIN) - (*range_error)++; - *lp++ = *dp++; - } - else - for (dp = (double *)src, ip = dest; count < len; count++) - { - if (*dp > X_INT_MAX || *dp < X_INT_MIN) - (*range_error)++; - *ip++ = *dp++; - } - break; - case NC_INT64: - for (dp = (double *)src, lip = dest; count < len; count++) - { - if (*dp > X_INT64_MAX || *dp < X_INT64_MIN) - (*range_error)++; - *lip++ = *dp++; - } - break; - case NC_UINT64: - for (dp = (double *)src, lip = dest; count < len; count++) - { - if (*dp > X_UINT64_MAX || *dp < 0) - (*range_error)++; - *lip++ = *dp++; - } - break; - case NC_FLOAT: - for (dp = (double *)src, fp = dest; count < len; count++) - { - if (*dp > X_FLOAT_MAX || *dp < X_FLOAT_MIN) - (*range_error)++; - *fp++ = *dp++; - } - break; - case NC_DOUBLE: - for (dp = (double *)src, dp1 = dest; count < len; count++) - { - /* if (*dp > X_DOUBLE_MAX || *dp < X_DOUBLE_MIN) */ - /* (*range_error)++; */ - *dp1++ = *dp++; - } - break; - default: - LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - break; - - default: - LOG((0, "%s: unexpected src type. src_type %d, dest_type %d", - __func__, src_type, dest_type)); - return NC_EBADTYPE; - } - return NC_NOERR; -} - -/* In our first pass through the data, we may have encountered - * variables before encountering their dimscales, so go through the - * vars in this file and make sure we've got a dimid for each. */ -int -nc4_rec_match_dimscales(NC_GRP_INFO_T *grp) -{ - NC_GRP_INFO_T *g; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - int retval = NC_NOERR; - - assert(grp && grp->name); - LOG((4, "%s: grp->name %s", __func__, grp->name)); - - /* Perform var dimscale match for child groups. */ - for (g = grp->children; g; g = g->l.next) - if ((retval = nc4_rec_match_dimscales(g))) - return retval; - - /* Check all the vars in this group. If they have dimscale info, - * try and find a dimension for them. */ - for (var = grp->var; var; var = var->l.next) - { - /* Check all vars and see if dim[i] != NULL if dimids[i] valid. */ - int ndims = var->ndims; - int d; - for (d = 0; d < ndims; d++) - { - if (var->dim[d] == NULL) { - nc4_find_dim(grp, var->dimids[d], &var->dim[d], NULL); - } - /* assert(var->dim[d] && var->dim[d]->dimid == var->dimids[d]); */ - } - - /* Skip dimension scale variables */ - if (!var->dimscale) - { - int d; - - /* Are there dimscales for this variable? */ - if (var->dimscale_hdf5_objids) - { - for (d = 0; d < var->ndims; d++) - { - nc_bool_t finished = NC_FALSE; - - LOG((5, "%s: var %s has dimscale info...", __func__, var->name)); - /* Look at all the dims in this group to see if they - * match. */ - for (g = grp; g && !finished; g = g->parent) - { - for (dim = g->dim; dim; dim = dim->l.next) - { - if (var->dimscale_hdf5_objids[d].fileno[0] == dim->hdf5_objid.fileno[0] && - var->dimscale_hdf5_objids[d].objno[0] == dim->hdf5_objid.objno[0] && - var->dimscale_hdf5_objids[d].fileno[1] == dim->hdf5_objid.fileno[1] && - var->dimscale_hdf5_objids[d].objno[1] == dim->hdf5_objid.objno[1]) - { - LOG((4, "%s: for dimension %d, found dim %s", - __func__, d, dim->name)); - var->dimids[d] = dim->dimid; - var->dim[d] = dim; - finished = NC_TRUE; - break; - } - } /* next dim */ - } /* next grp */ - LOG((5, "%s: dimid for this dimscale is %d", __func__, var->type_info->nc_typeid)); - } /* next var->dim */ - } - /* No dimscales for this var! Invent phony dimensions. */ - else - { - hid_t spaceid = 0; - hsize_t *h5dimlen = NULL, *h5dimlenmax = NULL; - int dataset_ndims; - - /* Find the space information for this dimension. */ - if ((spaceid = H5Dget_space(var->hdf_datasetid)) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_spaces++; -#endif - - /* Get the len of each dim in the space. */ - if (var->ndims) - { - if (!(h5dimlen = malloc(var->ndims * sizeof(hsize_t)))) - return NC_ENOMEM; - if (!(h5dimlenmax = malloc(var->ndims * sizeof(hsize_t)))) - { - free(h5dimlen); - return NC_ENOMEM; - } - if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid, h5dimlen, - h5dimlenmax)) < 0) { - free(h5dimlenmax); - free(h5dimlen); - return NC_EHDFERR; - } - if (dataset_ndims != var->ndims) { - free(h5dimlenmax); - free(h5dimlen); - return NC_EHDFERR; - } - } - else - { - /* Make sure it's scalar. */ - if (H5Sget_simple_extent_type(spaceid) != H5S_SCALAR) - return NC_EHDFERR; - } - - /* Release the space object. */ - if (H5Sclose(spaceid) < 0) { - free(h5dimlen); - free(h5dimlenmax); - return NC_EHDFERR; - } -#ifdef EXTRA_TESTS - num_spaces--; -#endif - - /* Create a phony dimension for each dimension in the - * dataset, unless there already is one the correct - * size. */ - for (d = 0; d < var->ndims; d++) - { - /* Is there already a phony dimension of the correct size? */ - for (dim = grp->dim; dim; dim = dim->l.next) - if ((dim->len == h5dimlen[d]) && - ((h5dimlenmax[d] == H5S_UNLIMITED && dim->unlimited) || - (h5dimlenmax[d] != H5S_UNLIMITED && !dim->unlimited))) - break; - - /* Didn't find a phony dim? Then create one. */ - if (!dim) - { - char phony_dim_name[NC_MAX_NAME + 1]; - - LOG((3, "%s: creating phony dim for var %s", __func__, var->name)); - if ((retval = nc4_dim_list_add(&grp->dim, &dim))) { - free(h5dimlenmax); - free(h5dimlen); - return retval; - } - grp->ndims++; - dim->dimid = grp->nc4_info->next_dimid++; - sprintf(phony_dim_name, "phony_dim_%d", dim->dimid); - if (!(dim->name = strdup(phony_dim_name))) { - free(h5dimlenmax); - free(h5dimlen); - return NC_ENOMEM; - } - dim->len = h5dimlen[d]; - dim->hash = hash_fast(phony_dim_name, strlen(phony_dim_name)); - if (h5dimlenmax[d] == H5S_UNLIMITED) - dim->unlimited = NC_TRUE; - } - - /* The variable must remember the dimid. */ - var->dimids[d] = dim->dimid; - var->dim[d] = dim; - } /* next dim */ - - /* Free the memory we malloced. */ - free(h5dimlen); - free(h5dimlenmax); - } - } - } - - return retval; -} - -/* Get the length, in bytes, of one element of a type in memory. */ -int -nc4_get_typelen_mem(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, int is_long, - size_t *len) -{ - NC_TYPE_INFO_T *type; - int retval; - - LOG((4, "%s xtype: %d", __func__, xtype)); - assert(len); - - /* If this is an atomic type, the answer is easy. */ - switch (xtype) - { - case NC_BYTE: - case NC_CHAR: - case NC_UBYTE: - *len = sizeof(char); - return NC_NOERR; - case NC_SHORT: - case NC_USHORT: - *len = sizeof(short); - return NC_NOERR; - case NC_INT: - case NC_UINT: - if (is_long) - *len = sizeof(long); - else - *len = sizeof(int); - return NC_NOERR; - case NC_FLOAT: - *len = sizeof(float); - return NC_NOERR; - case NC_DOUBLE: - *len = sizeof(double); - return NC_NOERR; - case NC_INT64: - case NC_UINT64: - *len = sizeof(long long); - return NC_NOERR; - case NC_STRING: - *len = sizeof(char *); - return NC_NOERR; - } - - /* See if var is compound type. */ - if ((retval = nc4_find_type(h5, xtype, &type))) - return retval; - - if (!type) - return NC_EBADTYPE; - - *len = type->size; - - LOG((5, "type->size: %d", type->size)); - - return NC_NOERR; -} - -/* Get the class of a type */ -int -nc4_get_typeclass(const NC_HDF5_FILE_INFO_T *h5, nc_type xtype, int *type_class) -{ - int retval = NC_NOERR; - - LOG((4, "%s xtype: %d", __func__, xtype)); - assert(type_class); - - /* If this is an atomic type, the answer is easy. */ - if (xtype <= NC_STRING) - { - switch (xtype) - { - case NC_BYTE: - case NC_UBYTE: - case NC_SHORT: - case NC_USHORT: - case NC_INT: - case NC_UINT: - case NC_INT64: - case NC_UINT64: - /* NC_INT is class used for all integral types */ - *type_class = NC_INT; - break; - - case NC_FLOAT: - case NC_DOUBLE: - /* NC_FLOAT is class used for all floating-point types */ - *type_class = NC_FLOAT; - break; - - case NC_CHAR: - *type_class = NC_CHAR; - break; - - case NC_STRING: - *type_class = NC_STRING; - break; - - default: - BAIL(NC_EBADTYPE); - } - } - else - { - NC_TYPE_INFO_T *type; - - /* See if it's a used-defined type */ - if ((retval = nc4_find_type(h5, xtype, &type))) - BAIL(retval); - if (!type) - BAIL(NC_EBADTYPE); - - *type_class = type->nc_type_class; - } - - exit: - return retval; -} - -int -NC4_test_netcdf4(void) -{ - return NC_NOERR; -} -void -reportobject(int log, hid_t id, unsigned int type) -{ -# define MAXNAME 1024 - char name[MAXNAME]; - ssize_t len; - const char* typename = NULL; - - len = H5Iget_name(id, name, MAXNAME); - if(len < 0) return; - name[len] = '\0'; - - switch (type) { - case H5F_OBJ_FILE: typename = "File"; break; - case H5F_OBJ_DATASET: typename = "Dataset"; break; - case H5F_OBJ_GROUP: typename = "Group"; break; - case H5F_OBJ_DATATYPE: typename = "Datatype"; break; - case H5F_OBJ_ATTR: - typename = "Attribute"; - len = H5Aget_name(id, MAXNAME, name); - if(len < 0) len = 0; - name[len] = '\0'; - break; - default: typename = ""; break; - } - if(log) { -#ifdef LOGGING - LOG((0,"Type = %s(%8u) name='%s'",typename,id,name)); -#endif - } else { - fprintf(stderr,"Type = %s(%8u) name='%s'",typename,id,name); - } -} - -static unsigned int OTYPES[5] = {H5F_OBJ_FILE, H5F_OBJ_DATASET, H5F_OBJ_GROUP, H5F_OBJ_DATATYPE, H5F_OBJ_ATTR}; - -static void -reportopenobjectsT(int log, hid_t fid, int ntypes, unsigned int* otypes) -{ - int t,i; - ssize_t ocount; - size_t maxobjs = -1; - hid_t* idlist = NULL; - - if(log) { -#ifdef LOGGING - LOG((0,"\nReport: open objects on %d\n",fid)); -#endif - } else { - fprintf(stdout,"\nReport: open objects on %d\n",fid); - } - maxobjs = H5Fget_obj_count(fid,H5F_OBJ_ALL); - if(idlist != NULL) free(idlist); - idlist = (hid_t*)malloc(sizeof(hid_t)*maxobjs); - for(t=0;thdfid)) < 0) - {stat = NC_EHDFERR; goto done;} - if(H5Pget_version(plist, &super, NULL, NULL, NULL) < 0) - {stat = NC_EHDFERR; goto done;} - if(idp) *idp = (int)super; -done: - if(plist >= 0) H5Pclose(plist); - return stat; -} - -/* We define a file as being from netcdf-4 if any of the following -are true: -1. NCPROPS attribute exists in root group -2. NC3_STRICT_ATT_NAME exists in root group -3. any of NC_ATT_REFERENCE_LIST, NC_ATT_CLASS, - NC_ATT_DIMENSION_LIST, NC_ATT_NAME, - NC_ATT_COORDINATES, NC_DIMID_ATT_NAME - exist anywhere in the file; note that this - requires walking the file. -WARNINGS: -1. False negatives are possible for a small subset of netcdf-4 - created files. -2. Deliberate falsification in the file can be used to cause - a false positive. -*/ - -static int NC4_get_strict_att(NC_HDF5_FILE_INFO_T*); -static int NC4_walk(hid_t, int*); - -int -NC4_isnetcdf4(struct NC_HDF5_FILE_INFO* h5) -{ - int stat; - int isnc4 = 0; - int count; - - /* Look for NC3_STRICT_ATT_NAME */ - isnc4 = NC4_get_strict_att(h5); - if(isnc4 > 0) - goto done; - /* attribute did not exist */ - /* => last resort: walk the HDF5 file looking for markers */ - count = 0; - stat = NC4_walk(h5->root_grp->hdf_grpid, &count); - if(stat != NC_NOERR) - isnc4 = 0; - else /* Threshold is at least two matches */ - isnc4 = (count >= 2); - -done: - return isnc4; -} - -static int -NC4_get_strict_att(NC_HDF5_FILE_INFO_T* h5) -{ - int ncstat = NC_NOERR; - size_t size; - hid_t grp = -1; - hid_t attid = -1; - herr_t herr = 0; - - /* Get root group */ - grp = h5->root_grp->hdf_grpid; /* get root group */ - /* Try to extract the NC3_STRICT_ATT_NAME attribute */ - attid = H5Aopen_name(grp, NC3_STRICT_ATT_NAME); - H5Aclose(attid); - return attid; -} - -static int -NC4_walk(hid_t gid, int* countp) -{ - int ncstat = NC_NOERR; - int i,j,na; - ssize_t len; - hsize_t nobj; - herr_t err; - int otype; - hid_t grpid, dsid; - char name[NC_HDF5_MAX_NAME]; - - /* walk group members of interest */ - err = H5Gget_num_objs(gid, &nobj); - if(err < 0) return err; - - for(i = 0; i < nobj; i++) { - /* Get name & kind of object in the group */ - len = H5Gget_objname_by_idx(gid,(hsize_t)i,name,(size_t)NC_HDF5_MAX_NAME); - if(len < 0) return len; - - otype = H5Gget_objtype_by_idx(gid,(size_t)i); - switch(otype) { - case H5G_GROUP: - grpid = H5Gopen(gid,name); - NC4_walk(grpid,countp); - H5Gclose(grpid); - break; - case H5G_DATASET: /* variables */ - /* Check for phony_dim */ - if(strcmp(name,"phony_dim")==0) - *countp = *countp + 1; - dsid = H5Dopen(gid,name); - na = H5Aget_num_attrs(dsid); - for(j = 0; j < na; j++) { - hid_t aid = H5Aopen_idx(dsid,(unsigned int) j); - if(aid >= 0) { - const char** p; - ssize_t len = H5Aget_name(aid, NC_HDF5_MAX_NAME, name); - if(len < 0) return len; - /* Is this a netcdf-4 marker attribute */ - for(p=NC_RESERVED_VARATT_LIST;*p;p++) { - if(strcmp(name,*p) == 0) { - *countp = *countp + 1; - } - } - } - H5Aclose(aid); - } - H5Dclose(dsid); - break; - default:/* ignore */ - break; - } - } - return ncstat; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4info.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4info.c deleted file mode 100644 index cc16ca77a95..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4info.c +++ /dev/null @@ -1,259 +0,0 @@ -/********************************************************************* -* Copyright 2010, UCAR/Unidata -* See netcdf/COPYRIGHT file for copying and redistribution conditions. -* ********************************************************************/ - -#include "config.h" -#include -#include -#include -#include "netcdf.h" -#include "nc4internal.h" - -#define IGNORE 0 - -#define HDF5_MAX_NAME 1024 - -#define NCHECK(expr) {if((expr)!=NC_NOERR) {goto done;}} -#define HCHECK(expr) {if((expr)<0) {ncstat = NC_EHDFERR; goto done;}} - -/* Global */ -struct NCPROPINFO globalpropinfo; - -int -NC4_fileinfo_init(void) -{ - int stat = NC_NOERR; - unsigned major,minor,release; - int super; - - /* Build nc properties */ - memset((void*)&globalpropinfo,0,sizeof(globalpropinfo)); - globalpropinfo.version = NCPROPS_VERSION; - globalpropinfo.netcdfver[0] = '\0'; - globalpropinfo.hdf5ver[0] = '\0'; - - stat = NC4_hdf5get_libversion(&major,&minor,&release); - if(stat) goto done; - snprintf(globalpropinfo.hdf5ver,sizeof(globalpropinfo.hdf5ver), - "%1u.%1u.%1u",major,minor,release); - strncpy(globalpropinfo.netcdfver,PACKAGE_VERSION,sizeof(globalpropinfo.netcdfver)); -done: - return stat; -} - -static int -NC4_properties_parse(struct NCPROPINFO* ncprops, const char* text) -{ - int ret = NC_NOERR; - size_t len; - char* p; - char* propdata = NULL; - - ncprops->version = 0; - ncprops->hdf5ver[0] = '\0'; - ncprops->netcdfver[0] = '\0'; - - len = strlen(text); - if(len == 0) return NC_NOERR; - propdata = (char*)malloc(len+1); - if(propdata == NULL) return NC_ENOMEM; - memcpy(propdata,text,len+1); - propdata[len] = '\0'; /* guarantee */ - - /* Walk and fill in ncinfo */ - p = propdata; - while(*p) { - char* name = p; - char* value = NULL; - char* q = strchr(p,'='); - if(q == NULL) - {ret = NC_EINVAL; goto done;} - *q++ = '\0'; - value = p = q; - q = strchr(p,NCPROPSSEP); - if(q == NULL) q = (p+strlen(p)); else* q++ = '\0'; - p = q; - if(value != NULL) { - if(strcmp(name,NCPVERSION) == 0) { - int v = atoi(value); - if(v < 0) v = 0; - ncprops->version = v; - } else if(strcmp(name,NCPNCLIBVERSION) == 0) - strncpy(ncprops->netcdfver,value,sizeof(ncprops->netcdfver)-1); - else if(strcmp(name,NCPHDF5LIBVERSION) == 0) - strncpy(ncprops->hdf5ver,value,sizeof(ncprops->hdf5ver)-1); - /* else ignore */ - } - } - /* Guarantee null term */ - ncprops->netcdfver[sizeof(ncprops->netcdfver)-1] = '\0'; - ncprops->hdf5ver[sizeof(ncprops->hdf5ver)-1] = '\0'; -done: - if(propdata != NULL) free(propdata); - return ret; -} - -static int -NC4_get_propattr(NC_HDF5_FILE_INFO_T* h5) -{ - int ncstat = NC_NOERR; - size_t size; - H5T_class_t t_class; - hid_t grp = -1; - hid_t attid = -1; - hid_t aspace = -1; - hid_t atype = -1; - hid_t ntype = -1; - herr_t herr = 0; - char* text = NULL; - - /* Get root group */ - grp = h5->root_grp->hdf_grpid; /* get root group */ - /* Try to extract the NCPROPS attribute */ - if(H5Aexists(grp,NCPROPS) > 0) { /* Does exist */ - attid = H5Aopen_name(grp, NCPROPS); - herr = -1; - aspace = H5Aget_space(attid); /* dimensions of attribute data */ - atype = H5Aget_type(attid); - /* Verify that atype and size */ - t_class = H5Tget_class(atype); - if(t_class != H5T_STRING) {ncstat = NC_EATTMETA; goto done;} - size = H5Tget_size(atype); - if(size == 0) goto done; - text = (char*)malloc(size+1); - if(text == NULL) - {ncstat = NC_ENOMEM; goto done;} - HCHECK((ntype = H5Tget_native_type(atype, H5T_DIR_ASCEND))); - HCHECK((H5Aread(attid, ntype, text))); - /* Make sure its null terminated */ - text[size] = '\0'; - /* Try to parse text */ - ncstat = NC4_properties_parse(&h5->fileinfo->propattr,text); - herr = 0; - } -done: - if(attid >= 0) HCHECK((H5Aclose(attid))); - if(aspace >= 0) HCHECK((H5Sclose(aspace))); - if(ntype >= 0) HCHECK((H5Tclose(ntype))); - if(atype >= 0) HCHECK((H5Tclose(atype))); - if(text != NULL) free(text); - return ncstat; -} - -int -NC4_put_propattr(NC_HDF5_FILE_INFO_T* h5) -{ - int ncstat = NC_NOERR; - H5T_class_t t_class; - size_t size; - hid_t grp = -1; - hid_t exists = -1; - hid_t attid = -1; - hid_t aspace = -1; - hid_t atype = -1; - herr_t herr = 0; - char* text = NULL; - - /* Get root group */ - grp = h5->root_grp->hdf_grpid; /* get root group */ - /* See if the NCPROPS attribute exists */ - if(H5Aexists(grp,NCPROPS) == 0) { /* Does not exist */ - ncstat = NC4_buildpropinfo(&h5->fileinfo->propattr,&text); - if(text == NULL || ncstat != NC_NOERR) { - goto done; - } - herr = -1; - /* Create a datatype to refer to. */ - HCHECK((atype = H5Tcopy(H5T_C_S1))); - HCHECK((H5Tset_cset(atype, H5T_CSET_ASCII))); - HCHECK((H5Tset_size(atype, strlen(text)+1))); /*keep nul term */ - HCHECK((aspace = H5Screate(H5S_SCALAR))); - HCHECK((attid = H5Acreate(grp, NCPROPS, atype, aspace, H5P_DEFAULT))); - HCHECK((H5Awrite(attid, atype, text))); - herr = 0; - } - done: - if(ncstat != NC_NOERR) { - if(text != NULL) { - free(text); - text = NULL; - } - } - - if(attid >= 0) HCHECK((H5Aclose(attid))); - if(aspace >= 0) HCHECK((H5Sclose(aspace))); - if(atype >= 0) HCHECK((H5Tclose(atype))); - return ncstat; -} - -int -NC4_get_fileinfo(NC_HDF5_FILE_INFO_T* h5, struct NCPROPINFO* init) -{ - int ncstat = NC_NOERR; - - /* Allocate the fileinfo in h5 */ - h5->fileinfo = (struct NCFILEINFO*)calloc(1,sizeof(struct NCFILEINFO)); - if(h5->fileinfo == NULL) - {ncstat = NC_ENOMEM; goto done;} - - /* Get superblock version */ - NCHECK((ncstat = NC4_hdf5get_superblock(h5,&h5->fileinfo->superblockversion))); - /* Get properties attribute if not already defined */ - if(init == NULL) { - NCHECK((ncstat = NC4_get_propattr(h5))); - } else { /*init != NULL*/ - h5->fileinfo->propattr = *init; /* Initialize */ - } -done: - return ncstat; -} - -int -NC4_buildpropinfo(struct NCPROPINFO* info,char** propdatap) -{ - size_t total; - char* propdata = NULL; - - if(info == NULL || info->version == 0) return NC_EINVAL; - if(propdatap == NULL) - return NC_NOERR; - *propdatap = NULL; - - /* compute attribute length */ - total = 0; - total += strlen(NCPVERSION); - total += strlen("=00000000"); - if(strlen(info->netcdfver) > 0) { - total += 1; /*|NCPROPSEP|*/ - total += strlen(NCPNCLIBVERSION); - total += strlen("="); - total += strlen(info->netcdfver); - } - if(strlen(info->hdf5ver) > 0) { - total += 1; /*|NCPROPSEP|*/ - total += strlen(NCPHDF5LIBVERSION); - total += strlen("="); - total += strlen(info->hdf5ver); - } - propdata = (char*)malloc(total+1); - if(propdata == NULL) - return NC_ENOMEM; - snprintf(propdata,total+1, - "%s=%d|%s=%s|%s=%s", - NCPVERSION,info->version, - NCPNCLIBVERSION,info->netcdfver, - NCPHDF5LIBVERSION,info->hdf5ver); - /* Force null termination */ - propdata[total] = '\0'; - *propdatap = propdata; - - /* propdatap is checked against being NULL above already. */ - //if(propdatap) { - // *propdatap = propdata; - //} else { - // free(propdata); - //} - - return NC_NOERR; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4internal.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4internal.c deleted file mode 100644 index e092f0cf8db..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4internal.c +++ /dev/null @@ -1,1591 +0,0 @@ -/** \file \internal -Internal netcdf-4 functions. - -This file contains functions internal to the netcdf4 library. None of -the functions in this file are exposed in the exetnal API. These -functions all relate to the manipulation of netcdf-4's in-memory -buffer of metadata information, i.e. the linked list of NC -structs. - -Copyright 2003-2011, University Corporation for Atmospheric -Research. See the COPYRIGHT file for copying and redistribution -conditions. - -*/ -#include "config.h" -#include "nc4internal.h" -#include "nc.h" /* from libsrc */ -#include "ncdispatch.h" /* from libdispatch */ -#include "H5DSpublic.h" -#include - -#define MEGABYTE 1048576 - -#undef DEBUGH5 - -#ifdef DEBUGH5 -/* Provide a catchable error reporting function */ -static herr_t -h5catch(void* ignored) -{ - H5Eprint(NULL); - return 0; -} -#endif - - -/* These are the default chunk cache sizes for HDF5 files created or - * opened with netCDF-4. */ -extern size_t nc4_chunk_cache_size; -extern size_t nc4_chunk_cache_nelems; -extern float nc4_chunk_cache_preemption; - -/* This is to track opened HDF5 objects to make sure they are - * closed. */ -#ifdef EXTRA_TESTS -extern int num_spaces; -#endif /* EXTRA_TESTS */ - -#ifdef LOGGING -/* This is the severity level of messages which will be logged. Use - severity 0 for errors, 1 for important log messages, 2 for less - important, etc. */ -int nc_log_level = -1; - -#endif /* LOGGING */ - -int nc4_hdf5_initialized = 0; - -/* Provide a wrapper for H5Eset_auto */ -static herr_t -set_auto(void* func, void *client_data) -{ -#ifdef DEBUGH5 - return H5Eset_auto2(H5E_DEFAULT,(H5E_auto2_t)h5catch,client_data); -#else - return H5Eset_auto2(H5E_DEFAULT,(H5E_auto2_t)func,client_data); -#endif -} - -/* -Provide a function to do any necessary initialization -of the HDF5 library. -*/ - -void -nc4_hdf5_initialize(void) -{ - if (set_auto(NULL, NULL) < 0) - LOG((0, "Couldn't turn off HDF5 error messages!")); - LOG((1, "HDF5 error messages have been turned off.")); - nc4_hdf5_initialized = 1; -} - -/* Check and normalize and name. */ -int -nc4_check_name(const char *name, char *norm_name) -{ - char *temp; - int retval; - - /* Check the length. */ - if (strlen(name) > NC_MAX_NAME) - return NC_EMAXNAME; - - /* Make sure this is a valid netcdf name. This should be done - * before the name is normalized, because it gives better error - * codes for bad utf8 strings. */ - if ((retval = NC_check_name(name))) - return retval; - - /* Normalize the name. */ - if (!(temp = (char *)utf8proc_NFC((const unsigned char *)name))) - return NC_EINVAL; - strcpy(norm_name, temp); - free(temp); - - return NC_NOERR; -} - -/* Given a varid, return the maximum length of a dimension using dimid */ - -static int -find_var_dim_max_length(NC_GRP_INFO_T *grp, int varid, int dimid, size_t *maxlen) -{ - hid_t datasetid = 0, spaceid = 0; - NC_VAR_INFO_T *var; - hsize_t *h5dimlen = NULL, *h5dimlenmax = NULL; - int d, dataset_ndims = 0; - int retval = NC_NOERR; - - *maxlen = 0; - - /* Find this var. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - if (!var) - return NC_ENOTVAR; - - /* If the var hasn't been created yet, its size is 0. */ - if (!var->created) - { - *maxlen = 0; - } - else - { - /* Get the number of records in the dataset. */ - if ((retval = nc4_open_var_grp2(grp, var->varid, &datasetid))) - BAIL(retval); - if ((spaceid = H5Dget_space(datasetid)) < 0) - BAIL(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces++; -#endif - /* If it's a scalar dataset, it has length one. */ - if (H5Sget_simple_extent_type(spaceid) == H5S_SCALAR) - { - *maxlen = (var->dimids && var->dimids[0] == dimid) ? 1 : 0; - } - else - { - /* Check to make sure ndims is right, then get the len of each - dim in the space. */ - if ((dataset_ndims = H5Sget_simple_extent_ndims(spaceid)) < 0) - BAIL(NC_EHDFERR); - if (dataset_ndims != var->ndims) - BAIL(NC_EHDFERR); - if (!(h5dimlen = malloc(dataset_ndims * sizeof(hsize_t)))) - BAIL(NC_ENOMEM); - if (!(h5dimlenmax = malloc(dataset_ndims * sizeof(hsize_t)))) - BAIL(NC_ENOMEM); - if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid, - h5dimlen, h5dimlenmax)) < 0) - BAIL(NC_EHDFERR); - LOG((5, "find_var_dim_max_length: varid %d len %d max: %d", - varid, (int)h5dimlen[0], (int)h5dimlenmax[0])); - for (d=0; ddimids[d] == dimid) { - *maxlen = *maxlen > h5dimlen[d] ? *maxlen : h5dimlen[d]; - } - } - } - } - - exit: - if (spaceid > 0 && H5Sclose(spaceid) < 0) - BAIL2(NC_EHDFERR); -#ifdef EXTRA_TESTS - num_spaces--; -#endif - if (h5dimlen) free(h5dimlen); - if (h5dimlenmax) free(h5dimlenmax); - return retval; -} - -/* Given an NC pointer, add the necessary stuff for a - * netcdf-4 file. */ -int -nc4_nc4f_list_add(NC *nc, const char *path, int mode) -{ - NC_HDF5_FILE_INFO_T *h5; - - assert(nc && !NC4_DATA(nc) && path); - - /* We need to malloc and - initialize the substructure NC_HDF_FILE_INFO_T. */ - if (!(h5 = calloc(1, sizeof(NC_HDF5_FILE_INFO_T)))) - return NC_ENOMEM; - NC4_DATA_SET(nc,h5); - h5->controller = nc; - - /* Hang on to cmode, and note that we're in define mode. */ - h5->cmode = mode | NC_INDEF; - - /* The next_typeid needs to be set beyond the end of our atomic - * types. */ - h5->next_typeid = NC_FIRSTUSERTYPEID; - - /* There's always at least one open group - the root - * group. Allocate space for one group's worth of information. Set - * its hdf id, name, and a pointer to it's file structure. */ - return nc4_grp_list_add(&(h5->root_grp), h5->next_nc_grpid++, - NULL, nc, NC_GROUP_NAME, NULL); -} - -/* Given an ncid, find the relevant group and return a pointer to it, - * return an error of this is not a netcdf-4 file (or if strict nc3 is - * turned on for this file.) */ -int -nc4_find_nc4_grp(int ncid, NC_GRP_INFO_T **grp) -{ - NC_HDF5_FILE_INFO_T* h5; - NC *f = nc4_find_nc_file(ncid,&h5); - if(f == NULL) return NC_EBADID; - - /* No netcdf-3 files allowed! */ - if (!h5) return NC_ENOTNC4; - assert(h5->root_grp); - - /* This function demands netcdf-4 files without strict nc3 - * rules.*/ - if (h5->cmode & NC_CLASSIC_MODEL) return NC_ESTRICTNC3; - - /* If we can't find it, the grp id part of ncid is bad. */ - if (!(*grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK)))) - return NC_EBADID; - return NC_NOERR; -} - -/* Given an ncid, find the relevant group and return a pointer to it, - * also set a pointer to the nc4_info struct of the related file. For - * netcdf-3 files, *h5 will be set to NULL. */ -int -nc4_find_grp_h5(int ncid, NC_GRP_INFO_T **grpp, NC_HDF5_FILE_INFO_T **h5p) -{ - NC_HDF5_FILE_INFO_T *h5; - NC_GRP_INFO_T *grp; - NC *f = nc4_find_nc_file(ncid,&h5); - if(f == NULL) return NC_EBADID; - if (h5) { - assert(h5->root_grp); - /* If we can't find it, the grp id part of ncid is bad. */ - if (!(grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK)))) - return NC_EBADID; - h5 = (grp)->nc4_info; - assert(h5); - } else { - h5 = NULL; - grp = NULL; - } - if(h5p) *h5p = h5; - if(grpp) *grpp = grp; - return NC_NOERR; -} - -int -nc4_find_nc_grp_h5(int ncid, NC **nc, NC_GRP_INFO_T **grpp, - NC_HDF5_FILE_INFO_T **h5p) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T* h5; - NC *f = nc4_find_nc_file(ncid,&h5); - - if(f == NULL) return NC_EBADID; - *nc = f; - - if (h5) { - assert(h5->root_grp); - /* If we can't find it, the grp id part of ncid is bad. */ - if (!(grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK)))) - return NC_EBADID; - - h5 = (grp)->nc4_info; - assert(h5); - } else { - h5 = NULL; - grp = NULL; - } - if(h5p) *h5p = h5; - if(grpp) *grpp = grp; - return NC_NOERR; -} - -/* Recursively hunt for a group id. */ -NC_GRP_INFO_T * -nc4_rec_find_grp(NC_GRP_INFO_T *start_grp, int target_nc_grpid) -{ - NC_GRP_INFO_T *g, *res; - - assert(start_grp); - - /* Is this the group we are searching for? */ - if (start_grp->nc_grpid == target_nc_grpid) - return start_grp; - - /* Shake down the kids. */ - if (start_grp->children) - for (g = start_grp->children; g; g = g->l.next) - if ((res = nc4_rec_find_grp(g, target_nc_grpid))) - return res; - - /* Can't find it. Fate, why do you mock me? */ - return NULL; -} - -/* Given an ncid and varid, get pointers to the group and var - * metadata. */ -int -nc4_find_g_var_nc(NC *nc, int ncid, int varid, - NC_GRP_INFO_T **grp, NC_VAR_INFO_T **var) -{ - NC_HDF5_FILE_INFO_T* h5 = NC4_DATA(nc); - - /* Find the group info. */ - assert(grp && var && h5 && h5->root_grp); - *grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK)); - - /* It is possible for *grp to be NULL. If it is, - return an error. */ - if(*grp == NULL) - return NC_ENOTVAR; - - /* Find the var info. */ - for ((*var) = (*grp)->var; (*var); (*var) = (*var)->l.next) - if ((*var)->varid == varid) - break; - if (!(*var)) - return NC_ENOTVAR; - - return NC_NOERR; -} - -/* Find a dim in a grp (or parents). */ -int -nc4_find_dim(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T **dim, - NC_GRP_INFO_T **dim_grp) -{ - NC_GRP_INFO_T *g, *dg = NULL; - int finished = 0; - - assert(grp && dim); - - /* Find the dim info. */ - for (g = grp; g && !finished; g = g->parent) - for ((*dim) = g->dim; (*dim); (*dim) = (*dim)->l.next) - if ((*dim)->dimid == dimid) - { - dg = g; - finished++; - break; - } - - /* If we didn't find it, return an error. */ - if (!(*dim)) - return NC_EBADDIM; - - /* Give the caller the group the dimension is in. */ - if (dim_grp) - *dim_grp = dg; - - return NC_NOERR; -} - -/* Find a var (by name) in a grp. */ -int -nc4_find_var(NC_GRP_INFO_T *grp, const char *name, NC_VAR_INFO_T **var) -{ - assert(grp && var && name); - - /* Find the var info. */ - for ((*var) = grp->var; (*var); (*var) = (*var)->l.next) - if (0 == strcmp(name, (*var)->name)) - break; - - return NC_NOERR; -} - -/* Recursively hunt for a HDF type id. */ -NC_TYPE_INFO_T * -nc4_rec_find_hdf_type(NC_GRP_INFO_T *start_grp, hid_t target_hdf_typeid) -{ - NC_GRP_INFO_T *g; - NC_TYPE_INFO_T *type, *res; - htri_t equal; - - assert(start_grp); - - /* Does this group have the type we are searching for? */ - for (type = start_grp->type; type; type = type->l.next) - { - if ((equal = H5Tequal(type->native_hdf_typeid ? type->native_hdf_typeid : type->hdf_typeid, target_hdf_typeid)) < 0) - return NULL; - if (equal) - return type; - } - - /* Shake down the kids. */ - if (start_grp->children) - for (g = start_grp->children; g; g = g->l.next) - if ((res = nc4_rec_find_hdf_type(g, target_hdf_typeid))) - return res; - - /* Can't find it. Fate, why do you mock me? */ - return NULL; -} - -/* Recursively hunt for a netCDF type by name. */ -NC_TYPE_INFO_T * -nc4_rec_find_named_type(NC_GRP_INFO_T *start_grp, char *name) -{ - NC_GRP_INFO_T *g; - NC_TYPE_INFO_T *type, *res; - - assert(start_grp); - - /* Does this group have the type we are searching for? */ - for (type = start_grp->type; type; type = type->l.next) - if (!strcmp(type->name, name)) - return type; - - /* Search subgroups. */ - if (start_grp->children) - for (g = start_grp->children; g; g = g->l.next) - if ((res = nc4_rec_find_named_type(g, name))) - return res; - - /* Can't find it. Oh, woe is me! */ - return NULL; -} - -/* Recursively hunt for a netCDF type id. */ -NC_TYPE_INFO_T * -nc4_rec_find_nc_type(const NC_GRP_INFO_T *start_grp, nc_type target_nc_typeid) -{ - NC_TYPE_INFO_T *type; - - assert(start_grp); - - /* Does this group have the type we are searching for? */ - for (type = start_grp->type; type; type = type->l.next) - if (type->nc_typeid == target_nc_typeid) - return type; - - /* Shake down the kids. */ - if (start_grp->children) - { - NC_GRP_INFO_T *g; - - for (g = start_grp->children; g; g = g->l.next) - { - NC_TYPE_INFO_T *res; - - if ((res = nc4_rec_find_nc_type(g, target_nc_typeid))) - return res; - } - } - - /* Can't find it. Fate, why do you mock me? */ - return NULL; -} - -/* Use a netCDF typeid to find a type in a type_list. */ -int -nc4_find_type(const NC_HDF5_FILE_INFO_T *h5, nc_type typeid, NC_TYPE_INFO_T **type) -{ - if (typeid < 0 || !type) - return NC_EINVAL; - *type = NULL; - - /* Atomic types don't have associated NC_TYPE_INFO_T struct, just - * return NOERR. */ - if (typeid <= NC_STRING) - return NC_NOERR; - - /* Find the type. */ - if(!(*type = nc4_rec_find_nc_type(h5->root_grp, typeid))) - return NC_EBADTYPID; - - return NC_NOERR; -} - -/* Find the actual length of a dim by checking the length of that dim - * in all variables that use it, in grp or children. **len must be - * initialized to zero before this function is called. */ -int -nc4_find_dim_len(NC_GRP_INFO_T *grp, int dimid, size_t **len) -{ - NC_GRP_INFO_T *g; - NC_VAR_INFO_T *var; - int retval; - - assert(grp && len); - LOG((3, "nc4_find_dim_len: grp->name %s dimid %d", grp->name, dimid)); - - /* If there are any groups, call this function recursively on - * them. */ - for (g = grp->children; g; g = g->l.next) - if ((retval = nc4_find_dim_len(g, dimid, len))) - return retval; - - /* For all variables in this group, find the ones that use this - * dimension, and remember the max length. */ - for (var = grp->var; var; var = var->l.next) - { - size_t mylen; - - /* Find max length of dim in this variable... */ - if ((retval = find_var_dim_max_length(grp, var->varid, dimid, &mylen))) - return retval; - - **len = **len > mylen ? **len : mylen; - } - - return NC_NOERR; -} - -/* Given a group, find an att. */ -int -nc4_find_grp_att(NC_GRP_INFO_T *grp, int varid, const char *name, int attnum, - NC_ATT_INFO_T **att) -{ - NC_VAR_INFO_T *var; - NC_ATT_INFO_T *attlist = NULL; - - assert(grp && grp->name); - LOG((4, "nc4_find_grp_att: grp->name %s varid %d name %s attnum %d", - grp->name, varid, name, attnum)); - - /* Get either the global or a variable attribute list. */ - if (varid == NC_GLOBAL) - attlist = grp->att; - else - { - for(var = grp->var; var; var = var->l.next) - { - if (var->varid == varid) - { - attlist = var->att; - break; - } - } - if (!var) - return NC_ENOTVAR; - } - - /* Now find the attribute by name or number. If a name is provided, - * ignore the attnum. */ - if(attlist) - for (*att = attlist; *att; *att = (*att)->l.next) { - if (name && (*att)->name && !strcmp((*att)->name, name)) - return NC_NOERR; - if (!name && (*att)->attnum == attnum) - return NC_NOERR; - } - - /* If we get here, we couldn't find the attribute. */ - return NC_ENOTATT; -} - -/* Given an ncid, varid, and name or attnum, find and return pointer - to NC_ATT_INFO_T metadata. */ -int -nc4_find_nc_att(int ncid, int varid, const char *name, int attnum, - NC_ATT_INFO_T **att) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - NC_ATT_INFO_T *attlist = NULL; - int retval; - - LOG((4, "nc4_find_nc_att: ncid 0x%x varid %d name %s attnum %d", - ncid, varid, name, attnum)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - assert(grp && h5); - - /* Get either the global or a variable attribute list. */ - if (varid == NC_GLOBAL) - attlist = grp->att; - else - { - for(var = grp->var; var; var = var->l.next) - { - if (var->varid == varid) - { - attlist = var->att; - break; - } - } - if (!var) - return NC_ENOTVAR; - } - - /* Now find the attribute by name or number. If a name is provided, ignore the attnum. */ - for (*att = attlist; *att; *att = (*att)->l.next) - if ((name && !strcmp((*att)->name, name)) || - (!name && (*att)->attnum == attnum)) - return NC_NOERR; - - /* If we get here, we couldn't find the attribute. */ - return NC_ENOTATT; -} - - -/* Given an id, walk the list and find the appropriate - NC. */ -NC* -nc4_find_nc_file(int ext_ncid, NC_HDF5_FILE_INFO_T** h5p) -{ - NC* nc; - int stat; - - stat = NC_check_id(ext_ncid,&nc); - if(stat != NC_NOERR) - nc = NULL; - - if(nc) - if(h5p) *h5p = (NC_HDF5_FILE_INFO_T*)nc->dispatchdata; - - return nc; -} - -/* Add object to the end of a list. */ -static void -obj_list_add(NC_LIST_NODE_T **list, NC_LIST_NODE_T *obj) -{ - /* Go to the end of the list and set the last one to point at object, - * or, if the list is empty, our new object becomes the list. */ - if(*list) - { - NC_LIST_NODE_T *o; - - for (o = *list; o; o = o->next) - if (!o->next) - break; - o->next = obj; - obj->prev = o; - } - else - *list = obj; -} - -/* Remove object from a list. */ -static void -obj_list_del(NC_LIST_NODE_T **list, NC_LIST_NODE_T *obj) -{ - /* Remove the var from the linked list. */ - if(*list == obj) - *list = obj->next; - else - ((NC_LIST_NODE_T *)obj->prev)->next = obj->next; - - if(obj->next) - ((NC_LIST_NODE_T *)obj->next)->prev = obj->prev; -} - -/* Add to the end of a var list. Return a pointer to the newly - * added var. */ -int -nc4_var_list_add(NC_VAR_INFO_T **list, NC_VAR_INFO_T **var) -{ - NC_VAR_INFO_T *new_var; - - /* Allocate storage for new variable. */ - if (!(new_var = calloc(1, sizeof(NC_VAR_INFO_T)))) - return NC_ENOMEM; - - /* These are the HDF5-1.8.4 defaults. */ - new_var->chunk_cache_size = nc4_chunk_cache_size; - new_var->chunk_cache_nelems = nc4_chunk_cache_nelems; - new_var->chunk_cache_preemption = nc4_chunk_cache_preemption; - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)new_var); - - /* Set the var pointer, if one was given */ - if (var) - *var = new_var; - - return NC_NOERR; -} - -/* Add to the beginning of a dim list. */ -int -nc4_dim_list_add(NC_DIM_INFO_T **list, NC_DIM_INFO_T **dim) -{ - NC_DIM_INFO_T *new_dim; - - if (!(new_dim = calloc(1, sizeof(NC_DIM_INFO_T)))) - return NC_ENOMEM; - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)new_dim); - - /* Set the dim pointer, if one was given */ - if (dim) - *dim = new_dim; - - return NC_NOERR; -} - -/* Add to the end of an att list. */ -int -nc4_att_list_add(NC_ATT_INFO_T **list, NC_ATT_INFO_T **att) -{ - NC_ATT_INFO_T *new_att; - - if (!(new_att = calloc(1, sizeof(NC_ATT_INFO_T)))) - return NC_ENOMEM; - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)new_att); - - /* Set the attribute pointer, if one was given */ - if (att) - *att = new_att; - - return NC_NOERR; -} - -/* Add to the end of a group list. Can't use 0 as a new_nc_grpid - - * it's reserverd for the root group. */ -int -nc4_grp_list_add(NC_GRP_INFO_T **list, int new_nc_grpid, - NC_GRP_INFO_T *parent_grp, NC *nc, - char *name, NC_GRP_INFO_T **grp) -{ - NC_GRP_INFO_T *new_grp; - - LOG((3, "%s: new_nc_grpid %d name %s ", __func__, new_nc_grpid, name)); - - /* Get the memory to store this groups info. */ - if (!(new_grp = calloc(1, sizeof(NC_GRP_INFO_T)))) - return NC_ENOMEM; - - /* Fill in this group's information. */ - new_grp->nc_grpid = new_nc_grpid; - new_grp->parent = parent_grp; - if (!(new_grp->name = strdup(name))) - { - free(new_grp); - return NC_ENOMEM; - } - new_grp->nc4_info = NC4_DATA(nc); - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)new_grp); - - /* Set the group pointer, if one was given */ - if (grp) - *grp = new_grp; - - return NC_NOERR; -} - -/* Names for groups, variables, and types must not be the same. This - * function checks that a proposed name is not already in - * use. Normalzation of UTF8 strings should happen before this - * function is called. */ -int -nc4_check_dup_name(NC_GRP_INFO_T *grp, char *name) -{ - NC_TYPE_INFO_T *type; - NC_GRP_INFO_T *g; - NC_VAR_INFO_T *var; - uint32_t hash; - - /* Any types of this name? */ - for (type = grp->type; type; type = type->l.next) - if (!strcmp(type->name, name)) - return NC_ENAMEINUSE; - - /* Any child groups of this name? */ - for (g = grp->children; g; g = g->l.next) - if (!strcmp(g->name, name)) - return NC_ENAMEINUSE; - - /* Any variables of this name? */ - hash = hash_fast(name, strlen(name)); - for (var = grp->var; var; var = var->l.next) - if (var->hash == hash && !strcmp(var->name, name)) - return NC_ENAMEINUSE; - - return NC_NOERR; -} - -/* Add to the end of a type list. */ -int -nc4_type_list_add(NC_GRP_INFO_T *grp, size_t size, const char *name, - NC_TYPE_INFO_T **type) -{ - NC_TYPE_INFO_T *new_type; - - /* Allocate memory for the type */ - if (!(new_type = calloc(1, sizeof(NC_TYPE_INFO_T)))) - return NC_ENOMEM; - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)(&grp->type), (NC_LIST_NODE_T *)new_type); - - /* Remember info about this type. */ - new_type->nc_typeid = grp->nc4_info->next_typeid++; - new_type->size = size; - if (!(new_type->name = strdup(name))) - return NC_ENOMEM; - - /* Increment the ref. count on the type */ - new_type->rc++; - - /* Return a pointer to the new type, if requested */ - if (type) - *type = new_type; - - return NC_NOERR; -} - -/* Add to the end of a compound field list. */ -int -nc4_field_list_add(NC_FIELD_INFO_T **list, int fieldid, const char *name, - size_t offset, hid_t field_hdf_typeid, hid_t native_typeid, - nc_type xtype, int ndims, const int *dim_sizesp) -{ - NC_FIELD_INFO_T *field; - - /* Name has already been checked and UTF8 normalized. */ - if (!name) - return NC_EINVAL; - - /* Allocate storage for this field information. */ - if (!(field = calloc(1, sizeof(NC_FIELD_INFO_T)))) - return NC_ENOMEM; - - /* Store the information about this field. */ - field->fieldid = fieldid; - if (!(field->name = strdup(name))) - { - free(field); - return NC_ENOMEM; - } - field->hdf_typeid = field_hdf_typeid; - field->native_hdf_typeid = native_typeid; - field->nc_typeid = xtype; - field->offset = offset; - field->ndims = ndims; - if (ndims) - { - int i; - - if (!(field->dim_size = malloc(ndims * sizeof(int)))) - { - free(field->name); - free(field); - return NC_ENOMEM; - } - for (i = 0; i < ndims; i++) - field->dim_size[i] = dim_sizesp[i]; - } - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)field); - - return NC_NOERR; -} - -/* Add a member to an enum type. */ -int -nc4_enum_member_add(NC_ENUM_MEMBER_INFO_T **list, size_t size, - const char *name, const void *value) -{ - NC_ENUM_MEMBER_INFO_T *member; - - /* Name has already been checked. */ - assert(name && size > 0 && value); - LOG((4, "%s: size %d name %s", __func__, size, name)); - - /* Allocate storage for this field information. */ - if (!(member = calloc(1, sizeof(NC_ENUM_MEMBER_INFO_T)))) - return NC_ENOMEM; - if (!(member->value = malloc(size))) { - free(member); - return NC_ENOMEM; - } - if (!(member->name = strdup(name))) { - free(member->value); - free(member); - return NC_ENOMEM; - } - - /* Store the value for this member. */ - memcpy(member->value, value, size); - - /* Add object to list */ - obj_list_add((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)member); - - return NC_NOERR; -} - -/* Delete a field from a field list, and nc_free the memory. */ -static void -field_list_del(NC_FIELD_INFO_T **list, NC_FIELD_INFO_T *field) -{ - /* Take this field out of the list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)field); - - /* Free some stuff. */ - if (field->name) - free(field->name); - if (field->dim_size) - free(field->dim_size); - - /* Nc_Free the memory. */ - free(field); -} - -/* Free allocated space for type information. */ -int -nc4_type_free(NC_TYPE_INFO_T *type) -{ - /* Decrement the ref. count on the type */ - assert(type->rc); - type->rc--; - - /* Release the type, if the ref. count drops to zero */ - if (0 == type->rc) - { - /* Close any open user-defined HDF5 typeids. */ - if (type->hdf_typeid && H5Tclose(type->hdf_typeid) < 0) - return NC_EHDFERR; - if (type->native_hdf_typeid && H5Tclose(type->native_hdf_typeid) < 0) - return NC_EHDFERR; - - /* Free the name. */ - if (type->name) - free(type->name); - - /* Class-specific cleanup */ - switch (type->nc_type_class) - { - case NC_COMPOUND: - { - NC_FIELD_INFO_T *field; - - /* Delete all the fields in this type (there will be some if its a - * compound). */ - field = type->u.c.field; - while (field) - { - NC_FIELD_INFO_T *f = field->l.next; - - field_list_del(&type->u.c.field, field); - field = f; - } - } - break; - - case NC_ENUM: - { - NC_ENUM_MEMBER_INFO_T *enum_member; - - /* Delete all the enum_members, if any. */ - enum_member = type->u.e.enum_member; - while (enum_member) - { - NC_ENUM_MEMBER_INFO_T *em = enum_member->l.next; - - free(enum_member->value); - free(enum_member->name); - free(enum_member); - enum_member = em; - } - - if (H5Tclose(type->u.e.base_hdf_typeid) < 0) - return NC_EHDFERR; - } - break; - - case NC_VLEN: - if (H5Tclose(type->u.v.base_hdf_typeid) < 0) - return NC_EHDFERR; - - default: - break; - } - - /* Release the memory. */ - free(type); - } - - return NC_NOERR; -} - -/* Delete a var from a var list, and free the memory. */ -int -nc4_var_list_del(NC_VAR_INFO_T **list, NC_VAR_INFO_T *var) -{ - NC_ATT_INFO_T *a, *att; - int ret; - - if(var == NULL) - return NC_NOERR; - - /* Remove the var from the linked list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)var); - - /* First delete all the attributes attached to this var. */ - att = var->att; - while (att) - { - a = att->l.next; - if ((ret = nc4_att_list_del(&var->att, att))) - return ret; - att = a; - } - - /* Free some things that may be allocated. */ - if (var->chunksizes) - {free(var->chunksizes);var->chunksizes = NULL;} - - if (var->hdf5_name) - {free(var->hdf5_name); var->hdf5_name = NULL;} - - if (var->name) - {free(var->name); var->name = NULL;} - - if (var->dimids) - {free(var->dimids); var->dimids = NULL;} - - if (var->dim) - {free(var->dim); var->dim = NULL;} - - /* Delete any fill value allocation. This must be done before the - * type_info is freed. */ - if (var->fill_value) - { - if (var->hdf_datasetid) - { - if (var->type_info) - { - if (var->type_info->nc_type_class == NC_VLEN) - nc_free_vlen((nc_vlen_t *)var->fill_value); - else if (var->type_info->nc_type_class == NC_STRING && *(char **)var->fill_value) - free(*(char **)var->fill_value); - } - } - free(var->fill_value); - var->fill_value = NULL; - } - - /* Release type information */ - if (var->type_info) - { - int retval; - - if ((retval = nc4_type_free(var->type_info))) - return retval; - var->type_info = NULL; - } - - /* Delete any HDF5 dimscale objid information. */ - if (var->dimscale_hdf5_objids) - free(var->dimscale_hdf5_objids); - - /* Delete information about the attachment status of dimscales. */ - if (var->dimscale_attached) - free(var->dimscale_attached); - - /* Delete the var. */ - free(var); - - return NC_NOERR; -} - -/* Delete a type from a type list, and nc_free the memory. */ -static int -type_list_del(NC_TYPE_INFO_T **list, NC_TYPE_INFO_T *type) -{ - /* Take this type out of the list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)type); - - /* Free the type, and its components */ - return nc4_type_free(type); -} - -/* Delete a del from a var list, and nc_free the memory. */ -int -nc4_dim_list_del(NC_DIM_INFO_T **list, NC_DIM_INFO_T *dim) -{ - /* Take this dimension out of the list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)dim); - - /* Free memory allocated for names. */ - if (dim->name) - free(dim->name); - - free(dim); - return NC_NOERR; -} - -/* Remove a NC_GRP_INFO_T from the linked list. This will nc_free the - memory too. */ -static void -grp_list_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp) -{ - /* Take this group out of the list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)grp); - - free(grp); -} - -/* Recursively delete the data for a group (and everything it - * contains) in our internal metadata store. */ -int -nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp) -{ - NC_GRP_INFO_T *g, *c; - NC_VAR_INFO_T *v, *var; - NC_ATT_INFO_T *a, *att; - NC_DIM_INFO_T *d, *dim; - NC_TYPE_INFO_T *type, *t; - int retval; - - assert(grp); - LOG((3, "%s: grp->name %s", __func__, grp->name)); - - /* Recursively call this function for each child, if any, stopping - * if there is an error. */ - g = grp->children; - while(g) - { - c = g->l.next; - if ((retval = nc4_rec_grp_del(&(grp->children), g))) - return retval; - g = c; - } - - /* Delete all the list contents for vars, dims, and atts, in each - * group. */ - att = grp->att; - while (att) - { - LOG((4, "%s: deleting att %s", __func__, att->name)); - a = att->l.next; - if ((retval = nc4_att_list_del(&grp->att, att))) - return retval; - att = a; - } - - /* Delete all vars. */ - var = grp->var; - while (var) - { - LOG((4, "%s: deleting var %s", __func__, var->name)); - /* Close HDF5 dataset associated with this var, unless it's a - * scale. */ - if (var->hdf_datasetid && H5Dclose(var->hdf_datasetid) < 0) - return NC_EHDFERR; - v = var->l.next; - if ((retval = nc4_var_list_del(&grp->var, var))) - return retval; - var = v; - } - - /* Delete all dims. */ - dim = grp->dim; - while (dim) - { - LOG((4, "%s: deleting dim %s", __func__, dim->name)); - /* Close HDF5 dataset associated with this dim. */ - if (dim->hdf_dimscaleid && H5Dclose(dim->hdf_dimscaleid) < 0) - return NC_EHDFERR; - d = dim->l.next; - if ((retval = nc4_dim_list_del(&grp->dim, dim))) - return retval; - dim = d; - } - - /* Delete all types. */ - type = grp->type; - while (type) - { - LOG((4, "%s: deleting type %s", __func__, type->name)); - t = type->l.next; - if ((retval = type_list_del(&grp->type, type))) - return retval; - type = t; - } - - /* Tell HDF5 we're closing this group. */ - LOG((4, "%s: closing group %s", __func__, grp->name)); - if (grp->hdf_grpid && H5Gclose(grp->hdf_grpid) < 0) - return NC_EHDFERR; - - /* Free the name. */ - free(grp->name); - - /* Finally, redirect pointers around this entry in the list, and - * nc_free its memory. */ - grp_list_del(list, grp); - - return NC_NOERR; -} - -/* Remove a NC_ATT_INFO_T from the linked list. This will nc_free the - memory too. -*/ -int -nc4_att_list_del(NC_ATT_INFO_T **list, NC_ATT_INFO_T *att) -{ - int i; - - /* Take this att out of the list. */ - obj_list_del((NC_LIST_NODE_T **)list, (NC_LIST_NODE_T *)att); - - /* Free memory that was malloced to hold data for this - * attribute. */ - if (att->data) - free(att->data); - - /* Free the name. */ - if (att->name) - free(att->name); - - /* Close the HDF5 typeid. */ - if (att->native_hdf_typeid && H5Tclose(att->native_hdf_typeid) < 0) - return NC_EHDFERR; - - /* If this is a string array attribute, delete all members of the - * string array, then delete the array of pointers to strings. (The - * array was filled with pointers by HDF5 when the att was read, - * and memory for each string was allocated by HDF5. That's why I - * use free and not nc_free, because the netCDF library didn't - * allocate the memory that is being freed.) */ - if (att->stdata) - { - for (i = 0; i < att->len; i++) - if(att->stdata[i]) - free(att->stdata[i]); - free(att->stdata); - } - - /* If this att has vlen data, release it. */ - if (att->vldata) - { - for (i = 0; i < att->len; i++) - nc_free_vlen(&att->vldata[i]); - free(att->vldata); - } - - free(att); - return NC_NOERR; -} - -/* Break a coordinate variable to separate the dimension and the variable */ -int -nc4_break_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T *dim) -{ - int retval = NC_NOERR; - - /* Sanity checks */ - assert(dim->coord_var == coord_var); - assert(coord_var->dim[0] == dim); - assert(coord_var->dimids[0] == dim->dimid); - assert(0 == dim->hdf_dimscaleid); - - /* If we're replacing an existing dimscale dataset, go to - * every var in the file and detach this dimension scale. */ - if ((retval = rec_detach_scales(grp->nc4_info->root_grp, - dim->dimid, coord_var->hdf_datasetid))) - return retval; - - /* Allow attached dimscales to be tracked on the [former] coordinate variable */ - if (coord_var->ndims) - { - /* Coordinate variables shouldn't have dimscales attached */ - assert(NULL == coord_var->dimscale_attached); - - /* Allocate space for tracking them */ - if (NULL == (coord_var->dimscale_attached = calloc(coord_var->ndims, sizeof(nc_bool_t)))) - return NC_ENOMEM; - } - - /* Detach dimension from variable */ - coord_var->dimscale = NC_FALSE; - dim->coord_var = NULL; - - /* Set state transition indicators */ - coord_var->was_coord_var = NC_TRUE; - coord_var->became_coord_var = NC_FALSE; - - return NC_NOERR; -} - -/* Reform a coordinate variable from a dimension and a variable */ -int -nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, NC_DIM_INFO_T *dim) -{ - int retval = NC_NOERR; - - /* Detach dimscales from the [new] coordinate variable */ - if(var->dimscale_attached) - { - int dims_detached = 0; - int finished = 0; - int d; - - /* Loop over all dimensions for variable */ - for (d = 0; d < var->ndims && !finished; d++) - /* Is there a dimscale attached to this axis? */ - if(var->dimscale_attached[d]) - { - NC_GRP_INFO_T *g; - - for (g = grp; g && !finished; g = g->parent) - { - NC_DIM_INFO_T *dim1; - - for (dim1 = g->dim; dim1 && !finished; dim1 = dim1->l.next) - if (var->dimids[d] == dim1->dimid) - { - hid_t dim_datasetid; /* Dataset ID for dimension */ - - /* Find dataset ID for dimension */ - if (dim1->coord_var) - dim_datasetid = dim1->coord_var->hdf_datasetid; - else - dim_datasetid = dim1->hdf_dimscaleid; - assert(dim_datasetid > 0); - if (H5DSdetach_scale(var->hdf_datasetid, dim_datasetid, d) < 0) - BAIL(NC_EHDFERR); - var->dimscale_attached[d] = NC_FALSE; - if (dims_detached++ == var->ndims) - finished++; - } - } - } - - /* Release & reset the array tracking attached dimscales */ - free(var->dimscale_attached); - var->dimscale_attached = NULL; - } - - /* Use variable's dataset ID for the dimscale ID */ - if (dim->hdf_dimscaleid && grp != NULL) - { - if (H5Dclose(dim->hdf_dimscaleid) < 0) - BAIL(NC_EHDFERR); - dim->hdf_dimscaleid = 0; - - /* Now delete the dimscale's dataset - (it will be recreated later, if necessary) */ - if (H5Gunlink(grp->hdf_grpid, dim->name) < 0) - return NC_EDIMMETA; - } - - /* Attach variable to dimension */ - var->dimscale = NC_TRUE; - dim->coord_var = var; - - /* Check if this variable used to be a coord. var */ - if (var->was_coord_var && grp != NULL) - { - /* Reattach the scale everywhere it is used. */ - /* (Recall that netCDF dimscales are always 1-D) */ - if ((retval = rec_reattach_scales(grp->nc4_info->root_grp, - var->dimids[0], var->hdf_datasetid))) - return retval; - - /* Set state transition indicator (cancels earlier transition) */ - var->was_coord_var = NC_FALSE; - } - else - /* Set state transition indicator */ - var->became_coord_var = NC_TRUE; - - exit: - return retval; -} - -/* Normalize a UTF8 name. Put the result in norm_name, which can be - * NC_MAX_NAME + 1 in size. This function makes sure the free() gets - * called on the return from utf8proc_NFC, and also ensures that the - * name is not too long. */ -int -nc4_normalize_name(const char *name, char *norm_name) -{ - char *temp_name; - if (!(temp_name = (char *)utf8proc_NFC((const unsigned char *)name))) - return NC_EINVAL; - if (strlen(temp_name) > NC_MAX_NAME) - { - free(temp_name); - return NC_EMAXNAME; - } - strcpy(norm_name, temp_name); - free(temp_name); - return NC_NOERR; -} - -/* Print out a bunch of info to stderr about the metadata for - debugging purposes. */ -#ifdef LOGGING -/* Use this to set the global log level. Set it to NC_TURN_OFF_LOGGING - (-1) to turn off all logging. Set it to 0 to show only errors, and - to higher numbers to show more and more logging details. */ -int -nc_set_log_level(int new_level) -{ - if(!nc4_hdf5_initialized) - nc4_hdf5_initialize(); - - /* If the user wants to completely turn off logging, turn off HDF5 - logging too. Now I truely can't think of what to do if this - fails, so just ignore the return code. */ - if (new_level == NC_TURN_OFF_LOGGING) - { - set_auto(NULL,NULL); - LOG((1, "HDF5 error messages turned off!")); - } - - /* Do we need to turn HDF5 logging back on? */ - if (new_level > NC_TURN_OFF_LOGGING && - nc_log_level <= NC_TURN_OFF_LOGGING) - { - if (set_auto((H5E_auto_t)&H5Eprint, stderr) < 0) - LOG((0, "H5Eset_auto failed!")); - LOG((1, "HDF5 error messages turned on.")); - } - - /* Now remember the new level. */ - nc_log_level = new_level; - LOG((4, "log_level changed to %d", nc_log_level)); - return 0; -} - -/* Recursively print the metadata of a group. */ -#define MAX_NESTS 10 -static int -rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count) -{ - NC_GRP_INFO_T *g; - NC_ATT_INFO_T *att; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - NC_TYPE_INFO_T *type; - NC_FIELD_INFO_T *field; - char tabs[MAX_NESTS] = ""; - char *dims_string = NULL; - char temp_string[10]; - int t, retval, d; - - /* Come up with a number of tabs relative to the group. */ - for (t = 0; t < tab_count && t < MAX_NESTS; t++) - strcat(tabs, "\t"); - - LOG((2, "%s GROUP - %s nc_grpid: %d nvars: %d natts: %d", - tabs, grp->name, grp->nc_grpid, grp->nvars, grp->natts)); - - for(att = grp->att; att; att = att->l.next) - LOG((2, "%s GROUP ATTRIBUTE - attnum: %d name: %s type: %d len: %d", - tabs, att->attnum, att->name, att->nc_typeid, att->len)); - - for(dim = grp->dim; dim; dim = dim->l.next) - LOG((2, "%s DIMENSION - dimid: %d name: %s len: %d unlimited: %d", - tabs, dim->dimid, dim->name, dim->len, dim->unlimited)); - - for(var = grp->var; var; var = var->l.next) - { - if(var->ndims > 0) - { - dims_string = (char*)malloc(sizeof(char)*(var->ndims*4)); - strcpy(dims_string, ""); - for (d = 0; d < var->ndims; d++) - { - sprintf(temp_string, " %d", var->dimids[d]); - strcat(dims_string, temp_string); - } - } - LOG((2, "%s VARIABLE - varid: %d name: %s type: %d ndims: %d dimscale: %d dimids:%s endianness: %d, hdf_typeid: %d", - tabs, var->varid, var->name, var->type_info->nc_typeid, var->ndims, (int)var->dimscale, - (dims_string ? dims_string : " -"),var->type_info->endianness, var->type_info->native_hdf_typeid)); - for(att = var->att; att; att = att->l.next) - LOG((2, "%s VAR ATTRIBUTE - attnum: %d name: %s type: %d len: %d", - tabs, att->attnum, att->name, att->nc_typeid, att->len)); - if(dims_string) - { - free(dims_string); - dims_string = NULL; - } - } - - for (type = grp->type; type; type = type->l.next) - { - LOG((2, "%s TYPE - nc_typeid: %d hdf_typeid: 0x%x size: %d committed: %d " - "name: %s num_fields: %d", tabs, type->nc_typeid, - type->hdf_typeid, type->size, (int)type->committed, type->name, - type->u.c.num_fields)); - /* Is this a compound type? */ - if (type->nc_type_class == NC_COMPOUND) - { - LOG((3, "compound type")); - for (field = type->u.c.field; field; field = field->l.next) - LOG((4, "field %s offset %d nctype %d ndims %d", field->name, - field->offset, field->nc_typeid, field->ndims)); - } - else if (type->nc_type_class == NC_VLEN) - { - LOG((3, "VLEN type")); - LOG((4, "base_nc_type: %d", type->u.v.base_nc_typeid)); - } - else if (type->nc_type_class == NC_OPAQUE) - LOG((3, "Opaque type")); - else if (type->nc_type_class == NC_ENUM) - { - LOG((3, "Enum type")); - LOG((4, "base_nc_type: %d", type->u.e.base_nc_typeid)); - } - else - { - LOG((0, "Unknown class: %d", type->nc_type_class)); - return NC_EBADTYPE; - } - } - - /* Call self for each child of this group. */ - if (grp->children) - { - for (g = grp->children; g; g = g->l.next) - if ((retval = rec_print_metadata(g, tab_count + 1))) - return retval; - } - - return NC_NOERR; -} - -/* Print out the internal metadata for a file. This is useful to check - * that netCDF is working! Nonetheless, this function will print - * nothing if logging is not set to at least two. */ -int -log_metadata_nc(NC *nc) -{ - NC_HDF5_FILE_INFO_T *h5 = NC4_DATA(nc); - - LOG((2, "*** NetCDF-4 Internal Metadata: int_ncid 0x%x ext_ncid 0x%x", - nc->int_ncid, nc->ext_ncid)); - if (!h5) - { - LOG((2, "This is a netCDF-3 file.")); - return NC_NOERR; - } - LOG((2, "FILE - hdfid: 0x%x path: %s cmode: 0x%x parallel: %d redef: %d " - "fill_mode: %d no_write: %d next_nc_grpid: %d", h5->hdfid, nc->path, - h5->cmode, (int)h5->parallel, (int)h5->redef, h5->fill_mode, (int)h5->no_write, - h5->next_nc_grpid)); - return rec_print_metadata(h5->root_grp, 0); -} - -#endif /*LOGGING */ - -/* Show the in-memory metadata for a netcdf file. */ -int -NC4_show_metadata(int ncid) -{ - int retval = NC_NOERR; -#ifdef LOGGING - NC *nc; - int old_log_level = nc_log_level; - - /* Find file metadata. */ - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - /* Log level must be 2 to see metadata. */ - nc_log_level = 2; - retval = log_metadata_nc(nc); - nc_log_level = old_log_level; -#endif /*LOGGING*/ - return retval; -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4type.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4type.c deleted file mode 100644 index b1bf50c9da8..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4type.c +++ /dev/null @@ -1,748 +0,0 @@ -/* - -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file handles the nc4 user-defined type functions (i.e. compound -and opaque types). - -Copyright 2005, University Corporation for Atmospheric Research. See -the COPYRIGHT file for copying and redistribution conditions. - -$Id: nc4type.c,v 1.73 2010/05/25 17:54:24 dmh Exp $ -*/ - -#include "nc4internal.h" -#include "nc4dispatch.h" - -#define NUM_ATOMIC_TYPES 13 -char atomic_name[NUM_ATOMIC_TYPES][NC_MAX_NAME + 1] = {"none", "byte", "char", - "short", "int", "float", - "double", "ubyte", - "ushort", "uint", - "int64", "uint64", "string"}; - -EXTERNL int -NC4_inq_type_equal(int ncid1, nc_type typeid1, int ncid2, - nc_type typeid2, int *equalp) -{ - NC_GRP_INFO_T *grpone, *grptwo; - NC_TYPE_INFO_T *type1, *type2; - int retval; - - LOG((2, "nc_inq_type_equal: ncid1 0x%x typeid1 %d ncid2 0x%x typeid2 %d", - ncid1, typeid1, ncid2, typeid2)); - - /* Check input. */ - if(equalp == NULL) return NC_NOERR; - - if (typeid1 <= NC_NAT || typeid2 <= NC_NAT) - return NC_EINVAL; - - /* If one is atomic, and the other user-defined, the types are not - * equal. */ - if ((typeid1 <= NC_STRING && typeid2 > NC_STRING) || - (typeid2 <= NC_STRING && typeid1 > NC_STRING)) - { - if (equalp) *equalp = 0; - return NC_NOERR; - } - - /* If both are atomic types, the answer is easy. */ - if (typeid1 <= NUM_ATOMIC_TYPES) - { - if (equalp) - { - if (typeid1 == typeid2) - *equalp = 1; - else - *equalp = 0; - } - return NC_NOERR; - } - - /* Not atomic types - so find type1 and type2 information. */ - if ((retval = nc4_find_nc4_grp(ncid1, &grpone))) - return retval; - if (!(type1 = nc4_rec_find_nc_type(grpone->nc4_info->root_grp, - typeid1))) - return NC_EBADTYPE; - if ((retval = nc4_find_nc4_grp(ncid2, &grptwo))) - return retval; - if (!(type2 = nc4_rec_find_nc_type(grptwo->nc4_info->root_grp, - typeid2))) - return NC_EBADTYPE; - - /* Are the two types equal? */ - if (equalp) - *equalp = (int)H5Tequal(type1->native_hdf_typeid, type2->native_hdf_typeid); - - return NC_NOERR; -} - -/* Get the id of a type from the name. */ -EXTERNL int -NC4_inq_typeid(int ncid, const char *name, nc_type *typeidp) -{ - NC_GRP_INFO_T *grp; - NC_GRP_INFO_T *grptwo; - NC_HDF5_FILE_INFO_T *h5; - NC_TYPE_INFO_T *type = NULL; - char *norm_name; - int i, retval; - - for (i = 0; i < NUM_ATOMIC_TYPES; i++) - if (!strcmp(name, atomic_name[i])) - { - if (typeidp) - *typeidp = i; - return NC_NOERR; - } - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* Must be a netCDF-4 file. */ - if (!h5) - return NC_ENOTNC4; - - /* If the first char is a /, this is a fully-qualified - * name. Otherwise, this had better be a local name (i.e. no / in - * the middle). */ - if (name[0] != '/' && strstr(name, "/")) - return NC_EINVAL; - - /* Normalize name. */ - if (!(norm_name = (char*)malloc(strlen(name) + 1))) - return NC_ENOMEM; - if ((retval = nc4_normalize_name(name, norm_name))) { - free(norm_name); - return retval; - } - /* Is the type in this group? If not, search parents. */ - for (grptwo = grp; grptwo; grptwo = grptwo->parent) - for (type = grptwo->type; type; type = type->l.next) - if (!strcmp(norm_name, type->name)) - { - if (typeidp) - *typeidp = type->nc_typeid; - break; - } - - /* Still didn't find type? Search file recursively, starting at the - * root group. */ - if (!type) - if ((type = nc4_rec_find_named_type(grp->nc4_info->root_grp, norm_name))) - if (typeidp) - *typeidp = type->nc_typeid; - - free(norm_name); - - /* OK, I give up already! */ - if (!type) - return NC_EBADTYPE; - - return NC_NOERR; -} - -/* Find all user-defined types for a location. This finds all - * user-defined types in a group. */ -int -NC4_inq_typeids(int ncid, int *ntypes, int *typeids) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_TYPE_INFO_T *type; - int num = 0; - int retval; - - LOG((2, "nc_inq_typeids: ncid 0x%x", ncid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* If this is a netCDF-4 file, count types. */ - if (h5 && grp->type) - for (type = grp->type; type; type = type->l.next) - { - if (typeids) - typeids[num] = type->nc_typeid; - num++; - } - - /* Give the count to the user. */ - if (ntypes) - *ntypes = num; - - return NC_NOERR; -} - - -/* This internal function adds a new user defined type to the metadata - * of a group of an open file. */ -static int -add_user_type(int ncid, size_t size, const char *name, nc_type base_typeid, - nc_type type_class, nc_type *typeidp) -{ - NC_HDF5_FILE_INFO_T *h5; - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - LOG((2, "%s: ncid 0x%x size %d name %s base_typeid %d ", - __FUNCTION__, ncid, size, norm_name, base_typeid)); - - /* Find group metadata. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - return retval; - - /* Only netcdf-4 files! */ - if (!h5) - return NC_ENOTNC4; - - /* Turn on define mode if it is not on. */ - if (!(h5->cmode & NC_INDEF)) - if ((retval = NC4_redef(ncid))) - return retval; - - /* No size is provided for vlens or enums, get it from the base type. */ - if (type_class == NC_VLEN || type_class == NC_ENUM) - { - if ((retval = nc4_get_typelen_mem(grp->nc4_info, base_typeid, 0, - &size))) - return retval; - } - else if (size <= 0) - return NC_EINVAL; - - /* Check that this name is not in use as a var, grp, or type. */ - if ((retval = nc4_check_dup_name(grp, norm_name))) - return retval; - - /* Add to our list of types. */ - if ((retval = nc4_type_list_add(grp, size, norm_name, &type))) - return retval; - - /* Remember info about this type. */ - type->nc_type_class = type_class; - if (type_class == NC_VLEN) - type->u.v.base_nc_typeid = base_typeid; - else if (type_class == NC_ENUM) - type->u.e.base_nc_typeid = base_typeid; - - /* Return the typeid to the user. */ - if (typeidp) - *typeidp = type->nc_typeid; - - return NC_NOERR; -} - - -/* The sizes of types may vary from platform to platform, but within - * netCDF files, type sizes are fixed. */ -#define NC_CHAR_LEN sizeof(char) -#define NC_STRING_LEN sizeof(char *) -#define NC_BYTE_LEN 1 -#define NC_SHORT_LEN 2 -#define NC_INT_LEN 4 -#define NC_FLOAT_LEN 4 -#define NC_DOUBLE_LEN 8 -#define NC_INT64_LEN 8 - -/* Get the name and size of a type. For strings, 1 is returned. For - * VLEN the base type len is returned. */ -int -NC4_inq_type(int ncid, nc_type typeid1, char *name, size_t *size) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - int atomic_size[NUM_ATOMIC_TYPES] = {0, NC_BYTE_LEN, NC_CHAR_LEN, NC_SHORT_LEN, - NC_INT_LEN, NC_FLOAT_LEN, NC_DOUBLE_LEN, - NC_BYTE_LEN, NC_SHORT_LEN, NC_INT_LEN, NC_INT64_LEN, - NC_INT64_LEN, NC_STRING_LEN}; - - int retval; - - LOG((2, "nc_inq_type: ncid 0x%x typeid %d", ncid, typeid1)); - - /* If this is an atomic type, the answer is easy. */ - if (typeid1 < NUM_ATOMIC_TYPES) - { - if (name) - strcpy(name, atomic_name[typeid1]); - if (size) - *size = atomic_size[typeid1]; - return NC_NOERR; - } - - /* Not an atomic type - so find group. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find this type. */ - if (!(type = nc4_rec_find_nc_type(grp->nc4_info->root_grp, typeid1))) - return NC_EBADTYPE; - - if (name) - strcpy(name, type->name); - - if (size) - { - if (type->nc_type_class == NC_VLEN) - *size = sizeof(nc_vlen_t); - else if (type->nc_type_class == NC_STRING) - *size = 1; - else - *size = type->size; - } - - return NC_NOERR; -} - -/* Create a compound type. */ -int -NC4_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp) -{ - return add_user_type(ncid, size, name, 0, NC_COMPOUND, typeidp); -} - -/* Insert a named field into a compound type. */ -int -NC4_insert_compound(int ncid, nc_type typeid1, const char *name, size_t offset, - nc_type field_typeid) -{ - return nc_insert_array_compound(ncid, typeid1, name, offset, - field_typeid, 0, NULL); -} - -/* Insert a named array into a compound type. */ -EXTERNL int -NC4_insert_array_compound(int ncid, int typeid1, const char *name, - size_t offset, nc_type field_typeid, - int ndims, const int *dim_sizesp) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "nc_insert_array_compound: ncid 0x%x, typeid %d name %s " - "offset %d field_typeid %d ndims %d", ncid, typeid1, - name, offset, field_typeid, ndims)); - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - return retval; - - /* Find file metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find type metadata. */ - if ((retval = nc4_find_type(grp->nc4_info, typeid1, &type))) - return retval; - - /* Did the user give us a good compound type typeid? */ - if (!type || type->nc_type_class != NC_COMPOUND) - return NC_EBADTYPE; - - /* If this type has already been written to the file, you can't - * change it. */ - if (type->committed) - return NC_ETYPDEFINED; - - /* Insert new field into this type's list of fields. */ - if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields, - norm_name, offset, 0, 0, field_typeid, - ndims, dim_sizesp))) - return retval; - type->u.c.num_fields++; - - return NC_NOERR; -} - -/* Find info about any user defined type. */ -int -NC4_inq_user_type(int ncid, nc_type typeid1, char *name, size_t *size, - nc_type *base_nc_typep, size_t *nfieldsp, int *classp) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - int retval; - - LOG((2, "nc_inq_user_type: ncid 0x%x typeid %d", ncid, typeid1)); - - /* Find group metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find this type. */ - if (!(type = nc4_rec_find_nc_type(grp->nc4_info->root_grp, typeid1))) - return NC_EBADTYPE; - - /* Count the number of fields. */ - if (nfieldsp) - { - if (type->nc_type_class == NC_COMPOUND) - *nfieldsp = type->u.c.num_fields; - else if (type->nc_type_class == NC_ENUM) - *nfieldsp = type->u.e.num_members; - else - *nfieldsp = 0; - } - - /* Fill in size and name info, if desired. */ - if (size) - { - if (type->nc_type_class == NC_VLEN) - *size = sizeof(nc_vlen_t); - else if (type->nc_type_class == NC_STRING) - *size = 1; - else - *size = type->size; - } - if (name) - strcpy(name, type->name); - - /* VLENS and ENUMs have a base type - that is, they type they are - * arrays of or enums of. */ - if (base_nc_typep) - { - if (type->nc_type_class == NC_ENUM) - *base_nc_typep = type->u.e.base_nc_typeid; - else if (type->nc_type_class == NC_VLEN) - *base_nc_typep = type->u.v.base_nc_typeid; - else - *base_nc_typep = NC_NAT; - } - - /* If the user wants it, tell whether this is a compound, opaque, - * vlen, enum, or string class of type. */ - if (classp) - *classp = type->nc_type_class; - - return NC_NOERR; -} - -/* Given the ncid, typeid and fieldid, get info about the field. */ -int -NC4_inq_compound_field(int ncid, nc_type typeid1, int fieldid, char *name, - size_t *offsetp, nc_type *field_typeidp, int *ndimsp, - int *dim_sizesp) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - NC_FIELD_INFO_T *field; - int d, retval; - - /* Find file metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find this type. */ - if (!(type = nc4_rec_find_nc_type(grp->nc4_info->root_grp, typeid1))) - return NC_EBADTYPE; - - /* Find the field. */ - for (field = type->u.c.field; field; field = field->l.next) - if (field->fieldid == fieldid) - { - if (name) - strcpy(name, field->name); - if (offsetp) - *offsetp = field->offset; - if (field_typeidp) - *field_typeidp = field->nc_typeid; - if (ndimsp) - *ndimsp = field->ndims; - if (dim_sizesp) - for (d = 0; d < field->ndims; d++) - dim_sizesp[d] = field->dim_size[d]; - return NC_NOERR; - } - - return NC_EBADFIELD; -} - -/* Find a netcdf-4 file. THis will return an error if it finds a - * netcdf-3 file, or a netcdf-4 file with strict nc3 rules. */ -static int -find_nc4_file(int ncid, NC **nc) -{ - NC_HDF5_FILE_INFO_T* h5; - - /* Find file metadata. */ - if (!((*nc) = nc4_find_nc_file(ncid,&h5))) - return NC_EBADID; - - if (h5->cmode & NC_CLASSIC_MODEL) - return NC_ESTRICTNC3; - - return NC_NOERR; -} - -/* Given the typeid and the name, get the fieldid. */ -int -NC4_inq_compound_fieldindex(int ncid, nc_type typeid1, const char *name, int *fieldidp) -{ - NC *nc; - NC_TYPE_INFO_T *type; - NC_FIELD_INFO_T *field; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "nc_inq_compound_fieldindex: ncid 0x%x typeid %d name %s", - ncid, typeid1, name)); - - /* Find file metadata. */ - if ((retval = find_nc4_file(ncid, &nc))) - return retval; - - /* Find the type. */ - if ((retval = nc4_find_type(NC4_DATA(nc), typeid1, &type))) - return retval; - - /* Did the user give us a good compound type typeid? */ - if (!type || type->nc_type_class != NC_COMPOUND) - return NC_EBADTYPE; - - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - return retval; - - /* Find the field with this name. */ - for (field = type->u.c.field; field; field = field->l.next) - if (!strcmp(field->name, norm_name)) - break; - - if (!field) - return NC_EBADFIELD; - - if (fieldidp) - *fieldidp = field->fieldid; - return NC_NOERR; -} - - -/* Opaque type. */ - -/* Create an opaque type. Provide a size and a name. */ -int -NC4_def_opaque(int ncid, size_t datum_size, const char *name, - nc_type *typeidp) -{ - return add_user_type(ncid, datum_size, name, 0, NC_OPAQUE, typeidp); -} - - -/* Define a variable length type. */ -int -NC4_def_vlen(int ncid, const char *name, nc_type base_typeid, - nc_type *typeidp) -{ - return add_user_type(ncid, 0, name, base_typeid, NC_VLEN, typeidp); -} - -/* Create an enum type. Provide a base type and a name. At the moment - * only ints are accepted as base types. */ -int -NC4_def_enum(int ncid, nc_type base_typeid, const char *name, - nc_type *typeidp) -{ - return add_user_type(ncid, 0, name, base_typeid, NC_ENUM, typeidp); -} - - -/* Get enum name from enum value. Name size will be <= NC_MAX_NAME. */ -int -NC4_inq_enum_ident(int ncid, nc_type xtype, long long value, char *identifier) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - NC_ENUM_MEMBER_INFO_T *enum_member; - long long ll_val; - int i; - int retval; - - LOG((3, "nc_inq_enum_ident: xtype %d value %d\n", xtype, value)); - - /* Find group metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find this type. */ - if (!(type = nc4_rec_find_nc_type(grp->nc4_info->root_grp, xtype))) - return NC_EBADTYPE; - - /* Complain if they are confused about the type. */ - if (type->nc_type_class != NC_ENUM) - return NC_EBADTYPE; - - /* Move to the desired enum member in the list. */ - enum_member = type->u.e.enum_member; - for (i = 0; i < type->u.e.num_members; i++) - { - switch (type->u.e.base_nc_typeid) - { - case NC_BYTE: - ll_val = *(char *)enum_member->value; - break; - case NC_UBYTE: - ll_val = *(unsigned char *)enum_member->value; - break; - case NC_SHORT: - ll_val = *(short *)enum_member->value; - break; - case NC_USHORT: - ll_val = *(unsigned short *)enum_member->value; - break; - case NC_INT: - ll_val = *(int *)enum_member->value; - break; - case NC_UINT: - ll_val = *(unsigned int *)enum_member->value; - break; - case NC_INT64: - case NC_UINT64: - ll_val = *(long long *)enum_member->value; - break; - default: - return NC_EINVAL; - } - LOG((4, "ll_val=%d", ll_val)); - if (ll_val == value) - { - if (identifier) - strcpy(identifier, enum_member->name); - break; - } - else - enum_member = enum_member->l.next; - } - - /* If we didn't find it, life sucks for us. :-( */ - if (i == type->u.e.num_members) - return NC_EINVAL; - - return NC_NOERR; -} - -/* Get information about an enum member: an identifier and - * value. Identifier size will be <= NC_MAX_NAME. */ -int -NC4_inq_enum_member(int ncid, nc_type typeid1, int idx, char *identifier, - void *value) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - NC_ENUM_MEMBER_INFO_T *enum_member; - int i; - int retval; - - LOG((2, "nc_inq_enum_member: ncid 0x%x typeid %d", ncid, typeid1)); - - /* Find group metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find this type. */ - if (!(type = nc4_rec_find_nc_type(grp->nc4_info->root_grp, typeid1))) - return NC_EBADTYPE; - - /* Complain if they are confused about the type. */ - if (type->nc_type_class != NC_ENUM) - return NC_EBADTYPE; - - /* Check index. */ - if (idx >= type->u.e.num_members) - return NC_EINVAL; - - /* Move to the desired enum member in the list. */ - enum_member = type->u.e.enum_member; - for (i = 0; i < idx; i++) - enum_member = enum_member->l.next; - - /* Give the people what they want. */ - if (identifier) - strcpy(identifier, enum_member->name); - if (value) - memcpy(value, enum_member->value, type->size); - - return NC_NOERR; -} - -/* Insert a identifierd value into an enum type. The value must fit within - * the size of the enum type, the identifier size must be <= NC_MAX_NAME. */ -int -NC4_insert_enum(int ncid, nc_type typeid1, const char *identifier, - const void *value) -{ - NC_GRP_INFO_T *grp; - NC_TYPE_INFO_T *type; - char norm_name[NC_MAX_NAME + 1]; - int retval; - - LOG((2, "nc_insert_enum: ncid 0x%x, typeid %d identifier %s value %d", ncid, - typeid1, identifier, value)); - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(identifier, norm_name))) - return retval; - - /* Find file metadata. */ - if ((retval = nc4_find_nc4_grp(ncid, &grp))) - return retval; - - /* Find type metadata. */ - if ((retval = nc4_find_type(grp->nc4_info, typeid1, &type))) - return retval; - - /* Did the user give us a good enum typeid? */ - if (!type || type->nc_type_class != NC_ENUM) - return NC_EBADTYPE; - - /* If this type has already been written to the file, you can't - * change it. */ - if (type->committed) - return NC_ETYPDEFINED; - - /* Insert new field into this type's list of fields. */ - if ((retval = nc4_enum_member_add(&type->u.e.enum_member, type->size, - norm_name, value))) - return retval; - type->u.e.num_members++; - - return NC_NOERR; -} - -/* Insert one element into an already allocated vlen array element. */ -int -NC4_put_vlen_element(int ncid, int typeid1, void *vlen_element, - size_t len, const void *data) -{ - nc_vlen_t *tmp = (nc_vlen_t*)vlen_element; - tmp->len = len; - tmp->p = (void *)data; - return NC_NOERR; -} - -/* Insert one element into an already allocated vlen array element. */ -int -NC4_get_vlen_element(int ncid, int typeid1, const void *vlen_element, - size_t *len, void *data) -{ - const nc_vlen_t *tmp = (nc_vlen_t*)vlen_element; - int type_size = 4; - - *len = tmp->len; - memcpy(data, tmp->p, tmp->len * type_size); - return NC_NOERR; -} - diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4var.c b/contrib/netcdf/4.4.1.1/libsrc4/nc4var.c deleted file mode 100644 index 9edf540fd9e..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4var.c +++ /dev/null @@ -1,1397 +0,0 @@ -/* -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file handles the nc4 variable functions. - -Copyright 2003-2006, University Corporation for Atmospheric -Research. See COPYRIGHT file for copying and redistribution -conditions. -*/ - -#include -#include "nc4dispatch.h" -#include - -/* Min and max deflate levels tolerated by HDF5. */ -#define MIN_DEFLATE_LEVEL 0 -#define MAX_DEFLATE_LEVEL 9 - -/* This is to track opened HDF5 objects to make sure they are - * closed. */ -#ifdef EXTRA_TESTS -extern int num_plists; -#endif /* EXTRA_TESTS */ - -/* One meg is the minimum buffer size. */ -#define ONE_MEG 1048576 - -/* Szip options. */ -#define NC_SZIP_EC_OPTION_MASK 4 -#define NC_SZIP_NN_OPTION_MASK 32 -#define NC_SZIP_MAX_PIXELS_PER_BLOCK 32 - -extern int nc4_get_default_fill_value(const NC_TYPE_INFO_T *type_info, void *fill_value); - - -/* If the HDF5 dataset for this variable is open, then close it and - * reopen it, with the perhaps new settings for chunk caching. */ -int -nc4_reopen_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var) -{ - hid_t access_pid; - - if (var->hdf_datasetid) - { - if ((access_pid = H5Pcreate(H5P_DATASET_ACCESS)) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_plists++; -#endif - if (H5Pset_chunk_cache(access_pid, var->chunk_cache_nelems, - var->chunk_cache_size, - var->chunk_cache_preemption) < 0) - return NC_EHDFERR; - if (H5Dclose(var->hdf_datasetid) < 0) - return NC_EHDFERR; - if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name, - access_pid)) < 0) - return NC_EHDFERR; - if (H5Pclose(access_pid) < 0) - return NC_EHDFERR; -#ifdef EXTRA_TESTS - num_plists--; -#endif - } - - return NC_NOERR; -} - -/* Set chunk cache size for a variable. */ -int -NC4_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, - float preemption) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int retval; - - /* Check input for validity. */ - if (preemption < 0 || preemption > 1) - return NC_EINVAL; - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - /* An attempt to do any of these things on a netCDF-3 file is - * ignored with no error. */ - if (!h5) - return NC_NOERR; - - assert(nc && grp && h5); - - /* Find the var. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - if (!var) - return NC_ENOTVAR; - - /* Set the values. */ - var->chunk_cache_size = size; - var->chunk_cache_nelems = nelems; - var->chunk_cache_preemption = preemption; - - if ((retval = nc4_reopen_dataset(grp, var))) - return retval; - - return NC_NOERR; -} - -/* Need this version for fortran. Accept negative numbers to leave - * settings as they are. */ -int -nc_set_var_chunk_cache_ints(int ncid, int varid, int size, int nelems, - int preemption) -{ - size_t real_size = H5D_CHUNK_CACHE_NBYTES_DEFAULT; - size_t real_nelems = H5D_CHUNK_CACHE_NSLOTS_DEFAULT; - float real_preemption = H5D_CHUNK_CACHE_W0_DEFAULT; - - if (size >= 0) - real_size = ((size_t) size) * MEGABYTE; - - if (nelems >= 0) - real_nelems = nelems; - - if (preemption >= 0) - real_preemption = preemption / 100.; - - return NC4_set_var_chunk_cache(ncid, varid, real_size, real_nelems, - real_preemption); -} - -/* Get chunk cache size for a variable. */ -int -NC4_get_var_chunk_cache(int ncid, int varid, size_t *sizep, - size_t *nelemsp, float *preemptionp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int retval; - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - /* Attempting to do any of these things on a netCDF-3 file produces - * an error. */ - if (!h5) - return NC_ENOTNC4; - - assert(nc && grp && h5); - - /* Find the var. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - if (!var) - return NC_ENOTVAR; - - /* Give the user what they want. */ - if (sizep) - *sizep = var->chunk_cache_size; - if (nelemsp) - *nelemsp = var->chunk_cache_nelems; - if (preemptionp) - *preemptionp = var->chunk_cache_preemption; - - return NC_NOERR; -} - -/* Get chunk cache size for a variable. */ -int -nc_get_var_chunk_cache_ints(int ncid, int varid, int *sizep, - int *nelemsp, int *preemptionp) -{ - size_t real_size, real_nelems; - float real_preemption; - int ret; - - if ((ret = NC4_get_var_chunk_cache(ncid, varid, &real_size, - &real_nelems, &real_preemption))) - return ret; - - if (sizep) - *sizep = real_size / MEGABYTE; - if (nelemsp) - *nelemsp = (int)real_nelems; - if(preemptionp) - *preemptionp = (int)(real_preemption * 100); - - return NC_NOERR; -} - -/* Check a set of chunksizes to see if they specify a chunk that is too big. */ -static int -check_chunksizes(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, const size_t *chunksizes) -{ - double dprod; - size_t type_len; - int d; - int retval; - - if ((retval = nc4_get_typelen_mem(grp->nc4_info, var->type_info->nc_typeid, 0, &type_len))) - return retval; - if (var->type_info->nc_type_class == NC_VLEN) - dprod = (double)sizeof(hvl_t); - else - dprod = (double)type_len; - for (d = 0; d < var->ndims; d++) - { - if (chunksizes[d] < 1) - return NC_EINVAL; - dprod *= (double) chunksizes[d]; - } - - if (dprod > (double) NC_MAX_UINT) - return NC_EBADCHUNK; - - return NC_NOERR; -} - -/* Find the default chunk nelems (i.e. length of chunk along each - * dimension). */ -static int -nc4_find_default_chunksizes2(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var) -{ - int d; - size_t type_size; - float num_values = 1, num_unlim = 0; - int retval; - size_t suggested_size; -#ifdef LOGGING - double total_chunk_size; -#endif - - if (var->type_info->nc_type_class == NC_STRING) - type_size = sizeof(char *); - else - type_size = var->type_info->size; - -#ifdef LOGGING - /* Later this will become the total number of bytes in the default - * chunk. */ - total_chunk_size = (double) type_size; -#endif - - /* How many values in the variable (or one record, if there are - * unlimited dimensions). */ - for (d = 0; d < var->ndims; d++) - { - assert(var->dim[d]); - if (! var->dim[d]->unlimited) - num_values *= (float)var->dim[d]->len; - else { - num_unlim++; - var->chunksizes[d] = 1; /* overwritten below, if all dims are unlimited */ - } - } - /* Special case to avoid 1D vars with unlim dim taking huge amount - of space (DEFAULT_CHUNK_SIZE bytes). Instead we limit to about - 4KB */ -#define DEFAULT_1D_UNLIM_SIZE (4096) /* TODO: make build-time parameter? */ - if (var->ndims == 1 && num_unlim == 1) { - if (DEFAULT_CHUNK_SIZE / type_size <= 0) - suggested_size = 1; - else if (DEFAULT_CHUNK_SIZE / type_size > DEFAULT_1D_UNLIM_SIZE) - suggested_size = DEFAULT_1D_UNLIM_SIZE; - else - suggested_size = DEFAULT_CHUNK_SIZE / type_size; - var->chunksizes[0] = suggested_size / type_size; - LOG((4, "%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d " - "chunksize %ld", __func__, var->name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[0])); - } - if (var->ndims > 1 && var->ndims == num_unlim) { /* all dims unlimited */ - suggested_size = pow((double)DEFAULT_CHUNK_SIZE/type_size, 1.0/(double)(var->ndims)); - for (d = 0; d < var->ndims; d++) - { - var->chunksizes[d] = suggested_size ? suggested_size : 1; - LOG((4, "%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d " - "chunksize %ld", __func__, var->name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[d])); - } - } - - /* Pick a chunk length for each dimension, if one has not already - * been picked above. */ - for (d = 0; d < var->ndims; d++) - if (!var->chunksizes[d]) - { - suggested_size = (pow((double)DEFAULT_CHUNK_SIZE/(num_values * type_size), - 1.0/(double)(var->ndims - num_unlim)) * var->dim[d]->len - .5); - if (suggested_size > var->dim[d]->len) - suggested_size = var->dim[d]->len; - var->chunksizes[d] = suggested_size ? suggested_size : 1; - LOG((4, "%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d " - "chunksize %ld", __func__, var->name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[d])); - } - -#ifdef LOGGING - /* Find total chunk size. */ - for (d = 0; d < var->ndims; d++) - total_chunk_size *= (double) var->chunksizes[d]; - LOG((4, "total_chunk_size %f", total_chunk_size)); -#endif - - /* But did this result in a chunk that is too big? */ - retval = check_chunksizes(grp, var, var->chunksizes); - if (retval) - { - /* Other error? */ - if (retval != NC_EBADCHUNK) - return retval; - - /* Chunk is too big! Reduce each dimension by half and try again. */ - for ( ; retval == NC_EBADCHUNK; retval = check_chunksizes(grp, var, var->chunksizes)) - for (d = 0; d < var->ndims; d++) - var->chunksizes[d] = var->chunksizes[d]/2 ? var->chunksizes[d]/2 : 1; - } - - /* Do we have any big data overhangs? They can be dangerous to - * babies, the elderly, or confused campers who have had too much - * beer. */ - for (d = 0; d < var->ndims; d++) - { - size_t num_chunks; - size_t overhang; - assert(var->chunksizes[d] > 0); - num_chunks = (var->dim[d]->len + var->chunksizes[d] - 1) / var->chunksizes[d]; - if(num_chunks > 0) { - overhang = (num_chunks * var->chunksizes[d]) - var->dim[d]->len; - var->chunksizes[d] -= overhang / num_chunks; - } - } - - return NC_NOERR; -} - -/* This is called when a new netCDF-4 variable is defined. Break it - * down! */ -static int -nc_def_var_nc4(int ncid, const char *name, nc_type xtype, - int ndims, const int *dimidsp, int *varidp) -{ - NC_GRP_INFO_T *grp; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - NC_HDF5_FILE_INFO_T *h5; - NC_TYPE_INFO_T *type_info = NULL; - char norm_name[NC_MAX_NAME + 1]; - int d; - int retval; - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_grp_h5(ncid, &grp, &h5))) - BAIL(retval); - assert(grp && h5); - - /* If it's not in define mode, strict nc3 files error out, - * otherwise switch to define mode. */ - if (!(h5->flags & NC_INDEF)) - { - if (h5->cmode & NC_CLASSIC_MODEL) - BAIL(NC_ENOTINDEFINE); - if ((retval = NC4_redef(ncid))) - BAIL(retval); - } - - /* Check and normalize the name. */ - if ((retval = nc4_check_name(name, norm_name))) - BAIL(retval); - - /* Not a Type is, well, not a type.*/ - if (xtype == NC_NAT) - BAIL(NC_EBADTYPE); - - /* For classic files, only classic types are allowed. */ - if (h5->cmode & NC_CLASSIC_MODEL && xtype > NC_DOUBLE) - BAIL(NC_ESTRICTNC3); - - /* cast needed for braindead systems with signed size_t */ - if((unsigned long) ndims > X_INT_MAX) /* Backward compat */ - BAIL(NC_EINVAL); - - /* Classic model files have a limit on number of vars. */ - if(h5->cmode & NC_CLASSIC_MODEL && h5->nvars >= NC_MAX_VARS) - BAIL(NC_EMAXVARS); - - /* Check that this name is not in use as a var, grp, or type. */ - if ((retval = nc4_check_dup_name(grp, norm_name))) - BAIL(retval); - - /* If the file is read-only, return an error. */ - if (h5->no_write) - BAIL(NC_EPERM); - - /* Check all the dimids to make sure they exist. */ - for (d = 0; d < ndims; d++) - if ((retval = nc4_find_dim(grp, dimidsp[d], &dim, NULL))) - BAIL(retval); - - /* These degrubbing messages sure are handy! */ - LOG((3, "%s: name %s type %d ndims %d", __func__, norm_name, xtype, ndims)); -#ifdef LOGGING - { - int dd; - for (dd = 0; dd < ndims; dd++) - LOG((4, "dimid[%d] %d", dd, dimidsp[dd])); - } -#endif - - /* Add the var to the end of the list. */ - if ((retval = nc4_var_list_add(&grp->var, &var))) - BAIL(retval); - - /* Now fill in the values in the var info structure. */ - if (!(var->name = malloc((strlen(norm_name) + 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - strcpy(var->name, norm_name); - var->hash = hash_fast(norm_name, strlen(norm_name)); - var->varid = grp->nvars++; - var->ndims = ndims; - var->is_new_var = NC_TRUE; - - /* If this is a user-defined type, there is a type_info struct with - * all the type information. For atomic types, fake up a type_info - * struct. */ - if (xtype <= NC_STRING) - { - if (!(type_info = calloc(1, sizeof(NC_TYPE_INFO_T)))) - BAIL(NC_ENOMEM); - type_info->nc_typeid = xtype; - type_info->endianness = NC_ENDIAN_NATIVE; - if ((retval = nc4_get_hdf_typeid(h5, xtype, &type_info->hdf_typeid, - type_info->endianness))) - BAIL(retval); - if ((type_info->native_hdf_typeid = H5Tget_native_type(type_info->hdf_typeid, - H5T_DIR_DEFAULT)) < 0) - BAIL(NC_EHDFERR); - if ((retval = nc4_get_typelen_mem(h5, type_info->nc_typeid, 0, - &type_info->size))) - BAIL(retval); - - /* Set the "class" of the type */ - if (xtype == NC_CHAR) - type_info->nc_type_class = NC_CHAR; - else - { - H5T_class_t class; - - if ((class = H5Tget_class(type_info->hdf_typeid)) < 0) - BAIL(NC_EHDFERR); - switch(class) - { - case H5T_STRING: - type_info->nc_type_class = NC_STRING; - break; - - case H5T_INTEGER: - type_info->nc_type_class = NC_INT; - break; - - case H5T_FLOAT: - type_info->nc_type_class = NC_FLOAT; - break; - - default: - BAIL(NC_EBADTYPID); - } - } - } - /* If this is a user defined type, find it. */ - else - { - if (nc4_find_type(grp->nc4_info, xtype, &type_info)) - BAIL(NC_EBADTYPE); - } - - /* Point to the type, and increment its ref. count */ - var->type_info = type_info; - var->type_info->rc++; - type_info = NULL; - - /* Allocate space for dimension information. */ - if (ndims) - { - if (!(var->dim = calloc(ndims, sizeof(NC_DIM_INFO_T *)))) - BAIL(NC_ENOMEM); - if (!(var->dimids = calloc(ndims, sizeof(int)))) - BAIL(NC_ENOMEM); - } - - /* Assign dimensions to the variable */ - /* At the same time, check to see if this is a coordinate - * variable. If so, it will have the same name as one of its - * dimensions. If it is a coordinate var, is it a coordinate var in - * the same group as the dim? */ - /* Also, check whether we should use contiguous or chunked storage */ - var->contiguous = NC_TRUE; - for (d = 0; d < ndims; d++) - { - NC_GRP_INFO_T *dim_grp; - - /* Look up each dimension */ - if ((retval = nc4_find_dim(grp, dimidsp[d], &dim, &dim_grp))) - BAIL(retval); - - /* Check for dim index 0 having the same name, in the same group */ - if (d == 0 && dim_grp == grp && dim->hash == var->hash && strcmp(dim->name, norm_name) == 0) - { - var->dimscale = NC_TRUE; - dim->coord_var = var; - - /* Use variable's dataset ID for the dimscale ID */ - if (dim->hdf_dimscaleid) - { - /* Detach dimscale from any variables using it */ - if ((retval = rec_detach_scales(grp, dimidsp[d], dim->hdf_dimscaleid)) < 0) - BAIL(retval); - - if (H5Dclose(dim->hdf_dimscaleid) < 0) - BAIL(NC_EHDFERR); - dim->hdf_dimscaleid = 0; - - /* Now delete the dataset (it will be recreated later, if necessary) */ - if (H5Gunlink(grp->hdf_grpid, dim->name) < 0) - BAIL(NC_EDIMMETA); - } - } - - /* Check for unlimited dimension and turn off contiguous storage */ - /* (unless HDF4 file) */ -#ifdef USE_HDF4 - if (dim->unlimited && !h5->hdf4) -#else - if (dim->unlimited) -#endif - var->contiguous = NC_FALSE; - - /* Track dimensions for variable */ - var->dimids[d] = dimidsp[d]; - var->dim[d] = dim; - } - - /* Determine default chunksizes for this variable. (Even for - * variables which may be contiguous. */ - LOG((4, "allocating array of %d size_t to hold chunksizes for var %s", - var->ndims, var->name)); - if (var->ndims) - if (!(var->chunksizes = calloc(var->ndims, sizeof(size_t)))) - BAIL(NC_ENOMEM); - - if ((retval = nc4_find_default_chunksizes2(grp, var))) - BAIL(retval); - - /* Is this a variable with a chunksize greater than the current - * cache size? */ - if ((retval = nc4_adjust_var_cache(grp, var))) - BAIL(retval); - - /* If the user names this variable the same as a dimension, but - * doesn't use that dimension first in its list of dimension ids, - * is not a coordinate variable. I need to change its HDF5 name, - * because the dimension will cause a HDF5 dataset to be created, - * and this var has the same name. */ - for (dim = grp->dim; dim; dim = dim->l.next) - if (dim->hash == var->hash && !strcmp(dim->name, norm_name) && - (!var->ndims || dimidsp[0] != dim->dimid)) - { - /* Set a different hdf5 name for this variable to avoid name - * clash. */ - if (strlen(norm_name) + strlen(NON_COORD_PREPEND) > NC_MAX_NAME) - BAIL(NC_EMAXNAME); - if (!(var->hdf5_name = malloc((strlen(NON_COORD_PREPEND) + - strlen(norm_name) + 1) * sizeof(char)))) - BAIL(NC_ENOMEM); - - sprintf(var->hdf5_name, "%s%s", NON_COORD_PREPEND, norm_name); - } - - /* If this is a coordinate var, it is marked as a HDF5 dimension - * scale. (We found dim above.) Otherwise, allocate space to - * remember whether dimension scales have been attached to each - * dimension. */ - if (!var->dimscale && ndims) - if (ndims && !(var->dimscale_attached = calloc(ndims, sizeof(nc_bool_t)))) - BAIL(NC_ENOMEM); - - /* Return the varid. */ - if (varidp) - *varidp = var->varid; - LOG((4, "new varid %d", var->varid)); - -exit: - if (type_info) - if ((retval = nc4_type_free(type_info))) - BAIL2(retval); - - return retval; -} - -/* Create a new variable to hold user data. This is what it's all - * about baby! */ -int -NC4_def_var(int ncid, const char *name, nc_type xtype, int ndims, - const int *dimidsp, int *varidp) -{ - NC *nc; - NC_HDF5_FILE_INFO_T *h5; - - LOG((2, "%s: ncid 0x%x name %s xtype %d ndims %d", - __func__, ncid, name, xtype, ndims)); - - /* If there are dimensions, I need their ids. */ - if (ndims && !dimidsp) - return NC_EINVAL; - - /* Find metadata for this file. */ - if (!(nc = nc4_find_nc_file(ncid,&h5))) - return NC_EBADID; - - /* Handle netcdf-4 cases. */ - return nc_def_var_nc4(ncid, name, xtype, ndims, dimidsp, varidp); -} - -/* Get all the information about a variable. Pass NULL for whatever - * you don't care about. This is an internal function, not exposed to - * the user. */ -int -NC4_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp, - int *shufflep, int *deflatep, int *deflate_levelp, - int *fletcher32p, int *contiguousp, size_t *chunksizesp, - int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - NC_ATT_INFO_T *att; - int natts=0; - int d; - int retval; - - LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(nc); - assert(grp && h5); - - /* Walk through the list of vars, and return the info about the one - with a matching varid. If the varid is -1, find the global - atts and call it a day. */ - if (varid == NC_GLOBAL) - { - if (nattsp) - { - for (att = grp->att; att; att = att->l.next) - natts++; - *nattsp = natts; - } - return NC_NOERR; - } - - /* Find the var. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - - /* Oh no! Maybe we couldn't find it (*sob*)! */ - if (!var) - return NC_ENOTVAR; - - /* Copy the data to the user's data buffers. */ - if (name) - strcpy(name, var->name); - if (xtypep) - *xtypep = var->type_info->nc_typeid; - if (ndimsp) - *ndimsp = var->ndims; - if (dimidsp) - for (d = 0; d < var->ndims; d++) - dimidsp[d] = var->dimids[d]; - if (nattsp) - { - for (att = var->att; att; att = att->l.next) - natts++; - *nattsp = natts; - } - - /* Chunking stuff. */ - if (!var->contiguous && chunksizesp) - for (d = 0; d < var->ndims; d++) - { - chunksizesp[d] = var->chunksizes[d]; - LOG((4, "chunksizesp[%d]=%d", d, chunksizesp[d])); - } - - if (contiguousp) - *contiguousp = var->contiguous ? NC_CONTIGUOUS : NC_CHUNKED; - - /* Filter stuff. */ - if (deflatep) - *deflatep = (int)var->deflate; - if (deflate_levelp) - *deflate_levelp = var->deflate_level; - if (shufflep) - *shufflep = (int)var->shuffle; - if (fletcher32p) - *fletcher32p = (int)var->fletcher32; - /* NOTE: No interface for returning szip flag currently (but it should never - * be set). - */ - if (options_maskp) - *options_maskp = var->options_mask; - if (pixels_per_blockp) - *pixels_per_blockp = var->pixels_per_block; - - /* Fill value stuff. */ - if (no_fill) - *no_fill = (int)var->no_fill; - - /* Don't do a thing with fill_valuep if no_fill mode is set for - * this var, or if fill_valuep is NULL. */ - if (!var->no_fill && fill_valuep) - { - /* Do we have a fill value for this var? */ - if (var->fill_value) - { - if (var->type_info->nc_type_class == NC_STRING) - { - if (*(char **)var->fill_value) { - - if (!(fill_valuep = calloc(1, sizeof(char *)))) - return NC_ENOMEM; - - if (!(*(char **)fill_valuep = strdup(*(char **)var->fill_value))) - { - free(fill_valuep); - return NC_ENOMEM; - } - } - } - else { - assert(var->type_info->size); - memcpy(fill_valuep, var->fill_value, var->type_info->size); - } - } - else - { - if (var->type_info->nc_type_class == NC_STRING) - { - if (!(fill_valuep = calloc(1, sizeof(char *)))) - return NC_ENOMEM; - - if ((retval = nc4_get_default_fill_value(var->type_info, (char **)fill_valuep))) - { - free(fill_valuep); - return retval; - } else { - free(fill_valuep); - } - } - else - { - if ((retval = nc4_get_default_fill_value(var->type_info, fill_valuep))) - return retval; - } - } - } - - /* Does the user want the endianness of this variable? */ - if (endiannessp) - *endiannessp = var->type_info->endianness; - - return NC_NOERR; -} - -/* This functions sets extra stuff about a netCDF-4 variable which - must be set before the enddef but after the def_var. This is an - internal function, deliberately hidden from the user so that we can - change the prototype of this functions without changing the API. */ -static int -nc_def_var_extra(int ncid, int varid, int *shuffle, int *deflate, - int *deflate_level, int *fletcher32, int *contiguous, - const size_t *chunksizes, int *no_fill, - const void *fill_value, int *endianness) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - NC_DIM_INFO_T *dim; - int d; - int retval; - nc_bool_t ishdf4 = NC_FALSE; /* Use this to avoid so many ifdefs */ - - LOG((2, "%s: ncid 0x%x varid %d", __func__, ncid, varid)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - -#ifdef USE_HDF4 - ishdf4 = h5->hdf4; -#endif - - /* Attempting to do any of these things on a netCDF-3 file produces - * an error. */ - if (!h5) - return NC_ENOTNC4; - - assert(nc && grp && h5); - - /* Find the var. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - - /* Oh no! Maybe we couldn't find it (*sob*)! */ - if (!var) - return NC_ENOTVAR; - - /* Can't turn on contiguous and deflate/fletcher32/szip. */ - if (contiguous) - if ((*contiguous != NC_CHUNKED && deflate) || - (*contiguous != NC_CHUNKED && fletcher32)) - return NC_EINVAL; - - /* Can't turn on parallel and deflate/fletcher32/szip/shuffle. */ - if (nc->mode & (NC_MPIIO | NC_MPIPOSIX)) { - if (deflate || fletcher32 || shuffle) - return NC_EINVAL; - } - - /* If the HDF5 dataset has already been created, then it is too - * late to set all the extra stuff. */ - if (var->created) - return NC_ELATEDEF; - - /* Check compression options. */ - if (deflate && !deflate_level) - return NC_EINVAL; - - /* Valid deflate level? */ - if (deflate && deflate_level) - { - if (*deflate) - if (*deflate_level < MIN_DEFLATE_LEVEL || - *deflate_level > MAX_DEFLATE_LEVEL) - return NC_EINVAL; - - /* For scalars, just ignore attempt to deflate. */ - if (!var->ndims) - return NC_NOERR; - - /* Well, if we couldn't find any errors, I guess we have to take - * the users settings. Darn! */ - var->contiguous = NC_FALSE; - var->deflate = *deflate; - if (*deflate) - var->deflate_level = *deflate_level; - LOG((3, "%s: *deflate_level %d", __func__, *deflate_level)); - } - - /* Shuffle filter? */ - if (shuffle) - { - var->shuffle = *shuffle; - var->contiguous = NC_FALSE; - } - - /* Fletcher32 checksum error protection? */ - if (fletcher32) - { - var->fletcher32 = *fletcher32; - var->contiguous = NC_FALSE; - } - - /* Does the user want a contiguous dataset? Not so fast! Make sure - * that there are no unlimited dimensions, and no filters in use - * for this data. */ - if (contiguous && *contiguous) - { - if (var->deflate || var->fletcher32 || var->shuffle) - return NC_EINVAL; - - if (!ishdf4) { - for (d = 0; d < var->ndims; d++) - { - dim = var->dim[d]; - if (dim->unlimited) - return NC_EINVAL; - } - var->contiguous = NC_TRUE; - } - } - - /* Chunksizes anyone? */ - if (!ishdf4 && contiguous && *contiguous == NC_CHUNKED) - { - var->contiguous = NC_FALSE; - - /* If the user provided chunksizes, check that they are not too - * big, and that their total size of chunk is less than 4 GB. */ - if (chunksizes) - { - - if ((retval = check_chunksizes(grp, var, chunksizes))) - return retval; - for (d = 0; d < var->ndims; d++) { - if(var->dim[d]->len > 0 && chunksizes[d] > var->dim[d]->len) - return NC_EBADCHUNK; - } - - /* Set the chunksizes for this variable. */ - for (d = 0; d < var->ndims; d++) - var->chunksizes[d] = chunksizes[d]; - } - } - - /* Is this a variable with a chunksize greater than the current - * cache size? */ - if (!var->contiguous && (chunksizes || deflate || contiguous)) - { - /* Determine default chunksizes for this variable. */ - if (!var->chunksizes[0]) - if ((retval = nc4_find_default_chunksizes2(grp, var))) - return retval; - - /* Adjust the cache. */ - if ((retval = nc4_adjust_var_cache(grp, var))) - return retval; - } - - /* Are we setting a fill modes? */ - if (no_fill) - { - if (*no_fill) - var->no_fill = NC_TRUE; - else - var->no_fill = NC_FALSE; - } - - /* Are we setting a fill value? */ - if (fill_value && !var->no_fill) - { - /* Copy the fill_value. */ - LOG((4, "Copying fill value into metadata for variable %s", - var->name)); - - /* If there's a _FillValue attribute, delete it. */ - retval = NC4_del_att(ncid, varid, _FillValue); - if (retval && retval != NC_ENOTATT) - return retval; - - /* Create a _FillValue attribute. */ - if ((retval = nc_put_att(ncid, varid, _FillValue, var->type_info->nc_typeid, 1, fill_value))) - return retval; - } - - /* Is the user setting the endianness? */ - if (endianness) - var->type_info->endianness = *endianness; - - return NC_NOERR; -} - -/* Set the deflate level for a var, lower is faster, higher is - * better. Must be called after nc_def_var and before nc_enddef or any - * functions which writes data to the file. */ -int -NC4_def_var_deflate(int ncid, int varid, int shuffle, int deflate, - int deflate_level) -{ - return nc_def_var_extra(ncid, varid, &shuffle, &deflate, - &deflate_level, NULL, NULL, NULL, NULL, NULL, NULL); -} - -/* Set checksum for a var. This must be called after the nc_def_var - * but before the nc_enddef. */ -int -NC4_def_var_fletcher32(int ncid, int varid, int fletcher32) -{ - return nc_def_var_extra(ncid, varid, NULL, NULL, NULL, &fletcher32, - NULL, NULL, NULL, NULL, NULL); -} - -/* Define chunking stuff for a var. This must be done after nc_def_var - and before nc_enddef. - - Chunking is required in any dataset with one or more unlimited - dimensions in HDF5, or any dataset using a filter. - - Where chunksize is a pointer to an array of size ndims, with the - chunksize in each dimension. -*/ -int -NC4_def_var_chunking(int ncid, int varid, int contiguous, const size_t *chunksizesp) -{ - return nc_def_var_extra(ncid, varid, NULL, NULL, NULL, NULL, - &contiguous, chunksizesp, NULL, NULL, NULL); -} - -/* Inquire about chunking stuff for a var. This is a private, - * undocumented function, used by the f77 API to avoid size_t - * problems. */ -int -nc_inq_var_chunking_ints(int ncid, int varid, int *contiguousp, int *chunksizesp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_VAR_INFO_T *var; - NC_HDF5_FILE_INFO_T *h5; - - size_t *cs = NULL; - int i, retval; - - /* Find this ncid's file info. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - assert(nc); - - /* Find var cause I need the number of dims. */ - if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var))) - return retval; - - /* Allocate space for the size_t copy of the chunksizes array. */ - if (var->ndims) - if (!(cs = malloc(var->ndims * sizeof(size_t)))) - return NC_ENOMEM; - - retval = NC4_inq_var_all(ncid, varid, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, contiguousp, cs, NULL, - NULL, NULL, NULL, NULL); - - /* Copy from size_t array. */ - if (*contiguousp == NC_CHUNKED) - for (i = 0; i < var->ndims; i++) - { - chunksizesp[i] = (int)cs[i]; - if (cs[i] > NC_MAX_INT) - retval = NC_ERANGE; - } - - if (var->ndims) - free(cs); - return retval; -} - -/* This function defines the chunking with ints, which works better - * with F77 portability. It is a secret function, which has been - * rendered unmappable, and it is impossible to apparate anywhere in - * this function. */ -int -nc_def_var_chunking_ints(int ncid, int varid, int contiguous, int *chunksizesp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_VAR_INFO_T *var; - NC_HDF5_FILE_INFO_T *h5; - size_t *cs = NULL; - int i, retval; - - /* Find this ncid's file info. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - assert(nc); - -#ifdef USE_HDF4 - if(h5->hdf4) - return NC_NOERR; -#endif - - /* Find var cause I need the number of dims. */ - if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var))) - return retval; - - /* Allocate space for the size_t copy of the chunksizes array. */ - if (var->ndims) - if (!(cs = malloc(var->ndims * sizeof(size_t)))) - return NC_ENOMEM; - - /* Copy to size_t array. */ - for (i = 0; i < var->ndims; i++) - cs[i] = chunksizesp[i]; - - retval = nc_def_var_extra(ncid, varid, NULL, NULL, NULL, NULL, - &contiguous, cs, NULL, NULL, NULL); - - if (var->ndims) - free(cs); - return retval; -} - -/* Define fill value behavior for a variable. This must be done after - nc_def_var and before nc_enddef. */ -int -NC4_def_var_fill(int ncid, int varid, int no_fill, const void *fill_value) -{ - return nc_def_var_extra(ncid, varid, NULL, NULL, NULL, NULL, NULL, - NULL, &no_fill, fill_value, NULL); -} - - -/* Define the endianness of a variable. */ -int -NC4_def_var_endian(int ncid, int varid, int endianness) -{ - return nc_def_var_extra(ncid, varid, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, &endianness); -} - -/* Get var id from name. */ -int -NC4_inq_varid(int ncid, const char *name, int *varidp) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_VAR_INFO_T *var; - char norm_name[NC_MAX_NAME + 1]; - int retval; - uint32_t nn_hash; - - if (!name) - return NC_EINVAL; - if (!varidp) - return NC_NOERR; - - LOG((2, "%s: ncid 0x%x name %s", __func__, ncid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, NULL))) - return retval; - - /* Normalize name. */ - if ((retval = nc4_normalize_name(name, norm_name))) - return retval; - - nn_hash = hash_fast(norm_name, strlen(norm_name)); - - /* Find var of this name. */ - for (var = grp->var; var; var = var->l.next) - if (nn_hash == var->hash && !(strcmp(var->name, norm_name))) - { - *varidp = var->varid; - return NC_NOERR; - } - - return NC_ENOTVAR; -} - -/* Rename a var to "bubba," for example. - - According to the netcdf-3.5 docs: If the new name is longer than - the old name, the netCDF dataset must be in define mode. */ -int -NC4_rename_var(int ncid, int varid, const char *name) -{ - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var, *tmp_var; - uint32_t nn_hash; - int retval = NC_NOERR; - - LOG((2, "%s: ncid 0x%x varid %d name %s", - __func__, ncid, varid, name)); - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - assert(h5); - - /* Is the new name too long? */ - if (strlen(name) > NC_MAX_NAME) - return NC_EMAXNAME; - - /* Trying to write to a read-only file? No way, Jose! */ - if (h5->no_write) - return NC_EPERM; - - /* Check name validity, if strict nc3 rules are in effect for this - * file. */ - if ((retval = NC_check_name(name))) - return retval; - - /* Check if name is in use, and retain a pointer to the correct variable */ - nn_hash = hash_fast(name, strlen(name)); - tmp_var = NULL; - for (var = grp->var; var; var = var->l.next) - { - if (nn_hash == var->hash && !strncmp(var->name, name, NC_MAX_NAME)) - return NC_ENAMEINUSE; - if (var->varid == varid) - tmp_var = var; - } - if (!tmp_var) - return NC_ENOTVAR; - var = tmp_var; - - /* If we're not in define mode, new name must be of equal or - less size, if strict nc3 rules are in effect for this . */ - if (!(h5->flags & NC_INDEF) && strlen(name) > strlen(var->name) && - (h5->cmode & NC_CLASSIC_MODEL)) - return NC_ENOTINDEFINE; - - /* Change the HDF5 file, if this var has already been created - there. */ - if (var->created) - { - if (H5Gmove(grp->hdf_grpid, var->name, name) < 0) - BAIL(NC_EHDFERR); - } - - /* Now change the name in our metadata. */ - free(var->name); - if (!(var->name = malloc((strlen(name) + 1) * sizeof(char)))) - return NC_ENOMEM; - strcpy(var->name, name); - var->hash = nn_hash; - - /* Check if this was a coordinate variable previously, but names are different now */ - if (var->dimscale && strcmp(var->name, var->dim[0]->name)) - { - /* Break up the coordinate variable */ - if ((retval = nc4_break_coord_var(grp, var, var->dim[0]))) - return retval; - } - - /* Check if this should become a coordinate variable */ - if (!var->dimscale) - { - /* Only variables with >0 dimensions can become coordinate variables */ - if (var->ndims) - { - NC_GRP_INFO_T *dim_grp; - NC_DIM_INFO_T *dim; - - /* Check to see if this is became a coordinate variable. If so, it - * will have the same name as dimension index 0. If it is a - * coordinate var, is it a coordinate var in the same group as the dim? - */ - if ((retval = nc4_find_dim(grp, var->dimids[0], &dim, &dim_grp))) - return retval; - if (strcmp(dim->name, name) == 0 && dim_grp == grp) - { - /* Reform the coordinate variable */ - if ((retval = nc4_reform_coord_var(grp, var, dim))) - return retval; - } - } - } - - exit: - return retval; -} - - -int -NC4_var_par_access(int ncid, int varid, int par_access) -{ -#ifndef USE_PARALLEL4 - return NC_ENOPAR; -#else - NC *nc; - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int retval; - - LOG((1, "%s: ncid 0x%x varid %d par_access %d", __func__, ncid, - varid, par_access)); - - if (par_access != NC_INDEPENDENT && par_access != NC_COLLECTIVE) - return NC_EINVAL; - - /* Find info for this file and group, and set pointer to each. */ - if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5))) - return retval; - - /* This function only for files opened with nc_open_par or nc_create_par. */ - if (!h5->parallel) - return NC_ENOPAR; - - /* Find the var, and set its preference. */ - for (var = grp->var; var; var = var->l.next) - if (var->varid == varid) - break; - if (!var) - return NC_ENOTVAR; - - if (par_access) - var->parallel_access = NC_COLLECTIVE; - else - var->parallel_access = NC_INDEPENDENT; - return NC_NOERR; -#endif /* USE_PARALLEL4 */ -} - -static int -nc4_put_vara_tc(int ncid, int varid, nc_type mem_type, int mem_type_is_long, - const size_t *startp, const size_t *countp, const void *op) -{ - NC *nc; - - LOG((2, "%s: ncid 0x%x varid %d mem_type %d mem_type_is_long %d", - __func__, ncid, varid, mem_type, mem_type_is_long)); - - if (!(nc = nc4_find_nc_file(ncid,NULL))) - return NC_EBADID; - - return nc4_put_vara(nc, ncid, varid, startp, countp, mem_type, - mem_type_is_long, (void *)op); -} - -#ifdef USE_HDF4 -static int -nc4_get_hdf4_vara(NC *nc, int ncid, int varid, const size_t *startp, - const size_t *countp, nc_type mem_nc_type, int is_long, void *data) -{ - NC_GRP_INFO_T *grp; - NC_HDF5_FILE_INFO_T *h5; - NC_VAR_INFO_T *var; - int32 start32[NC_MAX_VAR_DIMS], edge32[NC_MAX_VAR_DIMS]; - int retval, d; - - /* Find our metadata for this file, group, and var. */ - assert(nc); - if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var))) - return retval; - h5 = NC4_DATA(nc); - assert(grp && h5 && var && var->name); - - for (d = 0; d < var->ndims; d++) - { - start32[d] = startp[d]; - edge32[d] = countp[d]; - } - - if (SDreaddata(var->sdsid, start32, NULL, edge32, data)) - return NC_EHDFERR; - - return NC_NOERR; -} -#endif /* USE_HDF4 */ - -/* Get an array. */ -static int -nc4_get_vara_tc(int ncid, int varid, nc_type mem_type, int mem_type_is_long, - const size_t *startp, const size_t *countp, void *ip) -{ - NC *nc; - NC_HDF5_FILE_INFO_T* h5; - - LOG((2, "%s: ncid 0x%x varid %d mem_type %d mem_type_is_long %d", - __func__, ncid, varid, mem_type, mem_type_is_long)); - - if (!(nc = nc4_find_nc_file(ncid,&h5))) - return NC_EBADID; - -#ifdef USE_HDF4 - /* Handle HDF4 cases. */ - if (h5->hdf4) - return nc4_get_hdf4_vara(nc, ncid, varid, startp, countp, mem_type, - mem_type_is_long, (void *)ip); -#endif /* USE_HDF4 */ - - /* Handle HDF5 cases. */ - return nc4_get_vara(nc, ncid, varid, startp, countp, mem_type, - mem_type_is_long, (void *)ip); -} - -int -NC4_put_vara(int ncid, int varid, const size_t *startp, - const size_t *countp, const void *op, int memtype) -{ - return nc4_put_vara_tc(ncid, varid, memtype, 0, startp, countp, op); -} - - -/* Read an array of values. */ -int -NC4_get_vara(int ncid, int varid, const size_t *startp, - const size_t *countp, void *ip, int memtype) -{ - return nc4_get_vara_tc(ncid, varid, memtype, 0, startp, countp, ip); -} diff --git a/contrib/netcdf/4.4.1.1/libsrc4/ncfunc.c b/contrib/netcdf/4.4.1.1/libsrc4/ncfunc.c deleted file mode 100644 index a89caf9cdfa..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrc4/ncfunc.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - -This file is part of netcdf-4, a netCDF-like interface for HDF5, or a -HDF5 backend for netCDF, depending on your point of view. - -This file handles the nc_ calls, calling the appropriate nc3 or nc4 -function, depending on ncid. - -Copyright 2003, University Corporation for Atmospheric Research. See -netcdf-4/docs/COPYRIGHT file for copying and redistribution -conditions. -*/ - -#include "nc4internal.h" -#include "nc3dispatch.h" - -/* This will return the length of a netcdf data type in bytes. Since - we haven't added any new types, I just call the v3 function. - Ed Hartnett 10/43/03 -*/ - -/* This function only does anything for netcdf-3 files. */ -int -NC4_set_base_pe(int ncid, int pe) -{ - return NC_ENOTNC3; -} - -/* This function only does anything for netcdf-3 files. */ -int -NC4_inq_base_pe(int ncid, int *pe) -{ - return NC_ENOTNC3; -} - -/* Get the format (i.e. classic, 64-bit-offset, or netcdf-4) of an - * open file. */ -int -NC4_inq_format(int ncid, int *formatp) -{ - NC *nc; - NC_HDF5_FILE_INFO_T* nc4_info; - - LOG((2, "nc_inq_format: ncid 0x%x", ncid)); - - if (!formatp) - return NC_NOERR; - - /* Find the file metadata. */ - if (!(nc = nc4_find_nc_file(ncid,&nc4_info))) - return NC_EBADID; - - /* Otherwise, this is a netcdf-4 file. Check if classic NC3 rules - * are in effect for this file. */ - if (nc4_info->cmode & NC_CLASSIC_MODEL) - *formatp = NC_FORMAT_NETCDF4_CLASSIC; - else - *formatp = NC_FORMAT_NETCDF4; - - return NC_NOERR; -} - -/* Get the extended format of an open file. */ -int -NC4_inq_format_extended(int ncid, int *formatp, int *modep) -{ - NC *nc; - NC_HDF5_FILE_INFO_T* h5; - - LOG((2, "nc_inq_format_extended: ncid 0x%x", ncid)); - - /* Find the file metadata. */ - if (!(nc = nc4_find_nc_file(ncid,&h5))) - return NC_EBADID; - - if(modep) *modep = (nc->mode|NC_NETCDF4); - - if(formatp) { -#ifdef USE_HDF4 - /* Distinguish HDF5 from HDF4 */ - *formatp = (h5->hdf4 ? NC_FORMATX_NC_HDF4 : NC_FORMATX_NC_HDF5); -#else /* USE_HDF4 */ - *formatp = NC_FORMATX_NC_HDF5; -#endif /* USE_HDF4 */ - } - return NC_NOERR; -} diff --git a/contrib/netcdf/4.4.1.1/libsrcp/Makefile.am b/contrib/netcdf/4.4.1.1/libsrcp/Makefile.am deleted file mode 100644 index 9e59f0c3ef8..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrcp/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -## This is an automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file is in charge of building the libsrc directory, -# which contains the classic library code. - -include $(top_srcdir)/lib_flags.am - -libnetcdfp_la_CPPFLAGS = ${AM_CPPFLAGS} - -# This is the code for a dispatch table for pnetcdf -# (which has CDF5 as its magic number) - -# Turn on a pre-processor flag when building a DLL for windows. -if BUILD_DLL -libnetcdfp_la_CPPFLAGS += -DDLL_EXPORT -endif # BUILD_DLL - -# These files comprise the pnetcdf dispatch library code. -libnetcdfp_la_SOURCES = ncpdispatch.c - -noinst_LTLIBRARIES = libnetcdfp.la - -EXTRA_DIST = CMakeLists.txt diff --git a/contrib/netcdf/4.4.1.1/libsrcp/Makefile.in b/contrib/netcdf/4.4.1.1/libsrcp/Makefile.in deleted file mode 100644 index 45d23f4cb7a..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrcp/Makefile.in +++ /dev/null @@ -1,689 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file is in charge of building the libsrc directory, -# which contains the classic library code. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF - -# This is the code for a dispatch table for pnetcdf -# (which has CDF5 as its magic number) - -# Turn on a pre-processor flag when building a DLL for windows. -@BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT -subdir = libsrcp -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libnetcdfp_la_LIBADD = -am_libnetcdfp_la_OBJECTS = libnetcdfp_la-ncpdispatch.lo -libnetcdfp_la_OBJECTS = $(am_libnetcdfp_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libnetcdfp_la-ncpdispatch.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libnetcdfp_la_SOURCES) -DIST_SOURCES = $(libnetcdfp_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ -libnetcdfp_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3) - -# These files comprise the pnetcdf dispatch library code. -libnetcdfp_la_SOURCES = ncpdispatch.c -noinst_LTLIBRARIES = libnetcdfp.la -EXTRA_DIST = CMakeLists.txt -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 libsrcp/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libsrcp/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libnetcdfp.la: $(libnetcdfp_la_OBJECTS) $(libnetcdfp_la_DEPENDENCIES) $(EXTRA_libnetcdfp_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libnetcdfp_la_OBJECTS) $(libnetcdfp_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnetcdfp_la-ncpdispatch.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libnetcdfp_la-ncpdispatch.lo: ncpdispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdfp_la-ncpdispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdfp_la-ncpdispatch.Tpo -c -o libnetcdfp_la-ncpdispatch.lo `test -f 'ncpdispatch.c' || echo '$(srcdir)/'`ncpdispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdfp_la-ncpdispatch.Tpo $(DEPDIR)/libnetcdfp_la-ncpdispatch.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncpdispatch.c' object='libnetcdfp_la-ncpdispatch.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdfp_la-ncpdispatch.lo `test -f 'ncpdispatch.c' || echo '$(srcdir)/'`ncpdispatch.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libnetcdfp_la-ncpdispatch.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libnetcdfp_la-ncpdispatch.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/libsrcp/ncpdispatch.c b/contrib/netcdf/4.4.1.1/libsrcp/ncpdispatch.c deleted file mode 100644 index a4e8c3ef27c..00000000000 --- a/contrib/netcdf/4.4.1.1/libsrcp/ncpdispatch.c +++ /dev/null @@ -1,1604 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ - -/* WARNING: Order of mpi.h, nc.h, and pnetcdf.h is important */ -#include "config.h" -#include -#include -#include "nc.h" -#include "ncdispatch.h" -/* Must follow netcdf.h */ -#include - -typedef struct NCP_INFO -{ - /* pnetcdf_file will be true if the file is created/opened with the - * parallel-netcdf library. pnetcdf_access_mode keeps track of - * whether independpent or collective mode is - * desired. pnetcdf_ndims keeps track of how many dims each var - * has, which I need to know to convert start, count, and stride - * arrays from size_t to MPI_Offset. (I can't use an inq function - * to find out the number of dims, because these are collective in - * pnetcdf.) */ - int pnetcdf_access_mode; -} NCP_INFO; - -/* Define accessors for the dispatchdata */ -#define NCP_DATA(nc) ((NCP_INFO*)(nc)->dispatchdata) -#define NCP_DATA_SET(nc,data) ((nc)->dispatchdata = (void*)(data)) - -/* Cannot have NC_MPIPOSIX flag, ignore NC_MPIIO as PnetCDF use MPIIO */ -static const int LEGAL_CREATE_FLAGS = (NC_NOCLOBBER | NC_64BIT_OFFSET | NC_CLASSIC_MODEL | NC_SHARE | NC_LOCK | NC_64BIT_DATA | NC_MPIIO); - -static const int LEGAL_OPEN_FLAGS = (NC_WRITE | NC_NOCLOBBER | NC_SHARE | NC_LOCK | NC_CLASSIC_MODEL | NC_64BIT_OFFSET | NC_64BIT_DATA | NC_MPIIO); - - -/**************************************************/ - -static int -NCP_create(const char *path, int cmode, - size_t initialsz, int basepe, size_t *chunksizehintp, - int use_parallel, void* mpidata, - struct NC_Dispatch* table, NC* nc) -{ - int res, default_format; - NCP_INFO* nc5; - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; - - /* Check the cmode for only valid flags*/ - if(cmode & ~LEGAL_CREATE_FLAGS) - return NC_EINVAL; - - /* Cannot have both MPIO flags */ - if((cmode & (NC_MPIIO|NC_MPIPOSIX)) == (NC_MPIIO|NC_MPIPOSIX)) - return NC_EINVAL; - - /* Cannot have both NC_64BIT_OFFSET & NC_64BIT_DATA */ - if((cmode & (NC_64BIT_OFFSET|NC_64BIT_DATA)) == (NC_64BIT_OFFSET|NC_64BIT_DATA)) - return NC_EINVAL; - - default_format = nc_get_default_format(); - /* if (default_format == NC_FORMAT_CLASSIC) then we respect the format set in cmode */ - if (default_format == NC_FORMAT_64BIT_OFFSET) { - if (! (cmode & NC_64BIT_OFFSET)) /* check if cmode has NC_64BIT_OFFSET already */ - cmode |= NC_64BIT_OFFSET; - } - else if (default_format == NC_FORMAT_CDF5) { - if (! (cmode & NC_64BIT_DATA)) /* check if cmode has NC_64BIT_DATA already */ - cmode |= NC_64BIT_DATA; - } - - /* No MPI environment initialized */ - if (mpidata == NULL) return NC_ENOPAR; - - comm = ((NC_MPI_INFO *)mpidata)->comm; - info = ((NC_MPI_INFO *)mpidata)->info; - - /* Create our specific NCP_INFO instance */ - nc5 = (NCP_INFO*)calloc(1,sizeof(NCP_INFO)); - if(nc5 == NULL) return NC_ENOMEM; - - /* Link nc5 and nc */ - NCP_DATA_SET(nc,nc5); - - /* Fix up the cmode by keeping only essential flags; - these are the flags that are the same in netcf.h and pnetcdf.h - */ - /* It turns out that pnetcdf.h defines a flag called - NC_64BIT_DATA (not to be confused with NC_64BIT_OFFSET). - This flag is essential to getting ncmpi_create to create - a proper pnetcdf format file. - We have set the value of NC_64BIT_DATA to be the same as in pnetcdf.h - (as of pnetcdf version 1.6.0) to avoid conflicts. - In any case, this flag must be set. - */ - /* PnetCDF recognizes the flags below for create and ignores NC_LOCK and NC_SHARE */ - cmode &= (NC_WRITE | NC_NOCLOBBER | NC_SHARE | NC_64BIT_OFFSET | NC_64BIT_DATA); - res = ncmpi_create(comm, path, cmode, info, &(nc->int_ncid)); - - if(res && nc5 != NULL) free(nc5); /* reclaim allocated space */ - return res; -} - -static int -NCP_open(const char *path, int cmode, - int basepe, size_t *chunksizehintp, - int use_parallel, void* mpidata, - struct NC_Dispatch* table, NC* nc) -{ - int res; - NCP_INFO* nc5; - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; - - /* Check the cmode for only valid flags*/ - if(cmode & ~LEGAL_OPEN_FLAGS) - return NC_EINVAL; - - /* Cannot have both MPIO flags */ - if((cmode & (NC_MPIIO|NC_MPIPOSIX)) == (NC_MPIIO|NC_MPIPOSIX)) - return NC_EINVAL; - - /* Appears that this comment is wrong; allow 64 bit offset*/ - /* Cannot have 64 bit offset flag */ - /* if(cmode & (NC_64BIT_OFFSET)) return NC_EINVAL; */ - - if(mpidata != NULL) { - comm = ((NC_MPI_INFO *)mpidata)->comm; - info = ((NC_MPI_INFO *)mpidata)->info; - } else { - comm = MPI_COMM_WORLD; - info = MPI_INFO_NULL; - } - - /* PnetCDF recognizes the flags NC_WRITE and NC_NOCLOBBER for file open - * and ignores NC_LOCK, NC_SHARE, NC_64BIT_OFFSET, and NC_64BIT_DATA. - * Ignoring the NC_64BIT_OFFSET and NC_64BIT_DATA flags is because the - * file is already in one of the CDF-formats, and setting these 2 flags - * will not change the format of that file. - */ - - cmode &= (NC_WRITE | NC_NOCLOBBER); - - /* Create our specific NCP_INFO instance */ - nc5 = (NCP_INFO*)calloc(1,sizeof(NCP_INFO)); - if(nc5 == NULL) return NC_ENOMEM; - - /* Link nc5 and nc */ - NCP_DATA_SET(nc,nc5); - - res = ncmpi_open(comm, path, cmode, info, &(nc->int_ncid)); - - /* Default to independent access, like netCDF-4/HDF5 files. */ - if(!res) { - res = ncmpi_begin_indep_data(nc->int_ncid); - nc5->pnetcdf_access_mode = NC_INDEPENDENT; - } - - return res; -} - -static int -NCP_redef(int ncid) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_redef(nc->int_ncid); -} - -static int -NCP__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, size_t r_align) -{ - int status; - NC* nc; - NCP_INFO* nc5; - MPI_Offset mpi_h_minfree = h_minfree; - MPI_Offset mpi_v_align = v_align; - MPI_Offset mpi_v_minfree = v_minfree; - MPI_Offset mpi_r_align = r_align; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* causes implicitly defined warning; may be because of old installed pnetcdf? */ -#if 0 - /* In PnetCDF ncmpi__enddef() is only implemented in v1.5.0 and later */ - status = ncmpi__enddef(nc->int_ncid, mpi_h_minfree, mpi_v_align, - mpi_v_minfree, mpi_r_align); -#else - status = ncmpi_enddef(nc->int_ncid); -#endif - - if(!status) { - if (nc5->pnetcdf_access_mode == NC_INDEPENDENT) - status = ncmpi_begin_indep_data(nc->int_ncid); - } - return status; -} - -static int -NCP_sync(int ncid) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_sync(nc->int_ncid); -} - -static int -NCP_abort(int ncid) -{ - NC* nc; - NCP_INFO* nc5; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) goto done; - - status = ncmpi_abort(nc->int_ncid); - -done: - nc5 = NCP_DATA(nc); - if(nc5 != NULL) free(nc5); /* reclaim allocated space */ - return status; -} - - -static int -NCP_close(int ncid) -{ - NC* nc; - NCP_INFO* nc5; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) goto done; - - status = ncmpi_close(nc->int_ncid); - -done: - nc5 = NCP_DATA(nc); - if(nc5 != NULL) free(nc5); /* reclaim allocated space */ - return status; -} - -static int -NCP_set_fill(int ncid, int fillmode, int *old_mode_ptr) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_set_fill(nc->int_ncid,fillmode,old_mode_ptr); -} - -static int -NCP_inq_base_pe(int ncid, int* pep) -{ - if(pep) *pep = 0; - return NC_NOERR; -} - -static int -NCP_set_base_pe(int ncid, int pe) -{ - return NC_NOERR; -} - -static int -NCP_inq_format(int ncid, int* formatp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - status = ncmpi_inq_format(nc->int_ncid,formatp); - return status; -} - -static int -NCP_inq_format_extended(int ncid, int* formatp, int *modep) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - if(modep) *modep = nc->mode; - /* Note that we do not use NC_FORMAT_CDF5 because PNETCDF has a dispatch table */ - if(formatp) *formatp = NC_FORMATX_PNETCDF; - return NC_NOERR; -} - -static int -NCP_inq(int ncid, - int *ndimsp, - int *nvarsp, - int *nattsp, - int *unlimp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq(nc->int_ncid,ndimsp,nvarsp,nattsp,unlimp); -} - - -static int -NCP_inq_type(int ncid, nc_type typeid, char* name, size_t* size) -{ - /* Assert mode & NC_FORMAT_CDF5 */ - if (typeid < NC_BYTE || typeid >= NC_STRING) - return NC_EBADTYPE; - if(name) - strcpy(name, NC_atomictypename(typeid)); - if(size) - *size = NC_atomictypelen(typeid); - return NC_NOERR; -} - -static int -NCP_def_dim(int ncid, const char* name, size_t len, int* idp) -{ - int status; - NCP_INFO* nc5; - NC* nc; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) - return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - return ncmpi_def_dim(nc->int_ncid, name, len, idp); -} - -static int -NCP_inq_dimid(int ncid, const char *name, int *idp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq_dimid(nc->int_ncid,name,idp); -} - -static int -NCP_inq_dim(int ncid, int dimid, char *name, size_t* lenp) -{ - int status; - NC* nc; - MPI_Offset mpilen; - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - status = ncmpi_inq_dim(nc->int_ncid,dimid,name,&mpilen); - if(lenp) *lenp = mpilen; - return status; -} - -static int -NCP_inq_unlimdim(int ncid, int *unlimdimidp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq_unlimdim(nc->int_ncid,unlimdimidp); -} - -static int -NCP_rename_dim(int ncid, int dimid, const char* newname) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_rename_dim(nc->int_ncid,dimid,newname); -} - -static int -NCP_inq_att(int ncid, int varid, const char* name, nc_type* xtypep, size_t* lenp) -{ - NC* nc; - MPI_Offset mpilen; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - status = ncmpi_inq_att(nc->int_ncid,varid,name,xtypep,&mpilen); - if(status != NC_NOERR) return status; - if(lenp) *lenp = mpilen; - return status; -} - -static int -NCP_inq_attid(int ncid, int varid, const char *name, int *idp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq_attid(nc->int_ncid,varid,name,idp); -} - -static int -NCP_inq_attname(int ncid, int varid, int attnum, char *name) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq_attname(nc->int_ncid,varid,attnum,name); - -} - -static int -NCP_rename_att(int ncid, int varid, const char *name, - const char *newname) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_rename_att(nc->int_ncid,varid,name,newname); -} - -static int -NCP_del_att(int ncid, int varid, const char *name) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_del_att(nc->int_ncid,varid,name); -} - -int -NCP_get_att( - int ncid, - int varid, - const char *name, - void *ip, - nc_type memtype) -{ - NC* nc; - int status; - nc_type xtype; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - status = NCP_inq_att(ncid,varid,name,&xtype,NULL); - - if(memtype == NC_NAT) memtype = xtype; - - switch (memtype) { - case NC_CHAR: - return ncmpi_get_att_text(nc->int_ncid, varid, name, (char*)ip); - case NC_BYTE: - return ncmpi_get_att_schar(nc->int_ncid, varid, name, (signed char*)ip); - case NC_SHORT: - return ncmpi_get_att_short(nc->int_ncid, varid, name, (short*)ip); - case NC_INT: - return ncmpi_get_att_int(nc->int_ncid, varid, name, (int*)ip); - case NC_FLOAT: - return ncmpi_get_att_float(nc->int_ncid, varid, name, (float*)ip); - case NC_DOUBLE: - return ncmpi_get_att_double(nc->int_ncid, varid, name, (double*)ip); - case NC_UBYTE: - return ncmpi_get_att_uchar(nc->int_ncid, varid, name, (unsigned char*)ip); - case NC_USHORT: - return ncmpi_get_att_ushort(nc->int_ncid, varid, name, (unsigned short*)ip); - case NC_UINT: - return ncmpi_get_att_uint(nc->int_ncid, varid, name, (unsigned int*)ip); - case NC_INT64: - return ncmpi_get_att_longlong(nc->int_ncid, varid, name, (long long*)ip); - case NC_UINT64: - return ncmpi_get_att_ulonglong(nc->int_ncid, varid, name, (unsigned long long*)ip); - default: - break; - } - return NC_EBADTYPE; -} - -int -NCP_put_att( - int ncid, - int varid, - const char *name, - nc_type xtype, - size_t len, - const void *ip, - nc_type memtype) -{ - NC* nc; - int status; - MPI_Offset mpilen; - - if (!name || (strlen(name) > NC_MAX_NAME)) - return NC_EBADNAME; - - /* The length needs to be positive (cast needed for braindead - systems with signed size_t). */ - if(((unsigned long) len) > X_INT_MAX) - return NC_EINVAL; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - mpilen = len; - - switch (memtype) { - case NC_CHAR: - return ncmpi_put_att_text(nc->int_ncid, varid, name, mpilen, (char*)ip); - case NC_BYTE: - return ncmpi_put_att_schar(nc->int_ncid, varid, name, xtype, mpilen, (signed char*)ip); - case NC_SHORT: - return ncmpi_put_att_short(nc->int_ncid, varid, name, xtype, mpilen, (short*)ip); - case NC_INT: - return ncmpi_put_att_int(nc->int_ncid, varid, name, xtype, mpilen, (int*)ip); - case NC_FLOAT: - return ncmpi_put_att_float(nc->int_ncid, varid, name, xtype, mpilen, (float*)ip); - case NC_DOUBLE: - return ncmpi_put_att_double(nc->int_ncid, varid, name, xtype, mpilen, (double*)ip); - case NC_UBYTE: - return ncmpi_put_att_uchar(nc->int_ncid, varid, name, xtype, mpilen, (unsigned char*)ip); - case NC_USHORT: - return ncmpi_put_att_ushort(nc->int_ncid, varid, name, xtype, mpilen, (unsigned short*)ip); - case NC_UINT: - return ncmpi_put_att_uint(nc->int_ncid, varid, name, xtype, mpilen, (unsigned int*)ip); - case NC_INT64: - return ncmpi_put_att_longlong(nc->int_ncid, varid, name, xtype, mpilen, (long long*)ip); - case NC_UINT64: - return ncmpi_put_att_ulonglong(nc->int_ncid, varid, name, xtype, mpilen, (unsigned long long*)ip); - default: - break; - } - return NC_EBADTYPE; -} - -static int -NCP_def_var(int ncid, const char *name, nc_type xtype, - int ndims, const int *dimidsp, int *varidp) -{ - NC* nc; - NCP_INFO* nc5; - int status; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - nc5 = NCP_DATA(nc); - assert(nc5); - - status = ncmpi_def_var(nc->int_ncid,name,xtype,ndims,dimidsp,varidp); - return status; -} - -static int -NCP_inq_varid(int ncid, const char *name, int *varidp) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_inq_varid(nc->int_ncid,name,varidp); -} - -static int -NCP_rename_var(int ncid, int varid, const char *name) -{ - NC* nc; - int status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - return ncmpi_rename_var(nc->int_ncid,varid,name); -} - -static int -NCP_get_vara(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - void* ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS]; - int d; - int rank = 0; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status= ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start and count arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_vara_schar(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_CHAR: - status=ncmpi_get_vara_text(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_SHORT: - status=ncmpi_get_vara_short(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT: - status=ncmpi_get_vara_int(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_FLOAT: - status=ncmpi_get_vara_float(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_DOUBLE: - status=ncmpi_get_vara_double(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UBYTE: - status=ncmpi_get_vara_uchar(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_USHORT: - status=ncmpi_get_vara_ushort(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT: - status=ncmpi_get_vara_uint(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT64: - status=ncmpi_get_vara_longlong(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT64: - status=ncmpi_get_vara_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_vara_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_CHAR: - status=ncmpi_get_vara_text_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_SHORT: - status=ncmpi_get_vara_short_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT: - status=ncmpi_get_vara_int_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_FLOAT: - status=ncmpi_get_vara_float_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_DOUBLE: - status=ncmpi_get_vara_double_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UBYTE: - status=ncmpi_get_vara_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_USHORT: - status=ncmpi_get_vara_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT: - status=ncmpi_get_vara_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT64: - status=ncmpi_get_vara_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT64: - status=ncmpi_get_vara_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_put_vara(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - const void*ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS]; - int d; - int rank; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status = ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start and count arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_vara_schar(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_CHAR: - status = ncmpi_put_vara_text(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_SHORT: - status = ncmpi_put_vara_short(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT: - status = ncmpi_put_vara_int(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_FLOAT: - status = ncmpi_put_vara_float(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_DOUBLE: - status = ncmpi_put_vara_double(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UBYTE: - status = ncmpi_put_vara_uchar(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_USHORT: - status = ncmpi_put_vara_ushort(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT: - status = ncmpi_put_vara_uint(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT64: - status = ncmpi_put_vara_longlong(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT64: - status = ncmpi_put_vara_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_vara_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_CHAR: - status = ncmpi_put_vara_text_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_SHORT: - status = ncmpi_put_vara_short_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT: - status = ncmpi_put_vara_int_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_FLOAT: - status = ncmpi_put_vara_float_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_DOUBLE: - status = ncmpi_put_vara_double_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UBYTE: - status = ncmpi_put_vara_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_USHORT: - status = ncmpi_put_vara_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT: - status = ncmpi_put_vara_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_INT64: - status = ncmpi_put_vara_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - case NC_UINT64: - status = ncmpi_put_vara_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_get_vars(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - const ptrdiff_t* stridep, - void* ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS], mpi_stride[NC_MAX_VAR_DIMS]; - int d; - int rank = 0; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status= ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start, count, and stride arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - mpi_stride[d] = stridep[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_vars_schar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_CHAR: - status=ncmpi_get_vars_text(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_SHORT: - status=ncmpi_get_vars_short(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT: - status=ncmpi_get_vars_int(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_FLOAT: - status=ncmpi_get_vars_float(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_DOUBLE: - status=ncmpi_get_vars_double(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UBYTE: - status=ncmpi_get_vars_uchar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_USHORT: - status=ncmpi_get_vars_ushort(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT: - status=ncmpi_get_vars_uint(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT64: - status=ncmpi_get_vars_longlong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT64: - status=ncmpi_get_vars_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_vars_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_CHAR: - status=ncmpi_get_vars_text_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_SHORT: - status=ncmpi_get_vars_short_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT: - status=ncmpi_get_vars_int_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_FLOAT: - status=ncmpi_get_vars_float_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_DOUBLE: - status=ncmpi_get_vars_double_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UBYTE: - status=ncmpi_get_vars_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_USHORT: - status=ncmpi_get_vars_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT: - status=ncmpi_get_vars_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT64: - status=ncmpi_get_vars_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT64: - status=ncmpi_get_vars_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_put_vars(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - const ptrdiff_t* stridep, - const void*ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS], mpi_stride[NC_MAX_VAR_DIMS]; - int d; - int rank; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status = ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start, count, and stride arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - mpi_stride[d] = stridep[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_vars_schar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_CHAR: - status = ncmpi_put_vars_text(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_SHORT: - status = ncmpi_put_vars_short(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT: - status = ncmpi_put_vars_int(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_FLOAT: - status = ncmpi_put_vars_float(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_DOUBLE: - status = ncmpi_put_vars_double(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UBYTE: - status = ncmpi_put_vars_uchar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_USHORT: - status = ncmpi_put_vars_ushort(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT: - status = ncmpi_put_vars_uint(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT64: - status = ncmpi_put_vars_longlong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT64: - status = ncmpi_put_vars_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_vars_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_CHAR: - status = ncmpi_put_vars_text_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_SHORT: - status = ncmpi_put_vars_short_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT: - status = ncmpi_put_vars_int_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_FLOAT: - status = ncmpi_put_vars_float_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_DOUBLE: - status = ncmpi_put_vars_double_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UBYTE: - status = ncmpi_put_vars_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_USHORT: - status = ncmpi_put_vars_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT: - status = ncmpi_put_vars_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_INT64: - status = ncmpi_put_vars_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - case NC_UINT64: - status = ncmpi_put_vars_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_get_varm(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - const ptrdiff_t* stridep, - const ptrdiff_t* imapp, - void* ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS], mpi_stride[NC_MAX_VAR_DIMS], mpi_imap[NC_MAX_VAR_DIMS]; - int d; - int rank = 0; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status= ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start, count, stride, and imap arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - mpi_stride[d] = stridep[d]; - mpi_imap[d] = imapp[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_varm_schar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_CHAR: - status=ncmpi_get_varm_text(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_SHORT: - status=ncmpi_get_varm_short(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT: - status=ncmpi_get_varm_int(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_FLOAT: - status=ncmpi_get_varm_float(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_DOUBLE: - status=ncmpi_get_varm_double(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UBYTE: - status=ncmpi_get_varm_uchar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_USHORT: - status=ncmpi_get_varm_ushort(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT: - status=ncmpi_get_varm_uint(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT64: - status=ncmpi_get_varm_longlong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT64: - status=ncmpi_get_varm_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status=ncmpi_get_varm_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_CHAR: - status=ncmpi_get_varm_text_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_SHORT: - status=ncmpi_get_varm_short_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT: - status=ncmpi_get_varm_int_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_FLOAT: - status=ncmpi_get_varm_float_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_DOUBLE: - status=ncmpi_get_varm_double_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UBYTE: - status=ncmpi_get_varm_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_USHORT: - status=ncmpi_get_varm_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT: - status=ncmpi_get_varm_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT64: - status=ncmpi_get_varm_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT64: - status=ncmpi_get_varm_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_put_varm(int ncid, - int varid, - const size_t* startp, - const size_t* countp, - const ptrdiff_t* stridep, - const ptrdiff_t* imapp, - const void*ip, - nc_type memtype) -{ - NC* nc; - NCP_INFO* nc5; - int status; - MPI_Offset mpi_start[NC_MAX_VAR_DIMS], mpi_count[NC_MAX_VAR_DIMS], mpi_stride[NC_MAX_VAR_DIMS], mpi_imap[NC_MAX_VAR_DIMS]; - int d; - int rank; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - /* get variable's rank */ - status = ncmpi_inq_varndims(nc->int_ncid, varid, &rank); - if(status) return status; - - /* We must convert the start, count, stride, and imap arrays to MPI_Offset type. */ - for (d = 0; d < rank; d++) { - mpi_start[d] = startp[d]; - mpi_count[d] = countp[d]; - mpi_stride[d] = stridep[d]; - mpi_imap[d] = imapp[d]; - } - - if (memtype == NC_NAT) { - status = ncmpi_inq_vartype(nc->int_ncid, varid, &memtype); - if (status) return status; - } - - if(nc5->pnetcdf_access_mode == NC_INDEPENDENT) { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_varm_schar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_CHAR: - status = ncmpi_put_varm_text(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_SHORT: - status = ncmpi_put_varm_short(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT: - status = ncmpi_put_varm_int(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_FLOAT: - status = ncmpi_put_varm_float(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_DOUBLE: - status = ncmpi_put_varm_double(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UBYTE: - status = ncmpi_put_varm_uchar(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_USHORT: - status = ncmpi_put_varm_ushort(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT: - status = ncmpi_put_varm_uint(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT64: - status = ncmpi_put_varm_longlong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT64: - status = ncmpi_put_varm_ulonglong(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - default: - status = NC_EBADTYPE; - } - } else { - switch(memtype) { - case NC_BYTE: - status = ncmpi_put_varm_schar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_CHAR: - status = ncmpi_put_varm_text_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_SHORT: - status = ncmpi_put_varm_short_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT: - status = ncmpi_put_varm_int_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_FLOAT: - status = ncmpi_put_varm_float_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_DOUBLE: - status = ncmpi_put_varm_double_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UBYTE: - status = ncmpi_put_varm_uchar_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_USHORT: - status = ncmpi_put_varm_ushort_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT: - status = ncmpi_put_varm_uint_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_INT64: - status = ncmpi_put_varm_longlong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - case NC_UINT64: - status = ncmpi_put_varm_ulonglong_all(nc->int_ncid, varid, mpi_start, mpi_count, mpi_stride, mpi_imap, ip); break; - default: - status = NC_EBADTYPE; - } - } - return status; -} - -static int -NCP_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, - int *ndimsp, int *dimidsp, int *nattsp, - int *shufflep, int *deflatep, int *deflate_levelp, - int *fletcher32p, int *contiguousp, size_t *chunksizesp, - int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp) -{ - int status; - NC* nc; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - status = ncmpi_inq_var(nc->int_ncid, varid, name, xtypep, ndimsp, dimidsp, nattsp); - if(status) return status; - if(shufflep) *shufflep = 0; - if(deflatep) *deflatep = 0; - if(fletcher32p) *fletcher32p = 0; - if(contiguousp) *contiguousp = NC_CONTIGUOUS; - if(no_fill) *no_fill = 1; - if(endiannessp) return NC_ENOTNC4; - if(options_maskp) return NC_ENOTNC4; - return NC_NOERR; -} - -static int -NCP_var_par_access(int ncid, int varid, int par_access) -{ - NC *nc; - NCP_INFO* nc5; - int status; - - if (par_access != NC_INDEPENDENT && par_access != NC_COLLECTIVE) - return NC_EINVAL; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) return status; - - nc5 = NCP_DATA(nc); - assert(nc5); - - if(par_access == nc5->pnetcdf_access_mode) - return NC_NOERR; - nc5->pnetcdf_access_mode = par_access; - if (par_access == NC_INDEPENDENT) - return ncmpi_begin_indep_data(nc->int_ncid); - else - return ncmpi_end_indep_data(nc->int_ncid); -} - -#ifdef USE_NETCDF4 - -static int -NCP_show_metadata(int ncid) -{ - return NC_NOERR; -} - -static int -NCP_inq_unlimdims(int ncid, int *ndimsp, int *unlimdimidsp) -{ - int retval; - int unlimid; - - if((retval = NCP_inq_unlimdim(ncid, &unlimid))) - return retval; - if(unlimid != -1) { - if(ndimsp) *ndimsp = 1; - if(unlimdimidsp) - unlimdimidsp[0] = unlimid; - } else - if(ndimsp) *ndimsp = 0; - return NC_NOERR; -} - -static int -NCP_inq_type_equal(int ncid1, nc_type typeid1, int ncid2, nc_type typeid2, int* equalp) -{ - /* Check input. */ - if(equalp == NULL) return NC_NOERR; - - if (typeid1 <= NC_NAT || typeid2 <= NC_NAT) - return NC_EINVAL; - - *equalp = 0; /* assume */ - - /* If one is atomic, and the other user-defined, the types are not equal */ - if ((typeid1 <= NC_STRING && typeid2 > NC_STRING) || - (typeid2 <= NC_STRING && typeid1 > NC_STRING)) { - if (equalp) *equalp = 0; - return NC_NOERR; - } - - /* If both are atomic types, the answer is easy. */ - if (typeid1 <= ATOMICTYPEMAX5) { - if (equalp) { - if (typeid1 == typeid2) - *equalp = 1; - else - *equalp = 0; - } - return NC_NOERR; - } - return NC_NOERR; -} - -static int -NCP_def_grp(int parent_ncid, const char *name, int *new_ncid) -{ - return NC_ENOTNC4; -} - -static int -NCP_rename_grp(int ncid, const char *name) -{ - return NC_ENOTNC4; -} - -static int -NCP_inq_ncid(int ncid, const char *name, int *grp_ncid) -{ - if(grp_ncid) *grp_ncid = ncid; - return NC_NOERR; -} - -static int -NCP_inq_grps(int ncid, int *numgrps, int *ncids) -{ - if(numgrps) - *numgrps = 0; - return NC_NOERR; -} - -static int -NCP_inq_grpname(int ncid, char *name) -{ - if(name) - strcpy(name, "/"); - return NC_NOERR; -} - -static int -NCP_inq_grpname_full(int ncid, size_t *lenp, char *full_name) -{ - if(full_name) - strcpy(full_name, "/"); - if(lenp) *lenp = 1; - return NC_NOERR; -} - -static int -NCP_inq_grp_parent(int ncid, int *parent_ncid) -{ - return NC_ENOGRP; -} - -static int -NCP_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid) -{ - return NC_ENOGRP; -} - -static int -NCP_inq_varids(int ncid, int *nvarsp, int *varids) -{ - int retval,v,nvars; - /* This is, effectively, a netcdf-3 file, there is only one group, the root - group, and its vars have ids 0 thru nvars - 1. */ - if((retval = NCP_inq(ncid, NULL, &nvars, NULL, NULL))) - return retval; - if(nvarsp) *nvarsp = nvars; - if(varids) - for (v = 0; v < nvars; v++) - varids[v] = v; - return NC_NOERR; -} - -static int -NCP_inq_dimids(int ncid, int *ndimsp, int *dimids, int include_parents) -{ - int retval,d,ndims; - /* If this is like a netcdf-3 file, then the dimids are going to be 0 - thru ndims-1, so just provide them. */ - if((retval = NCP_inq(ncid, &ndims, NULL, NULL, NULL))) - return retval; - if(ndimsp) *ndimsp = ndims; - if(dimids) - for (d = 0; d < ndims; d++) - dimids[d] = d; - return NC_NOERR; -} - -static int -NCP_inq_typeid(int ncid, const char *name, nc_type *typeidp) -{ - int i; - for (i = 0; i <= ATOMICTYPEMAX5; i++) - if(!strcmp(name, NC_atomictypename(i))) { - if(typeidp) *typeidp = i; - return NC_NOERR; - } - return NC_ENOTNC4; -} - -static int -NCP_inq_typeids(int ncid, int *ntypes, int *typeids) -{ - if(ntypes) *ntypes = 0; - return NC_NOERR; -} - -static int -NCP_inq_user_type(int ncid, nc_type typeid, char *name, size_t *size, - nc_type *base_nc_typep, size_t *nfieldsp, int *classp) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp) -{ - return NC_ENOTNC4; -} - -static int -NCP_insert_compound(int ncid, nc_type typeid, const char *name, size_t offset, - nc_type field_typeid) -{ - return NC_ENOTNC4; -} - -static int -NCP_insert_array_compound(int ncid, nc_type typeid, const char *name, - size_t offset, nc_type field_typeid, - int ndims, const int *dim_sizes) -{ - return NC_ENOTNC4; -} - - -static int -NCP_inq_compound_field(int ncid, nc_type typeid, int fieldid, char *name, - size_t *offsetp, nc_type *field_typeidp, int *ndimsp, - int *dim_sizesp) -{ - return NC_ENOTNC4; -} - -static int -NCP_inq_compound_fieldindex(int ncid, nc_type typeid, const char *name, int *fieldidp) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_opaque(int ncid, size_t datum_size, const char *name, nc_type* xtypep) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type* xtypep) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_enum(int ncid, nc_type base_typeid, const char *name, - nc_type *typeidp) -{ - return NC_ENOTNC4; -} - -static int -NCP_inq_enum_ident(int ncid, nc_type xtype, long long value, char *identifier) -{ - return NC_ENOTNC4; -} - -static int -NCP_inq_enum_member(int ncid, nc_type typeid, int idx, char *identifier, - void *value) -{ - return NC_ENOTNC4; -} - -static int -NCP_insert_enum(int ncid, nc_type typeid, const char *identifier, - const void *value) -{ - return NC_ENOTNC4; -} - -static int -NCP_put_vlen_element(int ncid, int typeid, void *vlen_element, - size_t len, const void *data) -{ - return NC_ENOTNC4; -} - -static int -NCP_get_vlen_element(int ncid, int typeid, const void *vlen_element, - size_t *len, void *data) -{ - return NC_ENOTNC4; -} - -static int -NCP_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, float preemption) -{ - return NC_ENOTNC4; -} - -static int -NCP_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_var_deflate(int ncid, int varid, int shuffle, int deflate, - int deflate_level) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_var_fletcher32(int ncid, int varid, int fletcher32) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_var_chunking(int ncid, int varid, int contiguous, const size_t *chunksizesp) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_var_fill(int ncid, int varid, int no_fill, const void *fill_value) -{ - return NC_ENOTNC4; -} - -static int -NCP_def_var_endian(int ncid, int varid, int endianness) -{ - return NC_ENOTNC4; -} - -#endif /*USE_NETCDF4*/ - -/**************************************************/ -/* Pnetcdf Dispatch table */ - -NC_Dispatch NCP_dispatcher = { - -NC_FORMATX_PNETCDF, - -NCP_create, -NCP_open, - -NCP_redef, -NCP__enddef, -NCP_sync, -NCP_abort, -NCP_close, -NCP_set_fill, -NCP_inq_base_pe, -NCP_set_base_pe, -NCP_inq_format, -NCP_inq_format_extended, - -NCP_inq, -NCP_inq_type, - -NCP_def_dim, -NCP_inq_dimid, -NCP_inq_dim, -NCP_inq_unlimdim, -NCP_rename_dim, - -NCP_inq_att, -NCP_inq_attid, -NCP_inq_attname, -NCP_rename_att, -NCP_del_att, -NCP_get_att, -NCP_put_att, - -NCP_def_var, -NCP_inq_varid, -NCP_rename_var, -NCP_get_vara, -NCP_put_vara, -NCP_get_vars, -NCP_put_vars, -NCP_get_varm, -NCP_put_varm, - -NCP_inq_var_all, - -NCP_var_par_access, - -#ifdef USE_NETCDF4 -NCP_show_metadata, -NCP_inq_unlimdims, - -NCP_inq_ncid, -NCP_inq_grps, -NCP_inq_grpname, -NCP_inq_grpname_full, -NCP_inq_grp_parent, -NCP_inq_grp_full_ncid, -NCP_inq_varids, -NCP_inq_dimids, -NCP_inq_typeids, -NCP_inq_type_equal, -NCP_def_grp, -NCP_rename_grp, -NCP_inq_user_type, -NCP_inq_typeid, - -NCP_def_compound, -NCP_insert_compound, -NCP_insert_array_compound, -NCP_inq_compound_field, -NCP_inq_compound_fieldindex, -NCP_def_vlen, -NCP_put_vlen_element, -NCP_get_vlen_element, -NCP_def_enum, -NCP_insert_enum, -NCP_inq_enum_member, -NCP_inq_enum_ident, -NCP_def_opaque, -NCP_def_var_deflate, -NCP_def_var_fletcher32, -NCP_def_var_chunking, -NCP_def_var_fill, -NCP_def_var_endian, -NCP_set_var_chunk_cache, -NCP_get_var_chunk_cache, -#endif /*USE_NETCDF4*/ - -}; - -NC_Dispatch* NCP_dispatch_table = NULL; /* moved here from ddispatch.c */ - -int -NCP_initialize(void) -{ - NCP_dispatch_table = &NCP_dispatcher; - return NC_NOERR; -} - -int -NCP_finalize(void) -{ - return NC_NOERR; -} diff --git a/contrib/netcdf/4.4.1.1/nc-config.cmake.in b/contrib/netcdf/4.4.1.1/nc-config.cmake.in deleted file mode 100755 index a6c248898ae..00000000000 --- a/contrib/netcdf/4.4.1.1/nc-config.cmake.in +++ /dev/null @@ -1,358 +0,0 @@ -#! /bin/sh -# -# This forms the basis for the nc-config utility, which tells you -# various things about the netCDF installation. This code was -# contributed by netCDF user Arlindo DaSilva. Thanks Arlindo! - -prefix="@CMAKE_INSTALL_PREFIX@" -exec_prefix="@CMAKE_INSTALL_PREFIX@" -libdir="@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" -includedir="@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" - -cc="@CMAKE_C_COMPILER@" -cflags="-I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" -libs="-L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ @NC_LIBS@" - -has_dap="@USE_DAP@" -if [ -z $has_dap ]; then - has_dap="no" -else - has_dap="yes" -fi - -has_nc2="@BUILD_V2@" - - -if [ -z $has_nc2 -o "$has_nc2" = "OFF" ]; then - has_nc2="no" -else - has_nc2="yes" -fi - -has_nc4="@USE_NETCDF4@" -if [ -z $has_nc4 ]; then - has_nc4="no" -else - has_nc4="yes" -fi - -has_logging="@ENABLE_LOGGING@" -if [ -z $has_logging ]; then - has_logging="no" -else - has_logging="yes" -fi - -has_hdf4="@USE_HDF4@" -if [ -z $has_hdf4 ]; then - has_hdf4="no" -else - has_hdf4="yes" -fi - -has_pnetcdf="@USE_PNETCDF@" -if [ -z $has_pnetcdf ]; then - has_pnetcdf="no" -else - has_pnetcdf="yes" -fi - -has_hdf5="@USE_HDF5@" -if [ -z $has_hdf5 -o "$has_hdf5" = "OFF" ]; then - has_hdf5="no" -else - has_hdf5="yes" -fi - -has_szlib="@USE_SZLIB@" -if [ -z $has_szlib ]; then - has_szlib="no" -else - has_szlib="yes" -fi - - -version="@PACKAGE@ @VERSION@" - - -has_fortran="no" -has_f90="no" -has_f03="no" - -nfconf=$(which nf-config 2>/dev/null) - -if [ -f "$nfconf" ]; then - has_fortran="yes" - fc=`nf-config --fc` - fflags=`nf-config --fflags` - flibs=`nf-config --flibs` - has_f90=`nf-config --has-f90` - has_f03=`nf-config --has-f03` -fi - -has_cxx="no" -has_cxx4="no" -if type -p ncxx4-config > /dev/null 2>&1; then - cxx4=`ncxx4-config --cxx` - cxx4flags=`ncxx4-config --cflags` - cxx4libs=`ncxx4-config --libs` - has_cxx4="yes" -elif type -p ncxx-config > /dev/null 2>&1; then - cxx=`ncxx-config --cxx` - cxxflags=`ncxx-config --cflags` - cxxlibs=`ncxx-config --libs` - has_cxx="yes" -fi - -usage() -{ - cat < /dev/null 2>&1; then - cat < /dev/null 2>&1; then - cat < $cc" - echo " --cflags -> $cflags" - echo " --libs -> $libs" - echo - echo " --has-c++ -> $has_cxx" - echo " --cxx -> $cxx" - -if type -p ncxx-config > /dev/null 2>&1; then - echo " --cxxflags -> $cxxflags" - echo " --cxxlibs -> $cxxlibs" -fi - echo - echo " --has-c++4 -> $has_cxx4" - echo " --cxx4 -> $cxx4" -if type -p ncxx4-config > /dev/null 2>&1; then - echo " --cxx4flags -> $cxx4flags" - echo " --cxx4libs -> $cxx4libs" -fi - echo - - echo " --has-fortran-> $has_fortran" -if [ -f "$nfconf" ]; then - echo " --fc -> $fc" - echo " --fflags -> $fflags" - echo " --flibs -> $flibs" - echo " --has-f90 -> $has_f90" - echo " --has-f03 -> $has_f03" - echo -fi - echo " --has-dap -> $has_dap" - echo " --has-nc2 -> $has_nc2" - echo " --has-nc4 -> $has_nc4" - echo " --has-hdf5 -> $has_hdf5" - echo " --has-hdf4 -> $has_hdf4" - echo " --has-logging-> $has_logging" - echo " --has-pnetcdf-> $has_pnetcdf" - echo " --has-szlib -> $has_szlib" - echo - echo " --prefix -> $prefix" - echo " --includedir-> $includedir" - echo " --libdir -> $libdir" - echo " --version -> $version" - echo -} - -if test $# -eq 0; then - usage 1 -fi - -while test $# -gt 0; do - case "$1" in - # this deals with options in the style - # --option=value and extracts the value part - # [not currently used] - -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) value= ;; - esac - - case "$1" in - - --help) - usage 0 - ;; - - --all) - all - ;; - - --cc) - echo $cc - ;; - - --cflags) - echo $cflags - ;; - - --has-dap) - echo $has_dap - ;; - - --has-nc2) - echo $has_nc2 - ;; - - --has-nc4) - echo $has_nc4 - ;; - - --has-hdf5) - echo $has_hdf5 - ;; - - --has-hdf4) - echo $has_hdf4 - ;; - - --has-logging) - echo $has_logging - ;; - - --has-pnetcdf) - echo $has_pnetcdf - ;; - - --has-szlib) - echo $has_szlib - ;; - - --libs) - echo $libs - ;; - - --prefix) - echo "${prefix}" - ;; - - --includedir) - echo "${includedir}" - ;; - - --libdir) - echo "${libdir}" - ;; - - --version) - echo $version - ;; - - --has-c++) - echo $has_cxx - ;; - - --cxx) - echo $cxx - ;; - - --cxxflags) - echo $cxxflags - ;; - - --cxxlibs) - echo $cxxlibs - ;; - - --has-c++4) - echo $has_cxx4 - ;; - - --cxx4) - echo $cxx4 - ;; - - --cxx4flags) - echo $cxx4flags - ;; - - --cxx4libs) - echo $cxx4libs - ;; - - --has-fortran) - echo $has_fortran - ;; - - --fc) - echo $fc - ;; - - --fflags) - echo $fflags - ;; - - --flibs) - echo $flibs - ;; - - --has-f90) - echo $has_f90 - ;; - - --has-f03) - echo $has_f03 - ;; - - *) - echo "unknown option: $1" - usage 1 - ;; - esac - shift -done - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc-config.in b/contrib/netcdf/4.4.1.1/nc-config.in deleted file mode 100755 index 1c7198d6929..00000000000 --- a/contrib/netcdf/4.4.1.1/nc-config.in +++ /dev/null @@ -1,305 +0,0 @@ -#! /bin/sh -# -# This forms the basis for the nc-config utility, which tells you -# various things about the netCDF installation. This code was -# contributed by netCDF user Arlindo DaSilva. Thanks Arlindo! - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -cc="@CC@" -cflags="-I${includedir} @CPPFLAGS@" -libs="-L${libdir} @NC_LIBS@" - -has_dap="@HAS_DAP@" -has_nc2="@HAS_NC2@" -has_nc4="@HAS_NC4@" -has_hdf4="@HAS_HDF4@" -has_pnetcdf="@HAS_PNETCDF@" -has_hdf5="@HAS_HDF5@" -has_logging="@HAS_LOGGING@" -version="@PACKAGE_NAME@ @PACKAGE_VERSION@" - -has_fortran="no" -has_f90="no" -has_f03="no" - -nfconf=$(which nf-config 2>/dev/null) - -if [ -f "$nfconf" ]; then - has_fortran="yes" - fc=`nf-config --fc` - fflags=`nf-config --fflags` - flibs=`nf-config --flibs` - has_f90=`nf-config --has-f90` - has_f03=`nf-config --has-f03` -fi - -has_cxx="no" -has_cxx4="no" -if type -p ncxx4-config > /dev/null 2>&1; then - cxx4=`ncxx4-config --cxx` - cxx4flags=`ncxx4-config --cflags` - cxx4libs=`ncxx4-config --libs` - has_cxx4="yes" -elif type -p ncxx-config > /dev/null 2>&1; then - cxx=`ncxx-config --cxx` - cxxflags=`ncxx-config --cflags` - cxxlibs=`ncxx-config --libs` - has_cxx="yes" -fi - -usage() -{ - cat < /dev/null 2>&1; then - cat < /dev/null 2>&1; then - cat < $cc" - echo " --cflags -> $cflags" - echo " --libs -> $libs" - echo - echo " --has-c++ -> $has_cxx" - echo " --cxx -> $cxx" - -if type -p ncxx-config > /dev/null 2>&1; then - echo " --cxxflags -> $cxxflags" - echo " --cxxlibs -> $cxxlibs" -fi - echo - echo " --has-c++4 -> $has_cxx4" - echo " --cxx4 -> $cxx4" -if type -p ncxx4-config > /dev/null 2>&1; then - echo " --cxx4flags -> $cxx4flags" - echo " --cxx4libs -> $cxx4libs" -fi - echo - - echo " --has-fortran-> $has_fortran" -if [ -f "$nfconf" ]; then - echo " --fc -> $fc" - echo " --fflags -> $fflags" - echo " --flibs -> $flibs" - echo " --has-f90 -> $has_f90" - echo " --has-f03 -> $has_f03" - echo -fi - echo " --has-dap -> $has_dap" - echo " --has-nc2 -> $has_nc2" - echo " --has-nc4 -> $has_nc4" - echo " --has-hdf5 -> $has_hdf5" - echo " --has-hdf4 -> $has_hdf4" - echo " --has-logging-> $has_logging" - echo " --has-pnetcdf-> $has_pnetcdf" - echo " --has-szlib -> $has_szlib" - echo - echo " --prefix -> $prefix" - echo " --includedir-> $includedir" - echo " --libdir -> $libdir" - echo " --version -> $version" - echo -} - -if test $# -eq 0; then - usage 1 -fi - -while test $# -gt 0; do - case "$1" in - # this deals with options in the style - # --option=value and extracts the value part - # [not currently used] - -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) value= ;; - esac - - case "$1" in - - --help) - usage 0 - ;; - - --all) - all - ;; - - --cc) - echo $cc - ;; - - --cflags) - echo $cflags - ;; - - --has-dap) - echo $has_dap - ;; - - --has-nc2) - echo $has_nc2 - ;; - - --has-nc4) - echo $has_nc4 - ;; - - --has-hdf5) - echo $has_hdf5 - ;; - - --has-hdf4) - echo $has_hdf4 - ;; - - --has-logging) - echo $has_logging - ;; - - --has-pnetcdf) - echo $has_pnetcdf - ;; - - --has-szlib) - echo $has_szlib - ;; - - --libs) - echo $libs - ;; - - --prefix) - echo "${prefix}" - ;; - - --includedir) - echo "${includedir}" - ;; - - --libdir) - echo "${libdir}" - ;; - - --version) - echo $version - ;; - - --has-c++) - echo $has_cxx - ;; - - --cxx) - echo $cxx - ;; - - --cxxflags) - echo $cxxflags - ;; - - --cxxlibs) - echo $cxxlibs - ;; - - --has-c++4) - echo $has_cxx4 - ;; - - --cxx4) - echo $cxx4 - ;; - - --cxx4flags) - echo $cxx4flags - ;; - - --cxx4libs) - echo $cxx4libs - ;; - - --has-fortran) - echo $has_fortran - ;; - - --fc) - echo $fc - ;; - - --fflags) - echo $fflags - ;; - - --flibs) - echo $flibs - ;; - - --has-f90) - echo $has_f90 - ;; - - --has-f03) - echo $has_f03 - ;; - - *) - echo "unknown option: $1" - usage 1 - ;; - esac - shift -done - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test/CMakeLists.txt b/contrib/netcdf/4.4.1.1/nc_test/CMakeLists.txt deleted file mode 100644 index f46ac171f4b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/CMakeLists.txt +++ /dev/null @@ -1,97 +0,0 @@ -INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/include) - -SET (nc_test_m4_SOURCES test_get test_put) -FOREACH (F ${nc_test_m4_SOURCES}) - GEN_m4(${F}) -ENDFOREACH() - -SET (nc_test_SRC - nc_test.c - error.c - test_get.c - test_put.c - test_read.c - test_write.c - util.c - ) - -ADD_EXECUTABLE(nc_test ${nc_test_SRC}) -TARGET_LINK_LIBRARIES(nc_test - netcdf - ${HAVE_LIBM} - ) - -# Some extra stand-alone tests -SET(TESTS t_nc tst_small tst_misc tst_norm tst_names tst_nofill tst_nofill2 tst_nofill3 tst_meta tst_inq_type) - -IF(NOT HAVE_BASH) - SET(TESTS ${TESTS} tst_atts3) -ENDIF() - -IF(USE_NETCDF4) - SET(TESTS ${TESTS} tst_atts) - SET(TESTS ${TESTS} tst_put_vars) -ENDIF() - -IF(USE_PNETCDF) - build_bin_test_no_prefix(tst_pnetcdf) - build_bin_test_no_prefix(tst_parallel2) - build_bin_test_no_prefix(tst_addvar) - add_sh_test(nc_test run_pnetcdf_test) - add_bin_test(nc_test tst_formatx_pnetcdf) -ENDIF() - -IF(LARGE_FILE_TESTS) - SET(TESTS ${TESTS} quick_large_files tst_big_var6 tst_big_var2 tst_big_rvar tst_big_var tst_large) - IF(NOT MSVC) - SET(TESTS ${TESTS} large_files) - ENDIF() - -ENDIF() - -IF(BUILD_DISKLESS) - SET(TESTFILES ${TESTFILES} tst_diskless tst_diskless3 tst_diskless4) - IF(USE_NETCDF4) - SET(TESTFILES ${TESTFILES} tst_diskless2) - ENDIF() -ENDIF() - -# Build executables required for the shell scripts. -FOREACH(BINFILE ${TESTFILES}) - build_bin_test(${BINFILE}) -ENDFOREACH() - -# Process single-file test files. -FOREACH(CTEST ${TESTS}) - add_bin_test(nc_test ${CTEST}) -ENDFOREACH() - -ADD_TEST(nc_test ${EXECUTABLE_OUTPUT_PATH}/nc_test) - -IF(BUILD_UTILITIES) - - IF(BUILD_DISKLESS) - add_sh_test(nc_test run_diskless) - IF(BUILD_MMAP) - add_sh_test(nc_test run_mmap) - ENDIF(BUILD_MMAP) - IF(LARGE_FILE_TESTS) - add_sh_test(nc_test run_diskless2) - ENDIF(LARGE_FILE_TESTS) - - ENDIF(BUILD_DISKLESS) -ENDIF(BUILD_UTILITIES) - -# Copy some test files from current source dir to out-of-tree build dir. -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) -IF(MSVC) - FILE(COPY ${COPY_FILES} DESTINATION ${RUNTIME_OUTPUT_DIRECTORY}/) -ENDIF() - - -## Specify files to be distributed by 'make dist' -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} test_get.m4 test_put.m4 ref_tst_diskless2.cdl) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/nc_test/Makefile.am b/contrib/netcdf/4.4.1.1/nc_test/Makefile.am deleted file mode 100644 index 2c46c4b264a..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/Makefile.am +++ /dev/null @@ -1,111 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This file builds and runs the nc_test program, which tests the -# netCDF-3 API for all formats. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am -AM_CPPFLAGS += -I$(top_srcdir)/libsrc - -# These files are created by the tests. -CLEANFILES = nc_test_classic.nc nc_test_64bit.nc nc_test_netcdf4.nc \ -tst_*.nc t_nc.nc large_files.nc quick_large_files.nc \ -tst_diskless.nc tst_diskless2.nc \ -tst_diskless3.nc tst_diskless3_file.cdl tst_diskless3_memory.cdl \ -tst_diskless4.cdl tst_diskless4.nc tst_formatx.nc nc_test_cdf5.nc \ -unlim.nc tst_inq_type.nc - -# These are the tests which are always run. -TESTPROGRAMS = t_nc tst_small nc_test tst_misc tst_norm \ - tst_names tst_nofill tst_nofill2 tst_nofill3 tst_atts3 \ - tst_meta tst_inq_type - -if USE_NETCDF4 -TESTPROGRAMS += tst_atts tst_put_vars -endif - -if USE_PNETCDF -TESTPROGRAMS += tst_parallel2 tst_pnetcdf tst_addvar tst_formatx_pnetcdf -endif - -# These are the source files for the main workhorse test program, -# nc_test. If you pass nc_test, you are doing well. -nc_test_SOURCES = nc_test.c error.c test_get.c test_put.c \ -test_read.c test_write.c util.c error.h tests.h - -LDADD = ${top_builddir}/liblib/libnetcdf.la -AM_CPPFLAGS += -I$(top_builddir)/liblib -I$(top_builddir)/include -I$(top_srcdir)/libsrc - -# If the user asked for large file tests, then add them. -if LARGE_FILE_TESTS -TESTPROGRAMS += quick_large_files tst_big_var6 tst_big_var2 \ -tst_big_rvar tst_big_var tst_large large_files -endif # LARGE_FILE_TESTS - -if BUILD_BENCHMARKS -TESTPROGRAMS += testnc3perf -testnc3perf_SOURCES = testnc3perf.c -CLEANFILES += benchmark.nc -endif - -# Set up the tests. -check_PROGRAMS = $(TESTPROGRAMS) - -# Build Diskless test helpers -if BUILD_DISKLESS -check_PROGRAMS += tst_diskless tst_diskless3 tst_diskless4 -if USE_NETCDF4 -check_PROGRAMS += tst_diskless2 -endif -endif - -TESTS = $(TESTPROGRAMS) - -if BUILD_UTILITIES - if BUILD_DISKLESS - TESTS += run_diskless.sh - if BUILD_MMAP - TESTS += run_mmap.sh - endif - if LARGE_FILE_TESTS - TESTS += run_diskless2.sh - endif - endif -endif - -if USE_PNETCDF -TESTS += run_pnetcdf_test.sh -endif - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -if USE_VALGRIND_TESTS -if USE_NETCDF4 -TESTS_ENVIRONMENT=USE_NETCDF4=1 -else -TESTS_ENVIRONMENT=USE_NETCDF4=0 -endif -TESTS += run_valgrind_tests.sh -endif # USE_VALGRIND_TESTS - -# Distribute the .c files so that m4 isn't required on the users -# machine. -EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \ -run_diskless.sh run_diskless2.sh run_mmap.sh run_pnetcdf_test.sh - -# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c -EXTRA_DIST += ref_tst_diskless2.cdl CMakeLists.txt - -# Only clean these on mainatiner-clean, because they require m4 to -# regenerate. -#MAINTAINERCLEANFILES = test_get.c test_put.c - -all: - cp $(top_srcdir)/libsrc/ncx.c . - -CLEANFILES += ncx.c - -# This rule tells make how to turn our .m4 files into .c files. -.m4.c: - m4 $(AM_M4FLAGS) $(M4FLAGS) $< >$@ diff --git a/contrib/netcdf/4.4.1.1/nc_test/Makefile.in b/contrib/netcdf/4.4.1.1/nc_test/Makefile.in deleted file mode 100644 index d51fce1dd54..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/Makefile.in +++ /dev/null @@ -1,1259 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This file builds and runs the nc_test program, which tests the -# netCDF-3 API for all formats. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -@USE_NETCDF4_TRUE@am__append_3 = tst_atts tst_put_vars -@USE_PNETCDF_TRUE@am__append_4 = tst_parallel2 tst_pnetcdf tst_addvar tst_formatx_pnetcdf - -# If the user asked for large file tests, then add them. -@LARGE_FILE_TESTS_TRUE@am__append_5 = quick_large_files tst_big_var6 tst_big_var2 \ -@LARGE_FILE_TESTS_TRUE@tst_big_rvar tst_big_var tst_large large_files - -@BUILD_BENCHMARKS_TRUE@am__append_6 = testnc3perf -@BUILD_BENCHMARKS_TRUE@am__append_7 = benchmark.nc -check_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) - -# Build Diskless test helpers -@BUILD_DISKLESS_TRUE@am__append_8 = tst_diskless tst_diskless3 tst_diskless4 -@BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE@am__append_9 = tst_diskless2 -TESTS = $(am__EXEEXT_5) $(am__append_10) $(am__append_11) -@USE_PNETCDF_TRUE@am__append_10 = run_pnetcdf_test.sh -@USE_VALGRIND_TESTS_TRUE@am__append_11 = run_valgrind_tests.sh -subdir = nc_test -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@USE_NETCDF4_TRUE@am__EXEEXT_1 = tst_atts$(EXEEXT) \ -@USE_NETCDF4_TRUE@ tst_put_vars$(EXEEXT) -@USE_PNETCDF_TRUE@am__EXEEXT_2 = tst_parallel2$(EXEEXT) \ -@USE_PNETCDF_TRUE@ tst_pnetcdf$(EXEEXT) tst_addvar$(EXEEXT) \ -@USE_PNETCDF_TRUE@ tst_formatx_pnetcdf$(EXEEXT) -@LARGE_FILE_TESTS_TRUE@am__EXEEXT_3 = quick_large_files$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ tst_big_var6$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ tst_big_var2$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ tst_big_rvar$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ tst_big_var$(EXEEXT) tst_large$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ large_files$(EXEEXT) -@BUILD_BENCHMARKS_TRUE@am__EXEEXT_4 = testnc3perf$(EXEEXT) -am__EXEEXT_5 = t_nc$(EXEEXT) tst_small$(EXEEXT) nc_test$(EXEEXT) \ - tst_misc$(EXEEXT) tst_norm$(EXEEXT) tst_names$(EXEEXT) \ - tst_nofill$(EXEEXT) tst_nofill2$(EXEEXT) tst_nofill3$(EXEEXT) \ - tst_atts3$(EXEEXT) tst_meta$(EXEEXT) tst_inq_type$(EXEEXT) \ - $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ - $(am__EXEEXT_4) -@BUILD_DISKLESS_TRUE@am__EXEEXT_6 = tst_diskless$(EXEEXT) \ -@BUILD_DISKLESS_TRUE@ tst_diskless3$(EXEEXT) \ -@BUILD_DISKLESS_TRUE@ tst_diskless4$(EXEEXT) -@BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE@am__EXEEXT_7 = \ -@BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE@ tst_diskless2$(EXEEXT) -large_files_SOURCES = large_files.c -large_files_OBJECTS = large_files.$(OBJEXT) -large_files_LDADD = $(LDADD) -large_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_nc_test_OBJECTS = nc_test.$(OBJEXT) error.$(OBJEXT) \ - test_get.$(OBJEXT) test_put.$(OBJEXT) test_read.$(OBJEXT) \ - test_write.$(OBJEXT) util.$(OBJEXT) -nc_test_OBJECTS = $(am_nc_test_OBJECTS) -nc_test_LDADD = $(LDADD) -nc_test_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -quick_large_files_SOURCES = quick_large_files.c -quick_large_files_OBJECTS = quick_large_files.$(OBJEXT) -quick_large_files_LDADD = $(LDADD) -quick_large_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -t_nc_SOURCES = t_nc.c -t_nc_OBJECTS = t_nc.$(OBJEXT) -t_nc_LDADD = $(LDADD) -t_nc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am__testnc3perf_SOURCES_DIST = testnc3perf.c -@BUILD_BENCHMARKS_TRUE@am_testnc3perf_OBJECTS = testnc3perf.$(OBJEXT) -testnc3perf_OBJECTS = $(am_testnc3perf_OBJECTS) -testnc3perf_LDADD = $(LDADD) -testnc3perf_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_addvar_SOURCES = tst_addvar.c -tst_addvar_OBJECTS = tst_addvar.$(OBJEXT) -tst_addvar_LDADD = $(LDADD) -tst_addvar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_atts_SOURCES = tst_atts.c -tst_atts_OBJECTS = tst_atts.$(OBJEXT) -tst_atts_LDADD = $(LDADD) -tst_atts_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_atts3_SOURCES = tst_atts3.c -tst_atts3_OBJECTS = tst_atts3.$(OBJEXT) -tst_atts3_LDADD = $(LDADD) -tst_atts3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_big_rvar_SOURCES = tst_big_rvar.c -tst_big_rvar_OBJECTS = tst_big_rvar.$(OBJEXT) -tst_big_rvar_LDADD = $(LDADD) -tst_big_rvar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_big_var_SOURCES = tst_big_var.c -tst_big_var_OBJECTS = tst_big_var.$(OBJEXT) -tst_big_var_LDADD = $(LDADD) -tst_big_var_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_big_var2_SOURCES = tst_big_var2.c -tst_big_var2_OBJECTS = tst_big_var2.$(OBJEXT) -tst_big_var2_LDADD = $(LDADD) -tst_big_var2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_big_var6_SOURCES = tst_big_var6.c -tst_big_var6_OBJECTS = tst_big_var6.$(OBJEXT) -tst_big_var6_LDADD = $(LDADD) -tst_big_var6_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_diskless_SOURCES = tst_diskless.c -tst_diskless_OBJECTS = tst_diskless.$(OBJEXT) -tst_diskless_LDADD = $(LDADD) -tst_diskless_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_diskless2_SOURCES = tst_diskless2.c -tst_diskless2_OBJECTS = tst_diskless2.$(OBJEXT) -tst_diskless2_LDADD = $(LDADD) -tst_diskless2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_diskless3_SOURCES = tst_diskless3.c -tst_diskless3_OBJECTS = tst_diskless3.$(OBJEXT) -tst_diskless3_LDADD = $(LDADD) -tst_diskless3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_diskless4_SOURCES = tst_diskless4.c -tst_diskless4_OBJECTS = tst_diskless4.$(OBJEXT) -tst_diskless4_LDADD = $(LDADD) -tst_diskless4_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_formatx_pnetcdf_SOURCES = tst_formatx_pnetcdf.c -tst_formatx_pnetcdf_OBJECTS = tst_formatx_pnetcdf.$(OBJEXT) -tst_formatx_pnetcdf_LDADD = $(LDADD) -tst_formatx_pnetcdf_DEPENDENCIES = \ - ${top_builddir}/liblib/libnetcdf.la -tst_inq_type_SOURCES = tst_inq_type.c -tst_inq_type_OBJECTS = tst_inq_type.$(OBJEXT) -tst_inq_type_LDADD = $(LDADD) -tst_inq_type_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_large_SOURCES = tst_large.c -tst_large_OBJECTS = tst_large.$(OBJEXT) -tst_large_LDADD = $(LDADD) -tst_large_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_meta_SOURCES = tst_meta.c -tst_meta_OBJECTS = tst_meta.$(OBJEXT) -tst_meta_LDADD = $(LDADD) -tst_meta_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_misc_SOURCES = tst_misc.c -tst_misc_OBJECTS = tst_misc.$(OBJEXT) -tst_misc_LDADD = $(LDADD) -tst_misc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_names_SOURCES = tst_names.c -tst_names_OBJECTS = tst_names.$(OBJEXT) -tst_names_LDADD = $(LDADD) -tst_names_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_nofill_SOURCES = tst_nofill.c -tst_nofill_OBJECTS = tst_nofill.$(OBJEXT) -tst_nofill_LDADD = $(LDADD) -tst_nofill_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_nofill2_SOURCES = tst_nofill2.c -tst_nofill2_OBJECTS = tst_nofill2.$(OBJEXT) -tst_nofill2_LDADD = $(LDADD) -tst_nofill2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_nofill3_SOURCES = tst_nofill3.c -tst_nofill3_OBJECTS = tst_nofill3.$(OBJEXT) -tst_nofill3_LDADD = $(LDADD) -tst_nofill3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_norm_SOURCES = tst_norm.c -tst_norm_OBJECTS = tst_norm.$(OBJEXT) -tst_norm_LDADD = $(LDADD) -tst_norm_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_parallel2_SOURCES = tst_parallel2.c -tst_parallel2_OBJECTS = tst_parallel2.$(OBJEXT) -tst_parallel2_LDADD = $(LDADD) -tst_parallel2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_pnetcdf_SOURCES = tst_pnetcdf.c -tst_pnetcdf_OBJECTS = tst_pnetcdf.$(OBJEXT) -tst_pnetcdf_LDADD = $(LDADD) -tst_pnetcdf_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_put_vars_SOURCES = tst_put_vars.c -tst_put_vars_OBJECTS = tst_put_vars.$(OBJEXT) -tst_put_vars_LDADD = $(LDADD) -tst_put_vars_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_small_SOURCES = tst_small.c -tst_small_OBJECTS = tst_small.$(OBJEXT) -tst_small_LDADD = $(LDADD) -tst_small_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/error.Po ./$(DEPDIR)/large_files.Po \ - ./$(DEPDIR)/nc_test.Po ./$(DEPDIR)/quick_large_files.Po \ - ./$(DEPDIR)/t_nc.Po ./$(DEPDIR)/test_get.Po \ - ./$(DEPDIR)/test_put.Po ./$(DEPDIR)/test_read.Po \ - ./$(DEPDIR)/test_write.Po ./$(DEPDIR)/testnc3perf.Po \ - ./$(DEPDIR)/tst_addvar.Po ./$(DEPDIR)/tst_atts.Po \ - ./$(DEPDIR)/tst_atts3.Po ./$(DEPDIR)/tst_big_rvar.Po \ - ./$(DEPDIR)/tst_big_var.Po ./$(DEPDIR)/tst_big_var2.Po \ - ./$(DEPDIR)/tst_big_var6.Po ./$(DEPDIR)/tst_diskless.Po \ - ./$(DEPDIR)/tst_diskless2.Po ./$(DEPDIR)/tst_diskless3.Po \ - ./$(DEPDIR)/tst_diskless4.Po \ - ./$(DEPDIR)/tst_formatx_pnetcdf.Po ./$(DEPDIR)/tst_inq_type.Po \ - ./$(DEPDIR)/tst_large.Po ./$(DEPDIR)/tst_meta.Po \ - ./$(DEPDIR)/tst_misc.Po ./$(DEPDIR)/tst_names.Po \ - ./$(DEPDIR)/tst_nofill.Po ./$(DEPDIR)/tst_nofill2.Po \ - ./$(DEPDIR)/tst_nofill3.Po ./$(DEPDIR)/tst_norm.Po \ - ./$(DEPDIR)/tst_parallel2.Po ./$(DEPDIR)/tst_pnetcdf.Po \ - ./$(DEPDIR)/tst_put_vars.Po ./$(DEPDIR)/tst_small.Po \ - ./$(DEPDIR)/util.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = large_files.c $(nc_test_SOURCES) quick_large_files.c t_nc.c \ - $(testnc3perf_SOURCES) tst_addvar.c tst_atts.c tst_atts3.c \ - tst_big_rvar.c tst_big_var.c tst_big_var2.c tst_big_var6.c \ - tst_diskless.c tst_diskless2.c tst_diskless3.c tst_diskless4.c \ - tst_formatx_pnetcdf.c tst_inq_type.c tst_large.c tst_meta.c \ - tst_misc.c tst_names.c tst_nofill.c tst_nofill2.c \ - tst_nofill3.c tst_norm.c tst_parallel2.c tst_pnetcdf.c \ - tst_put_vars.c tst_small.c -DIST_SOURCES = large_files.c $(nc_test_SOURCES) quick_large_files.c \ - t_nc.c $(am__testnc3perf_SOURCES_DIST) tst_addvar.c tst_atts.c \ - tst_atts3.c tst_big_rvar.c tst_big_var.c tst_big_var2.c \ - tst_big_var6.c tst_diskless.c tst_diskless2.c tst_diskless3.c \ - tst_diskless4.c tst_formatx_pnetcdf.c tst_inq_type.c \ - tst_large.c tst_meta.c tst_misc.c tst_names.c tst_nofill.c \ - tst_nofill2.c tst_nofill3.c tst_norm.c tst_parallel2.c \ - tst_pnetcdf.c tst_put_vars.c tst_small.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ - -I$(top_srcdir)/libsrc -I$(top_builddir)/liblib \ - -I$(top_builddir)/include -I$(top_srcdir)/libsrc -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# These files are created by the tests. -CLEANFILES = nc_test_classic.nc nc_test_64bit.nc nc_test_netcdf4.nc \ - tst_*.nc t_nc.nc large_files.nc quick_large_files.nc \ - tst_diskless.nc tst_diskless2.nc tst_diskless3.nc \ - tst_diskless3_file.cdl tst_diskless3_memory.cdl \ - tst_diskless4.cdl tst_diskless4.nc tst_formatx.nc \ - nc_test_cdf5.nc unlim.nc tst_inq_type.nc $(am__append_7) ncx.c - -# These are the tests which are always run. -TESTPROGRAMS = t_nc tst_small nc_test tst_misc tst_norm tst_names \ - tst_nofill tst_nofill2 tst_nofill3 tst_atts3 tst_meta \ - tst_inq_type $(am__append_3) $(am__append_4) $(am__append_5) \ - $(am__append_6) - -# These are the source files for the main workhorse test program, -# nc_test. If you pass nc_test, you are doing well. -nc_test_SOURCES = nc_test.c error.c test_get.c test_put.c \ -test_read.c test_write.c util.c error.h tests.h - -LDADD = ${top_builddir}/liblib/libnetcdf.la -@BUILD_BENCHMARKS_TRUE@testnc3perf_SOURCES = testnc3perf.c -@USE_NETCDF4_FALSE@@USE_VALGRIND_TESTS_TRUE@TESTS_ENVIRONMENT = USE_NETCDF4=0 - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -@USE_NETCDF4_TRUE@@USE_VALGRIND_TESTS_TRUE@TESTS_ENVIRONMENT = USE_NETCDF4=1 - -# Distribute the .c files so that m4 isn't required on the users -# machine. - -# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c -EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \ - run_diskless.sh run_diskless2.sh run_mmap.sh \ - run_pnetcdf_test.sh ref_tst_diskless2.cdl CMakeLists.txt -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .m4 .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 nc_test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign nc_test/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -large_files$(EXEEXT): $(large_files_OBJECTS) $(large_files_DEPENDENCIES) $(EXTRA_large_files_DEPENDENCIES) - @rm -f large_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(large_files_OBJECTS) $(large_files_LDADD) $(LIBS) - -nc_test$(EXEEXT): $(nc_test_OBJECTS) $(nc_test_DEPENDENCIES) $(EXTRA_nc_test_DEPENDENCIES) - @rm -f nc_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(nc_test_OBJECTS) $(nc_test_LDADD) $(LIBS) - -quick_large_files$(EXEEXT): $(quick_large_files_OBJECTS) $(quick_large_files_DEPENDENCIES) $(EXTRA_quick_large_files_DEPENDENCIES) - @rm -f quick_large_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(quick_large_files_OBJECTS) $(quick_large_files_LDADD) $(LIBS) - -t_nc$(EXEEXT): $(t_nc_OBJECTS) $(t_nc_DEPENDENCIES) $(EXTRA_t_nc_DEPENDENCIES) - @rm -f t_nc$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(t_nc_OBJECTS) $(t_nc_LDADD) $(LIBS) - -testnc3perf$(EXEEXT): $(testnc3perf_OBJECTS) $(testnc3perf_DEPENDENCIES) $(EXTRA_testnc3perf_DEPENDENCIES) - @rm -f testnc3perf$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(testnc3perf_OBJECTS) $(testnc3perf_LDADD) $(LIBS) - -tst_addvar$(EXEEXT): $(tst_addvar_OBJECTS) $(tst_addvar_DEPENDENCIES) $(EXTRA_tst_addvar_DEPENDENCIES) - @rm -f tst_addvar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_addvar_OBJECTS) $(tst_addvar_LDADD) $(LIBS) - -tst_atts$(EXEEXT): $(tst_atts_OBJECTS) $(tst_atts_DEPENDENCIES) $(EXTRA_tst_atts_DEPENDENCIES) - @rm -f tst_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts_OBJECTS) $(tst_atts_LDADD) $(LIBS) - -tst_atts3$(EXEEXT): $(tst_atts3_OBJECTS) $(tst_atts3_DEPENDENCIES) $(EXTRA_tst_atts3_DEPENDENCIES) - @rm -f tst_atts3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts3_OBJECTS) $(tst_atts3_LDADD) $(LIBS) - -tst_big_rvar$(EXEEXT): $(tst_big_rvar_OBJECTS) $(tst_big_rvar_DEPENDENCIES) $(EXTRA_tst_big_rvar_DEPENDENCIES) - @rm -f tst_big_rvar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_big_rvar_OBJECTS) $(tst_big_rvar_LDADD) $(LIBS) - -tst_big_var$(EXEEXT): $(tst_big_var_OBJECTS) $(tst_big_var_DEPENDENCIES) $(EXTRA_tst_big_var_DEPENDENCIES) - @rm -f tst_big_var$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_big_var_OBJECTS) $(tst_big_var_LDADD) $(LIBS) - -tst_big_var2$(EXEEXT): $(tst_big_var2_OBJECTS) $(tst_big_var2_DEPENDENCIES) $(EXTRA_tst_big_var2_DEPENDENCIES) - @rm -f tst_big_var2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_big_var2_OBJECTS) $(tst_big_var2_LDADD) $(LIBS) - -tst_big_var6$(EXEEXT): $(tst_big_var6_OBJECTS) $(tst_big_var6_DEPENDENCIES) $(EXTRA_tst_big_var6_DEPENDENCIES) - @rm -f tst_big_var6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_big_var6_OBJECTS) $(tst_big_var6_LDADD) $(LIBS) - -tst_diskless$(EXEEXT): $(tst_diskless_OBJECTS) $(tst_diskless_DEPENDENCIES) $(EXTRA_tst_diskless_DEPENDENCIES) - @rm -f tst_diskless$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_diskless_OBJECTS) $(tst_diskless_LDADD) $(LIBS) - -tst_diskless2$(EXEEXT): $(tst_diskless2_OBJECTS) $(tst_diskless2_DEPENDENCIES) $(EXTRA_tst_diskless2_DEPENDENCIES) - @rm -f tst_diskless2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_diskless2_OBJECTS) $(tst_diskless2_LDADD) $(LIBS) - -tst_diskless3$(EXEEXT): $(tst_diskless3_OBJECTS) $(tst_diskless3_DEPENDENCIES) $(EXTRA_tst_diskless3_DEPENDENCIES) - @rm -f tst_diskless3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_diskless3_OBJECTS) $(tst_diskless3_LDADD) $(LIBS) - -tst_diskless4$(EXEEXT): $(tst_diskless4_OBJECTS) $(tst_diskless4_DEPENDENCIES) $(EXTRA_tst_diskless4_DEPENDENCIES) - @rm -f tst_diskless4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_diskless4_OBJECTS) $(tst_diskless4_LDADD) $(LIBS) - -tst_formatx_pnetcdf$(EXEEXT): $(tst_formatx_pnetcdf_OBJECTS) $(tst_formatx_pnetcdf_DEPENDENCIES) $(EXTRA_tst_formatx_pnetcdf_DEPENDENCIES) - @rm -f tst_formatx_pnetcdf$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_formatx_pnetcdf_OBJECTS) $(tst_formatx_pnetcdf_LDADD) $(LIBS) - -tst_inq_type$(EXEEXT): $(tst_inq_type_OBJECTS) $(tst_inq_type_DEPENDENCIES) $(EXTRA_tst_inq_type_DEPENDENCIES) - @rm -f tst_inq_type$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_inq_type_OBJECTS) $(tst_inq_type_LDADD) $(LIBS) - -tst_large$(EXEEXT): $(tst_large_OBJECTS) $(tst_large_DEPENDENCIES) $(EXTRA_tst_large_DEPENDENCIES) - @rm -f tst_large$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_large_OBJECTS) $(tst_large_LDADD) $(LIBS) - -tst_meta$(EXEEXT): $(tst_meta_OBJECTS) $(tst_meta_DEPENDENCIES) $(EXTRA_tst_meta_DEPENDENCIES) - @rm -f tst_meta$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_meta_OBJECTS) $(tst_meta_LDADD) $(LIBS) - -tst_misc$(EXEEXT): $(tst_misc_OBJECTS) $(tst_misc_DEPENDENCIES) $(EXTRA_tst_misc_DEPENDENCIES) - @rm -f tst_misc$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_misc_OBJECTS) $(tst_misc_LDADD) $(LIBS) - -tst_names$(EXEEXT): $(tst_names_OBJECTS) $(tst_names_DEPENDENCIES) $(EXTRA_tst_names_DEPENDENCIES) - @rm -f tst_names$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_names_OBJECTS) $(tst_names_LDADD) $(LIBS) - -tst_nofill$(EXEEXT): $(tst_nofill_OBJECTS) $(tst_nofill_DEPENDENCIES) $(EXTRA_tst_nofill_DEPENDENCIES) - @rm -f tst_nofill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_nofill_OBJECTS) $(tst_nofill_LDADD) $(LIBS) - -tst_nofill2$(EXEEXT): $(tst_nofill2_OBJECTS) $(tst_nofill2_DEPENDENCIES) $(EXTRA_tst_nofill2_DEPENDENCIES) - @rm -f tst_nofill2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_nofill2_OBJECTS) $(tst_nofill2_LDADD) $(LIBS) - -tst_nofill3$(EXEEXT): $(tst_nofill3_OBJECTS) $(tst_nofill3_DEPENDENCIES) $(EXTRA_tst_nofill3_DEPENDENCIES) - @rm -f tst_nofill3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_nofill3_OBJECTS) $(tst_nofill3_LDADD) $(LIBS) - -tst_norm$(EXEEXT): $(tst_norm_OBJECTS) $(tst_norm_DEPENDENCIES) $(EXTRA_tst_norm_DEPENDENCIES) - @rm -f tst_norm$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_norm_OBJECTS) $(tst_norm_LDADD) $(LIBS) - -tst_parallel2$(EXEEXT): $(tst_parallel2_OBJECTS) $(tst_parallel2_DEPENDENCIES) $(EXTRA_tst_parallel2_DEPENDENCIES) - @rm -f tst_parallel2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_parallel2_OBJECTS) $(tst_parallel2_LDADD) $(LIBS) - -tst_pnetcdf$(EXEEXT): $(tst_pnetcdf_OBJECTS) $(tst_pnetcdf_DEPENDENCIES) $(EXTRA_tst_pnetcdf_DEPENDENCIES) - @rm -f tst_pnetcdf$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_pnetcdf_OBJECTS) $(tst_pnetcdf_LDADD) $(LIBS) - -tst_put_vars$(EXEEXT): $(tst_put_vars_OBJECTS) $(tst_put_vars_DEPENDENCIES) $(EXTRA_tst_put_vars_DEPENDENCIES) - @rm -f tst_put_vars$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_put_vars_OBJECTS) $(tst_put_vars_LDADD) $(LIBS) - -tst_small$(EXEEXT): $(tst_small_OBJECTS) $(tst_small_DEPENDENCIES) $(EXTRA_tst_small_DEPENDENCIES) - @rm -f tst_small$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_small_OBJECTS) $(tst_small_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nc_test.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quick_large_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_nc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_get.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_put.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_read.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_write.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testnc3perf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_addvar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_big_rvar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_big_var.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_big_var2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_big_var6.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_diskless.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_diskless2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_diskless3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_diskless4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_formatx_pnetcdf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_inq_type.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_large.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_meta.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_misc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_names.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nofill.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nofill2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nofill3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_norm.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_parallel2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_pnetcdf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_put_vars.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_small.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/large_files.Po - -rm -f ./$(DEPDIR)/nc_test.Po - -rm -f ./$(DEPDIR)/quick_large_files.Po - -rm -f ./$(DEPDIR)/t_nc.Po - -rm -f ./$(DEPDIR)/test_get.Po - -rm -f ./$(DEPDIR)/test_put.Po - -rm -f ./$(DEPDIR)/test_read.Po - -rm -f ./$(DEPDIR)/test_write.Po - -rm -f ./$(DEPDIR)/testnc3perf.Po - -rm -f ./$(DEPDIR)/tst_addvar.Po - -rm -f ./$(DEPDIR)/tst_atts.Po - -rm -f ./$(DEPDIR)/tst_atts3.Po - -rm -f ./$(DEPDIR)/tst_big_rvar.Po - -rm -f ./$(DEPDIR)/tst_big_var.Po - -rm -f ./$(DEPDIR)/tst_big_var2.Po - -rm -f ./$(DEPDIR)/tst_big_var6.Po - -rm -f ./$(DEPDIR)/tst_diskless.Po - -rm -f ./$(DEPDIR)/tst_diskless2.Po - -rm -f ./$(DEPDIR)/tst_diskless3.Po - -rm -f ./$(DEPDIR)/tst_diskless4.Po - -rm -f ./$(DEPDIR)/tst_formatx_pnetcdf.Po - -rm -f ./$(DEPDIR)/tst_inq_type.Po - -rm -f ./$(DEPDIR)/tst_large.Po - -rm -f ./$(DEPDIR)/tst_meta.Po - -rm -f ./$(DEPDIR)/tst_misc.Po - -rm -f ./$(DEPDIR)/tst_names.Po - -rm -f ./$(DEPDIR)/tst_nofill.Po - -rm -f ./$(DEPDIR)/tst_nofill2.Po - -rm -f ./$(DEPDIR)/tst_nofill3.Po - -rm -f ./$(DEPDIR)/tst_norm.Po - -rm -f ./$(DEPDIR)/tst_parallel2.Po - -rm -f ./$(DEPDIR)/tst_pnetcdf.Po - -rm -f ./$(DEPDIR)/tst_put_vars.Po - -rm -f ./$(DEPDIR)/tst_small.Po - -rm -f ./$(DEPDIR)/util.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/large_files.Po - -rm -f ./$(DEPDIR)/nc_test.Po - -rm -f ./$(DEPDIR)/quick_large_files.Po - -rm -f ./$(DEPDIR)/t_nc.Po - -rm -f ./$(DEPDIR)/test_get.Po - -rm -f ./$(DEPDIR)/test_put.Po - -rm -f ./$(DEPDIR)/test_read.Po - -rm -f ./$(DEPDIR)/test_write.Po - -rm -f ./$(DEPDIR)/testnc3perf.Po - -rm -f ./$(DEPDIR)/tst_addvar.Po - -rm -f ./$(DEPDIR)/tst_atts.Po - -rm -f ./$(DEPDIR)/tst_atts3.Po - -rm -f ./$(DEPDIR)/tst_big_rvar.Po - -rm -f ./$(DEPDIR)/tst_big_var.Po - -rm -f ./$(DEPDIR)/tst_big_var2.Po - -rm -f ./$(DEPDIR)/tst_big_var6.Po - -rm -f ./$(DEPDIR)/tst_diskless.Po - -rm -f ./$(DEPDIR)/tst_diskless2.Po - -rm -f ./$(DEPDIR)/tst_diskless3.Po - -rm -f ./$(DEPDIR)/tst_diskless4.Po - -rm -f ./$(DEPDIR)/tst_formatx_pnetcdf.Po - -rm -f ./$(DEPDIR)/tst_inq_type.Po - -rm -f ./$(DEPDIR)/tst_large.Po - -rm -f ./$(DEPDIR)/tst_meta.Po - -rm -f ./$(DEPDIR)/tst_misc.Po - -rm -f ./$(DEPDIR)/tst_names.Po - -rm -f ./$(DEPDIR)/tst_nofill.Po - -rm -f ./$(DEPDIR)/tst_nofill2.Po - -rm -f ./$(DEPDIR)/tst_nofill3.Po - -rm -f ./$(DEPDIR)/tst_norm.Po - -rm -f ./$(DEPDIR)/tst_parallel2.Po - -rm -f ./$(DEPDIR)/tst_pnetcdf.Po - -rm -f ./$(DEPDIR)/tst_put_vars.Po - -rm -f ./$(DEPDIR)/tst_small.Po - -rm -f ./$(DEPDIR)/util.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -@BUILD_UTILITIES_TRUE@ if BUILD_DISKLESS -@BUILD_UTILITIES_TRUE@ TESTS += run_diskless.sh -@BUILD_UTILITIES_TRUE@ if BUILD_MMAP -@BUILD_UTILITIES_TRUE@ TESTS += run_mmap.sh -@BUILD_UTILITIES_TRUE@ endif -@BUILD_UTILITIES_TRUE@ if LARGE_FILE_TESTS -@BUILD_UTILITIES_TRUE@ TESTS += run_diskless2.sh -@BUILD_UTILITIES_TRUE@ endif -@BUILD_UTILITIES_TRUE@ endif - -# Only clean these on mainatiner-clean, because they require m4 to -# regenerate. -#MAINTAINERCLEANFILES = test_get.c test_put.c - -all: - cp $(top_srcdir)/libsrc/ncx.c . - -# This rule tells make how to turn our .m4 files into .c files. -.m4.c: - m4 $(AM_M4FLAGS) $(M4FLAGS) $< >$@ - -# 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/contrib/netcdf/4.4.1.1/nc_test/quick_large_files.c b/contrib/netcdf/4.4.1.1/nc_test/quick_large_files.c deleted file mode 100644 index a1209e510b4..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/quick_large_files.c +++ /dev/null @@ -1,573 +0,0 @@ -/* - Copyright 2004-2006, UCAR/Unidata - See COPYRIGHT file for copying and redistribution conditions. - - This program (quickly, but not thoroughly) tests the large file - features. It turns off fill mode to quickly create an 8 gb file, and - write one value is written, nothing is read. - - $Id: quick_large_files.c,v 1.18 2008/06/05 15:10:16 ed Exp $ -*/ -#include -#include -#include "err_macros.h" -#include -#include -#include - -#define NUMDIMS 1 -#define NUMVARS 2 - -/* This is the magic number for classic format limits: 2 GiB - 4 - bytes. */ -#define MAX_CLASSIC_BYTES 2147483644 - -/* This is the magic number for 64-bit offset format limits: 4 GiB - 4 - bytes. */ -#define MAX_64OFFSET_BYTES 4294967292 - -/* Handy for constucting tests. */ -#define QTR_CLASSIC_MAX (MAX_CLASSIC_BYTES/4) - -/* We will create this file. */ -#define FILE_NAME "quick_large_files.nc" - -int -main(int argc, char **argv) -{ - int ncid, spockid, kirkid, dimids[NUMDIMS], recdimid, scottyid; - int int_val_in, int_val_out = 99; - double double_val_in, double_val_out = 1.79769313486230e+308; /* from ncx.h */ - size_t index[2] = {QTR_CLASSIC_MAX-1, 0}; - char file_name[NC_MAX_NAME + 1]; - - /* These are for the revolutionary generals tests. */ - int cromwellid, collinsid, washingtonid; - int napoleanid, dimids_gen[4], dimids_gen1[4]; - - /* All create modes will be anded to this. All tests will be run - twice, with and without NC_SHARE.*/ - int cmode_run; - int cflag = NC_CLOBBER; - - int res; - - printf("\n*** Testing large files, quickly.\n"); - - for (cmode_run=0; cmode_run<2; cmode_run++) - { - size_t big_index = (size_t)MAX_CLASSIC_BYTES + 10; - /* On second pass, try using NC_SHARE. */ - if (cmode_run == 1) - { - cflag |= NC_SHARE; - printf("*** Turned on NC_SHARE for subsequent tests.\n"); - } - - /* Create a netCDF 64-bit offset format file. Write a value. */ - sprintf(file_name, "%s/%s", TEMP_LARGE, FILE_NAME); - printf("*** Creating %s for 64-bit offset large file test...", file_name); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "longdim", QTR_CLASSIC_MAX, dimids))) - ERR; - /* test bug fix writing record beyond 2**31 */ - if ((res = nc_def_dim(ncid, "longerdim", NC_UNLIMITED, &recdimid))) - ERR; - if ((res = nc_def_var(ncid, "spock", NC_DOUBLE, NUMDIMS, - dimids, &spockid))) - ERR; - if ((res = nc_def_var(ncid, "kirk", NC_DOUBLE, NUMDIMS, - dimids, &kirkid))) - ERR; - if ((res = nc_def_var(ncid, "scotty", NC_BYTE, 1, - &recdimid, &scottyid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - if ((res = nc_put_var1_double(ncid, kirkid, index, &double_val_out))) - ERR; - if ((res = nc_put_var1_int(ncid, scottyid, &big_index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, scottyid, &big_index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* How about a meteorological data file about the weather - experience by various generals of revolutionary armies? - - This has 3 dims, 4 vars. The dimensions are such that this will - (just barely) not fit in a classic format file. The first three - vars are cromwell, 536870911 bytes, washington, 2*536870911 - bytes, and napolean, 536870911 bytes. That's a grand total of - 2147483644 bytes. Recall our magic limit for the combined size - of all fixed vars: 2 GiB - 4 bytes, or 2147483644. So you would - think these would exactly fit, unless you realized that - everything is rounded to a 4 byte boundary, so you need to add - some bytes for that (how many?), and that pushes us over the - limit. - - We will create this file twice, once to ensure it succeeds (with - 64-bit offset format), and once to make sure it fails (with - classic format). Then some variations to check record var - boundaries. - */ - printf("*** Now a 64-bit offset, large file, fixed var test..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - QTR_CLASSIC_MAX, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - QTR_CLASSIC_MAX, &dimids_gen[1]))) - ERR; - if ((res = nc_def_dim(ncid, "ruthlessness", 100, &dimids_gen[2]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_BYTE, 1, &dimids_gen[0], - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 1, &dimids_gen[1], - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 1, &dimids_gen[0], - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, &dimids_gen[2], - &collinsid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - printf("ok\n"); - - /* Write a value or two just for fun. */ - /*index[0] = QTR_CLASSIC_MAX - 296; - if ((res = nc_put_var1_int(ncid, napoleanid, index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, napoleanid, index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - BAIL2;*/ - printf("*** Now writing some values..."); - index[0] = QTR_CLASSIC_MAX - 295; - if ((res = nc_put_var1_int(ncid, napoleanid, index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, napoleanid, index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - ERR; - - index[0] = QTR_CLASSIC_MAX - 1; - if ((res = nc_put_var1_int(ncid, napoleanid, index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, napoleanid, index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - ERR; - - index[0] = QTR_CLASSIC_MAX - 1; - if ((res = nc_put_var1_int(ncid, washingtonid, index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, washingtonid, index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - ERR; - - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* This time it should fail, because we're trying to cram this into - a classic format file. nc_enddef will detect our violations and - give an error. We've*/ - printf("*** Now a classic file which will fail..."); - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - QTR_CLASSIC_MAX, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - QTR_CLASSIC_MAX, &dimids_gen[1]))) - ERR; - if ((res = nc_def_dim(ncid, "ruthlessness", 100, &dimids_gen[2]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_BYTE, 1, &dimids_gen[0], - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 1, &dimids_gen[1], - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 1, &dimids_gen[0], - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, &dimids_gen[2], - &collinsid))) - ERR; - if ((res = nc_enddef(ncid)) != NC_EVARSIZE) - ERR; - if ((res = nc_close(ncid)) != NC_EVARSIZE) - ERR; - printf("ok\n"); - - /* This will create some max sized 64-bit offset format fixed vars. */ - printf("*** Now a 64-bit offset, simple fixed var create test..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[0]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_SHORT, 1, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_SHORT, 1, dimids_gen, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, dimids_gen, - &collinsid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* This will exceed the 64-bit offset format limits for one of the - fixed vars. */ - printf("*** Now a 64-bit offset, over-sized file that will fail..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - /* max dim size is MAX_CLASSIC_BYTES. */ - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, dimids_gen))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_DOUBLE, 1, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 1, dimids_gen, - &washingtonid))) - if ((res = nc_enddef(ncid)) != NC_EVARSIZE) - ERR; - if ((res = nc_close(ncid)) != NC_EVARSIZE) - ERR; - printf("ok\n"); - - /* Now let's see about record vars. First create a 64-bit offset - file with three rec variables, each with the same numbers as - defined above for the fixed var tests. This should all work. */ - printf("*** Now a 64-bit offset, record var file..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - QTR_CLASSIC_MAX, &dimids_gen[1]))) - ERR; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - QTR_CLASSIC_MAX, &dimids_gen[2]))) - ERR; - if ((res = nc_def_dim(ncid, "ruthlessness", 100, &dimids_gen[3]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_BYTE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 2, dimids_gen, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, &dimids_gen[2], - &collinsid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* Now try this record file in classic format. It should fail and - the enddef. Too many bytes in the first record.*/ - printf("*** Now a classic file that's too big and will fail..."); - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - QTR_CLASSIC_MAX, &dimids_gen[1]))) - ERR; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - QTR_CLASSIC_MAX, &dimids_gen[2]))) - ERR; - if ((res = nc_def_dim(ncid, "ruthlessness", 100, &dimids_gen[3]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_BYTE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 2, dimids_gen, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, &dimids_gen[2], - &collinsid))) - ERR; - if ((res = nc_enddef(ncid)) != NC_EVARSIZE) - ERR; - if ((res = nc_close(ncid)) != NC_EVARSIZE) - ERR; - printf("ok\n"); - - /* Now try this record file in classic format. It just barely - passes at the enddef. Almost, but not quite, too many bytes in - the first record. Since I'm adding a fixed variable (Collins), - I don't get the last record size exemption. */ - printf("*** Now a classic file with recs and one fixed will fail..."); - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - if ((res = nc_def_dim(ncid, "ruthlessness", 100, &dimids_gen[2]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_BYTE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 1, &dimids_gen[2], - &collinsid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* Try a classic file with several records, and the last record var - with a record size greater than our magic number of 2 GiB - 4 - bytes. We'll start with just one oversized record var. This - should work. Cromwell has been changed to NC_DOUBLE, and that - increases his size to 2147483644 (the max dimension size) times - 8, or about 16 GB per record. Zowie! (Mind you, Cromwell - certainly had a great deal of revolutionary fervor.) - */ - printf("*** Now a classic file with one large rec var..."); - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_DOUBLE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - index[0] = 0; - index[1] = MAX_CLASSIC_BYTES - 1; - if ((res = nc_put_var1_double(ncid, cromwellid, index, &double_val_out))) - ERR; - if ((res = nc_get_var1_double(ncid, cromwellid, index, &double_val_in))) - ERR; - if (double_val_in != double_val_out) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* This is a classic format file with an extra-large last record - var. */ - printf("*** Now a classic file with extra-large last record var...") ; - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - dimids_gen1[0] = dimids_gen[0]; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - 5368, &dimids_gen1[1]))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen1, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 2, dimids_gen1, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 2, dimids_gen1, - &collinsid))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_DOUBLE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - index[0] = 0; - index[1] = MAX_CLASSIC_BYTES - 1; - if ((res = nc_put_var1_double(ncid, cromwellid, index, &double_val_out))) - ERR; - if ((res = nc_get_var1_double(ncid, cromwellid, index, &double_val_in))) - ERR; - if (double_val_in != double_val_out) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - - /* This is a classic format file with an extra-large second to last - record var. But this time it won't work, because the size - exemption only applies to the last record var. Note that one - dimension is small (5000). */ - printf("*** Now a classic file xtra-large 2nd to last var that will fail..."); - if ((res = nc_create(file_name, cflag, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - dimids_gen1[0] = dimids_gen[0]; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - 5000, &dimids_gen1[1]))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen1, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 2, dimids_gen1, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_DOUBLE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 2, dimids_gen1, - &collinsid))) - ERR; - if ((res = nc_enddef(ncid)) != NC_EVARSIZE) - ERR; - if ((res = nc_close(ncid)) != NC_EVARSIZE) - ERR; - printf("ok\n"); - - /* Now try an extra large second to last ver with 64-bit - offset. This won't work either, because the cromwell var is so - large. It exceeds the 4GiB - 4 byte per record limit for record - vars. */ - printf("*** Now a 64-bit offset file with too-large rec var that will fail..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - dimids_gen1[0] = dimids_gen[0]; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - 5368, &dimids_gen1[1]))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen1, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_BYTE, 2, dimids_gen1, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_DOUBLE, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 2, dimids_gen1, - &collinsid))) - ERR; - if ((res = nc_enddef(ncid)) != NC_EVARSIZE) - ERR; - if ((res = nc_close(ncid)) != NC_EVARSIZE) - ERR; - printf("ok\n"); - - /* A 64-bit offset record file that just fits... */ - printf("*** Now a 64 bit-offset file that just fits..."); - if ((res = nc_create(file_name, cflag|NC_64BIT_OFFSET, &ncid))) - ERR; - if ((res = nc_set_fill(ncid, NC_NOFILL, NULL))) - ERR; - if ((res = nc_def_dim(ncid, "political_trouble", - NC_UNLIMITED, &dimids_gen[0]))) - ERR; - if ((res = nc_def_dim(ncid, "revolutionary_fervor", - MAX_CLASSIC_BYTES, &dimids_gen[1]))) - ERR; - dimids_gen1[0] = dimids_gen[0]; - if ((res = nc_def_dim(ncid, "post_revoultionary_hangover", - MAX_CLASSIC_BYTES, &dimids_gen1[1]))) - ERR; - if ((res = nc_def_var(ncid, "Washington", NC_SHORT, 2, dimids_gen1, - &washingtonid))) - ERR; - if ((res = nc_def_var(ncid, "Napolean", NC_SHORT, 2, dimids_gen1, - &napoleanid))) - ERR; - if ((res = nc_def_var(ncid, "Cromwell", NC_SHORT, 2, dimids_gen, - &cromwellid))) - ERR; - if ((res = nc_def_var(ncid, "Collins", NC_DOUBLE, 2, dimids_gen1, - &collinsid))) - ERR; - if ((res = nc_enddef(ncid))) - ERR; - index[0] = 0; - index[1] = MAX_CLASSIC_BYTES - 1; - if ((res = nc_put_var1_int(ncid, cromwellid, index, &int_val_out))) - ERR; - if ((res = nc_get_var1_int(ncid, cromwellid, index, &int_val_in))) - ERR; - if (int_val_in != int_val_out) - ERR; - if ((res = nc_close(ncid))) - ERR; - printf("ok\n"); - } /* end of cmode run */ - - /* Wow! Everything worked! */ - printf("*** Tests successful!\n"); - - /* Delete the huge data file we created. */ - (void) remove(file_name); - - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test/run_diskless2.sh b/contrib/netcdf/4.4.1.1/nc_test/run_diskless2.sh deleted file mode 100755 index 4bd2f8257f3..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/run_diskless2.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -set -e - -# Get the target OS and CPU -CPU=`uname -p` -OS=`uname` - -#Constants -FILE4=tst_diskless4.nc - -# Compute the file size for tst_diskless4 -SIZE=0 -case $CPU in -*_64*) SIZE=3000000000;; -*) SIZE=1000000000;; -esac - -# Create the reference ncdump output for tst_diskless4 -rm -fr tst_diskless4.cdl -echo "netcdf tst_diskless4 {" >>tst_diskless4.cdl -echo "dimensions:" >>tst_diskless4.cdl -echo " dim = 1000000000 ;" >>tst_diskless4.cdl -echo "variables:" >>tst_diskless4.cdl -echo " byte var0(dim) ;" >>tst_diskless4.cdl -if test $SIZE = 3000000000 ; then -echo " byte var1(dim) ;" >>tst_diskless4.cdl -echo " byte var2(dim) ;" >>tst_diskless4.cdl -fi -echo "}" >>tst_diskless4.cdl - -echo "" -rm -f $FILE4 -time ./tst_diskless4 $SIZE create -# Validate it -../ncdump/ncdump -h $FILE4 |diff -w - tst_diskless4.cdl - -echo "" -rm -f $FILE4 -time ./tst_diskless4 $SIZE creatediskless -# Validate it -../ncdump/ncdump -h $FILE4 |diff -w - tst_diskless4.cdl - -echo "" -time ./tst_diskless4 $SIZE open - -echo "" -time ./tst_diskless4 $SIZE opendiskless - -# cleanup -rm -f $FILE4 tst_diskless4.cdl - -exit diff --git a/contrib/netcdf/4.4.1.1/nc_test/run_mmap.sh b/contrib/netcdf/4.4.1.1/nc_test/run_mmap.sh deleted file mode 100755 index 07168116cba..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/run_mmap.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh - -set -e - -# Get the target OS and CPU -CPU=`uname -p` -OS=`uname` - - -#Constants -FILE1=tst_diskless.nc -FILE2=tst_diskless2.nc -FILE3=tst_diskless3.nc - -echo "" -echo "*** Testing in-memory (diskless) files with mmap" - -HASNC4=`../nc-config --has-nc4` - -echo "**** Test diskless+mmap netCDF classic file without persistence" -./tst_diskless mmap -echo "PASS: diskless+mmap netCDF classic file without persistence" - -echo "" -echo "**** Test diskless+mmap netCDF classic file with persistence" -rm -f $FILE1 -./tst_diskless mmap persist -if test -f $FILE1 ; then -echo "**** $FILE1 created" -# ../ncdump/ncdump $FILE1 -echo "PASS: diskless+mmap netCDF classic file with persistence" -else -echo "#### $FILE1 not created" -echo "FAIL: diskless+mmap netCDF classic file with persistence" -fi - -rm -f tmp1.cdl tmp2.cdl tmp1.nc tmp2.nc - -echo "" -echo "**** Testing nc_open in-memory (diskless+mmap) files" - -# clear old files -rm -f tst_diskless3_file.cdl tst_diskless3_memory.cdl - -echo "" -echo "**** Create and modify file without using diskless+mmap" -rm -f $FILE3 -./tst_diskless3 -../ncdump/ncdump $FILE3 >tst_diskless3_file.cdl - -echo "" -echo "**** Create and modify file using diskless+mmap" -rm -f $FILE3 -./tst_diskless3 diskless mmap -../ncdump/ncdump $FILE3 >tst_diskless3_memory.cdl - -# compare -diff tst_diskless3_file.cdl tst_diskless3_memory.cdl - -# cleanup -rm -f $FILE3 tst_diskless3_file.cdl tst_diskless3_memory.cdl - -exit diff --git a/contrib/netcdf/4.4.1.1/nc_test/run_pnetcdf_test.sh b/contrib/netcdf/4.4.1.1/nc_test/run_pnetcdf_test.sh deleted file mode 100755 index 096a30dd0d3..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/run_pnetcdf_test.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# This script runs some parallel-netcdf (pnetcdf) I/O tests - -set -e -echo -echo "Testing file created with pnetcdf is modifiable with netCDF..." -./tst_pnetcdf - -echo "Testing file created with pnetcdf works when adding variables..." -./tst_addvar tst_pnetcdf.nc - -set -x -# We assume a min of at least 2 processors is available -mpiexec -n 2 ./tst_parallel2 diff --git a/contrib/netcdf/4.4.1.1/nc_test/run_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/nc_test/run_valgrind_tests.sh deleted file mode 100755 index c172039195d..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/run_valgrind_tests.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -# $Id: run_valgrind_tests.sh,v 1.9 2010/01/26 20:24:18 ed Exp $ - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='t_nc tst_norm tst_names tst_misc nc_test' -# If we are running with netcdf4, then add tst_atts -if test "x$USE_NETCDF4" = "x1" ; then -list="$list tst_atts" -fi - -# These don't work yet: tst_fills tst_xplatform2 tst_interops6 tst_strings - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_get.c b/contrib/netcdf/4.4.1.1/nc_test/test_get.c deleted file mode 100644 index 5cb14faf53a..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_get.c +++ /dev/null @@ -1,9223 +0,0 @@ -/* Do not edit this file. It is produced from the corresponding .m4 source */ -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_get.m4 2785 2014-10-26 05:21:20Z wkliao $ - *********************************************************************/ - -#ifdef USE_PARALLEL -#include -#endif - - -#include "tests.h" - - -void -test_nc_get_var1_text(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - text value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_text(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_text(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_text(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_TEXT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_text(ncid, i, NULL, &value); - else - err = nc_get_var1_text(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_TEXT)) { - if (expect >= text_min && expect <= text_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_TEXT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_uchar(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - uchar value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_uchar(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_uchar(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_uchar(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_UCHAR ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_uchar(ncid, i, NULL, &value); - else - err = nc_get_var1_uchar(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_UCHAR)) { - if (expect >= uchar_min && expect <= uchar_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_UCHAR)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_schar(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - schar value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_schar(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_schar(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_schar(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_SCHAR ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_schar(ncid, i, NULL, &value); - else - err = nc_get_var1_schar(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_SCHAR)) { - if (expect >= schar_min && expect <= schar_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_SCHAR)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_short(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - short value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_short(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_short(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_short(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_SHORT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_short(ncid, i, NULL, &value); - else - err = nc_get_var1_short(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_SHORT)) { - if (expect >= short_min && expect <= short_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_SHORT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_int(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - int value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_int(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_int(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_int(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_INT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_int(ncid, i, NULL, &value); - else - err = nc_get_var1_int(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_INT)) { - if (expect >= int_min && expect <= int_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_INT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_long(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - long value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_long(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_long(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_long(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_LONG ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_long(ncid, i, NULL, &value); - else - err = nc_get_var1_long(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_LONG)) { - if (expect >= long_min && expect <= long_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_LONG)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_float(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - float value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_float(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_float(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_float(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_FLOAT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_float(ncid, i, NULL, &value); - else - err = nc_get_var1_float(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_FLOAT)) { - if (expect >= float_min && expect <= float_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_FLOAT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_double(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - double value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_double(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_double(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_double(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_DOUBLE ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_double(ncid, i, NULL, &value); - else - err = nc_get_var1_double(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_DOUBLE)) { - if (expect >= double_min && expect <= double_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_DOUBLE)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_ushort(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - ushort value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_ushort(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_ushort(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_ushort(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_USHORT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_ushort(ncid, i, NULL, &value); - else - err = nc_get_var1_ushort(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_USHORT)) { - if (expect >= ushort_min && expect <= ushort_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_USHORT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_uint(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - uint value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_uint(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_uint(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_uint(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_UINT ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_uint(ncid, i, NULL, &value); - else - err = nc_get_var1_uint(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_UINT)) { - if (expect >= uint_min && expect <= uint_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_UINT)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_longlong(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - longlong value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_longlong(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_longlong(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_longlong(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_LONGLONG ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_longlong(ncid, i, NULL, &value); - else - err = nc_get_var1_longlong(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_LONGLONG)) { - if (expect >= longlong_min && expect <= longlong_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_LONGLONG)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var1_ulonglong(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - ulonglong value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_ulonglong(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_ulonglong(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_ulonglong(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_ULONGLONG ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_ulonglong(ncid, i, NULL, &value); - else - err = nc_get_var1_ulonglong(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_ULONGLONG)) { - if (expect >= ulonglong_min && expect <= ulonglong_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_ULONGLONG)) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -void -test_nc_get_var_text(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - text value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_text(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_text(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_TEXT); - if (inRange3(expect[j],var_type[i], NCT_TEXT)) { - allInIntRange = allInIntRange && expect[j] >= text_min - && expect[j] <= text_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_text(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_TEXT) - && expect[j] >= text_min && expect[j] <= text_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_TEXT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_uchar(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uchar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_uchar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_uchar(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UCHAR); - if (inRange3(expect[j],var_type[i], NCT_UCHAR)) { - allInIntRange = allInIntRange && expect[j] >= uchar_min - && expect[j] <= uchar_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_uchar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UCHAR) - && expect[j] >= uchar_min && expect[j] <= uchar_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_UCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_schar(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - schar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_schar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_schar(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SCHAR); - if (inRange3(expect[j],var_type[i], NCT_SCHAR)) { - allInIntRange = allInIntRange && expect[j] >= schar_min - && expect[j] <= schar_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_schar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SCHAR) - && expect[j] >= schar_min && expect[j] <= schar_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_SCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_short(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - short value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_short(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_short(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SHORT); - if (inRange3(expect[j],var_type[i], NCT_SHORT)) { - allInIntRange = allInIntRange && expect[j] >= short_min - && expect[j] <= short_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_short(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SHORT) - && expect[j] >= short_min && expect[j] <= short_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_SHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_int(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_int(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_int(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_INT); - if (inRange3(expect[j],var_type[i], NCT_INT)) { - allInIntRange = allInIntRange && expect[j] >= int_min - && expect[j] <= int_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_int(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_INT) - && expect[j] >= int_min && expect[j] <= int_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_INT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_long(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - long value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_long(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_long(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONG); - if (inRange3(expect[j],var_type[i], NCT_LONG)) { - allInIntRange = allInIntRange && expect[j] >= long_min - && expect[j] <= long_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_long(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONG) - && expect[j] >= long_min && expect[j] <= long_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_LONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_float(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - float value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_float(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_float(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_FLOAT); - if (inRange3(expect[j],var_type[i], NCT_FLOAT)) { - allInIntRange = allInIntRange && expect[j] >= float_min - && expect[j] <= float_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_float(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_FLOAT) - && expect[j] >= float_min && expect[j] <= float_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_FLOAT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_double(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - double value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_double(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_double(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_DOUBLE); - if (inRange3(expect[j],var_type[i], NCT_DOUBLE)) { - allInIntRange = allInIntRange && expect[j] >= double_min - && expect[j] <= double_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_double(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_DOUBLE) - && expect[j] >= double_min && expect[j] <= double_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_DOUBLE)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_ushort(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ushort value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_ushort(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_ushort(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_USHORT); - if (inRange3(expect[j],var_type[i], NCT_USHORT)) { - allInIntRange = allInIntRange && expect[j] >= ushort_min - && expect[j] <= ushort_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_ushort(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_USHORT) - && expect[j] >= ushort_min && expect[j] <= ushort_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_USHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_uint(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uint value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_uint(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_uint(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UINT); - if (inRange3(expect[j],var_type[i], NCT_UINT)) { - allInIntRange = allInIntRange && expect[j] >= uint_min - && expect[j] <= uint_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_uint(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UINT) - && expect[j] >= uint_min && expect[j] <= uint_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_UINT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_longlong(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - longlong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_longlong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_longlong(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONGLONG); - if (inRange3(expect[j],var_type[i], NCT_LONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= longlong_min - && expect[j] <= longlong_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_longlong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONGLONG) - && expect[j] >= longlong_min && expect[j] <= longlong_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_LONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_var_ulonglong(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ulonglong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_ulonglong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_ulonglong(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_ULONGLONG); - if (inRange3(expect[j],var_type[i], NCT_ULONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= ulonglong_min - && expect[j] <= ulonglong_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_ulonglong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG) - && expect[j] >= ulonglong_min && expect[j] <= ulonglong_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_ULONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -void -test_nc_get_vara_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - text value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_text(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_text(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_text(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_text(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_text(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_text(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_text(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_TEXT); - if (inRange3(expect[j],var_type[i], NCT_TEXT)) { - allInIntRange = allInIntRange && expect[j] >= text_min - && expect[j] <= text_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_text(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_text(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_TEXT) - && expect[j] >= text_min && expect[j] <= text_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_TEXT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uchar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_uchar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_uchar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_uchar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_uchar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_uchar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_uchar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_uchar(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UCHAR); - if (inRange3(expect[j],var_type[i], NCT_UCHAR)) { - allInIntRange = allInIntRange && expect[j] >= uchar_min - && expect[j] <= uchar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_uchar(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_uchar(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UCHAR) - && expect[j] >= uchar_min && expect[j] <= uchar_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_UCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - schar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_schar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_schar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_schar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_schar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_schar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_schar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_schar(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SCHAR); - if (inRange3(expect[j],var_type[i], NCT_SCHAR)) { - allInIntRange = allInIntRange && expect[j] >= schar_min - && expect[j] <= schar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_schar(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_schar(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SCHAR) - && expect[j] >= schar_min && expect[j] <= schar_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_SCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - short value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_short(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_short(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_short(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_short(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_short(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_short(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_short(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SHORT); - if (inRange3(expect[j],var_type[i], NCT_SHORT)) { - allInIntRange = allInIntRange && expect[j] >= short_min - && expect[j] <= short_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_short(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_short(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SHORT) - && expect[j] >= short_min && expect[j] <= short_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_SHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_int(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_int(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_int(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_int(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_int(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_int(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_int(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_INT); - if (inRange3(expect[j],var_type[i], NCT_INT)) { - allInIntRange = allInIntRange && expect[j] >= int_min - && expect[j] <= int_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_int(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_int(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_INT) - && expect[j] >= int_min && expect[j] <= int_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_INT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - long value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_long(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_long(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_long(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_long(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_long(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_long(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_long(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONG); - if (inRange3(expect[j],var_type[i], NCT_LONG)) { - allInIntRange = allInIntRange && expect[j] >= long_min - && expect[j] <= long_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_long(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_long(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONG) - && expect[j] >= long_min && expect[j] <= long_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_LONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - float value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_float(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_float(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_float(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_float(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_float(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_float(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_float(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_FLOAT); - if (inRange3(expect[j],var_type[i], NCT_FLOAT)) { - allInIntRange = allInIntRange && expect[j] >= float_min - && expect[j] <= float_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_float(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_float(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_FLOAT) - && expect[j] >= float_min && expect[j] <= float_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_FLOAT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - double value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_double(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_double(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_double(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_double(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_double(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_double(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_double(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_DOUBLE); - if (inRange3(expect[j],var_type[i], NCT_DOUBLE)) { - allInIntRange = allInIntRange && expect[j] >= double_min - && expect[j] <= double_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_double(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_double(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_DOUBLE) - && expect[j] >= double_min && expect[j] <= double_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_DOUBLE)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ushort value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_ushort(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_ushort(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_ushort(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_ushort(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_ushort(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_ushort(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_ushort(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_USHORT); - if (inRange3(expect[j],var_type[i], NCT_USHORT)) { - allInIntRange = allInIntRange && expect[j] >= ushort_min - && expect[j] <= ushort_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_ushort(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_ushort(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_USHORT) - && expect[j] >= ushort_min && expect[j] <= ushort_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_USHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uint value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_uint(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_uint(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_uint(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_uint(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_uint(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_uint(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_uint(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UINT); - if (inRange3(expect[j],var_type[i], NCT_UINT)) { - allInIntRange = allInIntRange && expect[j] >= uint_min - && expect[j] <= uint_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_uint(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_uint(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UINT) - && expect[j] >= uint_min && expect[j] <= uint_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_UINT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - longlong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_longlong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_longlong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_longlong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_longlong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_longlong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_longlong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_longlong(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONGLONG); - if (inRange3(expect[j],var_type[i], NCT_LONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= longlong_min - && expect[j] <= longlong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_longlong(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_longlong(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONGLONG) - && expect[j] >= longlong_min && expect[j] <= longlong_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_LONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vara_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ulonglong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_ulonglong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_ulonglong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_ulonglong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_ulonglong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_ulonglong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_ulonglong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_ulonglong(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_ULONGLONG); - if (inRange3(expect[j],var_type[i], NCT_ULONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= ulonglong_min - && expect[j] <= ulonglong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_ulonglong(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_ulonglong(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG) - && expect[j] >= ulonglong_min && expect[j] <= ulonglong_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_ULONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -void -test_nc_get_vars_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - text value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_text(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_text(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_text(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_text(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_text(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_TEXT); - if (inRange3(expect[j],var_type[i],NCT_TEXT)) { - allInIntRange = allInIntRange && expect[j] >= text_min - && expect[j] <= text_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_text(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_text(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_TEXT) - && expect[j] >= text_min && expect[j] <= text_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_TEXT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uchar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_uchar(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_uchar(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_uchar(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_uchar(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_uchar(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_UCHAR); - if (inRange3(expect[j],var_type[i],NCT_UCHAR)) { - allInIntRange = allInIntRange && expect[j] >= uchar_min - && expect[j] <= uchar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_uchar(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_uchar(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UCHAR) - && expect[j] >= uchar_min && expect[j] <= uchar_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_UCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - schar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_schar(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_schar(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_schar(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_schar(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_schar(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_SCHAR); - if (inRange3(expect[j],var_type[i],NCT_SCHAR)) { - allInIntRange = allInIntRange && expect[j] >= schar_min - && expect[j] <= schar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_schar(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_schar(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SCHAR) - && expect[j] >= schar_min && expect[j] <= schar_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_SCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - short value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_short(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_short(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_short(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_short(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_short(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_SHORT); - if (inRange3(expect[j],var_type[i],NCT_SHORT)) { - allInIntRange = allInIntRange && expect[j] >= short_min - && expect[j] <= short_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_short(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_short(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SHORT) - && expect[j] >= short_min && expect[j] <= short_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_SHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_int(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_int(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_int(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_int(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_int(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_INT); - if (inRange3(expect[j],var_type[i],NCT_INT)) { - allInIntRange = allInIntRange && expect[j] >= int_min - && expect[j] <= int_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_int(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_int(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_INT) - && expect[j] >= int_min && expect[j] <= int_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_INT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - long value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_long(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_long(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_long(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_long(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_long(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_LONG); - if (inRange3(expect[j],var_type[i],NCT_LONG)) { - allInIntRange = allInIntRange && expect[j] >= long_min - && expect[j] <= long_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_long(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_long(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONG) - && expect[j] >= long_min && expect[j] <= long_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_LONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - float value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_float(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_float(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_float(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_float(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_float(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_FLOAT); - if (inRange3(expect[j],var_type[i],NCT_FLOAT)) { - allInIntRange = allInIntRange && expect[j] >= float_min - && expect[j] <= float_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_float(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_float(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_FLOAT) - && expect[j] >= float_min && expect[j] <= float_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_FLOAT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - double value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_double(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_double(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_double(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_double(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_double(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_DOUBLE); - if (inRange3(expect[j],var_type[i],NCT_DOUBLE)) { - allInIntRange = allInIntRange && expect[j] >= double_min - && expect[j] <= double_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_double(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_double(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_DOUBLE) - && expect[j] >= double_min && expect[j] <= double_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_DOUBLE)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ushort value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_ushort(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_ushort(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_ushort(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_ushort(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_ushort(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_USHORT); - if (inRange3(expect[j],var_type[i],NCT_USHORT)) { - allInIntRange = allInIntRange && expect[j] >= ushort_min - && expect[j] <= ushort_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_ushort(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_ushort(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_USHORT) - && expect[j] >= ushort_min && expect[j] <= ushort_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_USHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uint value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_uint(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_uint(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_uint(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_uint(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_uint(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_UINT); - if (inRange3(expect[j],var_type[i],NCT_UINT)) { - allInIntRange = allInIntRange && expect[j] >= uint_min - && expect[j] <= uint_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_uint(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_uint(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UINT) - && expect[j] >= uint_min && expect[j] <= uint_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_UINT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - longlong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_longlong(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_longlong(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_longlong(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_longlong(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_longlong(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_LONGLONG); - if (inRange3(expect[j],var_type[i],NCT_LONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= longlong_min - && expect[j] <= longlong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_longlong(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_longlong(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONGLONG) - && expect[j] >= longlong_min && expect[j] <= longlong_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_LONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_vars_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ulonglong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_ulonglong(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_ulonglong(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_ulonglong(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_ulonglong(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_ulonglong(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_ULONGLONG); - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= ulonglong_min - && expect[j] <= ulonglong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_ulonglong(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_ulonglong(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG) - && expect[j] >= ulonglong_min && expect[j] <= ulonglong_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_ULONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -void -test_nc_get_varm_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - text value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_text(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_text(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_TEXT); - if (inRange3(expect[j],var_type[i],NCT_TEXT)) { - allInIntRange = allInIntRange && expect[j] >= text_min - && expect[j] <= text_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_text(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_text(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_TEXT) - && expect[j] >= text_min - && expect[j] <= text_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_TEXT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uchar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_uchar(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_uchar(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_UCHAR); - if (inRange3(expect[j],var_type[i],NCT_UCHAR)) { - allInIntRange = allInIntRange && expect[j] >= uchar_min - && expect[j] <= uchar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_uchar(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_uchar(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UCHAR) - && expect[j] >= uchar_min - && expect[j] <= uchar_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_UCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - schar value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_schar(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_schar(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_SCHAR); - if (inRange3(expect[j],var_type[i],NCT_SCHAR)) { - allInIntRange = allInIntRange && expect[j] >= schar_min - && expect[j] <= schar_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_schar(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_schar(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SCHAR) - && expect[j] >= schar_min - && expect[j] <= schar_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_SCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - short value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_short(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_short(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_SHORT); - if (inRange3(expect[j],var_type[i],NCT_SHORT)) { - allInIntRange = allInIntRange && expect[j] >= short_min - && expect[j] <= short_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_short(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_short(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_SHORT) - && expect[j] >= short_min - && expect[j] <= short_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_SHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_int(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_int(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_INT); - if (inRange3(expect[j],var_type[i],NCT_INT)) { - allInIntRange = allInIntRange && expect[j] >= int_min - && expect[j] <= int_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_int(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_int(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_INT) - && expect[j] >= int_min - && expect[j] <= int_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_INT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - long value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_long(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_long(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_LONG); - if (inRange3(expect[j],var_type[i],NCT_LONG)) { - allInIntRange = allInIntRange && expect[j] >= long_min - && expect[j] <= long_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_long(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_long(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONG) - && expect[j] >= long_min - && expect[j] <= long_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_LONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - float value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_float(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_float(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_FLOAT); - if (inRange3(expect[j],var_type[i],NCT_FLOAT)) { - allInIntRange = allInIntRange && expect[j] >= float_min - && expect[j] <= float_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_float(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_float(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_FLOAT) - && expect[j] >= float_min - && expect[j] <= float_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_FLOAT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - double value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_double(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_double(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_DOUBLE); - if (inRange3(expect[j],var_type[i],NCT_DOUBLE)) { - allInIntRange = allInIntRange && expect[j] >= double_min - && expect[j] <= double_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_double(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_double(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_DOUBLE) - && expect[j] >= double_min - && expect[j] <= double_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_DOUBLE)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ushort value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_ushort(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_ushort(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_ushort(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_ushort(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_ushort(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_USHORT); - if (inRange3(expect[j],var_type[i],NCT_USHORT)) { - allInIntRange = allInIntRange && expect[j] >= ushort_min - && expect[j] <= ushort_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_ushort(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_ushort(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_USHORT) - && expect[j] >= ushort_min - && expect[j] <= ushort_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_USHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uint value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_uint(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_uint(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_uint(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_uint(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_uint(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_UINT); - if (inRange3(expect[j],var_type[i],NCT_UINT)) { - allInIntRange = allInIntRange && expect[j] >= uint_min - && expect[j] <= uint_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_uint(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_uint(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_UINT) - && expect[j] >= uint_min - && expect[j] <= uint_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_UINT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - longlong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_longlong(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_longlong(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_longlong(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_longlong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_longlong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_LONGLONG); - if (inRange3(expect[j],var_type[i],NCT_LONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= longlong_min - && expect[j] <= longlong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_longlong(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_longlong(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_LONGLONG) - && expect[j] >= longlong_min - && expect[j] <= longlong_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_LONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_varm_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ulonglong value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_ulonglong(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_ulonglong(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_ULONGLONG); - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG)) { - allInIntRange = allInIntRange && expect[j] >= ulonglong_min - && expect[j] <= ulonglong_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_ulonglong(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_ulonglong(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ULONGLONG) - && expect[j] >= ulonglong_min - && expect[j] <= ulonglong_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_ULONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -void -test_nc_get_att_text(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - text value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - err = nc_get_att_text(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_text(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_text(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_TEXT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_TEXT)) { - allInIntRange = allInIntRange && expect[k] >= text_min - && expect[k] <= text_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_text(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_TEXT) - && expect[k] >= text_min && expect[k] <= text_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_TEXT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_uchar(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - uchar value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - err = nc_get_att_uchar(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_uchar(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_uchar(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_UCHAR); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UCHAR)) { - allInIntRange = allInIntRange && expect[k] >= uchar_min - && expect[k] <= uchar_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_uchar(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UCHAR) - && expect[k] >= uchar_min && expect[k] <= uchar_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_UCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_schar(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - schar value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - err = nc_get_att_schar(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_schar(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_schar(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_SCHAR); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SCHAR)) { - allInIntRange = allInIntRange && expect[k] >= schar_min - && expect[k] <= schar_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_schar(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SCHAR) - && expect[k] >= schar_min && expect[k] <= schar_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_SCHAR)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_short(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - short value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - err = nc_get_att_short(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_short(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_short(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_SHORT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SHORT)) { - allInIntRange = allInIntRange && expect[k] >= short_min - && expect[k] <= short_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_short(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SHORT) - && expect[k] >= short_min && expect[k] <= short_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_SHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_int(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - int value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_INT == NCT_TEXT); - err = nc_get_att_int(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_int(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_int(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_INT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_INT)) { - allInIntRange = allInIntRange && expect[k] >= int_min - && expect[k] <= int_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_int(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_INT) - && expect[k] >= int_min && expect[k] <= int_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_INT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_long(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - long value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONG == NCT_TEXT); - err = nc_get_att_long(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_long(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_long(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_LONG); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONG)) { - allInIntRange = allInIntRange && expect[k] >= long_min - && expect[k] <= long_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_long(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONG) - && expect[k] >= long_min && expect[k] <= long_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_LONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_float(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - float value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - err = nc_get_att_float(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_float(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_float(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_FLOAT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_FLOAT)) { - allInIntRange = allInIntRange && expect[k] >= float_min - && expect[k] <= float_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_float(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_FLOAT) - && expect[k] >= float_min && expect[k] <= float_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_FLOAT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_double(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - double value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - err = nc_get_att_double(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_double(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_double(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_DOUBLE); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_DOUBLE)) { - allInIntRange = allInIntRange && expect[k] >= double_min - && expect[k] <= double_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_double(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_DOUBLE) - && expect[k] >= double_min && expect[k] <= double_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_DOUBLE)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_ushort(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - ushort value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - err = nc_get_att_ushort(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_ushort(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_ushort(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_USHORT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_USHORT)) { - allInIntRange = allInIntRange && expect[k] >= ushort_min - && expect[k] <= ushort_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_ushort(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_USHORT) - && expect[k] >= ushort_min && expect[k] <= ushort_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_USHORT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_uint(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - uint value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UINT == NCT_TEXT); - err = nc_get_att_uint(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_uint(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_uint(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_UINT); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UINT)) { - allInIntRange = allInIntRange && expect[k] >= uint_min - && expect[k] <= uint_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_uint(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UINT) - && expect[k] >= uint_min && expect[k] <= uint_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_UINT)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_longlong(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - longlong value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - err = nc_get_att_longlong(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_longlong(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_longlong(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_LONGLONG); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONGLONG)) { - allInIntRange = allInIntRange && expect[k] >= longlong_min - && expect[k] <= longlong_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_longlong(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONGLONG) - && expect[k] >= longlong_min && expect[k] <= longlong_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_LONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -void -test_nc_get_att_ulonglong(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - ulonglong value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - err = nc_get_att_ulonglong(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_ulonglong(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_ulonglong(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_ULONGLONG); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_ULONGLONG)) { - allInIntRange = allInIntRange && expect[k] >= ulonglong_min - && expect[k] <= ulonglong_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_ulonglong(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_ULONGLONG) - && expect[k] >= ulonglong_min && expect[k] <= ulonglong_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_ULONGLONG)){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_get.m4 b/contrib/netcdf/4.4.1.1/nc_test/test_get.m4 deleted file mode 100644 index 5b792be125d..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_get.m4 +++ /dev/null @@ -1,916 +0,0 @@ -dnl This is m4 source. -dnl Process using m4 to produce 'C' language file. -dnl -dnl If you see this line, you can ignore the next one. -/* Do not edit this file. It is produced from the corresponding .m4 source */ -dnl -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_get.m4 2785 2014-10-26 05:21:20Z wkliao $ - *********************************************************************/ - -#ifdef USE_PARALLEL -#include -#endif - -undefine(`index')dnl -dnl dnl dnl -dnl -dnl Macros -dnl -dnl dnl dnl -dnl -dnl Upcase(str) -dnl -define(`Upcase',dnl -`dnl -translit($1, abcdefghijklmnopqrstuvwxyz, ABCDEFGHIJKLMNOPQRSTUVWXYZ)')dnl -dnl dnl dnl -dnl -dnl NCT_ITYPE(type) -dnl -define(`NCT_ITYPE', ``NCT_'Upcase($1)')dnl -dnl - -#include "tests.h" - -dnl TEST_NC_GET_VAR1(TYPE) -dnl -define(`TEST_NC_GET_VAR1',dnl -`dnl -void -test_nc_get_var1_$1(void) -{ - int ncid; - int i; - int j; - int err; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - double expect; - int canConvert; /* Both text or both numeric */ - $1 value; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_get_var1_$1(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var1_$1(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - index[j] = var_shape[i][j]; - err = nc_get_var1_$1(ncid, i, index, &value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect = hash4( var_type[i], var_rank[i], index, NCT_ITYPE($1) ); - if (var_rank[i] == 0 && i%2 ) - err = nc_get_var1_$1(ncid, i, NULL, &value); - else - err = nc_get_var1_$1(ncid, i, index, &value); - if (canConvert) { - if (inRange3(expect,var_type[i], NCT_ITYPE($1))) { - if (expect >= $1_min && expect <= $1_max) { - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_ITYPE($1))) { - error("expected: %G, got: %G", expect, - (double) value); - } else { - nok++; - } - } - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_VAR1(text) -TEST_NC_GET_VAR1(uchar) -TEST_NC_GET_VAR1(schar) -TEST_NC_GET_VAR1(short) -TEST_NC_GET_VAR1(int) -TEST_NC_GET_VAR1(long) -TEST_NC_GET_VAR1(float) -TEST_NC_GET_VAR1(double) -TEST_NC_GET_VAR1(ushort) -TEST_NC_GET_VAR1(uint) -TEST_NC_GET_VAR1(longlong) -TEST_NC_GET_VAR1(ulonglong) - - -dnl TEST_NC_GET_VAR(TYPE) -dnl -define(`TEST_NC_GET_VAR',dnl -`dnl -void -test_nc_get_var_$1(void) -{ - int ncid; - int i; - int j; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nok = 0; /* count of valid comparisons */ - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - $1 value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_get_var_$1(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_var_$1(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_ITYPE($1)); - if (inRange3(expect[j],var_type[i], NCT_ITYPE($1))) { - allInIntRange = allInIntRange && expect[j] >= $1_min - && expect[j] <= $1_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_var_$1(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1)) - && expect[j] >= $1_min && expect[j] <= $1_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_ITYPE($1))){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_VAR(text) -TEST_NC_GET_VAR(uchar) -TEST_NC_GET_VAR(schar) -TEST_NC_GET_VAR(short) -TEST_NC_GET_VAR(int) -TEST_NC_GET_VAR(long) -TEST_NC_GET_VAR(float) -TEST_NC_GET_VAR(double) -TEST_NC_GET_VAR(ushort) -TEST_NC_GET_VAR(uint) -TEST_NC_GET_VAR(longlong) -TEST_NC_GET_VAR(ulonglong) - - -dnl TEST_NC_GET_VARA(TYPE) -dnl -define(`TEST_NC_GET_VARA',dnl -`dnl -void -test_nc_get_vara_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - $1 value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_get_vara_$1(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_$1(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vara_$1(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vara_$1(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - /* Check non-scalars for correct error returned even when */ - /* there is nothing to get (edge[j]==0) */ - if(var_rank[i] > 0) { - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 0; - } - err = nc_get_vara_$1(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vara_$1(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_vara_$1(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - } /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect[j] = hash4(var_type[i], var_rank[i], index, NCT_ITYPE($1)); - if (inRange3(expect[j],var_type[i], NCT_ITYPE($1))) { - allInIntRange = allInIntRange && expect[j] >= $1_min - && expect[j] <= $1_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2) - err = nc_get_vara_$1(ncid, i, NULL, NULL, value); - else - err = nc_get_vara_$1(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1)) - && expect[j] >= $1_min && expect[j] <= $1_max) { - IF (!equal(value[j],expect[j],var_type[i],NCT_ITYPE($1))){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_VARA(text) -TEST_NC_GET_VARA(uchar) -TEST_NC_GET_VARA(schar) -TEST_NC_GET_VARA(short) -TEST_NC_GET_VARA(int) -TEST_NC_GET_VARA(long) -TEST_NC_GET_VARA(float) -TEST_NC_GET_VARA(double) -TEST_NC_GET_VARA(ushort) -TEST_NC_GET_VARA(uint) -TEST_NC_GET_VARA(longlong) -TEST_NC_GET_VARA(ulonglong) - - -dnl TEST_NC_GET_VARS(TYPE) -dnl -define(`TEST_NC_GET_VARS',dnl -`dnl -void -test_nc_get_vars_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - $1 value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars_$1(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars_$1(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars_$1(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars_$1(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars_$1(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_ITYPE($1)); - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1))) { - allInIntRange = allInIntRange && expect[j] >= $1_min - && expect[j] <= $1_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars_$1(ncid, i, NULL, NULL, NULL, value); - else - err = nc_get_vars_$1(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1)) - && expect[j] >= $1_min && expect[j] <= $1_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_ITYPE($1))){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_VARS(text) -TEST_NC_GET_VARS(uchar) -TEST_NC_GET_VARS(schar) -TEST_NC_GET_VARS(short) -TEST_NC_GET_VARS(int) -TEST_NC_GET_VARS(long) -TEST_NC_GET_VARS(float) -TEST_NC_GET_VARS(double) -TEST_NC_GET_VARS(ushort) -TEST_NC_GET_VARS(uint) -TEST_NC_GET_VARS(longlong) -TEST_NC_GET_VARS(ulonglong) - - -dnl TEST_NC_GET_VARM(TYPE) -dnl -define(`TEST_NC_GET_VARM',dnl -`dnl -void -test_nc_get_varm_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int allInExtRange; /* all values within external range? */ - int allInIntRange; /* all values within internal range? */ - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - $1 value[MAX_NELS]; - double expect[MAX_NELS]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_get_varm_$1(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm_$1(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm_$1(ncid, i, start, edge, stride, imap, value); - if(!canConvert) { - IF (err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm_$1(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm_$1(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - allInExtRange = allInIntRange = 1; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect[j] = hash4(var_type[i], var_rank[i], index2, - NCT_ITYPE($1)); - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1))) { - allInIntRange = allInIntRange && expect[j] >= $1_min - && expect[j] <= $1_max; - } else { - allInExtRange = 0; - } - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_varm_$1(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_get_varm_$1(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (j = 0; j < nels; j++) { - if (inRange3(expect[j],var_type[i],NCT_ITYPE($1)) - && expect[j] >= $1_min - && expect[j] <= $1_max) { - IF (!equal(value[j],expect[j],var_type[i], NCT_ITYPE($1))){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect[j]); - error("got: %g", (double) value[j]); - } - } else { - nok++; - } - } - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_VARM(text) -TEST_NC_GET_VARM(uchar) -TEST_NC_GET_VARM(schar) -TEST_NC_GET_VARM(short) -TEST_NC_GET_VARM(int) -TEST_NC_GET_VARM(long) -TEST_NC_GET_VARM(float) -TEST_NC_GET_VARM(double) -TEST_NC_GET_VARM(ushort) -TEST_NC_GET_VARM(uint) -TEST_NC_GET_VARM(longlong) -TEST_NC_GET_VARM(ulonglong) - - -dnl TEST_NC_GET_ATT(TYPE) -dnl -define(`TEST_NC_GET_ATT',dnl -`dnl -void -test_nc_get_att_$1(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int allInExtRange; - int allInIntRange; - int canConvert; /* Both text or both numeric */ - $1 value[MAX_NELS]; - double expect[MAX_NELS]; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - err = nc_get_att_$1(BAD_ID, i, ATT_NAME(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att_$1(ncid, BAD_VARID, ATT_NAME(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att_$1(ncid, i, "noSuch", value); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - allInExtRange = allInIntRange = 1; - for (k = 0; k < ATT_LEN(i,j); k++) { - expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_ITYPE($1)); - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_ITYPE($1))) { - allInIntRange = allInIntRange && expect[k] >= $1_min - && expect[k] <= $1_max; - } else { - allInExtRange = 0; - } - } - err = nc_get_att_$1(ncid, i, ATT_NAME(i,j), value); - if (canConvert || ATT_LEN(i,j) == 0) { - if (allInExtRange) { - if (allInIntRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("Range error: status = %d", err); - } - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < ATT_LEN(i,j); k++) { - if (inRange3(expect[k],ATT_TYPE(i,j),NCT_ITYPE($1)) - && expect[k] >= $1_min && expect[k] <= $1_max) { - IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_ITYPE($1))){ - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -TEST_NC_GET_ATT(text) -TEST_NC_GET_ATT(uchar) -TEST_NC_GET_ATT(schar) -TEST_NC_GET_ATT(short) -TEST_NC_GET_ATT(int) -TEST_NC_GET_ATT(long) -TEST_NC_GET_ATT(float) -TEST_NC_GET_ATT(double) -TEST_NC_GET_ATT(ushort) -TEST_NC_GET_ATT(uint) -TEST_NC_GET_ATT(longlong) -TEST_NC_GET_ATT(ulonglong) - diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_put.c b/contrib/netcdf/4.4.1.1/nc_test/test_put.c deleted file mode 100644 index a55118fc909..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_put.c +++ /dev/null @@ -1,11714 +0,0 @@ -/* Do not edit this file. It is produced from the corresponding .m4 source */ -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_put.m4 2785 2014-10-26 05:21:20Z wkliao $ - *********************************************************************/ - -#ifdef USE_PARALLEL -#include -#endif - - -#include "tests.h" - - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_text( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = text_min; - const double max = text_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_uchar( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = uchar_min; - const double max = uchar_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_schar( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = schar_min; - const double max = schar_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_short( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = short_min; - const double max = short_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_int( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = int_min; - const double max = int_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_long( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = long_min; - const double max = long_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_float( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = float_min; - const double max = float_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_double( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = double_min; - const double max = double_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_ushort( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = ushort_min; - const double max = ushort_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_uint( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = uint_min; - const double max = uint_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_longlong( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = longlong_min; - const double max = longlong_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_ulonglong( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = ulonglong_min; - const double max = ulonglong_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} - - - - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_text(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - text value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_TEXT); - err = nc_get_var1_text(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_TEXT)) { - if (expect >= text_min && expect <= text_max) { - IF (err) { - error("nc_get_var1_text: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_TEXT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_uchar(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - uchar value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_UCHAR); - err = nc_get_var1_uchar(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_UCHAR)) { - if (expect >= uchar_min && expect <= uchar_max) { - IF (err) { - error("nc_get_var1_uchar: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_UCHAR)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_schar(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - schar value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_SCHAR); - err = nc_get_var1_schar(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_SCHAR)) { - if (expect >= schar_min && expect <= schar_max) { - IF (err) { - error("nc_get_var1_schar: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_SCHAR)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_short(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - short value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_SHORT); - err = nc_get_var1_short(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_SHORT)) { - if (expect >= short_min && expect <= short_max) { - IF (err) { - error("nc_get_var1_short: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_SHORT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_int(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - int value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_INT); - err = nc_get_var1_int(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_INT)) { - if (expect >= int_min && expect <= int_max) { - IF (err) { - error("nc_get_var1_int: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_INT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_long(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - long value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_LONG); - err = nc_get_var1_long(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_LONG)) { - if (expect >= long_min && expect <= long_max) { - IF (err) { - error("nc_get_var1_long: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_LONG)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_float(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - float value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_FLOAT); - err = nc_get_var1_float(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_FLOAT)) { - if (expect >= float_min && expect <= float_max) { - IF (err) { - error("nc_get_var1_float: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_FLOAT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_double(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - double value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_DOUBLE); - err = nc_get_var1_double(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_DOUBLE)) { - if (expect >= double_min && expect <= double_max) { - IF (err) { - error("nc_get_var1_double: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_DOUBLE)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_ushort(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - ushort value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_USHORT); - err = nc_get_var1_ushort(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_USHORT)) { - if (expect >= ushort_min && expect <= ushort_max) { - IF (err) { - error("nc_get_var1_ushort: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_USHORT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_uint(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - uint value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_UINT); - err = nc_get_var1_uint(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_UINT)) { - if (expect >= uint_min && expect <= uint_max) { - IF (err) { - error("nc_get_var1_uint: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_UINT)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_longlong(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - longlong value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_LONGLONG); - err = nc_get_var1_longlong(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_LONGLONG)) { - if (expect >= longlong_min && expect <= longlong_max) { - IF (err) { - error("nc_get_var1_longlong: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_LONGLONG)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_ulonglong(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - ulonglong value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_ULONGLONG); - err = nc_get_var1_ulonglong(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_ULONGLONG)) { - if (expect >= ulonglong_min && expect <= ulonglong_max) { - IF (err) { - error("nc_get_var1_ulonglong: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_ULONGLONG)) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - - - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_text(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - text value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_TEXT); - if (inRange3(expect[k], datatype, NCT_TEXT)) { - ++nInExtRange; - if (expect[k] >= text_min && expect[k] <= text_max) - ++nInIntRange; - } - } - err = nc_get_att_text(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_TEXT) - && expect[k] >= text_min && expect[k] <= text_max) { - IF (!equal(value[k],expect[k],datatype,NCT_TEXT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_uchar(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - uchar value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_UCHAR); - if (inRange3(expect[k], datatype, NCT_UCHAR)) { - ++nInExtRange; - if (expect[k] >= uchar_min && expect[k] <= uchar_max) - ++nInIntRange; - } - } - err = nc_get_att_uchar(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_UCHAR) - && expect[k] >= uchar_min && expect[k] <= uchar_max) { - IF (!equal(value[k],expect[k],datatype,NCT_UCHAR)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_schar(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - schar value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_SCHAR); - if (inRange3(expect[k], datatype, NCT_SCHAR)) { - ++nInExtRange; - if (expect[k] >= schar_min && expect[k] <= schar_max) - ++nInIntRange; - } - } - err = nc_get_att_schar(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_SCHAR) - && expect[k] >= schar_min && expect[k] <= schar_max) { - IF (!equal(value[k],expect[k],datatype,NCT_SCHAR)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_short(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - short value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_SHORT); - if (inRange3(expect[k], datatype, NCT_SHORT)) { - ++nInExtRange; - if (expect[k] >= short_min && expect[k] <= short_max) - ++nInIntRange; - } - } - err = nc_get_att_short(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_SHORT) - && expect[k] >= short_min && expect[k] <= short_max) { - IF (!equal(value[k],expect[k],datatype,NCT_SHORT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_int(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - int value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_INT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_INT); - if (inRange3(expect[k], datatype, NCT_INT)) { - ++nInExtRange; - if (expect[k] >= int_min && expect[k] <= int_max) - ++nInIntRange; - } - } - err = nc_get_att_int(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_INT) - && expect[k] >= int_min && expect[k] <= int_max) { - IF (!equal(value[k],expect[k],datatype,NCT_INT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_long(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - long value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_LONG); - if (inRange3(expect[k], datatype, NCT_LONG)) { - ++nInExtRange; - if (expect[k] >= long_min && expect[k] <= long_max) - ++nInIntRange; - } - } - err = nc_get_att_long(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_LONG) - && expect[k] >= long_min && expect[k] <= long_max) { - IF (!equal(value[k],expect[k],datatype,NCT_LONG)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_float(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - float value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_FLOAT); - if (inRange3(expect[k], datatype, NCT_FLOAT)) { - ++nInExtRange; - if (expect[k] >= float_min && expect[k] <= float_max) - ++nInIntRange; - } - } - err = nc_get_att_float(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_FLOAT) - && expect[k] >= float_min && expect[k] <= float_max) { - IF (!equal(value[k],expect[k],datatype,NCT_FLOAT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_double(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - double value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_DOUBLE); - if (inRange3(expect[k], datatype, NCT_DOUBLE)) { - ++nInExtRange; - if (expect[k] >= double_min && expect[k] <= double_max) - ++nInIntRange; - } - } - err = nc_get_att_double(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_DOUBLE) - && expect[k] >= double_min && expect[k] <= double_max) { - IF (!equal(value[k],expect[k],datatype,NCT_DOUBLE)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_ushort(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - ushort value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_USHORT); - if (inRange3(expect[k], datatype, NCT_USHORT)) { - ++nInExtRange; - if (expect[k] >= ushort_min && expect[k] <= ushort_max) - ++nInIntRange; - } - } - err = nc_get_att_ushort(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_USHORT) - && expect[k] >= ushort_min && expect[k] <= ushort_max) { - IF (!equal(value[k],expect[k],datatype,NCT_USHORT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_uint(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - uint value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UINT == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_UINT); - if (inRange3(expect[k], datatype, NCT_UINT)) { - ++nInExtRange; - if (expect[k] >= uint_min && expect[k] <= uint_max) - ++nInIntRange; - } - } - err = nc_get_att_uint(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_UINT) - && expect[k] >= uint_min && expect[k] <= uint_max) { - IF (!equal(value[k],expect[k],datatype,NCT_UINT)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_longlong(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - longlong value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_LONGLONG); - if (inRange3(expect[k], datatype, NCT_LONGLONG)) { - ++nInExtRange; - if (expect[k] >= longlong_min && expect[k] <= longlong_max) - ++nInIntRange; - } - } - err = nc_get_att_longlong(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_LONGLONG) - && expect[k] >= longlong_min && expect[k] <= longlong_max) { - IF (!equal(value[k],expect[k],datatype,NCT_LONGLONG)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_ulonglong(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - ulonglong value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_ULONGLONG); - if (inRange3(expect[k], datatype, NCT_ULONGLONG)) { - ++nInExtRange; - if (expect[k] >= ulonglong_min && expect[k] <= ulonglong_max) - ++nInIntRange; - } - } - err = nc_get_att_ulonglong(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_ULONGLONG) - && expect[k] >= ulonglong_min && expect[k] <= ulonglong_max) { - IF (!equal(value[k],expect[k],datatype,NCT_ULONGLONG)) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} - - - - -void -test_nc_put_var1_text(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - text value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_text(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_text(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_text(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_text( var_type[i], var_rank[i], index, NCT_TEXT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_text(ncid, i, NULL, &value); - else - err = nc_put_var1_text(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_TEXT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_text(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_uchar(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uchar value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_uchar(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_uchar(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_uchar(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_uchar( var_type[i], var_rank[i], index, NCT_UCHAR); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_uchar(ncid, i, NULL, &value); - else - err = nc_put_var1_uchar(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_UCHAR)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uchar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_schar(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - schar value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_schar(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_schar(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_schar(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_schar( var_type[i], var_rank[i], index, NCT_SCHAR); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_schar(ncid, i, NULL, &value); - else - err = nc_put_var1_schar(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_SCHAR)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_schar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_short(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - short value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_short(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_short(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_short(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_short( var_type[i], var_rank[i], index, NCT_SHORT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_short(ncid, i, NULL, &value); - else - err = nc_put_var1_short(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_SHORT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_short(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_int(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_int(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_int(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_int(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_int( var_type[i], var_rank[i], index, NCT_INT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_int(ncid, i, NULL, &value); - else - err = nc_put_var1_int(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_INT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_int(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_long(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - long value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_long(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_long(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_long(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_long( var_type[i], var_rank[i], index, NCT_LONG); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_long(ncid, i, NULL, &value); - else - err = nc_put_var1_long(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_LONG)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_long(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_float(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - float value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_float(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_float(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_float(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_float( var_type[i], var_rank[i], index, NCT_FLOAT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_float(ncid, i, NULL, &value); - else - err = nc_put_var1_float(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_FLOAT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_float(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_double(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - double value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_double(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_double(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_double(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_double( var_type[i], var_rank[i], index, NCT_DOUBLE); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_double(ncid, i, NULL, &value); - else - err = nc_put_var1_double(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_DOUBLE)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_double(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_ushort(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ushort value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_ushort(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_ushort(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_ushort(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_ushort( var_type[i], var_rank[i], index, NCT_USHORT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_ushort(ncid, i, NULL, &value); - else - err = nc_put_var1_ushort(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_USHORT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ushort(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_uint(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - uint value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_uint(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_uint(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_uint(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_uint( var_type[i], var_rank[i], index, NCT_UINT); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_uint(ncid, i, NULL, &value); - else - err = nc_put_var1_uint(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_UINT)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uint(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_longlong(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - longlong value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_longlong(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_longlong(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_longlong(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_longlong( var_type[i], var_rank[i], index, NCT_LONGLONG); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_longlong(ncid, i, NULL, &value); - else - err = nc_put_var1_longlong(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_LONGLONG)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_longlong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var1_ulonglong(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - ulonglong value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_ulonglong(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_ulonglong(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_ulonglong(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_ulonglong( var_type[i], var_rank[i], index, NCT_ULONGLONG); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_ulonglong(ncid, i, NULL, &value); - else - err = nc_put_var1_ulonglong(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_ULONGLONG)) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ulonglong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - - -void -test_nc_put_var_text(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - text value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_text(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_text(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_TEXT); - } - err = nc_put_var_text(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_text(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_TEXT); - } - err = nc_put_var_text(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_text(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_uchar(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uchar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_uchar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_uchar(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UCHAR); - } - err = nc_put_var_uchar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_uchar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UCHAR); - } - err = nc_put_var_uchar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uchar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_schar(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - schar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_schar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_schar(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SCHAR); - } - err = nc_put_var_schar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_schar(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SCHAR); - } - err = nc_put_var_schar(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_schar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_short(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - short value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_short(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_short(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SHORT); - } - err = nc_put_var_short(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_short(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SHORT); - } - err = nc_put_var_short(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_short(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_int(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - int value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_int(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_int(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_INT); - } - err = nc_put_var_int(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_int(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_INT); - } - err = nc_put_var_int(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_int(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_long(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - long value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_long(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_long(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONG); - } - err = nc_put_var_long(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_long(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONG); - } - err = nc_put_var_long(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_long(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_float(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - float value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_float(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_float(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_FLOAT); - } - err = nc_put_var_float(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_float(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_FLOAT); - } - err = nc_put_var_float(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_float(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_double(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - double value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_double(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_double(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_DOUBLE); - } - err = nc_put_var_double(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_double(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_DOUBLE); - } - err = nc_put_var_double(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_double(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_ushort(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ushort value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_ushort(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_ushort(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_ushort(var_type[i], var_rank[i], index, NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_USHORT); - } - err = nc_put_var_ushort(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_ushort(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_ushort(var_type[i], var_rank[i], index, NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_USHORT); - } - err = nc_put_var_ushort(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ushort(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_uint(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uint value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_uint(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_uint(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_uint(var_type[i], var_rank[i], index, NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UINT); - } - err = nc_put_var_uint(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_uint(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_uint(var_type[i], var_rank[i], index, NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UINT); - } - err = nc_put_var_uint(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uint(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_longlong(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - longlong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_longlong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_longlong(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_longlong(var_type[i], var_rank[i], index, NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONGLONG); - } - err = nc_put_var_longlong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_longlong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_longlong(var_type[i], var_rank[i], index, NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONGLONG); - } - err = nc_put_var_longlong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_longlong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_var_ulonglong(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ulonglong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_ulonglong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_ulonglong(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_ulonglong(var_type[i], var_rank[i], index, NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ULONGLONG); - } - err = nc_put_var_ulonglong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_ulonglong(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_ulonglong(var_type[i], var_rank[i], index, NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ULONGLONG); - } - err = nc_put_var_ulonglong(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ulonglong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - - -void -test_nc_put_vara_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - text value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_text(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_text(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_text(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_text(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_text(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_TEXT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_text(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_text(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_text(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uchar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_uchar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_uchar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_uchar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_uchar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_uchar(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_uchar(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_uchar(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uchar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - schar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_schar(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_schar(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_schar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_schar(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_schar(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_schar(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_schar(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_schar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - short value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_short(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_short(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_short(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_short(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_short(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_short(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_short(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_short(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - int value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_int(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_int(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_int(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_int(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_int(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_INT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_int(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_int(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_int(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - long value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_long(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_long(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_long(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_long(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_long(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_long(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_long(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_long(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - float value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_float(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_float(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_float(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_float(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_float(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_FLOAT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_float(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_float(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_float(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - double value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_double(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_double(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_double(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_double(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_double(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_DOUBLE); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_double(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_double(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_double(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ushort value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_ushort(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_ushort(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_ushort(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_ushort(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_ushort(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_ushort(var_type[i], var_rank[i], index, NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_USHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_ushort(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_ushort(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ushort(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uint value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_uint(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_uint(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_uint(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_uint(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_uint(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_uint(var_type[i], var_rank[i], index, NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UINT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_uint(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_uint(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uint(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - longlong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_longlong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_longlong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_longlong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_longlong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_longlong(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_longlong(var_type[i], var_rank[i], index, NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_longlong(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_longlong(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_longlong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vara_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ulonglong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_ulonglong(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_ulonglong(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_ulonglong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_ulonglong(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_ulonglong(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_ulonglong(var_type[i], var_rank[i], index, NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ULONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_ulonglong(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_ulonglong(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ulonglong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - - -void -test_nc_put_vars_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - text value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_text(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_text(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_text(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_text(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_text(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_text(var_type[i], var_rank[i], index2, - NCT_TEXT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_TEXT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_text(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_text(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_text(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uchar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_uchar(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_uchar(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_uchar(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_uchar(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_uchar(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_uchar(var_type[i], var_rank[i], index2, - NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_uchar(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_uchar(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uchar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - schar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_schar(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_schar(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_schar(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_schar(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_schar(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_schar(var_type[i], var_rank[i], index2, - NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_schar(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_schar(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_schar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - short value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_short(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_short(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_short(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_short(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_short(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_short(var_type[i], var_rank[i], index2, - NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_short(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_short(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_short(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - int value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_int(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_int(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_int(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_int(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_int(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_int(var_type[i], var_rank[i], index2, - NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_INT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_int(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_int(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_int(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - long value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_long(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_long(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_long(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_long(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_long(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_long(var_type[i], var_rank[i], index2, - NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_long(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_long(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_long(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - float value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_float(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_float(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_float(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_float(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_float(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_float(var_type[i], var_rank[i], index2, - NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_FLOAT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_float(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_float(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_float(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - double value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_double(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_double(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_double(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_double(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_double(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_double(var_type[i], var_rank[i], index2, - NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_DOUBLE); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_double(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_double(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_double(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ushort value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_ushort(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_ushort(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_ushort(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_ushort(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_ushort(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_ushort(var_type[i], var_rank[i], index2, - NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_USHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_ushort(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_ushort(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ushort(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uint value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_uint(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_uint(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_uint(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_uint(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_uint(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_uint(var_type[i], var_rank[i], index2, - NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UINT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_uint(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_uint(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uint(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - longlong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_longlong(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_longlong(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_longlong(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_longlong(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_longlong(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_longlong(var_type[i], var_rank[i], index2, - NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_longlong(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_longlong(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_longlong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_vars_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ulonglong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_ulonglong(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_ulonglong(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_ulonglong(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_ulonglong(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_ulonglong(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_ulonglong(var_type[i], var_rank[i], index2, - NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ULONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_ulonglong(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_ulonglong(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ulonglong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - - -void -test_nc_put_varm_text(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - text value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_text(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_text(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_text(var_type[i], var_rank[i], index2, - NCT_TEXT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_TEXT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_text(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_text(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_text(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_uchar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uchar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_uchar(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_uchar(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_uchar(var_type[i], var_rank[i], index2, - NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_uchar(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_uchar(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uchar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_schar(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - schar value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_schar(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_schar(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_schar(var_type[i], var_rank[i], index2, - NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SCHAR); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_schar(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_schar(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_schar(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_short(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - short value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_short(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_short(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_short(var_type[i], var_rank[i], index2, - NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_SHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_short(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_short(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_short(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_int(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - int value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_int(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_int(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_int(var_type[i], var_rank[i], index2, - NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_INT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_int(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_int(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_int(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_long(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - long value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_long(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_long(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_long(var_type[i], var_rank[i], index2, - NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_long(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_long(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_long(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_float(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - float value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_float(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_float(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_float(var_type[i], var_rank[i], index2, - NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_FLOAT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_float(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_float(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_float(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_double(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - double value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_double(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_double(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_double(var_type[i], var_rank[i], index2, - NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_DOUBLE); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_double(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_double(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_double(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_ushort(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ushort value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_USHORT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_ushort(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_ushort(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_ushort(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_ushort(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_ushort(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_ushort(var_type[i], var_rank[i], index2, - NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_USHORT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_ushort(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_ushort(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ushort(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_uint(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - uint value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_UINT == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_uint(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_uint(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_uint(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_uint(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_uint(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_uint(var_type[i], var_rank[i], index2, - NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_UINT); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_uint(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_uint(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_uint(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_longlong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - longlong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_LONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_longlong(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_longlong(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_longlong(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_longlong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_longlong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_longlong(var_type[i], var_rank[i], index2, - NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_LONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_longlong(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_longlong(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_longlong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_varm_ulonglong(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - ulonglong value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ULONGLONG == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_ulonglong(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_ulonglong(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_ulonglong(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_ulonglong(var_type[i], var_rank[i], index2, - NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ULONGLONG); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_ulonglong(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_ulonglong(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_ulonglong(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - -void -test_nc_put_att_text(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - text value[MAX_NELS]; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - { - const char *const tval = "value for bad name"; - const size_t tval_len = strlen(tval); - - err = nc_put_att_text(ncid, 0, "", tval_len, tval); - IF (err != NC_EBADNAME) - error("should be NC_EBADNAME: status = %d", err); - } - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (ATT_TYPE(i,j) == NC_CHAR) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_text(BAD_ID, i, ATT_NAME(i,j), ATT_LEN(i,j), - value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_text(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash(ATT_TYPE(i,j), -1, &k); - } - err = nc_put_att_text(ncid, i, ATT_NAME(i,j), - ATT_LEN(i,j), value); - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - } - - check_atts_text(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - - -void -test_nc_put_att_uchar(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - uchar value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_uchar(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_uchar(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_uchar(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_uchar(ATT_TYPE(i,j), -1, &k, NCT_UCHAR); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_UCHAR); - } - err = nc_put_att_uchar(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_uchar(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_schar(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - schar value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_schar(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_schar(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_schar(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_schar(ATT_TYPE(i,j), -1, &k, NCT_SCHAR); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_SCHAR); - } - err = nc_put_att_schar(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_schar(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_short(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - short value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_short(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_short(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_short(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_short(ATT_TYPE(i,j), -1, &k, NCT_SHORT); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_SHORT); - } - err = nc_put_att_short(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_short(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_int(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - int value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_int(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_int(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_int(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_int(ATT_TYPE(i,j), -1, &k, NCT_INT); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_INT); - } - err = nc_put_att_int(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_int(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_long(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - long value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_long(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_long(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_long(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_long(ATT_TYPE(i,j), -1, &k, NCT_LONG); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_LONG); - } - err = nc_put_att_long(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_long(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_float(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - float value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_float(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_float(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_float(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_float(ATT_TYPE(i,j), -1, &k, NCT_FLOAT); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_FLOAT); - } - err = nc_put_att_float(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_float(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_double(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - double value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_double(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_double(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_double(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_double(ATT_TYPE(i,j), -1, &k, NCT_DOUBLE); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_DOUBLE); - } - err = nc_put_att_double(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_double(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_ushort(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - ushort value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_ushort(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_ushort(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_ushort(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_ushort(ATT_TYPE(i,j), -1, &k, NCT_USHORT); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_USHORT); - } - err = nc_put_att_ushort(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_ushort(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_uint(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - uint value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_uint(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_uint(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_uint(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_uint(ATT_TYPE(i,j), -1, &k, NCT_UINT); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_UINT); - } - err = nc_put_att_uint(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_uint(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_longlong(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - longlong value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_longlong(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_longlong(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_longlong(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_longlong(ATT_TYPE(i,j), -1, &k, NCT_LONGLONG); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_LONGLONG); - } - err = nc_put_att_longlong(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_longlong(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -void -test_nc_put_att_ulonglong(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - ulonglong value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_ulonglong(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_ulonglong(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_ulonglong(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_ulonglong(ATT_TYPE(i,j), -1, &k, NCT_ULONGLONG); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_ULONGLONG); - } - err = nc_put_att_ulonglong(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_ulonglong(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_put.m4 b/contrib/netcdf/4.4.1.1/nc_test/test_put.m4 deleted file mode 100644 index 32601f5aa03..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_put.m4 +++ /dev/null @@ -1,1240 +0,0 @@ -dnl This is m4 source. -dnl Process using m4 to produce 'C' language file. -dnl -dnl If you see this line, you can ignore the next one. -/* Do not edit this file. It is produced from the corresponding .m4 source */ -dnl -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_put.m4 2785 2014-10-26 05:21:20Z wkliao $ - *********************************************************************/ - -#ifdef USE_PARALLEL -#include -#endif - -undefine(`index')dnl -dnl dnl dnl -dnl -dnl Macros -dnl -dnl dnl dnl -dnl -dnl Upcase(str) -dnl -define(`Upcase',dnl -`dnl -translit($1, abcdefghijklmnopqrstuvwxyz, ABCDEFGHIJKLMNOPQRSTUVWXYZ)')dnl -dnl dnl dnl -dnl -dnl NCT_ITYPE(type) -dnl -define(`NCT_ITYPE', ``NCT_'Upcase($1)')dnl -dnl - -#include "tests.h" - -dnl HASH(TYPE) -dnl -define(`HASH',dnl -`dnl -/* - * ensure hash value within range for internal TYPE - */ -static -double -hash_$1( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - const double min = $1_min; - const double max = $1_max; - - return MAX(min, MIN(max, hash4( type, rank, index, itype))); -} -')dnl - -HASH(text) -HASH(uchar) -HASH(schar) -HASH(short) -HASH(int) -HASH(long) -HASH(float) -HASH(double) -HASH(ushort) -HASH(uint) -HASH(longlong) -HASH(ulonglong) - - -dnl CHECK_VARS(TYPE) -dnl -define(`CHECK_VARS',dnl -`dnl -/* - * check all vars in file which are (text/numeric) compatible with TYPE - */ -static -void -check_vars_$1(const char *filename) -{ - int ncid; /* netCDF id */ - size_t index[MAX_RANK]; - int err; /* status */ - int d; - int i; - size_t j; - $1 value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - if (canConvert) { - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash4( var_type[i], var_rank[i], index, NCT_ITYPE($1)); - err = nc_get_var1_$1(ncid, i, index, &value); - if (inRange3(expect,datatype,NCT_ITYPE($1))) { - if (expect >= $1_min && expect <= $1_max) { - IF (err) { - error("nc_get_var1_$1: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i],NCT_ITYPE($1))) { - error("Var value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("index:"); - for (d = 0; d < var_rank[i]; d++) - error(" %d", index[d]); - error(", expect: %g, ", expect); - error("got: %g", (double) value); - } - } else { - ++nok; - } - } - } - } - } - } - } - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} -')dnl - -CHECK_VARS(text) -CHECK_VARS(uchar) -CHECK_VARS(schar) -CHECK_VARS(short) -CHECK_VARS(int) -CHECK_VARS(long) -CHECK_VARS(float) -CHECK_VARS(double) -CHECK_VARS(ushort) -CHECK_VARS(uint) -CHECK_VARS(longlong) -CHECK_VARS(ulonglong) - - -dnl CHECK_ATTS(TYPE) numeric only -dnl -define(`CHECK_ATTS',dnl -`dnl -/* - * check all attributes in file which are (text/numeric) compatible with TYPE - * ignore any attributes containing values outside range of TYPE - */ -static -void -check_atts_$1(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - $1 value[MAX_NELS]; - nc_type datatype; - double expect[MAX_NELS]; - size_t length; - size_t nInExtRange; /* number values within external range */ - size_t nInIntRange; /* number values within internal range */ - int canConvert; /* Both text or both numeric */ - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - if (canConvert) { - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - assert(length <= MAX_NELS); - nInIntRange = nInExtRange = 0; - for (k = 0; k < length; k++) { - expect[k] = hash4( datatype, -1, &k, NCT_ITYPE($1)); - if (inRange3(expect[k], datatype, NCT_ITYPE($1))) { - ++nInExtRange; - if (expect[k] >= $1_min && expect[k] <= $1_max) - ++nInIntRange; - } - } - err = nc_get_att_$1(ncid, i, ATT_NAME(i,j), value); - if (nInExtRange == length && nInIntRange == length) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != 0 && err != NC_ERANGE) - error("OK or Range error: status = %d", err); - } - for (k = 0; k < length; k++) { - if (inRange3(expect[k],datatype,NCT_ITYPE($1)) - && expect[k] >= $1_min && expect[k] <= $1_max) { - IF (!equal(value[k],expect[k],datatype,NCT_ITYPE($1))) { - error("att. value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d ", k); - error("expect: %g, ", expect[k]); - error("got: %g", (double) value[k]); - } - } else { - nok++; - } - } - } - } - } - } - - print_nok(nok); -} -')dnl - -CHECK_ATTS(text) -CHECK_ATTS(uchar) -CHECK_ATTS(schar) -CHECK_ATTS(short) -CHECK_ATTS(int) -CHECK_ATTS(long) -CHECK_ATTS(float) -CHECK_ATTS(double) -CHECK_ATTS(ushort) -CHECK_ATTS(uint) -CHECK_ATTS(longlong) -CHECK_ATTS(ulonglong) - - -dnl TEST_NC_PUT_VAR1(TYPE) -dnl -define(`TEST_NC_PUT_VAR1',dnl -`dnl -void -test_nc_put_var1_$1(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - $1 value = 5; /* any value would do - only for error cases */ - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1_$1(BAD_ID, i, index, &value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1_$1(ncid, BAD_VARID, index, &value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1_$1(ncid, i, index, &value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value = hash_$1( var_type[i], var_rank[i], index, NCT_ITYPE($1)); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1_$1(ncid, i, NULL, &value); - else - err = nc_put_var1_$1(ncid, i, index, &value); - if (canConvert) { - if (inRange3(value, var_type[i],NCT_ITYPE($1))) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) { - error("Range error: status = %d", err); - error("\n\t\tfor type %s value %.17e %ld", - s_nc_type(var_type[i]), - (double)value, (long)value); - } - } - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_$1(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_VAR1(text) -TEST_NC_PUT_VAR1(uchar) -TEST_NC_PUT_VAR1(schar) -TEST_NC_PUT_VAR1(short) -TEST_NC_PUT_VAR1(int) -TEST_NC_PUT_VAR1(long) -TEST_NC_PUT_VAR1(float) -TEST_NC_PUT_VAR1(double) -TEST_NC_PUT_VAR1(ushort) -TEST_NC_PUT_VAR1(uint) -TEST_NC_PUT_VAR1(longlong) -TEST_NC_PUT_VAR1(ulonglong) - - -dnl TEST_NC_PUT_VAR(TYPE) -dnl -define(`TEST_NC_PUT_VAR',dnl -`dnl -void -test_nc_put_var_$1(void) -{ - int ncid; - int varid; - int i; - int j; - int err; - int nels; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - $1 value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_$1(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var_$1(ncid, BAD_VARID, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_$1(var_type[i], var_rank[i], index, NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ITYPE($1)); - } - err = nc_put_var_$1(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM) - error("range error: status = %d", err); - } - } else { /* should flag wrong type even if nothing to write */ - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - - /* Preceding has written nothing for record variables, now try */ - /* again with more than 0 records */ - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS-1; - err = nc_put_var1_text(ncid, varid, index, "x"); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - if (var_dimid[i][0] == RECDIM) { /* only test record variables here */ - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - err = nc_put_var_$1(BAD_ID, i, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - nels *= var_shape[i][j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 1"); - value[j]= hash_$1(var_type[i], var_rank[i], index, NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ITYPE($1)); - } - err = nc_put_var_$1(ncid, i, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_$1(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_VAR(text) -TEST_NC_PUT_VAR(uchar) -TEST_NC_PUT_VAR(schar) -TEST_NC_PUT_VAR(short) -TEST_NC_PUT_VAR(int) -TEST_NC_PUT_VAR(long) -TEST_NC_PUT_VAR(float) -TEST_NC_PUT_VAR(double) -TEST_NC_PUT_VAR(ushort) -TEST_NC_PUT_VAR(uint) -TEST_NC_PUT_VAR(longlong) -TEST_NC_PUT_VAR(ulonglong) - - -dnl TEST_NC_PUT_VARA(TYPE) -dnl -define(`TEST_NC_PUT_VARA',dnl -`dnl -void -test_nc_put_vara_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nslabs; - int nels; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t index[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - $1 value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - value[0] = 0; - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara_$1(BAD_ID, i, start, edge, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara_$1(ncid, BAD_VARID, start, edge, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara_$1(ncid, i, start, edge, value); - IF (canConvert && err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara_$1(ncid, i, start, edge, value); - IF (canConvert && err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - -/* wkliao: this test below of put_vara is redundant and incorrectly uses the - value[] set from the previously iteration. There is no such test - in put_vars and put_varm. - - err = nc_put_vara_$1(ncid, i, start, edge, value); - if (canConvert) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ECHAR) - error("wrong type: status = %d", err); - } -*/ - for (j = 0; j < var_rank[i]; j++) { - edge[j] = 1; - } - - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value[j]= hash_$1(var_type[i], var_rank[i], index, NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ITYPE($1)); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara_$1(ncid, i, NULL, NULL, value); - else - err = nc_put_vara_$1(ncid, i, start, edge, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_$1(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_VARA(text) -TEST_NC_PUT_VARA(uchar) -TEST_NC_PUT_VARA(schar) -TEST_NC_PUT_VARA(short) -TEST_NC_PUT_VARA(int) -TEST_NC_PUT_VARA(long) -TEST_NC_PUT_VARA(float) -TEST_NC_PUT_VARA(double) -TEST_NC_PUT_VARA(ushort) -TEST_NC_PUT_VARA(uint) -TEST_NC_PUT_VARA(longlong) -TEST_NC_PUT_VARA(ulonglong) - - -dnl TEST_NC_PUT_VARS(TYPE) -dnl -define(`TEST_NC_PUT_VARS',dnl -`dnl -void -test_nc_put_vars_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - $1 value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars_$1(BAD_ID, i, start, edge, stride, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars_$1(ncid, BAD_VARID, start, edge, stride, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_vars_$1(ncid, i, start, edge, stride, value); - if(!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF(err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars_$1(ncid, i, start, edge, stride, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars_$1(ncid, i, start, edge, stride, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_$1(var_type[i], var_rank[i], index2, - NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ITYPE($1)); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars_$1(ncid, i, NULL, NULL, stride, value); - else - err = nc_put_vars_$1(ncid, i, index, count, stride, value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_$1(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_VARS(text) -TEST_NC_PUT_VARS(uchar) -TEST_NC_PUT_VARS(schar) -TEST_NC_PUT_VARS(short) -TEST_NC_PUT_VARS(int) -TEST_NC_PUT_VARS(long) -TEST_NC_PUT_VARS(float) -TEST_NC_PUT_VARS(double) -TEST_NC_PUT_VARS(ushort) -TEST_NC_PUT_VARS(uint) -TEST_NC_PUT_VARS(longlong) -TEST_NC_PUT_VARS(ulonglong) - - -dnl TEST_NC_PUT_VARM(TYPE) -dnl -define(`TEST_NC_PUT_VARM',dnl -`dnl -void -test_nc_put_varm_$1(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - int canConvert; /* Both text or both numeric */ - int allInExtRange; /* all values within external range? */ - $1 value[MAX_NELS]; - - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { - int format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) - error("nc_var_par_access: %s", nc_strerror(err)); - } - } - } -#endif - - for (i = 0; i < numVars; i++) { - canConvert = (var_type[i] == NC_CHAR) == (NCT_ITYPE($1) == NCT_TEXT); - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - imap[j] = 1; - } - err = nc_put_varm_$1(BAD_ID, i, start, edge, stride, imap, value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm_$1(ncid, BAD_VARID, start, edge, stride, imap, value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j] + 1; - err = nc_put_varm_$1(ncid, i, start, edge, stride, imap, value); - if (!canConvert) { - IF(err != NC_ECHAR) - error("conversion: status = %d", err); - } else { - IF (err != NC_EINVALCOORDS) - error("bad start: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm_$1(ncid, i, start, edge, stride, imap, value); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm_$1(ncid, i, start, edge, stride, imap, value); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* Put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } -*/ - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - imap[j] = 1; - for (; j > 0; j--) - imap[j-1] = imap[j] * count[j]; - } - for (allInExtRange = 1, j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value[j] = hash_$1(var_type[i], var_rank[i], index2, - NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[j], var_type[i], NCT_ITYPE($1)); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_varm_$1(ncid,i,NULL,NULL,NULL,NULL,value); - else - err = nc_put_varm_$1(ncid,i,index,count,stride,imap,value); - if (canConvert) { - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } else { - IF (nels > 0 && err != NC_ECHAR) - error("wrong type: status = %d", err); - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - check_vars_$1(scratch); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_VARM(text) -TEST_NC_PUT_VARM(uchar) -TEST_NC_PUT_VARM(schar) -TEST_NC_PUT_VARM(short) -TEST_NC_PUT_VARM(int) -TEST_NC_PUT_VARM(long) -TEST_NC_PUT_VARM(float) -TEST_NC_PUT_VARM(double) -TEST_NC_PUT_VARM(ushort) -TEST_NC_PUT_VARM(uint) -TEST_NC_PUT_VARM(longlong) -TEST_NC_PUT_VARM(ulonglong) - - -void -test_nc_put_att_text(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - text value[MAX_NELS]; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - { - const char *const tval = "value for bad name"; - const size_t tval_len = strlen(tval); - - err = nc_put_att_text(ncid, 0, "", tval_len, tval); - IF (err != NC_EBADNAME) - error("should be NC_EBADNAME: status = %d", err); - } - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (ATT_TYPE(i,j) == NC_CHAR) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_text(BAD_ID, i, ATT_NAME(i,j), ATT_LEN(i,j), - value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_text(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash(ATT_TYPE(i,j), -1, &k); - } - err = nc_put_att_text(ncid, i, ATT_NAME(i,j), - ATT_LEN(i,j), value); - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - } - - check_atts_text(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -dnl TEST_NC_PUT_ATT(TYPE) numeric only -dnl -define(`TEST_NC_PUT_ATT',dnl -`dnl -void -test_nc_put_att_$1(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - $1 value[MAX_NELS]; - int allInExtRange; /* all values within external range? */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (!(ATT_TYPE(i,j) == NC_CHAR)) { - assert(ATT_LEN(i,j) <= MAX_NELS); - err = nc_put_att_$1(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att_$1(ncid, BAD_VARID, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), value); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att_$1(ncid, i, ATT_NAME(i,j), BAD_TYPE, - ATT_LEN(i,j), value); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - value[k] = hash_$1(ATT_TYPE(i,j), -1, &k, NCT_ITYPE($1)); - allInExtRange = allInExtRange - && inRange3(value[k], ATT_TYPE(i,j), NCT_ITYPE($1)); - } - err = nc_put_att_$1(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j), - ATT_LEN(i,j), value); - if (allInExtRange) { - IF (err) - error("%s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("range error: status = %d", err); - } - } - } - } - - check_atts_$1(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} -')dnl - -TEST_NC_PUT_ATT(uchar) -TEST_NC_PUT_ATT(schar) -TEST_NC_PUT_ATT(short) -TEST_NC_PUT_ATT(int) -TEST_NC_PUT_ATT(long) -TEST_NC_PUT_ATT(float) -TEST_NC_PUT_ATT(double) -TEST_NC_PUT_ATT(ushort) -TEST_NC_PUT_ATT(uint) -TEST_NC_PUT_ATT(longlong) -TEST_NC_PUT_ATT(ulonglong) - diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_read.c b/contrib/netcdf/4.4.1.1/nc_test/test_read.c deleted file mode 100644 index 96edad9589a..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_read.c +++ /dev/null @@ -1,1613 +0,0 @@ -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_read.c 2792 2014-10-27 06:02:59Z wkliao $ - *********************************************************************/ - -#include "tests.h" - -/* - * Test nc_strerror. - * Try on a bad error status. - * Test for each defined error status. - */ -void -test_nc_strerror(void) -{ - int i; - const char *message; - - static const struct { - int status; - const char *msg; - } ncerrs[] = { - {NC_NOERR, "No error"}, - {NC_EBADID, "NetCDF: Not a valid ID"}, - {NC_ENFILE, "NetCDF: Too many files open"}, - {NC_EEXIST, "NetCDF: File exists && NC_NOCLOBBER"}, - {NC_EINVAL, "NetCDF: Invalid argument"}, - {NC_EPERM, "NetCDF: Write to read only"}, - {NC_ENOTINDEFINE, "NetCDF: Operation not allowed in data mode"}, - {NC_EINDEFINE, "NetCDF: Operation not allowed in define mode"}, - {NC_EINVALCOORDS, "NetCDF: Index exceeds dimension bound"}, - {NC_EMAXDIMS, "NetCDF: NC_MAX_DIMS exceeded"}, - {NC_ENAMEINUSE, "NetCDF: String match to name in use"}, - {NC_ENOTATT, "NetCDF: Attribute not found"}, - {NC_EMAXATTS, "NetCDF: NC_MAX_ATTRS exceeded"}, - {NC_EBADTYPE, "NetCDF: Not a valid data type or _FillValue type mismatch"}, - {NC_EBADDIM, "NetCDF: Invalid dimension ID or name"}, - {NC_EUNLIMPOS, "NetCDF: NC_UNLIMITED in the wrong index"}, - {NC_EMAXVARS, "NetCDF: NC_MAX_VARS exceeded"}, - {NC_ENOTVAR, "NetCDF: Variable not found"}, - {NC_EGLOBAL, "NetCDF: Action prohibited on NC_GLOBAL varid"}, - {NC_ENOTNC, "NetCDF: Unknown file format"}, - {NC_ESTS, "NetCDF: In Fortran, string too short"}, - {NC_EMAXNAME, "NetCDF: NC_MAX_NAME exceeded"}, - {NC_EUNLIMIT, "NetCDF: NC_UNLIMITED size already in use"}, - {NC_ENORECVARS, "NetCDF: nc_rec op when there are no record vars"}, - {NC_ECHAR, "NetCDF: Attempt to convert between text & numbers"}, - {NC_EEDGE, "NetCDF: Start+count exceeds dimension bound"}, - {NC_ESTRIDE, "NetCDF: Illegal stride"}, - {NC_EBADNAME, "NetCDF: Name contains illegal characters"}, - {NC_ERANGE, "NetCDF: Numeric conversion not representable"}, - {NC_ENOMEM, "NetCDF: Memory allocation (malloc) failure"}, - {NC_EVARSIZE, "NetCDF: One or more variable sizes violate format constraints"}, - {NC_EDIMSIZE, "NetCDF: Invalid dimension size"} - }; - - /* Try on a bad error status */ - /* Dmh: allow trailing extra info */ - message = nc_strerror(-666);/* should fail */ - IF (strncmp(message, "Unknown Error", strlen("Unknown Error")) != 0) - error("nc_strerror on bad error status returned: %s", message); - - /* Try on each legitimate error status */ - /* Dmh: allow trailing extra info */ - for (i=0; i> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vara(ncid, i, NULL, NULL, buf); - else - err = nc_get_vara(ncid, i, start, edge, buf); - IF (err) { - error("%s", nc_strerror(err)); - } else { - for (j = 0; j < nels; j++) { - p = (char *) buf; - p += j * nctypelen(var_type[i]); - err = nc2dbl( var_type[i], p, & got ); - IF (err) - error("error in nc2dbl"); - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - expect = hash(var_type[i], var_rank[i], index); - if (inRange(expect,var_type[i])) { - IF (!equal(got,expect,var_type[i],NCT_DOUBLE)) { - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g", expect); - error("got: %g", got); - } - } else { - nok++; - } - } - } - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - -/* - * Test nc_get_vars - * Choose a random point dividing each dim into 2 parts - * Get 2^rank (nslabs) slabs so defined - * Each get overwrites buffer, so check after each get. - */ -void -test_nc_get_vars(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* total count of valid comparisons */ - int n; /* count of valid comparisons within var */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - double expect; - double got; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_get_vars(BAD_ID, i, start, edge, stride, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_vars(ncid, BAD_VARID, start, edge, stride, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - n = 0; - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - if (var_rank[i] == 0 && i%2 ) - err = nc_get_vars(ncid, i, NULL, NULL, NULL, buf); - else - err = nc_get_vars(ncid, i, index, count, stride, buf); - IF (err) { - error("%s", nc_strerror(err)); - } else { - for (j = 0; j < nels; j++) { - p = (char *) buf; - p += j * nctypelen(var_type[i]); - err = nc2dbl( var_type[i], p, & got ); - IF (err) - error("error in nc2dbl"); - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase 1"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - expect = hash(var_type[i], var_rank[i], index2); - if (inRange(expect,var_type[i])) { - IF (!equal(got,expect,var_type[i],NCT_DOUBLE)) { - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect); - error("got: %g ", got); - } - } else { - nok++; - } - } - n++; - } - } - } - } - IF (n != var_nels[i]) { - error("count != nels"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("count: %d, ", n); - error("nels: %d ", var_nels[i]); - } - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - -/* - * Test nc_get_varm - * Choose a random point dividing each dim into 2 parts - * Get 2^rank (nslabs) slabs so defined - * Choose random stride from 1 to edge - * Buffer should end up being bit image of external variable. - * So all gets for a variable store in different elements of buffer - */ -void -test_nc_get_varm(void) -{ - int ncid; - int i; - int j; - int k; - int m; - int err; - int nslabs; - int nstarts; /* number of different starts */ - int nok = 0; /* total count of valid comparisons */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - ptrdiff_t imap2[MAX_RANK]; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - double expect; - double got; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - /* imap[j] = nctypelen(var_type[i]); in bytes */ - imap[j] = 1; /* in numbers of elements */ - for (; j > 0; j--) - imap[j-1] = imap[j] * var_shape[i][j]; - } - err = nc_get_varm(BAD_ID, i, start, edge, stride, imap, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_varm(ncid, BAD_VARID, start, edge, stride, imap, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - start[j] = var_shape[i][j]; - err = nc_get_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_get_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_get_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - /* Choose a random point dividing each dim into 2 parts */ - /* get 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to get lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - imap2[j] = imap[j] * sstride[j]; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - if (var_rank[i] == 0 && i%2 ) { - err = nc_get_varm(ncid, i, NULL, NULL, NULL, NULL, buf); - } else { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - j = fromMixedBase(var_rank[i], index, var_shape[i]); - p = (char *) buf + j * nctypelen(var_type[i]); - err = nc_get_varm(ncid, i, index, count, stride, imap2, p); - } - IF (err) - error("%s", nc_strerror(err)); - } - } - p = (char *) buf; - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase"); - expect = hash( var_type[i], var_rank[i], index); - err = nc2dbl( var_type[i], p, & got ); - IF (err) - error("error in nc2dbl"); - if (inRange(expect,var_type[i])) { - IF (!equal(got,expect,var_type[i],NCT_DOUBLE)) { - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", var_name[i]); - error("element number: %d ", j); - error("expect: %g, ", expect); - error("got: %g ", got); - } - } else { - nok++; - } - } - p += nctypelen(var_type[i]); - } - } - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - -void -test_nc_get_att(void) -{ - int ncid; - int i; - int j; - size_t k; - int err; - double buf[MAX_NELS]; /* (void *) buffer */ - signed char *p; /* (void *) pointer */ - double expect; - double got; - int nok = 0; /* count of valid comparisons */ - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - err = nc_get_att(BAD_ID, i, ATT_NAME(i,j), buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_get_att(ncid, BAD_VARID, ATT_NAME(i,j), buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_get_att(ncid, i, "noSuch", buf); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - err = nc_get_att(ncid, i, ATT_NAME(i,j), buf); - IF (err) { - error("%s", nc_strerror(err)); - } else { - for (k = 0; k < ATT_LEN(i,j); k++) { - expect = hash(ATT_TYPE(i,j), -1, &k ); - p = (signed char *) buf; - p += k * nctypelen(ATT_TYPE(i,j)); - err = nc2dbl( ATT_TYPE(i,j), p, &got ); - IF (err) - error("error in nc2dbl"); - if (inRange(expect,ATT_TYPE(i,j))) { - IF (!equal(got,expect,ATT_TYPE(i,j),NCT_DOUBLE)) { - error("value read not that expected"); - if (verbose) { - error("\n"); - error("varid: %d, ", i); - error("var_name: %s, ", - i >= 0 ? var_name[i] : "Global"); - error("att_name: %s, ", ATT_NAME(i,j)); - error("element number: %d\n", k); - error("expect: %-23.16e\n", expect); - error(" got: %-23.16e", got); - } - } else { - nok++; - } - } - } - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - print_nok(nok); -} - - -void -test_nc_inq_att(void) -{ - int ncid; - int i; - int j; - int err; - nc_type t; - size_t n; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_att(BAD_ID, i, ATT_NAME(i,j), &t, &n); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_inq_att(ncid, BAD_VARID, ATT_NAME(i,j), &t, &n); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_inq_att(ncid, i, "noSuch", &t, &n); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - err = nc_inq_att(ncid, i, ATT_NAME(i,j), &t, &n); - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (t != ATT_TYPE(i,j)) - error("type not that expected"); - IF (n != ATT_LEN(i,j)) - error("length not that expected"); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} - - -void -test_nc_inq_attlen(void) -{ - int ncid; - int i; - int j; - int err; - size_t len; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - err = nc_inq_attlen(ncid, i, "noSuch", &len); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_attlen(BAD_ID, i, ATT_NAME(i,j), &len); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_inq_attlen(ncid, BAD_VARID, ATT_NAME(i,j), &len); - IF (err != NC_ENOTVAR) - error("bad varid: status = %d", err); - err = nc_inq_attlen(ncid, i, ATT_NAME(i,j), &len); - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (len != ATT_LEN(i,j)) - error("len not that expected"); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} - - -void -test_nc_inq_atttype(void) -{ - int ncid; - int i; - int j; - int err; - nc_type datatype; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - err = nc_inq_atttype(ncid, i, "noSuch", &datatype); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_atttype(BAD_ID, i, ATT_NAME(i,j), &datatype); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_inq_atttype(ncid, BAD_VARID, ATT_NAME(i,j), &datatype); - IF (err != NC_ENOTVAR) - error("bad varid: status = %d", err); - err = nc_inq_atttype(ncid, i, ATT_NAME(i,j), &datatype); - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (datatype != ATT_TYPE(i,j)) - error("type not that expected"); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} - - -void -test_nc_inq_attname(void) -{ - int ncid; - int i; - int j; - int err; - char name[NC_MAX_NAME]; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - err = nc_inq_attname(ncid, i, BAD_ATTNUM, name); - IF (err != NC_ENOTATT) - error("Bad attribute number: status = %d", err); - err = nc_inq_attname(ncid, i, NATTS(i), name); - IF (err != NC_ENOTATT) - error("Bad attribute number: status = %d", err); - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_attname(BAD_ID, i, j, name); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_inq_attname(ncid, BAD_VARID, j, name); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_inq_attname(ncid, i, j, name); - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (strcmp(ATT_NAME(i,j), name) != 0) - error("name not that expected"); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} - - -void -test_nc_inq_attid(void) -{ - int ncid; - int i; - int j; - int err; - int attnum; - - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - err = nc_inq_attid(ncid, i, "noSuch", &attnum); - IF (err != NC_ENOTATT) - error("Bad attribute name: status = %d", err); - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_attid(BAD_ID, i, ATT_NAME(i,j), &attnum); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_inq_attid(ncid, BAD_VARID, ATT_NAME(i,j), &attnum); - IF (err != NC_ENOTVAR) - error("bad varid: status = %d", err); - err = nc_inq_attid(ncid, i, ATT_NAME(i,j), &attnum); - IF (err) { - error("%s", nc_strerror(err)); - } else { - IF (attnum != j) - error("attnum not that expected"); - } - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} diff --git a/contrib/netcdf/4.4.1.1/nc_test/test_write.c b/contrib/netcdf/4.4.1.1/nc_test/test_write.c deleted file mode 100644 index a5fd5607e0a..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/test_write.c +++ /dev/null @@ -1,2076 +0,0 @@ -/********************************************************************* - * Copyright 1996, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: test_write.c 2796 2014-10-28 03:40:29Z wkliao $ - *********************************************************************/ - -#include "tests.h" -#include "math.h" -#include /* For FILE stuff. */ - -/* - * Test nc_create - * For mode in NC_NOCLOBBER, NC_CLOBBER do: - * create netcdf file 'scratch.nc' with no data, close it - * test that it can be opened, do nc_inq to check nvars = 0, etc. - * Try again in NC_NOCLOBBER mode, check error return - * On exit, delete this file - */ -void -test_nc_create(void) -{ - int clobber; /* 0 for NC_NOCLOBBER, 1 for NC_CLOBBER */ - int err; - int ncid; - int ndims; /* number of dimensions */ - int nvars; /* number of variables */ - int ngatts; /* number of global attributes */ - int recdim; /* id of unlimited dimension */ - - for (clobber = 0; clobber < 2; clobber++) { - int cmode = clobber ? NC_CLOBBER : NC_NOCLOBBER; - err = file_create(scratch, cmode, &ncid); - IF (err) - error("nc_create: %s", nc_strerror(err)); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = file_open(scratch, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_inq(ncid, &ndims, &nvars, &ngatts, &recdim); - IF (err) - error("nc_inq: %s", nc_strerror(err)); - else IF (ndims != 0) - error("nc_inq: wrong number of dimensions returned, %d", ndims); - else IF (nvars != 0) - error("nc_inq: wrong number of variables returned, %d", nvars); - else IF (ngatts != 0) - error("nc_inq: wrong number of global atts returned, %d", ngatts); - else IF (recdim != -1) - error("nc_inq: wrong record dimension ID returned, %d", recdim); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - } - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err != NC_EEXIST) - error("attempt to overwrite file: status = %d", err); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_redef - * (In fact also tests nc_enddef - called from test_nc_enddef) - * BAD_ID - * attempt redef (error) & enddef on read-only file - * create file, define dims & vars. - * attempt put var (error) - * attempt redef (error) & enddef. - * put vars - * attempt def new dims (error) - * redef - * def new dims, vars. - * put atts - * enddef - * put vars - * close - * check file: vars & atts - * check reopening with NC_WRITE and adding new dims, atts, vars - */ -void -test_nc_redef(void) -{ - int ncid; /* netcdf id */ - /* used to force effective test of ncio->move() in redef */ - size_t sizehint = 8192; - int dimid; /* dimension id */ - int varid; /* variable id */ - int varid1; /* variable id */ - int err; - const char * title = "Not funny"; - double var; - char name[NC_MAX_NAME]; - size_t length; - int fmt_variant1, fmt_variant2; - - /* BAD_ID tests */ - err = nc_redef(BAD_ID); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_enddef(BAD_ID); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* read-only tests */ - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_redef(ncid); - IF (err != NC_EPERM) - error("nc_redef in NC_NOWRITE mode: status = %d", err); - err = nc_enddef(ncid); - IF (err != NC_ENOTINDEFINE) - error("nc_redef in NC_NOWRITE mode: status = %d", err); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* tests using scratch file */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - /* limit for ncio implementations which have infinite chunksize */ - if(sizehint > 32768) - sizehint = 16384; - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - err = nc_inq_varid(ncid, "d", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - var = 1.0; - err = nc_put_var1_double(ncid, varid, NULL, &var); - IF (err != NC_EINDEFINE) - error("nc_put_var... in define mode: status = %d", err); - err = nc_redef(ncid); - IF (err != NC_EINDEFINE) - error("nc_redef in define mode: status = %d", err); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - put_vars(ncid); - err = nc_def_dim(ncid, "abc", sizehint, &dimid); - IF (err != NC_ENOTINDEFINE) - error("nc_def_dim in define mode: status = %d", err); - err = nc_redef(ncid); - IF (err) - error("nc_redef: %s", nc_strerror(err)); -#if 0 - err = nc_set_fill(ncid, NC_NOFILL, NULL); - IF (err) - error("nc_set_fill: %s", nc_strerror(err)); -#endif - err = nc_def_dim(ncid, "abc", sizehint, &dimid); - IF (err) - error("nc_def_dim: %s", nc_strerror(err)); - err = nc_def_var(ncid, "abcScalar", NC_INT, 0, NULL, &varid); - IF (err) - error("nc_def_var: %s", nc_strerror(err)); - err = nc_def_var(ncid, "abc", NC_INT, 1, &dimid, &varid1); - IF (err) - error("nc_def_var: %s", nc_strerror(err)); - { - int dimids[NDIMS +1]; - int ii = 0; - for(ii = 0; ii < NDIMS; ii++) - dimids[ii] = ii; - dimids[NDIMS] = dimid; - err = nc_def_var(ncid, "abcRec", NC_INT, NDIMS, dimids, &varid1); - IF (err) - error("nc_def_var: %s", nc_strerror(err)); - } - err = nc_put_att_text(ncid, NC_GLOBAL, "title", 1+strlen(title), title); - IF (err) - error("nc_put_att_text: %s", nc_strerror(err)); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - var = 1.0; - err = nc_put_var1_double(ncid, varid, NULL, &var); - IF (err) - error("nc_put_var1_double: %s", nc_strerror(err)); - err = nc_inq_format(ncid, &fmt_variant1); - IF (err) - error("nc_inq_format: %s", nc_strerror(err)); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* check scratch file written as expected */ - check_file(scratch); /* checks all except "abc" stuff added above */ - - IF ((err = file_open(scratch, NC_NOWRITE, &ncid))) - error("nc_open: %s", nc_strerror(err)); - IF ((err = nc_inq_dim(ncid, dimid, name, &length))) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (strcmp(name, "abc") != 0) - error("Unexpected dim name"); - IF (length != sizehint) - error("Unexpected dim length"); - IF ((err = nc_get_var1_double(ncid, varid, NULL, &var))) - error("nc_get_var1_double: %s", nc_strerror(err)); - IF (var != 1.0) - error("nc_get_var1_double: unexpected value"); - IF ((err = nc_close(ncid))) - error("nc_close: %s", nc_strerror(err)); - - /* open scratch file for writing, add another dim, var, att, then check */ - IF ((err = file_open(scratch, NC_WRITE, &ncid))) - error("nc_open: %s", nc_strerror(err)); - IF ((err = nc_redef(ncid))) - error("nc_redef: %s", nc_strerror(err)); - IF ((err = nc_def_dim(ncid, "def", sizehint, &dimid))) - error("nc_def_dim: %s", nc_strerror(err)); - IF ((err = nc_def_var(ncid, "defScalar", NC_INT, 0, NULL, &varid))) - error("nc_def_var: %s", nc_strerror(err)); - IF ((err = nc_def_var(ncid, "def", NC_INT, 1, &dimid, &varid1))) - error("nc_def_var: %s", nc_strerror(err)); - IF ((err = nc_put_att_text(ncid, NC_GLOBAL, "Credits", 1+strlen("Thanks!"), "Thanks!"))) - error("nc_put_att_text: %s", nc_strerror(err)); - IF ((err = nc_enddef(ncid))) - error("nc_enddef: %s", nc_strerror(err)); - var = 2.0; - IF ((err = nc_put_var1_double(ncid, varid, NULL, &var))) - error("nc_put_var1_double: %s", nc_strerror(err)); - IF ((err = nc_close(ncid))) - error("nc_close: %s", nc_strerror(err)); - - /* check scratch file written as expected */ - check_file(scratch); - - err = file_open(scratch, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_inq_dim(ncid, dimid, name, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (strcmp(name, "def") != 0) - error("Unexpected dim name"); - IF (length != sizehint) - error("Unexpected dim length"); - err = nc_get_var1_double(ncid, varid, NULL, &var); - IF (err) - error("nc_get_var1_double: %s", nc_strerror(err)); - IF (var != 2.0) - error("nc_get_var1_double: unexpected value"); - /* make sure format variant hasn't changed from when created */ - err = nc_inq_format(ncid, &fmt_variant2); - IF (err) - error("nc_inq_format: %s", nc_strerror(err)); - IF (fmt_variant1 != fmt_variant2) - error("nc_enddef changed format variant"); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_enddef - * Simply calls test_nc_redef which tests both nc_redef & nc_enddef - */ -void -test_nc_enddef(void) -{ - test_nc_redef(); -} - - -/* - * Test nc_sync - * try with bad handle, check error - * try in define mode, check error - * try writing with one handle, reading with another on same netCDF - */ -void -test_nc_sync(void) -{ - int ncidw; /* netcdf id for writing */ - int ncidr; /* netcdf id for reading */ - int err; - - /* BAD_ID test */ - err = nc_sync(BAD_ID); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* create scratch file & try nc_sync in define mode */ - err = file_create(scratch, NC_NOCLOBBER, &ncidw); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_sync(ncidw); - IF (err != NC_EINDEFINE) - error("nc_sync called in define mode: status = %d", err); - - /* write using same handle */ - def_dims(ncidw); - def_vars(ncidw); - put_atts(ncidw); - err = nc_enddef(ncidw); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - put_vars(ncidw); - err = nc_sync(ncidw); - IF (err) - error("nc_sync of ncidw failed: %s", nc_strerror(err)); - - /* open another handle, nc_sync, read (check) */ - err = file_open(scratch, NC_NOWRITE, &ncidr); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_sync(ncidr); - IF (err) - error("nc_sync of ncidr failed: %s", nc_strerror(err)); - check_dims(ncidr); - check_atts(ncidr); - check_vars(ncidr); - - /* close both handles */ - err = nc_close(ncidr); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = nc_close(ncidw); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_abort - * try with bad handle, check error - * try in define mode before anything written, check that file was deleted - * try after nc_enddef, nc_redef, define new dims, vars, atts - * try after writing variable - */ -void -test_nc_abort(void) -{ - int ncid; /* netcdf id */ - int err; - int ndims; - int nvars; - int ngatts; - - /* BAD_ID test */ - err = nc_abort(BAD_ID); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* create scratch file & try nc_abort in define mode */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - err = nc_abort(ncid); - IF (err) - error("nc_abort of ncid failed: %s", nc_strerror(err)); - err = nc_close(ncid); /* should already be closed */ - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = remove(scratch); /* should already be deleted */ - IF (!err) - error("file %s should not exist", scratch); - - /* - * create scratch file - * do nc_enddef & nc_redef - * define new dims, vars, atts - * try nc_abort: should restore previous state (no dims, vars, atts) - */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - err = nc_redef(ncid); - IF (err) - error("nc_redef: %s", nc_strerror(err)); - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - err = nc_abort(ncid); - IF (err) - error("nc_abort of ncid failed: %s", nc_strerror(err)); - err = nc_close(ncid); /* should already be closed */ - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = file_open(scratch, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_inq (ncid, &ndims, &nvars, &ngatts, NULL); - IF (err) - error("nc_inq: %s", nc_strerror(err)); - IF (ndims != 0) - error("ndims should be 0"); - IF (nvars != 0) - error("nvars should be 0"); - IF (ngatts != 0) - error("ngatts should be 0"); - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* try nc_abort in data mode - should just close */ - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - put_vars(ncid); - err = nc_abort(ncid); - IF (err) - error("nc_abort of ncid failed: %s", nc_strerror(err)); - err = nc_close(ncid); /* should already be closed */ - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - check_file(scratch); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_def_dim - * try with bad netCDF handle, check error - * try in data mode, check error - * check that returned id is one more than previous id - * try adding same dimension twice, check error - * try with illegal sizes, check error - * make sure unlimited size works, shows up in nc_inq_unlimdim - * try to define a second unlimited dimension, check error - */ -void -test_nc_def_dim(void) -{ - int ncid; - int err; /* status */ - int i; - int dimid; /* dimension id */ - size_t length; - - /* BAD_ID test */ - err = nc_def_dim(BAD_ID, "abc", 8, &dimid); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* data mode test */ - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - err = nc_def_dim(ncid, "abc", 8, &dimid); - IF (err != NC_ENOTINDEFINE) - error("bad ncid: status = %d", err); - - /* define-mode tests: unlimited dim */ - err = nc_redef(ncid); - IF (err) - error("nc_redef: %s", nc_strerror(err)); - err = nc_def_dim(ncid, dim_name[0], NC_UNLIMITED, &dimid); - IF (err) - error("nc_def_dim: %s", nc_strerror(err)); - IF (dimid != 0) - error("Unexpected dimid"); - err = nc_inq_unlimdim(ncid, &dimid); - IF (err) - error("nc_inq_unlimdim: %s", nc_strerror(err)); - IF (dimid != 0) - error("Unexpected recdim"); - err = nc_inq_dimlen(ncid, dimid, &length); - IF (err) - error("nc_inq_dimlen: %s", nc_strerror(err)); - IF (length != 0) - error("Unexpected length"); - err = nc_def_dim(ncid, "abc", NC_UNLIMITED, &dimid); - IF (err != NC_EUNLIMIT) - error("2nd unlimited dimension: status = %d", err); - /* define-mode tests: remaining dims */ - for (i = 1; i < NDIMS; i++) { - err = nc_def_dim(ncid, dim_name[i-1], dim_len[i], &dimid); - IF (err != NC_ENAMEINUSE) - error("duplicate name: status = %d", err); - err = nc_def_dim(ncid, BAD_NAME, dim_len[i], &dimid); - IF (err != NC_EBADNAME) - error("bad name: status = %d", err); - /* Fix: dmh 11/4/2011: works only if sizeof(long) > 4 */ - if(sizeof(long) > 4) { - err = nc_def_dim(ncid, dim_name[i], NC_UNLIMITED-1, &dimid); - IF (err != NC_EDIMSIZE) - error("bad size: status = %d", err); - } - err = nc_def_dim(ncid, dim_name[i], dim_len[i], &dimid); - IF (err) - error("nc_def_dim: %s", nc_strerror(err)); - IF (dimid != i) - error("Unexpected dimid"); - } - - /* Following just to expand unlimited dim */ - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - put_vars(ncid); - - /* Check all dims */ - check_dims(ncid); - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_rename_dim - * try with bad netCDF handle, check error - * check that proper rename worked with nc_inq_dim - * try renaming to existing dimension name, check error - * try with bad dimension handle, check error - */ -void -test_nc_rename_dim(void) -{ - int ncid; - int err; /* status */ - char name[NC_MAX_NAME]; - - /* BAD_ID test */ - err = nc_rename_dim(BAD_ID, 0, "abc"); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* main tests */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - err = nc_rename_dim(ncid, BAD_DIMID, "abc"); - IF (err != NC_EBADDIM) - error("bad dimid: status = %d", err); - err = nc_rename_dim(ncid, 2, "abc"); - IF (err) - error("nc_rename_dim: %s", nc_strerror(err)); - err = nc_inq_dimname(ncid, 2, name); - IF (err) - error("nc_inq_dimname: %s", nc_strerror(err)); - IF (strcmp(name, "abc") != 0) - error("Unexpected name: %s", name); - err = nc_rename_dim(ncid, 0, "abc"); - IF (err != NC_ENAMEINUSE) - error("duplicate name: status = %d", err); - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_def_var - * try with bad netCDF handle, check error - * try with bad name, check error - * scalar tests: - * check that proper define worked with nc_inq_var - * try redefining an existing variable, check error - * try with bad datatype, check error - * try with bad number of dimensions, check error - * try in data mode, check error - * check that returned id is one more than previous id - * try with bad dimension ids, check error - */ -void -test_nc_def_var(void) -{ - int ncid; - int varid; - int err; /* status */ - int i; - int ndims; - int natts; - char name[NC_MAX_NAME]; - int dimids[MAX_RANK]; - nc_type datatype; - - /* BAD_ID test */ - err = nc_def_var(BAD_ID, "abc", NC_SHORT, 0, NULL, &varid); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* scalar tests */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_def_var(ncid, "abc", NC_SHORT, 0, NULL, &varid); - IF (err) - error("nc_def_var: %s", nc_strerror(err)); - err = nc_inq_var(ncid, varid, name, &datatype, &ndims, dimids, &natts); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, "abc") != 0) - error("Unexpected name: %s", name); - IF (datatype != NC_SHORT) - error("Unexpected datatype"); - IF (ndims != 0) - error("Unexpected rank"); - err = nc_def_var(ncid, BAD_NAME, NC_SHORT, 0, NULL, &varid); - IF (err != NC_EBADNAME) - error("bad name: status = %d", err); - err = nc_def_var(ncid, "abc", NC_SHORT, 0, NULL, &varid); - IF (err != NC_ENAMEINUSE) - error("duplicate name: status = %d", err); - err = nc_def_var(ncid, "ABC", BAD_TYPE, -1, dimids, &varid); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - err = nc_def_var(ncid, "ABC", NC_SHORT, -1, dimids, &varid); - IF (err != NC_EINVAL) - error("bad rank: status = %d", err); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - err = nc_def_var(ncid, "ABC", NC_SHORT, 0, dimids, &varid); - IF (err != NC_ENOTINDEFINE) - error("nc_def_var called in data mode: status = %d", err); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); - - /* general tests using global vars */ - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - for (i = 0; i < numVars; i++) { - err = nc_def_var(ncid, var_name[i], var_type[i], var_rank[i], - var_dimid[i], &varid); - IF (err) - error("nc_def_var: %s", nc_strerror(err)); - IF (varid != i) - error("Unexpected varid"); - } - - /* try bad dim ids */ - dimids[0] = BAD_DIMID; - err = nc_def_var(ncid, "abc", NC_SHORT, 1, dimids, &varid); - IF (err != NC_EBADDIM) - error("bad dim ids: status = %d", err); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_put_var1 - */ -void -test_nc_put_var1(void) -{ - int ncid; - int i; - int j; - int err; - size_t index[MAX_RANK]; - double value; - double buf[1]; /* (void *) buffer */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - for (j = 0; j < var_rank[i]; j++) - index[j] = 0; - err = nc_put_var1(BAD_ID, i, index, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_var1(ncid, BAD_VARID, index, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - index[j] = var_shape[i][j]; - err = nc_put_var1(ncid, i, index, buf); - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - index[j] = 0; - } - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase"); - value = hash( var_type[i], var_rank[i], index); - if (inRange(value, var_type[i])) { - err = dbl2nc(value, var_type[i], buf); - IF (err) - error("error in dbl2nc"); - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_var1(ncid, i, NULL, buf); - else - err = nc_put_var1(ncid, i, index, buf); - IF (err) - error("%s", nc_strerror(err)); - } - } - } - - check_vars(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_put_vara - * Choose a random point dividing each dim into 2 parts - * Put 2^rank (nslabs) slabs so defined - * Redefine buffer for each put. - * At end check all variables using check_vars - */ -void -test_nc_put_vara(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int err; - int nels; - int nslabs; - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - double value; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - } - err = nc_put_vara(BAD_ID, i, start, edge, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vara(ncid, BAD_VARID, start, edge, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vara(ncid, i, start, edge, buf); - IF (err != NC_EINVALCOORDS) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vara(ncid, i, start, edge, buf); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - for (k = 0; k < nslabs; k++) { - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - nels *= edge[j]; - } - p = (char *) buf; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], edge, index); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index[d] += start[d]; - value = hash( var_type[i], var_rank[i], index); - if (!inRange(value, var_type[i])) - value = 0; - err = dbl2nc(value, var_type[i], p); - IF (err) - error("error in dbl2nc"); - p += nctypelen(var_type[i]); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vara(ncid, i, NULL, NULL, buf); - else - err = nc_put_vara(ncid, i, start, edge, buf); - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - - check_vars(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_put_vars - * Choose a random point dividing each dim into 2 parts - * Put 2^rank (nslabs) slabs so defined - * Choose random stride from 1 to edge - * Redefine buffer for each put. - * At end check all variables using check_vars - */ -void -test_nc_put_vars(void) -{ - int ncid; - int d; - int i; - int j; - int k; - int m; - int err; - int nels; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t index2[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - double value; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - err = nc_put_vars(BAD_ID, i, start, edge, stride, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_vars(ncid, BAD_VARID, start, edge, stride, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_EINVALCOORDS && err != NC_EEDGE) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_vars(ncid, i, start, edge, stride, buf); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - nels = 1; - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - nels *= count[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - p = (char *) buf; - for (j = 0; j < nels; j++) { - err = toMixedBase(j, var_rank[i], count, index2); - IF (err) - error("error in toMixedBase"); - for (d = 0; d < var_rank[i]; d++) - index2[d] = index[d] + index2[d] * stride[d]; - value = hash( var_type[i], var_rank[i], index2); - if (!inRange(value, var_type[i])) - value = 0; - err = dbl2nc(value, var_type[i], p); - IF (err) - error("error in dbl2nc"); - p += nctypelen(var_type[i]); - } - if (var_rank[i] == 0 && i%2 == 0) - err = nc_put_vars(ncid, i, NULL, NULL, NULL, buf); - else - err = nc_put_vars(ncid, i, index, count, stride, buf); - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - } - - check_vars(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_put_varm - * Choose a random point dividing each dim into 2 parts - * Put 2^rank (nslabs) slabs so defined - * Choose random stride from 1 to edge - * Buffer is bit image of whole external variable. - * So all puts for a variable put different elements of buffer - * At end check all variables using check_vars - */ -void -test_nc_put_varm(void) -{ - int ncid; - int i; - int j; - int k; - int m; - int err; - int nslabs; - int nstarts; /* number of different starts */ - size_t start[MAX_RANK]; - size_t edge[MAX_RANK]; - size_t index[MAX_RANK]; - size_t mid[MAX_RANK]; - size_t count[MAX_RANK]; - size_t sstride[MAX_RANK]; - ptrdiff_t stride[MAX_RANK]; - ptrdiff_t imap[MAX_RANK]; - ptrdiff_t imap2[MAX_RANK]; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - double value; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - - for (i = 0; i < numVars; i++) { - assert(var_rank[i] <= MAX_RANK); - assert(var_nels[i] <= MAX_NELS); - for (j = 0; j < var_rank[i]; j++) { - start[j] = 0; - edge[j] = 1; - stride[j] = 1; - } - if (var_rank[i] > 0) { - j = var_rank[i] - 1; - // imap[j] = nctypelen(var_type[i]); /* in bytes */ - imap[j] = 1; /* in numbers of elements */ - for (; j > 0; j--) - imap[j-1] = imap[j] * var_shape[i][j]; - } - p = (char *) buf; - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase"); - value = hash( var_type[i], var_rank[i], index); - if (!inRange(value, var_type[i])) - value = 0; - err = dbl2nc(value, var_type[i], p); - IF (err) - error("error in dbl2nc"); - p += nctypelen(var_type[i]); - } - err = nc_put_varm(BAD_ID, i, start, edge, stride, imap, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_varm(ncid, BAD_VARID, start, edge, stride, imap, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - for (j = 0; j < var_rank[i]; j++) { - if (var_dimid[i][j] > 0) { /* skip record dim */ - start[j] = var_shape[i][j]; - err = nc_put_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_EINVALCOORDS && err != NC_EEDGE) - error("bad index: status = %d", err); - start[j] = 0; - edge[j] = var_shape[i][j] + 1; - err = nc_put_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_EEDGE) - error("bad edge: status = %d", err); - edge[j] = 1; - stride[j] = 0; - err = nc_put_varm(ncid, i, start, edge, stride, imap, buf); - IF (err != NC_ESTRIDE) - error("bad stride: status = %d", err); - stride[j] = 1; - } - } - /* Choose a random point dividing each dim into 2 parts */ - /* put 2^rank (nslabs) slabs so defined */ - nslabs = 1; - for (j = 0; j < var_rank[i]; j++) { - mid[j] = roll( var_shape[i][j] ); - nslabs *= 2; - } - /* bits of k determine whether to put lower or upper part of dim */ - /* choose random stride from 1 to edge */ - for (k = 0; k < nslabs; k++) { - nstarts = 1; - for (j = 0; j < var_rank[i]; j++) { - if ((k >> j) & 1) { - start[j] = 0; - edge[j] = mid[j]; - }else{ - start[j] = mid[j]; - edge[j] = var_shape[i][j] - mid[j]; - } - sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1; - imap2[j] = imap[j] * sstride[j]; - nstarts *= stride[j]; - } - for (m = 0; m < nstarts; m++) { - if (var_rank[i] == 0 && i%2 == 0) { - err = nc_put_varm(ncid, i, NULL, NULL, NULL, NULL, buf); - } else { - err = toMixedBase(m, var_rank[i], sstride, index); - IF (err) - error("error in toMixedBase"); - for (j = 0; j < var_rank[i]; j++) { - count[j] = 1 + (edge[j] - index[j] - 1) / stride[j]; - index[j] += start[j]; - } - /* Random choice of forward or backward */ -/* TODO - if ( roll(2) ) { - for (j = 0; j < var_rank[i]; j++) { - index[j] += (count[j] - 1) * stride[j]; - stride[j] = -stride[j]; - } - } - */ - j = fromMixedBase(var_rank[i], index, var_shape[i]); - p = (char *) buf + j * nctypelen(var_type[i]); - err = nc_put_varm(ncid, i, index, count, stride, imap2, p); - } - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - } - - check_vars(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_rename_var - * try with bad netCDF handle, check error - * try with bad variable handle, check error - * try renaming to existing variable name, check error - * check that proper rename worked with nc_inq_varid - * try in data mode, check error - */ -void -test_nc_rename_var(void) -{ - int ncid; - int varid; - int err; - int i; - char name[NC_MAX_NAME]; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_rename_var(ncid, BAD_VARID, "newName"); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - def_dims(ncid); - def_vars(ncid); - - /* Prefix "new_" to each name */ - for (i = 0; i < numVars; i++) { - err = nc_rename_var(BAD_ID, i, "newName"); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_rename_var(ncid, i, var_name[numVars-1]); - IF (err != NC_ENAMEINUSE) - error("duplicate name: status = %d", err); - (void) strcpy(name, "new_"); - (void) strcat(name, var_name[i]); - err = nc_rename_var(ncid, i, name); - IF (err) - error("nc_rename_var: %s", nc_strerror(err)); - err = nc_inq_varid(ncid, name, &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - IF (varid != i) - error("Unexpected varid"); - } - - /* Change to data mode */ - /* Try making names even longer. Then restore original names */ - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - (void) strcpy(name, "even_longer_"); - (void) strcat(name, var_name[i]); - err = nc_rename_var(ncid, i, name); - IF (err != NC_ENOTINDEFINE) - error("longer name in data mode: status = %d", err); - err = nc_rename_var(ncid, i, var_name[i]); - IF (err) - error("nc_rename_var: %s", nc_strerror(err)); - err = nc_inq_varid(ncid, var_name[i], &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - IF (varid != i) - error("Unexpected varid"); - } - - put_vars(ncid); - check_vars(ncid); - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -void -test_nc_put_att(void) -{ - int ncid; - int varid; - int i; - int j; - size_t k; - int err; - double buf[MAX_NELS]; /* (void *) buffer */ - char *p; /* (void *) pointer */ - char *name; /* of att */ - nc_type datatype; /* of att */ - size_t length; /* of att */ - double value; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - for (j = 0; j < NATTS(i); j++) { - name = ATT_NAME(i,j); - datatype = ATT_TYPE(i,j); - length = ATT_LEN(i,j); - err = nc_put_att(BAD_ID, varid, name, datatype, length, buf); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_put_att(ncid, varid, BAD_NAME, datatype, length, buf); - IF (err != NC_EBADNAME) - error("bad name: status = %d", err); - err = nc_put_att(ncid, BAD_VARID, name, datatype, length, buf); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_put_att(ncid, varid, name, BAD_TYPE, length, buf); - IF (err != NC_EBADTYPE) - error("bad type: status = %d", err); - p = (char *) buf; - for (k = 0; k < length; k++) { - value = hash(datatype, -1, &k ); - if (!inRange(value, datatype)) - value = 0; - err = dbl2nc(value, datatype, p); - IF (err) - error("error in dbl2nc"); - p += nctypelen(datatype); - } - err = nc_put_att(ncid, varid, name, datatype, length, buf); - IF (err) { - error("%s", nc_strerror(err)); - } - } - } - - check_atts(ncid); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_copy_att - * try with bad source or target netCDF handles, check error - * try with bad source or target variable handle, check error - * try with nonexisting attribute, check error - * check that NC_GLOBAL variable for source or target works - * check that new attribute put works with target in define mode - * check that old attribute put works with target in data mode - * check that changing type and length of an attribute work OK - * try with same ncid for source and target, different variables - * try with same ncid for source and target, same variable - */ -void -test_nc_copy_att(void) -{ - int ncid_in; - int ncid_out; - int varid; - int err; - int i; - int j; - char *name; /* of att */ - nc_type datatype; /* of att */ - size_t length; /* of att */ - char value; - - err = file_open(testfile, NC_NOWRITE, &ncid_in); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = file_create(scratch, NC_NOCLOBBER, &ncid_out); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid_out); - def_vars(ncid_out); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - for (j = 0; j < NATTS(i); j++) { - name = ATT_NAME(i,j); - err = nc_copy_att(ncid_in, BAD_VARID, name, ncid_out, varid); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_copy_att(ncid_in, varid, name, ncid_out, BAD_VARID); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - err = nc_copy_att(BAD_ID, varid, name, ncid_out, varid); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_copy_att(ncid_in, varid, name, BAD_ID, varid); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_copy_att(ncid_in, varid, "noSuch", ncid_out, varid); - IF (err != NC_ENOTATT) - error("bad attname: status = %d", err); - err = nc_copy_att(ncid_in, varid, name, ncid_out, varid); - IF (err) - error("nc_copy_att: %s", nc_strerror(err)); - err = nc_copy_att(ncid_out, varid, name, ncid_out, varid); - IF (err) - error("source = target: %s", nc_strerror(err)); - } - } - - err = nc_close(ncid_in); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* Close scratch. Reopen & check attributes */ - err = nc_close(ncid_out); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = file_open(scratch, NC_WRITE, &ncid_out); - IF (err) - error("nc_open: %s", nc_strerror(err)); - check_atts(ncid_out); - - /* - * change to define mode - * define single char. global att. ':a' with value 'A' - * This will be used as source for following copies - */ - err = nc_redef(ncid_out); - IF (err) - error("nc_redef: %s", nc_strerror(err)); - err = nc_put_att_text(ncid_out, NC_GLOBAL, "a", 1, "A"); - IF (err) - error("nc_put_att_text: %s", nc_strerror(err)); - - /* - * change to data mode - * Use scratch as both source & dest. - * try copy to existing att. change type & decrease length - * rename 1st existing att of each var (if any) 'a' - * if this att. exists them copy ':a' to it - */ - err = nc_enddef(ncid_out); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - if (NATTS(i) > 0 && ATT_LEN(i,j) > 0) { - err = nc_rename_att(ncid_out, i, att_name[i][0], "a"); - IF (err) - error("nc_rename_att: %s", nc_strerror(err)); - err = nc_copy_att(ncid_out, NC_GLOBAL, "a", ncid_out, i); - IF (err) - error("nc_copy_att: %s", nc_strerror(err)); - } - } - err = nc_close(ncid_out); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* Reopen & check */ - err = file_open(scratch, NC_WRITE, &ncid_out); - IF (err) - error("nc_open: %s", nc_strerror(err)); - for (i = 0; i < numVars; i++) { - if (NATTS(i) > 0 && ATT_LEN(i,j) > 0) { - err = nc_inq_att(ncid_out, i, "a", &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != NC_CHAR) - error("Unexpected type"); - IF (length != 1) - error("Unexpected length"); - err = nc_get_att_text(ncid_out, i, "a", &value); - IF (err) - error("nc_get_att_text: %s", nc_strerror(err)); - IF (value != 'A') - error("Unexpected value"); - } - } - - err = nc_close(ncid_out); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_rename_att - * try with bad netCDF handle, check error - * try with bad variable handle, check error - * try with nonexisting att name, check error - * try renaming to existing att name, check error - * check that proper rename worked with nc_inq_attid - * try in data mode, check error - */ -void -test_nc_rename_att(void) -{ - int ncid; - int varid; - int err; - int i; - int j; - size_t k; - int attnum; - char *attname; - char name[NC_MAX_NAME]; - char oldname[NC_MAX_NAME]; - char newname[NC_MAX_NAME]; - int nok = 0; /* count of valid comparisons */ - nc_type datatype; - nc_type atttype; - size_t length; - size_t attlength; - signed char text[MAX_NELS]; - double value[MAX_NELS]; - double expect; - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_rename_att(ncid, BAD_VARID, "abc", "newName"); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - for (j = 0; j < NATTS(i); j++) { - attname = ATT_NAME(i,j); - err = nc_rename_att(BAD_ID, varid, attname, "newName"); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_rename_att(ncid, varid, "noSuch", "newName"); - IF (err != NC_ENOTATT) - error("bad attname: status = %d", err); - (void) strcpy(newname, "new_"); - (void) strcat(newname, attname); - err = nc_rename_att(ncid, varid, attname, newname); - IF (err) - error("nc_rename_att: %s", nc_strerror(err)); - err = nc_inq_attid(ncid, varid, newname, &attnum); - IF (err) - error("nc_inq_attid: %s", nc_strerror(err)); - IF (attnum != j) - error("Unexpected attnum"); - } - } - - /* Close. Reopen & check */ - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = file_open(scratch, NC_WRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - for (j = 0; j < NATTS(i); j++) { - attname = ATT_NAME(i,j); - atttype = ATT_TYPE(i,j); - attlength = ATT_LEN(i,j); - (void) strcpy(newname, "new_"); - (void) strcat(newname, attname); - err = nc_inq_attname(ncid, varid, j, name); - IF (err) - error("nc_inq_attname: %s", nc_strerror(err)); - IF (strcmp(name, newname) != 0) - error("nc_inq_attname: unexpected name"); - err = nc_inq_att(ncid, varid, name, &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != atttype) - error("nc_inq_att: unexpected type"); - IF (length != attlength) - error("nc_inq_att: unexpected length"); - if (datatype == NC_CHAR) { - err = nc_get_att_text(ncid, varid, name, text); - IF (err) - error("nc_get_att_text: %s", nc_strerror(err)); - for (k = 0; k < attlength; k++) { - expect = hash(datatype, -1, &k); - IF (text[k] != expect) { - error("nc_get_att_text: unexpected value"); - } else { - nok++; - } - } - } else { - err = nc_get_att_double(ncid, varid, name, value); - IF (err) - error("nc_get_att_double: %s", nc_strerror(err)); - for (k = 0; k < attlength; k++) { - expect = hash(datatype, -1, &k); - if (inRange(expect, datatype)) { - IF (!equal(value[k],expect,datatype,NCT_DOUBLE)) { - error("nc_get_att_double: unexpected value"); - } else { - nok++; - } - } - } - } - } - } - print_nok(nok); - - /* Now in data mode */ - /* Try making names even longer. Then restore original names */ - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - for (j = 0; j < NATTS(i); j++) { - attname = ATT_NAME(i,j); - (void) strcpy(oldname, "new_"); - (void) strcat(oldname, attname); - (void) strcpy(newname, "even_longer_"); - (void) strcat(newname, attname); - err = nc_rename_att(ncid, varid, oldname, newname); - IF (err != NC_ENOTINDEFINE) - error("longer name in data mode: status = %d", err); - err = nc_rename_att(ncid, varid, oldname, attname); - IF (err) - error("nc_rename_att: %s", nc_strerror(err)); - err = nc_inq_attid(ncid, varid, attname, &attnum); - IF (err) - error("nc_inq_attid: %s", nc_strerror(err)); - IF (attnum != j) - error("Unexpected attnum"); - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_del_att - * try with bad netCDF handle, check error - * try with bad variable handle, check error - * try with nonexisting att name, check error - * check that proper delete worked using: - * nc_inq_attid, nc_inq_natts, nc_inq_varnatts - */ -void -test_nc_del_att(void) -{ - int ncid; - int err; - int i; - int j; - int attnum; - int natts; - int numatts; - int varid; - char *name; /* of att */ - - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - err = nc_del_att(ncid, BAD_VARID, "abc"); - IF (err != NC_ENOTVAR) - error("bad var id: status = %d", err); - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - numatts = NATTS(i); - for (j = 0; j < numatts; j++) { - name = ATT_NAME(i,j); - err = nc_del_att(BAD_ID, varid, name); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - err = nc_del_att(ncid, varid, "noSuch"); - IF (err != NC_ENOTATT) - error("bad attname: status = %d", err); - err = nc_del_att(ncid, varid, name); - IF (err) - error("nc_del_att: %s", nc_strerror(err)); - err = nc_inq_attid(ncid, varid, name, &attnum); - IF (err != NC_ENOTATT) - error("bad attname: status = %d", err); - if (i < 0) { - err = nc_inq_natts(ncid, &natts); - IF (err) - error("nc_inq_natts: %s", nc_strerror(err)); - IF (natts != numatts-j-1) - error("natts: expected %d, got %d", numatts-j-1, natts); - } - err = nc_inq_varnatts(ncid, varid, &natts); - IF (err) - error("nc_inq_varnatts: %s", nc_strerror(err)); - IF (natts != numatts-j-1) - error("natts: expected %d, got %d", numatts-j-1, natts); - } - } - - /* Close. Reopen & check no attributes left */ - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = file_open(scratch, NC_WRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_inq_natts(ncid, &natts); - IF (err) - error("nc_inq_natts: %s", nc_strerror(err)); - IF (natts != 0) - error("natts: expected %d, got %d", 0, natts); - for (i = -1; i < numVars; i++) { - varid = VARID(i); - err = nc_inq_varnatts(ncid, varid, &natts); - IF (err) - error("nc_inq_natts: %s", nc_strerror(err)); - IF (natts != 0) - error("natts: expected %d, got %d", 0, natts); - } - - /* restore attributes. change to data mode. try to delete */ - err = nc_redef(ncid); - IF (err) - error("nc_redef: %s", nc_strerror(err)); - put_atts(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - - for (i = -1; i < numVars; i++) { - varid = VARID(i); - numatts = NATTS(i); - for (j = 0; j < numatts; j++) { - name = ATT_NAME(i,j); - err = nc_del_att(ncid, varid, name); - IF (err != NC_ENOTINDEFINE) - error("in data mode: status = %d", err); - } - } - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - - -/* - * Test nc_set_fill - * try with bad netCDF handle, check error - * try in read-only mode, check error - * try with bad new_fillmode, check error - * try in data mode, check error - * check that proper set to NC_FILL works for record & non-record variables - * (note that it is not possible to test NC_NOFILL mode!) - * close file & create again for test using attribute _FillValue - */ -void -test_nc_set_fill(void) -{ - int ncid; - int varid; - int err; - int i; - int j; - int old_fillmode; - int nok = 0; /* count of valid comparisons */ - char text = 0; - double value = 0; - double fill; - size_t index[MAX_RANK]; - - /* bad ncid */ - err = nc_set_fill(BAD_ID, NC_NOFILL, &old_fillmode); - IF (err != NC_EBADID) - error("bad ncid: status = %d", err); - - /* try in read-only mode */ - err = file_open(testfile, NC_NOWRITE, &ncid); - IF (err) - error("nc_open: %s", nc_strerror(err)); - err = nc_set_fill(ncid, NC_NOFILL, &old_fillmode); - IF (err != NC_EPERM) - error("read-only: status = %d", err); - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - - /* create scratch */ - err = file_create(scratch, NC_NOCLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - - /* BAD_FILLMODE */ - err = nc_set_fill(ncid, BAD_FILLMODE, &old_fillmode); - IF (err != NC_EINVAL) - error("bad fillmode: status = %d", err); - - /* proper calls */ - err = nc_set_fill(ncid, NC_NOFILL, &old_fillmode); - IF (err) - error("nc_set_fill: %s", nc_strerror(err)); - IF (old_fillmode != NC_FILL) - error("Unexpected old fill mode: %d", old_fillmode); - err = nc_set_fill(ncid, NC_FILL, &old_fillmode); - IF (err) - error("nc_set_fill: %s", nc_strerror(err)); - IF (old_fillmode != NC_NOFILL) - error("Unexpected old fill mode: %d", old_fillmode); - - /* define dims & vars */ - def_dims(ncid); - def_vars(ncid); - - /* Change to data mode. Set fillmode again */ - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - err = nc_set_fill(ncid, NC_FILL, &old_fillmode); - IF (err) - error("nc_set_fill: %s", nc_strerror(err)); - IF (old_fillmode != NC_FILL) - error("Unexpected old fill mode: %d", old_fillmode); - - /* Write record number NRECS to force writing of preceding records */ - /* Assumes variable cr is char vector with UNLIMITED dimension */ - err = nc_inq_varid(ncid, "cr", &varid); - IF (err) - error("nc_inq_varid: %s", nc_strerror(err)); - index[0] = NRECS; - err = nc_put_var1_text(ncid, varid, index, &text); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - /* get all variables & check all values equal default fill */ - for (i = 0; i < numVars; i++) { - switch (var_type[i]) { - case NC_CHAR: fill = NC_FILL_CHAR; break; - case NC_BYTE: fill = NC_FILL_BYTE; break; - case NC_SHORT: fill = NC_FILL_SHORT; break; - case NC_INT: fill = NC_FILL_INT; break; - case NC_FLOAT: fill = NC_FILL_FLOAT; break; - case NC_DOUBLE: fill = NC_FILL_DOUBLE; break; - default: assert(0); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase"); - if (var_type[i] == NC_CHAR) { - err = nc_get_var1_text(ncid, i, index, &text); - IF (err) - error("nc_get_var1_text failed: %s", nc_strerror(err)); - value = text; - } else { - err = nc_get_var1_double(ncid, i, index, &value); - IF (err) - error("nc_get_var1_double failed: %s", nc_strerror(err)); - } - IF (value != fill && fabs((fill - value)/fill) > DBL_EPSILON) - error("\n\t\tValue expected: %-23.17e,\n\t\t read: %-23.17e\n", - fill, value); - else - nok++; - } - } - - /* close scratch & create again for test using attribute _FillValue */ - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = file_create(scratch, NC_CLOBBER, &ncid); - IF (err) { - error("nc_create: %s", nc_strerror(err)); - return; - } - def_dims(ncid); - def_vars(ncid); - - /* set _FillValue = 42 for all vars */ - text = fill = 42; - for (i = 0; i < numVars; i++) { - if (var_type[i] == NC_CHAR) { - err = nc_put_att_text(ncid, i, "_FillValue", 1, &text); - IF (err) - error("nc_put_att_text: %s", nc_strerror(err)); - } else { - err = nc_put_att_double(ncid, i, "_FillValue",var_type[i],1,&fill); - IF (err) - error("nc_put_att_double: %s", nc_strerror(err)); - } - } - - /* data mode. write records */ - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - index[0] = NRECS; - err = nc_put_var1_text(ncid, varid, index, &text); - IF (err) - error("nc_put_var1_text: %s", nc_strerror(err)); - - /* get all variables & check all values equal 42 */ - for (i = 0; i < numVars; i++) { - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase"); - if (var_type[i] == NC_CHAR) { - err = nc_get_var1_text(ncid, i, index, &text); - IF (err) - error("nc_get_var1_text failed: %s", nc_strerror(err)); - value = text; - } else { - err = nc_get_var1_double(ncid, i, index, &value); - IF (err) - error("nc_get_var1_double failed: %s", nc_strerror(err)); - } - IF (value != fill) - error(" Value expected: %g, read: %g\n", fill, value); - else - nok++; - } - } - print_nok(nok); - - err = nc_close(ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - err = remove(scratch); - IF (err) - error("remove of %s failed", scratch); -} - -/* This function gets the version of a netCDF file, 1 is for netCDF - classic, 2 for 64-bit offset format, (someday) 3 for HDF5 format, - 5 for 64-bit data format (CDF-5). -*/ -#define MAGIC_NUM_LEN 4 -static -int -nc_get_file_version(char *path, int *version) -{ - FILE *fp; - char magic[MAGIC_NUM_LEN]; - - /* Need two valid pointers - check for NULL. */ - if (!version || !path) - return NC_EINVAL; - - /* Figure out if this is a netcdf or hdf5 file. */ - if (!(fp = fopen(path, "r")) || - fread(magic, MAGIC_NUM_LEN, 1, fp) != 1) { - fclose(fp); - return errno; - } - fclose(fp); - if (strncmp(magic, "CDF", MAGIC_NUM_LEN-1)==0) - { - if (magic[MAGIC_NUM_LEN-1] == NC_FORMAT_CLASSIC || - magic[MAGIC_NUM_LEN-1] == NC_FORMAT_64BIT_OFFSET || - magic[MAGIC_NUM_LEN-1] == NC_FORMAT_CDF5) - *version = magic[MAGIC_NUM_LEN-1]; - else - return NC_ENOTNC; - } - /* tomorrow, tomorrow, I love you tomorrow, you're always a day - away! */ - /*if (magic[1] == 'H' && magic[2] == 'D' && magic[3] == 'F') - *version = 3;*/ - return NC_NOERR; -} - -/* - * Test nc_set_default_format - * try with bad default format - * try with NULL old_formatp - * try in data mode, check error - * check that proper set to NC_FILL works for record & non-record variables - * (note that it is not possible to test NC_NOFILL mode!) - * close file & create again for test using attribute _FillValue - */ -void -test_nc_set_default_format(void) -{ - int ncid; - int err; - int i; - int version; - int old_format; - - /* bad format */ - err = nc_set_default_format(BAD_DEFAULT_FORMAT, &old_format); - IF (err != NC_EINVAL) - error("bad default format: status = %d", err); - - /* NULL old_formatp */ - err = nc_set_default_format(NC_FORMAT_64BIT_OFFSET, NULL); - IF (err) - error("null old_fortmatp: status = %d", err); - - /* Cycle through available formats. */ - for(i=NC_FORMAT_CLASSIC; i -#include -#include -#include -#include -#include -#include -#define NO_NETCDF_2 1 -#include "netcdf.h" -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif -#include "error.h" - -#if defined(_CRAY) && !defined(_CRAYIEEE) && !defined(__crayx1) -#define CRAYFLOAT 1 /* CRAY Floating point */ -#elif defined(_SX) && defined(_FLOAT2) /* NEC SUPER-UX in CRAY mode */ -#define CRAYFLOAT 1 /* CRAY Floating point */ -#endif - - /* Limits of external types (based on those in ncx.h) */ - -#ifdef __CHAR_UNSIGNED__ -#define X_CHAR_MIN SCHAR_MIN -#define X_CHAR_MAX SCHAR_MAX -#else -#define X_CHAR_MIN CHAR_MIN -#define X_CHAR_MAX CHAR_MAX -#endif //__unsigned_char__ - -#define X_BYTE_MIN (-128) -#define X_BYTE_MAX 127 -#define X_SHORT_MIN (-32768) -#define X_SHORT_MAX 32767 -#define X_INT_MIN (-2147483647-1) -#define X_INT_MAX 2147483647 -#if defined(FLT_MAX_EXP) && FLT_MAX_EXP < 128 -/* FLT_MAX < X_FLOAT_MAX */ -#define X_FLOAT_MAX FLT_MAX -#else -#ifdef WIN32 /* Windows, of course, has to be a *little* different. */ -#define X_FLOAT_MAX 3.402823466e+38f -#else -#define X_FLOAT_MAX 3.40282347e+38f -#endif /* WIN32 */ -#endif -#define X_FLOAT_MIN (-X_FLOAT_MAX) -#if CRAYFLOAT -/* ldexp(1. - ldexp(.5 , -46), 1024) */ -#define X_DOUBLE_MAX 1.79769313486230e+308 -#else -/* scalb(1. - scalb(.5 , -52), 1024) */ -#define X_DOUBLE_MAX 1.7976931348623157e+308 -#endif -#define X_DOUBLE_MIN (-X_DOUBLE_MAX) - -#define X_SCHAR_MAX SCHAR_MAX -#define X_SCHAR_MIN SCHAR_MIN -#define X_UCHAR_MAX UCHAR_MAX -#define X_UCHAR_MIN 0 -#define X_UBYTE_MAX X_UCHAR_MAX -#define X_UBYTE_MIN X_UCHAR_MIN -#define X_USHORT_MAX USHRT_MAX -#define X_USHORT_MIN 0 -#define X_UINT_MAX UINT_MAX -#define X_UINT_MIN 0 - -#ifndef LLONG_MAX -#define LLONG_MAX 0x7fffffffffffffffLL -#endif -#ifndef LLONG_MIN -#define LLONG_MIN (-0x7fffffffffffffffLL-1) -#endif -#ifndef ULLONG_MAX -#define ULLONG_MAX 0xffffffffffffffffULL -#endif - -#ifndef X_INT64_MAX -#define X_INT64_MAX LLONG_MAX -#endif -#ifndef X_INT64_MIN -#define X_INT64_MIN LLONG_MIN -#endif -#ifndef X_UINT64_MAX -#define X_UINT64_MAX ULLONG_MAX -#endif -#ifndef X_UINT64_MIN -#define X_UINT64_MIN ULLONG_MIN -#endif - - -#if _SX /* NEC SUPER UX */ -#if _INT64 -#undef INT_MAX /* workaround cpp bug */ -#define INT_MAX X_INT_MAX -#undef INT_MIN /* workaround cpp bug */ -#define INT_MIN X_INT_MIN -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX X_INT_MAX -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN X_INT_MIN -#elif _LONG64 -#undef LONG_MAX /* workaround cpp bug */ -#define LONG_MAX 4294967295L -#undef LONG_MIN /* workaround cpp bug */ -#define LONG_MIN -4294967295L -#endif -#endif /* _SX */ - - -#ifndef MAX -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#endif /* MAX */ - -#ifndef MIN -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#endif /* MIN */ - -#ifndef ABS -#define ABS(x) ((x) < 0 ? -(x) : (x)) -#endif /* ABS */ - - - /* Parameters of test data */ - -#define NTYPES 11 -#define NDIMS 5 -#define NVARS 166 -#define NRECS 2 -#define NGATTS NTYPES -#define RECDIM 0 -#define MAX_RANK 3 -#define MAX_NELS 64 -#define MAX_DIM_LEN 4 -#define MAX_NATTS 3 - -extern int numGatts; /* number of global attributes */ -extern int numVars; /* number of variables */ -extern int numTypes; /* number of netCDF data types to test */ - - - /* Limits of internal types */ - -#define text_min SCHAR_MIN -#define uchar_min 0 -#define schar_min SCHAR_MIN -#define short_min SHRT_MIN -#define int_min INT_MIN -#define long_min LONG_MIN -#define float_min (-FLT_MAX) -#define double_min (-DBL_MAX) -#define ushort_min 0 -#define uint_min 0 -#define ulong_min 0 -#define int64_min LLONG_MIN -#define longlong_min int64_min -#define uint64_min 0 -#define ulonglong_min uint64_min - -#define text_max SCHAR_MAX -#define uchar_max UCHAR_MAX -#define schar_max SCHAR_MAX -#define short_max SHRT_MAX -#define int_max INT_MAX -#define long_max LONG_MAX -#define float_max FLT_MAX -#define double_max DBL_MAX -#define ushort_max USHRT_MAX -#define uint_max UINT_MAX -#define ulong_max ULONG_MAX -#define int64_max LLONG_MAX -#define longlong_max int64_max -#define uint64_max ULLONG_MAX -#define ulonglong_max uint64_max - - - - /* Examples of invalid argument values */ - -#define BAD_ID -1 /* invalid netCDF ID */ -#define BAD_DIMID -1 /* invalid dim ID */ -#define BAD_VARID -2 /* invalid var ID */ -#define BAD_ATTNUM -1 /* invalid att number */ -#define BAD_TYPE (nc_type) 0 /* invalid data type */ -#define BAD_FILLMODE -1 /* invalid fill mode */ -#define BAD_NAME "a/b" /* invalid name */ -#define BAD_DEFAULT_FORMAT 12 /* invalid default format */ - -#define LEN_OF(array) ((sizeof array) / (sizeof array[0])) - -#ifdef __cplusplus -extern "C" { -#endif - - - /* Non-standard internal types */ - -#ifdef HAVE_SYS_TYPES_H -# include -#endif - -typedef signed char text; -typedef signed char schar; - -#ifndef HAVE_USHORT -typedef unsigned short int ushort; -#endif - -#ifndef HAVE_UINT -typedef unsigned int uint; -#endif - -#ifndef HAVE_INT64 -typedef long long int64; -#endif - -#ifndef HAVE_UINT64 -typedef unsigned long long uint64; -#endif - - - /* Global variables - filenames */ - -extern char testfile[]; /* netCDF read-only test data */ -extern char scratch[]; /* netCDF test file for writing */ - - /* Global variables - command-line arguments */ - -extern int read_only; /* if 1, don't try to change files */ -extern int verbose; /* if 1, print details of tests */ -extern int nfails; /* number of failures in specific test */ -extern int max_nmpt; /* max. number of messages per test */ - - /* Global variables - test data */ - -extern char dim_name[NDIMS][3]; -extern size_t dim_len[NDIMS]; -extern char var_name[NVARS][2+MAX_RANK]; -extern nc_type var_type[NVARS]; -extern size_t var_rank[NVARS]; -extern int var_dimid[NVARS][MAX_RANK]; -extern size_t var_shape[NVARS][MAX_RANK]; -extern size_t var_nels[NVARS]; -extern size_t var_natts[NVARS]; -extern char att_name[NVARS][MAX_NATTS][2]; -extern char gatt_name[NGATTS][3]; -extern nc_type att_type[NVARS][NGATTS]; -extern nc_type gatt_type[NGATTS]; -extern size_t att_len[NVARS][MAX_NATTS]; -extern size_t gatt_len[NGATTS]; - - - /* Macros for accessing attribute test data */ - /* varid is -1 for NC_GLOBAL so can do global atts in same loop */ - -#define VARID(varid) (varid < 0 ? NC_GLOBAL : varid) -#define NATTS(varid) (varid < 0 ? numGatts : var_natts[varid]) -#define ATT_NAME(varid,j) (varid < 0 ? gatt_name[j] : att_name[varid][j]) -#define ATT_TYPE(varid,j) (varid < 0 ? gatt_type[j] : att_type[varid][j]) -#define ATT_LEN(varid,j) (varid < 0 ? gatt_len[j] : att_len[varid][j]) - -extern const char *s_nc_type(nc_type); - -extern void test_nc_strerror(void); -extern void test_nc_open(void); -extern void test_nc_close(void); - -extern void test_nc_inq(void); -extern void test_nc_inq_natts(void); -extern void test_nc_inq_ndims(void); -extern void test_nc_inq_nvars(void); -extern void test_nc_inq_unlimdim(void); - -extern void test_nc_inq_dimid(void); -extern void test_nc_inq_dim(void); -extern void test_nc_inq_dimlen(void); -extern void test_nc_inq_dimname(void); - -extern void test_nc_inq_varid(void); -extern void test_nc_inq_vardimid(void); -extern void test_nc_inq_varname(void); -extern void test_nc_inq_varnatts(void); -extern void test_nc_inq_varndims(void); -extern void test_nc_inq_vartype(void); -extern void test_nc_inq_var(void); - -extern void test_nc_get_var_double(void); -extern void test_nc_get_var_float(void); -extern void test_nc_get_var_int(void); -extern void test_nc_get_var_long(void); -extern void test_nc_get_var_schar(void); -extern void test_nc_get_var_short(void); -extern void test_nc_get_var_text(void); -extern void test_nc_get_var_uchar(void); -extern void test_nc_get_var(void); -extern void test_nc_get_var_ushort(void); -extern void test_nc_get_var_uint(void); -extern void test_nc_get_var_longlong(void); -extern void test_nc_get_var_ulonglong(void); - -extern void test_nc_get_var1_double(void); -extern void test_nc_get_var1_float(void); -extern void test_nc_get_var1_int(void); -extern void test_nc_get_var1_long(void); -extern void test_nc_get_var1_schar(void); -extern void test_nc_get_var1_short(void); -extern void test_nc_get_var1_text(void); -extern void test_nc_get_var1_uchar(void); -extern void test_nc_get_var1(void); -extern void test_nc_get_var1_ushort(void); -extern void test_nc_get_var1_uint(void); -extern void test_nc_get_var1_longlong(void); -extern void test_nc_get_var1_ulonglong(void); - -extern void test_nc_get_vara_double(void); -extern void test_nc_get_vara_float(void); -extern void test_nc_get_vara_int(void); -extern void test_nc_get_vara_long(void); -extern void test_nc_get_vara_schar(void); -extern void test_nc_get_vara_short(void); -extern void test_nc_get_vara_text(void); -extern void test_nc_get_vara_uchar(void); -extern void test_nc_get_vara(void); -extern void test_nc_get_vara_ushort(void); -extern void test_nc_get_vara_uint(void); -extern void test_nc_get_vara_longlong(void); -extern void test_nc_get_vara_ulonglong(void); - -extern void test_nc_get_vars(void); -extern void test_nc_get_vars_double(void); -extern void test_nc_get_vars_float(void); -extern void test_nc_get_vars_int(void); -extern void test_nc_get_vars_long(void); -extern void test_nc_get_vars_schar(void); -extern void test_nc_get_vars_short(void); -extern void test_nc_get_vars_text(void); -extern void test_nc_get_vars_uchar(void); -extern void test_nc_get_vars(void); -extern void test_nc_get_vars_ushort(void); -extern void test_nc_get_vars_uint(void); -extern void test_nc_get_vars_longlong(void); -extern void test_nc_get_vars_ulonglong(void); - -extern void test_nc_get_varm(void); -extern void test_nc_get_varm_double(void); -extern void test_nc_get_varm_float(void); -extern void test_nc_get_varm_int(void); -extern void test_nc_get_varm_long(void); -extern void test_nc_get_varm_schar(void); -extern void test_nc_get_varm_short(void); -extern void test_nc_get_varm_text(void); -extern void test_nc_get_varm_uchar(void); -extern void test_nc_get_varm(void); -extern void test_nc_get_varm_ushort(void); -extern void test_nc_get_varm_uint(void); -extern void test_nc_get_varm_longlong(void); -extern void test_nc_get_varm_ulonglong(void); - -extern void test_nc_get_att(void); -extern void test_nc_get_att_double(void); -extern void test_nc_get_att_float(void); -extern void test_nc_get_att_int(void); -extern void test_nc_get_att_long(void); -extern void test_nc_get_att_schar(void); -extern void test_nc_get_att_short(void); -extern void test_nc_get_att_text(void); -extern void test_nc_get_att_uchar(void); -extern void test_nc_get_att_ushort(void); -extern void test_nc_get_att_uint(void); -extern void test_nc_get_att_longlong(void); -extern void test_nc_get_att_ulonglong(void); - -extern void test_nc_put_att(void); -extern void test_nc_put_var_double(void); -extern void test_nc_put_var_float(void); -extern void test_nc_put_var_int(void); -extern void test_nc_put_var_long(void); -extern void test_nc_put_var_schar(void); -extern void test_nc_put_var_short(void); -extern void test_nc_put_var_text(void); -extern void test_nc_put_var_uchar(void); -extern void test_nc_put_var(void); -extern void test_nc_put_var_ushort(void); -extern void test_nc_put_var_uint(void); -extern void test_nc_put_var_longlong(void); -extern void test_nc_put_var_ulonglong(void); - -extern void test_nc_put_var1_double(void); -extern void test_nc_put_var1_float(void); -extern void test_nc_put_var1_int(void); -extern void test_nc_put_var1_long(void); -extern void test_nc_put_var1_schar(void); -extern void test_nc_put_var1_short(void); -extern void test_nc_put_var1_text(void); -extern void test_nc_put_var1_uchar(void); -extern void test_nc_put_var1(void); -extern void test_nc_put_var1_ushort(void); -extern void test_nc_put_var1_uint(void); -extern void test_nc_put_var1_longlong(void); -extern void test_nc_put_var1_ulonglong(void); - -extern void test_nc_put_vara_double(void); -extern void test_nc_put_vara_float(void); -extern void test_nc_put_vara_int(void); -extern void test_nc_put_vara_long(void); -extern void test_nc_put_vara_schar(void); -extern void test_nc_put_vara_short(void); -extern void test_nc_put_vara_text(void); -extern void test_nc_put_vara_uchar(void); -extern void test_nc_put_vara(void); -extern void test_nc_put_vara_ushort(void); -extern void test_nc_put_vara_uint(void); -extern void test_nc_put_vara_longlong(void); -extern void test_nc_put_vara_ulonglong(void); - -extern void test_nc_put_vars_double(void); -extern void test_nc_put_vars_float(void); -extern void test_nc_put_vars_int(void); -extern void test_nc_put_vars_long(void); -extern void test_nc_put_vars_schar(void); -extern void test_nc_put_vars_short(void); -extern void test_nc_put_vars_text(void); -extern void test_nc_put_vars_uchar(void); -extern void test_nc_put_vars(void); -extern void test_nc_put_vars_ushort(void); -extern void test_nc_put_vars_uint(void); -extern void test_nc_put_vars_longlong(void); -extern void test_nc_put_vars_ulonglong(void); - -extern void test_nc_put_varm_double(void); -extern void test_nc_put_varm_float(void); -extern void test_nc_put_varm_int(void); -extern void test_nc_put_varm_long(void); -extern void test_nc_put_varm_schar(void); -extern void test_nc_put_varm_short(void); -extern void test_nc_put_varm_text(void); -extern void test_nc_put_varm_uchar(void); -extern void test_nc_put_varm(void); -extern void test_nc_put_varm_ushort(void); -extern void test_nc_put_varm_uint(void); -extern void test_nc_put_varm_longlong(void); -extern void test_nc_put_varm_ulonglong(void); - -extern void test_nc_put_att_double(void); -extern void test_nc_put_att_float(void); -extern void test_nc_put_att_int(void); -extern void test_nc_put_att_long(void); -extern void test_nc_put_att_schar(void); -extern void test_nc_put_att_short(void); -extern void test_nc_put_att_text(void); -extern void test_nc_put_att_uchar(void); -extern void test_nc_put_att_ushort(void); -extern void test_nc_put_att_uint(void); -extern void test_nc_put_att_longlong(void); -extern void test_nc_put_att_ulonglong(void); - -extern void test_nc_create(void); -extern void test_nc_redef(void); -extern void test_nc_enddef(void); -extern void test_nc_sync(void); -extern void test_nc_abort(void); -extern void test_nc_def_dim(void); -extern void test_nc_rename_dim(void); -extern void test_nc_def_var(void); -extern void test_nc_rename_var(void); -extern void test_nc_copy_att(void); - -extern void test_nc_inq_att(void); -extern void test_nc_inq_attname(void); -extern void test_nc_inq_attid(void); -extern void test_nc_inq_attlen(void); -extern void test_nc_inq_atttype(void); - -extern void test_nc_rename_att(void); -extern void test_nc_del_att(void); -extern void test_nc_set_fill(void); -extern void test_nc_set_default_format(void); - -void print_nok(int nok); - -int inRange(const double value, const nc_type datatype); - -/* - * internal types - */ -typedef enum { - NCT_UNSPECIFIED = 0, - NCT_UCHAR = 1, /* unsigned char */ - NCT_TEXT = 16, /* char */ -#define NCT_CHAR NCT_TEXT - NCT_SCHAR = 17, /* signed char */ - NCT_SHORT = 18, /* short */ - NCT_INT = 20, /* int */ - NCT_LONG = 22, /* long */ - NCT_FLOAT = 36, /* float */ - NCT_DOUBLE = 40, /* double */ - NCT_USHORT = 41, - NCT_UINT = 42, - NCT_INT64 = 43, -#define NCT_LONGLONG NCT_INT64 - NCT_UINT64 = 44 -#define NCT_ULONGLONG NCT_UINT64 -} nct_itype; - -int inRange3(const double value, const nc_type datatype, const nct_itype itype); - -int equal(const double x, const double y, nc_type extType, nct_itype itype); - -int int_vec_eq(const int *v1, const int *v2, const int n); - -int roll( int n ); - -int -toMixedBase( - size_t number, /* number to be converted to mixed base */ - size_t length, - const size_t base[], /* dimensioned [length], base[0] ignored */ - size_t result[]); /* dimensioned [length] */ - -size_t -fromMixedBase( - size_t length, - size_t number[], /* dimensioned [length] */ - size_t base[]); /* dimensioned [length], base[0] ignored */ - -int nc2dbl ( const nc_type datatype, const void *p, double *result); - -int dbl2nc ( const double d, const nc_type datatype, void *p); - -double hash( const nc_type type, const int rank, const size_t *index ); - -double hash4( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype); - -void init_gvars(void); - -void def_dims(int ncid); - -void def_vars(int ncid); - -void put_atts(int ncid); - -void put_vars(int ncid); - -void write_file(char *filename); - -void check_dims(int ncid); - -void check_vars(int ncid); - -void check_atts(int ncid); - -void check_file(char *filename); - -int file_create(const char *filename, int cmode, int *ncid); - -int file_open(const char *filename, int omode, int *ncid); - -#ifdef __cplusplus -} -#endif diff --git a/contrib/netcdf/4.4.1.1/nc_test/tst_atts.c b/contrib/netcdf/4.4.1.1/nc_test/tst_atts.c deleted file mode 100644 index 64edf3ac6e7..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/tst_atts.c +++ /dev/null @@ -1,2496 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. - See COPYRIGHT file for conditions of use. - - This is a very simple example which writes a netCDF file with - Unicode names encoded with UTF-8. It is the NETCDF3 equivalent - of tst_unicode.c - - $Id: tst_atts.c 2792 2014-10-27 06:02:59Z wkliao $ -*/ - -#include -#include "err_macros.h" -#include -#include - -/* The data file we will create. */ -#define FILE_NAME "tst_atts.nc" - -void -check_err(const int stat, const int line, const char *file) { - if (stat != NC_NOERR) { - (void)fprintf(stderr,"line %d of %s: %s\n", line, file, nc_strerror(stat)); - fflush(stderr); - exit(1); - } -} - -int -create_file() -{ - int stat; /* return status */ - int ncid; /* netCDF id */ - - /* dimension ids */ - int Dr_dim; - int D1_dim; - int D2_dim; - int D3_dim; - int D4_dim; - - /* dimension lengths */ - size_t Dr_len = NC_UNLIMITED; - size_t D1_len = 1; - size_t D2_len = 2; - size_t D3_len = 3; - size_t D4_len = 4; - - /* variable ids */ - int c_id; - int b_id; - int s_id; - int i_id; - int f_id; - int d_id; - int cr_id; - int br_id; - int sr_id; - int ir_id; - int fr_id; - int dr_id; - int c1_id; - int b1_id; - int s1_id; - int i1_id; - int f1_id; - int d1_id; - int c2_id; - int b2_id; - int s2_id; - int i2_id; - int f2_id; - int d2_id; - int c3_id; - int b3_id; - int s3_id; - int i3_id; - int f3_id; - int d3_id; - int c4_id; - int b4_id; - int s4_id; - int i4_id; - int f4_id; - int d4_id; - int cr1_id; - int br2_id; - int sr3_id; - int ir4_id; - int f11_id; - int d12_id; - int c13_id; - int b14_id; - int s21_id; - int i22_id; - int f23_id; - int d24_id; - int c31_id; - int b32_id; - int s33_id; - int i34_id; - int f41_id; - int d42_id; - int c43_id; - int b44_id; - int sr11_id; - int ir12_id; - int fr13_id; - int dr14_id; - int cr21_id; - int br22_id; - int sr23_id; - int ir24_id; - int fr31_id; - int dr32_id; - int cr33_id; - int br34_id; - int sr41_id; - int ir42_id; - int fr43_id; - int dr44_id; - int c111_id; - int b112_id; - int s113_id; - int i114_id; - int f121_id; - int d122_id; - int c123_id; - int b124_id; - int s131_id; - int i132_id; - int f133_id; - int d134_id; - int c141_id; - int b142_id; - int s143_id; - int i144_id; - int f211_id; - int d212_id; - int c213_id; - int b214_id; - int s221_id; - int i222_id; - int f223_id; - int d224_id; - int c231_id; - int b232_id; - int s233_id; - int i234_id; - int f241_id; - int d242_id; - int c243_id; - int b244_id; - int s311_id; - int i312_id; - int f313_id; - int d314_id; - int c321_id; - int b322_id; - int s323_id; - int i324_id; - int f331_id; - int d332_id; - int c333_id; - int b334_id; - int s341_id; - int i342_id; - int f343_id; - int d344_id; - int c411_id; - int b412_id; - int s413_id; - int i414_id; - int f421_id; - int d422_id; - int c423_id; - int b424_id; - int s431_id; - int i432_id; - int f433_id; - int d434_id; - int c441_id; - int b442_id; - int s443_id; - int i444_id; - - /* rank (number of dimensions) for each variable */ -# define RANK_c 0 -# define RANK_b 0 -# define RANK_s 0 -# define RANK_i 0 -# define RANK_f 0 -# define RANK_d 0 -# define RANK_cr 1 -# define RANK_br 1 -# define RANK_sr 1 -# define RANK_ir 1 -# define RANK_fr 1 -# define RANK_dr 1 -# define RANK_c1 1 -# define RANK_b1 1 -# define RANK_s1 1 -# define RANK_i1 1 -# define RANK_f1 1 -# define RANK_d1 1 -# define RANK_c2 1 -# define RANK_b2 1 -# define RANK_s2 1 -# define RANK_i2 1 -# define RANK_f2 1 -# define RANK_d2 1 -# define RANK_c3 1 -# define RANK_b3 1 -# define RANK_s3 1 -# define RANK_i3 1 -# define RANK_f3 1 -# define RANK_d3 1 -# define RANK_c4 1 -# define RANK_b4 1 -# define RANK_s4 1 -# define RANK_i4 1 -# define RANK_f4 1 -# define RANK_d4 1 -# define RANK_cr1 2 -# define RANK_br2 2 -# define RANK_sr3 2 -# define RANK_ir4 2 -# define RANK_f11 2 -# define RANK_d12 2 -# define RANK_c13 2 -# define RANK_b14 2 -# define RANK_s21 2 -# define RANK_i22 2 -# define RANK_f23 2 -# define RANK_d24 2 -# define RANK_c31 2 -# define RANK_b32 2 -# define RANK_s33 2 -# define RANK_i34 2 -# define RANK_f41 2 -# define RANK_d42 2 -# define RANK_c43 2 -# define RANK_b44 2 -# define RANK_sr11 3 -# define RANK_ir12 3 -# define RANK_fr13 3 -# define RANK_dr14 3 -# define RANK_cr21 3 -# define RANK_br22 3 -# define RANK_sr23 3 -# define RANK_ir24 3 -# define RANK_fr31 3 -# define RANK_dr32 3 -# define RANK_cr33 3 -# define RANK_br34 3 -# define RANK_sr41 3 -# define RANK_ir42 3 -# define RANK_fr43 3 -# define RANK_dr44 3 -# define RANK_c111 3 -# define RANK_b112 3 -# define RANK_s113 3 -# define RANK_i114 3 -# define RANK_f121 3 -# define RANK_d122 3 -# define RANK_c123 3 -# define RANK_b124 3 -# define RANK_s131 3 -# define RANK_i132 3 -# define RANK_f133 3 -# define RANK_d134 3 -# define RANK_c141 3 -# define RANK_b142 3 -# define RANK_s143 3 -# define RANK_i144 3 -# define RANK_f211 3 -# define RANK_d212 3 -# define RANK_c213 3 -# define RANK_b214 3 -# define RANK_s221 3 -# define RANK_i222 3 -# define RANK_f223 3 -# define RANK_d224 3 -# define RANK_c231 3 -# define RANK_b232 3 -# define RANK_s233 3 -# define RANK_i234 3 -# define RANK_f241 3 -# define RANK_d242 3 -# define RANK_c243 3 -# define RANK_b244 3 -# define RANK_s311 3 -# define RANK_i312 3 -# define RANK_f313 3 -# define RANK_d314 3 -# define RANK_c321 3 -# define RANK_b322 3 -# define RANK_s323 3 -# define RANK_i324 3 -# define RANK_f331 3 -# define RANK_d332 3 -# define RANK_c333 3 -# define RANK_b334 3 -# define RANK_s341 3 -# define RANK_i342 3 -# define RANK_f343 3 -# define RANK_d344 3 -# define RANK_c411 3 -# define RANK_b412 3 -# define RANK_s413 3 -# define RANK_i414 3 -# define RANK_f421 3 -# define RANK_d422 3 -# define RANK_c423 3 -# define RANK_b424 3 -# define RANK_s431 3 -# define RANK_i432 3 -# define RANK_f433 3 -# define RANK_d434 3 -# define RANK_c441 3 -# define RANK_b442 3 -# define RANK_s443 3 -# define RANK_i444 3 - - /* variable shapes */ - int cr_dims[RANK_cr]; - int br_dims[RANK_br]; - int sr_dims[RANK_sr]; - int ir_dims[RANK_ir]; - int fr_dims[RANK_fr]; - int dr_dims[RANK_dr]; - int c1_dims[RANK_c1]; - int b1_dims[RANK_b1]; - int s1_dims[RANK_s1]; - int i1_dims[RANK_i1]; - int f1_dims[RANK_f1]; - int d1_dims[RANK_d1]; - int c2_dims[RANK_c2]; - int b2_dims[RANK_b2]; - int s2_dims[RANK_s2]; - int i2_dims[RANK_i2]; - int f2_dims[RANK_f2]; - int d2_dims[RANK_d2]; - int c3_dims[RANK_c3]; - int b3_dims[RANK_b3]; - int s3_dims[RANK_s3]; - int i3_dims[RANK_i3]; - int f3_dims[RANK_f3]; - int d3_dims[RANK_d3]; - int c4_dims[RANK_c4]; - int b4_dims[RANK_b4]; - int s4_dims[RANK_s4]; - int i4_dims[RANK_i4]; - int f4_dims[RANK_f4]; - int d4_dims[RANK_d4]; - int cr1_dims[RANK_cr1]; - int br2_dims[RANK_br2]; - int sr3_dims[RANK_sr3]; - int ir4_dims[RANK_ir4]; - int f11_dims[RANK_f11]; - int d12_dims[RANK_d12]; - int c13_dims[RANK_c13]; - int b14_dims[RANK_b14]; - int s21_dims[RANK_s21]; - int i22_dims[RANK_i22]; - int f23_dims[RANK_f23]; - int d24_dims[RANK_d24]; - int c31_dims[RANK_c31]; - int b32_dims[RANK_b32]; - int s33_dims[RANK_s33]; - int i34_dims[RANK_i34]; - int f41_dims[RANK_f41]; - int d42_dims[RANK_d42]; - int c43_dims[RANK_c43]; - int b44_dims[RANK_b44]; - int sr11_dims[RANK_sr11]; - int ir12_dims[RANK_ir12]; - int fr13_dims[RANK_fr13]; - int dr14_dims[RANK_dr14]; - int cr21_dims[RANK_cr21]; - int br22_dims[RANK_br22]; - int sr23_dims[RANK_sr23]; - int ir24_dims[RANK_ir24]; - int fr31_dims[RANK_fr31]; - int dr32_dims[RANK_dr32]; - int cr33_dims[RANK_cr33]; - int br34_dims[RANK_br34]; - int sr41_dims[RANK_sr41]; - int ir42_dims[RANK_ir42]; - int fr43_dims[RANK_fr43]; - int dr44_dims[RANK_dr44]; - int c111_dims[RANK_c111]; - int b112_dims[RANK_b112]; - int s113_dims[RANK_s113]; - int i114_dims[RANK_i114]; - int f121_dims[RANK_f121]; - int d122_dims[RANK_d122]; - int c123_dims[RANK_c123]; - int b124_dims[RANK_b124]; - int s131_dims[RANK_s131]; - int i132_dims[RANK_i132]; - int f133_dims[RANK_f133]; - int d134_dims[RANK_d134]; - int c141_dims[RANK_c141]; - int b142_dims[RANK_b142]; - int s143_dims[RANK_s143]; - int i144_dims[RANK_i144]; - int f211_dims[RANK_f211]; - int d212_dims[RANK_d212]; - int c213_dims[RANK_c213]; - int b214_dims[RANK_b214]; - int s221_dims[RANK_s221]; - int i222_dims[RANK_i222]; - int f223_dims[RANK_f223]; - int d224_dims[RANK_d224]; - int c231_dims[RANK_c231]; - int b232_dims[RANK_b232]; - int s233_dims[RANK_s233]; - int i234_dims[RANK_i234]; - int f241_dims[RANK_f241]; - int d242_dims[RANK_d242]; - int c243_dims[RANK_c243]; - int b244_dims[RANK_b244]; - int s311_dims[RANK_s311]; - int i312_dims[RANK_i312]; - int f313_dims[RANK_f313]; - int d314_dims[RANK_d314]; - int c321_dims[RANK_c321]; - int b322_dims[RANK_b322]; - int s323_dims[RANK_s323]; - int i324_dims[RANK_i324]; - int f331_dims[RANK_f331]; - int d332_dims[RANK_d332]; - int c333_dims[RANK_c333]; - int b334_dims[RANK_b334]; - int s341_dims[RANK_s341]; - int i342_dims[RANK_i342]; - int f343_dims[RANK_f343]; - int d344_dims[RANK_d344]; - int c411_dims[RANK_c411]; - int b412_dims[RANK_b412]; - int s413_dims[RANK_s413]; - int i414_dims[RANK_i414]; - int f421_dims[RANK_f421]; - int d422_dims[RANK_d422]; - int c423_dims[RANK_c423]; - int b424_dims[RANK_b424]; - int s431_dims[RANK_s431]; - int i432_dims[RANK_i432]; - int f433_dims[RANK_f433]; - int d434_dims[RANK_d434]; - int c441_dims[RANK_c441]; - int b442_dims[RANK_b442]; - int s443_dims[RANK_s443]; - int i444_dims[RANK_i444]; - - /* enter define mode */ -#ifdef TEST_PNETCDF - stat = nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid); -#else - stat = nc_create(FILE_NAME, NC_CLOBBER, &ncid); -#endif - check_err(stat,__LINE__,__FILE__); - - /* define dimensions */ - stat = nc_def_dim(ncid, "Dr", Dr_len, &Dr_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D1", D1_len, &D1_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D2", D2_len, &D2_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D3", D3_len, &D3_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D4", D4_len, &D4_dim); - check_err(stat,__LINE__,__FILE__); - - /* define variables */ - - stat = nc_def_var(ncid, "c", NC_CHAR, RANK_c, 0, &c_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "b", NC_BYTE, RANK_b, 0, &b_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "s", NC_SHORT, RANK_s, 0, &s_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "i", NC_INT, RANK_i, 0, &i_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "f", NC_FLOAT, RANK_f, 0, &f_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "d", NC_DOUBLE, RANK_d, 0, &d_id); - check_err(stat,__LINE__,__FILE__); - - cr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "cr", NC_CHAR, RANK_cr, cr_dims, &cr_id); - check_err(stat,__LINE__,__FILE__); - - br_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "br", NC_BYTE, RANK_br, br_dims, &br_id); - check_err(stat,__LINE__,__FILE__); - - sr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "sr", NC_SHORT, RANK_sr, sr_dims, &sr_id); - check_err(stat,__LINE__,__FILE__); - - ir_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "ir", NC_INT, RANK_ir, ir_dims, &ir_id); - check_err(stat,__LINE__,__FILE__); - - fr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "fr", NC_FLOAT, RANK_fr, fr_dims, &fr_id); - check_err(stat,__LINE__,__FILE__); - - dr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "dr", NC_DOUBLE, RANK_dr, dr_dims, &dr_id); - check_err(stat,__LINE__,__FILE__); - - c1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "c1", NC_CHAR, RANK_c1, c1_dims, &c1_id); - check_err(stat,__LINE__,__FILE__); - - b1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "b1", NC_BYTE, RANK_b1, b1_dims, &b1_id); - check_err(stat,__LINE__,__FILE__); - - s1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "s1", NC_SHORT, RANK_s1, s1_dims, &s1_id); - check_err(stat,__LINE__,__FILE__); - - i1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "i1", NC_INT, RANK_i1, i1_dims, &i1_id); - check_err(stat,__LINE__,__FILE__); - - f1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "f1", NC_FLOAT, RANK_f1, f1_dims, &f1_id); - check_err(stat,__LINE__,__FILE__); - - d1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "d1", NC_DOUBLE, RANK_d1, d1_dims, &d1_id); - check_err(stat,__LINE__,__FILE__); - - c2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "c2", NC_CHAR, RANK_c2, c2_dims, &c2_id); - check_err(stat,__LINE__,__FILE__); - - b2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "b2", NC_BYTE, RANK_b2, b2_dims, &b2_id); - check_err(stat,__LINE__,__FILE__); - - s2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "s2", NC_SHORT, RANK_s2, s2_dims, &s2_id); - check_err(stat,__LINE__,__FILE__); - - i2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "i2", NC_INT, RANK_i2, i2_dims, &i2_id); - check_err(stat,__LINE__,__FILE__); - - f2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "f2", NC_FLOAT, RANK_f2, f2_dims, &f2_id); - check_err(stat,__LINE__,__FILE__); - - d2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "d2", NC_DOUBLE, RANK_d2, d2_dims, &d2_id); - check_err(stat,__LINE__,__FILE__); - - c3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "c3", NC_CHAR, RANK_c3, c3_dims, &c3_id); - check_err(stat,__LINE__,__FILE__); - - b3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "b3", NC_BYTE, RANK_b3, b3_dims, &b3_id); - check_err(stat,__LINE__,__FILE__); - - s3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "s3", NC_SHORT, RANK_s3, s3_dims, &s3_id); - check_err(stat,__LINE__,__FILE__); - - i3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "i3", NC_INT, RANK_i3, i3_dims, &i3_id); - check_err(stat,__LINE__,__FILE__); - - f3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "f3", NC_FLOAT, RANK_f3, f3_dims, &f3_id); - check_err(stat,__LINE__,__FILE__); - - d3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "d3", NC_DOUBLE, RANK_d3, d3_dims, &d3_id); - check_err(stat,__LINE__,__FILE__); - - c4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "c4", NC_CHAR, RANK_c4, c4_dims, &c4_id); - check_err(stat,__LINE__,__FILE__); - - b4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "b4", NC_BYTE, RANK_b4, b4_dims, &b4_id); - check_err(stat,__LINE__,__FILE__); - - s4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "s4", NC_SHORT, RANK_s4, s4_dims, &s4_id); - check_err(stat,__LINE__,__FILE__); - - i4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "i4", NC_INT, RANK_i4, i4_dims, &i4_id); - check_err(stat,__LINE__,__FILE__); - - f4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "f4", NC_FLOAT, RANK_f4, f4_dims, &f4_id); - check_err(stat,__LINE__,__FILE__); - - d4_dims[0] = D4_dim; - stat = nc_def_var(ncid, "d4", NC_DOUBLE, RANK_d4, d4_dims, &d4_id); - check_err(stat,__LINE__,__FILE__); - - cr1_dims[0] = Dr_dim; - cr1_dims[1] = D1_dim; - stat = nc_def_var(ncid, "cr1", NC_CHAR, RANK_cr1, cr1_dims, &cr1_id); - check_err(stat,__LINE__,__FILE__); - - br2_dims[0] = Dr_dim; - br2_dims[1] = D2_dim; - stat = nc_def_var(ncid, "br2", NC_BYTE, RANK_br2, br2_dims, &br2_id); - check_err(stat,__LINE__,__FILE__); - - sr3_dims[0] = Dr_dim; - sr3_dims[1] = D3_dim; - stat = nc_def_var(ncid, "sr3", NC_SHORT, RANK_sr3, sr3_dims, &sr3_id); - check_err(stat,__LINE__,__FILE__); - - ir4_dims[0] = Dr_dim; - ir4_dims[1] = D4_dim; - stat = nc_def_var(ncid, "ir4", NC_INT, RANK_ir4, ir4_dims, &ir4_id); - check_err(stat,__LINE__,__FILE__); - - f11_dims[0] = D1_dim; - f11_dims[1] = D1_dim; - stat = nc_def_var(ncid, "f11", NC_FLOAT, RANK_f11, f11_dims, &f11_id); - check_err(stat,__LINE__,__FILE__); - - d12_dims[0] = D1_dim; - d12_dims[1] = D2_dim; - stat = nc_def_var(ncid, "d12", NC_DOUBLE, RANK_d12, d12_dims, &d12_id); - check_err(stat,__LINE__,__FILE__); - - c13_dims[0] = D1_dim; - c13_dims[1] = D3_dim; - stat = nc_def_var(ncid, "c13", NC_CHAR, RANK_c13, c13_dims, &c13_id); - check_err(stat,__LINE__,__FILE__); - - b14_dims[0] = D1_dim; - b14_dims[1] = D4_dim; - stat = nc_def_var(ncid, "b14", NC_BYTE, RANK_b14, b14_dims, &b14_id); - check_err(stat,__LINE__,__FILE__); - - s21_dims[0] = D2_dim; - s21_dims[1] = D1_dim; - stat = nc_def_var(ncid, "s21", NC_SHORT, RANK_s21, s21_dims, &s21_id); - check_err(stat,__LINE__,__FILE__); - - i22_dims[0] = D2_dim; - i22_dims[1] = D2_dim; - stat = nc_def_var(ncid, "i22", NC_INT, RANK_i22, i22_dims, &i22_id); - check_err(stat,__LINE__,__FILE__); - - f23_dims[0] = D2_dim; - f23_dims[1] = D3_dim; - stat = nc_def_var(ncid, "f23", NC_FLOAT, RANK_f23, f23_dims, &f23_id); - check_err(stat,__LINE__,__FILE__); - - d24_dims[0] = D2_dim; - d24_dims[1] = D4_dim; - stat = nc_def_var(ncid, "d24", NC_DOUBLE, RANK_d24, d24_dims, &d24_id); - check_err(stat,__LINE__,__FILE__); - - c31_dims[0] = D3_dim; - c31_dims[1] = D1_dim; - stat = nc_def_var(ncid, "c31", NC_CHAR, RANK_c31, c31_dims, &c31_id); - check_err(stat,__LINE__,__FILE__); - - b32_dims[0] = D3_dim; - b32_dims[1] = D2_dim; - stat = nc_def_var(ncid, "b32", NC_BYTE, RANK_b32, b32_dims, &b32_id); - check_err(stat,__LINE__,__FILE__); - - s33_dims[0] = D3_dim; - s33_dims[1] = D3_dim; - stat = nc_def_var(ncid, "s33", NC_SHORT, RANK_s33, s33_dims, &s33_id); - check_err(stat,__LINE__,__FILE__); - - i34_dims[0] = D3_dim; - i34_dims[1] = D4_dim; - stat = nc_def_var(ncid, "i34", NC_INT, RANK_i34, i34_dims, &i34_id); - check_err(stat,__LINE__,__FILE__); - - f41_dims[0] = D4_dim; - f41_dims[1] = D1_dim; - stat = nc_def_var(ncid, "f41", NC_FLOAT, RANK_f41, f41_dims, &f41_id); - check_err(stat,__LINE__,__FILE__); - - d42_dims[0] = D4_dim; - d42_dims[1] = D2_dim; - stat = nc_def_var(ncid, "d42", NC_DOUBLE, RANK_d42, d42_dims, &d42_id); - check_err(stat,__LINE__,__FILE__); - - c43_dims[0] = D4_dim; - c43_dims[1] = D3_dim; - stat = nc_def_var(ncid, "c43", NC_CHAR, RANK_c43, c43_dims, &c43_id); - check_err(stat,__LINE__,__FILE__); - - b44_dims[0] = D4_dim; - b44_dims[1] = D4_dim; - stat = nc_def_var(ncid, "b44", NC_BYTE, RANK_b44, b44_dims, &b44_id); - check_err(stat,__LINE__,__FILE__); - - sr11_dims[0] = Dr_dim; - sr11_dims[1] = D1_dim; - sr11_dims[2] = D1_dim; - stat = nc_def_var(ncid, "sr11", NC_SHORT, RANK_sr11, sr11_dims, &sr11_id); - check_err(stat,__LINE__,__FILE__); - - ir12_dims[0] = Dr_dim; - ir12_dims[1] = D1_dim; - ir12_dims[2] = D2_dim; - stat = nc_def_var(ncid, "ir12", NC_INT, RANK_ir12, ir12_dims, &ir12_id); - check_err(stat,__LINE__,__FILE__); - - fr13_dims[0] = Dr_dim; - fr13_dims[1] = D1_dim; - fr13_dims[2] = D3_dim; - stat = nc_def_var(ncid, "fr13", NC_FLOAT, RANK_fr13, fr13_dims, &fr13_id); - check_err(stat,__LINE__,__FILE__); - - dr14_dims[0] = Dr_dim; - dr14_dims[1] = D1_dim; - dr14_dims[2] = D4_dim; - stat = nc_def_var(ncid, "dr14", NC_DOUBLE, RANK_dr14, dr14_dims, &dr14_id); - check_err(stat,__LINE__,__FILE__); - - cr21_dims[0] = Dr_dim; - cr21_dims[1] = D2_dim; - cr21_dims[2] = D1_dim; - stat = nc_def_var(ncid, "cr21", NC_CHAR, RANK_cr21, cr21_dims, &cr21_id); - check_err(stat,__LINE__,__FILE__); - - br22_dims[0] = Dr_dim; - br22_dims[1] = D2_dim; - br22_dims[2] = D2_dim; - stat = nc_def_var(ncid, "br22", NC_BYTE, RANK_br22, br22_dims, &br22_id); - check_err(stat,__LINE__,__FILE__); - - sr23_dims[0] = Dr_dim; - sr23_dims[1] = D2_dim; - sr23_dims[2] = D3_dim; - stat = nc_def_var(ncid, "sr23", NC_SHORT, RANK_sr23, sr23_dims, &sr23_id); - check_err(stat,__LINE__,__FILE__); - - ir24_dims[0] = Dr_dim; - ir24_dims[1] = D2_dim; - ir24_dims[2] = D4_dim; - stat = nc_def_var(ncid, "ir24", NC_INT, RANK_ir24, ir24_dims, &ir24_id); - check_err(stat,__LINE__,__FILE__); - - fr31_dims[0] = Dr_dim; - fr31_dims[1] = D3_dim; - fr31_dims[2] = D1_dim; - stat = nc_def_var(ncid, "fr31", NC_FLOAT, RANK_fr31, fr31_dims, &fr31_id); - check_err(stat,__LINE__,__FILE__); - - dr32_dims[0] = Dr_dim; - dr32_dims[1] = D3_dim; - dr32_dims[2] = D2_dim; - stat = nc_def_var(ncid, "dr32", NC_DOUBLE, RANK_dr32, dr32_dims, &dr32_id); - check_err(stat,__LINE__,__FILE__); - - cr33_dims[0] = Dr_dim; - cr33_dims[1] = D3_dim; - cr33_dims[2] = D3_dim; - stat = nc_def_var(ncid, "cr33", NC_CHAR, RANK_cr33, cr33_dims, &cr33_id); - check_err(stat,__LINE__,__FILE__); - - br34_dims[0] = Dr_dim; - br34_dims[1] = D3_dim; - br34_dims[2] = D4_dim; - stat = nc_def_var(ncid, "br34", NC_BYTE, RANK_br34, br34_dims, &br34_id); - check_err(stat,__LINE__,__FILE__); - - sr41_dims[0] = Dr_dim; - sr41_dims[1] = D4_dim; - sr41_dims[2] = D1_dim; - stat = nc_def_var(ncid, "sr41", NC_SHORT, RANK_sr41, sr41_dims, &sr41_id); - check_err(stat,__LINE__,__FILE__); - - ir42_dims[0] = Dr_dim; - ir42_dims[1] = D4_dim; - ir42_dims[2] = D2_dim; - stat = nc_def_var(ncid, "ir42", NC_INT, RANK_ir42, ir42_dims, &ir42_id); - check_err(stat,__LINE__,__FILE__); - - fr43_dims[0] = Dr_dim; - fr43_dims[1] = D4_dim; - fr43_dims[2] = D3_dim; - stat = nc_def_var(ncid, "fr43", NC_FLOAT, RANK_fr43, fr43_dims, &fr43_id); - check_err(stat,__LINE__,__FILE__); - - dr44_dims[0] = Dr_dim; - dr44_dims[1] = D4_dim; - dr44_dims[2] = D4_dim; - stat = nc_def_var(ncid, "dr44", NC_DOUBLE, RANK_dr44, dr44_dims, &dr44_id); - check_err(stat,__LINE__,__FILE__); - - c111_dims[0] = D1_dim; - c111_dims[1] = D1_dim; - c111_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c111", NC_CHAR, RANK_c111, c111_dims, &c111_id); - check_err(stat,__LINE__,__FILE__); - - b112_dims[0] = D1_dim; - b112_dims[1] = D1_dim; - b112_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b112", NC_BYTE, RANK_b112, b112_dims, &b112_id); - check_err(stat,__LINE__,__FILE__); - - s113_dims[0] = D1_dim; - s113_dims[1] = D1_dim; - s113_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s113", NC_SHORT, RANK_s113, s113_dims, &s113_id); - check_err(stat,__LINE__,__FILE__); - - i114_dims[0] = D1_dim; - i114_dims[1] = D1_dim; - i114_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i114", NC_INT, RANK_i114, i114_dims, &i114_id); - check_err(stat,__LINE__,__FILE__); - - f121_dims[0] = D1_dim; - f121_dims[1] = D2_dim; - f121_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f121", NC_FLOAT, RANK_f121, f121_dims, &f121_id); - check_err(stat,__LINE__,__FILE__); - - d122_dims[0] = D1_dim; - d122_dims[1] = D2_dim; - d122_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d122", NC_DOUBLE, RANK_d122, d122_dims, &d122_id); - check_err(stat,__LINE__,__FILE__); - - c123_dims[0] = D1_dim; - c123_dims[1] = D2_dim; - c123_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c123", NC_CHAR, RANK_c123, c123_dims, &c123_id); - check_err(stat,__LINE__,__FILE__); - - b124_dims[0] = D1_dim; - b124_dims[1] = D2_dim; - b124_dims[2] = D4_dim; - stat = nc_def_var(ncid, "b124", NC_BYTE, RANK_b124, b124_dims, &b124_id); - check_err(stat,__LINE__,__FILE__); - - s131_dims[0] = D1_dim; - s131_dims[1] = D3_dim; - s131_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s131", NC_SHORT, RANK_s131, s131_dims, &s131_id); - check_err(stat,__LINE__,__FILE__); - - i132_dims[0] = D1_dim; - i132_dims[1] = D3_dim; - i132_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i132", NC_INT, RANK_i132, i132_dims, &i132_id); - check_err(stat,__LINE__,__FILE__); - - f133_dims[0] = D1_dim; - f133_dims[1] = D3_dim; - f133_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f133", NC_FLOAT, RANK_f133, f133_dims, &f133_id); - check_err(stat,__LINE__,__FILE__); - - d134_dims[0] = D1_dim; - d134_dims[1] = D3_dim; - d134_dims[2] = D4_dim; - stat = nc_def_var(ncid, "d134", NC_DOUBLE, RANK_d134, d134_dims, &d134_id); - check_err(stat,__LINE__,__FILE__); - - c141_dims[0] = D1_dim; - c141_dims[1] = D4_dim; - c141_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c141", NC_CHAR, RANK_c141, c141_dims, &c141_id); - check_err(stat,__LINE__,__FILE__); - - b142_dims[0] = D1_dim; - b142_dims[1] = D4_dim; - b142_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b142", NC_BYTE, RANK_b142, b142_dims, &b142_id); - check_err(stat,__LINE__,__FILE__); - - s143_dims[0] = D1_dim; - s143_dims[1] = D4_dim; - s143_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s143", NC_SHORT, RANK_s143, s143_dims, &s143_id); - check_err(stat,__LINE__,__FILE__); - - i144_dims[0] = D1_dim; - i144_dims[1] = D4_dim; - i144_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i144", NC_INT, RANK_i144, i144_dims, &i144_id); - check_err(stat,__LINE__,__FILE__); - - f211_dims[0] = D2_dim; - f211_dims[1] = D1_dim; - f211_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f211", NC_FLOAT, RANK_f211, f211_dims, &f211_id); - check_err(stat,__LINE__,__FILE__); - - d212_dims[0] = D2_dim; - d212_dims[1] = D1_dim; - d212_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d212", NC_DOUBLE, RANK_d212, d212_dims, &d212_id); - check_err(stat,__LINE__,__FILE__); - - c213_dims[0] = D2_dim; - c213_dims[1] = D1_dim; - c213_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c213", NC_CHAR, RANK_c213, c213_dims, &c213_id); - check_err(stat,__LINE__,__FILE__); - - b214_dims[0] = D2_dim; - b214_dims[1] = D1_dim; - b214_dims[2] = D4_dim; - stat = nc_def_var(ncid, "b214", NC_BYTE, RANK_b214, b214_dims, &b214_id); - check_err(stat,__LINE__,__FILE__); - - s221_dims[0] = D2_dim; - s221_dims[1] = D2_dim; - s221_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s221", NC_SHORT, RANK_s221, s221_dims, &s221_id); - check_err(stat,__LINE__,__FILE__); - - i222_dims[0] = D2_dim; - i222_dims[1] = D2_dim; - i222_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i222", NC_INT, RANK_i222, i222_dims, &i222_id); - check_err(stat,__LINE__,__FILE__); - - f223_dims[0] = D2_dim; - f223_dims[1] = D2_dim; - f223_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f223", NC_FLOAT, RANK_f223, f223_dims, &f223_id); - check_err(stat,__LINE__,__FILE__); - - d224_dims[0] = D2_dim; - d224_dims[1] = D2_dim; - d224_dims[2] = D4_dim; - stat = nc_def_var(ncid, "d224", NC_DOUBLE, RANK_d224, d224_dims, &d224_id); - check_err(stat,__LINE__,__FILE__); - - c231_dims[0] = D2_dim; - c231_dims[1] = D3_dim; - c231_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c231", NC_CHAR, RANK_c231, c231_dims, &c231_id); - check_err(stat,__LINE__,__FILE__); - - b232_dims[0] = D2_dim; - b232_dims[1] = D3_dim; - b232_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b232", NC_BYTE, RANK_b232, b232_dims, &b232_id); - check_err(stat,__LINE__,__FILE__); - - s233_dims[0] = D2_dim; - s233_dims[1] = D3_dim; - s233_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s233", NC_SHORT, RANK_s233, s233_dims, &s233_id); - check_err(stat,__LINE__,__FILE__); - - i234_dims[0] = D2_dim; - i234_dims[1] = D3_dim; - i234_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i234", NC_INT, RANK_i234, i234_dims, &i234_id); - check_err(stat,__LINE__,__FILE__); - - f241_dims[0] = D2_dim; - f241_dims[1] = D4_dim; - f241_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f241", NC_FLOAT, RANK_f241, f241_dims, &f241_id); - check_err(stat,__LINE__,__FILE__); - - d242_dims[0] = D2_dim; - d242_dims[1] = D4_dim; - d242_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d242", NC_DOUBLE, RANK_d242, d242_dims, &d242_id); - check_err(stat,__LINE__,__FILE__); - - c243_dims[0] = D2_dim; - c243_dims[1] = D4_dim; - c243_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c243", NC_CHAR, RANK_c243, c243_dims, &c243_id); - check_err(stat,__LINE__,__FILE__); - - b244_dims[0] = D2_dim; - b244_dims[1] = D4_dim; - b244_dims[2] = D4_dim; - stat = nc_def_var(ncid, "b244", NC_BYTE, RANK_b244, b244_dims, &b244_id); - check_err(stat,__LINE__,__FILE__); - - s311_dims[0] = D3_dim; - s311_dims[1] = D1_dim; - s311_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s311", NC_SHORT, RANK_s311, s311_dims, &s311_id); - check_err(stat,__LINE__,__FILE__); - - i312_dims[0] = D3_dim; - i312_dims[1] = D1_dim; - i312_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i312", NC_INT, RANK_i312, i312_dims, &i312_id); - check_err(stat,__LINE__,__FILE__); - - f313_dims[0] = D3_dim; - f313_dims[1] = D1_dim; - f313_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f313", NC_FLOAT, RANK_f313, f313_dims, &f313_id); - check_err(stat,__LINE__,__FILE__); - - d314_dims[0] = D3_dim; - d314_dims[1] = D1_dim; - d314_dims[2] = D4_dim; - stat = nc_def_var(ncid, "d314", NC_DOUBLE, RANK_d314, d314_dims, &d314_id); - check_err(stat,__LINE__,__FILE__); - - c321_dims[0] = D3_dim; - c321_dims[1] = D2_dim; - c321_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c321", NC_CHAR, RANK_c321, c321_dims, &c321_id); - check_err(stat,__LINE__,__FILE__); - - b322_dims[0] = D3_dim; - b322_dims[1] = D2_dim; - b322_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b322", NC_BYTE, RANK_b322, b322_dims, &b322_id); - check_err(stat,__LINE__,__FILE__); - - s323_dims[0] = D3_dim; - s323_dims[1] = D2_dim; - s323_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s323", NC_SHORT, RANK_s323, s323_dims, &s323_id); - check_err(stat,__LINE__,__FILE__); - - i324_dims[0] = D3_dim; - i324_dims[1] = D2_dim; - i324_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i324", NC_INT, RANK_i324, i324_dims, &i324_id); - check_err(stat,__LINE__,__FILE__); - - f331_dims[0] = D3_dim; - f331_dims[1] = D3_dim; - f331_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f331", NC_FLOAT, RANK_f331, f331_dims, &f331_id); - check_err(stat,__LINE__,__FILE__); - - d332_dims[0] = D3_dim; - d332_dims[1] = D3_dim; - d332_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d332", NC_DOUBLE, RANK_d332, d332_dims, &d332_id); - check_err(stat,__LINE__,__FILE__); - - c333_dims[0] = D3_dim; - c333_dims[1] = D3_dim; - c333_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c333", NC_CHAR, RANK_c333, c333_dims, &c333_id); - check_err(stat,__LINE__,__FILE__); - - b334_dims[0] = D3_dim; - b334_dims[1] = D3_dim; - b334_dims[2] = D4_dim; - stat = nc_def_var(ncid, "b334", NC_BYTE, RANK_b334, b334_dims, &b334_id); - check_err(stat,__LINE__,__FILE__); - - s341_dims[0] = D3_dim; - s341_dims[1] = D4_dim; - s341_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s341", NC_SHORT, RANK_s341, s341_dims, &s341_id); - check_err(stat,__LINE__,__FILE__); - - i342_dims[0] = D3_dim; - i342_dims[1] = D4_dim; - i342_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i342", NC_INT, RANK_i342, i342_dims, &i342_id); - check_err(stat,__LINE__,__FILE__); - - f343_dims[0] = D3_dim; - f343_dims[1] = D4_dim; - f343_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f343", NC_FLOAT, RANK_f343, f343_dims, &f343_id); - check_err(stat,__LINE__,__FILE__); - - d344_dims[0] = D3_dim; - d344_dims[1] = D4_dim; - d344_dims[2] = D4_dim; - stat = nc_def_var(ncid, "d344", NC_DOUBLE, RANK_d344, d344_dims, &d344_id); - check_err(stat,__LINE__,__FILE__); - - c411_dims[0] = D4_dim; - c411_dims[1] = D1_dim; - c411_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c411", NC_CHAR, RANK_c411, c411_dims, &c411_id); - check_err(stat,__LINE__,__FILE__); - - b412_dims[0] = D4_dim; - b412_dims[1] = D1_dim; - b412_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b412", NC_BYTE, RANK_b412, b412_dims, &b412_id); - check_err(stat,__LINE__,__FILE__); - - s413_dims[0] = D4_dim; - s413_dims[1] = D1_dim; - s413_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s413", NC_SHORT, RANK_s413, s413_dims, &s413_id); - check_err(stat,__LINE__,__FILE__); - - i414_dims[0] = D4_dim; - i414_dims[1] = D1_dim; - i414_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i414", NC_INT, RANK_i414, i414_dims, &i414_id); - check_err(stat,__LINE__,__FILE__); - - f421_dims[0] = D4_dim; - f421_dims[1] = D2_dim; - f421_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f421", NC_FLOAT, RANK_f421, f421_dims, &f421_id); - check_err(stat,__LINE__,__FILE__); - - d422_dims[0] = D4_dim; - d422_dims[1] = D2_dim; - d422_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d422", NC_DOUBLE, RANK_d422, d422_dims, &d422_id); - check_err(stat,__LINE__,__FILE__); - - c423_dims[0] = D4_dim; - c423_dims[1] = D2_dim; - c423_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c423", NC_CHAR, RANK_c423, c423_dims, &c423_id); - check_err(stat,__LINE__,__FILE__); - - b424_dims[0] = D4_dim; - b424_dims[1] = D2_dim; - b424_dims[2] = D4_dim; - stat = nc_def_var(ncid, "b424", NC_BYTE, RANK_b424, b424_dims, &b424_id); - check_err(stat,__LINE__,__FILE__); - - s431_dims[0] = D4_dim; - s431_dims[1] = D3_dim; - s431_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s431", NC_SHORT, RANK_s431, s431_dims, &s431_id); - check_err(stat,__LINE__,__FILE__); - - i432_dims[0] = D4_dim; - i432_dims[1] = D3_dim; - i432_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i432", NC_INT, RANK_i432, i432_dims, &i432_id); - check_err(stat,__LINE__,__FILE__); - - f433_dims[0] = D4_dim; - f433_dims[1] = D3_dim; - f433_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f433", NC_FLOAT, RANK_f433, f433_dims, &f433_id); - check_err(stat,__LINE__,__FILE__); - - d434_dims[0] = D4_dim; - d434_dims[1] = D3_dim; - d434_dims[2] = D4_dim; - stat = nc_def_var(ncid, "d434", NC_DOUBLE, RANK_d434, d434_dims, &d434_id); - check_err(stat,__LINE__,__FILE__); - - c441_dims[0] = D4_dim; - c441_dims[1] = D4_dim; - c441_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c441", NC_CHAR, RANK_c441, c441_dims, &c441_id); - check_err(stat,__LINE__,__FILE__); - - b442_dims[0] = D4_dim; - b442_dims[1] = D4_dim; - b442_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b442", NC_BYTE, RANK_b442, b442_dims, &b442_id); - check_err(stat,__LINE__,__FILE__); - - s443_dims[0] = D4_dim; - s443_dims[1] = D4_dim; - s443_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s443", NC_SHORT, RANK_s443, s443_dims, &s443_id); - check_err(stat,__LINE__,__FILE__); - - i444_dims[0] = D4_dim; - i444_dims[1] = D4_dim; - i444_dims[2] = D4_dim; - stat = nc_def_var(ncid, "i444", NC_INT, RANK_i444, i444_dims, &i444_id); - check_err(stat,__LINE__,__FILE__); - - /* assign global attributes */ - { /* Gc */ - stat = nc_put_att_text(ncid, NC_GLOBAL, "Gc", 1, "\177"); - check_err(stat,__LINE__,__FILE__); - } - { /* Gb */ - static const signed char Gb_att[2] = {-128, 127} ; - stat = nc_put_att_schar(ncid, NC_GLOBAL, "Gb", NC_BYTE, 2, Gb_att); - check_err(stat,__LINE__,__FILE__); - } - { /* Gs */ - static const short Gs_att[3] = {-32768, 32767, 32767} ; - stat = nc_put_att_short(ncid, NC_GLOBAL, "Gs", NC_SHORT, 3, Gs_att); - check_err(stat,__LINE__,__FILE__); - } - { /* Gi */ - static const int Gi_att[4] = {-2147483648, 2147483647, -2147483648, -2147483648} ; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gi", NC_INT, 4, Gi_att); - check_err(stat,__LINE__,__FILE__); - } - { /* Gf */ - static const float Gf_att[5] = {-3.4028231e+38, 3.4028231e+38, -9.96921e+36, 9.96921e+36, 531} ; - stat = nc_put_att_float(ncid, NC_GLOBAL, "Gf", NC_FLOAT, 5, Gf_att); - check_err(stat,__LINE__,__FILE__); - } - { /* Gd */ - static const double Gd_att[6] = {-42, 42, -1, 1, 660, 650} ; - stat = nc_put_att_double(ncid, NC_GLOBAL, "Gd", NC_DOUBLE, 6, Gd_att); - check_err(stat,__LINE__,__FILE__); - } - - - /* assign per-variable attributes */ - { /* c */ - stat = nc_put_att_text(ncid, b_id, "c", 0, ""); - check_err(stat,__LINE__,__FILE__); - } - { /* b */ - static const signed char s_b_att[1] = {-128} ; - stat = nc_put_att_schar(ncid, s_id, "b", NC_BYTE, 1, s_b_att); - check_err(stat,__LINE__,__FILE__); - } - { /* s */ - static const short s_s_att[2] = {-32768, 32767} ; - stat = nc_put_att_short(ncid, s_id, "s", NC_SHORT, 2, s_s_att); - check_err(stat,__LINE__,__FILE__); - } - { /* i */ - static const int i_i_att[3] = {-2147483648, 2147483647, -2147483648} ; - stat = nc_put_att_int(ncid, i_id, "i", NC_INT, 3, i_i_att); - check_err(stat,__LINE__,__FILE__); - } - { /* f */ - static const float i_f_att[4] = {-3.4028231e+38, 3.4028231e+38, -9.96921e+36, 9.96921e+36} ; - stat = nc_put_att_float(ncid, i_id, "f", NC_FLOAT, 4, i_f_att); - check_err(stat,__LINE__,__FILE__); - } - { /* d */ - static const double i_d_att[5] = {-42, 42, -1, 1, 660} ; - stat = nc_put_att_double(ncid, i_id, "d", NC_DOUBLE, 5, i_d_att); - check_err(stat,__LINE__,__FILE__); - } - { /* c */ - stat = nc_put_att_text(ncid, d_id, "c", 6, "blahhh"); - check_err(stat,__LINE__,__FILE__); - } - - - /* leave define mode */ - stat = nc_enddef (ncid); - check_err(stat,__LINE__,__FILE__); - - /* assign variable data */ - { - size_t zero = 0; - static char c_data[1] = {'\002'}; - stat = nc_put_var1(ncid, c_id, &zero, c_data); check_err(stat,__LINE__,__FILE__); - } - { - size_t zero = 0; - static signed char b_data[1] = {-2}; - stat = nc_put_var1(ncid, b_id, &zero, b_data); check_err(stat,__LINE__,__FILE__); - } - { - size_t zero = 0; - static short s_data[1] = {-5}; - stat = nc_put_var1(ncid, s_id, &zero, s_data); check_err(stat,__LINE__,__FILE__); - } - { - size_t zero = 0; - static int i_data[1] = {-20}; - stat = nc_put_var1(ncid, i_id, &zero, i_data); check_err(stat,__LINE__,__FILE__); - } - { - size_t zero = 0; - static float f_data[1] = {-9}; - stat = nc_put_var1(ncid, f_id, &zero, f_data); check_err(stat,__LINE__,__FILE__); - } - { - size_t zero = 0; - static double d_data[1] = {-10}; - stat = nc_put_var1(ncid, d_id, &zero, d_data); check_err(stat,__LINE__,__FILE__); - } - { - char cr_data[2] = "\177\177" ; - size_t cr_startset[1] = {0} ; - size_t cr_countset[1] = {2} ; - stat = nc_put_vara(ncid, cr_id, cr_startset, cr_countset, cr_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char br_data[2] = {-128, 127} ; - size_t br_startset[1] = {0} ; - size_t br_countset[1] = {2} ; - stat = nc_put_vara(ncid, br_id, br_startset, br_countset, br_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short sr_data[2] = {-32768, 32767} ; - size_t sr_startset[1] = {0} ; - size_t sr_countset[1] = {2} ; - stat = nc_put_vara(ncid, sr_id, sr_startset, sr_countset, sr_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int ir_data[2] = {-2147483648, 2147483647} ; - size_t ir_startset[1] = {0} ; - size_t ir_countset[1] = {2} ; - stat = nc_put_vara(ncid, ir_id, ir_startset, ir_countset, ir_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float fr_data[2] = {-3.4028231e+38, 3.4028231e+38} ; - size_t fr_startset[1] = {0} ; - size_t fr_countset[1] = {2} ; - stat = nc_put_vara(ncid, fr_id, fr_startset, fr_countset, fr_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double dr_data[2] = {-42, 42} ; - size_t dr_startset[1] = {0} ; - size_t dr_countset[1] = {2} ; - stat = nc_put_vara(ncid, dr_id, dr_startset, dr_countset, dr_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c1_data[1] = "\177" ; - size_t c1_startset[1] = {0} ; - size_t c1_countset[1] = {1} ; - stat = nc_put_vara(ncid, c1_id, c1_startset, c1_countset, c1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b1_data[1] = {-128} ; - size_t b1_startset[1] = {0} ; - size_t b1_countset[1] = {1} ; - stat = nc_put_vara(ncid, b1_id, b1_startset, b1_countset, b1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s1_data[1] = {-32768} ; - size_t s1_startset[1] = {0} ; - size_t s1_countset[1] = {1} ; - stat = nc_put_vara(ncid, s1_id, s1_startset, s1_countset, s1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i1_data[1] = {-2147483648} ; - size_t i1_startset[1] = {0} ; - size_t i1_countset[1] = {1} ; - stat = nc_put_vara(ncid, i1_id, i1_startset, i1_countset, i1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f1_data[1] = {-3.4028231e+38} ; - size_t f1_startset[1] = {0} ; - size_t f1_countset[1] = {1} ; - stat = nc_put_vara(ncid, f1_id, f1_startset, f1_countset, f1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d1_data[1] = {-42} ; - size_t d1_startset[1] = {0} ; - size_t d1_countset[1] = {1} ; - stat = nc_put_vara(ncid, d1_id, d1_startset, d1_countset, d1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c2_data[2] = "\177\177" ; - size_t c2_startset[1] = {0} ; - size_t c2_countset[1] = {2} ; - stat = nc_put_vara(ncid, c2_id, c2_startset, c2_countset, c2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b2_data[2] = {-128, 127} ; - size_t b2_startset[1] = {0} ; - size_t b2_countset[1] = {2} ; - stat = nc_put_vara(ncid, b2_id, b2_startset, b2_countset, b2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s2_data[2] = {-32768, 32767} ; - size_t s2_startset[1] = {0} ; - size_t s2_countset[1] = {2} ; - stat = nc_put_vara(ncid, s2_id, s2_startset, s2_countset, s2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i2_data[2] = {-2147483648, 2147483647} ; - size_t i2_startset[1] = {0} ; - size_t i2_countset[1] = {2} ; - stat = nc_put_vara(ncid, i2_id, i2_startset, i2_countset, i2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f2_data[2] = {-3.4028231e+38, 3.4028231e+38} ; - size_t f2_startset[1] = {0} ; - size_t f2_countset[1] = {2} ; - stat = nc_put_vara(ncid, f2_id, f2_startset, f2_countset, f2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d2_data[2] = {-42, 42} ; - size_t d2_startset[1] = {0} ; - size_t d2_countset[1] = {2} ; - stat = nc_put_vara(ncid, d2_id, d2_startset, d2_countset, d2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c3_data[3] = "\177\177A" ; - size_t c3_startset[1] = {0} ; - size_t c3_countset[1] = {3} ; - stat = nc_put_vara(ncid, c3_id, c3_startset, c3_countset, c3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b3_data[3] = {-128, 127, 127} ; - size_t b3_startset[1] = {0} ; - size_t b3_countset[1] = {3} ; - stat = nc_put_vara(ncid, b3_id, b3_startset, b3_countset, b3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s3_data[3] = {-32768, 32767, 32767} ; - size_t s3_startset[1] = {0} ; - size_t s3_countset[1] = {3} ; - stat = nc_put_vara(ncid, s3_id, s3_startset, s3_countset, s3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i3_data[3] = {-2147483648, 2147483647, -2147483648} ; - size_t i3_startset[1] = {0} ; - size_t i3_countset[1] = {3} ; - stat = nc_put_vara(ncid, i3_id, i3_startset, i3_countset, i3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f3_data[3] = {-3.4028231e+38, 3.4028231e+38, -9.96921e+36} ; - size_t f3_startset[1] = {0} ; - size_t f3_countset[1] = {3} ; - stat = nc_put_vara(ncid, f3_id, f3_startset, f3_countset, f3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d3_data[3] = {-42, 42, -1} ; - size_t d3_startset[1] = {0} ; - size_t d3_countset[1] = {3} ; - stat = nc_put_vara(ncid, d3_id, d3_startset, d3_countset, d3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c4_data[4] = "\177\177AZ" ; - size_t c4_startset[1] = {0} ; - size_t c4_countset[1] = {4} ; - stat = nc_put_vara(ncid, c4_id, c4_startset, c4_countset, c4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b4_data[4] = {-128, 127, 127, -128} ; - size_t b4_startset[1] = {0} ; - size_t b4_countset[1] = {4} ; - stat = nc_put_vara(ncid, b4_id, b4_startset, b4_countset, b4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s4_data[4] = {-32768, 32767, 32767, -32768} ; - size_t s4_startset[1] = {0} ; - size_t s4_countset[1] = {4} ; - stat = nc_put_vara(ncid, s4_id, s4_startset, s4_countset, s4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i4_data[4] = {-2147483648, 2147483647, -2147483648, -2147483648} ; - size_t i4_startset[1] = {0} ; - size_t i4_countset[1] = {4} ; - stat = nc_put_vara(ncid, i4_id, i4_startset, i4_countset, i4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f4_data[4] = {-3.4028231e+38, 3.4028231e+38, -9.96921e+36, 9.96921e+36} ; - size_t f4_startset[1] = {0} ; - size_t f4_countset[1] = {4} ; - stat = nc_put_vara(ncid, f4_id, f4_startset, f4_countset, f4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d4_data[4] = {-42, 42, -1, 1} ; - size_t d4_startset[1] = {0} ; - size_t d4_countset[1] = {4} ; - stat = nc_put_vara(ncid, d4_id, d4_startset, d4_countset, d4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char cr1_data[2] = "\030\034" ; - size_t cr1_startset[2] = {0, 0} ; - size_t cr1_countset[2] = {2, 1} ; - stat = nc_put_vara(ncid, cr1_id, cr1_startset, cr1_countset, cr1_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char br2_data[4] = {-24, -26, -20, -22} ; - size_t br2_startset[2] = {0, 0} ; - size_t br2_countset[2] = {2, 2} ; - stat = nc_put_vara(ncid, br2_id, br2_startset, br2_countset, br2_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short sr3_data[6] = {-375, -380, -385, -350, -355, -360} ; - size_t sr3_startset[2] = {0, 0} ; - size_t sr3_countset[2] = {2, 3} ; - stat = nc_put_vara(ncid, sr3_id, sr3_startset, sr3_countset, sr3_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int ir4_data[8] = {-24000, -24020, -24040, -24060, -23600, -23620, -23640, -23660} ; - size_t ir4_startset[2] = {0, 0} ; - size_t ir4_countset[2] = {2, 4} ; - stat = nc_put_vara(ncid, ir4_id, ir4_startset, ir4_countset, ir4_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f11_data[1] = {-2187} ; - size_t f11_startset[2] = {0, 0} ; - size_t f11_countset[2] = {1, 1} ; - stat = nc_put_vara(ncid, f11_id, f11_startset, f11_countset, f11_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d12_data[2] = {-3000, -3010} ; - size_t d12_startset[2] = {0, 0} ; - size_t d12_countset[2] = {1, 2} ; - stat = nc_put_vara(ncid, d12_id, d12_startset, d12_countset, d12_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c13_data[3] = "\030\032\034" ; - size_t c13_startset[2] = {0, 0} ; - size_t c13_countset[2] = {1, 3} ; - stat = nc_put_vara(ncid, c13_id, c13_startset, c13_countset, c13_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b14_data[4] = {-24, -26, -28, -30} ; - size_t b14_startset[2] = {0, 0} ; - size_t b14_countset[2] = {1, 4} ; - stat = nc_put_vara(ncid, b14_id, b14_startset, b14_countset, b14_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s21_data[2] = {-375, -350} ; - size_t s21_startset[2] = {0, 0} ; - size_t s21_countset[2] = {2, 1} ; - stat = nc_put_vara(ncid, s21_id, s21_startset, s21_countset, s21_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i22_data[4] = {-24000, -24020, -23600, -23620} ; - size_t i22_startset[2] = {0, 0} ; - size_t i22_countset[2] = {2, 2} ; - stat = nc_put_vara(ncid, i22_id, i22_startset, i22_countset, i22_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f23_data[6] = {-2187, -2196, -2205, -2106, -2115, -2124} ; - size_t f23_startset[2] = {0, 0} ; - size_t f23_countset[2] = {2, 3} ; - stat = nc_put_vara(ncid, f23_id, f23_startset, f23_countset, f23_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d24_data[8] = {-3000, -3010, -3020, -3030, -2900, -2910, -2920, -2930} ; - size_t d24_startset[2] = {0, 0} ; - size_t d24_countset[2] = {2, 4} ; - stat = nc_put_vara(ncid, d24_id, d24_startset, d24_countset, d24_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c31_data[3] = "\030\034 " ; - size_t c31_startset[2] = {0, 0} ; - size_t c31_countset[2] = {3, 1} ; - stat = nc_put_vara(ncid, c31_id, c31_startset, c31_countset, c31_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b32_data[6] = {-24, -26, -20, -22, -16, -18} ; - size_t b32_startset[2] = {0, 0} ; - size_t b32_countset[2] = {3, 2} ; - stat = nc_put_vara(ncid, b32_id, b32_startset, b32_countset, b32_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s33_data[9] = {-375, -380, -385, -350, -355, -360, -325, -330, -335} ; - size_t s33_startset[2] = {0, 0} ; - size_t s33_countset[2] = {3, 3} ; - stat = nc_put_vara(ncid, s33_id, s33_startset, s33_countset, s33_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i34_data[12] = {-24000, -24020, -24040, -24060, -23600, -23620, -23640, -23660, -23200, -23220, -23240, -23260} ; - size_t i34_startset[2] = {0, 0} ; - size_t i34_countset[2] = {3, 4} ; - stat = nc_put_vara(ncid, i34_id, i34_startset, i34_countset, i34_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f41_data[4] = {-2187, -2106, -2025, -1944} ; - size_t f41_startset[2] = {0, 0} ; - size_t f41_countset[2] = {4, 1} ; - stat = nc_put_vara(ncid, f41_id, f41_startset, f41_countset, f41_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d42_data[8] = {-3000, -3010, -2900, -2910, -2800, -2810, -2700, -2710} ; - size_t d42_startset[2] = {0, 0} ; - size_t d42_countset[2] = {4, 2} ; - stat = nc_put_vara(ncid, d42_id, d42_startset, d42_countset, d42_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c43_data[12] = "\030\032\034\034\036 \"$$&(" ; - size_t c43_startset[2] = {0, 0} ; - size_t c43_countset[2] = {4, 3} ; - stat = nc_put_vara(ncid, c43_id, c43_startset, c43_countset, c43_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b44_data[16] = {-24, -26, -28, -30, -20, -22, -24, -26, -16, -18, -20, -22, -12, -14, -16, -18} ; - size_t b44_startset[2] = {0, 0} ; - size_t b44_countset[2] = {4, 4} ; - stat = nc_put_vara(ncid, b44_id, b44_startset, b44_countset, b44_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short sr11_data[2] = {2500, 2375} ; - size_t sr11_startset[3] = {0, 0, 0} ; - size_t sr11_countset[3] = {2, 1, 1} ; - stat = nc_put_vara(ncid, sr11_id, sr11_startset, sr11_countset, sr11_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int ir12_data[4] = {640000, 639980, 632000, 631980} ; - size_t ir12_startset[3] = {0, 0, 0} ; - size_t ir12_countset[3] = {2, 1, 2} ; - stat = nc_put_vara(ncid, ir12_id, ir12_startset, ir12_countset, ir12_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float fr13_data[6] = {26244, 26235, 26226, 25515, 25506, 25497} ; - size_t fr13_startset[3] = {0, 0, 0} ; - size_t fr13_countset[3] = {2, 1, 3} ; - stat = nc_put_vara(ncid, fr13_id, fr13_startset, fr13_countset, fr13_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double dr14_data[8] = {40000, 39990, 39980, 39970, 39000, 38990, 38980, 38970} ; - size_t dr14_startset[3] = {0, 0, 0} ; - size_t dr14_countset[3] = {2, 1, 4} ; - stat = nc_put_vara(ncid, dr14_id, dr14_startset, dr14_countset, dr14_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char cr21_data[4] = "@DHL" ; - size_t cr21_startset[3] = {0, 0, 0} ; - size_t cr21_countset[3] = {2, 2, 1} ; - stat = nc_put_vara(ncid, cr21_id, cr21_startset, cr21_countset, cr21_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char br22_data[8] = {64, 62, 68, 66, 56, 54, 60, 58} ; - size_t br22_startset[3] = {0, 0, 0} ; - size_t br22_countset[3] = {2, 2, 2} ; - stat = nc_put_vara(ncid, br22_id, br22_startset, br22_countset, br22_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short sr23_data[12] = {2500, 2495, 2490, 2525, 2520, 2515, 2375, 2370, 2365, 2400, 2395, 2390} ; - size_t sr23_startset[3] = {0, 0, 0} ; - size_t sr23_countset[3] = {2, 2, 3} ; - stat = nc_put_vara(ncid, sr23_id, sr23_startset, sr23_countset, sr23_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int ir24_data[16] = {640000, 639980, 639960, 639940, 640400, 640380, 640360, 640340, 632000, 631980, 631960, 631940, 632400, 632380, 632360, 632340} ; - size_t ir24_startset[3] = {0, 0, 0} ; - size_t ir24_countset[3] = {2, 2, 4} ; - stat = nc_put_vara(ncid, ir24_id, ir24_startset, ir24_countset, ir24_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float fr31_data[6] = {26244, 26325, 26406, 25515, 25596, 25677} ; - size_t fr31_startset[3] = {0, 0, 0} ; - size_t fr31_countset[3] = {2, 3, 1} ; - stat = nc_put_vara(ncid, fr31_id, fr31_startset, fr31_countset, fr31_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double dr32_data[12] = {40000, 39990, 40100, 40090, 40200, 40190, 39000, 38990, 39100, 39090, 39200, 39190} ; - size_t dr32_startset[3] = {0, 0, 0} ; - size_t dr32_countset[3] = {2, 3, 2} ; - stat = nc_put_vara(ncid, dr32_id, dr32_startset, dr32_countset, dr32_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char cr33_data[18] = "@BDDFHHJLHJLLNPPRT" ; - size_t cr33_startset[3] = {0, 0, 0} ; - size_t cr33_countset[3] = {2, 3, 3} ; - stat = nc_put_vara(ncid, cr33_id, cr33_startset, cr33_countset, cr33_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char br34_data[24] = {64, 62, 60, 58, 68, 66, 64, 62, 72, 70, 68, 66, 56, 54, 52, 50, 60, 58, 56, 54, 64, 62, 60, 58} ; - size_t br34_startset[3] = {0, 0, 0} ; - size_t br34_countset[3] = {2, 3, 4} ; - stat = nc_put_vara(ncid, br34_id, br34_startset, br34_countset, br34_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short sr41_data[8] = {2500, 2525, 2550, 2575, 2375, 2400, 2425, 2450} ; - size_t sr41_startset[3] = {0, 0, 0} ; - size_t sr41_countset[3] = {2, 4, 1} ; - stat = nc_put_vara(ncid, sr41_id, sr41_startset, sr41_countset, sr41_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int ir42_data[16] = {640000, 639980, 640400, 640380, 640800, 640780, 641200, 641180, 632000, 631980, 632400, 632380, 632800, 632780, 633200, 633180} ; - size_t ir42_startset[3] = {0, 0, 0} ; - size_t ir42_countset[3] = {2, 4, 2} ; - stat = nc_put_vara(ncid, ir42_id, ir42_startset, ir42_countset, ir42_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float fr43_data[24] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388, 26487, 26478, 26469, 25515, 25506, 25497, 25596, 25587, 25578, 25677, 25668, 25659, 25758, 25749, 25740} ; - size_t fr43_startset[3] = {0, 0, 0} ; - size_t fr43_countset[3] = {2, 4, 3} ; - stat = nc_put_vara(ncid, fr43_id, fr43_startset, fr43_countset, fr43_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double dr44_data[32] = {40000, 39990, 39980, 39970, 40100, 40090, 40080, 40070, 40200, 40190, 40180, 40170, 40300, 40290, 40280, 40270, 39000, 38990, 38980, 38970, 39100, 39090, 39080, 39070, 39200, 39190, 39180, 39170, 39300, 39290, 39280, 39270} ; - size_t dr44_startset[3] = {0, 0, 0} ; - size_t dr44_countset[3] = {2, 4, 4} ; - stat = nc_put_vara(ncid, dr44_id, dr44_startset, dr44_countset, dr44_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c111_data[1] = "@" ; - size_t c111_startset[3] = {0, 0, 0} ; - size_t c111_countset[3] = {1, 1, 1} ; - stat = nc_put_vara(ncid, c111_id, c111_startset, c111_countset, c111_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b112_data[2] = {64, 62} ; - size_t b112_startset[3] = {0, 0, 0} ; - size_t b112_countset[3] = {1, 1, 2} ; - stat = nc_put_vara(ncid, b112_id, b112_startset, b112_countset, b112_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s113_data[3] = {2500, 2495, 2490} ; - size_t s113_startset[3] = {0, 0, 0} ; - size_t s113_countset[3] = {1, 1, 3} ; - stat = nc_put_vara(ncid, s113_id, s113_startset, s113_countset, s113_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i114_data[4] = {640000, 639980, 639960, 639940} ; - size_t i114_startset[3] = {0, 0, 0} ; - size_t i114_countset[3] = {1, 1, 4} ; - stat = nc_put_vara(ncid, i114_id, i114_startset, i114_countset, i114_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f121_data[2] = {26244, 26325} ; - size_t f121_startset[3] = {0, 0, 0} ; - size_t f121_countset[3] = {1, 2, 1} ; - stat = nc_put_vara(ncid, f121_id, f121_startset, f121_countset, f121_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d122_data[4] = {40000, 39990, 40100, 40090} ; - size_t d122_startset[3] = {0, 0, 0} ; - size_t d122_countset[3] = {1, 2, 2} ; - stat = nc_put_vara(ncid, d122_id, d122_startset, d122_countset, d122_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c123_data[6] = "@BDDFH" ; - size_t c123_startset[3] = {0, 0, 0} ; - size_t c123_countset[3] = {1, 2, 3} ; - stat = nc_put_vara(ncid, c123_id, c123_startset, c123_countset, c123_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b124_data[8] = {64, 62, 60, 58, 68, 66, 64, 62} ; - size_t b124_startset[3] = {0, 0, 0} ; - size_t b124_countset[3] = {1, 2, 4} ; - stat = nc_put_vara(ncid, b124_id, b124_startset, b124_countset, b124_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s131_data[3] = {2500, 2525, 2550} ; - size_t s131_startset[3] = {0, 0, 0} ; - size_t s131_countset[3] = {1, 3, 1} ; - stat = nc_put_vara(ncid, s131_id, s131_startset, s131_countset, s131_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i132_data[6] = {640000, 639980, 640400, 640380, 640800, 640780} ; - size_t i132_startset[3] = {0, 0, 0} ; - size_t i132_countset[3] = {1, 3, 2} ; - stat = nc_put_vara(ncid, i132_id, i132_startset, i132_countset, i132_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f133_data[9] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388} ; - size_t f133_startset[3] = {0, 0, 0} ; - size_t f133_countset[3] = {1, 3, 3} ; - stat = nc_put_vara(ncid, f133_id, f133_startset, f133_countset, f133_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d134_data[12] = {40000, 39990, 39980, 39970, 40100, 40090, 40080, 40070, 40200, 40190, 40180, 40170} ; - size_t d134_startset[3] = {0, 0, 0} ; - size_t d134_countset[3] = {1, 3, 4} ; - stat = nc_put_vara(ncid, d134_id, d134_startset, d134_countset, d134_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c141_data[4] = "@DHL" ; - size_t c141_startset[3] = {0, 0, 0} ; - size_t c141_countset[3] = {1, 4, 1} ; - stat = nc_put_vara(ncid, c141_id, c141_startset, c141_countset, c141_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b142_data[8] = {64, 62, 68, 66, 72, 70, 76, 74} ; - size_t b142_startset[3] = {0, 0, 0} ; - size_t b142_countset[3] = {1, 4, 2} ; - stat = nc_put_vara(ncid, b142_id, b142_startset, b142_countset, b142_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s143_data[12] = {2500, 2495, 2490, 2525, 2520, 2515, 2550, 2545, 2540, 2575, 2570, 2565} ; - size_t s143_startset[3] = {0, 0, 0} ; - size_t s143_countset[3] = {1, 4, 3} ; - stat = nc_put_vara(ncid, s143_id, s143_startset, s143_countset, s143_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i144_data[16] = {640000, 639980, 639960, 639940, 640400, 640380, 640360, 640340, 640800, 640780, 640760, 640740, 641200, 641180, 641160, 641140} ; - size_t i144_startset[3] = {0, 0, 0} ; - size_t i144_countset[3] = {1, 4, 4} ; - stat = nc_put_vara(ncid, i144_id, i144_startset, i144_countset, i144_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f211_data[2] = {26244, 25515} ; - size_t f211_startset[3] = {0, 0, 0} ; - size_t f211_countset[3] = {2, 1, 1} ; - stat = nc_put_vara(ncid, f211_id, f211_startset, f211_countset, f211_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d212_data[4] = {40000, 39990, 39000, 38990} ; - size_t d212_startset[3] = {0, 0, 0} ; - size_t d212_countset[3] = {2, 1, 2} ; - stat = nc_put_vara(ncid, d212_id, d212_startset, d212_countset, d212_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c213_data[6] = "@BDHJL" ; - size_t c213_startset[3] = {0, 0, 0} ; - size_t c213_countset[3] = {2, 1, 3} ; - stat = nc_put_vara(ncid, c213_id, c213_startset, c213_countset, c213_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b214_data[8] = {64, 62, 60, 58, 56, 54, 52, 50} ; - size_t b214_startset[3] = {0, 0, 0} ; - size_t b214_countset[3] = {2, 1, 4} ; - stat = nc_put_vara(ncid, b214_id, b214_startset, b214_countset, b214_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s221_data[4] = {2500, 2525, 2375, 2400} ; - size_t s221_startset[3] = {0, 0, 0} ; - size_t s221_countset[3] = {2, 2, 1} ; - stat = nc_put_vara(ncid, s221_id, s221_startset, s221_countset, s221_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i222_data[8] = {640000, 639980, 640400, 640380, 632000, 631980, 632400, 632380} ; - size_t i222_startset[3] = {0, 0, 0} ; - size_t i222_countset[3] = {2, 2, 2} ; - stat = nc_put_vara(ncid, i222_id, i222_startset, i222_countset, i222_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f223_data[12] = {26244, 26235, 26226, 26325, 26316, 26307, 25515, 25506, 25497, 25596, 25587, 25578} ; - size_t f223_startset[3] = {0, 0, 0} ; - size_t f223_countset[3] = {2, 2, 3} ; - stat = nc_put_vara(ncid, f223_id, f223_startset, f223_countset, f223_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d224_data[16] = {40000, 39990, 39980, 39970, 40100, 40090, 40080, 40070, 39000, 38990, 38980, 38970, 39100, 39090, 39080, 39070} ; - size_t d224_startset[3] = {0, 0, 0} ; - size_t d224_countset[3] = {2, 2, 4} ; - stat = nc_put_vara(ncid, d224_id, d224_startset, d224_countset, d224_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c231_data[6] = "@DHHLP" ; - size_t c231_startset[3] = {0, 0, 0} ; - size_t c231_countset[3] = {2, 3, 1} ; - stat = nc_put_vara(ncid, c231_id, c231_startset, c231_countset, c231_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b232_data[12] = {64, 62, 68, 66, 72, 70, 56, 54, 60, 58, 64, 62} ; - size_t b232_startset[3] = {0, 0, 0} ; - size_t b232_countset[3] = {2, 3, 2} ; - stat = nc_put_vara(ncid, b232_id, b232_startset, b232_countset, b232_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s233_data[18] = {2500, 2495, 2490, 2525, 2520, 2515, 2550, 2545, 2540, 2375, 2370, 2365, 2400, 2395, 2390, 2425, 2420, 2415} ; - size_t s233_startset[3] = {0, 0, 0} ; - size_t s233_countset[3] = {2, 3, 3} ; - stat = nc_put_vara(ncid, s233_id, s233_startset, s233_countset, s233_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i234_data[24] = {640000, 639980, 639960, 639940, 640400, 640380, 640360, 640340, 640800, 640780, 640760, 640740, 632000, 631980, 631960, 631940, 632400, 632380, 632360, 632340, 632800, 632780, 632760, 632740} ; - size_t i234_startset[3] = {0, 0, 0} ; - size_t i234_countset[3] = {2, 3, 4} ; - stat = nc_put_vara(ncid, i234_id, i234_startset, i234_countset, i234_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f241_data[8] = {26244, 26325, 26406, 26487, 25515, 25596, 25677, 25758} ; - size_t f241_startset[3] = {0, 0, 0} ; - size_t f241_countset[3] = {2, 4, 1} ; - stat = nc_put_vara(ncid, f241_id, f241_startset, f241_countset, f241_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d242_data[16] = {40000, 39990, 40100, 40090, 40200, 40190, 40300, 40290, 39000, 38990, 39100, 39090, 39200, 39190, 39300, 39290} ; - size_t d242_startset[3] = {0, 0, 0} ; - size_t d242_countset[3] = {2, 4, 2} ; - stat = nc_put_vara(ncid, d242_id, d242_startset, d242_countset, d242_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c243_data[24] = "@BDDFHHJLLNPHJLLNPPRTTVX" ; - size_t c243_startset[3] = {0, 0, 0} ; - size_t c243_countset[3] = {2, 4, 3} ; - stat = nc_put_vara(ncid, c243_id, c243_startset, c243_countset, c243_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b244_data[32] = {64, 62, 60, 58, 68, 66, 64, 62, 72, 70, 68, 66, 76, 74, 72, 70, 56, 54, 52, 50, 60, 58, 56, 54, 64, 62, 60, 58, 68, 66, 64, 62} ; - size_t b244_startset[3] = {0, 0, 0} ; - size_t b244_countset[3] = {2, 4, 4} ; - stat = nc_put_vara(ncid, b244_id, b244_startset, b244_countset, b244_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s311_data[3] = {2500, 2375, 2250} ; - size_t s311_startset[3] = {0, 0, 0} ; - size_t s311_countset[3] = {3, 1, 1} ; - stat = nc_put_vara(ncid, s311_id, s311_startset, s311_countset, s311_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i312_data[6] = {640000, 639980, 632000, 631980, 624000, 623980} ; - size_t i312_startset[3] = {0, 0, 0} ; - size_t i312_countset[3] = {3, 1, 2} ; - stat = nc_put_vara(ncid, i312_id, i312_startset, i312_countset, i312_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f313_data[9] = {26244, 26235, 26226, 25515, 25506, 25497, 24786, 24777, 24768} ; - size_t f313_startset[3] = {0, 0, 0} ; - size_t f313_countset[3] = {3, 1, 3} ; - stat = nc_put_vara(ncid, f313_id, f313_startset, f313_countset, f313_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d314_data[12] = {40000, 39990, 39980, 39970, 39000, 38990, 38980, 38970, 38000, 37990, 37980, 37970} ; - size_t d314_startset[3] = {0, 0, 0} ; - size_t d314_countset[3] = {3, 1, 4} ; - stat = nc_put_vara(ncid, d314_id, d314_startset, d314_countset, d314_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c321_data[6] = "@DHLPT" ; - size_t c321_startset[3] = {0, 0, 0} ; - size_t c321_countset[3] = {3, 2, 1} ; - stat = nc_put_vara(ncid, c321_id, c321_startset, c321_countset, c321_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b322_data[12] = {64, 62, 68, 66, 56, 54, 60, 58, 48, 46, 52, 50} ; - size_t b322_startset[3] = {0, 0, 0} ; - size_t b322_countset[3] = {3, 2, 2} ; - stat = nc_put_vara(ncid, b322_id, b322_startset, b322_countset, b322_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s323_data[18] = {2500, 2495, 2490, 2525, 2520, 2515, 2375, 2370, 2365, 2400, 2395, 2390, 2250, 2245, 2240, 2275, 2270, 2265} ; - size_t s323_startset[3] = {0, 0, 0} ; - size_t s323_countset[3] = {3, 2, 3} ; - stat = nc_put_vara(ncid, s323_id, s323_startset, s323_countset, s323_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i324_data[24] = {640000, 639980, 639960, 639940, 640400, 640380, 640360, 640340, 632000, 631980, 631960, 631940, 632400, 632380, 632360, 632340, 624000, 623980, 623960, 623940, 624400, 624380, 624360, 624340} ; - size_t i324_startset[3] = {0, 0, 0} ; - size_t i324_countset[3] = {3, 2, 4} ; - stat = nc_put_vara(ncid, i324_id, i324_startset, i324_countset, i324_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f331_data[9] = {26244, 26325, 26406, 25515, 25596, 25677, 24786, 24867, 24948} ; - size_t f331_startset[3] = {0, 0, 0} ; - size_t f331_countset[3] = {3, 3, 1} ; - stat = nc_put_vara(ncid, f331_id, f331_startset, f331_countset, f331_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d332_data[18] = {40000, 39990, 40100, 40090, 40200, 40190, 39000, 38990, 39100, 39090, 39200, 39190, 38000, 37990, 38100, 38090, 38200, 38190} ; - size_t d332_startset[3] = {0, 0, 0} ; - size_t d332_countset[3] = {3, 3, 2} ; - stat = nc_put_vara(ncid, d332_id, d332_startset, d332_countset, d332_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c333_data[27] = "@BDDFHHJLHJLLNPPRTPRTTVXXZ\\" ; - size_t c333_startset[3] = {0, 0, 0} ; - size_t c333_countset[3] = {3, 3, 3} ; - stat = nc_put_vara(ncid, c333_id, c333_startset, c333_countset, c333_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b334_data[36] = {64, 62, 60, 58, 68, 66, 64, 62, 72, 70, 68, 66, 56, 54, 52, 50, 60, 58, 56, 54, 64, 62, 60, 58, 48, 46, 44, 42, 52, 50, 48, 46, 56, 54, 52, 50} ; - size_t b334_startset[3] = {0, 0, 0} ; - size_t b334_countset[3] = {3, 3, 4} ; - stat = nc_put_vara(ncid, b334_id, b334_startset, b334_countset, b334_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s341_data[12] = {2500, 2525, 2550, 2575, 2375, 2400, 2425, 2450, 2250, 2275, 2300, 2325} ; - size_t s341_startset[3] = {0, 0, 0} ; - size_t s341_countset[3] = {3, 4, 1} ; - stat = nc_put_vara(ncid, s341_id, s341_startset, s341_countset, s341_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i342_data[24] = {640000, 639980, 640400, 640380, 640800, 640780, 641200, 641180, 632000, 631980, 632400, 632380, 632800, 632780, 633200, 633180, 624000, 623980, 624400, 624380, 624800, 624780, 625200, 625180} ; - size_t i342_startset[3] = {0, 0, 0} ; - size_t i342_countset[3] = {3, 4, 2} ; - stat = nc_put_vara(ncid, i342_id, i342_startset, i342_countset, i342_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f343_data[36] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388, 26487, 26478, 26469, 25515, 25506, 25497, 25596, 25587, 25578, 25677, 25668, 25659, 25758, 25749, 25740, 24786, 24777, 24768, 24867, 24858, 24849, 24948, 24939, 24930, 25029, 25020, 25011} ; - size_t f343_startset[3] = {0, 0, 0} ; - size_t f343_countset[3] = {3, 4, 3} ; - stat = nc_put_vara(ncid, f343_id, f343_startset, f343_countset, f343_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d344_data[48] = {40000, 39990, 39980, 39970, 40100, 40090, 40080, 40070, 40200, 40190, 40180, 40170, 40300, 40290, 40280, 40270, 39000, 38990, 38980, 38970, 39100, 39090, 39080, 39070, 39200, 39190, 39180, 39170, 39300, 39290, 39280, 39270, 38000, 37990, 37980, 37970, 38100, 38090, 38080, 38070, 38200, 38190, 38180, 38170, 38300, 38290, 38280, 38270} ; - size_t d344_startset[3] = {0, 0, 0} ; - size_t d344_countset[3] = {3, 4, 4} ; - stat = nc_put_vara(ncid, d344_id, d344_startset, d344_countset, d344_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c411_data[4] = "@HPX" ; - size_t c411_startset[3] = {0, 0, 0} ; - size_t c411_countset[3] = {4, 1, 1} ; - stat = nc_put_vara(ncid, c411_id, c411_startset, c411_countset, c411_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b412_data[8] = {64, 62, 56, 54, 48, 46, 40, 38} ; - size_t b412_startset[3] = {0, 0, 0} ; - size_t b412_countset[3] = {4, 1, 2} ; - stat = nc_put_vara(ncid, b412_id, b412_startset, b412_countset, b412_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s413_data[12] = {2500, 2495, 2490, 2375, 2370, 2365, 2250, 2245, 2240, 2125, 2120, 2115} ; - size_t s413_startset[3] = {0, 0, 0} ; - size_t s413_countset[3] = {4, 1, 3} ; - stat = nc_put_vara(ncid, s413_id, s413_startset, s413_countset, s413_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i414_data[16] = {640000, 639980, 639960, 639940, 632000, 631980, 631960, 631940, 624000, 623980, 623960, 623940, 616000, 615980, 615960, 615940} ; - size_t i414_startset[3] = {0, 0, 0} ; - size_t i414_countset[3] = {4, 1, 4} ; - stat = nc_put_vara(ncid, i414_id, i414_startset, i414_countset, i414_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f421_data[8] = {26244, 26325, 25515, 25596, 24786, 24867, 24057, 24138} ; - size_t f421_startset[3] = {0, 0, 0} ; - size_t f421_countset[3] = {4, 2, 1} ; - stat = nc_put_vara(ncid, f421_id, f421_startset, f421_countset, f421_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d422_data[16] = {40000, 39990, 40100, 40090, 39000, 38990, 39100, 39090, 38000, 37990, 38100, 38090, 37000, 36990, 37100, 37090} ; - size_t d422_startset[3] = {0, 0, 0} ; - size_t d422_countset[3] = {4, 2, 2} ; - stat = nc_put_vara(ncid, d422_id, d422_startset, d422_countset, d422_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c423_data[24] = "@BDDFHHJLLNPPRTTVXXZ\\\\^`" ; - size_t c423_startset[3] = {0, 0, 0} ; - size_t c423_countset[3] = {4, 2, 3} ; - stat = nc_put_vara(ncid, c423_id, c423_startset, c423_countset, c423_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b424_data[32] = {64, 62, 60, 58, 68, 66, 64, 62, 56, 54, 52, 50, 60, 58, 56, 54, 48, 46, 44, 42, 52, 50, 48, 46, 40, 38, 36, 34, 44, 42, 40, 38} ; - size_t b424_startset[3] = {0, 0, 0} ; - size_t b424_countset[3] = {4, 2, 4} ; - stat = nc_put_vara(ncid, b424_id, b424_startset, b424_countset, b424_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s431_data[12] = {2500, 2525, 2550, 2375, 2400, 2425, 2250, 2275, 2300, 2125, 2150, 2175} ; - size_t s431_startset[3] = {0, 0, 0} ; - size_t s431_countset[3] = {4, 3, 1} ; - stat = nc_put_vara(ncid, s431_id, s431_startset, s431_countset, s431_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i432_data[24] = {640000, 639980, 640400, 640380, 640800, 640780, 632000, 631980, 632400, 632380, 632800, 632780, 624000, 623980, 624400, 624380, 624800, 624780, 616000, 615980, 616400, 616380, 616800, 616780} ; - size_t i432_startset[3] = {0, 0, 0} ; - size_t i432_countset[3] = {4, 3, 2} ; - stat = nc_put_vara(ncid, i432_id, i432_startset, i432_countset, i432_data); - check_err(stat,__LINE__,__FILE__); - } - - { - float f433_data[36] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388, 25515, 25506, 25497, 25596, 25587, 25578, 25677, 25668, 25659, 24786, 24777, 24768, 24867, 24858, 24849, 24948, 24939, 24930, 24057, 24048, 24039, 24138, 24129, 24120, 24219, 24210, 24201} ; - size_t f433_startset[3] = {0, 0, 0} ; - size_t f433_countset[3] = {4, 3, 3} ; - stat = nc_put_vara(ncid, f433_id, f433_startset, f433_countset, f433_data); - check_err(stat,__LINE__,__FILE__); - } - - { - double d434_data[48] = {40000, 39990, 39980, 39970, 40100, 40090, 40080, 40070, 40200, 40190, 40180, 40170, 39000, 38990, 38980, 38970, 39100, 39090, 39080, 39070, 39200, 39190, 39180, 39170, 38000, 37990, 37980, 37970, 38100, 38090, 38080, 38070, 38200, 38190, 38180, 38170, 37000, 36990, 36980, 36970, 37100, 37090, 37080, 37070, 37200, 37190, 37180, 37170} ; - size_t d434_startset[3] = {0, 0, 0} ; - size_t d434_countset[3] = {4, 3, 4} ; - stat = nc_put_vara(ncid, d434_id, d434_startset, d434_countset, d434_data); - check_err(stat,__LINE__,__FILE__); - } - - { - char c441_data[16] = "@DHLHLPTPTX\\X\\`d" ; - size_t c441_startset[3] = {0, 0, 0} ; - size_t c441_countset[3] = {4, 4, 1} ; - stat = nc_put_vara(ncid, c441_id, c441_startset, c441_countset, c441_data); - check_err(stat,__LINE__,__FILE__); - } - - { - signed char b442_data[32] = {64, 62, 68, 66, 72, 70, 76, 74, 56, 54, 60, 58, 64, 62, 68, 66, 48, 46, 52, 50, 56, 54, 60, 58, 40, 38, 44, 42, 48, 46, 52, 50} ; - size_t b442_startset[3] = {0, 0, 0} ; - size_t b442_countset[3] = {4, 4, 2} ; - stat = nc_put_vara(ncid, b442_id, b442_startset, b442_countset, b442_data); - check_err(stat,__LINE__,__FILE__); - } - - { - short s443_data[48] = {2500, 2495, 2490, 2525, 2520, 2515, 2550, 2545, 2540, 2575, 2570, 2565, 2375, 2370, 2365, 2400, 2395, 2390, 2425, 2420, 2415, 2450, 2445, 2440, 2250, 2245, 2240, 2275, 2270, 2265, 2300, 2295, 2290, 2325, 2320, 2315, 2125, 2120, 2115, 2150, 2145, 2140, 2175, 2170, 2165, 2200, 2195, 2190} ; - size_t s443_startset[3] = {0, 0, 0} ; - size_t s443_countset[3] = {4, 4, 3} ; - stat = nc_put_vara(ncid, s443_id, s443_startset, s443_countset, s443_data); - check_err(stat,__LINE__,__FILE__); - } - - { - int i444_data[64] = {640000, 639980, 639960, 639940, 640400, 640380, 640360, 640340, 640800, 640780, 640760, 640740, 641200, 641180, 641160, 641140, 632000, 631980, 631960, 631940, 632400, 632380, 632360, 632340, 632800, 632780, 632760, 632740, 633200, 633180, 633160, 633140, 624000, 623980, 623960, 623940, 624400, 624380, 624360, 624340, 624800, 624780, 624760, 624740, 625200, 625180, 625160, 625140, 616000, 615980, 615960, 615940, 616400, 616380, 616360, 616340, 616800, 616780, 616760, 616740, 617200, 617180, 617160, 617140} ; - size_t i444_startset[3] = {0, 0, 0} ; - size_t i444_countset[3] = {4, 4, 4} ; - stat = nc_put_vara(ncid, i444_id, i444_startset, i444_countset, i444_data); - check_err(stat,__LINE__,__FILE__); - } - - - stat = nc_close(ncid); - check_err(stat,__LINE__,__FILE__); - return 0; - -} - -int -main(int argc, char **argv) -{ -#ifdef TEST_PNETCDF - MPI_Init(&argc, &argv); -#endif - printf("\n*** Testing netCDF attributes.\n"); - printf("*** testing attribute renaming for memory leak, like nc_test..."); - { -#define A1_NAME "a" -#define B1_NAME "b" -#define VAR_NAME "var" - - int ncid, nvars, v, natts, varid; - char name_in[NC_MAX_NAME + 1]; - char char_data = 'a'; - - /* Create a file with a var with two atts. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLASSIC_MODEL|NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_def_var(ncid, VAR_NAME, NC_INT, 0, NULL, &varid)) ERR; - if (nc_put_att(ncid, varid, A1_NAME, NC_CHAR, 1, &char_data)) ERR; - if (nc_put_att(ncid, varid, B1_NAME, NC_CHAR, 1, &char_data)) ERR; - - /* Add a global attribute A1_NAME. */ - if (nc_put_att(ncid, NC_GLOBAL, A1_NAME, NC_CHAR, 1, &char_data)) ERR; - - /* Change the name of the first att of each variable to - * A1_NAME. Then copy the global att called A1_NAME, overwriting - * the one we just changed. */ - if (nc_inq_nvars(ncid, &nvars)) ERR; - if (nvars != 1) ERR_RET; - if (nc_inq_varnatts(ncid, 0, &natts)) ERR; - if (natts != 2) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, A1_NAME, ncid, 0)) ERR; - - /* Also test for fix of another bug, allowing invalid _FillValue - * attribute (not of same type as variable or with 0 values or more - * than 1 value) to be created. */ - { - static const int var_FillValue_atts[] = {42, -99} ; - float var_FillValue_att = -99 ; - int res = 0; - /* This should return error, because attribute has too many values */ -#if 1 - res=nc_put_att_int(ncid, varid, "_FillValue", NC_INT, 2, var_FillValue_atts); - if(res != NC_EINVAL) ERR; -#else - if ((res=nc_put_att_int(ncid, varid, "_FillValue", NC_INT, 2, var_FillValue_atts)) - != NC_EINVAL) ERR; -#endif - /* This also should return error, because types don't match */ - if (nc_put_att_float(ncid, varid, "_FillValue", NC_FLOAT, 1, &var_FillValue_att) - != NC_EBADTYPE) ERR; - /* This should succeed, _FillValue is valid */ - if (nc_put_att_int(ncid, varid, "_FillValue", NC_INT, 1, var_FillValue_atts)) ERR; - } - - if (nc_close(ncid)) ERR; - - /* Reopen the file and check it. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_nvars(ncid, &nvars)) ERR; - if (nvars != 1) ERR_RET; - for (v = 0; v < nvars; v++) - { - if (nc_inq_varnatts(ncid, v, &natts)) ERR_RET; - if (natts) - { - if (nc_inq_attname(ncid, v, 0, name_in)) ERR_RET; - if (strcmp(name_in, A1_NAME)) ERR_RET; - } - } - if (nc_close(ncid)) ERR; - - } - SUMMARIZE_ERR; - printf("*** testing attribute renaming for memory leak, like nc_test..."); - { -#define NVARS 136 -#define A_NAME "a" - int ncid, nvars, v, natts; - char name_in[NC_MAX_NAME + 1]; - char char_data = 'a'; - - /* Create the same file as nc_test uses (almost). */ - if (create_file()) ERR; - - /* Open the file. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_redef(ncid)) ERR; - - /* Add a global attribute A_NAME. */ - if (nc_put_att(ncid, NC_GLOBAL, A_NAME, NC_CHAR, 1, - &char_data)) ERR; - - /* Change the name of the first att of each variable to - * A_NAME. Then copy the global att called A_NAME, overwriting - * the one we just changed. */ - if (nc_inq_nvars(ncid, &nvars)) ERR; - if (nvars != NVARS) ERR_RET; - for (v = 0; v < nvars; v++) - { - if (nc_inq_varnatts(ncid, v, &natts)) ERR_RET; - if (natts) - { - if (nc_inq_attname(ncid, v, 0, name_in)) ERR_RET; - if (nc_rename_att(ncid, v, name_in, A_NAME)) ERR_RET; - if (nc_copy_att(ncid, NC_GLOBAL, A_NAME, ncid, v)) ERR_RET; - } - } - if (nc_close(ncid)) ERR; - - /* Reopen the file and check it. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_nvars(ncid, &nvars)) ERR; - if (nvars != NVARS) ERR_RET; - for (v = 0; v < nvars; v++) - { - if (nc_inq_varnatts(ncid, v, &natts)) ERR_RET; - if (natts) - { - if (nc_inq_attname(ncid, v, 0, name_in)) ERR_RET; - if (strcmp(name_in, A_NAME)) ERR_RET; - } - } - if (nc_close(ncid)) ERR; - - } - SUMMARIZE_ERR; -#ifdef TEST_PNETCDF - MPI_Finalize(); -#endif - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test/tst_atts3.c b/contrib/netcdf/4.4.1.1/nc_test/tst_atts3.c deleted file mode 100644 index 3855e01feda..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/tst_atts3.c +++ /dev/null @@ -1,853 +0,0 @@ -/* This is part of the netCDF package. Copyright 2005-2007 University - Corporation for Atmospheric Research/Unidata. See COPYRIGHT file - for conditions of use. - - Test attributes. - - $Id: tst_atts3.c 2796 2014-10-28 03:40:29Z wkliao $ -*/ - -#include "config.h" -#include -#include "err_macros.h" -#include -#include "netcdf.h" -#ifdef USE_PARALLEL -#include "netcdf_par.h" -#endif - -#define FILE_NAME "tst_atts_3.nc" -#define FILE_NAME2 "tst_atts_2.nc" -#define VAR1_NAME "Horace_Rumpole" -#define VAR2_NAME "Claude_Erskine-Brown" -#define VAR3_NAME "Phillida_Erskine-Brown_Q.C." -#define DIM1_NAME "Old_Bailey_case_number" -#define DIM1_LEN 10 -#define DIM2_NAME "occupancy_in_chambers" -#define DIM2_LEN 15 -#define ATT_INT_NAME "Old_Bailey_Room_Numbers" -#define ATT_DOUBLE_NAME "Equity_Court_Canteen_Charges" -#define ATT_SHORT_NAME "Ecclesiastical_Court_Appearences" -#define ATT_TEXT_NAME "Speech_to_Jury" -#define ATT_TEXT_NAME2 "Speech_to_She_Who_Must_be_Obeyed" -#define ATT_UCHAR_NAME "Number_of_current_briefs" -#define ATT_SCHAR_NAME "Slate_totals_at_Pomeroys_Wine_Bar" -#define ATT_USHORT_NAME "brief_no" -#define ATT_UINT_NAME "Orders_from_SWMBO" -#define ATT_INT64_NAME "judges_golf_score" -#define ATT_UINT64_NAME "Number_of_drinks_in_career_to_date" - -/* -#define ATT_USHORT_NAME "Chamber_Gas_Electric_and_Telephone_Bill_Share" -*/ -#define ATT_FLOAT_NAME "Average_Nanoseconds_for_Lose_Win_or_Appeal" -#define ATT_LEN 3 - -char speech[] = "Once more unto the breach, dear friends, once more;\n\ -Or close the wall up with our English dead.\n\ -In peace there's nothing so becomes a man\n\ -As modest stillness and humility:\n\ -But when the blast of war blows in our ears,\n\ -Then imitate the action of the tiger;\n\ -Stiffen the sinews, summon up the blood,\n\ -Disguise fair nature with hard-favour'd rage;\n\ -Then lend the eye a terrible aspect;\n\ -Let pry through the portage of the head\n\ -Like the brass cannon; let the brow o'erwhelm it\n\ -As fearfully as doth a galled rock\n\ -O'erhang and jutty his confounded base,\n\ -Swill'd with the wild and wasteful ocean.\n\ -Now set the teeth and stretch the nostril wide,\n\ -Hold hard the breath and bend up every spirit\n\ -To his full height. On, on, you noblest English.\n\ -Whose blood is fet from fathers of war-proof!\n\ -Fathers that, like so many Alexanders,\n\ -Have in these parts from morn till even fought\n\ -And sheathed their swords for lack of argument:\n\ -Dishonour not your mothers; now attest\n\ -That those whom you call'd fathers did beget you.\n\ -Be copy now to men of grosser blood,\n\ -And teach them how to war. And you, good yeoman,\n\ -Whose limbs were made in England, show us here\n\ -The mettle of your pasture; let us swear\n\ -That you are worth your breeding; which I doubt not;\n\ -For there is none of you so mean and base,\n\ -That hath not noble lustre in your eyes.\n\ -I see you stand like greyhounds in the slips,\n\ -Straining upon the start. The game's afoot:\n\ -Follow your spirit, and upon this charge\n\ -Cry 'God for Harry, England, and Saint George!'"; - -/* Test the ordering of atts for a cmode. */ -#define NUM_ATTS 8 -#define ATT_MAX_NAME 25 -int -tst_att_ordering(int cmode) -{ - int ncid; - char name[NUM_ATTS][ATT_MAX_NAME + 1] = {"Gc", "Gb", "Gs", "Gi", "Gf", - "Gd", "Gatt-name-dashes", "Gatt.name.dots"}; - int len[NUM_ATTS] = {0, 2, 3, 3, 3, 3, 1, 1}; - signed char b[2] = {-128, 127}; - short s[3] = {-32768, 0, 32767}; - int i[3] = {42, 0, -42}; - float f[3] = {42.0, -42.0, 42.0}; - double d[3] = {420.0, -420.0, 420.0}; - int att_name_dashes = -1, att_name_dots = -2; - char name_in[NC_MAX_NAME]; - int j; - - /* Create a file with some global atts. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, cmode|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, name[0], len[0], NULL)) ERR; - if (nc_put_att_schar(ncid, NC_GLOBAL, name[1], NC_BYTE, len[1], b)) ERR; - if (nc_put_att_short(ncid, NC_GLOBAL, name[2], NC_SHORT, len[2], s)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, name[3], NC_INT, len[3], i)) ERR; - if (nc_put_att_float(ncid, NC_GLOBAL, name[4], NC_FLOAT, len[4], f)) ERR; - if (nc_put_att_double(ncid, NC_GLOBAL, name[5], NC_DOUBLE, len[5], d)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, name[6], NC_INT, len[6], &att_name_dashes)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, name[7], NC_INT, len[7], &att_name_dots)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check the order. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - for (j = 0; j < NUM_ATTS; j++) - { - if (nc_inq_attname(ncid, NC_GLOBAL, j, name_in)) ERR; - if (strcmp(name_in, name[j])) ERR; - } - - /* Close up shop. */ - if (nc_close(ncid)) ERR; - return err; -} - -int -main(int argc, char **argv) -{ - signed char schar_in[ATT_LEN], schar_out[ATT_LEN] = {NC_MIN_BYTE, 1, NC_MAX_BYTE}; - unsigned char uchar_in[ATT_LEN]; - short short_in[ATT_LEN], short_out[ATT_LEN] = {NC_MIN_SHORT, -128, NC_MAX_SHORT}; - int int_in[ATT_LEN], int_out[ATT_LEN] = {-100000, 128, 100000}; - float float_in[ATT_LEN], float_out[ATT_LEN] = {-0.5, 0.25, 0.125}; - double double_in[ATT_LEN], double_out[ATT_LEN] = {-0.25, .5, 0.125}; - long long longlong_in[ATT_LEN] = {-1LL, -1LL, -1LL}; -#ifdef USE_NETCDF4 - long long_in[ATT_LEN]; - unsigned short ushort_in[ATT_LEN], ushort_out[ATT_LEN] = {0, 128, NC_MAX_USHORT}; - unsigned int uint_in[ATT_LEN], uint_out[ATT_LEN] = {0, 128, NC_MAX_UINT}; - long long longlong_out[ATT_LEN] = {-3123456789LL, 128LL, 3123456789LL}; - unsigned long long ulonglong_in[ATT_LEN] = {NC_MAX_UINT64, NC_MAX_UINT64, NC_MAX_UINT64}; - unsigned long long ulonglong_out[ATT_LEN] = {0LL, 128LL, 3123456789LL}; -#endif - -#ifdef TEST_PNETCDF - MPI_Init(&argc, &argv); -#endif - (void) signal(SIGFPE, SIG_IGN); - - printf("\n*** Testing netcdf-3 attribute functions.\n"); - printf("*** testing really simple global atts..."); -#define NUM_SIMPLE_ATTS 9 - { - int ncid; - char name[NUM_SIMPLE_ATTS][ATT_MAX_NAME + 1] = {"Gc", "Gb", "Gs", "Gi", "Gf", - "Gd", "G7", "G8", "G9"}; - char name_in[NC_MAX_NAME]; - int j; - - /* Create a file with some global atts. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - for (j = 0; j < NUM_SIMPLE_ATTS; j++) - if (nc_put_att_int(ncid, NC_GLOBAL, name[j], NC_INT, 0, NULL)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check the order. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - for (j = 0; j < NUM_SIMPLE_ATTS; j++) - { - if (nc_inq_attname(ncid, NC_GLOBAL, j, name_in)) ERR; - if (strcmp(name_in, name[j])) ERR; - } - - /* Close up shop. */ - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing simple global atts..."); - { - int ncid; - nc_type att_type; - size_t att_len; - int i; - - char *speech_in; - - /* This won't work, because classic files can't create these types. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, NC_INT, ATT_LEN, - int_out)) ERR; - /* It is also OK to read classic types converted into - * supported C types. though the conversion may encounter - * out-of-range values */ - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_INT_NAME, uchar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) int_out[i]) ERR; - - /* This was bug NCF-171: on 32-bit platforms, bad values returned */ - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_INT_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != (long long) int_out[i]) ERR; - if (nc_close(ncid)) ERR; - - /* Create a file with a global attribute of each type. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, strlen(speech)+1, speech)) ERR; - if (nc_put_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, NC_BYTE, ATT_LEN, schar_out)) ERR; - if (nc_put_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, NC_SHORT, ATT_LEN, short_out)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, NC_INT, ATT_LEN, int_out)) ERR; - if (nc_put_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, NC_FLOAT, ATT_LEN, float_out)) ERR; - if (nc_put_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, NC_DOUBLE, ATT_LEN, double_out)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check attributes. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - /* Check text. */ - if (nc_inq_att(ncid, NC_GLOBAL, ATT_TEXT_NAME, &att_type, &att_len)) - ERR; - if (att_type != NC_CHAR || att_len != strlen(speech) + 1) ERR; - if (!(speech_in = malloc(att_len + 1))) ERR; - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, speech_in)) ERR; - if (strcmp(speech, speech_in)) ERR; - free(speech_in); - /* Check numeric values. */ - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, schar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != schar_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != short_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != int_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != float_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != double_out[i]) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing attribute data type conversions..."); - - { - int ncid; - int i; - - /* Reopen the file and try different type conversions. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - - /* No text conversions are allowed, and people who try them should - * be locked up, away from decent folk! */ - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_TEXT_NAME, short_in) != NC_ECHAR) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_TEXT_NAME, int_in) != NC_ECHAR) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_TEXT_NAME, float_in) != NC_ECHAR) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_TEXT_NAME, double_in) != NC_ECHAR) ERR; - - /* Read all atts (except text) as double. */ - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_SCHAR_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != schar_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_SHORT_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != short_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_INT_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != int_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_FLOAT_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != float_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != double_out[i]) ERR; - - /* Read all atts (except text) as float. */ - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_SCHAR_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != schar_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_SHORT_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != short_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_INT_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != int_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != float_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != (float) double_out[i]) ERR; - - /* Read all atts (except text) as int. */ - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_SCHAR_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != schar_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_SHORT_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != short_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != int_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_FLOAT_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != (int) float_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != (int) double_out[i]) ERR; - - /* Read all atts (except text) as short. */ - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SCHAR_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != schar_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != short_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_INT_NAME, short_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != (short) int_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_FLOAT_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != (short) float_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != (short) double_out[i]) ERR; - - /* Read all atts (except text) as schar. */ - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, schar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != schar_out[i]) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SHORT_NAME, schar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != (signed char) short_out[i]) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_INT_NAME, schar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != (signed char) int_out[i]) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_FLOAT_NAME, schar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != (signed char) float_out[i]) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, schar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != (signed char) double_out[i]) ERR; - - /* Read all atts (except text) as uchar. */ - /* Shouldn't this get an NC_ERANGE error for storing -128 into an unsigned char? Possible bug ... */ - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, uchar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) schar_out[i]) ERR; - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_SHORT_NAME, uchar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) short_out[i]) ERR; - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_INT_NAME, uchar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) int_out[i]) ERR; - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_FLOAT_NAME, uchar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) float_out[i]) ERR; - if (nc_get_att_uchar(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, uchar_in) != NC_ERANGE) ERR; - for (i = 0; i < ATT_LEN; i++) - if (uchar_in[i] != (unsigned char) double_out[i]) ERR; - - /* Read all atts (except text) into long long variable. */ - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_SCHAR_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != schar_out[i]) ERR; - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_SHORT_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != short_out[i]) ERR; - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_INT_NAME, longlong_in)) ERR; - /* This was bug NCF-171: on 32-bit platforms, bad values returned */ - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_INT_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != (long long) int_out[i]) ERR; - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_FLOAT_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != (long long)float_out[i]) ERR; - if (nc_get_att_longlong(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, longlong_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (longlong_in[i] != (long long)double_out[i]) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing zero-length attributes..."); - { - int ncid; - - /*int int_in[ATT_LEN], int_out[ATT_LEN] = {NC_MIN_INT, 128, NC_MAX_INT};*/ - - /* Create a file with a global attribute of each type of zero length. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, 0, NULL)) ERR; - if (nc_put_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, NC_BYTE, 0, NULL)) ERR; - if (nc_put_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, NC_SHORT, 0, NULL)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, NC_INT, 0, NULL)) ERR; - if (nc_put_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, NC_FLOAT, 0, NULL)) ERR; - if (nc_put_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, NC_DOUBLE, 0, NULL)) ERR; - if (nc_close(ncid)) ERR; - } - - /* Make sure we can read all these zero-length atts. */ - { - int ncid; - signed char schar_in[ATT_LEN]; - short short_in[ATT_LEN]; - /*int int_in[ATT_LEN], int_out[ATT_LEN] = {NC_MIN_INT, 128, NC_MAX_INT};*/ - int int_in[ATT_LEN]; - float float_in[ATT_LEN]; - double double_in[ATT_LEN]; - size_t len; - nc_type xtype; - -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, NULL)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_TEXT_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_CHAR) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, schar_in)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_SCHAR_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_BYTE) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, short_in)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_SHORT_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_SHORT) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, int_in)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_INT_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_INT) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, float_in)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_FLOAT_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_FLOAT) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, double_in)) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, &xtype, &len)) ERR; - if (len || xtype != NC_DOUBLE) ERR; - /* Conversions no longer result in range errors, since there's no data. */ - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_FLOAT_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_INT_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SHORT_NAME, schar_in)) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing zero-length attributes and redef...(this test skipped for HDF5-1.8.0 beta1"); - { - int ncid; - signed char schar_in[ATT_LEN]; - short short_in[ATT_LEN]; - int int_in[ATT_LEN]; - float float_in[ATT_LEN]; - double double_in[ATT_LEN]; - - - /* Create a file with a global attribute of each type of zero length. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, 0, NULL)) ERR; - if (nc_put_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, NC_BYTE, 0, NULL)) ERR; - if (nc_put_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, NC_SHORT, 0, NULL)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, NC_INT, 0, NULL)) ERR; - if (nc_put_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, NC_FLOAT, 0, NULL)) ERR; - if (nc_put_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, NC_DOUBLE, 0, NULL)) ERR; - if (nc_close(ncid)) ERR; - - /* Make sure we can read all these zero-length atts added during a - * redef. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, NULL)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, schar_in)) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, short_in)) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, int_in)) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, float_in)) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, double_in)) ERR; - /* Conversions no longer result in range errors, since there's no data. */ - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_FLOAT_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_INT_NAME, schar_in)) ERR; - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SHORT_NAME, schar_in)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - - printf("*** testing attribute deletes and renames..."); - { - int ncid, varid, dimids[2]; - nc_type att_type; - size_t att_len; - char *speech_in; - char name_in[NC_MAX_NAME + 1]; - int attid_in, natts_in; - int int_out[ATT_LEN] = {-100000, 128, 100000}; - - /* Create a file with a global attribute. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, strlen(speech)+1, - speech)) ERR; - if (nc_close(ncid)) ERR; - - /* Rename it. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_attid(ncid, NC_GLOBAL, ATT_TEXT_NAME, &attid_in)) ERR; - if (attid_in != 0) ERR; - if (nc_inq_attname(ncid, NC_GLOBAL, attid_in, name_in)) ERR; - if (strcmp(name_in, ATT_TEXT_NAME)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_rename_att(ncid, NC_GLOBAL, ATT_TEXT_NAME, ATT_TEXT_NAME2)) ERR; - if (nc_inq_attname(ncid, NC_GLOBAL, attid_in, name_in)) ERR; - if (strcmp(name_in, ATT_TEXT_NAME2)) ERR; - if (nc_close(ncid)) ERR; - -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_att(ncid, NC_GLOBAL, ATT_TEXT_NAME2, &att_type, &att_len)) ERR; - if (att_type != NC_CHAR || att_len != strlen(speech) + 1) ERR; - if (!(speech_in = malloc(att_len + 1))) ERR; - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME2, speech_in)) ERR; - if (strcmp(speech, speech_in)) ERR; - free(speech_in); - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, speech_in) != NC_ENOTATT) ERR; - if (nc_close(ncid)) ERR; - - /* Now delete the att. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_redef(ncid)) ERR; - if (nc_del_att(ncid, NC_GLOBAL, ATT_TEXT_NAME2)) ERR; - if (nc_close(ncid)) ERR; - - /* Now create a file with a variable, which has an att. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, strlen(speech)+1, speech)) ERR; - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_dim(ncid, DIM2_NAME, DIM2_LEN, &dimids[1])) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_INT, 2, dimids, &varid)) ERR; - if (nc_put_att_int(ncid, varid, ATT_INT_NAME, NC_INT, 3, int_out)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and delete it. Make sure it's gone. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_redef(ncid)) ERR; - if (nc_del_att(ncid, 0, ATT_INT_NAME)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and readd the attribute. Enddef and redef, - * and delete it, then check to make sure it's gone. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_redef(ncid)) ERR; - if (nc_put_att_int(ncid, varid, ATT_INT_NAME, NC_INT, 3, int_out)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_del_att(ncid, 0, ATT_INT_NAME)) ERR; - if (nc_inq_varnatts(ncid, 0, &natts_in)) ERR; - if (natts_in != 0) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing attribute create order..."); - -#define ATT0 "Maturin" -#define ATT1 "Aubery" - { - int ncid, varid, dimids[2]; - int attid_in; - const int number = 42; - - /* Create a file with several global attributes. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_int(ncid, NC_GLOBAL, ATT0, NC_INT, 1, &number)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, ATT1, NC_INT, 1, &number)) ERR; - if (nc_close(ncid)) ERR; - - /* Open it and check the order. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_attid(ncid, NC_GLOBAL, ATT0, &attid_in)) ERR; - if (attid_in != 0) ERR; - if (nc_inq_attid(ncid, NC_GLOBAL, ATT1, &attid_in)) ERR; - if (attid_in != 1) ERR; - if (nc_close(ncid)) ERR; - - /* Now create a file with a variable, which has two atts. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_dim(ncid, DIM2_NAME, DIM2_LEN, &dimids[1])) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_INT, 2, dimids, &varid)) ERR; - if (nc_put_att_int(ncid, varid, ATT0, NC_INT, 1, &number)) ERR; - if (nc_put_att_int(ncid, varid, ATT1, NC_INT, 1, &number)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check the order of the attributes on the var. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_WRITE|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; -#endif - if (nc_inq_attid(ncid, 0, ATT0, &attid_in)) ERR; - if (attid_in != 0) ERR; - if (nc_inq_attid(ncid, 0, ATT1, &attid_in)) ERR; - if (attid_in != 1) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing attribute ordering some more..."); - -#define VAR_NAME "i" -#define A1_NAME "i" -#define A2_NAME "f" -#define A3_NAME "d" -#define A1_LEN 3 -#define A2_LEN 4 -#define A3_LEN 5 - { - int ncid; - int varid, natts, nvars; - double dvalue[] = {999.99, 999.99, 999.99, 999.99, 999.99}; - char name_in[NC_MAX_NAME + 1]; - - /* Create a file with one var, and attach three atts to it. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_def_var(ncid, VAR_NAME, NC_INT, 0, NULL, &varid)) ERR; - if (nc_put_att_double(ncid, varid, A1_NAME, NC_INT, A1_LEN, dvalue)) ERR; - if (nc_put_att_double(ncid, varid, A2_NAME, NC_INT, A2_LEN, dvalue)) ERR; - if (nc_put_att_double(ncid, varid, A3_NAME, NC_INT, A3_LEN, dvalue)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - if (nc_inq_nvars(ncid, &nvars)) ERR; - if (nvars != 1) ERR; - if (nc_inq_varnatts(ncid, 0, &natts)) ERR; - if (natts != 3) ERR; - if (nc_inq_attname(ncid, 0, 0, name_in)) ERR; - if (strcmp(name_in, A1_NAME)) ERR; - if (nc_inq_attname(ncid, 0, 1, name_in)) ERR; - if (strcmp(name_in, A2_NAME)) ERR; - if (nc_inq_attname(ncid, 0, 2, name_in)) ERR; - if (strcmp(name_in, A3_NAME)) ERR; - - /* Close up shop. */ - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing attribute ordering even more..."); - - /* Test the ordering of atts for each cmode. */ - if (tst_att_ordering(NC_CLOBBER)) ERR; - if (tst_att_ordering(NC_CLOBBER|NC_64BIT_OFFSET)) ERR; - - SUMMARIZE_ERR; - printf("*** testing attributes and enddef/redef..."); - -#define ATT_1 "a" -#define ATT_2 "b" -#define ATT_3 "c" - { - int ncid, att = 1; - -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_put_att(ncid, NC_GLOBAL, ATT_1, NC_INT, 1, &att)) ERR; - if (nc_put_att(ncid, NC_GLOBAL, ATT_2, NC_INT, 1, &att)) ERR; - if (nc_put_att(ncid, NC_GLOBAL, ATT_3, NC_INT, 1, &att)) ERR; - - if (nc_close(ncid)) ERR; - -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME, 0, &ncid)) ERR; -#endif - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing copy of simple global atts..."); - { - int ncid, ncid2; - nc_type att_type; - size_t att_len; - int i; - - char *speech_in; - signed char schar_in[ATT_LEN], schar_out[ATT_LEN] = {NC_MIN_BYTE, 1, NC_MAX_BYTE}; - short short_in[ATT_LEN], short_out[ATT_LEN] = {NC_MIN_SHORT, -128, NC_MAX_SHORT}; - int int_in[ATT_LEN], int_out[ATT_LEN] = {-100000, 128, 100000}; - float float_in[ATT_LEN], float_out[ATT_LEN] = {.5, 0.25, 0.125}; - double double_in[ATT_LEN], double_out[ATT_LEN] = {0.25, .5, 0.125}; - - /* Create a file with a global attribute of each type. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid)) ERR; -#else - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; -#endif - if (nc_put_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, strlen(speech)+1, speech)) ERR; - if (nc_put_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, NC_BYTE, ATT_LEN, schar_out)) ERR; - if (nc_put_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, NC_SHORT, ATT_LEN, short_out)) ERR; - if (nc_put_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, NC_INT, ATT_LEN, int_out)) ERR; - if (nc_put_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, NC_FLOAT, ATT_LEN, float_out)) ERR; - if (nc_put_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, NC_DOUBLE, ATT_LEN, double_out)) ERR; - - /* Create another file and copy all the attributes. */ -#ifdef TEST_PNETCDF - if (nc_create_par(FILE_NAME2, NC_CLOBBER|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL,&ncid2)) ERR; -#else - if (nc_create(FILE_NAME2, NC_CLOBBER, &ncid2)) ERR; -#endif - if (nc_copy_att(ncid, NC_GLOBAL, ATT_TEXT_NAME, ncid2, NC_GLOBAL)) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, ATT_SCHAR_NAME, ncid2, NC_GLOBAL)) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, ATT_SHORT_NAME, ncid2, NC_GLOBAL)) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, ATT_INT_NAME, ncid2, NC_GLOBAL)) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, ATT_FLOAT_NAME, ncid2, NC_GLOBAL)) ERR; - if (nc_copy_att(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, ncid2, NC_GLOBAL)) ERR; - - /* Close both files. */ - if (nc_close(ncid)) ERR; - if (nc_close(ncid2)) ERR; - - /* Open the file and check attributes. */ -#ifdef TEST_PNETCDF - if (nc_open_par(FILE_NAME2, NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid)) ERR; -#else - if (nc_open(FILE_NAME2, 0, &ncid)) ERR; -#endif - /* Check text. */ - if (nc_inq_att(ncid, NC_GLOBAL, ATT_TEXT_NAME, &att_type, &att_len)) ERR; - if (att_type != NC_CHAR || att_len != strlen(speech) + 1) ERR; - if (!(speech_in = malloc(att_len + 1))) ERR; - if (nc_get_att_text(ncid, NC_GLOBAL, ATT_TEXT_NAME, speech_in)) ERR; - if (strcmp(speech, speech_in)) ERR; - free(speech_in); - /* Check numeric values. */ - if (nc_get_att_schar(ncid, NC_GLOBAL, ATT_SCHAR_NAME, schar_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (schar_in[i] != schar_out[i]) ERR; - if (nc_get_att_short(ncid, NC_GLOBAL, ATT_SHORT_NAME, short_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (short_in[i] != short_out[i]) ERR; - if (nc_get_att_int(ncid, NC_GLOBAL, ATT_INT_NAME, int_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (int_in[i] != int_out[i]) ERR; - if (nc_get_att_float(ncid, NC_GLOBAL, ATT_FLOAT_NAME, float_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (float_in[i] != float_out[i]) ERR; - if (nc_get_att_double(ncid, NC_GLOBAL, ATT_DOUBLE_NAME, double_in)) ERR; - for (i = 0; i < ATT_LEN; i++) - if (double_in[i] != double_out[i]) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; -#ifdef TEST_PNETCDF - MPI_Finalize(); -#endif - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test/tst_inq_type.c b/contrib/netcdf/4.4.1.1/nc_test/tst_inq_type.c deleted file mode 100644 index c0f0ccc83b5..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/tst_inq_type.c +++ /dev/null @@ -1,165 +0,0 @@ -/* This is part of the netCDF package. Copyright 2016 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. See www.unidata.ucar.edu for more info. - - Test nc_inq_type - - Added in support of https://github.com/Unidata/netcdf/issues/240 - -*/ - -#include -#include - -#include "config.h" -#include -#include "err_macros.h" -#include - -#ifdef USE_PNETCDF -#include -#endif - -#define FILE_NAME "tst_inq_type.nc" - -void -check_err(const int stat, const int line, const char *file) { - if (stat != NC_NOERR) { - (void)fprintf(stderr,"line %d of %s: %s\n", line, file, nc_strerror(stat)); - fflush(stderr); - exit(1); - } -} - - -int test_type_should_fail(int ncid, int type, char* tstring) { - - printf("\t* Testing Type (Should Fail) %s:\t",tstring); - if(!nc_inq_type(ncid,type,NULL,NULL)) ERR; - else printf("expected failure.\n"); - - return 0; -} - -int test_type(int ncid, int type, char* tstring) { - - printf("\t* Testing Type %s:\t",tstring); - if(nc_inq_type(ncid,type,NULL,NULL)) ERR; - else printf("success.\n"); - - return 0; -} - - - -int main(int argc, char **argv) { - - int ncid=0; - - { - printf("\n* Testing nc_inq_type with netcdf-3\n"); - - if(nc_create(FILE_NAME,NC_CLOBBER,&ncid)) ERR; - - test_type(ncid, NC_BYTE,"NC_BYTE"); - test_type(ncid, NC_CHAR,"NC_CHAR"); - test_type(ncid, NC_SHORT,"NC_SHORT"); - test_type(ncid, NC_INT,"NC_INT"); - test_type(ncid, NC_LONG,"NC_LONG"); - test_type(ncid, NC_FLOAT,"NC_FLOAT"); - test_type(ncid, NC_DOUBLE,"NC_DOUBLE"); - - /* Not Valid for Classic */ - /* Valid now, see https://github.com/Unidata/netcdf-c/issues/240 for more - information. The types are not valid for use in Classic, - but nc_inq_type should return valid info. */ - test_type(ncid, NC_UBYTE,"NC_UBYTE"); - test_type(ncid, NC_USHORT,"NC_USHORT"); - test_type(ncid, NC_UINT,"NC_UINT"); - test_type(ncid, NC_INT64,"NC_INT64"); - test_type(ncid, NC_UINT64,"NC_UINT64"); - test_type(ncid, NC_STRING,"NC_STRING"); - - /* Invoke a true negative */ - test_type_should_fail(ncid, 9999, "NC_GARBAGE"); - test_type_should_fail(ncid, -1, "NC_GARBAGE_NEGATIVE"); - - - if(nc_close(ncid)) ERR; - } - - { - printf("\n* Testing nc_inq_type with CDF5\n"); - - if(nc_create(FILE_NAME,NC_CLOBBER|NC_CDF5,&ncid)) ERR; - - test_type(ncid, NC_BYTE,"NC_BYTE"); - test_type(ncid, NC_CHAR,"NC_CHAR"); - test_type(ncid, NC_SHORT,"NC_SHORT"); - test_type(ncid, NC_INT,"NC_INT"); - test_type(ncid, NC_LONG,"NC_LONG"); - test_type(ncid, NC_FLOAT,"NC_FLOAT"); - test_type(ncid, NC_DOUBLE,"NC_DOUBLE"); - test_type(ncid, NC_UBYTE,"NC_UBYTE"); - test_type(ncid, NC_USHORT,"NC_USHORT"); - test_type(ncid, NC_UINT,"NC_UINT"); - test_type(ncid, NC_INT64,"NC_INT64"); - test_type(ncid, NC_UINT64,"NC_UINT64"); - test_type(ncid, NC_STRING,"NC_STRING"); - - if(nc_close(ncid)) ERR; - } - -#ifdef USE_NETCDF4 - - { - printf("\n* Testing nc_inq_type with netcdf-4 + Classic Model\n"); - - if(nc_create(FILE_NAME,NC_CLOBBER|NC_NETCDF4|NC_CLASSIC_MODEL,&ncid)) ERR; - - test_type(ncid, NC_BYTE,"NC_BYTE"); - test_type(ncid, NC_CHAR,"NC_CHAR"); - test_type(ncid, NC_SHORT,"NC_SHORT"); - test_type(ncid, NC_INT,"NC_INT"); - test_type(ncid, NC_LONG,"NC_LONG"); - test_type(ncid, NC_FLOAT,"NC_FLOAT"); - test_type(ncid, NC_DOUBLE,"NC_DOUBLE"); - test_type(ncid, NC_UBYTE,"NC_UBYTE"); - test_type(ncid, NC_USHORT,"NC_USHORT"); - test_type(ncid, NC_UINT,"NC_UINT"); - test_type(ncid, NC_INT64,"NC_INT64"); - test_type(ncid, NC_UINT64,"NC_UINT64"); - test_type(ncid, NC_STRING,"NC_STRING"); - - - if(nc_close(ncid)) ERR; - } - - { - printf("\n* Testing nc_inq_type with netcdf-4\n"); - - if(nc_create(FILE_NAME,NC_CLOBBER|NC_NETCDF4,&ncid)) ERR; - - test_type(ncid, NC_BYTE,"NC_BYTE"); - test_type(ncid, NC_CHAR,"NC_CHAR"); - test_type(ncid, NC_SHORT,"NC_SHORT"); - test_type(ncid, NC_INT,"NC_INT"); - test_type(ncid, NC_LONG,"NC_LONG"); - test_type(ncid, NC_FLOAT,"NC_FLOAT"); - test_type(ncid, NC_DOUBLE,"NC_DOUBLE"); - test_type(ncid, NC_UBYTE,"NC_UBYTE"); - test_type(ncid, NC_USHORT,"NC_USHORT"); - test_type(ncid, NC_UINT,"NC_UINT"); - test_type(ncid, NC_INT64,"NC_INT64"); - test_type(ncid, NC_UINT64,"NC_UINT64"); - test_type(ncid, NC_STRING,"NC_STRING"); - if(nc_close(ncid)) ERR; - } - -#endif // USE_NETCDF4 - - printf("* Finished.\n"); - - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test/tst_pnetcdf.c b/contrib/netcdf/4.4.1.1/nc_test/tst_pnetcdf.c deleted file mode 100644 index 812ab5dfdb8..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test/tst_pnetcdf.c +++ /dev/null @@ -1,166 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test fix of bug involving creation of a file with pnetcdf APIs, - then opening and modifying the file with netcdf. - - Author: Wei-keng Liao. -*/ - -#include -#include "err_macros.h" -#include -#include -#include -#include -#include -#include -#include - -#define NVARS 6 -#define NX 5 -#define FILENAME "tst_pnetcdf.nc" - -int main(int argc, char* argv[]) -{ - int i, j, rank, nprocs, ncid, cmode, varid[NVARS], dimid[2], *buf; - int err = 0; - char str[32]; - size_t start[2], count[2]; - MPI_Comm comm=MPI_COMM_SELF; - MPI_Info info=MPI_INFO_NULL; - - printf("\n*** Testing bug fix with changing pnetcdf variable offsets..."); - - MPI_Init(&argc,&argv); - MPI_Comm_size(MPI_COMM_WORLD, &nprocs); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - - if (nprocs > 1 && rank == 0) - printf("This test program is intended to run on ONE process\n"); - if (rank > 0) goto fn_exit; - - /* first, use PnetCDF to create a file with default header/variable alignment */ -#ifdef DISABLE_PNETCDF_ALIGNMENT - MPI_Info_create(&info); - MPI_Info_set(info, "nc_header_align_size", "1"); - MPI_Info_set(info, "nc_var_align_size", "1"); -#endif - - cmode = NC_PNETCDF | NC_CLOBBER; - if (nc_create_par(FILENAME, cmode, comm, info, &ncid)) ERR_RET; - - /* define dimension */ - if (nc_def_dim(ncid, "Y", NC_UNLIMITED, &dimid[0])) ERR; - if (nc_def_dim(ncid, "X", NX, &dimid[1])) ERR; - - /* Odd numbers are fixed variables, even numbers are record variables */ - for (i=0; i -void -print_nok(int nok) -{ - if (verbose || nfails > 0) - print("\n"); - print(" %d good comparisons. ", nok); -} - - -/* Is value within external type range? */ -int -inRange(const double value, const nc_type datatype) -{ - double min, max; - - switch (datatype) { - case NC_CHAR: return value >= X_CHAR_MIN && value <= X_CHAR_MAX; - case NC_BYTE: return value >= X_BYTE_MIN && value <= X_BYTE_MAX; - case NC_SHORT: return value >= X_SHORT_MIN && value <= X_SHORT_MAX; - case NC_INT: return value >= X_INT_MIN && value <= X_INT_MAX; - case NC_FLOAT: return value >= X_FLOAT_MIN && value <= X_FLOAT_MAX; - case NC_DOUBLE: return value >= X_DOUBLE_MIN && value <= X_DOUBLE_MAX; - case NC_UBYTE: return value >= 0 && value <= X_UCHAR_MAX; - case NC_USHORT: return value >= 0 && value <= X_USHORT_MAX; - case NC_UINT: return value >= 0 && value <= X_UINT_MAX; - case NC_INT64: return value >= X_INT64_MIN && value <= X_INT64_MAX; - case NC_UINT64: return value >= 0 && value <= X_UINT64_MAX; - default: assert(0); - } - return value >= min && value <= max; -} - -static int -inRange_uchar(const double value, const nc_type datatype) -{ - if (datatype == NC_BYTE) { - return(value >= 0 && value <= 255); - } - /* else */ - return inRange(value, datatype); -} - -static int -inRange_schar(const double value, const nc_type datatype) -{ - /* check value of type datatype if within schar range */ - - if (datatype == NC_UBYTE) { - /* netCDF specification make a special case for type conversion between - * uchar and scahr: do not check for range error. See - * http://www.unidata.ucar.edu/software/netcdf/docs_rc/data_type.html#type_conversion - */ - return(value >= X_CHAR_MIN && value <= X_CHAR_MAX); - } - /* else */ - return inRange(value, datatype); -} - -static int -inRange_float(const double value, const nc_type datatype) -{ - double min, max; - - switch (datatype) { - case NC_CHAR: min = X_CHAR_MIN; max = X_CHAR_MAX; break; - case NC_BYTE: min = X_BYTE_MIN; max = X_BYTE_MAX; break; - case NC_SHORT: min = X_SHORT_MIN; max = X_SHORT_MAX; break; - case NC_INT: min = X_INT_MIN; max = X_INT_MAX; break; - case NC_FLOAT: - if(FLT_MAX < X_FLOAT_MAX) { - min = (-FLT_MAX); - max = FLT_MAX; - } else { - min = X_FLOAT_MIN; - max = X_FLOAT_MAX; - } - break; - case NC_DOUBLE: - if(FLT_MAX < X_DOUBLE_MAX) { - min = (-FLT_MAX); - max = FLT_MAX; - } else { - min = X_DOUBLE_MIN; - max = X_DOUBLE_MAX; - } - break; - case NC_UBYTE: min = 0; max = X_UCHAR_MAX; break; - case NC_USHORT: min = 0; max = X_USHORT_MAX; break; - case NC_UINT: min = 0; max = X_UINT_MAX; break; - case NC_INT64: min = X_INT64_MIN; max = X_INT64_MAX; break; - case NC_UINT64: min = 0; max = X_UINT64_MAX; break; - default: assert(0); - } - if(!( value >= min && value <= max)) { -#if 0 /* DEBUG */ - if(datatype == NC_FLOAT) { - fprintf(stderr, "\n"); - fprintf(stderr, "min % .17e\n", min); - fprintf(stderr, "value % .17e\n", value); - fprintf(stderr, "max % .17e\n", max); - } -#endif - return 0; - } -#if FLT_MANT_DIG != DBL_MANT_DIG - /* else */ - { - const float fvalue = value; - return fvalue >= min && fvalue <= max; - } -#else - return 1; -#endif -} - -/* wrapper for inRange to handle special NC_BYTE/uchar adjustment */ -int -inRange3( - const double value, - const nc_type datatype, - const nct_itype itype) -{ - switch (itype) { - case NCT_SCHAR: - case NCT_CHAR: - return inRange_schar(value, datatype); - case NCT_UCHAR: - return inRange_uchar(value, datatype); - case NCT_FLOAT: - return inRange_float(value, datatype); - default: - break; - } - return inRange(value, datatype); -} - - -/* - * Does x == y, where one is internal and other external (netCDF)? - * Use tolerant comparison based on IEEE FLT_EPSILON or DBL_EPSILON. - */ -int -equal( - const double x, - const double y, - nc_type extType, /* external data type */ - nct_itype itype) -{ - const double flt_epsilon = 1.19209290E-07; - const double dbl_epsilon = 2.2204460492503131E-16; - double epsilon; - - epsilon = extType == NC_FLOAT || itype == NCT_FLOAT ? flt_epsilon : dbl_epsilon; - return ABS(x-y) <= epsilon * MAX( ABS(x), ABS(y)); -} - -/* Test whether two int vectors are equal. If so return 1, else 0 */ -int -int_vec_eq(const int *v1, const int *v2, const int n) -{ - int i; - for (i= 0; i < n && v1[i] == v2[i]; i++) - ; - return i == n; -} - - -/* - * Generate random integer from 0 to n-1 - * Like throwing an n-sided dice marked 0, 1, 2, ..., n-1 - */ -int roll( int n ) -{ - int r; - - do - /* - * Compute a pseudo-random value between 0.0 and 1.0, multiply - * it by n-1, and then find the nearest integer. - * - * We don't use RAND_MAX here because not all compilation - * environments define it (e.g. gcc(1) under SunOS 4.1.4). - */ - r = ((rand() % 32768) / 32767.0) * (n - 1) + 0.5; - while (r >= n); - - return r; -} - - -/* - * Convert number to mixed base - * - * E.g. to convert 41 inches to yards, feet and inches: - * size_t base[] = {1, 3, 12}; - * size_t result[3]; - * status = toMixedBase(41, 3, base, result); - * - * Author: Harvey Davies, Unidata/UCAR, Boulder, Colorado - */ -int -toMixedBase( - size_t number, /* number to be converted to mixed base */ - size_t length, - const size_t base[], /* dimensioned [length], base[0] ignored */ - size_t result[]) /* dimensioned [length] */ -{ - size_t i; - - if (length > 0) { - for (i = length - 1; i > 0; i--) { - if (base[i] == 0) - return 1; - result[i] = number % base[i]; - number = number / base[i]; - } - result[0] = number; - } - return 0; -} - -/* - * Convert number from mixed base - * - * E.g. to convert 1 yard, 0 feet, 5 inches to inches: - * size_t number[] = {1, 0, 5}; - * size_t base[] = {1, 3, 12}; - * inches = fromMixedBase(3, number, base); - * - * Author: Harvey Davies, Unidata/UCAR, Boulder, Colorado - */ -size_t -fromMixedBase( - size_t length, - size_t number[], /* dimensioned [length] */ - size_t base[]) /* dimensioned [length], base[0] ignored */ -{ - size_t i; - size_t result = 0; - - for (i = 1; i < length; i++) { - result += number[i-1]; - result *= base[i]; - } - if (length > 0) - result += number[i-1]; - return result; -} - - -/* Convert any nc_type to double */ -int nc2dbl ( const nc_type datatype, const void *p, double *result) -{ - if ( ! p ) return 2; - if ( ! result ) return 3; - switch (datatype) { - case NC_BYTE: *result = *((signed char *) p); break; - case NC_CHAR: *result = *((signed char *) p); break; - case NC_SHORT: *result = *((short *) p); break; - case NC_INT: -#if INT_MAX >= X_INT_MAX - *result = *((int *) p); break; -#else - *result = *((long *) p); break; -#endif - case NC_FLOAT: *result = *((float *) p); break; - case NC_DOUBLE: *result = *((double *) p); break; - case NC_UBYTE: *result = *((unsigned char *) p); break; - case NC_USHORT: *result = *((unsigned short *) p); break; - case NC_UINT: -#if UINT_MAX >= X_UINT_MAX - *result = *((unsigned int *) p); break; -#else - *result = *((unsigned long *) p); break; -#endif - case NC_INT64: *result = *((long long *) p); break; - case NC_UINT64: *result = *((unsigned long long *) p); break; - default: return 1; - } - return 0; -} - - -/* Convert double to any nc_type */ -int dbl2nc ( const double d, const nc_type datatype, void *p) -{ - double r; /* rounded value */ - - if (p) { - switch (datatype) { - case NC_BYTE: - r = floor(0.5+d); - if ( r < schar_min || r > schar_max ) return 2; - *((signed char *) p) = r; - break; - case NC_CHAR: - r = floor(0.5+d); - if ( r < text_min || r > text_max ) return 2; -#ifndef __CHAR_UNSIGNED__ - *((char *) p) = r; -#else - *((signed char*) p) = r; -#endif - break; - case NC_SHORT: - r = floor(0.5+d); - if ( r < short_min || r > short_max ) return 2; - *((short *) p) = r; - break; - case NC_INT: - r = floor(0.5+d); - if ( r < long_min || r > long_max ) return 2; -#if INT_MAX >= X_INT_MAX - *((int *) p) = r; -#else - *((long *) p) = r; -#endif - break; - case NC_FLOAT: - if ( fabs(d) > float_max ) return 2; - *((float *) p) = d; - break; - case NC_DOUBLE: - *((double *) p) = d; - break; - case NC_UBYTE: - r = floor(0.5+d); - if ( r < 0.0 || r > uchar_max ) return 2; - *((unsigned char *) p) = r; - break; - case NC_USHORT: - r = floor(0.5+d); - if ( r < 0.0 || r > ushort_max ) return 2; - *((unsigned short *) p) = r; - break; - case NC_UINT: - r = floor(0.5+d); - if ( r < 0.0 || r > uint_max ) return 2; -#if UINT_MAX >= X_UINT_MAX - *((unsigned int *) p) = r; -#else - *((unsigned long *) p) = r; -#endif - break; - case NC_INT64: - r = floor(0.5+d); - if ( r < int64_min || r > int64_max ) return 2; - *((long long *) p) = r; - break; - case NC_UINT64: - r = floor(0.5+d); - if ( r < 0.0 || r > uint64_max ) return 2; - *((unsigned long long *) p) = r; - break; - default: - return 1; - } - return 0; - } else { - return 1; - } -} - -#define FUZZ (1.19209290E-07) - -#ifdef USE_EXTREME_NUMBERS -/* Generate data values as function of type, rank (-1 for attribute), index */ -double -hash( const nc_type type, const int rank, const size_t *index ) -{ - double base; - double result; - int d; /* index of dimension */ - - /* If vector then elements 0 & 1 are min & max. Elements 2 & 3 are */ - /* just < min & > max (except for NC_CHAR & NC_DOUBLE) */ - if (abs(rank) == 1 && index[0] <= 3) { - switch (index[0]) { - case 0: - switch (type) { - case NC_CHAR: return X_CHAR_MIN; - case NC_BYTE: return X_BYTE_MIN; - case NC_SHORT: return X_SHORT_MIN; - case NC_INT: return X_INT_MIN; - case NC_FLOAT: return X_FLOAT_MIN; - case NC_DOUBLE: return X_DOUBLE_MIN; - case NC_UBYTE: return 0; - case NC_USHORT: return 0; - case NC_UINT: return 0; - case NC_INT64: return X_INT_MIN - 128.0; /* slight smaller - than INT_MIN */ - case NC_UINT64: return 0; - default: assert(0); - } - case 1: - switch (type) { - case NC_CHAR: return X_CHAR_MAX; - case NC_BYTE: return X_BYTE_MAX; - case NC_SHORT: return X_SHORT_MAX; - case NC_INT: return X_INT_MAX; - case NC_FLOAT: return X_FLOAT_MAX; - case NC_DOUBLE: return X_DOUBLE_MAX; - case NC_UBYTE: return X_UCHAR_MAX; - case NC_USHORT: return X_USHORT_MAX; - case NC_UINT: return X_UINT_MAX; - case NC_INT64: return X_INT_MAX + 128.0; - /* slightly bigger than INT_MAX */ - case NC_UINT64: return X_UINT_MAX + 128.0; - /* slightly bigger than UINT_MAX */ - default: assert(0); - } - case 2: - switch (type) { - case NC_CHAR: return 'A'; - case NC_BYTE: return X_BYTE_MIN-1.0; - case NC_SHORT: return X_SHORT_MIN-1.0; - case NC_INT: return X_INT_MIN-1.0; - case NC_FLOAT: return X_FLOAT_MIN * (1.0 + FUZZ); - case NC_DOUBLE: return -1.0; - case NC_UBYTE: return -1.0; - case NC_USHORT: return -1.0; - case NC_UINT: return -1.0; - case NC_INT64: return -1.0; /* skip test */ - case NC_UINT64: return -1.0; - default: assert(0); - } - case 3: - switch (type) { - case NC_CHAR: return 'Z'; - case NC_BYTE: return X_BYTE_MAX+1.0; - case NC_SHORT: return X_SHORT_MAX+1.0; - case NC_INT: return X_INT_MAX+1.0; - case NC_FLOAT: return X_FLOAT_MAX * (1.0 + FUZZ); - case NC_DOUBLE: return 1.0; - case NC_UBYTE: return X_UCHAR_MAX +1.0; - case NC_USHORT: return X_USHORT_MAX+1.0; - case NC_UINT: return X_UINT_MAX +1.0; - case NC_INT64: return 1.0; /* skip test */ - case NC_UINT64: return 1.0; /* skip test */ - default: assert(0); - } - } - } else { - switch (type) { - case NC_CHAR: base = 2; break; - case NC_BYTE: base = -2; break; - case NC_SHORT: base = -5; break; - case NC_INT: base = -20; break; - case NC_FLOAT: base = -9; break; - case NC_DOUBLE: base = -10; break; - - /* not sure what right values are */ - case NC_UBYTE: base = 2; break; - case NC_USHORT: base = 5; break; - case NC_UINT: base = 20; break; - case NC_INT64: base = -20; break; - case NC_UINT64: base = 20; break; - default: assert(0); - } - result = rank < 0 ? base * 7 : base * (rank + 1); - for (d = 0; d < abs(rank); d++) - result = base * (result + index[d]); - } - return result; -} -#else /* USE_EXTREME_NUMBERS */ -#define SANE_SHORT 3333 -#define SANE_INT 2222 -#define SANE_FLOAT 300.0 -#define SANE_DOUBLE 1000.0 - -/* Generate data values as function of type, rank (-1 for attribute), index */ -double -hash( const nc_type type, const int rank, const size_t *index ) -{ - double base; - double result; - int d; /* index of dimension */ - - /* If vector then elements 0 & 1 are min & max. Elements 2 & 3 are */ - /* just < min & > max (except for NC_CHAR & NC_DOUBLE) */ - if (abs(rank) == 1 && index[0] <= 3) { - switch (index[0]) { - case 0: - switch (type) { - case NC_CHAR: return X_CHAR_MIN; - case NC_BYTE: return X_BYTE_MIN; - case NC_SHORT: return SANE_SHORT; - case NC_INT: return SANE_INT; - case NC_FLOAT: return SANE_FLOAT; - case NC_DOUBLE: return SANE_DOUBLE; - case NC_UBYTE: return 0; - case NC_USHORT: return 0; - case NC_UINT: return 0; - case NC_INT64: return X_INT_MIN - 128.0; /* slight smaller - than INT_MIN */ - case NC_UINT64: return 0; - default: assert(0); - } - case 1: - switch (type) { - case NC_CHAR: return X_CHAR_MAX; - case NC_BYTE: return X_BYTE_MAX; - case NC_SHORT: return SANE_SHORT; - case NC_INT: return SANE_INT; - case NC_FLOAT: return SANE_FLOAT; - case NC_DOUBLE: return SANE_DOUBLE; - case NC_UBYTE: return X_UCHAR_MAX; - case NC_USHORT: return X_USHORT_MAX; - case NC_UINT: return X_UINT_MAX; - case NC_INT64: return X_INT_MAX + 128.0; - /* slightly bigger than INT_MAX */ - case NC_UINT64: return X_UINT_MAX + 128.0; - /* slightly bigger than UINT_MAX */ - default: assert(0); - } - case 2: - switch (type) { - case NC_CHAR: return 'A'; - case NC_BYTE: return X_BYTE_MIN-1.0; - case NC_SHORT: return SANE_SHORT-1.0; - case NC_INT: return SANE_INT-1.0; - case NC_FLOAT: return SANE_FLOAT * (1.0 + FUZZ); - case NC_DOUBLE: return -1.0; - case NC_UBYTE: return -1.0; - case NC_USHORT: return -1.0; - case NC_UINT: return -1.0; - case NC_INT64: return -1.0; /* skip test */ - case NC_UINT64: return -1.0; - default: assert(0); - } - case 3: - switch (type) { - case NC_CHAR: return 'Z'; - case NC_BYTE: return X_BYTE_MAX+1.0; - case NC_SHORT: return SANE_SHORT+1.0; - case NC_INT: return SANE_INT+1.0; - case NC_FLOAT: return SANE_FLOAT * (1.0 + FUZZ); - case NC_DOUBLE: return 1.0; - case NC_UBYTE: return X_UCHAR_MAX +1.0; - case NC_USHORT: return X_USHORT_MAX+1.0; - case NC_UINT: return X_UINT_MAX +1.0; - case NC_INT64: return 1.0; /* skip test */ - case NC_UINT64: return 1.0; /* skip test */ - default: assert(0); - } - } - } else { - switch (type) { - case NC_CHAR: base = 2; break; - case NC_BYTE: base = -2; break; - case NC_SHORT: base = -5; break; - case NC_INT: base = -20; break; - case NC_FLOAT: base = -9; break; - case NC_DOUBLE: base = -10; break; - - /* not sure what right values are */ - case NC_UBYTE: base = 2; break; - case NC_USHORT: base = 5; break; - case NC_UINT: base = 20; break; - case NC_INT64: base = -20; break; - case NC_UINT64: base = 20; break; - default: assert(0); - } - result = rank < 0 ? base * 7 : base * (rank + 1); - for (d = 0; d < abs(rank); d++) - result = base * (result + index[d]); - } - return result; -} -#endif -/* wrapper for hash to handle special NC_BYTE/uchar adjustment */ -double -hash4( - const nc_type type, - const int rank, - const size_t *index, - const nct_itype itype) -{ - double result; - - result = hash( type, rank, index ); - if (itype == NCT_UCHAR && type == NC_BYTE && result >= -128 && result < 0) - result += 256; - return result; -} - -static nc_type -char2type(char letter) { - switch (letter) { - case 'c': return NC_CHAR; - case 'b': return NC_BYTE; - case 's': return NC_SHORT; - case 'i': return NC_INT; - case 'f': return NC_FLOAT; - case 'd': return NC_DOUBLE; - case 'y': return NC_UBYTE; - case 't': return NC_USHORT; - case 'u': return NC_UINT; - case 'x': return NC_INT64; - case 'z': return NC_UINT64; - default: assert(0); - } - return NC_CHAR; /* Just to keep compiler happy */ -} - - -static void -init_dims(const char *digit) -{ - int dimid; /* index of dimension */ - for (dimid = 0; dimid < NDIMS; dimid++) - { - dim_len[dimid] = dimid == 0 ? NRECS : dimid; - dim_name[dimid][0] = 'D'; - dim_name[dimid][1] = digit[dimid]; - dim_name[dimid][2] = '\0'; - } -} - -static void -init_gatts(const char *type_letter) -{ - int attid; - for (attid = 0; attid < numGatts; attid++) - { - gatt_name[attid][0] = 'G'; - gatt_name[attid][1] = type_letter[attid]; - gatt_name[attid][2] = '\0'; - gatt_len[attid] = 1 + attid; - gatt_type[attid] = char2type (type_letter[attid]); - } -} - -static size_t -product(size_t nn, const size_t *sp) -{ - size_t result = 1; - while(nn-- > 0) - result *= *sp++; - return result; -} - -/* - define global variables: - dim_name, dim_len, - var_name, var_type, var_rank, var_shape, var_natts, var_dimid, var_nels - att_name, gatt_name, att_type, gatt_type, att_len, gatt_len - */ -void -init_gvars (void) -{ - const size_t max_dim_len[MAX_RANK] = { - MAX_DIM_LEN +1, - MAX_DIM_LEN, - MAX_DIM_LEN - }; - const char type_letter[] = "cbsifdytuxz"; - /* c:char, b:byte, s:short, i:int, f:float, d:double, y:ubyte, t:ushort, - * u:uint, x:int64, z:uint64 - */ - const char digit[] = "r123456789"; - - size_t rank; - int vn; /* var number */ - int xtype; /* index of type */ - int an; /* attribute number */ - - assert(sizeof(max_dim_len)/sizeof(max_dim_len[0]) >= MAX_RANK); - - init_dims(digit); - - for (vn=0; vn 0; - assert (var_dimid[vn][dn] <= 9); - var_name[vn][dn + 1] = digit[var_dimid[vn][dn]]; - var_shape[vn][dn] = var_dimid[vn][dn] ? - var_dimid[vn][dn] : NRECS; - var_nels[vn] *= var_shape[vn][dn]; - } - } /* dn block */ - } - } - } - - init_gatts(type_letter); -} - - -/* define dims defined by global variables */ -void -def_dims(int ncid) -{ - int err; /* status */ - int i; - int dimid; /* dimension id */ - - for (i = 0; i < NDIMS; i++) { - err = nc_def_dim(ncid, dim_name[i], i==0 ? NC_UNLIMITED : dim_len[i], - &dimid); - IF (err) error("nc_def_dim: %s", nc_strerror(err)); - } -} - - -/* define vars defined by global variables */ -void -def_vars(int ncid) -{ - int err; /* status */ - int i; - int var_id; - - for (i = 0; i < numVars; i++) { - err = nc_def_var(ncid, var_name[i], var_type[i], var_rank[i], - var_dimid[i], &var_id); - IF (err) error("nc_def_var: %s", nc_strerror(err)); - } -} - - -/* put attributes defined by global variables */ -void -put_atts(int ncid) -{ - int err; /* status */ - int i; - size_t k; - int j; /* index of attribute */ - int allInRange; - double att[MAX_NELS]; - signed char catt[MAX_NELS]; - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - if (ATT_TYPE(i,j) == NC_CHAR) { - for (k = 0; k < ATT_LEN(i,j); k++) { - catt[k] = hash(ATT_TYPE(i,j), -1, &k); - } - err = nc_put_att_text(ncid, i, ATT_NAME(i,j), - ATT_LEN(i,j), catt); - IF (err) - error("nc_put_att_text: %s", nc_strerror(err)); - } else { - for (allInRange = 1, k = 0; k < ATT_LEN(i,j); k++) { - att[k] = hash(ATT_TYPE(i,j), -1, &k); - allInRange = allInRange && inRange(att[k], ATT_TYPE(i,j)); - } - err = nc_put_att_double(ncid, i, ATT_NAME(i,j), - ATT_TYPE(i,j), ATT_LEN(i,j), att); - if (allInRange) { - IF (err) - error("nc_put_att_double: %s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("type-conversion range error: status = %d", err); - } - } - } - } -} - -/* put variables defined by global variables */ -void -put_vars(int ncid) -{ - size_t start[MAX_RANK]; - size_t index[MAX_RANK]; - int err; /* status */ - int i; - size_t j; - double value[MAX_NELS]; - signed char text[MAX_NELS]; - int allInRange; - - for (j = 0; j < MAX_RANK; j++) - start[j] = 0; - for (i = 0; i < numVars; i++) { - for (allInRange = 1, j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) error("toMixedBase"); - if (var_name[i][0] == 'c') { - text[j] = hash(var_type[i], var_rank[i], index); - } else { - value[j] = hash(var_type[i], var_rank[i], index); - allInRange = allInRange && inRange(value[j], var_type[i]); - } - } - if (var_name[i][0] == 'c') { - err = nc_put_vara_text(ncid, i, start, var_shape[i], text); - IF (err) - error("nc_put_vara_text: %s", nc_strerror(err)); - } else { - err = nc_put_vara_double(ncid, i, start, var_shape[i], value); - if (allInRange) { - IF (err) - error("nc_put_vara_double: %s", nc_strerror(err)); - } else { - IF (err != NC_ERANGE) - error("type-conversion range error: status = %d", err); - } - } - } -} - - -/* Create & write all of specified file using global variables */ -void -write_file(char *filename) -{ - int ncid; /* netCDF id */ - int err; /* status */ - err = file_create(filename, NC_CLOBBER, &ncid); - IF (err) - error("nc_create: %s", nc_strerror(err)); - - def_dims(ncid); - def_vars(ncid); - put_atts(ncid); - err = nc_enddef(ncid); - IF (err) - error("nc_enddef: %s", nc_strerror(err)); - -#ifdef USE_PNETCDF - { int i,format; - nc_inq_format_extended(ncid, &format, NULL); - if (format == NC_FORMATX_PNETCDF) { - for (i = 0; i < numVars; i++) { - err = nc_var_par_access(ncid, i, NC_COLLECTIVE); - IF (err) error("nc_var_par_access: %s", nc_strerror(err)); - } - }} -#endif - - put_vars(ncid); - - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); -} - - -/* - * check dimensions of specified file have expected name & length - */ -void -check_dims(int ncid) -{ - char name[NC_MAX_NAME]; - size_t length; - int i; - int err; /* status */ - - for (i = 0; i < NDIMS; i++) { - err = nc_inq_dim(ncid, i, name, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (strcmp(name, dim_name[i]) != 0) - error("Unexpected name of dimension %d: '%s', expected: '%s'", i, name, dim_name[i]); - IF (length != dim_len[i]) - error("Unexpected length %d of dimension %d, expected %zu", length, i, dim_len[i]); - } -} - - -/* - * check variables of specified file have expected name, type, shape & values - */ -void -check_vars(int ncid) -{ - size_t index[MAX_RANK]; - int err; /* status */ - int i; - size_t j; - signed char text; - double value; - nc_type datatype; - int ndims; - int dimids[MAX_RANK]; - int isChar; - double expect; - char name[NC_MAX_NAME]; - size_t length; - int nok = 0; /* count of valid comparisons */ - - for (i = 0; i < numVars; i++) { - isChar = var_type[i] == NC_CHAR; - err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL); - IF (err) - error("nc_inq_var: %s", nc_strerror(err)); - IF (strcmp(name, var_name[i]) != 0) - error("Unexpected var_name"); - IF (datatype != var_type[i]) - error("Unexpected type"); - IF (ndims != var_rank[i]) - error("Unexpected rank"); - for (j = 0; j < ndims; j++) { - err = nc_inq_dim(ncid, dimids[j], 0, &length); - IF (err) - error("nc_inq_dim: %s", nc_strerror(err)); - IF (length != var_shape[i][j]) - error("Unexpected shape"); - } - for (j = 0; j < var_nels[i]; j++) { - err = toMixedBase(j, var_rank[i], var_shape[i], index); - IF (err) - error("error in toMixedBase 2"); - expect = hash( var_type[i], var_rank[i], index ); - if (isChar) { - err = nc_get_var1_text(ncid, i, index, &text); - IF (err) - error("nc_get_var1_text: %s", nc_strerror(err)); - IF (text != expect) { - error("Var %s value read 0x%02x not that expected 0x%02x ", - var_name[i], text, (char)expect); - print_n_size_t(var_rank[i], index); - } else { -#if 0 - print("\nOk %s ", var_name[i]); - print_n_size_t(var_rank[i], index); -#endif - nok++; - } - } else { - err = nc_get_var1_double(ncid, i, index, &value); - if (inRange(expect,var_type[i])) { - IF (err) { - error("nc_get_var1_double: %s", nc_strerror(err)); - } else { - IF (!equal(value,expect,var_type[i], NCT_DOUBLE)) { - value = 0; - err = nc_get_var1_double(ncid, i, index, &value); - error("Var %s value read % 12.5e not that expected % 12.7e ", - var_name[i], value, expect); - print_n_size_t(var_rank[i], index); - } else { -#if 0 - print("\nOk %s ", var_name[i]); - print_n_size_t(var_rank[i], index); -#endif - nok++; - } - } - } - } - } - } - print_nok(nok); -} - - -/* - * check attributes of specified file have expected name, type, length & values - */ -void -check_atts(int ncid) -{ - int err; /* status */ - int i; - int j; - size_t k; - nc_type datatype; - char name[NC_MAX_NAME]; - size_t length; - signed char text[MAX_NELS]; - double value[MAX_NELS]; - double expect; - int nok = 0; /* count of valid comparisons */ - - for (i = -1; i < numVars; i++) { - for (j = 0; j < NATTS(i); j++) { - err = nc_inq_attname(ncid, i, j, name); - IF (err) - error("nc_inq_attname: %s", nc_strerror(err)); - IF (strcmp(name, ATT_NAME(i,j)) != 0) - error("nc_inq_attname: unexpected name"); - err = nc_inq_att(ncid, i, name, &datatype, &length); - IF (err) - error("nc_inq_att: %s", nc_strerror(err)); - IF (datatype != ATT_TYPE(i,j)) - error("nc_inq_att: unexpected type"); - IF (length != ATT_LEN(i,j)) - error("nc_inq_att: unexpected length"); - if (datatype == NC_CHAR) { - err = nc_get_att_text(ncid, i, name, text); - IF (err) - error("nc_get_att_text: %s", nc_strerror(err)); - for (k = 0; k < ATT_LEN(i,j); k++) { - IF (text[k] != hash(datatype, -1, &k)) { - error("nc_get_att_text: unexpected value"); - } else { - nok++; - } - } - } else { - err = nc_get_att_double(ncid, i, name, value); - for (k = 0; k < ATT_LEN(i,j); k++) { - expect = hash(datatype, -1, &k); - if (inRange(expect,ATT_TYPE(i,j))) { - IF (err) - error("nc_get_att_double: %s", nc_strerror(err)); - IF (!equal(value[k], expect, ATT_TYPE(i,j), NCT_DOUBLE)) { - error("Att value read not that expected"); - } else { - nok++; - } - } - } - } - } - } - print_nok(nok); -} - - -/* Check file (dims, vars, atts) corresponds to global variables */ -void -check_file(char *filename) -{ - int ncid; /* netCDF id */ - int err; /* status */ - - err = file_open(filename, NC_NOWRITE, &ncid); - IF (err) { - error("nc_open: %s", nc_strerror(err)); - } else { - check_dims(ncid); - check_vars(ncid); - check_atts(ncid); - err = nc_close (ncid); - IF (err) - error("nc_close: %s", nc_strerror(err)); - } -} - -/* TODO: Maybe this function belongs in the netcdf library. */ -const char * -s_nc_type(nc_type type) -{ - switch((int)type){ - case NC_CHAR: return "NC_CHAR"; - case NC_BYTE: return "NC_BYTE"; - case NC_UBYTE: return "NC_UBYTE"; - 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_FLOAT: return "NC_FLOAT"; - case NC_DOUBLE: return "NC_DOUBLE"; - case NC_INT64: return "NC_INT64"; - case NC_UINT64: return "NC_UINT64"; - } - return ""; -} - - -int file_create(const char *filename, int cmode, int *ncid) -{ - int err; - - /* get the default file format */ - int default_format; - nc_set_default_format(NC_FORMAT_CLASSIC, &default_format); - /* set it back to the default */ - nc_set_default_format(default_format, NULL); - -#ifdef USE_PNETCDF - if (default_format == NC_FORMAT_CLASSIC || - default_format == NC_FORMAT_64BIT_OFFSET || - default_format == NC_FORMAT_64BIT_DATA) - err = nc_create_par(filename, cmode|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, ncid); - else -#endif - err = nc_create(filename, cmode, ncid); - - return err; -} - -int file_open(const char *filename, int omode, int *ncid) -{ - int err; - - /* get the default file format */ - int default_format; - err = nc_set_default_format(NC_FORMAT_CLASSIC, &default_format); - /* set it back to the default */ - err = nc_set_default_format(default_format, NULL); - -#ifdef USE_PNETCDF - if (default_format == NC_FORMAT_CLASSIC || - default_format == NC_FORMAT_64BIT_OFFSET || - default_format == NC_FORMAT_64BIT_DATA) - err = nc_open_par(filename, omode|NC_PNETCDF, MPI_COMM_WORLD, MPI_INFO_NULL, ncid); - else -#endif - err = nc_open(filename, omode, ncid); - - return err; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/CMakeLists.txt b/contrib/netcdf/4.4.1.1/nc_test4/CMakeLists.txt deleted file mode 100644 index 12199cae95b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/CMakeLists.txt +++ /dev/null @@ -1,99 +0,0 @@ -# Some extra tests -SET(NC4_TESTS tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars - tst_varms tst_unlim_vars tst_converts tst_converts2 tst_grps tst_grps2 - tst_compounds tst_compounds2 tst_compounds3 tst_opaques tst_strings - tst_strings2 tst_interops tst_interops4 tst_interops6 - tst_enums tst_coords tst_coords2 tst_coords3 tst_vars3 tst_vars4 - tst_chunks tst_chunks2 tst_utf8 tst_fills tst_fills2 tst_fillbug - tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts - t_type cdm_sea_soundings tst_vl tst_atts1 tst_atts2 - tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs - tst_h_scalar tst_rename tst_h5_endians tst_atts_string_rewrite - tst_put_vars_two_unlim_dim tst_hdf5_file_compat tst_fill_attr_vanish - tst_rehash) - -# Note, renamegroup needs to be compiled before run_grp_rename - -IF(BUILD_UTILITIES) - SET(NC4_TESTS ${NC4_TESTS} tst_xplatform) - build_bin_test(renamegroup) - add_sh_test(nc_test4 run_grp_rename) - ADD_SH_TEST(nc_test4 tst_misc) -ENDIF(BUILD_UTILITIES) - -## -# The shell script, run_empty_vlen_test.sh, -# depends on the 'tst_empty_vlen_unlim' binary. -## -BUILD_BIN_TEST(tst_empty_vlen_unlim) -ADD_SH_TEST(nc_test4 run_empty_vlen_test) - - - -IF(NOT MSVC) - SET(NC4_TESTS ${NC4_TESTS} tst_interops5 tst_camrun) -ENDIF() - -# If the v2 API was built, add the test program. -IF(ENABLE_V2_API) - build_bin_test(tst_v2) -ENDIF() - -IF(LARGE_FILE_TESTS) - SET(NC4_TESTS ${NC4_TESTS} tst_large tst_large2) -ENDIF() - - -IF(USE_HDF4) - SET(NC4_TESTS ${NC4_TESTS} tst_interops2) -ENDIF() - -IF(BUILD_BENCHMARKS) - add_sh_test(nc_test4 run_bm_test1) - add_sh_test(nc_test4 run_bm_elena) - add_sh_test(nc_test4 run_bm_test2) - add_sh_test(nc_test4 run_tst_chunks) - add_sh_test(nc_test4 run_bm_ar4) - add_sh_test(nc_test4 run_get_knmi_files) - - SET(NC4_TESTS ${NC4_TESTS} tst_create_files bm_file tst_chunks3 tst_ar4 tst_ar4_3d tst_ar4_4d bm_many_objs tst_h_many_atts bm_many_atts tst_files2 tst_files3 tst_ar5 tst_h_files3 tst_mem tst_knmi bm_netcdf4_recs) - IF(TEST_PARALLEL) - add_sh_test(nc_test4 run_par_bm_test) - ENDIF() -ENDIF() - -# Copy some test files from current source dir to out-of-tree build dir. -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) -IF(MSVC) - FILE(COPY ${COPY_FILES} DESTINATION ${RUNTIME_OUTPUT_DIRECTORY}/) -ENDIF() - - -FOREACH(CTEST ${NC4_TESTS}) - add_bin_test(nc_test4 ${CTEST}) -ENDFOREACH() - -# This must go after the 'foreach' stanza -# immediately above this comment. -IF(USE_HDF4_FILE_TESTS AND NOT MSVC) - add_sh_test(nc_test4 run_get_hdf4_files) - add_bin_test(nc_test4 tst_interops3) - add_sh_test(nc_test4 tst_formatx_hdf4) - build_bin_test(tst_chunk_hdf4) - add_sh_test(nc_test4 run_chunk_hdf4) - add_bin_test(nc_test4 tst_h4_lendian) - add_sh_test(nc_test4 tst_hdf4_read_var) -ENDIF() - - -IF(TEST_PARALLEL4) - build_bin_test(tst_mpi_parallel) - build_bin_test(tst_parallel) - build_bin_test(tst_parallel3) - build_bin_test(tst_parallel4) - build_bin_test(tst_nc4perf) - build_bin_test(tst_mode) - build_bin_test(tst_simplerw_coll_r) - add_sh_test(nc_test4 run_par_test) -ENDIF() diff --git a/contrib/netcdf/4.4.1.1/nc_test4/Makefile.am b/contrib/netcdf/4.4.1.1/nc_test4/Makefile.am deleted file mode 100644 index 0a315600b05..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/Makefile.am +++ /dev/null @@ -1,154 +0,0 @@ -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# This entire directory will be skipped if netCDF-4 is not enabled. -# - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -# Link to our assembled library. -AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la - -# These are netCDF-4 test programs. -NC4_TESTS = tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars \ -tst_varms tst_unlim_vars tst_converts tst_converts2 tst_grps tst_grps2 \ -tst_compounds tst_compounds2 tst_compounds3 tst_opaques tst_strings \ -tst_strings2 tst_interops tst_interops4 tst_interops5 tst_interops6 \ -tst_enums tst_coords tst_coords2 tst_coords3 tst_vars3 tst_vars4 \ -tst_chunks tst_chunks2 tst_utf8 tst_fills tst_fills2 tst_fillbug \ -tst_xplatform tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts \ -t_type cdm_sea_soundings tst_camrun tst_vl tst_atts1 tst_atts2 \ -tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs \ -tst_h_scalar tst_rename tst_h5_endians tst_atts_string_rewrite \ -tst_hdf5_file_compat tst_fill_attr_vanish tst_rehash - -check_PROGRAMS = $(NC4_TESTS) renamegroup tst_empty_vlen_unlim - -# Add these if large file tests are turned on. -if LARGE_FILE_TESTS -check_PROGRAMS += tst_large tst_large2 -endif - -TESTS = $(NC4_TESTS) - -if BUILD_UTILITIES - TESTS += run_grp_rename.sh tst_misc.sh -endif - -TESTS += run_empty_vlen_test.sh - -# If the v2 API was built, add its test program. -if BUILD_V2 -check_PROGRAMS += tst_v2 -TESTS += tst_v2 -endif # BUILD_V2 - -if LARGE_FILE_TESTS -check_PROGRAMS += tst_large -TESTS += tst_large -endif # LARGE_FILE_TESTS - -# If benchmarks were turned on, build and run a bunch more tests. -if BUILD_BENCHMARKS -check_PROGRAMS += tst_create_files bm_file tst_chunks3 tst_ar4 \ -tst_ar4_3d tst_ar4_4d bm_many_objs tst_h_many_atts bm_many_atts \ -tst_files2 tst_files3 tst_ar5 tst_h_files3 tst_mem tst_knmi \ -bm_netcdf4_recs - -bm_netcdf4_recs_SOURCES = bm_netcdf4_recs.c tst_utils.c -bm_many_atts_SOURCES = bm_many_atts.c tst_utils.c -bm_many_objs_SOURCES = bm_many_objs.c tst_utils.c -tst_ar4_3d_SOURCES = tst_ar4_3d.c tst_utils.c -tst_ar4_4d_SOURCES = tst_ar4_4d.c tst_utils.c -tst_files2_SOURCES = tst_files2.c tst_utils.c -tst_ar4_SOURCES = tst_ar4.c tst_utils.c -tst_h_many_atts_SOURCES = tst_h_many_atts.c tst_utils.c -bm_file_SOURCES = bm_file.c tst_utils.c -tst_knmi_SOURCES = tst_knmi.c tst_utils.c - -#WARNING: test_knmi depends on run_get_knmi_files.sh, -# so they must appear in the appropriate order. -TESTS += tst_ar4_3d tst_create_files run_bm_test1.sh run_bm_elena.sh \ -run_bm_test2.sh run_tst_chunks.sh tst_files2 tst_files3 \ -tst_ar5 tst_h_files3 tst_mem \ -run_get_knmi_files.sh tst_knmi - -# This will run a parallel I/O benchmark for parallel builds. -if TEST_PARALLEL4 -TESTS += run_par_bm_test.sh -endif # TEST_PARALLEL4 - -benchmarks: check - ./run_bm_radar_2D.sh - ./run_bm_radar_2D_compression1.sh - ./run_bm.sh - ./run_tst_chunks.sh - ./run_bm_ar4.sh -endif # BUILD_BENCHMARKS - -# These are the tests for HDF4. -if USE_HDF4 -check_PROGRAMS += tst_interops2 tst_chunk_hdf4 tst_h4_lendian -TESTS += tst_interops2 tst_formatx_hdf4.sh run_chunk_hdf4.sh tst_h4_lendian -if USE_HDF4_FILE_TESTS -check_PROGRAMS += tst_interops3 -TESTS += run_get_hdf4_files.sh tst_interops3 tst_hdf4_read_var.sh -endif # USE_HDF4_FILE_TESTS -#tst_interops2_LDADD = ${lib_LTLIBRARIES} -lmfhdf -ldf -ljpeg -lhdf5_hl \ -#-lhdf5 -lz -endif # USE_HDF4 - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -if USE_VALGRIND_TESTS -TESTS += run_valgrind_tests.sh run_valgrind_tests2.sh -if USE_HDF4 -TESTS += run_hdf4_valgrind_tests.sh -endif # USE_HDF4 -endif # USE_VALGRIND_TESTS - -# This are extra tests that will only be run if netcdf-4 is configured -# with --enable-parallel-tests. -if TEST_PARALLEL4 -check_PROGRAMS += tst_mpi_parallel tst_parallel tst_parallel3 \ -tst_parallel4 tst_nc4perf tst_mode tst_simplerw_coll_r -TESTS += run_par_test.sh -endif - -EXTRA_DIST = run_par_test.sh run_bm.sh run_bm_test1.sh run_bm_test2.sh \ -run_bm_radar_2D.sh run_bm_radar_2D_compression1.sh run_par_bm_test.sh \ -run_bm_elena.sh run_par_bm_radar_2D.sh run_bm_radar_2D_endianness1.sh \ -run_tst_chunks.sh ref_chunks1.cdl ref_chunks2.cdl \ -run_get_hdf4_files.sh run_valgrind_tests.sh run_valgrind_tests2.sh \ -run_bm_ar4.sh ref_tst_compounds.nc run_hdf4_valgrind_tests.sh \ -ref_tst_xplatform2_1.nc ref_tst_xplatform2_2.nc ref_tst_dims.nc \ -ref_tst_interops4.nc run_get_knmi_files.sh CMakeLists.txt \ -run_grp_rename.sh tst_formatx_hdf4.sh \ -run_chunk_hdf4.sh contiguous.hdf4 chunked.hdf4 \ -tst_h5_endians.c tst_h4_lendian.c tst_atts_string_rewrite.c \ -tst_put_vars_two_unlim_dim.c tst_empty_vlen_unlim.c run_empty_vlen_test.sh \ -ref_hdf5_compat1.nc ref_hdf5_compat2.nc ref_hdf5_compat3.nc tst_misc.sh \ -tdset.h5 tst_hdf4_read_var.sh - - -CLEANFILES = tst_mpi_parallel.bin cdm_sea_soundings.nc bm_chunking.nc \ -bm_radar.nc bm_radar1.nc radar_3d_compression_test.txt \ -radar_3d_compression.txt radar_2d_compression.txt \ -radar_3d_chunking.txt tst_floats_1D.cdl floats_1D_3.nc floats_1D.cdl \ -tst_*.nc tst_floats2_*.cdl tst_ints2_*.cdl tst_shorts2_*.cdl \ -tst_elena_*.cdl tst_simple*.cdl tst_chunks.cdl pr_A1.* tauu_A1.* \ -usi_01.* thetau_01.* tst_*.nc tst_*.h5 \ -tst_grp_rename.cdl tst_grp_rename.nc tst_grp_rename.dmp ref_grp_rename.cdl \ -foo1.nc tst_interops2.h4 tst_h5_endians.nc tst_h4_lendian.h4 test.nc \ -tst_atts_string_rewrite.nc tst_empty_vlen_unlim.nc tst_empty_vlen_lim.nc \ -tst_parallel4_simplerw_coll.nc tst_fill_attr_vanish.nc tst_rehash.nc - -if USE_HDF4_FILE_TESTS -DISTCLEANFILES = AMSR_E_L2_Rain_V10_200905312326_A.hdf \ -AMSR_E_L3_DailyLand_V06_20020619.hdf \ -MYD29.A2009152.0000.005.2009153124331.hdf \ -MYD29.A2002185.0000.005.2007160150627.hdf \ -MOD29.A2000055.0005.005.2006267200024.hdf -endif # HDF4_FILE_TESTS diff --git a/contrib/netcdf/4.4.1.1/nc_test4/Makefile.in b/contrib/netcdf/4.4.1.1/nc_test4/Makefile.in deleted file mode 100644 index ae72571e3d9..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/Makefile.in +++ /dev/null @@ -1,1993 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# This entire directory will be skipped if netCDF-4 is not enabled. -# - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -check_PROGRAMS = $(am__EXEEXT_1) renamegroup$(EXEEXT) \ - tst_empty_vlen_unlim$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) \ - $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \ - $(am__EXEEXT_7) $(am__EXEEXT_8) - -# Add these if large file tests are turned on. -@LARGE_FILE_TESTS_TRUE@am__append_3 = tst_large tst_large2 -TESTS = $(am__EXEEXT_1) run_empty_vlen_test.sh $(am__EXEEXT_3) \ - $(am__EXEEXT_4) $(am__EXEEXT_9) $(am__append_10) \ - $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__append_15) \ - $(am__append_16) $(am__append_18) - -# If the v2 API was built, add its test program. -@BUILD_V2_TRUE@am__append_4 = tst_v2 -@BUILD_V2_TRUE@am__append_5 = tst_v2 -@LARGE_FILE_TESTS_TRUE@am__append_6 = tst_large -@LARGE_FILE_TESTS_TRUE@am__append_7 = tst_large - -# If benchmarks were turned on, build and run a bunch more tests. -@BUILD_BENCHMARKS_TRUE@am__append_8 = tst_create_files bm_file tst_chunks3 tst_ar4 \ -@BUILD_BENCHMARKS_TRUE@tst_ar4_3d tst_ar4_4d bm_many_objs tst_h_many_atts bm_many_atts \ -@BUILD_BENCHMARKS_TRUE@tst_files2 tst_files3 tst_ar5 tst_h_files3 tst_mem tst_knmi \ -@BUILD_BENCHMARKS_TRUE@bm_netcdf4_recs - - -#WARNING: test_knmi depends on run_get_knmi_files.sh, -# so they must appear in the appropriate order. -@BUILD_BENCHMARKS_TRUE@am__append_9 = tst_ar4_3d tst_create_files run_bm_test1.sh run_bm_elena.sh \ -@BUILD_BENCHMARKS_TRUE@run_bm_test2.sh run_tst_chunks.sh tst_files2 tst_files3 \ -@BUILD_BENCHMARKS_TRUE@tst_ar5 tst_h_files3 tst_mem \ -@BUILD_BENCHMARKS_TRUE@run_get_knmi_files.sh tst_knmi - - -# This will run a parallel I/O benchmark for parallel builds. -@BUILD_BENCHMARKS_TRUE@@TEST_PARALLEL4_TRUE@am__append_10 = run_par_bm_test.sh - -# These are the tests for HDF4. -@USE_HDF4_TRUE@am__append_11 = tst_interops2 tst_chunk_hdf4 tst_h4_lendian -@USE_HDF4_TRUE@am__append_12 = tst_interops2 tst_formatx_hdf4.sh run_chunk_hdf4.sh tst_h4_lendian -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@am__append_13 = tst_interops3 -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@am__append_14 = run_get_hdf4_files.sh tst_interops3 tst_hdf4_read_var.sh -#tst_interops2_LDADD = ${lib_LTLIBRARIES} -lmfhdf -ldf -ljpeg -lhdf5_hl \ -#-lhdf5 -lz - -# This will run a bunch of the test programs with valgrind, the memory -# checking tool. (Valgrind must be present for this to work.) -@USE_VALGRIND_TESTS_TRUE@am__append_15 = run_valgrind_tests.sh run_valgrind_tests2.sh -@USE_HDF4_TRUE@@USE_VALGRIND_TESTS_TRUE@am__append_16 = run_hdf4_valgrind_tests.sh - -# This are extra tests that will only be run if netcdf-4 is configured -# with --enable-parallel-tests. -@TEST_PARALLEL4_TRUE@am__append_17 = tst_mpi_parallel tst_parallel tst_parallel3 \ -@TEST_PARALLEL4_TRUE@tst_parallel4 tst_nc4perf tst_mode tst_simplerw_coll_r - -@TEST_PARALLEL4_TRUE@am__append_18 = run_par_test.sh -subdir = nc_test4 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = ref_hdf5_compat1.nc ref_hdf5_compat2.nc \ - ref_hdf5_compat3.nc -am__EXEEXT_1 = tst_dims$(EXEEXT) tst_dims2$(EXEEXT) tst_dims3$(EXEEXT) \ - tst_files$(EXEEXT) tst_files4$(EXEEXT) tst_vars$(EXEEXT) \ - tst_varms$(EXEEXT) tst_unlim_vars$(EXEEXT) \ - tst_converts$(EXEEXT) tst_converts2$(EXEEXT) tst_grps$(EXEEXT) \ - tst_grps2$(EXEEXT) tst_compounds$(EXEEXT) \ - tst_compounds2$(EXEEXT) tst_compounds3$(EXEEXT) \ - tst_opaques$(EXEEXT) tst_strings$(EXEEXT) \ - tst_strings2$(EXEEXT) tst_interops$(EXEEXT) \ - tst_interops4$(EXEEXT) tst_interops5$(EXEEXT) \ - tst_interops6$(EXEEXT) tst_enums$(EXEEXT) tst_coords$(EXEEXT) \ - tst_coords2$(EXEEXT) tst_coords3$(EXEEXT) tst_vars3$(EXEEXT) \ - tst_vars4$(EXEEXT) tst_chunks$(EXEEXT) tst_chunks2$(EXEEXT) \ - tst_utf8$(EXEEXT) tst_fills$(EXEEXT) tst_fills2$(EXEEXT) \ - tst_fillbug$(EXEEXT) tst_xplatform$(EXEEXT) \ - tst_xplatform2$(EXEEXT) tst_h_atts2$(EXEEXT) \ - tst_endian_fill$(EXEEXT) tst_atts$(EXEEXT) t_type$(EXEEXT) \ - cdm_sea_soundings$(EXEEXT) tst_camrun$(EXEEXT) tst_vl$(EXEEXT) \ - tst_atts1$(EXEEXT) tst_atts2$(EXEEXT) tst_vars2$(EXEEXT) \ - tst_files5$(EXEEXT) tst_files6$(EXEEXT) tst_sync$(EXEEXT) \ - tst_h_strbug$(EXEEXT) tst_h_refs$(EXEEXT) \ - tst_h_scalar$(EXEEXT) tst_rename$(EXEEXT) \ - tst_h5_endians$(EXEEXT) tst_atts_string_rewrite$(EXEEXT) \ - tst_hdf5_file_compat$(EXEEXT) tst_fill_attr_vanish$(EXEEXT) \ - tst_rehash$(EXEEXT) -@LARGE_FILE_TESTS_TRUE@am__EXEEXT_2 = tst_large$(EXEEXT) \ -@LARGE_FILE_TESTS_TRUE@ tst_large2$(EXEEXT) -@BUILD_V2_TRUE@am__EXEEXT_3 = tst_v2$(EXEEXT) -@LARGE_FILE_TESTS_TRUE@am__EXEEXT_4 = tst_large$(EXEEXT) -@BUILD_BENCHMARKS_TRUE@am__EXEEXT_5 = tst_create_files$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ bm_file$(EXEEXT) tst_chunks3$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_ar4$(EXEEXT) tst_ar4_3d$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_ar4_4d$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ bm_many_objs$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_h_many_atts$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ bm_many_atts$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_files2$(EXEEXT) tst_files3$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_ar5$(EXEEXT) tst_h_files3$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_mem$(EXEEXT) tst_knmi$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ bm_netcdf4_recs$(EXEEXT) -@USE_HDF4_TRUE@am__EXEEXT_6 = tst_interops2$(EXEEXT) \ -@USE_HDF4_TRUE@ tst_chunk_hdf4$(EXEEXT) tst_h4_lendian$(EXEEXT) -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@am__EXEEXT_7 = tst_interops3$(EXEEXT) -@TEST_PARALLEL4_TRUE@am__EXEEXT_8 = tst_mpi_parallel$(EXEEXT) \ -@TEST_PARALLEL4_TRUE@ tst_parallel$(EXEEXT) \ -@TEST_PARALLEL4_TRUE@ tst_parallel3$(EXEEXT) \ -@TEST_PARALLEL4_TRUE@ tst_parallel4$(EXEEXT) \ -@TEST_PARALLEL4_TRUE@ tst_nc4perf$(EXEEXT) tst_mode$(EXEEXT) \ -@TEST_PARALLEL4_TRUE@ tst_simplerw_coll_r$(EXEEXT) -am__bm_file_SOURCES_DIST = bm_file.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_bm_file_OBJECTS = bm_file.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -bm_file_OBJECTS = $(am_bm_file_OBJECTS) -bm_file_LDADD = $(LDADD) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am__bm_many_atts_SOURCES_DIST = bm_many_atts.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_bm_many_atts_OBJECTS = \ -@BUILD_BENCHMARKS_TRUE@ bm_many_atts.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -bm_many_atts_OBJECTS = $(am_bm_many_atts_OBJECTS) -bm_many_atts_LDADD = $(LDADD) -am__bm_many_objs_SOURCES_DIST = bm_many_objs.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_bm_many_objs_OBJECTS = \ -@BUILD_BENCHMARKS_TRUE@ bm_many_objs.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -bm_many_objs_OBJECTS = $(am_bm_many_objs_OBJECTS) -bm_many_objs_LDADD = $(LDADD) -am__bm_netcdf4_recs_SOURCES_DIST = bm_netcdf4_recs.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_bm_netcdf4_recs_OBJECTS = \ -@BUILD_BENCHMARKS_TRUE@ bm_netcdf4_recs.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -bm_netcdf4_recs_OBJECTS = $(am_bm_netcdf4_recs_OBJECTS) -bm_netcdf4_recs_LDADD = $(LDADD) -cdm_sea_soundings_SOURCES = cdm_sea_soundings.c -cdm_sea_soundings_OBJECTS = cdm_sea_soundings.$(OBJEXT) -cdm_sea_soundings_LDADD = $(LDADD) -renamegroup_SOURCES = renamegroup.c -renamegroup_OBJECTS = renamegroup.$(OBJEXT) -renamegroup_LDADD = $(LDADD) -t_type_SOURCES = t_type.c -t_type_OBJECTS = t_type.$(OBJEXT) -t_type_LDADD = $(LDADD) -am__tst_ar4_SOURCES_DIST = tst_ar4.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_ar4_OBJECTS = tst_ar4.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_ar4_OBJECTS = $(am_tst_ar4_OBJECTS) -tst_ar4_LDADD = $(LDADD) -am__tst_ar4_3d_SOURCES_DIST = tst_ar4_3d.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_ar4_3d_OBJECTS = tst_ar4_3d.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_ar4_3d_OBJECTS = $(am_tst_ar4_3d_OBJECTS) -tst_ar4_3d_LDADD = $(LDADD) -am__tst_ar4_4d_SOURCES_DIST = tst_ar4_4d.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_ar4_4d_OBJECTS = tst_ar4_4d.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_ar4_4d_OBJECTS = $(am_tst_ar4_4d_OBJECTS) -tst_ar4_4d_LDADD = $(LDADD) -tst_ar5_SOURCES = tst_ar5.c -tst_ar5_OBJECTS = tst_ar5.$(OBJEXT) -tst_ar5_LDADD = $(LDADD) -tst_atts_SOURCES = tst_atts.c -tst_atts_OBJECTS = tst_atts.$(OBJEXT) -tst_atts_LDADD = $(LDADD) -tst_atts1_SOURCES = tst_atts1.c -tst_atts1_OBJECTS = tst_atts1.$(OBJEXT) -tst_atts1_LDADD = $(LDADD) -tst_atts2_SOURCES = tst_atts2.c -tst_atts2_OBJECTS = tst_atts2.$(OBJEXT) -tst_atts2_LDADD = $(LDADD) -tst_atts_string_rewrite_SOURCES = tst_atts_string_rewrite.c -tst_atts_string_rewrite_OBJECTS = tst_atts_string_rewrite.$(OBJEXT) -tst_atts_string_rewrite_LDADD = $(LDADD) -tst_camrun_SOURCES = tst_camrun.c -tst_camrun_OBJECTS = tst_camrun.$(OBJEXT) -tst_camrun_LDADD = $(LDADD) -tst_chunk_hdf4_SOURCES = tst_chunk_hdf4.c -tst_chunk_hdf4_OBJECTS = tst_chunk_hdf4.$(OBJEXT) -tst_chunk_hdf4_LDADD = $(LDADD) -tst_chunks_SOURCES = tst_chunks.c -tst_chunks_OBJECTS = tst_chunks.$(OBJEXT) -tst_chunks_LDADD = $(LDADD) -tst_chunks2_SOURCES = tst_chunks2.c -tst_chunks2_OBJECTS = tst_chunks2.$(OBJEXT) -tst_chunks2_LDADD = $(LDADD) -tst_chunks3_SOURCES = tst_chunks3.c -tst_chunks3_OBJECTS = tst_chunks3.$(OBJEXT) -tst_chunks3_LDADD = $(LDADD) -tst_compounds_SOURCES = tst_compounds.c -tst_compounds_OBJECTS = tst_compounds.$(OBJEXT) -tst_compounds_LDADD = $(LDADD) -tst_compounds2_SOURCES = tst_compounds2.c -tst_compounds2_OBJECTS = tst_compounds2.$(OBJEXT) -tst_compounds2_LDADD = $(LDADD) -tst_compounds3_SOURCES = tst_compounds3.c -tst_compounds3_OBJECTS = tst_compounds3.$(OBJEXT) -tst_compounds3_LDADD = $(LDADD) -tst_converts_SOURCES = tst_converts.c -tst_converts_OBJECTS = tst_converts.$(OBJEXT) -tst_converts_LDADD = $(LDADD) -tst_converts2_SOURCES = tst_converts2.c -tst_converts2_OBJECTS = tst_converts2.$(OBJEXT) -tst_converts2_LDADD = $(LDADD) -tst_coords_SOURCES = tst_coords.c -tst_coords_OBJECTS = tst_coords.$(OBJEXT) -tst_coords_LDADD = $(LDADD) -tst_coords2_SOURCES = tst_coords2.c -tst_coords2_OBJECTS = tst_coords2.$(OBJEXT) -tst_coords2_LDADD = $(LDADD) -tst_coords3_SOURCES = tst_coords3.c -tst_coords3_OBJECTS = tst_coords3.$(OBJEXT) -tst_coords3_LDADD = $(LDADD) -tst_create_files_SOURCES = tst_create_files.c -tst_create_files_OBJECTS = tst_create_files.$(OBJEXT) -tst_create_files_LDADD = $(LDADD) -tst_dims_SOURCES = tst_dims.c -tst_dims_OBJECTS = tst_dims.$(OBJEXT) -tst_dims_LDADD = $(LDADD) -tst_dims2_SOURCES = tst_dims2.c -tst_dims2_OBJECTS = tst_dims2.$(OBJEXT) -tst_dims2_LDADD = $(LDADD) -tst_dims3_SOURCES = tst_dims3.c -tst_dims3_OBJECTS = tst_dims3.$(OBJEXT) -tst_dims3_LDADD = $(LDADD) -tst_empty_vlen_unlim_SOURCES = tst_empty_vlen_unlim.c -tst_empty_vlen_unlim_OBJECTS = tst_empty_vlen_unlim.$(OBJEXT) -tst_empty_vlen_unlim_LDADD = $(LDADD) -tst_endian_fill_SOURCES = tst_endian_fill.c -tst_endian_fill_OBJECTS = tst_endian_fill.$(OBJEXT) -tst_endian_fill_LDADD = $(LDADD) -tst_enums_SOURCES = tst_enums.c -tst_enums_OBJECTS = tst_enums.$(OBJEXT) -tst_enums_LDADD = $(LDADD) -tst_files_SOURCES = tst_files.c -tst_files_OBJECTS = tst_files.$(OBJEXT) -tst_files_LDADD = $(LDADD) -am__tst_files2_SOURCES_DIST = tst_files2.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_files2_OBJECTS = tst_files2.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_files2_OBJECTS = $(am_tst_files2_OBJECTS) -tst_files2_LDADD = $(LDADD) -tst_files3_SOURCES = tst_files3.c -tst_files3_OBJECTS = tst_files3.$(OBJEXT) -tst_files3_LDADD = $(LDADD) -tst_files4_SOURCES = tst_files4.c -tst_files4_OBJECTS = tst_files4.$(OBJEXT) -tst_files4_LDADD = $(LDADD) -tst_files5_SOURCES = tst_files5.c -tst_files5_OBJECTS = tst_files5.$(OBJEXT) -tst_files5_LDADD = $(LDADD) -tst_files6_SOURCES = tst_files6.c -tst_files6_OBJECTS = tst_files6.$(OBJEXT) -tst_files6_LDADD = $(LDADD) -tst_fill_attr_vanish_SOURCES = tst_fill_attr_vanish.c -tst_fill_attr_vanish_OBJECTS = tst_fill_attr_vanish.$(OBJEXT) -tst_fill_attr_vanish_LDADD = $(LDADD) -tst_fillbug_SOURCES = tst_fillbug.c -tst_fillbug_OBJECTS = tst_fillbug.$(OBJEXT) -tst_fillbug_LDADD = $(LDADD) -tst_fills_SOURCES = tst_fills.c -tst_fills_OBJECTS = tst_fills.$(OBJEXT) -tst_fills_LDADD = $(LDADD) -tst_fills2_SOURCES = tst_fills2.c -tst_fills2_OBJECTS = tst_fills2.$(OBJEXT) -tst_fills2_LDADD = $(LDADD) -tst_grps_SOURCES = tst_grps.c -tst_grps_OBJECTS = tst_grps.$(OBJEXT) -tst_grps_LDADD = $(LDADD) -tst_grps2_SOURCES = tst_grps2.c -tst_grps2_OBJECTS = tst_grps2.$(OBJEXT) -tst_grps2_LDADD = $(LDADD) -tst_h4_lendian_SOURCES = tst_h4_lendian.c -tst_h4_lendian_OBJECTS = tst_h4_lendian.$(OBJEXT) -tst_h4_lendian_LDADD = $(LDADD) -tst_h5_endians_SOURCES = tst_h5_endians.c -tst_h5_endians_OBJECTS = tst_h5_endians.$(OBJEXT) -tst_h5_endians_LDADD = $(LDADD) -tst_h_atts2_SOURCES = tst_h_atts2.c -tst_h_atts2_OBJECTS = tst_h_atts2.$(OBJEXT) -tst_h_atts2_LDADD = $(LDADD) -tst_h_files3_SOURCES = tst_h_files3.c -tst_h_files3_OBJECTS = tst_h_files3.$(OBJEXT) -tst_h_files3_LDADD = $(LDADD) -am__tst_h_many_atts_SOURCES_DIST = tst_h_many_atts.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_h_many_atts_OBJECTS = \ -@BUILD_BENCHMARKS_TRUE@ tst_h_many_atts.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_h_many_atts_OBJECTS = $(am_tst_h_many_atts_OBJECTS) -tst_h_many_atts_LDADD = $(LDADD) -tst_h_refs_SOURCES = tst_h_refs.c -tst_h_refs_OBJECTS = tst_h_refs.$(OBJEXT) -tst_h_refs_LDADD = $(LDADD) -tst_h_scalar_SOURCES = tst_h_scalar.c -tst_h_scalar_OBJECTS = tst_h_scalar.$(OBJEXT) -tst_h_scalar_LDADD = $(LDADD) -tst_h_strbug_SOURCES = tst_h_strbug.c -tst_h_strbug_OBJECTS = tst_h_strbug.$(OBJEXT) -tst_h_strbug_LDADD = $(LDADD) -tst_hdf5_file_compat_SOURCES = tst_hdf5_file_compat.c -tst_hdf5_file_compat_OBJECTS = tst_hdf5_file_compat.$(OBJEXT) -tst_hdf5_file_compat_LDADD = $(LDADD) -tst_interops_SOURCES = tst_interops.c -tst_interops_OBJECTS = tst_interops.$(OBJEXT) -tst_interops_LDADD = $(LDADD) -tst_interops2_SOURCES = tst_interops2.c -tst_interops2_OBJECTS = tst_interops2.$(OBJEXT) -tst_interops2_LDADD = $(LDADD) -tst_interops3_SOURCES = tst_interops3.c -tst_interops3_OBJECTS = tst_interops3.$(OBJEXT) -tst_interops3_LDADD = $(LDADD) -tst_interops4_SOURCES = tst_interops4.c -tst_interops4_OBJECTS = tst_interops4.$(OBJEXT) -tst_interops4_LDADD = $(LDADD) -tst_interops5_SOURCES = tst_interops5.c -tst_interops5_OBJECTS = tst_interops5.$(OBJEXT) -tst_interops5_LDADD = $(LDADD) -tst_interops6_SOURCES = tst_interops6.c -tst_interops6_OBJECTS = tst_interops6.$(OBJEXT) -tst_interops6_LDADD = $(LDADD) -am__tst_knmi_SOURCES_DIST = tst_knmi.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@am_tst_knmi_OBJECTS = tst_knmi.$(OBJEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT) -tst_knmi_OBJECTS = $(am_tst_knmi_OBJECTS) -tst_knmi_LDADD = $(LDADD) -tst_large_SOURCES = tst_large.c -tst_large_OBJECTS = tst_large.$(OBJEXT) -tst_large_LDADD = $(LDADD) -tst_large2_SOURCES = tst_large2.c -tst_large2_OBJECTS = tst_large2.$(OBJEXT) -tst_large2_LDADD = $(LDADD) -tst_mem_SOURCES = tst_mem.c -tst_mem_OBJECTS = tst_mem.$(OBJEXT) -tst_mem_LDADD = $(LDADD) -tst_mode_SOURCES = tst_mode.c -tst_mode_OBJECTS = tst_mode.$(OBJEXT) -tst_mode_LDADD = $(LDADD) -tst_mpi_parallel_SOURCES = tst_mpi_parallel.c -tst_mpi_parallel_OBJECTS = tst_mpi_parallel.$(OBJEXT) -tst_mpi_parallel_LDADD = $(LDADD) -tst_nc4perf_SOURCES = tst_nc4perf.c -tst_nc4perf_OBJECTS = tst_nc4perf.$(OBJEXT) -tst_nc4perf_LDADD = $(LDADD) -tst_opaques_SOURCES = tst_opaques.c -tst_opaques_OBJECTS = tst_opaques.$(OBJEXT) -tst_opaques_LDADD = $(LDADD) -tst_parallel_SOURCES = tst_parallel.c -tst_parallel_OBJECTS = tst_parallel.$(OBJEXT) -tst_parallel_LDADD = $(LDADD) -tst_parallel3_SOURCES = tst_parallel3.c -tst_parallel3_OBJECTS = tst_parallel3.$(OBJEXT) -tst_parallel3_LDADD = $(LDADD) -tst_parallel4_SOURCES = tst_parallel4.c -tst_parallel4_OBJECTS = tst_parallel4.$(OBJEXT) -tst_parallel4_LDADD = $(LDADD) -tst_rehash_SOURCES = tst_rehash.c -tst_rehash_OBJECTS = tst_rehash.$(OBJEXT) -tst_rehash_LDADD = $(LDADD) -tst_rename_SOURCES = tst_rename.c -tst_rename_OBJECTS = tst_rename.$(OBJEXT) -tst_rename_LDADD = $(LDADD) -tst_simplerw_coll_r_SOURCES = tst_simplerw_coll_r.c -tst_simplerw_coll_r_OBJECTS = tst_simplerw_coll_r.$(OBJEXT) -tst_simplerw_coll_r_LDADD = $(LDADD) -tst_strings_SOURCES = tst_strings.c -tst_strings_OBJECTS = tst_strings.$(OBJEXT) -tst_strings_LDADD = $(LDADD) -tst_strings2_SOURCES = tst_strings2.c -tst_strings2_OBJECTS = tst_strings2.$(OBJEXT) -tst_strings2_LDADD = $(LDADD) -tst_sync_SOURCES = tst_sync.c -tst_sync_OBJECTS = tst_sync.$(OBJEXT) -tst_sync_LDADD = $(LDADD) -tst_unlim_vars_SOURCES = tst_unlim_vars.c -tst_unlim_vars_OBJECTS = tst_unlim_vars.$(OBJEXT) -tst_unlim_vars_LDADD = $(LDADD) -tst_utf8_SOURCES = tst_utf8.c -tst_utf8_OBJECTS = tst_utf8.$(OBJEXT) -tst_utf8_LDADD = $(LDADD) -tst_v2_SOURCES = tst_v2.c -tst_v2_OBJECTS = tst_v2.$(OBJEXT) -tst_v2_LDADD = $(LDADD) -tst_varms_SOURCES = tst_varms.c -tst_varms_OBJECTS = tst_varms.$(OBJEXT) -tst_varms_LDADD = $(LDADD) -tst_vars_SOURCES = tst_vars.c -tst_vars_OBJECTS = tst_vars.$(OBJEXT) -tst_vars_LDADD = $(LDADD) -tst_vars2_SOURCES = tst_vars2.c -tst_vars2_OBJECTS = tst_vars2.$(OBJEXT) -tst_vars2_LDADD = $(LDADD) -tst_vars3_SOURCES = tst_vars3.c -tst_vars3_OBJECTS = tst_vars3.$(OBJEXT) -tst_vars3_LDADD = $(LDADD) -tst_vars4_SOURCES = tst_vars4.c -tst_vars4_OBJECTS = tst_vars4.$(OBJEXT) -tst_vars4_LDADD = $(LDADD) -tst_vl_SOURCES = tst_vl.c -tst_vl_OBJECTS = tst_vl.$(OBJEXT) -tst_vl_LDADD = $(LDADD) -tst_xplatform_SOURCES = tst_xplatform.c -tst_xplatform_OBJECTS = tst_xplatform.$(OBJEXT) -tst_xplatform_LDADD = $(LDADD) -tst_xplatform2_SOURCES = tst_xplatform2.c -tst_xplatform2_OBJECTS = tst_xplatform2.$(OBJEXT) -tst_xplatform2_LDADD = $(LDADD) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/bm_file.Po \ - ./$(DEPDIR)/bm_many_atts.Po ./$(DEPDIR)/bm_many_objs.Po \ - ./$(DEPDIR)/bm_netcdf4_recs.Po \ - ./$(DEPDIR)/cdm_sea_soundings.Po ./$(DEPDIR)/renamegroup.Po \ - ./$(DEPDIR)/t_type.Po ./$(DEPDIR)/tst_ar4.Po \ - ./$(DEPDIR)/tst_ar4_3d.Po ./$(DEPDIR)/tst_ar4_4d.Po \ - ./$(DEPDIR)/tst_ar5.Po ./$(DEPDIR)/tst_atts.Po \ - ./$(DEPDIR)/tst_atts1.Po ./$(DEPDIR)/tst_atts2.Po \ - ./$(DEPDIR)/tst_atts_string_rewrite.Po \ - ./$(DEPDIR)/tst_camrun.Po ./$(DEPDIR)/tst_chunk_hdf4.Po \ - ./$(DEPDIR)/tst_chunks.Po ./$(DEPDIR)/tst_chunks2.Po \ - ./$(DEPDIR)/tst_chunks3.Po ./$(DEPDIR)/tst_compounds.Po \ - ./$(DEPDIR)/tst_compounds2.Po ./$(DEPDIR)/tst_compounds3.Po \ - ./$(DEPDIR)/tst_converts.Po ./$(DEPDIR)/tst_converts2.Po \ - ./$(DEPDIR)/tst_coords.Po ./$(DEPDIR)/tst_coords2.Po \ - ./$(DEPDIR)/tst_coords3.Po ./$(DEPDIR)/tst_create_files.Po \ - ./$(DEPDIR)/tst_dims.Po ./$(DEPDIR)/tst_dims2.Po \ - ./$(DEPDIR)/tst_dims3.Po ./$(DEPDIR)/tst_empty_vlen_unlim.Po \ - ./$(DEPDIR)/tst_endian_fill.Po ./$(DEPDIR)/tst_enums.Po \ - ./$(DEPDIR)/tst_files.Po ./$(DEPDIR)/tst_files2.Po \ - ./$(DEPDIR)/tst_files3.Po ./$(DEPDIR)/tst_files4.Po \ - ./$(DEPDIR)/tst_files5.Po ./$(DEPDIR)/tst_files6.Po \ - ./$(DEPDIR)/tst_fill_attr_vanish.Po ./$(DEPDIR)/tst_fillbug.Po \ - ./$(DEPDIR)/tst_fills.Po ./$(DEPDIR)/tst_fills2.Po \ - ./$(DEPDIR)/tst_grps.Po ./$(DEPDIR)/tst_grps2.Po \ - ./$(DEPDIR)/tst_h4_lendian.Po ./$(DEPDIR)/tst_h5_endians.Po \ - ./$(DEPDIR)/tst_h_atts2.Po ./$(DEPDIR)/tst_h_files3.Po \ - ./$(DEPDIR)/tst_h_many_atts.Po ./$(DEPDIR)/tst_h_refs.Po \ - ./$(DEPDIR)/tst_h_scalar.Po ./$(DEPDIR)/tst_h_strbug.Po \ - ./$(DEPDIR)/tst_hdf5_file_compat.Po \ - ./$(DEPDIR)/tst_interops.Po ./$(DEPDIR)/tst_interops2.Po \ - ./$(DEPDIR)/tst_interops3.Po ./$(DEPDIR)/tst_interops4.Po \ - ./$(DEPDIR)/tst_interops5.Po ./$(DEPDIR)/tst_interops6.Po \ - ./$(DEPDIR)/tst_knmi.Po ./$(DEPDIR)/tst_large.Po \ - ./$(DEPDIR)/tst_large2.Po ./$(DEPDIR)/tst_mem.Po \ - ./$(DEPDIR)/tst_mode.Po ./$(DEPDIR)/tst_mpi_parallel.Po \ - ./$(DEPDIR)/tst_nc4perf.Po ./$(DEPDIR)/tst_opaques.Po \ - ./$(DEPDIR)/tst_parallel.Po ./$(DEPDIR)/tst_parallel3.Po \ - ./$(DEPDIR)/tst_parallel4.Po ./$(DEPDIR)/tst_rehash.Po \ - ./$(DEPDIR)/tst_rename.Po ./$(DEPDIR)/tst_simplerw_coll_r.Po \ - ./$(DEPDIR)/tst_strings.Po ./$(DEPDIR)/tst_strings2.Po \ - ./$(DEPDIR)/tst_sync.Po ./$(DEPDIR)/tst_unlim_vars.Po \ - ./$(DEPDIR)/tst_utf8.Po ./$(DEPDIR)/tst_utils.Po \ - ./$(DEPDIR)/tst_v2.Po ./$(DEPDIR)/tst_varms.Po \ - ./$(DEPDIR)/tst_vars.Po ./$(DEPDIR)/tst_vars2.Po \ - ./$(DEPDIR)/tst_vars3.Po ./$(DEPDIR)/tst_vars4.Po \ - ./$(DEPDIR)/tst_vl.Po ./$(DEPDIR)/tst_xplatform.Po \ - ./$(DEPDIR)/tst_xplatform2.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(bm_file_SOURCES) $(bm_many_atts_SOURCES) \ - $(bm_many_objs_SOURCES) $(bm_netcdf4_recs_SOURCES) \ - cdm_sea_soundings.c renamegroup.c t_type.c $(tst_ar4_SOURCES) \ - $(tst_ar4_3d_SOURCES) $(tst_ar4_4d_SOURCES) tst_ar5.c \ - tst_atts.c tst_atts1.c tst_atts2.c tst_atts_string_rewrite.c \ - tst_camrun.c tst_chunk_hdf4.c tst_chunks.c tst_chunks2.c \ - tst_chunks3.c tst_compounds.c tst_compounds2.c \ - tst_compounds3.c tst_converts.c tst_converts2.c tst_coords.c \ - tst_coords2.c tst_coords3.c tst_create_files.c tst_dims.c \ - tst_dims2.c tst_dims3.c tst_empty_vlen_unlim.c \ - tst_endian_fill.c tst_enums.c tst_files.c \ - $(tst_files2_SOURCES) tst_files3.c tst_files4.c tst_files5.c \ - tst_files6.c tst_fill_attr_vanish.c tst_fillbug.c tst_fills.c \ - tst_fills2.c tst_grps.c tst_grps2.c tst_h4_lendian.c \ - tst_h5_endians.c tst_h_atts2.c tst_h_files3.c \ - $(tst_h_many_atts_SOURCES) tst_h_refs.c tst_h_scalar.c \ - tst_h_strbug.c tst_hdf5_file_compat.c tst_interops.c \ - tst_interops2.c tst_interops3.c tst_interops4.c \ - tst_interops5.c tst_interops6.c $(tst_knmi_SOURCES) \ - tst_large.c tst_large2.c tst_mem.c tst_mode.c \ - tst_mpi_parallel.c tst_nc4perf.c tst_opaques.c tst_parallel.c \ - tst_parallel3.c tst_parallel4.c tst_rehash.c tst_rename.c \ - tst_simplerw_coll_r.c tst_strings.c tst_strings2.c tst_sync.c \ - tst_unlim_vars.c tst_utf8.c tst_v2.c tst_varms.c tst_vars.c \ - tst_vars2.c tst_vars3.c tst_vars4.c tst_vl.c tst_xplatform.c \ - tst_xplatform2.c -DIST_SOURCES = $(am__bm_file_SOURCES_DIST) \ - $(am__bm_many_atts_SOURCES_DIST) \ - $(am__bm_many_objs_SOURCES_DIST) \ - $(am__bm_netcdf4_recs_SOURCES_DIST) cdm_sea_soundings.c \ - renamegroup.c t_type.c $(am__tst_ar4_SOURCES_DIST) \ - $(am__tst_ar4_3d_SOURCES_DIST) $(am__tst_ar4_4d_SOURCES_DIST) \ - tst_ar5.c tst_atts.c tst_atts1.c tst_atts2.c \ - tst_atts_string_rewrite.c tst_camrun.c tst_chunk_hdf4.c \ - tst_chunks.c tst_chunks2.c tst_chunks3.c tst_compounds.c \ - tst_compounds2.c tst_compounds3.c tst_converts.c \ - tst_converts2.c tst_coords.c tst_coords2.c tst_coords3.c \ - tst_create_files.c tst_dims.c tst_dims2.c tst_dims3.c \ - tst_empty_vlen_unlim.c tst_endian_fill.c tst_enums.c \ - tst_files.c $(am__tst_files2_SOURCES_DIST) tst_files3.c \ - tst_files4.c tst_files5.c tst_files6.c tst_fill_attr_vanish.c \ - tst_fillbug.c tst_fills.c tst_fills2.c tst_grps.c tst_grps2.c \ - tst_h4_lendian.c tst_h5_endians.c tst_h_atts2.c tst_h_files3.c \ - $(am__tst_h_many_atts_SOURCES_DIST) tst_h_refs.c \ - tst_h_scalar.c tst_h_strbug.c tst_hdf5_file_compat.c \ - tst_interops.c tst_interops2.c tst_interops3.c tst_interops4.c \ - tst_interops5.c tst_interops6.c $(am__tst_knmi_SOURCES_DIST) \ - tst_large.c tst_large2.c tst_mem.c tst_mode.c \ - tst_mpi_parallel.c tst_nc4perf.c tst_opaques.c tst_parallel.c \ - tst_parallel3.c tst_parallel4.c tst_rehash.c tst_rename.c \ - tst_simplerw_coll_r.c tst_strings.c tst_strings2.c tst_sync.c \ - tst_unlim_vars.c tst_utf8.c tst_v2.c tst_varms.c tst_vars.c \ - tst_vars2.c tst_vars3.c tst_vars4.c tst_vl.c tst_xplatform.c \ - tst_xplatform2.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -@BUILD_BENCHMARKS_TRUE@am__EXEEXT_9 = tst_ar4_3d$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_create_files$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ run_bm_test1.sh run_bm_elena.sh \ -@BUILD_BENCHMARKS_TRUE@ run_bm_test2.sh run_tst_chunks.sh \ -@BUILD_BENCHMARKS_TRUE@ tst_files2$(EXEEXT) tst_files3$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_ar5$(EXEEXT) tst_h_files3$(EXEEXT) \ -@BUILD_BENCHMARKS_TRUE@ tst_mem$(EXEEXT) run_get_knmi_files.sh \ -@BUILD_BENCHMARKS_TRUE@ tst_knmi$(EXEEXT) -@USE_HDF4_TRUE@am__EXEEXT_10 = tst_interops2$(EXEEXT) \ -@USE_HDF4_TRUE@ tst_formatx_hdf4.sh run_chunk_hdf4.sh \ -@USE_HDF4_TRUE@ tst_h4_lendian$(EXEEXT) -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@am__EXEEXT_11 = run_get_hdf4_files.sh \ -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@ tst_interops3$(EXEEXT) \ -@USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@ tst_hdf4_read_var.sh -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ref_hdf5_compat1.nc \ - $(srcdir)/ref_hdf5_compat2.nc $(srcdir)/ref_hdf5_compat3.nc \ - $(top_srcdir)/depcomp $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. - -# Link to our assembled library. -AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# These are netCDF-4 test programs. -NC4_TESTS = tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars \ -tst_varms tst_unlim_vars tst_converts tst_converts2 tst_grps tst_grps2 \ -tst_compounds tst_compounds2 tst_compounds3 tst_opaques tst_strings \ -tst_strings2 tst_interops tst_interops4 tst_interops5 tst_interops6 \ -tst_enums tst_coords tst_coords2 tst_coords3 tst_vars3 tst_vars4 \ -tst_chunks tst_chunks2 tst_utf8 tst_fills tst_fills2 tst_fillbug \ -tst_xplatform tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts \ -t_type cdm_sea_soundings tst_camrun tst_vl tst_atts1 tst_atts2 \ -tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs \ -tst_h_scalar tst_rename tst_h5_endians tst_atts_string_rewrite \ -tst_hdf5_file_compat tst_fill_attr_vanish tst_rehash - -@BUILD_BENCHMARKS_TRUE@bm_netcdf4_recs_SOURCES = bm_netcdf4_recs.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@bm_many_atts_SOURCES = bm_many_atts.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@bm_many_objs_SOURCES = bm_many_objs.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_ar4_3d_SOURCES = tst_ar4_3d.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_ar4_4d_SOURCES = tst_ar4_4d.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_files2_SOURCES = tst_files2.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_ar4_SOURCES = tst_ar4.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_h_many_atts_SOURCES = tst_h_many_atts.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@bm_file_SOURCES = bm_file.c tst_utils.c -@BUILD_BENCHMARKS_TRUE@tst_knmi_SOURCES = tst_knmi.c tst_utils.c -EXTRA_DIST = run_par_test.sh run_bm.sh run_bm_test1.sh run_bm_test2.sh \ -run_bm_radar_2D.sh run_bm_radar_2D_compression1.sh run_par_bm_test.sh \ -run_bm_elena.sh run_par_bm_radar_2D.sh run_bm_radar_2D_endianness1.sh \ -run_tst_chunks.sh ref_chunks1.cdl ref_chunks2.cdl \ -run_get_hdf4_files.sh run_valgrind_tests.sh run_valgrind_tests2.sh \ -run_bm_ar4.sh ref_tst_compounds.nc run_hdf4_valgrind_tests.sh \ -ref_tst_xplatform2_1.nc ref_tst_xplatform2_2.nc ref_tst_dims.nc \ -ref_tst_interops4.nc run_get_knmi_files.sh CMakeLists.txt \ -run_grp_rename.sh tst_formatx_hdf4.sh \ -run_chunk_hdf4.sh contiguous.hdf4 chunked.hdf4 \ -tst_h5_endians.c tst_h4_lendian.c tst_atts_string_rewrite.c \ -tst_put_vars_two_unlim_dim.c tst_empty_vlen_unlim.c run_empty_vlen_test.sh \ -ref_hdf5_compat1.nc ref_hdf5_compat2.nc ref_hdf5_compat3.nc tst_misc.sh \ -tdset.h5 tst_hdf4_read_var.sh - -CLEANFILES = tst_mpi_parallel.bin cdm_sea_soundings.nc bm_chunking.nc \ -bm_radar.nc bm_radar1.nc radar_3d_compression_test.txt \ -radar_3d_compression.txt radar_2d_compression.txt \ -radar_3d_chunking.txt tst_floats_1D.cdl floats_1D_3.nc floats_1D.cdl \ -tst_*.nc tst_floats2_*.cdl tst_ints2_*.cdl tst_shorts2_*.cdl \ -tst_elena_*.cdl tst_simple*.cdl tst_chunks.cdl pr_A1.* tauu_A1.* \ -usi_01.* thetau_01.* tst_*.nc tst_*.h5 \ -tst_grp_rename.cdl tst_grp_rename.nc tst_grp_rename.dmp ref_grp_rename.cdl \ -foo1.nc tst_interops2.h4 tst_h5_endians.nc tst_h4_lendian.h4 test.nc \ -tst_atts_string_rewrite.nc tst_empty_vlen_unlim.nc tst_empty_vlen_lim.nc \ -tst_parallel4_simplerw_coll.nc tst_fill_attr_vanish.nc tst_rehash.nc - -@USE_HDF4_FILE_TESTS_TRUE@DISTCLEANFILES = AMSR_E_L2_Rain_V10_200905312326_A.hdf \ -@USE_HDF4_FILE_TESTS_TRUE@AMSR_E_L3_DailyLand_V06_20020619.hdf \ -@USE_HDF4_FILE_TESTS_TRUE@MYD29.A2009152.0000.005.2009153124331.hdf \ -@USE_HDF4_FILE_TESTS_TRUE@MYD29.A2002185.0000.005.2007160150627.hdf \ -@USE_HDF4_FILE_TESTS_TRUE@MOD29.A2000055.0005.005.2006267200024.hdf - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 nc_test4/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign nc_test4/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -bm_file$(EXEEXT): $(bm_file_OBJECTS) $(bm_file_DEPENDENCIES) $(EXTRA_bm_file_DEPENDENCIES) - @rm -f bm_file$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bm_file_OBJECTS) $(bm_file_LDADD) $(LIBS) - -bm_many_atts$(EXEEXT): $(bm_many_atts_OBJECTS) $(bm_many_atts_DEPENDENCIES) $(EXTRA_bm_many_atts_DEPENDENCIES) - @rm -f bm_many_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bm_many_atts_OBJECTS) $(bm_many_atts_LDADD) $(LIBS) - -bm_many_objs$(EXEEXT): $(bm_many_objs_OBJECTS) $(bm_many_objs_DEPENDENCIES) $(EXTRA_bm_many_objs_DEPENDENCIES) - @rm -f bm_many_objs$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bm_many_objs_OBJECTS) $(bm_many_objs_LDADD) $(LIBS) - -bm_netcdf4_recs$(EXEEXT): $(bm_netcdf4_recs_OBJECTS) $(bm_netcdf4_recs_DEPENDENCIES) $(EXTRA_bm_netcdf4_recs_DEPENDENCIES) - @rm -f bm_netcdf4_recs$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bm_netcdf4_recs_OBJECTS) $(bm_netcdf4_recs_LDADD) $(LIBS) - -cdm_sea_soundings$(EXEEXT): $(cdm_sea_soundings_OBJECTS) $(cdm_sea_soundings_DEPENDENCIES) $(EXTRA_cdm_sea_soundings_DEPENDENCIES) - @rm -f cdm_sea_soundings$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(cdm_sea_soundings_OBJECTS) $(cdm_sea_soundings_LDADD) $(LIBS) - -renamegroup$(EXEEXT): $(renamegroup_OBJECTS) $(renamegroup_DEPENDENCIES) $(EXTRA_renamegroup_DEPENDENCIES) - @rm -f renamegroup$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(renamegroup_OBJECTS) $(renamegroup_LDADD) $(LIBS) - -t_type$(EXEEXT): $(t_type_OBJECTS) $(t_type_DEPENDENCIES) $(EXTRA_t_type_DEPENDENCIES) - @rm -f t_type$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(t_type_OBJECTS) $(t_type_LDADD) $(LIBS) - -tst_ar4$(EXEEXT): $(tst_ar4_OBJECTS) $(tst_ar4_DEPENDENCIES) $(EXTRA_tst_ar4_DEPENDENCIES) - @rm -f tst_ar4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_ar4_OBJECTS) $(tst_ar4_LDADD) $(LIBS) - -tst_ar4_3d$(EXEEXT): $(tst_ar4_3d_OBJECTS) $(tst_ar4_3d_DEPENDENCIES) $(EXTRA_tst_ar4_3d_DEPENDENCIES) - @rm -f tst_ar4_3d$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_ar4_3d_OBJECTS) $(tst_ar4_3d_LDADD) $(LIBS) - -tst_ar4_4d$(EXEEXT): $(tst_ar4_4d_OBJECTS) $(tst_ar4_4d_DEPENDENCIES) $(EXTRA_tst_ar4_4d_DEPENDENCIES) - @rm -f tst_ar4_4d$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_ar4_4d_OBJECTS) $(tst_ar4_4d_LDADD) $(LIBS) - -tst_ar5$(EXEEXT): $(tst_ar5_OBJECTS) $(tst_ar5_DEPENDENCIES) $(EXTRA_tst_ar5_DEPENDENCIES) - @rm -f tst_ar5$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_ar5_OBJECTS) $(tst_ar5_LDADD) $(LIBS) - -tst_atts$(EXEEXT): $(tst_atts_OBJECTS) $(tst_atts_DEPENDENCIES) $(EXTRA_tst_atts_DEPENDENCIES) - @rm -f tst_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts_OBJECTS) $(tst_atts_LDADD) $(LIBS) - -tst_atts1$(EXEEXT): $(tst_atts1_OBJECTS) $(tst_atts1_DEPENDENCIES) $(EXTRA_tst_atts1_DEPENDENCIES) - @rm -f tst_atts1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts1_OBJECTS) $(tst_atts1_LDADD) $(LIBS) - -tst_atts2$(EXEEXT): $(tst_atts2_OBJECTS) $(tst_atts2_DEPENDENCIES) $(EXTRA_tst_atts2_DEPENDENCIES) - @rm -f tst_atts2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts2_OBJECTS) $(tst_atts2_LDADD) $(LIBS) - -tst_atts_string_rewrite$(EXEEXT): $(tst_atts_string_rewrite_OBJECTS) $(tst_atts_string_rewrite_DEPENDENCIES) $(EXTRA_tst_atts_string_rewrite_DEPENDENCIES) - @rm -f tst_atts_string_rewrite$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_atts_string_rewrite_OBJECTS) $(tst_atts_string_rewrite_LDADD) $(LIBS) - -tst_camrun$(EXEEXT): $(tst_camrun_OBJECTS) $(tst_camrun_DEPENDENCIES) $(EXTRA_tst_camrun_DEPENDENCIES) - @rm -f tst_camrun$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_camrun_OBJECTS) $(tst_camrun_LDADD) $(LIBS) - -tst_chunk_hdf4$(EXEEXT): $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_DEPENDENCIES) $(EXTRA_tst_chunk_hdf4_DEPENDENCIES) - @rm -f tst_chunk_hdf4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_LDADD) $(LIBS) - -tst_chunks$(EXEEXT): $(tst_chunks_OBJECTS) $(tst_chunks_DEPENDENCIES) $(EXTRA_tst_chunks_DEPENDENCIES) - @rm -f tst_chunks$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_chunks_OBJECTS) $(tst_chunks_LDADD) $(LIBS) - -tst_chunks2$(EXEEXT): $(tst_chunks2_OBJECTS) $(tst_chunks2_DEPENDENCIES) $(EXTRA_tst_chunks2_DEPENDENCIES) - @rm -f tst_chunks2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_chunks2_OBJECTS) $(tst_chunks2_LDADD) $(LIBS) - -tst_chunks3$(EXEEXT): $(tst_chunks3_OBJECTS) $(tst_chunks3_DEPENDENCIES) $(EXTRA_tst_chunks3_DEPENDENCIES) - @rm -f tst_chunks3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_chunks3_OBJECTS) $(tst_chunks3_LDADD) $(LIBS) - -tst_compounds$(EXEEXT): $(tst_compounds_OBJECTS) $(tst_compounds_DEPENDENCIES) $(EXTRA_tst_compounds_DEPENDENCIES) - @rm -f tst_compounds$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_compounds_OBJECTS) $(tst_compounds_LDADD) $(LIBS) - -tst_compounds2$(EXEEXT): $(tst_compounds2_OBJECTS) $(tst_compounds2_DEPENDENCIES) $(EXTRA_tst_compounds2_DEPENDENCIES) - @rm -f tst_compounds2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_compounds2_OBJECTS) $(tst_compounds2_LDADD) $(LIBS) - -tst_compounds3$(EXEEXT): $(tst_compounds3_OBJECTS) $(tst_compounds3_DEPENDENCIES) $(EXTRA_tst_compounds3_DEPENDENCIES) - @rm -f tst_compounds3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_compounds3_OBJECTS) $(tst_compounds3_LDADD) $(LIBS) - -tst_converts$(EXEEXT): $(tst_converts_OBJECTS) $(tst_converts_DEPENDENCIES) $(EXTRA_tst_converts_DEPENDENCIES) - @rm -f tst_converts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_converts_OBJECTS) $(tst_converts_LDADD) $(LIBS) - -tst_converts2$(EXEEXT): $(tst_converts2_OBJECTS) $(tst_converts2_DEPENDENCIES) $(EXTRA_tst_converts2_DEPENDENCIES) - @rm -f tst_converts2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_converts2_OBJECTS) $(tst_converts2_LDADD) $(LIBS) - -tst_coords$(EXEEXT): $(tst_coords_OBJECTS) $(tst_coords_DEPENDENCIES) $(EXTRA_tst_coords_DEPENDENCIES) - @rm -f tst_coords$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_coords_OBJECTS) $(tst_coords_LDADD) $(LIBS) - -tst_coords2$(EXEEXT): $(tst_coords2_OBJECTS) $(tst_coords2_DEPENDENCIES) $(EXTRA_tst_coords2_DEPENDENCIES) - @rm -f tst_coords2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_coords2_OBJECTS) $(tst_coords2_LDADD) $(LIBS) - -tst_coords3$(EXEEXT): $(tst_coords3_OBJECTS) $(tst_coords3_DEPENDENCIES) $(EXTRA_tst_coords3_DEPENDENCIES) - @rm -f tst_coords3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_coords3_OBJECTS) $(tst_coords3_LDADD) $(LIBS) - -tst_create_files$(EXEEXT): $(tst_create_files_OBJECTS) $(tst_create_files_DEPENDENCIES) $(EXTRA_tst_create_files_DEPENDENCIES) - @rm -f tst_create_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_create_files_OBJECTS) $(tst_create_files_LDADD) $(LIBS) - -tst_dims$(EXEEXT): $(tst_dims_OBJECTS) $(tst_dims_DEPENDENCIES) $(EXTRA_tst_dims_DEPENDENCIES) - @rm -f tst_dims$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_dims_OBJECTS) $(tst_dims_LDADD) $(LIBS) - -tst_dims2$(EXEEXT): $(tst_dims2_OBJECTS) $(tst_dims2_DEPENDENCIES) $(EXTRA_tst_dims2_DEPENDENCIES) - @rm -f tst_dims2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_dims2_OBJECTS) $(tst_dims2_LDADD) $(LIBS) - -tst_dims3$(EXEEXT): $(tst_dims3_OBJECTS) $(tst_dims3_DEPENDENCIES) $(EXTRA_tst_dims3_DEPENDENCIES) - @rm -f tst_dims3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_dims3_OBJECTS) $(tst_dims3_LDADD) $(LIBS) - -tst_empty_vlen_unlim$(EXEEXT): $(tst_empty_vlen_unlim_OBJECTS) $(tst_empty_vlen_unlim_DEPENDENCIES) $(EXTRA_tst_empty_vlen_unlim_DEPENDENCIES) - @rm -f tst_empty_vlen_unlim$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_empty_vlen_unlim_OBJECTS) $(tst_empty_vlen_unlim_LDADD) $(LIBS) - -tst_endian_fill$(EXEEXT): $(tst_endian_fill_OBJECTS) $(tst_endian_fill_DEPENDENCIES) $(EXTRA_tst_endian_fill_DEPENDENCIES) - @rm -f tst_endian_fill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_endian_fill_OBJECTS) $(tst_endian_fill_LDADD) $(LIBS) - -tst_enums$(EXEEXT): $(tst_enums_OBJECTS) $(tst_enums_DEPENDENCIES) $(EXTRA_tst_enums_DEPENDENCIES) - @rm -f tst_enums$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_enums_OBJECTS) $(tst_enums_LDADD) $(LIBS) - -tst_files$(EXEEXT): $(tst_files_OBJECTS) $(tst_files_DEPENDENCIES) $(EXTRA_tst_files_DEPENDENCIES) - @rm -f tst_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files_OBJECTS) $(tst_files_LDADD) $(LIBS) - -tst_files2$(EXEEXT): $(tst_files2_OBJECTS) $(tst_files2_DEPENDENCIES) $(EXTRA_tst_files2_DEPENDENCIES) - @rm -f tst_files2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files2_OBJECTS) $(tst_files2_LDADD) $(LIBS) - -tst_files3$(EXEEXT): $(tst_files3_OBJECTS) $(tst_files3_DEPENDENCIES) $(EXTRA_tst_files3_DEPENDENCIES) - @rm -f tst_files3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files3_OBJECTS) $(tst_files3_LDADD) $(LIBS) - -tst_files4$(EXEEXT): $(tst_files4_OBJECTS) $(tst_files4_DEPENDENCIES) $(EXTRA_tst_files4_DEPENDENCIES) - @rm -f tst_files4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files4_OBJECTS) $(tst_files4_LDADD) $(LIBS) - -tst_files5$(EXEEXT): $(tst_files5_OBJECTS) $(tst_files5_DEPENDENCIES) $(EXTRA_tst_files5_DEPENDENCIES) - @rm -f tst_files5$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files5_OBJECTS) $(tst_files5_LDADD) $(LIBS) - -tst_files6$(EXEEXT): $(tst_files6_OBJECTS) $(tst_files6_DEPENDENCIES) $(EXTRA_tst_files6_DEPENDENCIES) - @rm -f tst_files6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_files6_OBJECTS) $(tst_files6_LDADD) $(LIBS) - -tst_fill_attr_vanish$(EXEEXT): $(tst_fill_attr_vanish_OBJECTS) $(tst_fill_attr_vanish_DEPENDENCIES) $(EXTRA_tst_fill_attr_vanish_DEPENDENCIES) - @rm -f tst_fill_attr_vanish$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fill_attr_vanish_OBJECTS) $(tst_fill_attr_vanish_LDADD) $(LIBS) - -tst_fillbug$(EXEEXT): $(tst_fillbug_OBJECTS) $(tst_fillbug_DEPENDENCIES) $(EXTRA_tst_fillbug_DEPENDENCIES) - @rm -f tst_fillbug$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fillbug_OBJECTS) $(tst_fillbug_LDADD) $(LIBS) - -tst_fills$(EXEEXT): $(tst_fills_OBJECTS) $(tst_fills_DEPENDENCIES) $(EXTRA_tst_fills_DEPENDENCIES) - @rm -f tst_fills$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fills_OBJECTS) $(tst_fills_LDADD) $(LIBS) - -tst_fills2$(EXEEXT): $(tst_fills2_OBJECTS) $(tst_fills2_DEPENDENCIES) $(EXTRA_tst_fills2_DEPENDENCIES) - @rm -f tst_fills2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fills2_OBJECTS) $(tst_fills2_LDADD) $(LIBS) - -tst_grps$(EXEEXT): $(tst_grps_OBJECTS) $(tst_grps_DEPENDENCIES) $(EXTRA_tst_grps_DEPENDENCIES) - @rm -f tst_grps$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_grps_OBJECTS) $(tst_grps_LDADD) $(LIBS) - -tst_grps2$(EXEEXT): $(tst_grps2_OBJECTS) $(tst_grps2_DEPENDENCIES) $(EXTRA_tst_grps2_DEPENDENCIES) - @rm -f tst_grps2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_grps2_OBJECTS) $(tst_grps2_LDADD) $(LIBS) - -tst_h4_lendian$(EXEEXT): $(tst_h4_lendian_OBJECTS) $(tst_h4_lendian_DEPENDENCIES) $(EXTRA_tst_h4_lendian_DEPENDENCIES) - @rm -f tst_h4_lendian$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h4_lendian_OBJECTS) $(tst_h4_lendian_LDADD) $(LIBS) - -tst_h5_endians$(EXEEXT): $(tst_h5_endians_OBJECTS) $(tst_h5_endians_DEPENDENCIES) $(EXTRA_tst_h5_endians_DEPENDENCIES) - @rm -f tst_h5_endians$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h5_endians_OBJECTS) $(tst_h5_endians_LDADD) $(LIBS) - -tst_h_atts2$(EXEEXT): $(tst_h_atts2_OBJECTS) $(tst_h_atts2_DEPENDENCIES) $(EXTRA_tst_h_atts2_DEPENDENCIES) - @rm -f tst_h_atts2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_atts2_OBJECTS) $(tst_h_atts2_LDADD) $(LIBS) - -tst_h_files3$(EXEEXT): $(tst_h_files3_OBJECTS) $(tst_h_files3_DEPENDENCIES) $(EXTRA_tst_h_files3_DEPENDENCIES) - @rm -f tst_h_files3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_files3_OBJECTS) $(tst_h_files3_LDADD) $(LIBS) - -tst_h_many_atts$(EXEEXT): $(tst_h_many_atts_OBJECTS) $(tst_h_many_atts_DEPENDENCIES) $(EXTRA_tst_h_many_atts_DEPENDENCIES) - @rm -f tst_h_many_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_many_atts_OBJECTS) $(tst_h_many_atts_LDADD) $(LIBS) - -tst_h_refs$(EXEEXT): $(tst_h_refs_OBJECTS) $(tst_h_refs_DEPENDENCIES) $(EXTRA_tst_h_refs_DEPENDENCIES) - @rm -f tst_h_refs$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_refs_OBJECTS) $(tst_h_refs_LDADD) $(LIBS) - -tst_h_scalar$(EXEEXT): $(tst_h_scalar_OBJECTS) $(tst_h_scalar_DEPENDENCIES) $(EXTRA_tst_h_scalar_DEPENDENCIES) - @rm -f tst_h_scalar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_scalar_OBJECTS) $(tst_h_scalar_LDADD) $(LIBS) - -tst_h_strbug$(EXEEXT): $(tst_h_strbug_OBJECTS) $(tst_h_strbug_DEPENDENCIES) $(EXTRA_tst_h_strbug_DEPENDENCIES) - @rm -f tst_h_strbug$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_strbug_OBJECTS) $(tst_h_strbug_LDADD) $(LIBS) - -tst_hdf5_file_compat$(EXEEXT): $(tst_hdf5_file_compat_OBJECTS) $(tst_hdf5_file_compat_DEPENDENCIES) $(EXTRA_tst_hdf5_file_compat_DEPENDENCIES) - @rm -f tst_hdf5_file_compat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_hdf5_file_compat_OBJECTS) $(tst_hdf5_file_compat_LDADD) $(LIBS) - -tst_interops$(EXEEXT): $(tst_interops_OBJECTS) $(tst_interops_DEPENDENCIES) $(EXTRA_tst_interops_DEPENDENCIES) - @rm -f tst_interops$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops_OBJECTS) $(tst_interops_LDADD) $(LIBS) - -tst_interops2$(EXEEXT): $(tst_interops2_OBJECTS) $(tst_interops2_DEPENDENCIES) $(EXTRA_tst_interops2_DEPENDENCIES) - @rm -f tst_interops2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops2_OBJECTS) $(tst_interops2_LDADD) $(LIBS) - -tst_interops3$(EXEEXT): $(tst_interops3_OBJECTS) $(tst_interops3_DEPENDENCIES) $(EXTRA_tst_interops3_DEPENDENCIES) - @rm -f tst_interops3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops3_OBJECTS) $(tst_interops3_LDADD) $(LIBS) - -tst_interops4$(EXEEXT): $(tst_interops4_OBJECTS) $(tst_interops4_DEPENDENCIES) $(EXTRA_tst_interops4_DEPENDENCIES) - @rm -f tst_interops4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops4_OBJECTS) $(tst_interops4_LDADD) $(LIBS) - -tst_interops5$(EXEEXT): $(tst_interops5_OBJECTS) $(tst_interops5_DEPENDENCIES) $(EXTRA_tst_interops5_DEPENDENCIES) - @rm -f tst_interops5$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops5_OBJECTS) $(tst_interops5_LDADD) $(LIBS) - -tst_interops6$(EXEEXT): $(tst_interops6_OBJECTS) $(tst_interops6_DEPENDENCIES) $(EXTRA_tst_interops6_DEPENDENCIES) - @rm -f tst_interops6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_interops6_OBJECTS) $(tst_interops6_LDADD) $(LIBS) - -tst_knmi$(EXEEXT): $(tst_knmi_OBJECTS) $(tst_knmi_DEPENDENCIES) $(EXTRA_tst_knmi_DEPENDENCIES) - @rm -f tst_knmi$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_knmi_OBJECTS) $(tst_knmi_LDADD) $(LIBS) - -tst_large$(EXEEXT): $(tst_large_OBJECTS) $(tst_large_DEPENDENCIES) $(EXTRA_tst_large_DEPENDENCIES) - @rm -f tst_large$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_large_OBJECTS) $(tst_large_LDADD) $(LIBS) - -tst_large2$(EXEEXT): $(tst_large2_OBJECTS) $(tst_large2_DEPENDENCIES) $(EXTRA_tst_large2_DEPENDENCIES) - @rm -f tst_large2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_large2_OBJECTS) $(tst_large2_LDADD) $(LIBS) - -tst_mem$(EXEEXT): $(tst_mem_OBJECTS) $(tst_mem_DEPENDENCIES) $(EXTRA_tst_mem_DEPENDENCIES) - @rm -f tst_mem$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_mem_OBJECTS) $(tst_mem_LDADD) $(LIBS) - -tst_mode$(EXEEXT): $(tst_mode_OBJECTS) $(tst_mode_DEPENDENCIES) $(EXTRA_tst_mode_DEPENDENCIES) - @rm -f tst_mode$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_mode_OBJECTS) $(tst_mode_LDADD) $(LIBS) - -tst_mpi_parallel$(EXEEXT): $(tst_mpi_parallel_OBJECTS) $(tst_mpi_parallel_DEPENDENCIES) $(EXTRA_tst_mpi_parallel_DEPENDENCIES) - @rm -f tst_mpi_parallel$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_mpi_parallel_OBJECTS) $(tst_mpi_parallel_LDADD) $(LIBS) - -tst_nc4perf$(EXEEXT): $(tst_nc4perf_OBJECTS) $(tst_nc4perf_DEPENDENCIES) $(EXTRA_tst_nc4perf_DEPENDENCIES) - @rm -f tst_nc4perf$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_nc4perf_OBJECTS) $(tst_nc4perf_LDADD) $(LIBS) - -tst_opaques$(EXEEXT): $(tst_opaques_OBJECTS) $(tst_opaques_DEPENDENCIES) $(EXTRA_tst_opaques_DEPENDENCIES) - @rm -f tst_opaques$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_opaques_OBJECTS) $(tst_opaques_LDADD) $(LIBS) - -tst_parallel$(EXEEXT): $(tst_parallel_OBJECTS) $(tst_parallel_DEPENDENCIES) $(EXTRA_tst_parallel_DEPENDENCIES) - @rm -f tst_parallel$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_parallel_OBJECTS) $(tst_parallel_LDADD) $(LIBS) - -tst_parallel3$(EXEEXT): $(tst_parallel3_OBJECTS) $(tst_parallel3_DEPENDENCIES) $(EXTRA_tst_parallel3_DEPENDENCIES) - @rm -f tst_parallel3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_parallel3_OBJECTS) $(tst_parallel3_LDADD) $(LIBS) - -tst_parallel4$(EXEEXT): $(tst_parallel4_OBJECTS) $(tst_parallel4_DEPENDENCIES) $(EXTRA_tst_parallel4_DEPENDENCIES) - @rm -f tst_parallel4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_parallel4_OBJECTS) $(tst_parallel4_LDADD) $(LIBS) - -tst_rehash$(EXEEXT): $(tst_rehash_OBJECTS) $(tst_rehash_DEPENDENCIES) $(EXTRA_tst_rehash_DEPENDENCIES) - @rm -f tst_rehash$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_rehash_OBJECTS) $(tst_rehash_LDADD) $(LIBS) - -tst_rename$(EXEEXT): $(tst_rename_OBJECTS) $(tst_rename_DEPENDENCIES) $(EXTRA_tst_rename_DEPENDENCIES) - @rm -f tst_rename$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_rename_OBJECTS) $(tst_rename_LDADD) $(LIBS) - -tst_simplerw_coll_r$(EXEEXT): $(tst_simplerw_coll_r_OBJECTS) $(tst_simplerw_coll_r_DEPENDENCIES) $(EXTRA_tst_simplerw_coll_r_DEPENDENCIES) - @rm -f tst_simplerw_coll_r$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_simplerw_coll_r_OBJECTS) $(tst_simplerw_coll_r_LDADD) $(LIBS) - -tst_strings$(EXEEXT): $(tst_strings_OBJECTS) $(tst_strings_DEPENDENCIES) $(EXTRA_tst_strings_DEPENDENCIES) - @rm -f tst_strings$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_strings_OBJECTS) $(tst_strings_LDADD) $(LIBS) - -tst_strings2$(EXEEXT): $(tst_strings2_OBJECTS) $(tst_strings2_DEPENDENCIES) $(EXTRA_tst_strings2_DEPENDENCIES) - @rm -f tst_strings2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_strings2_OBJECTS) $(tst_strings2_LDADD) $(LIBS) - -tst_sync$(EXEEXT): $(tst_sync_OBJECTS) $(tst_sync_DEPENDENCIES) $(EXTRA_tst_sync_DEPENDENCIES) - @rm -f tst_sync$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_sync_OBJECTS) $(tst_sync_LDADD) $(LIBS) - -tst_unlim_vars$(EXEEXT): $(tst_unlim_vars_OBJECTS) $(tst_unlim_vars_DEPENDENCIES) $(EXTRA_tst_unlim_vars_DEPENDENCIES) - @rm -f tst_unlim_vars$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_unlim_vars_OBJECTS) $(tst_unlim_vars_LDADD) $(LIBS) - -tst_utf8$(EXEEXT): $(tst_utf8_OBJECTS) $(tst_utf8_DEPENDENCIES) $(EXTRA_tst_utf8_DEPENDENCIES) - @rm -f tst_utf8$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_utf8_OBJECTS) $(tst_utf8_LDADD) $(LIBS) - -tst_v2$(EXEEXT): $(tst_v2_OBJECTS) $(tst_v2_DEPENDENCIES) $(EXTRA_tst_v2_DEPENDENCIES) - @rm -f tst_v2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_v2_OBJECTS) $(tst_v2_LDADD) $(LIBS) - -tst_varms$(EXEEXT): $(tst_varms_OBJECTS) $(tst_varms_DEPENDENCIES) $(EXTRA_tst_varms_DEPENDENCIES) - @rm -f tst_varms$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_varms_OBJECTS) $(tst_varms_LDADD) $(LIBS) - -tst_vars$(EXEEXT): $(tst_vars_OBJECTS) $(tst_vars_DEPENDENCIES) $(EXTRA_tst_vars_DEPENDENCIES) - @rm -f tst_vars$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vars_OBJECTS) $(tst_vars_LDADD) $(LIBS) - -tst_vars2$(EXEEXT): $(tst_vars2_OBJECTS) $(tst_vars2_DEPENDENCIES) $(EXTRA_tst_vars2_DEPENDENCIES) - @rm -f tst_vars2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vars2_OBJECTS) $(tst_vars2_LDADD) $(LIBS) - -tst_vars3$(EXEEXT): $(tst_vars3_OBJECTS) $(tst_vars3_DEPENDENCIES) $(EXTRA_tst_vars3_DEPENDENCIES) - @rm -f tst_vars3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vars3_OBJECTS) $(tst_vars3_LDADD) $(LIBS) - -tst_vars4$(EXEEXT): $(tst_vars4_OBJECTS) $(tst_vars4_DEPENDENCIES) $(EXTRA_tst_vars4_DEPENDENCIES) - @rm -f tst_vars4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vars4_OBJECTS) $(tst_vars4_LDADD) $(LIBS) - -tst_vl$(EXEEXT): $(tst_vl_OBJECTS) $(tst_vl_DEPENDENCIES) $(EXTRA_tst_vl_DEPENDENCIES) - @rm -f tst_vl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vl_OBJECTS) $(tst_vl_LDADD) $(LIBS) - -tst_xplatform$(EXEEXT): $(tst_xplatform_OBJECTS) $(tst_xplatform_DEPENDENCIES) $(EXTRA_tst_xplatform_DEPENDENCIES) - @rm -f tst_xplatform$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_xplatform_OBJECTS) $(tst_xplatform_LDADD) $(LIBS) - -tst_xplatform2$(EXEEXT): $(tst_xplatform2_OBJECTS) $(tst_xplatform2_DEPENDENCIES) $(EXTRA_tst_xplatform2_DEPENDENCIES) - @rm -f tst_xplatform2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_xplatform2_OBJECTS) $(tst_xplatform2_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bm_file.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bm_many_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bm_many_objs.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bm_netcdf4_recs.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdm_sea_soundings.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renamegroup.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_type.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_ar4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_ar4_3d.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_ar4_4d.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_ar5.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts1.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_atts_string_rewrite.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_camrun.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_chunk_hdf4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_chunks.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_chunks2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_chunks3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_compounds.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_compounds2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_compounds3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_converts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_converts2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_coords.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_coords2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_coords3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_create_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_dims.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_dims2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_dims3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_empty_vlen_unlim.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_endian_fill.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_enums.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files5.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_files6.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fill_attr_vanish.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fillbug.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fills.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fills2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_grps.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_grps2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h4_lendian.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h5_endians.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_atts2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_files3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_many_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_refs.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_scalar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_strbug.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_hdf5_file_compat.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops5.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_interops6.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_knmi.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_large.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_large2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_mem.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_mode.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_mpi_parallel.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nc4perf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_opaques.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_parallel.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_parallel3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_parallel4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_rehash.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_rename.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_simplerw_coll_r.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_strings.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_strings2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_sync.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_unlim_vars.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_utf8.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_utils.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_v2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_varms.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vars.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vars2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vars3.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vars4.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vl.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_xplatform.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_xplatform2.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - 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) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/bm_file.Po - -rm -f ./$(DEPDIR)/bm_many_atts.Po - -rm -f ./$(DEPDIR)/bm_many_objs.Po - -rm -f ./$(DEPDIR)/bm_netcdf4_recs.Po - -rm -f ./$(DEPDIR)/cdm_sea_soundings.Po - -rm -f ./$(DEPDIR)/renamegroup.Po - -rm -f ./$(DEPDIR)/t_type.Po - -rm -f ./$(DEPDIR)/tst_ar4.Po - -rm -f ./$(DEPDIR)/tst_ar4_3d.Po - -rm -f ./$(DEPDIR)/tst_ar4_4d.Po - -rm -f ./$(DEPDIR)/tst_ar5.Po - -rm -f ./$(DEPDIR)/tst_atts.Po - -rm -f ./$(DEPDIR)/tst_atts1.Po - -rm -f ./$(DEPDIR)/tst_atts2.Po - -rm -f ./$(DEPDIR)/tst_atts_string_rewrite.Po - -rm -f ./$(DEPDIR)/tst_camrun.Po - -rm -f ./$(DEPDIR)/tst_chunk_hdf4.Po - -rm -f ./$(DEPDIR)/tst_chunks.Po - -rm -f ./$(DEPDIR)/tst_chunks2.Po - -rm -f ./$(DEPDIR)/tst_chunks3.Po - -rm -f ./$(DEPDIR)/tst_compounds.Po - -rm -f ./$(DEPDIR)/tst_compounds2.Po - -rm -f ./$(DEPDIR)/tst_compounds3.Po - -rm -f ./$(DEPDIR)/tst_converts.Po - -rm -f ./$(DEPDIR)/tst_converts2.Po - -rm -f ./$(DEPDIR)/tst_coords.Po - -rm -f ./$(DEPDIR)/tst_coords2.Po - -rm -f ./$(DEPDIR)/tst_coords3.Po - -rm -f ./$(DEPDIR)/tst_create_files.Po - -rm -f ./$(DEPDIR)/tst_dims.Po - -rm -f ./$(DEPDIR)/tst_dims2.Po - -rm -f ./$(DEPDIR)/tst_dims3.Po - -rm -f ./$(DEPDIR)/tst_empty_vlen_unlim.Po - -rm -f ./$(DEPDIR)/tst_endian_fill.Po - -rm -f ./$(DEPDIR)/tst_enums.Po - -rm -f ./$(DEPDIR)/tst_files.Po - -rm -f ./$(DEPDIR)/tst_files2.Po - -rm -f ./$(DEPDIR)/tst_files3.Po - -rm -f ./$(DEPDIR)/tst_files4.Po - -rm -f ./$(DEPDIR)/tst_files5.Po - -rm -f ./$(DEPDIR)/tst_files6.Po - -rm -f ./$(DEPDIR)/tst_fill_attr_vanish.Po - -rm -f ./$(DEPDIR)/tst_fillbug.Po - -rm -f ./$(DEPDIR)/tst_fills.Po - -rm -f ./$(DEPDIR)/tst_fills2.Po - -rm -f ./$(DEPDIR)/tst_grps.Po - -rm -f ./$(DEPDIR)/tst_grps2.Po - -rm -f ./$(DEPDIR)/tst_h4_lendian.Po - -rm -f ./$(DEPDIR)/tst_h5_endians.Po - -rm -f ./$(DEPDIR)/tst_h_atts2.Po - -rm -f ./$(DEPDIR)/tst_h_files3.Po - -rm -f ./$(DEPDIR)/tst_h_many_atts.Po - -rm -f ./$(DEPDIR)/tst_h_refs.Po - -rm -f ./$(DEPDIR)/tst_h_scalar.Po - -rm -f ./$(DEPDIR)/tst_h_strbug.Po - -rm -f ./$(DEPDIR)/tst_hdf5_file_compat.Po - -rm -f ./$(DEPDIR)/tst_interops.Po - -rm -f ./$(DEPDIR)/tst_interops2.Po - -rm -f ./$(DEPDIR)/tst_interops3.Po - -rm -f ./$(DEPDIR)/tst_interops4.Po - -rm -f ./$(DEPDIR)/tst_interops5.Po - -rm -f ./$(DEPDIR)/tst_interops6.Po - -rm -f ./$(DEPDIR)/tst_knmi.Po - -rm -f ./$(DEPDIR)/tst_large.Po - -rm -f ./$(DEPDIR)/tst_large2.Po - -rm -f ./$(DEPDIR)/tst_mem.Po - -rm -f ./$(DEPDIR)/tst_mode.Po - -rm -f ./$(DEPDIR)/tst_mpi_parallel.Po - -rm -f ./$(DEPDIR)/tst_nc4perf.Po - -rm -f ./$(DEPDIR)/tst_opaques.Po - -rm -f ./$(DEPDIR)/tst_parallel.Po - -rm -f ./$(DEPDIR)/tst_parallel3.Po - -rm -f ./$(DEPDIR)/tst_parallel4.Po - -rm -f ./$(DEPDIR)/tst_rehash.Po - -rm -f ./$(DEPDIR)/tst_rename.Po - -rm -f ./$(DEPDIR)/tst_simplerw_coll_r.Po - -rm -f ./$(DEPDIR)/tst_strings.Po - -rm -f ./$(DEPDIR)/tst_strings2.Po - -rm -f ./$(DEPDIR)/tst_sync.Po - -rm -f ./$(DEPDIR)/tst_unlim_vars.Po - -rm -f ./$(DEPDIR)/tst_utf8.Po - -rm -f ./$(DEPDIR)/tst_utils.Po - -rm -f ./$(DEPDIR)/tst_v2.Po - -rm -f ./$(DEPDIR)/tst_varms.Po - -rm -f ./$(DEPDIR)/tst_vars.Po - -rm -f ./$(DEPDIR)/tst_vars2.Po - -rm -f ./$(DEPDIR)/tst_vars3.Po - -rm -f ./$(DEPDIR)/tst_vars4.Po - -rm -f ./$(DEPDIR)/tst_vl.Po - -rm -f ./$(DEPDIR)/tst_xplatform.Po - -rm -f ./$(DEPDIR)/tst_xplatform2.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/bm_file.Po - -rm -f ./$(DEPDIR)/bm_many_atts.Po - -rm -f ./$(DEPDIR)/bm_many_objs.Po - -rm -f ./$(DEPDIR)/bm_netcdf4_recs.Po - -rm -f ./$(DEPDIR)/cdm_sea_soundings.Po - -rm -f ./$(DEPDIR)/renamegroup.Po - -rm -f ./$(DEPDIR)/t_type.Po - -rm -f ./$(DEPDIR)/tst_ar4.Po - -rm -f ./$(DEPDIR)/tst_ar4_3d.Po - -rm -f ./$(DEPDIR)/tst_ar4_4d.Po - -rm -f ./$(DEPDIR)/tst_ar5.Po - -rm -f ./$(DEPDIR)/tst_atts.Po - -rm -f ./$(DEPDIR)/tst_atts1.Po - -rm -f ./$(DEPDIR)/tst_atts2.Po - -rm -f ./$(DEPDIR)/tst_atts_string_rewrite.Po - -rm -f ./$(DEPDIR)/tst_camrun.Po - -rm -f ./$(DEPDIR)/tst_chunk_hdf4.Po - -rm -f ./$(DEPDIR)/tst_chunks.Po - -rm -f ./$(DEPDIR)/tst_chunks2.Po - -rm -f ./$(DEPDIR)/tst_chunks3.Po - -rm -f ./$(DEPDIR)/tst_compounds.Po - -rm -f ./$(DEPDIR)/tst_compounds2.Po - -rm -f ./$(DEPDIR)/tst_compounds3.Po - -rm -f ./$(DEPDIR)/tst_converts.Po - -rm -f ./$(DEPDIR)/tst_converts2.Po - -rm -f ./$(DEPDIR)/tst_coords.Po - -rm -f ./$(DEPDIR)/tst_coords2.Po - -rm -f ./$(DEPDIR)/tst_coords3.Po - -rm -f ./$(DEPDIR)/tst_create_files.Po - -rm -f ./$(DEPDIR)/tst_dims.Po - -rm -f ./$(DEPDIR)/tst_dims2.Po - -rm -f ./$(DEPDIR)/tst_dims3.Po - -rm -f ./$(DEPDIR)/tst_empty_vlen_unlim.Po - -rm -f ./$(DEPDIR)/tst_endian_fill.Po - -rm -f ./$(DEPDIR)/tst_enums.Po - -rm -f ./$(DEPDIR)/tst_files.Po - -rm -f ./$(DEPDIR)/tst_files2.Po - -rm -f ./$(DEPDIR)/tst_files3.Po - -rm -f ./$(DEPDIR)/tst_files4.Po - -rm -f ./$(DEPDIR)/tst_files5.Po - -rm -f ./$(DEPDIR)/tst_files6.Po - -rm -f ./$(DEPDIR)/tst_fill_attr_vanish.Po - -rm -f ./$(DEPDIR)/tst_fillbug.Po - -rm -f ./$(DEPDIR)/tst_fills.Po - -rm -f ./$(DEPDIR)/tst_fills2.Po - -rm -f ./$(DEPDIR)/tst_grps.Po - -rm -f ./$(DEPDIR)/tst_grps2.Po - -rm -f ./$(DEPDIR)/tst_h4_lendian.Po - -rm -f ./$(DEPDIR)/tst_h5_endians.Po - -rm -f ./$(DEPDIR)/tst_h_atts2.Po - -rm -f ./$(DEPDIR)/tst_h_files3.Po - -rm -f ./$(DEPDIR)/tst_h_many_atts.Po - -rm -f ./$(DEPDIR)/tst_h_refs.Po - -rm -f ./$(DEPDIR)/tst_h_scalar.Po - -rm -f ./$(DEPDIR)/tst_h_strbug.Po - -rm -f ./$(DEPDIR)/tst_hdf5_file_compat.Po - -rm -f ./$(DEPDIR)/tst_interops.Po - -rm -f ./$(DEPDIR)/tst_interops2.Po - -rm -f ./$(DEPDIR)/tst_interops3.Po - -rm -f ./$(DEPDIR)/tst_interops4.Po - -rm -f ./$(DEPDIR)/tst_interops5.Po - -rm -f ./$(DEPDIR)/tst_interops6.Po - -rm -f ./$(DEPDIR)/tst_knmi.Po - -rm -f ./$(DEPDIR)/tst_large.Po - -rm -f ./$(DEPDIR)/tst_large2.Po - -rm -f ./$(DEPDIR)/tst_mem.Po - -rm -f ./$(DEPDIR)/tst_mode.Po - -rm -f ./$(DEPDIR)/tst_mpi_parallel.Po - -rm -f ./$(DEPDIR)/tst_nc4perf.Po - -rm -f ./$(DEPDIR)/tst_opaques.Po - -rm -f ./$(DEPDIR)/tst_parallel.Po - -rm -f ./$(DEPDIR)/tst_parallel3.Po - -rm -f ./$(DEPDIR)/tst_parallel4.Po - -rm -f ./$(DEPDIR)/tst_rehash.Po - -rm -f ./$(DEPDIR)/tst_rename.Po - -rm -f ./$(DEPDIR)/tst_simplerw_coll_r.Po - -rm -f ./$(DEPDIR)/tst_strings.Po - -rm -f ./$(DEPDIR)/tst_strings2.Po - -rm -f ./$(DEPDIR)/tst_sync.Po - -rm -f ./$(DEPDIR)/tst_unlim_vars.Po - -rm -f ./$(DEPDIR)/tst_utf8.Po - -rm -f ./$(DEPDIR)/tst_utils.Po - -rm -f ./$(DEPDIR)/tst_v2.Po - -rm -f ./$(DEPDIR)/tst_varms.Po - -rm -f ./$(DEPDIR)/tst_vars.Po - -rm -f ./$(DEPDIR)/tst_vars2.Po - -rm -f ./$(DEPDIR)/tst_vars3.Po - -rm -f ./$(DEPDIR)/tst_vars4.Po - -rm -f ./$(DEPDIR)/tst_vl.Po - -rm -f ./$(DEPDIR)/tst_xplatform.Po - -rm -f ./$(DEPDIR)/tst_xplatform2.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -@BUILD_UTILITIES_TRUE@ TESTS += run_grp_rename.sh tst_misc.sh - -@BUILD_BENCHMARKS_TRUE@benchmarks: check -@BUILD_BENCHMARKS_TRUE@ ./run_bm_radar_2D.sh -@BUILD_BENCHMARKS_TRUE@ ./run_bm_radar_2D_compression1.sh -@BUILD_BENCHMARKS_TRUE@ ./run_bm.sh -@BUILD_BENCHMARKS_TRUE@ ./run_tst_chunks.sh -@BUILD_BENCHMARKS_TRUE@ ./run_bm_ar4.sh - -# 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/contrib/netcdf/4.4.1.1/nc_test4/bm_netcdf4_recs.c b/contrib/netcdf/4.4.1.1/nc_test4/bm_netcdf4_recs.c deleted file mode 100644 index 4419a484ab1..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/bm_netcdf4_recs.c +++ /dev/null @@ -1,95 +0,0 @@ -/** \file - -This program benchmarks creating a netCDF file and reading records. - -Copyright 2011, UCAR/Unidata See COPYRIGHT file for copying and -redistribution conditions. -*/ - -#include -#include -#include "err_macros.h" -#include -#include -#include -#include -#include /* Extra high precision time info. */ - -/* We will create this file. */ -#define FILE_NAME "bm_netcdf4_recs.nc" - -int main(int argc, char **argv) -{ - struct timeval start_time, end_time, diff_time; - double sec; - int nitem = 10000; /* default number of objects of each type */ - int i; - int ncid; - int data[] = {42}; - int g, grp, numgrp; - char gname[16]; - int v, var, numvar, vn, vleft, nvars; - - int stat; /* return status */ - - /* dimension ids */ - int basetime_dim; - int forecast_dim; - int bounds_dim; - int latitude_dim; - int longitude_dim; - - /* dimension lengths */ - size_t basetime_len = NC_UNLIMITED; - size_t forecast_len = 32; - size_t bounds_len = 2; - size_t latitude_len = 121; - size_t longitude_len = 101; - - /* variable ids */ - int temperature_2m_id; - - /* rank (number of dimensions) for each variable */ -# define RANK_temperature_2m 4 - - /* variable shapes */ - int temperature_2m_dims[RANK_temperature_2m]; - static const float temperature_2m_FillValue_att[1] = {9.96921e+36} ; - static const float temperature_2m_missing_value_att[1] = {9.96921e+36} ; - static const float temperature_2m_valid_min_att[1] = {180} ; - static const float temperature_2m_valid_max_att[1] = {330} ; - - /* enter define mode */ - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; - - /* define dimensions */ - if (nc_def_dim(ncid, "basetime", basetime_len, &basetime_dim)) ERR; - if (nc_def_dim(ncid, "forecast", forecast_len, &forecast_dim)) ERR; - if (nc_def_dim(ncid, "bounds", bounds_len, &bounds_dim)) ERR; - if (nc_def_dim(ncid, "latitude", latitude_len, &latitude_dim)) ERR; - if (nc_def_dim(ncid, "longitude", longitude_len, &longitude_dim)) ERR; - - /* define variables */ - temperature_2m_dims[0] = basetime_dim; - temperature_2m_dims[1] = forecast_dim; - temperature_2m_dims[2] = latitude_dim; - temperature_2m_dims[3] = longitude_dim; - if (nc_def_var(ncid, "temperature_2m", NC_FLOAT, RANK_temperature_2m, - temperature_2m_dims, &temperature_2m_id)) ERR; - - /* assign per-variable attributes */ - if (nc_put_att_text(ncid, temperature_2m_id, "long_name", 36, "Air temperature 2m above the surface")) ERR; - if (nc_put_att_text(ncid, temperature_2m_id, "units", 1, "K")) ERR; - if (nc_put_att_float(ncid, temperature_2m_id, "_FillValue", NC_FLOAT, 1, temperature_2m_FillValue_att)) ERR; - if (nc_put_att_float(ncid, temperature_2m_id, "missing_value", NC_FLOAT, 1, temperature_2m_missing_value_att)) ERR; - if (nc_put_att_float(ncid, temperature_2m_id, "valid_min", NC_FLOAT, 1, temperature_2m_valid_min_att)) ERR; - if (nc_put_att_float(ncid, temperature_2m_id, "valid_max", NC_FLOAT, 1, temperature_2m_valid_max_att)) ERR; - if (nc_put_att_text(ncid, temperature_2m_id, "standard_name", 15, "air_temperature")) ERR; - if (nc_put_att_text(ncid, temperature_2m_id, "cell_methods", 10, "area: mean")) ERR; - if (nc_put_att_text(ncid, temperature_2m_id, "coordinates", 5, "level")) ERR; - if (nc_close(ncid)) ERR; - - if (gettimeofday(&start_time, NULL)) ERR; - - return(0); -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks1.cdl b/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks1.cdl deleted file mode 100644 index 7a8f99bb10c..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks1.cdl +++ /dev/null @@ -1,248 +0,0 @@ -netcdf tst_chunks { -dimensions: - dim1 = 6 ; - dim2 = 12 ; - dim3 = 4 ; -variables: - float var_contiguous(dim1, dim2, dim3) ; - var_contiguous:_Storage = "contiguous" ; - var_contiguous:_Endianness = "little" ; - float var_chunked(dim1, dim2, dim3) ; - var_chunked:_Storage = "chunked" ; - var_chunked:_ChunkSizes = 2, 3, 1 ; - var_chunked:_Endianness = "little" ; - float var_compressed(dim1, dim2, dim3) ; - var_compressed:_Storage = "chunked" ; - var_compressed:_ChunkSizes = 2, 3, 1 ; - var_compressed:_DeflateLevel = 1 ; - var_compressed:_Endianness = "little" ; - -// global attributes: - :_NCProperties = "version=1|netcdflibversion=4.4.2-development|hdf5libversion=1.8.17" ; - :_SuperblockVersion = 0 ; - :_IsNetcdf4 = 1 ; - :_Format = "netCDF-4 classic model" ; -data: - - var_contiguous = - 0, 0, 0, 0, - 1, 1, 1, 1, - 2, 2, 2, 2, - 3, 3, 3, 3, - 4, 4, 4, 4, - 5, 5, 5, 5, - 6, 6, 6, 6, - 7, 7, 7, 7, - 8, 8, 8, 8, - 9, 9, 9, 9, - 10, 10, 10, 10, - 11, 11, 11, 11, - 12, 12, 12, 12, - 13, 13, 13, 13, - 14, 14, 14, 14, - 15, 15, 15, 15, - 16, 16, 16, 16, - 17, 17, 17, 17, - 18, 18, 18, 18, - 19, 19, 19, 19, - 20, 20, 20, 20, - 21, 21, 21, 21, - 22, 22, 22, 22, - 23, 23, 23, 23, - 24, 24, 24, 24, - 25, 25, 25, 25, - 26, 26, 26, 26, - 27, 27, 27, 27, - 28, 28, 28, 28, - 29, 29, 29, 29, - 30, 30, 30, 30, - 31, 31, 31, 31, - 32, 32, 32, 32, - 33, 33, 33, 33, - 34, 34, 34, 34, - 35, 35, 35, 35, - 36, 36, 36, 36, - 37, 37, 37, 37, - 38, 38, 38, 38, - 39, 39, 39, 39, - 40, 40, 40, 40, - 41, 41, 41, 41, - 42, 42, 42, 42, - 43, 43, 43, 43, - 44, 44, 44, 44, - 45, 45, 45, 45, - 46, 46, 46, 46, - 47, 47, 47, 47, - 48, 48, 48, 48, - 49, 49, 49, 49, - 50, 50, 50, 50, - 51, 51, 51, 51, - 52, 52, 52, 52, - 53, 53, 53, 53, - 54, 54, 54, 54, - 55, 55, 55, 55, - 56, 56, 56, 56, - 57, 57, 57, 57, - 58, 58, 58, 58, - 59, 59, 59, 59, - 60, 60, 60, 60, - 61, 61, 61, 61, - 62, 62, 62, 62, - 63, 63, 63, 63, - 64, 64, 64, 64, - 65, 65, 65, 65, - 66, 66, 66, 66, - 67, 67, 67, 67, - 68, 68, 68, 68, - 69, 69, 69, 69, - 70, 70, 70, 70, - 71, 71, 71, 71 ; - - var_chunked = - 0, 0, 0, 0, - 1, 1, 1, 1, - 2, 2, 2, 2, - 3, 3, 3, 3, - 4, 4, 4, 4, - 5, 5, 5, 5, - 6, 6, 6, 6, - 7, 7, 7, 7, - 8, 8, 8, 8, - 9, 9, 9, 9, - 10, 10, 10, 10, - 11, 11, 11, 11, - 12, 12, 12, 12, - 13, 13, 13, 13, - 14, 14, 14, 14, - 15, 15, 15, 15, - 16, 16, 16, 16, - 17, 17, 17, 17, - 18, 18, 18, 18, - 19, 19, 19, 19, - 20, 20, 20, 20, - 21, 21, 21, 21, - 22, 22, 22, 22, - 23, 23, 23, 23, - 24, 24, 24, 24, - 25, 25, 25, 25, - 26, 26, 26, 26, - 27, 27, 27, 27, - 28, 28, 28, 28, - 29, 29, 29, 29, - 30, 30, 30, 30, - 31, 31, 31, 31, - 32, 32, 32, 32, - 33, 33, 33, 33, - 34, 34, 34, 34, - 35, 35, 35, 35, - 36, 36, 36, 36, - 37, 37, 37, 37, - 38, 38, 38, 38, - 39, 39, 39, 39, - 40, 40, 40, 40, - 41, 41, 41, 41, - 42, 42, 42, 42, - 43, 43, 43, 43, - 44, 44, 44, 44, - 45, 45, 45, 45, - 46, 46, 46, 46, - 47, 47, 47, 47, - 48, 48, 48, 48, - 49, 49, 49, 49, - 50, 50, 50, 50, - 51, 51, 51, 51, - 52, 52, 52, 52, - 53, 53, 53, 53, - 54, 54, 54, 54, - 55, 55, 55, 55, - 56, 56, 56, 56, - 57, 57, 57, 57, - 58, 58, 58, 58, - 59, 59, 59, 59, - 60, 60, 60, 60, - 61, 61, 61, 61, - 62, 62, 62, 62, - 63, 63, 63, 63, - 64, 64, 64, 64, - 65, 65, 65, 65, - 66, 66, 66, 66, - 67, 67, 67, 67, - 68, 68, 68, 68, - 69, 69, 69, 69, - 70, 70, 70, 70, - 71, 71, 71, 71 ; - - var_compressed = - 0, 0, 0, 0, - 1, 1, 1, 1, - 2, 2, 2, 2, - 3, 3, 3, 3, - 4, 4, 4, 4, - 5, 5, 5, 5, - 6, 6, 6, 6, - 7, 7, 7, 7, - 8, 8, 8, 8, - 9, 9, 9, 9, - 10, 10, 10, 10, - 11, 11, 11, 11, - 12, 12, 12, 12, - 13, 13, 13, 13, - 14, 14, 14, 14, - 15, 15, 15, 15, - 16, 16, 16, 16, - 17, 17, 17, 17, - 18, 18, 18, 18, - 19, 19, 19, 19, - 20, 20, 20, 20, - 21, 21, 21, 21, - 22, 22, 22, 22, - 23, 23, 23, 23, - 24, 24, 24, 24, - 25, 25, 25, 25, - 26, 26, 26, 26, - 27, 27, 27, 27, - 28, 28, 28, 28, - 29, 29, 29, 29, - 30, 30, 30, 30, - 31, 31, 31, 31, - 32, 32, 32, 32, - 33, 33, 33, 33, - 34, 34, 34, 34, - 35, 35, 35, 35, - 36, 36, 36, 36, - 37, 37, 37, 37, - 38, 38, 38, 38, - 39, 39, 39, 39, - 40, 40, 40, 40, - 41, 41, 41, 41, - 42, 42, 42, 42, - 43, 43, 43, 43, - 44, 44, 44, 44, - 45, 45, 45, 45, - 46, 46, 46, 46, - 47, 47, 47, 47, - 48, 48, 48, 48, - 49, 49, 49, 49, - 50, 50, 50, 50, - 51, 51, 51, 51, - 52, 52, 52, 52, - 53, 53, 53, 53, - 54, 54, 54, 54, - 55, 55, 55, 55, - 56, 56, 56, 56, - 57, 57, 57, 57, - 58, 58, 58, 58, - 59, 59, 59, 59, - 60, 60, 60, 60, - 61, 61, 61, 61, - 62, 62, 62, 62, - 63, 63, 63, 63, - 64, 64, 64, 64, - 65, 65, 65, 65, - 66, 66, 66, 66, - 67, 67, 67, 67, - 68, 68, 68, 68, - 69, 69, 69, 69, - 70, 70, 70, 70, - 71, 71, 71, 71 ; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks2.cdl b/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks2.cdl deleted file mode 100644 index a00eaf538f1..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/ref_chunks2.cdl +++ /dev/null @@ -1,25 +0,0 @@ -netcdf tst_chunks { -dimensions: - dim1 = 32 ; - dim2 = 90 ; - dim3 = 91 ; -variables: - float var_contiguous(dim1, dim2, dim3) ; - var_contiguous:_Storage = "contiguous" ; - var_contiguous:_Endianness = "little" ; - float var_chunked(dim1, dim2, dim3) ; - var_chunked:_Storage = "chunked" ; - var_chunked:_ChunkSizes = 8, 10, 13 ; - var_chunked:_Endianness = "little" ; - float var_compressed(dim1, dim2, dim3) ; - var_compressed:_Storage = "chunked" ; - var_compressed:_ChunkSizes = 8, 10, 13 ; - var_compressed:_DeflateLevel = 1 ; - var_compressed:_Endianness = "little" ; - -// global attributes: - :_NCProperties = "version=1|netcdflibversion=4.4.2-development|hdf5libversion=1.8.17" ; - :_SuperblockVersion = 0 ; - :_IsNetcdf4 = 1 ; - :_Format = "netCDF-4 classic model" ; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm.sh deleted file mode 100755 index f76575b88c9..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh - -# This shell runs a bunch of benchmarks on some specific files -# available at Unidata. - -# $Id: run_bm.sh,v 1.8 2007/11/30 16:45:33 ed Exp $ - -set -e - -# Radar 2D file. Make sure we have a local disk copy. Not much point -# in benchmarking read and write times over NFS! -TMP=/shecky/data -d1=20070803-2300 -echo "howdy!" -ls $TMP/${d1}-2d.nc3 -if ! test -f $TMP/${d1}-2d.nc3; then - cp /upc/share/testdata/nssl/mosaic2d_nc/tile1/$d1.netcdf $TMP/$d1-2d.nc3 -fi - -# Copy the 2D rarar file into a netCDF-4 version, with various -# compression settings. -out1=radar_2d_compression.txt -c0=100 -c1=200 -h=-h -for ((s=0; s < 2 ; s++)) -do - for ((d=0; d <= 9 ; d=d+2)) - do - cmd="./bm_file $h -f 3 -o $TMP/$d1-2d.nc4 -c 0:${d}:${s}:${c0}:${c1}" - for ((v=1; v < 12; v++)) - do - cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" - done - cmd="$cmd $TMP/$d1-2d.nc3" - echo "cmd=$cmd" - if ! ($cmd >> $out1); then - exit 1; - fi - h= - done -done - -exit 0 - -# Get local copy of the radar 3D file. -d1=20070803-2300 -if ! test -f $TMP/${d1}-3d.nc3; then - cp /upc/share/testdata/nssl/mosaic3d_nc/tile1/20070803-2300.netcdf $TMP/${d1}-3d.nc3 -fi - -# Test different compressions, with and without shuffle. -out1=radar_3d_compression.txt -c0=3 -c1=100 -c2=200 -h=-h -for ((s=0; s < 2 ; s++)) -do - for ((d=0; d <= 9 ; d++)) - do - cmd="./bm_file $h -f 3 -o $TMP/$d1.nc4 -c 0:${d}:${s}:${c0}:${c1}:${c2} $TMP/$d1.nc3" - echo "cmd=$cmd" - if ! ($cmd >> $out1); then - exit 1; - fi - h= - done -done - -# Try different chunk sizes with the same compession. -out1=radar_3d_chunking.txt -s=1 -d=3 -h=-h -for c0 in 1 2 5 -do - for c1 in 10 100 200 500 - do - for c3 in 10 100 200 500 - do - cmd="./bm_file $h -f 3 -o $TMP/$d1.nc4 -c 0:${d}:${s}:${c0}:${c1}:${c2} $TMP/$d1.nc3" - echo "cmd=$cmd" - if ! ($cmd >> $out1); then - exit 1; - fi - h= - done - done -done diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_ar4.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_ar4.sh deleted file mode 100755 index 116f91f48f6..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_ar4.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh - -# This shell runs a bunch of benchmarks on some specific files -# available at Unidata. If you want to run this shell, you need these -# data files. - -# This script gets and benchmarks against some AR4 data. - -# $Id: run_bm_ar4.sh,v 1.4 2010/01/11 19:27:11 ed Exp $ - -set -e -echo "" -#file_list="pr_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc tauu_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc thetao_O1.SRESA1B_2.CCSM.ocnm.2000-01_cat_2099-12.nc usi_O1.20C3M_8.CCSM.icem.1870-01_cat_1999-12.nc" -#file_list="pr_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc tauu_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc usi_O1.20C3M_8.CCSM.icem.1870-01_cat_1999-12.nc" -file_list="pr_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc" -echo " *** Getting sample AR4 files $file_list" - -# Get the files. -for f1 in $file_list -do - if ! test -f $f1; then - wget ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/ar4/$f1.gz - gunzip $f1.gz - fi -done - -echo "SUCCESS!!!" - -out='run_bm_ar4_pr_out.csv' -rm -rf $out -echo " *** Benchmarking pr_A1 file with various chunksizes (output to ${out})..." - -# Create netCDF-4 versions of the file, with different chunksizes. -h=-h -s=0 -pr_ar4_sample="pr_A1.20C3M_8.CCSM.atmm.1870-01_cat_1999-12.nc" - -file_num=0 -for d in -1 -do - for c0 in 4 8 16 32 64 - do - for c1 in 64 - do - for c2 in 128 - do - if test $d = -1; then - file_out="pr_A1_${c0}_${c1}_${c2}.nc" - else - file_out="pr_A1_z${d}_${c0}_${c1}_${c2}.nc" - fi - out_files="$out_files $file_out" - - # If the output file does not yet exist, create it. - if test -f $file_out; then - echo "found existing $file_out" - else - cmd="./bm_file $h -f 3 -c 6:${d}:${s}:${c0}:${c1}:${c2} -o ${file_out} ${pr_ar4_sample}" - echo "cmd=$cmd" -# bash ./clear_cache.sh - if ! ($cmd >> $out); then - exit 1; - fi - fi - - # Turn off header next time around. - h= - done - done - done -done - -echo $out_files - -# Do the horizonatal runs. -#bash ./clear_cache.sh -./tst_ar4 -h $pr_ar4_sample -for f1 in $out_files -do -# bash ./clear_cache.sh - ./tst_ar4 ${f1} -done - -# Do the timeseries runs. -#bash ./clear_cache.sh -./tst_ar4 -t -h $pr_ar4_sample -for f1 in $out_files -do -# bash ./clear_cache.sh - ./tst_ar4 -t ${f1} -done - -echo "SUCCESS!!!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_elena.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_elena.sh deleted file mode 100755 index 819141e1b2b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_elena.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# This shell runs some benchmarks that Elena ran as described here: -# http://hdfeos.org/workshops/ws06/presentations/Pourmal/HDF5_IO_Perf.pdf - -# $Id: run_bm_elena.sh,v 1.2 2007/12/30 17:19:29 ed Exp $ - -set -e -echo "" - -echo "*** Testing the benchmarking program bm_file for simple float file, no compression..." -./bm_file -h -d -f 3 -o tst_elena_out.nc -c 0:-1:0:1024:16:256 tst_elena_int_3D.nc -./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:1024:256:256 tst_elena_int_3D.nc -./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:512:64:256 tst_elena_int_3D.nc -./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:512:256:256 tst_elena_int_3D.nc -./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:256:64:256 tst_elena_int_3D.nc -./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:256:256:256 tst_elena_int_3D.nc -echo '*** SUCCESS!!!' - -exit 0 \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D.sh deleted file mode 100755 index 3b163a1291b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh - -# This shell runs a bunch of benchmarks on some specific files -# available at Unidata. If you want to run this shell, you need these -# data files. - -# This script gets and benchmarks against some 2D radar data. - -# $Id: run_bm_radar_2D.sh,v 1.9 2008/01/16 13:27:01 ed Exp $ - -set -e - -# Radar 2D file. Make sure we have a local disk copy. Not much point -# in benchmarking read and write times over NFS! -TMP=/shecky/data -d1=20070803-2300 -file_num=0 -for t in 1 2 4 -do - file=${d1}_tile${t}-2d.nc3 - in_file[$file_num]=$file - let file_num=$file_num+1 - if ! test -f $TMP/$file; then - echo "getting file: $file" - cp -f /upc/share/testdata/nssl/mosaic2d_nc/tile${t}/$d1.netcdf.gz $TMP - gunzip -f $TMP/$d1.netcdf.gz - cp $d1.netcdf $TMP/$file - fi -done -num_in_files=${#in_file[@]} - -# Copy the 2D rarar file into a netCDF-4 version, with various -# CHUNKING settings. -out1=radar_2d_chunking.csv -out2=radar_2d_chunking_2.csv -rm -rf $out1 $out2 - -# Turn on header (for the first run of bm_file). -h=-h - -# Turn off compression and shuffle filters. -s=0 -d=-1 - -# file_num=0 -# for c0 in 251 1001 1501 -# do -# for c1 in 251 1001 2001 -# do -# # Build the command including chunk sizes for all 13 vars. -# cmd="./bm_file $h -f 4 -o $TMP/$d1-2d_${c0}x${c1}.nc4 -c 0:${d}:${s}:${c0}:${c1}" -# for ((v=1; v < 12; v++)) -# do -# cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" -# done -# cmd="$cmd $TMP/${in_file[${file_num}]}" -# echo "cmd=$cmd" -# if ! ($cmd); then -# exit 1; -# fi -# h= - -# # Switch to the next input file of three. -# let file_num=$file_num+1 -# test $file_num -eq $num_in_files && file_num=0 -# done -# done - - -file_num=0 -for c0 in 251 1001 1501 -do - for c1 in 251 1001 2001 - do - for try in 0 1 2 3 4 5 6 7 8 9 - do - # Confuse the disk buffering by copying the file each time, so - # always reading a new file. -# cp $TMP/${in_file[${file_num}]} $TMP/cp_${in_file[${file_num}]} - - # Build the command including chunk sizes for all 13 vars. - cmd="./bm_file $h -f 4 -c 0:${d}:${s}:${c0}:${c1}" - for ((v=1; v < 12; v++)) - do - cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" - done - cmd="$cmd $TMP/${in_file[${file_num}]}" - echo "cmd=$cmd" - sudo bash ./clear_cache.sh - if ! ($cmd >> $out1); then - exit 1; - fi - - cmd="./bm_file $h -f 3 -c 0:${d}:${s}:${c0}:${c1}" - for ((v=1; v < 12; v++)) - do - cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" - done - cmd="$cmd $TMP/$d1-2d_${c0}x${c1}.nc4" - echo "cmd=$cmd" - sudo bash ./clear_cache.sh - if ! ($cmd >> $out2); then - exit 1; - fi - - # Remove the copy. Next read will a "new" file. - # rm $TMP/cp_${in_file[${file_num}]} - - # Turn off header next time around. - h= - - # Switch to the next input file of three. - let file_num=$file_num+1 - test $file_num -eq $num_in_files && file_num=0 - done - done -done - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_compression1.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_compression1.sh deleted file mode 100755 index 0a2eb916f05..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_compression1.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh - -# This shell runs a bunch of benchmarks on some specific files -# available at Unidata. If you want to run this shell, you need these -# data files. - -# This script gets and benchmarks against some 2D radar data. - -# $Id: run_bm_radar_2D_compression1.sh,v 1.2 2007/12/30 15:39:13 ed Exp $ - -set -e - -# Radar 2D file. Make sure we have a local disk copy. Not much point -# in benchmarking read and write times over NFS! -TMP=/shecky/data -d1=20070803-2300 -file_num=0 -for t in 1 2 4 -do - file=${d1}_tile${t}-2d.nc3 - in_file[$file_num]=$file - let file_num=$file_num+1 - if ! test -f $TMP/$file; then - echo "getting file: $file" - cp -f /upc/share/testdata/nssl/mosaic2d_nc/tile${t}/$d1.netcdf.gz $TMP - gunzip -f $TMP/$d1.netcdf.gz - cp $d1.netcdf $TMP/$file - fi -done -num_in_files=${#in_file[@]} - -# Copy the 2D rarar file into a netCDF-4 version, with various -# compression settings. -out1=radar_2d_compression.csv -rm -rf $out1 -c0=1001 -c1=500 -h=-h -file_num=0 -for ((s=0; s < 2 ; s++)) -do - for ((d=-1; d <= 9 ; d++)) - do - # Confuse the disk buffering by copying the file each time, so - # always reading a new file. - cp $TMP/${in_file[${file_num}]} $TMP/cp_${in_file[${file_num}]} - - cmd="./bm_file $h -f 3 -d -o $TMP/$d1-2d.nc4 -c 0:${d}:${s}:${c0}:${c1}" - for ((v=1; v < 12; v++)) - do - cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" - done - cmd="$cmd $TMP/cp_${in_file[${file_num}]}" - echo "cmd=$cmd" - if ! ($cmd >> $out1); then - exit 1; - fi - rm $TMP/cp_${in_file[${file_num}]} - h= - let file_num=$file_num+1 - test $file_num -eq $num_in_files && file_num=0 - done -done - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_endianness1.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_endianness1.sh deleted file mode 100755 index 5543768746b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_radar_2D_endianness1.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -# This shell runs a bunch of benchmarks on some specific files -# available at Unidata. If you want to run this shell, you need these -# data files. - -# This script gets and benchmarks against some 2D radar data. - -# $Id: run_bm_radar_2D_endianness1.sh,v 1.1 2008/01/03 16:19:08 ed Exp $ - -set -e - -# Radar 2D file. Make sure we have a local disk copy. Not much point -# in benchmarking read and write times over NFS! -TMP=/shecky/data -d1=20070803-2300 -file_num=0 -for t in 1 2 4 -do - file=${d1}_tile${t}-2d.nc3 - in_file[$file_num]=$file - let file_num=$file_num+1 - if ! test -f $TMP/$file; then - echo "getting file: $file" - cp -f /upc/share/testdata/nssl/mosaic2d_nc/tile${t}/$d1.netcdf.gz $TMP - gunzip -f $TMP/$d1.netcdf.gz - cp $d1.netcdf $TMP/$file - fi -done -num_in_files=${#in_file[@]} - -# Copy the 2D rarar file into a netCDF-4 version, with various -# CHUNKING settings. -out1=radar_2d_endianness.csv -rm -rf $out1 - -# Turn on header (for the first run of bm_file). -h=-h - -# Turn off compression and shuffle filters. -s=0 -d=-1 - -# Set good chunksizes. -c0=501 -c1=1001 -file_num=0 -for ((end=0; end <= 2 ; end++)) -do - # Confuse the disk buffering by copying the file each time, so - # always reading a new file. - cp $TMP/${in_file[${file_num}]} $TMP/cp_${in_file[${file_num}]} - - # Build the command including chunk sizes for all 13 vars. - cmd="./bm_file -e $end $h -f 3 -d -o $TMP/$d1-2d.nc4 -c 0:${d}:${s}:${c0}:${c1}" - for ((v=1; v < 12; v++)) - do - cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}" - done - cmd="$cmd $TMP/cp_${in_file[${file_num}]}" - echo "cmd=$cmd" - if ! ($cmd >> $out1); then - exit 1; - fi - - # Remove the copy. Next read will a "new" file. - rm $TMP/cp_${in_file[${file_num}]} - - # Turn off header next time around. - h= - - # Switch to the next input file of three. - let file_num=$file_num+1 - test $file_num -eq $num_in_files && file_num=0 -done - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test1.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test1.sh deleted file mode 100755 index 61fee6dad60..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test1.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/sh - -# This shell just tests the bm_file program by running it a few times -# on a simple test file. Then it uses ncdum to check that the output -# is what it should be. - -# $Id: run_bm_test1.sh,v 1.13 2008/01/04 15:57:48 ed Exp $ - -set -e -echo "" - -for type_name in floats ints shorts -do - echo "*** Running benchmarking program bm_file for simple ${type_name} test files, 1D to 6D..." - header="-h" - for i in 1 2 3 4 5 6 - do - test $i = 1 && chunksizes="100000" - test $i = 2 && chunksizes="316:316" - test $i = 3 && chunksizes="46:46:46" - test $i = 4 && chunksizes="17:17:17:17" && s="-s 1" - test $i = 5 && chunksizes="10:10:10:10:10" && s="-s 1" - test $i = 6 && chunksizes="6:6:6:6:6:6" && s="-s 1" - ./bm_file -d ${header} ${s} -f 4 -o ${type_name}2_${i}D_3.nc -c 0:0:0:${chunksizes} tst_${type_name}2_${i}D.nc - ../ncdump/ncdump tst_${type_name}2_${i}D.nc > tst_${type_name}2_${i}D.cdl - ../ncdump/ncdump -n tst_${type_name}2_${i}D ${type_name}2_${i}D_3.nc > ${type_name}2_${i}D.cdl - diff tst_${type_name}2_${i}D.cdl ${type_name}2_${i}D.cdl - header= - done - echo '*** SUCCESS!!!' -done - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, no compression..." -./bm_file -d -h -f 3 -o floats_1D_3.nc -c 0:-1:0:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, with compression..." -./bm_file -d -h -f 3 -o floats_1D_3.nc -c 0:1:0:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, with more compression..." -./bm_file -d -h -f 3 -o floats_1D_3.nc -c 0:9:1:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, with endianness set to native..." -./bm_file -e 0 -d -h -f 3 -o floats_1D_3.nc -c 0:9:1:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, with endianness set to little..." -./bm_file -e 1 -d -h -f 3 -o floats_1D_3.nc -c 0:9:1:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program bm_file for simple float file, with endianness set to big..." -./bm_file -e 2 -d -h -f 3 -o floats_1D_3.nc -c 0:9:1:10000 tst_floats_1D.nc -../ncdump/ncdump tst_floats_1D.nc > tst_floats_1D.cdl -../ncdump/ncdump -n tst_floats_1D floats_1D_3.nc > floats_1D.cdl -diff tst_floats_1D.cdl floats_1D.cdl -echo '*** SUCCESS!!!' - -exit 0 \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test2.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test2.sh deleted file mode 100755 index 4bf5317cf6f..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_bm_test2.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# This shell tests non-sequential reads for bm_file.c - -# $Id: run_bm_test2.sh,v 1.3 2007/12/27 03:43:13 ed Exp $ - -set -e -echo "" - -echo "*** Testing the benchmarking program bm_file using start/count/inc..." -./bm_file -h -f 3 -o tst_simple_3.nc -c 0:-1:0:10 -t 0:0 -u 0:1 -r 0:1 tst_simple.nc -../ncdump/ncdump tst_simple.nc > tst_simple.cdl -../ncdump/ncdump -n tst_simple tst_simple_3.nc > tst_simple_3.cdl -diff tst_simple.cdl tst_simple_3.cdl -echo '*** SUCCESS!!!' - -echo "*** Testing the benchmarking program bm_file using start/count/inc with negative increment..." -./bm_file -h -f 3 -o tst_simple_3.nc -c 0:-1:0:10 -t 0:9 -u 0:1 -r 0:-1 tst_simple.nc -../ncdump/ncdump tst_simple.nc > tst_simple.cdl -../ncdump/ncdump -n tst_simple tst_simple_3.nc > tst_simple_3.cdl -diff tst_simple.cdl tst_simple_3.cdl -echo '*** SUCCESS!!!' - -echo "*** Testing the benchmarking program bm_file using start/count/inc with count > 1..." -./bm_file -h -f 3 -o tst_simple_3.nc -c 0:-1:0:10 -t 0:0 -u 0:2 -r 0:2 tst_simple.nc -../ncdump/ncdump tst_simple.nc > tst_simple.cdl -../ncdump/ncdump -n tst_simple tst_simple_3.nc > tst_simple_3.cdl -diff tst_simple.cdl tst_simple_3.cdl -echo '*** SUCCESS!!!' - -echo "*** Testing the benchmarking program bm_file using start/count/inc with uneven count..." -./bm_file -h -f 3 -o tst_simple_3.nc -c 0:-1:0:10 -t 0:0 -u 0:4 -r 0:4 tst_simple.nc -../ncdump/ncdump tst_simple.nc > tst_simple.cdl -../ncdump/ncdump -n tst_simple tst_simple_3.nc > tst_simple_3.cdl -diff tst_simple.cdl tst_simple_3.cdl -echo '*** SUCCESS!!!' - -exit 0 \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_chunk_hdf4.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_chunk_hdf4.sh deleted file mode 100755 index d2da2119753..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_chunk_hdf4.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# Run test_chunk_hdf4 passing ${src_dir} -set -x -CHUNKED=chunked.hdf4 -CONTIG=contiguous.hdf4 - -echo "" -echo "*** Testing hdf4 chunking..." - -if test "x${src_dir}" = "x" ; then -src_dir="." -fi - -# Move the data sets into place -ISDISTCHECK=0 -if test -f ./${CHUNKED} ; then -ISDISTCHECK=0 -else -ISDISTCHECK=1 -cp ${src_dir}/${CHUNKED} . -cp ${src_dir}/${CONTIG} . -fi - -if ./tst_chunk_hdf4 ; then - echo "***SUCCESS!! tst_chunk_hdf4" -else - echo "***FAIL: tst_chunk_hdf4" -fi - -if test "x${ISDISTCHECK}" = "x1" ; then -echo rm -f ./${CHUNKED} ./${CONTIG} -fi - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_get_hdf4_files.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_get_hdf4_files.sh deleted file mode 100755 index 562969bd9f2..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_get_hdf4_files.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# This shell gets files from the netCDF ftp site for testing. - -# $Id: run_get_hdf4_files.sh,v 1.4 2009/07/15 15:16:05 ed Exp $ - -set -e -echo "" -file_list="AMSR_E_L2_Rain_V10_200905312326_A.hdf AMSR_E_L3_DailyLand_V06_20020619.hdf \ - MYD29.A2009152.0000.005.2009153124331.hdf MYD29.A2002185.0000.005.2007160150627.hdf \ - MOD29.A2000055.0005.005.2006267200024.hdf" -echo "Getting HDF4 test files $file_list" - -for f1 in $file_list -do - if ! test -f $f1; then - curl -O "ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/hdf4/$f1.gz" - gunzip $f1.gz - fi -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_get_knmi_files.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_get_knmi_files.sh deleted file mode 100755 index e5c335aad12..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_get_knmi_files.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -set -x - -# This shell gets files from the netCDF ftp site for testing. - -set -e -echo "" -file_list="MSGCPP_CWP_NC3.nc MSGCPP_CWP_NC4.nc" -echo "Getting KNMI test files $file_list" - -for f1 in $file_list -do - if ! test -f $f1; then - wget ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/$f1.gz - gunzip $f1.gz - fi -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_hdf4_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_hdf4_valgrind_tests.sh deleted file mode 100755 index 35746031d14..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_hdf4_valgrind_tests.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# This shell runs the HDF4 tests with valgrind. - -# $Id: run_hdf4_valgrind_tests.sh,v 1.1 2009/07/13 14:53:52 ed Exp $ - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='tst_interops2 ' - -for tst in $list; do - echo "" - echo "Memory testing with $tst:" - valgrind -q --error-exitcode=2 --leak-check=full ./$tst -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_radar_2D.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_radar_2D.sh deleted file mode 100755 index b8741d127eb..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_radar_2D.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# This shell file runs benchmarks on the 2D radar data on parallel platforms. - -# $Id: run_par_bm_radar_2D.sh,v 1.1 2007/12/18 01:16:25 ed Exp $ - -set -e -echo "" -echo "Getting radar 2D data file from Unidata FTP site..." -file=20070803-2300_tile1-2d.nc3 -if ! test -f $file; then - wget ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/$file -fi - -echo "*** Running bm_file for parallel access on $file..." -header="-h" -chunksizes="1501:2001" -for numproc in 1 4 16 - do - mpiexec -n $numproc ./bm_file -p -d ${header} -s 16 -f 4 -o tst_r2d.nc -c 0:-1:0:1501:2001 $file - header= -done -echo '*** SUCCESS!!!' - -exit 0 \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_test.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_test.sh deleted file mode 100755 index c787d3c4036..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_par_bm_test.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# This shell file tests the bm_ile program for parallel I/O. - -# $Id: run_par_bm_test.sh,v 1.5 2007/12/12 18:00:39 ed Exp $ - -set -e -echo "" -for type_name in floats ints shorts -do - echo "*** Running bm_file for parallel access on simple ${type_name} test files, 1D to 6D..." - header="-h" - for ((i=1; i <= 3; i++)) - do - test $i = 1 && chunksizes="100000" - test $i = 2 && chunksizes="316:316" - test $i = 3 && chunksizes="46:46:46" - for numproc in 1 4 16 - do - mpiexec -n $numproc ./bm_file -p -d ${header} -s ${numproc} -f 4 -o p_${type_name}2_${i}D_3.nc -c 0:-1:0:${chunksizes} ${type_name}2_${i}D_3.nc - ../ncdump/ncdump -n tst_${type_name}2_${i}D p_${type_name}2_${i}D_3.nc > p_${type_name}2_${i}D.cdl - diff tst_${type_name}2_${i}D.cdl p_${type_name}2_${i}D.cdl &> /dev/null - header= - done - done - echo '*** SUCCESS!!!' -done - -exit 0 \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_par_test.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_par_test.sh deleted file mode 100755 index 196361e7d18..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_par_test.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -# This shell runs some parallel I/O tests. - -set -e -echo -echo "Testing MPI parallel I/O with various other mode flags..." -mpiexec -n 1 ./tst_mode -echo -echo "Testing MPI parallel I/O without netCDF..." -mpiexec -n 4 ./tst_mpi_parallel -echo -echo "Testing very simple parallel I/O with 4 processors..." -mpiexec -n 4 ./tst_parallel -echo -echo "Testing simple parallel I/O with 16 processors..." -mpiexec -n 16 ./tst_parallel3 -echo -echo "num_proc time(s) write_rate(B/s)" -mpiexec -n 1 ./tst_parallel4 -mpiexec -n 2 ./tst_parallel4 -mpiexec -n 4 ./tst_parallel4 -mpiexec -n 8 ./tst_parallel4 - -#mpiexec -n 16 ./tst_parallel4 -#mpiexec -n 32 ./tst_parallel4 -#mpiexec -n 64 ./tst_parallel4 -echo -echo "Parallel Performance Test for NASA" -mpiexec -n 4 ./tst_nc4perf - -echo -echo "Parallel I/O test for Collective I/O, contributed by HDF Group." -mpiexec -n 1 ./tst_simplerw_coll_r -mpiexec -n 2 ./tst_simplerw_coll_r diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_tst_chunks.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_tst_chunks.sh deleted file mode 100755 index ef1a43696e8..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_tst_chunks.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -# This shell just tests the tst_chunks3 program by running it a few -# times to generate a simple test file. Then it uses ncdump -s to -# check that the output is what it should be. - -# $Id: run_tst_chunks3.sh,v 1.2 2009/02/24 01:49:12 russ Exp $ - -set -e -echo "" - -echo "*** Running benchmarking program tst_chunks3 for tiny test file" -compress_level=1 -dim1=6 -chunk1=2 -dim2=12 -chunk2=3 -dim3=4 -chunk3=1 -./tst_chunks3 $compress_level $dim1 $chunk1 $dim2 $chunk2 $dim3 $chunk3 -../ncdump/ncdump -n tst_chunks -s tst_chunks3.nc > tst_chunks3.cdl -diff tst_chunks3.cdl ref_chunks1.cdl -echo '*** SUCCESS!!!' - -echo "" -echo "*** Testing the benchmarking program tst_chunks3 for larger variables ..." -compress_level=1 -dim1=32 -chunk1=8 -dim2=90 -chunk2=10 -dim3=91 -chunk3=13 -cachesize=10000000 -cachehash=10000 -cachepre=0.0 -./tst_chunks3 $compress_level $dim1 $chunk1 $dim2 $chunk2 $dim3 $chunk3 $cachesize $cachehash $cachepre -../ncdump/ncdump -n tst_chunks -s -h tst_chunks3.nc > tst_chunks3.cdl -diff tst_chunks3.cdl ref_chunks2.cdl -echo '*** SUCCESS!!!' - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests.sh deleted file mode 100755 index 9a44fd2d6b9..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars '\ -'tst_varms tst_unlim_vars tst_converts tst_converts2 tst_grps '\ -'tst_compounds tst_compounds2 tst_compounds3 tst_opaques tst_strings '\ -'tst_strings2 tst_interops tst_interops4 tst_interops5 tst_interops6 '\ -'tst_coords tst_coords2 tst_coords3 tst_vars3 tst_chunks '\ -'tst_utf8 tst_fills tst_fills2 tst_fillbug tst_xplatform '\ -'tst_h_atts2 tst_endian_fill tst_atts' - -# These don't work yet: tst_grps2 tst_xplatform2 tst_enums - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests2.sh b/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests2.sh deleted file mode 100755 index 796ea95f858..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/run_valgrind_tests2.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -# $Id: run_valgrind_tests.sh,v 1.9 2010/01/26 20:24:18 ed Exp $ - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list="t_type tst_camrun tst_vl tst_v2 tst_vars2 \ -tst_atts2 tst_files tst_atts" - -for tst in $list; do - echo "" - echo "Memory testing with $tst:" - valgrind -q --error-exitcode=2 --leak-check=full ./$tst -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_ar5.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_ar5.c deleted file mode 100644 index 18a06f56157..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_ar5.c +++ /dev/null @@ -1,99 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - This program does some benchmarking of netCDF files for the AR-5 - data. -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" -#include -#include -#include /* Extra high precision time info. */ -#include <../ncdump/nciter.h> - -#define MILLION 1000000 -#define MAX_LEN 30 -#define TMP_FILE_NAME "tst_files2_tmp.out" - -/* This function uses the ps command to find the amount of memory in -use by the process. From the ps man page: - -size SZ approximate amount of swap space that would be required if - the process were to dirty all writable pages and then be - swapped out. This number is very rough! -*/ -void -get_mem_used1(int *mem_used) -{ - char cmd[NC_MAX_NAME + 1]; - char blob[MAX_LEN + 1] = ""; - FILE *fp; - int num_char; - - /* Run the ps command for this process, putting output (one number) - * into file TMP_FILE_NAME. */ - sprintf(cmd, "ps -o size= %d > %s", getpid(), TMP_FILE_NAME); - system(cmd); - - /* Read the results and delete temp file. */ - if (!(fp = fopen(TMP_FILE_NAME, "r"))) exit; - num_char = fread(blob, MAX_LEN, 1, fp); - sscanf(blob, "%d", mem_used); - fclose(fp); - unlink(TMP_FILE_NAME); -} - -int -main(int argc, char **argv) -{ - -#define BUFSIZE 1000000 /* access data in megabyte sized pieces */ -#define THETAU_FILE "/machine/downloads/AR5_sample_data/thetao_O1.SRESA1B_2.CCSM.ocnm.2000-01_cat_2099-12.nc" -#define NDIMS_DATA 4 - printf("\n*** Running some AR-5 benchmarks.\n"); - printf("*** testing various chunksizes for thetau file...\n"); - { - int ncid, ncid_out; - /*char var_buf[BUFSIZE];*/ /* buffer for variable data */ -/* nciter_t iter; */ /* opaque structure for iteration status */ -/* size_t start[NDIMS_DATA]; - size_t count[NDIMS_DATA];*/ - /*float *data = (float *)var_buf; */ - char file_out[NC_MAX_NAME + 1]; - /*int ndims, nvars, natts, unlimdimid;*/ - size_t cs[NDIMS_DATA] = {120, 4, 40, 32}; - -/* /\* Open input. *\/ */ -/* if (nc_open(THETAU_FILE, NC_NOWRITE, &ncid)) ERR; */ - -/* /\* Create output file. *\/ */ -/* sprintf(file_out, "thetau_%d_%d_%d_%d.nc", (int)cs[0], */ -/* (int)cs[1], (int)cs[2], (int)cs[3]); */ -/* if (nc_create(file_out, NC_NOWRITE, &ncid_out)) ERR; */ - -/* /\* Copy the easy ones. *\/ */ -/* /\* if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; */ -/* if (ndims != 5 || nvars != 9 || natts != 8 || unlimdimid != 0) ERR;*\/ */ - -/* /\* /\\* Copy the main data payload with Russ's new nciters. *\\/ *\/ */ -/* /\* varid = 8; *\/ */ -/* /\* if (nc_get_iter(ncid, varid, BUFSIZE, &iter)) ERR; *\/ */ -/* /\* while((nvals = nc_next_iter(&iter, start, count)) > 0) *\/ */ -/* /\* { *\/ */ -/* /\* /\\* read in a block of data *\\/ *\/ */ -/* /\* if (nc_get_vara_double(ncid, varid, start, count, data)) ERR; *\/ */ - -/* /\* /\\* now write the changed data back out *\\/ *\/ */ -/* /\* if (nc_out_vara_double(ncid, varid, start, count, data)) ERR; *\/ */ -/* /\* } *\/ */ -/* /\* if (nvals < 0) ERR; *\/ */ - -/* if (nc_close(ncid)) ERR; */ -/* if (nc_close(ncid_out)) ERR; */ - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_atts.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_atts.c deleted file mode 100644 index 76ae57dfb39..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_atts.c +++ /dev/null @@ -1,105 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. - See COPYRIGHT file for conditions of use. - - This is a very simple example which writes a netCDF file with - Unicode names encoded with UTF-8. It is the NETCDF3 equivalent - of tst_unicode.c - - $Id$ -*/ - -#include -#include -#include -#include "err_macros.h" -#include -#include - -/* The data file we will create. */ -#define FILE_NAME "tst_atts.nc" - -int -main(int argc, char **argv) -{ - printf("\n*** Testing netCDF-4 attributes.\n"); - printf("*** testing attribute renaming for a global attribute..."); - { -#define OLD_NAME "Constantinople" -#define NEW_NAME "Istanbul" -#define CONTENTS "Lots of people!" - - int ncid, attid; - char *data_in; - - if (!(data_in = malloc(strlen(CONTENTS) + 1))) ERR; - - /* Create a file with an att. */ - if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR; - if (nc_put_att_text(ncid, NC_GLOBAL, OLD_NAME, strlen(CONTENTS), - CONTENTS)) ERR; - - /* Rename the att. */ - if (nc_rename_att(ncid, NC_GLOBAL, OLD_NAME, NEW_NAME)) ERR; - - /* Check the file. */ - if (nc_inq_attid(ncid, NC_GLOBAL, NEW_NAME, &attid)) ERR; - if (attid != 0) ERR; - if (nc_get_att_text(ncid, NC_GLOBAL, NEW_NAME, data_in)) ERR; - if (strncmp(CONTENTS, data_in, strlen(CONTENTS))) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - if (nc_inq_attid(ncid, NC_GLOBAL, NEW_NAME, &attid)) ERR; - if (attid != 0) ERR; - if (nc_get_att_text(ncid, NC_GLOBAL, NEW_NAME, data_in)) ERR; - if (strncmp(CONTENTS, data_in, strlen(CONTENTS))) ERR; - if (nc_close(ncid)) ERR; - - free(data_in); - } - SUMMARIZE_ERR; - printf("*** testing attribute renaming for a variable attribute..."); - { -#define VAR_NAME "var_name" -#define OLD_NAME1 "Constantinople" -#define NEW_NAME1 "Istanbul____________" -#define CONTENTS1 "Lots of people!" - - int ncid, attid, varid; - char *data_in; - - if (!(data_in = malloc(strlen(CONTENTS1) + 1))) ERR; - - /* Create a file with an att. */ - if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_INT, 0, NULL, &varid)) ERR; - if (nc_put_att_text(ncid, varid, OLD_NAME1, strlen(CONTENTS1), - CONTENTS1)) ERR; - - /* Rename the att. */ - if (nc_rename_att(ncid, varid, OLD_NAME1, NEW_NAME1)) ERR; - - /* Check the file. */ - if (nc_inq_attid(ncid, varid, NEW_NAME1, &attid)) ERR; - if (attid != 0) ERR; - if (nc_get_att_text(ncid, varid, NEW_NAME1, data_in)) ERR; - if (strncmp(CONTENTS1, data_in, strlen(CONTENTS1))) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - if (nc_inq_attid(ncid, varid, NEW_NAME1, &attid)) ERR; - if (attid != 0) ERR; - if (nc_get_att_text(ncid, varid, NEW_NAME1, data_in)) ERR; - if (strncmp(CONTENTS1, data_in, strlen(CONTENTS1))) ERR; - if (nc_close(ncid)) ERR; - - free(data_in); - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_chunk_hdf4.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_chunk_hdf4.c deleted file mode 100644 index 137f0d822d2..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_chunk_hdf4.c +++ /dev/null @@ -1,92 +0,0 @@ -/* This is part of the netCDF package. Copyright 2005-2011, - University Corporation for Atmospheric Research/Unidata. See - COPYRIGHT file for conditions of use. - - Test that NetCDF-4 can read HDF4 files. -*/ -#include -#include -#include "err_macros.h" -#include -#include -#include - -#define CHUNKEDFILE "chunked.hdf4" -#define CHUNKEDVAR "LandWater" - -#define CONTIGFILE "contiguous.hdf4" -#define CONTIGVAR "pres" - -#define LAT_LEN 3 -#define LON_LEN 2 -#define DIMS_2 2 - -static size_t EXPECTED_CHUNKSIZES[2] = {1,1200}; - -int -main(int argc, char **argv) -{ - int ncid; - int varid; - int rank; - int d; - int storage; - size_t chunksizes[NC_MAX_VAR_DIMS]; - const char* srcdir = "."; - - printf("\n*** Testing HDF4/NetCDF-4 chunking API: chunked...\n"); - { - - /* Open with netCDF */ - if (nc_open(CHUNKEDFILE, NC_NOWRITE, &ncid)) ERR; - - /* Get a variable id */ - if(nc_inq_varid(ncid,CHUNKEDVAR,&varid)) ERR; - - /* get rank */ - if(nc_inq_varndims(ncid,varid,&rank)) ERR; - - /* get chunk info */ - memset(chunksizes,0,sizeof(chunksizes)); - if(nc_inq_var_chunking(ncid,varid,&storage,chunksizes)) ERR; - - if(storage == NC_CONTIGUOUS) { - fprintf(stderr,"nc_inq_var_chunking did not return CHUNKED\n"); - ERR; - } - - for(d=0;d -#include "err_macros.h" - -#define FILE_NAME "tst_chunks.nc" -#define NDIMS1 1 -#define D_SMALL "small_dim" -#define D_SMALL_LEN 16 -#define D_MEDIUM "medium_dim" -#define D_MEDIUM_LEN 65546 -#define D_LARGE "large_dim" -#define D_LARGE_LEN 1048586 -#define V_SMALL "small_var" -#define V_MEDIUM "medium_var" -#define V_LARGE "large_var" - -int -main(int argc, char **argv) -{ - - printf("\n*** Testing netcdf-4 variable chunking.\n"); - printf("**** testing that fixed vars with filter end up being chunked, with good sizes..."); - { - - int ncid; - int nvars, ndims, ngatts, unlimdimid; - int contig; - int ndims_in, natts_in, dimids_in; - int small_dimid, medium_dimid, large_dimid; - int small_varid, medium_varid, large_varid; - char var_name_in[NC_MAX_NAME + 1]; - size_t chunksize_in[NDIMS1]; - nc_type xtype_in; - - /* Create a netcdf-4 file with three dimensions. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D_SMALL, D_SMALL_LEN, &small_dimid)) ERR; - if (nc_def_dim(ncid, D_MEDIUM, D_MEDIUM_LEN, &medium_dimid)) ERR; - if (nc_def_dim(ncid, D_LARGE, D_LARGE_LEN, &large_dimid)) ERR; - - /* Add three vars, with filters to force chunking. */ - if (nc_def_var(ncid, V_SMALL, NC_INT64, NDIMS1, &small_dimid, &small_varid)) ERR; - if (nc_def_var_deflate(ncid, small_varid, 0, 1, 4)) ERR; - if (nc_def_var(ncid, V_MEDIUM, NC_INT64, NDIMS1, &medium_dimid, &medium_varid)) ERR; - if (nc_def_var_deflate(ncid, medium_varid, 1, 0, 0)) ERR; - if (nc_def_var(ncid, V_LARGE, NC_INT64, NDIMS1, &large_dimid, &large_varid)) ERR; - if (nc_def_var_fletcher32(ncid, large_varid, 1)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 3 || ndims != 3 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, &dimids_in, &natts_in)) ERR; - if (strcmp(var_name_in, V_SMALL) || xtype_in != NC_INT64 || ndims_in != 1 || - natts_in != 0) ERR; - - /* Make sure chunking sizes are what we expect. */ - if (nc_inq_var_chunking(ncid, small_varid, &contig, chunksize_in)) ERR; - if (contig || chunksize_in[0] != D_SMALL_LEN) ERR; - if (nc_inq_var_chunking(ncid, medium_varid, &contig, chunksize_in)) ERR; - if (contig || chunksize_in[0] * sizeof(long long) > DEFAULT_CHUNK_SIZE) ERR; - if (nc_inq_var_chunking(ncid, large_varid, &contig, chunksize_in)) ERR; - if (contig || chunksize_in[0] * sizeof(long long) > DEFAULT_CHUNK_SIZE) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing default chunksizes..."); - { - int nvars, ndims, ngatts, unlimdimid; - int contig; -#define NUM_DIM 4 -#define NUM_TYPE 2 - int ncid; - int dim_len[NUM_DIM] = {NC_UNLIMITED, 100, 1000, 2000}; - size_t chunksize_in[NUM_DIM]; - int type_id[NUM_TYPE] = {NC_BYTE, NC_INT}; - int dimid[NUM_DIM], varid[NUM_TYPE]; - char dim_name[NC_MAX_NAME + 1], var_name[NC_MAX_NAME + 1]; - int d, t; - - /* Create a netcdf-4 file with NUM_DIM dimensions. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - for (d = 0; d < NUM_DIM; d++) - { - sprintf(dim_name, "dim_%d", dim_len[d]); -#ifdef PRINT_DEFAULT_CHUNKSIZE_TABLE - printf("creating dim %s\n", dim_name); -#endif - if (nc_def_dim(ncid, dim_name, dim_len[d], &dimid[d])) ERR; - } - - for (t = 0; t < NUM_TYPE; t++) - { - sprintf(var_name, "var_%d", type_id[t]); - if (nc_def_var(ncid, var_name, type_id[t], NUM_DIM, dimid, &varid[t])) ERR; - if (nc_inq_var_chunking(ncid, varid[t], &contig, chunksize_in)) ERR; -#ifdef PRINT_DEFAULT_CHUNKSIZE_TABLE - printf("chunksizes for %d x %d x %d x %d var: %d x %d x %d x %d (=%d)\n", - dim_len[0], dim_len[1], dim_len[2], dim_len[3], - (int)chunksize_in[0], (int)chunksize_in[1], (int)chunksize_in[2], - (int)chunksize_in[3], - (int)(chunksize_in[0] * chunksize_in[1] * chunksize_in[2] * chunksize_in[3])); -#endif - } - - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != NUM_TYPE || ndims != NUM_DIM || ngatts != 0 || unlimdimid != 0) ERR; - - for (t = 0; t < NUM_TYPE; t++) - { - sprintf(var_name, "var_%d", type_id[t]); - if (nc_inq_var_chunking(ncid, varid[t], &contig, chunksize_in)) ERR; - if (contig) ERR; -#ifdef PRINT_DEFAULT_CHUNKSIZE_TABLE - printf("chunksizes for %d x %d x %d x %d var: %d x %d x %d x %d (=%d)\n", - dim_len[0], dim_len[1], dim_len[2], dim_len[3], - (int)chunksize_in[0], (int)chunksize_in[1], (int)chunksize_in[2], - (int)chunksize_in[3], - (int)(chunksize_in[0] * chunksize_in[1] * chunksize_in[2] * chunksize_in[3])); -#endif - } - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing that chunking works on classic mode files..."); - { -#define D_SMALL_LEN2 66 - int ncid; - int nvars, ndims, ngatts, unlimdimid; - int contig; - int ndims_in, natts_in, dimids_in; - int small_dimid, medium_dimid, large_dimid; - int small_varid, medium_varid, large_varid; - char var_name_in[NC_MAX_NAME + 1]; - size_t chunks[1], chunksize_in; - nc_type xtype_in; - - /* Create a netcdf-4 file with three dimensions. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D_SMALL, D_SMALL_LEN2, &small_dimid)) ERR; - if (nc_def_dim(ncid, D_MEDIUM, D_MEDIUM_LEN, &medium_dimid)) ERR; - if (nc_def_dim(ncid, D_LARGE, D_LARGE_LEN, &large_dimid)) ERR; - - /* Add three vars. */ - if (nc_def_var(ncid, V_SMALL, NC_INT64, NDIMS1, &small_dimid, &small_varid)) ERR; - if (nc_def_var_chunking(ncid, small_varid, 1, NULL)) ERR; - - if (nc_def_var(ncid, V_MEDIUM, NC_INT64, NDIMS1, &medium_dimid, &medium_varid)) ERR; - chunks[0] = D_MEDIUM_LEN / 100; - if (nc_def_var_chunking(ncid, medium_varid, 0, chunks)) ERR; - if (nc_def_var_deflate(ncid, medium_varid, 1, 0, 0)) ERR; - - if (nc_def_var(ncid, V_LARGE, NC_INT64, NDIMS1, &large_dimid, &large_varid)) ERR; - chunks[0] = D_LARGE_LEN / 1000; - if (nc_def_var_chunking(ncid, large_varid, 0, chunks)) ERR; - if (nc_def_var_fletcher32(ncid, large_varid, 1)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 3 || ndims != 3 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, &dimids_in, &natts_in)) ERR; - if (strcmp(var_name_in, V_SMALL) || xtype_in != NC_INT64 || ndims_in != 1 || - natts_in != 0) ERR; - - /* Make sure chunking settings are what we expect. */ - if (nc_inq_var_chunking(ncid, small_varid, &contig, &chunksize_in)) ERR; - if (!contig) ERR; - if (nc_inq_var_chunking(ncid, medium_varid, &contig, &chunksize_in)) ERR; - if (contig || chunksize_in != D_MEDIUM_LEN / 100) ERR; - if (nc_inq_var_chunking(ncid, large_varid, &contig, &chunksize_in)) ERR; - if (contig || chunksize_in != D_LARGE_LEN / 1000) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing many chunking and contiguous variables..."); - { -#define NDIMS_3 3 -#define NUM_PLANS 30 -#define D_SNEAKINESS "sneakiness" -#define D_SNEAKINESS_LEN 5 -#define D_CLEVERNESS "clevernesss" -#define D_CLEVERNESS_LEN 3 -#define D_EFFECTIVENESS "effectiveness" -#define D_EFFECTIVENESS_LEN 2 - - int ncid, dimids[NDIMS_3], varid[NUM_PLANS]; - size_t chunksize[NDIMS_3] = {D_SNEAKINESS_LEN, D_CLEVERNESS_LEN, - D_EFFECTIVENESS_LEN}; - char plan_name[NC_MAX_NAME + 1]; - int contig; - size_t chunksize_in[NDIMS_3]; - int i, j; - - /* Create a netcdf-4 file with three dimensions. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D_SNEAKINESS, D_SNEAKINESS_LEN, &dimids[0])) ERR; - if (nc_def_dim(ncid, D_CLEVERNESS, D_CLEVERNESS_LEN, &dimids[1])) ERR; - if (nc_def_dim(ncid, D_EFFECTIVENESS, D_EFFECTIVENESS_LEN, &dimids[2])) ERR; - - /* Oh that tricky Cardinal Richelieu, he had many plans! */ - for (i = 0; i < NUM_PLANS; i++) - { - sprintf(plan_name, "Richelieu_sneaky_plan_%d", i); - if (nc_def_var(ncid, plan_name, i % (NC_STRING - 1) + 1, NDIMS_3, - dimids, &varid[i])) ERR; - if (i % 2 && nc_def_var_chunking(ncid, varid[i], 0, chunksize)) ERR; - } - - /* Check the chunking. */ - for (i = 0; i < NUM_PLANS; i++) - { - if (nc_inq_var_chunking(ncid, varid[i], &contig, chunksize_in)) ERR; - if (i % 2) - { - for (j = 0; j < NDIMS_3; j++) - if (chunksize_in[j] != chunksize[j]) ERR; - } - else - if (!contig) ERR; - } - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - /* Check the chunking. */ - for (i = 0; i < NUM_PLANS; i++) - { - if (nc_inq_var_chunking(ncid, varid[i], &contig, chunksize_in)) ERR; - if (i % 2) - { - for (j = 0; j < NDIMS_3; j++) - if (chunksize_in[j] != chunksize[j]) ERR; - } - else - if (!contig) ERR; - } - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing that too large chunksizes fail..."); - { -#define D_SMALL_LEN2 66 - int stat = NC_NOERR; - int ncid; - int nvars, ndims, ngatts, unlimdimid; - int contig; - int ndims_in, natts_in, dimids_in; - int small_dimid, medium_dimid, large_dimid; - int small_varid; - char var_name_in[NC_MAX_NAME + 1]; - size_t chunks[1], chunksize_in; - nc_type xtype_in; - - /* Create a netcdf-4 file with three dimensions. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D_SMALL, D_SMALL_LEN2, &small_dimid)) ERR; - - /* Add one var. */ - if (nc_def_var(ncid, V_SMALL, NC_INT64, NDIMS1, &small_dimid, &small_varid)) ERR; - - /* Attempt to set too large chunksizes */ - chunks[0] = D_SMALL_LEN2 + 1; - stat = nc_def_var_chunking(ncid, small_varid, NC_CHUNKED, chunks); - if(stat != NC_EBADCHUNK) { - printf("Return code is '%s', expected NC_BADCHUNK",nc_strerror(stat)); - ERR; - } - /* try agains with proper chunksize */ - chunks[0] = D_SMALL_LEN2; - stat = nc_def_var_chunking(ncid, small_varid, NC_CHUNKED, chunks); - if(stat != NC_NOERR) { - printf("Return code is '%s', expected NC_NOERR",nc_strerror(stat)); - ERR; - } - if (nc_abort(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_converts.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_converts.c deleted file mode 100644 index e0e3deb464c..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_converts.c +++ /dev/null @@ -1,156 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test data conversions and fill value handling. - - $Id: tst_converts.c,v 1.16 2008/10/20 01:48:09 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" - -#define FILE_NAME "tst_converts.nc" -#define ATT1_NAME "att1" -#define ATT2_NAME "att2" -#define DIM1_NAME "dim1" -#define DIM1_LEN 3 -#define DIM2_NAME "dim2" -#define DIM2_LEN 15 -#define VAR1_NAME "var1" -#define VAR2_NAME "var2" - -/* This is handy for print statements. */ -static char *format_name[] = {"", "classic", "64-bit offset", "netCDF-4", - "netCDF-4 classic model"}; - -int check_file(int format, unsigned char *uchar_out); -int create_file(int format, unsigned char *uchar_out); - -int -main(int argc, char **argv) -{ - unsigned char uchar_out[DIM1_LEN] = {0, 128, 255}; - int format; - - printf("\n*** Testing netcdf data conversion.\n"); - - for (format = 1; format < 5; format++) - { - printf("*** Testing conversion in netCDF %s files... ", format_name[format]); - create_file(format, uchar_out); - check_file(format, uchar_out); - SUMMARIZE_ERR; - } - - FINAL_RESULTS; -} - -/* Create a test file with one var of type NC_BYTE. */ -int -create_file(int format, unsigned char *uchar_out) -{ - int ncid, varid, cflags=0, dimids[1]; - int retval; - - if (format == NC_FORMAT_64BIT_OFFSET) - cflags |= NC_64BIT_OFFSET; - else if (format == NC_FORMAT_CDF5) - cflags |= NC_CDF5; - else if (format == NC_FORMAT_NETCDF4_CLASSIC) - { - cflags |= (NC_NETCDF4|NC_CLASSIC_MODEL); - } - else if (format == NC_FORMAT_NETCDF4) - cflags |= NC_NETCDF4; - - if (nc_create(FILE_NAME, cflags, &ncid)) ERR; - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_BYTE, 1, dimids, &varid)) ERR; - if (nc_enddef(ncid)) ERR; - retval = nc_put_var_uchar(ncid, varid, uchar_out); - if ((format != NC_FORMAT_NETCDF4) && retval) ERR; - if ((format == NC_FORMAT_NETCDF4) && (retval != NC_ERANGE)) ERR; - if (nc_close(ncid)) ERR; - return NC_NOERR; -} - -int -check_file(int format, unsigned char *uchar_out) -{ - - int ncid; - int ndims, natts; - int dimids_var[1], var_type; - char var_name[NC_MAX_NAME+1]; - unsigned char uchar_in[DIM1_LEN]; - signed char char_in[DIM1_LEN]; - unsigned short ushort_in[DIM1_LEN]; - short short_in[DIM1_LEN]; - unsigned int uint_in[DIM1_LEN]; - int int_in[DIM1_LEN]; - long long int64_in[DIM1_LEN]; - unsigned long long uint64_in[DIM1_LEN]; - int i, res; - - /* Read it back in, and check conversions. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq_var(ncid, 0, var_name, &var_type, &ndims, dimids_var, &natts)) ERR; - if (strcmp(var_name, VAR1_NAME) || natts !=0 || ndims != 1 || - dimids_var[0] != 0 || var_type != NC_BYTE) ERR; - - /* This is actually an NC_BYTE, with some negatives, so this should - * generate a range error for netcdf-4, but not for netcdf-3, - * because range errors are not generated for byte type - * conversions. */ - res = nc_get_var_uchar(ncid, 0, uchar_in); - if (format == NC_FORMAT_NETCDF4) - { - if (res != NC_ERANGE) ERR; - } - else if (res) ERR; - - for (i=0; i -#include "err_macros.h" -#include "netcdf.h" - -#define FILE_NAME "tst_enums.nc" -#define DIM_LEN 4 -#define NUM_MEMBERS 4 -#define DIM_NAME "dim" -#define BASE_SIZE 20 -#define VAR_NAME "Advice" -#define TYPE_NAME "Mysterous_Word" - -int -main(int argc, char **argv) -{ - int ncid; - nc_type typeid; - int i; - char name_in[NC_MAX_NAME+1]; - int ntypes, typeids[1] = {0}; - nc_type base_nc_type, base_nc_type_in; - size_t nfields_in, num_members, base_size_in; - int class_in; - - printf("\n*** Testing netcdf-4 enum type.\n"); - printf("*** testing creation of enum type..."); - { - int value_in; - /* Can't use the same name twice! */ - char member_name[NUM_MEMBERS][NC_MAX_NAME + 1] = {"Mene1", "Mene2", - "Tekel", "Upharsin"}; - int member_value[NUM_MEMBERS] = {0, 99, 81232, 12}; - - /* Create a file. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* Create an enum type. */ - if (nc_def_enum(ncid, NC_INT, TYPE_NAME, &typeid)) ERR; - for (i = 0; i < NUM_MEMBERS; i++) - if (nc_insert_enum(ncid, typeid, member_name[i], - &member_value[i])) ERR; - - /* Check it out. */ - if (nc_inq_user_type(ncid, typeid, name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int) || - base_nc_type_in != NC_INT || nfields_in != NUM_MEMBERS || class_in != NC_ENUM) ERR; - if (nc_inq_enum(ncid, typeid, name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_nc_type != NC_INT || - num_members != NUM_MEMBERS) ERR; - for (i = 0; i < NUM_MEMBERS; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, member_name[i]) || value_in != member_value[i]) ERR; - if (nc_inq_enum_ident(ncid, typeid, member_value[i], name_in)) ERR; - if (strcmp(name_in, member_name[i])) ERR; - } - - /* Write the file. */ - if (nc_close(ncid)) ERR; - - /* Reopen the file. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Get type info. */ - if (nc_inq_typeids(ncid, &ntypes, typeids)) ERR; - if (ntypes != 1 || !typeids[0]) ERR; - - /* Check it out. */ - if (nc_inq_user_type(ncid, typeids[0], name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int) || - base_nc_type_in != NC_INT || nfields_in != NUM_MEMBERS || class_in != NC_ENUM) ERR; - if (nc_inq_type(ncid, typeids[0], name_in, &base_size_in)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_size_in != sizeof(int)) ERR; - if (nc_inq_enum(ncid, typeids[0], name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, TYPE_NAME) || base_nc_type != NC_INT || num_members != NUM_MEMBERS) ERR; - for (i = 0; i < NUM_MEMBERS; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, member_name[i]) || value_in != member_value[i]) ERR; - if (nc_inq_enum_ident(ncid, typeid, member_value[i], name_in)) ERR; - if (strcmp(name_in, member_name[i])) ERR; - } - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - -#define NUM_BRADYS 9 -#define BRADYS "Bradys" -#define BRADY_DIM_LEN 3 -#define ATT_NAME "brady_attribute" - - printf("*** testing enum attribute..."); - { - char brady_name[NUM_BRADYS][NC_MAX_NAME + 1] = {"Mike", "Carol", "Greg", "Marsha", - "Peter", "Jan", "Bobby", "Whats-her-face", - "Alice"}; - unsigned char brady_value[NUM_BRADYS] = {8, 7, 6 , 5, 4, 3, 2, 1, 0}; - unsigned char data[BRADY_DIM_LEN] = {0, 4, 8}; - unsigned char value_in; - - /* Create a file. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* Create an enum type based on unsigned bytes. */ - if (nc_def_enum(ncid, NC_UBYTE, BRADYS, &typeid)) ERR; - for (i = 0; i < NUM_BRADYS; i++) - if (nc_insert_enum(ncid, typeid, brady_name[i], - &brady_value[i])) ERR; - - /* Check it out. */ - if (nc_inq_user_type(ncid, typeid, name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, BRADYS) || base_size_in != 1 || - base_nc_type_in != NC_UBYTE || nfields_in != NUM_BRADYS || class_in != NC_ENUM) ERR; - if (nc_inq_enum(ncid, typeid, name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, BRADYS) || base_nc_type != NC_UBYTE || base_size_in != 1 || - num_members != NUM_BRADYS) ERR; - for (i = 0; i < NUM_BRADYS; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, brady_name[i]) || value_in != brady_value[i]) ERR; - if (nc_inq_enum_ident(ncid, typeid, brady_value[i], name_in)) ERR; - if (strcmp(name_in, brady_name[i])) ERR; - } - - /* Write an att of this enum type. */ - if (nc_put_att(ncid, NC_GLOBAL, ATT_NAME, typeid, BRADY_DIM_LEN, data)) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - - /* Reopen. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check it out. */ - if (nc_inq_user_type(ncid, typeid, name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, BRADYS) || base_size_in != 1 || - base_nc_type_in != NC_UBYTE || nfields_in != NUM_BRADYS || class_in != NC_ENUM) ERR; - if (nc_inq_enum(ncid, typeid, name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, BRADYS) || base_nc_type != NC_UBYTE || base_size_in != 1 || - num_members != NUM_BRADYS) ERR; - for (i = 0; i < NUM_BRADYS; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, brady_name[i]) || value_in != brady_value[i]) ERR; - if (nc_inq_enum_ident(ncid, typeid, brady_value[i], name_in)) ERR; - if (strcmp(name_in, brady_name[i])) ERR; - } - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - -#define TYPE2_NAME "cloud_type" -#define DIM2_NAME "station" -#define DIM2_LEN 5 -#define VAR2_NAME "primary_cloud" -#define VAR2_RANK 1 -#define ATT2_NAME "_FillValue" -#define ATT2_LEN 1 - - printf("*** testing enum fill value ..."); - { - int dimid, varid; - size_t num_members_in; - int class_in; - unsigned char value_in; - unsigned char att_value_in; - - enum clouds { /* a C enumeration */ - CLEAR=0, - CUMULONIMBUS=1, - STRATUS=2, - STRATOCUMULUS=3, - CUMULUS=4, - ALTOSTRATUS=5, - NIMBOSTRATUS=6, - ALTOCUMULUS=7, - CIRROSTRATUS=8, - CIRROCUMULUS=9, - CIRRUS=10, - MISSING=255}; - - struct { - char *name; - unsigned char value; - } cloud_types[] = { - {"Clear", CLEAR}, - {"Cumulonimbus", CUMULONIMBUS}, - {"Stratus", STRATUS}, - {"Stratocumulus", STRATOCUMULUS}, - {"Cumulus", CUMULUS}, - {"Altostratus", ALTOSTRATUS}, - {"Nimbostratus", NIMBOSTRATUS}, - {"Altocumulus", ALTOCUMULUS}, - {"Cirrostratus", CIRROSTRATUS}, - {"Cirrocumulus", CIRROCUMULUS}, - {"Cirrus", CIRRUS}, - {"Missing", MISSING} - }; - int var_dims[VAR2_RANK]; - unsigned char att_val; - unsigned char cloud_data[DIM2_LEN] = { - CLEAR, STRATUS, CLEAR, CUMULONIMBUS, MISSING}; - unsigned char cloud_data_in[DIM2_LEN]; - - if (nc_create(FILE_NAME, NC_CLOBBER | NC_NETCDF4, &ncid)) ERR; - - /* Create an enum type. */ - if (nc_def_enum(ncid, NC_UBYTE, TYPE2_NAME, &typeid)) ERR; - num_members = (sizeof cloud_types) / (sizeof cloud_types[0]); - for (i = 0; i < num_members; i++) - if (nc_insert_enum(ncid, typeid, cloud_types[i].name, - &cloud_types[i].value)) ERR; - - /* Declare a station dimension */ - if (nc_def_dim(ncid, DIM2_NAME, DIM2_LEN, &dimid)) ERR; - /* Declare a variable of the enum type */ - var_dims[0] = dimid; - if (nc_def_var(ncid, VAR2_NAME, typeid, VAR2_RANK, var_dims, &varid)) ERR; - /* Create and write a variable attribute of the enum type */ - att_val = MISSING; - if (nc_put_att(ncid, varid, ATT2_NAME, typeid, ATT2_LEN, &att_val)) ERR; - if (nc_enddef(ncid)) ERR; - /* Store some data of the enum type */ - if(nc_put_var(ncid, varid, cloud_data)) ERR; - /* Write the file. */ - if (nc_close(ncid)) ERR; - - /* Check it out. */ - - /* Reopen the file. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - if (nc_inq_user_type(ncid, typeid, name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, TYPE2_NAME) || - base_size_in != sizeof(unsigned char) || - base_nc_type_in != NC_UBYTE || - nfields_in != num_members || - class_in != NC_ENUM) ERR; - if (nc_inq_enum(ncid, typeid, name_in, - &base_nc_type_in, &base_size_in, &num_members_in)) ERR; - if (strcmp(name_in, TYPE2_NAME) || - base_nc_type_in != NC_UBYTE || - num_members_in != num_members) ERR; - for (i = 0; i < num_members; i++) - { - if (nc_inq_enum_member(ncid, typeid, i, name_in, &value_in)) ERR; - if (strcmp(name_in, cloud_types[i].name) || - value_in != cloud_types[i].value) ERR; - if (nc_inq_enum_ident(ncid, typeid, cloud_types[i].value, - name_in)) ERR; - if (strcmp(name_in, cloud_types[i].name)) ERR; - } - if (nc_inq_varid(ncid, VAR2_NAME, &varid)) ERR; - - if (nc_get_att(ncid, varid, ATT2_NAME, &att_value_in)) ERR; - if (att_value_in != MISSING) ERR; - - if(nc_get_var(ncid, varid, cloud_data_in)) ERR; - for (i = 0; i < DIM2_LEN; i++) { - if (cloud_data_in[i] != cloud_data[i]) ERR; - } - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("*** testing enum interuptus..."); - { -#define GEEKY_NAME "Galadriel" - - /* Create a file. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* Create an enum type based on unsigned bytes. */ - if (nc_def_enum(ncid, NC_UBYTE, GEEKY_NAME, &typeid)) ERR; - - /* Check it out. */ - if (nc_inq_user_type(ncid, typeid, name_in, &base_size_in, &base_nc_type_in, - &nfields_in, &class_in)) ERR; - if (strcmp(name_in, GEEKY_NAME) || base_size_in != 1 || - base_nc_type_in != NC_UBYTE || nfields_in != 0 || class_in != NC_ENUM) ERR; - if (nc_inq_enum(ncid, typeid, name_in, &base_nc_type, &base_size_in, &num_members)) ERR; - if (strcmp(name_in, GEEKY_NAME) || base_nc_type != NC_UBYTE || base_size_in != 1 || - num_members != 0) ERR; - - /* Close the file. */ - if (nc_close(ncid) != NC_EINVAL) ERR; - - } - - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_files2.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_files2.c deleted file mode 100644 index 5128dd5efd7..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_files2.c +++ /dev/null @@ -1,336 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id: tst_files2.c,v 1.11 2010/01/31 19:00:44 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" -#include -#include -#include /* Extra high precision time info. */ - -#define MAX_LEN 30 -#define TMP_FILE_NAME "tst_files2_tmp.out" -#define FILE_NAME "tst_files2_1.nc" -#define MILLION 1000000 - -void *last_sbrk; - -/* This function uses the ps command to find the amount of memory in -use by the process. From the ps man page: - -size SZ approximate amount of swap space that would be required if - the process were to dirty all writable pages and then be - swapped out. This number is very rough! -*/ -int -get_mem_used1(int *mem_used) -{ - char cmd[NC_MAX_NAME + 1]; - char blob[MAX_LEN + 1] = ""; - FILE *fp; - int num_char; - - /* Run the ps command for this process, putting output (one number) - * into file TMP_FILE_NAME. */ - sprintf(cmd, "ps -o size= %d > %s", getpid(), TMP_FILE_NAME); - system(cmd); - - /* Read the results and delete temp file. */ - if (!(fp = fopen(TMP_FILE_NAME, "r"))) ERR; - num_char = fread(blob, MAX_LEN, 1, fp); - sscanf(blob, "%d", mem_used); - fclose(fp); - unlink(TMP_FILE_NAME); - return NC_NOERR; -} - -void -get_mem_used2(int *mem_used) -{ - char buf[30]; - FILE *pf; - - snprintf(buf, 30, "/proc/%u/statm", (unsigned)getpid()); - pf = fopen(buf, "r"); - if (pf) { - unsigned size; /* total program size */ - unsigned resident;/* resident set size */ - unsigned share;/* shared pages */ - unsigned text;/* text (code) */ - unsigned lib;/* library */ - unsigned data;/* data/stack */ - /*unsigned dt; dirty pages (unused in Linux 2.6)*/ - fscanf(pf, "%u %u %u %u %u %u", &size, &resident, &share, - &text, &lib, &data); - *mem_used = data; - } - else - *mem_used = -1; - fclose(pf); -} - -void -get_mem_used3(int *mem_used) -{ - void *vp; - vp = sbrk(0); - *mem_used = ((char *)vp - (char *)last_sbrk)/1024; -} - -/* Create a sample file, with num_vars 3D or 4D variables, with dim - * lens of dim_len size. */ -#define MAX_DIMS 4 -int -create_sample_file(char *file_name, int ndims, int *dim_len, - int num_vars, int mode, int num_recs) -{ - int ncid, dimids[MAX_DIMS], *varids; - char varname[NC_MAX_NAME + 1]; - char dim_name[NC_MAX_NAME + 1]; - float *data_out; - size_t start[MAX_DIMS], count[MAX_DIMS]; - int slab_nelems; - int i, d, ret; - - if (ndims != MAX_DIMS && ndims != MAX_DIMS - 1) ERR_RET; - - /* Create a file. */ - ret = nc_create(file_name, NC_NOCLOBBER|mode, &ncid); - if (ret == NC_EEXIST) - return NC_NOERR; - else if (ret) - ERR_RET; - - /* Initialize sample data. Slab of data will be full extent of last - * two dimensions. */ - slab_nelems = dim_len[ndims - 1] * dim_len[ndims - 2]; - if (!(data_out = malloc(slab_nelems * sizeof(float)))) ERR_RET; - for (i = 0; i < slab_nelems; i++) - data_out[i] = 42.42 + i; - - /* Create the dimensions. */ - for (d = 0; d < ndims; d++) - { - sprintf(dim_name, "dim_%d", d); - if (nc_def_dim(ncid, dim_name, dim_len[d], &dimids[d])) ERR_RET; - } - - /* Define num_vars variables. */ - if (!(varids = malloc(num_vars * sizeof(int)))) ERR_RET; - for (i = 0; i < num_vars; i++) - { - sprintf(varname, "a_%d", i); - if (nc_def_var(ncid, varname, NC_FLOAT, ndims, dimids, - &varids[i])) ERR_RET; - } - - /* Enddef required for classic files. */ - if (nc_enddef(ncid)) ERR; - - /* Set up start/count to write slabs of data. */ - for (d = 0; d < ndims; d++) - { - if (d < ndims - 2) - count[d] = 1; - else - { - start[d] = 0; - count[d] = dim_len[d]; - } - } - - /* Now write some data to the vars in slabs. */ - for (i = 0; i < num_vars; i++) - { - if (ndims == MAX_DIMS) - { - for (start[0] = 0; start[0] < (dim_len[0] ? dim_len[0] : num_recs); start[0]++) - for (start[1] = 0; start[1] < dim_len[1]; start[1]++) - if (nc_put_vara_float(ncid, varids[i], start, count, - data_out)) ERR_RET; - } - else - { - for (start[0] = 0; start[0] < (dim_len[0] ? dim_len[0] : num_recs); start[0]++) - if (nc_put_vara_float(ncid, varids[i], start, count, - data_out)) ERR_RET; - } - } - - /* Free data and close file. */ - free(data_out); - free(varids); - if (nc_close(ncid)) ERR_RET; - - return NC_NOERR; -} - -int -main(int argc, char **argv) -{ - - printf("\n*** Testing netcdf-4 file functions, some more.\n"); - last_sbrk = sbrk(0); - printf("*** testing lots of open files...\n"); - { -#define NUM_TRIES 6 - int *ncid_in; - int mem_used, mem_used2; - int mem_per_file; - int num_files[NUM_TRIES] = {1, 1, 1, 1, 1, 1}; - char file_name[NUM_TRIES][NC_MAX_NAME + 1]; - int num_vars[NUM_TRIES]; - size_t cache_size[NUM_TRIES]; - int mode[NUM_TRIES]; - char mode_name[NUM_TRIES][8]; - int ndims[NUM_TRIES]; - int dim_len[NUM_TRIES][MAX_DIMS]; - int dim_4d[MAX_DIMS] = {NC_UNLIMITED, 10, 1000, 1000}; - char dimstr[30]; - char chunkstr[30]; - int num_recs[NUM_TRIES] = {1, 1, 1}; - struct timeval start_time, end_time, diff_time; - struct timeval close_start_time, close_end_time, close_diff_time; - int open_us, close_us, create_us; - size_t chunksize[MAX_DIMS]; - int storage; - int d, f, t; - - printf("dims\t\tchunks\t\tformat\tnum_files\tcache(kb)\tnum_vars\tmem(kb)\t" - "open_time(us)\tclose_time(us)\tcreate_time(us)\n"); - for (t = 0; t < NUM_TRIES; t++) - { - /* Set up filename. */ - sprintf(file_name[t], "tst_files2_%d.nc", t); - strcpy(mode_name[t], "netcdf4"); - mode[t] = NC_NETCDF4; - cache_size[t] = 16000000; - num_vars[t] = 10; - ndims[t] = 4; - for (d = 0; d < ndims[t]; d++) - dim_len[t][d] = dim_4d[d]; - - /* Create sample file (unless it already exists). */ - if (gettimeofday(&start_time, NULL)) ERR; - if (create_sample_file(file_name[t], ndims[t], dim_len[t], num_vars[t], - mode[t], num_recs[t])) ERR; - - /* How long did it take? */ - if (gettimeofday(&end_time, NULL)) ERR; - if (nc4_timeval_subtract(&diff_time, &end_time, &start_time)) ERR; - create_us = ((int)diff_time.tv_sec * MILLION + (int)diff_time.tv_usec); - - /* Change the cache settings. */ - if (nc_set_chunk_cache(cache_size[t], 20000, .75)) ERR; - - /* We need storage for an array of ncids. */ - if (!(ncid_in = malloc(num_files[t] * sizeof(int)))) ERR; - - /* How much memory is in use now? */ - if (get_mem_used1(&mem_used)) ERR; -/* get_mem_used2(&mem_used); - get_mem_used3(&mem_used);*/ - - /* Open the first file to get chunksizes. */ - if (gettimeofday(&start_time, NULL)) ERR; - if (nc_open(file_name[t], 0, &ncid_in[0])) ERR; - if (nc_inq_var_chunking(ncid_in[0], 0, &storage, chunksize)) ERR; - - /* Now reopen this file a large number of times. */ - for (f = 1; f < num_files[t]; f++) - if (nc_open(file_name[t], 0, &ncid_in[f])) ERR_RET; - - /* How long did it take per file? */ - if (gettimeofday(&end_time, NULL)) ERR; - if (nc4_timeval_subtract(&diff_time, &end_time, &start_time)) ERR; - open_us = ((int)diff_time.tv_sec * MILLION + (int)diff_time.tv_usec); - - /* How much memory is in use by this process now? */ - if (get_mem_used1(&mem_used2)) ERR; - - /* Close all netcdf files. */ - if (gettimeofday(&close_start_time, NULL)) ERR; - for (f = 0; f < num_files[t]; f++) - if (nc_close(ncid_in[f])) ERR_RET; - - /* How long did it take to close all files? */ - if (gettimeofday(&close_end_time, NULL)) ERR; - if (nc4_timeval_subtract(&close_diff_time, &close_end_time, &close_start_time)) ERR; - close_us = ((int)close_diff_time.tv_sec * MILLION + (int)close_diff_time.tv_usec); - - /* We're done with this. */ - free(ncid_in); - - /* How much memory was used for each open file? */ - mem_per_file = mem_used2/num_files[t]; - - /* Prepare the dimensions string. */ - if (ndims[t] == MAX_DIMS) - sprintf(dimstr, "%dx%dx%dx%d", dim_len[t][0], dim_len[t][1], - dim_len[t][2], dim_len[t][3]); - else - sprintf(dimstr, "%dx%dx%d", dim_len[t][0], dim_len[t][1], - dim_len[t][2]); - - /* Prepare the chunksize string. */ - if (storage == NC_CHUNKED) - { - if (ndims[t] == MAX_DIMS) - sprintf(chunkstr, "%dx%dx%dx%d", (int)chunksize[0], (int)chunksize[1], - (int)chunksize[2], (int)chunksize[3]); - else - sprintf(chunkstr, "%dx%dx%d", (int)chunksize[0], (int)chunksize[1], - (int)chunksize[2]); - } - else - strcpy(chunkstr, "contig "); - - /* Output results. */ - printf("%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n", - dimstr, chunkstr, mode_name[t], num_files[t], (int)(cache_size[t]/1024), - num_vars[t], mem_used2, open_us, close_us, create_us); - } - } - SUMMARIZE_ERR; - printf("Test for memory consumption...\n"); - { -#define NUM_TRIES_100 100 - int ncid, i; - int mem_used, mem_used1, mem_used2; - - get_mem_used2(&mem_used); - mem_used1 = mem_used; - mem_used2 = mem_used; - printf("start: memuse= %d\t%d\t%d \n",mem_used, mem_used1, - mem_used2); - - printf("bef_open\taft_open\taft_close\tused_open\tused_closed\n"); - for (i=0; i < NUM_TRIES_100; i++) - { - /* Open the file. NC_NOWRITE tells netCDF we want read-only access - * to the file.*/ - - get_mem_used2(&mem_used); - nc_set_chunk_cache(10,10,.5); - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - get_mem_used2(&mem_used1); - - /* Close the file, freeing all resources. ???? */ - if (nc_close(ncid)) ERR; - - get_mem_used2(&mem_used2); - - if (mem_used2 - mem_used) - printf("try %d - %d\t\t%d\t\t%d\t\t%d\t\t%d \n", i, - mem_used, mem_used1, mem_used2, mem_used1 - mem_used, - mem_used2 - mem_used); - } - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_files6.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_files6.c deleted file mode 100644 index fa265f2e300..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_files6.c +++ /dev/null @@ -1,58 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2010 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf files a bit. -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" - -#define FILE_NAME "tst_files6.nc" - -int -main(int argc, char **argv) -{ - printf("\n*** Testing netcdf file functions some more.\n"); - printf("*** testing Jeff Whitaker's test..."); - { -#define DIM_NAME "xc" -#define DIM_LEN 134 -#define VAR_NAME1 "var1" -#define VAR_NAME2 "var2" - - int ncid, dimid, varid1, varid2, dimid_in; - int ndims_in, natts_in; - size_t len_in; - char name_in[NC_MAX_NAME + 1]; - nc_type xtype_in; - - if (nc_create(FILE_NAME, NC_CLOBBER|NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, DIM_LEN, &dimid)) ERR; - if (nc_def_var(ncid, VAR_NAME1, NC_FLOAT, 1, &dimid, &varid1)) ERR; - if (nc_def_var(ncid, VAR_NAME2, NC_FLOAT, 1, &dimid, &varid2)) ERR; - if (nc_def_var(ncid, DIM_NAME, NC_FLOAT, 1, &dimid, &varid2)) ERR; - if (nc_close(ncid)) ERR; - - /* Open and check. */ - if (nc_open(FILE_NAME, NC_CLOBBER|NC_NETCDF4, &ncid)) ERR; - if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; - if (strcmp(name_in, DIM_NAME) || len_in != DIM_LEN) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims_in, - &dimid_in, &natts_in)) ERR; - if (strcmp(name_in, VAR_NAME1) || xtype_in != NC_FLOAT || - ndims_in != 1 || dimid_in != 0 || natts_in != 0) ERR; - if (nc_inq_var(ncid, 1, name_in, &xtype_in, &ndims_in, - &dimid_in, &natts_in)) ERR; - if (strcmp(name_in, VAR_NAME2) || xtype_in != NC_FLOAT || - ndims_in != 1 || dimid_in != 0 || natts_in != 0) ERR; - if (nc_inq_var(ncid, 2, name_in, &xtype_in, &ndims_in, - &dimid_in, &natts_in)) ERR; - if (strcmp(name_in, DIM_NAME) || xtype_in != NC_FLOAT || - ndims_in != 1 || dimid_in != 0 || natts_in != 0) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_fills.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_fills.c deleted file mode 100644 index c8cf164eee2..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_fills.c +++ /dev/null @@ -1,328 +0,0 @@ -/* This is part of the netCDF package. Copyright 2008 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. See www.unidata.ucar.edu for more info. - - Create a test file with default fill values for variables of each type. - - $Id: tst_fills.c,v 1.12 2009/03/17 01:22:42 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include -#include -#include - -#define FILE_NAME "tst_fills.nc" - -int -main(int argc, char **argv) -{ /* create tst_classic_fills.nc */ - printf("\n*** Testing fill values.\n"); - printf("*** testing very simple scalar string var..."); - { -#define STRING_VAR_NAME "Petition_of_Right" -#define NDIMS_STRING 1 - - int ncid, varid; - int varid_in; - const char *data_out[NDIMS_STRING] = { - "Humbly show unto our Sovereign Lord the King, the Lords " - "Spiritual and Temporal, and Commons in Parliament assembles, " - "that whereas it is declared and enacted by a statute made in " - "the time of the reign of King Edward I, commonly called " - "Stratutum de Tellagio non Concedendo, that no tallage or " - "aid shall be laid or levied by the king or his heirs in this " - "realm, without the good will and assent of the archbishops, " - "bishops, earls, barons, knights, burgesses, and other the " - "freemen of the commonalty of this realm; and by authority " - "of parliament holden in the five-and-twentieth year of the " - "reign of King Edward III, it is declared and enacted, that " - "from thenceforth no person should be compelled to make any " - "loans to the king against his will, because such loans were " - "against reason and the franchise of the land; and by other " - "laws of this realm it is provided, that none should be charged " - "by any charge or imposition called a benevolence, nor by such " - "like charge; by which statutes before mentioned, and other the " - "good laws and statutes of this realm, your subjects have inherited " - "this freedom, that they should not be compelled to contribute " - "to any tax, tallage, aid, or other like charge not set by " - "common consent, in parliament." - }; - char *data_in[NDIMS_STRING]; - size_t index1[NDIMS_STRING] = {0}; - - /* Create file with a 1D string var. Set its fill value to the - * empty string. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_var(ncid, STRING_VAR_NAME, NC_STRING, 0, NULL, &varid)) ERR; - - /* Check it out. */ - if (nc_inq_varid(ncid, STRING_VAR_NAME, &varid_in)) ERR; - if (varid_in != varid) ERR; - - /* Write string. */ - if (nc_put_var1_string(ncid, varid_in, index1, data_out)) ERR; - - /* Get the string, check it, and free it. */ - if (nc_get_var_string(ncid, varid_in, data_in)) ERR; - if (strcmp(data_in[0], data_out[0])) ERR; - if (nc_free_string(1, data_in)) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - - /* Now re-open file, read data, and check values again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Get the string, check it, and free it. */ - if (nc_get_var_string(ncid, varid_in, data_in)) ERR; - if (strcmp(data_in[0], data_out[0])) ERR; - if (nc_free_string(1, data_in)) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing fill values of one var..."); - { -#define V1_NAME "v1" -#define MAX_VALS 10 - int ncid, varid, rec_id, dims[2]; - static int rec[1] = {1}; - size_t start[2] = {0, 0}; - size_t count[2] = {1, MAX_VALS}; - char vals[MAX_VALS]; - int i; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* Define dimensions and two vars, a 1D coordinate var for - * unlimited dimension, and a 2D var which uses the unlimited - * dimension. */ - if (nc_def_dim(ncid, "rec", NC_UNLIMITED, &dims[0])) ERR; - if (nc_def_dim(ncid, "len", MAX_VALS, &dims[1])) ERR; - if (nc_def_var(ncid, "rec", NC_INT, 1, dims, &rec_id)) ERR; - if (nc_def_var(ncid, V1_NAME, NC_CHAR, 2, dims, &varid)) ERR; - - /* Extend record dimension by 1. */ - if (nc_put_vara_int(ncid, rec_id, start, count, rec)) ERR; - - /* Read the other variable; it must have only fill values. */ - if (nc_get_vara_text(ncid, 1, start, count, vals)) ERR; - for (i = 0; i < MAX_VALS; i++) - if(vals[i] != NC_FILL_CHAR) ERR; - - if (nc_close(ncid)) ERR; - - /* Now re-open file, read data, and check values again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Read the other variable; it must have only fill values. */ - if (nc_get_vara_text(ncid, 1, start, count, vals)) ERR; - for (i = 0; i < MAX_VALS; i++) - if(vals[i] != NC_FILL_CHAR) ERR; - - if(nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing fill values of lots of vars..."); - { - int ncid; /* netCDF id */ - -#define NVALS 10 /* values per fixed-size variable or record */ -#define NFIXVARS 6 /* number of fixed-size vars, one of each type */ -#define NRECVARS 6 /* number of record vars, one of each type */ -#define RANK_REC 1 -#define RANK_FIXVARS 1 -#define RANK_RECVARS 2 - - /* dimension ids */ - int rec_dim; - int len_dim; - - /* dimension lengths */ - size_t rec_len = NC_UNLIMITED; - size_t len_len = NVALS; - - /* variable ids */ - int rec_id; - int fixvar_ids[NFIXVARS]; - int recvar_ids[NRECVARS]; - int rec_dims[RANK_REC]; - int fixvar_dims[RANK_FIXVARS]; - int recvar_dims[RANK_RECVARS]; - int fixvar, recvar, i; - - char *fnames[] = {"c", "b", "s", "i", "f", "d"}; - char *rnames[] = {"cr", "br", "sr", "ir", "fr", "dr"}; - nc_type types[] = {NC_CHAR, NC_BYTE, NC_SHORT, NC_INT, NC_FLOAT, NC_DOUBLE}; - - /*if (nc_set_default_format(format + 1, NULL)) ERR;*/ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* define dimensions */ - if (nc_def_dim(ncid, "rec", rec_len, &rec_dim)) ERR; - if (nc_def_dim(ncid, "len", len_len, &len_dim)) ERR; - - rec_dims[0] = rec_dim; - if (nc_def_var(ncid, "rec", NC_INT, RANK_REC, rec_dims, &rec_id)) ERR; - - /* define fixed and record variables of all 6 primitive types */ - fixvar_dims[0] = len_dim; - for (fixvar = 0; fixvar < NFIXVARS; fixvar++) - if (nc_def_var(ncid, fnames[fixvar], types[fixvar], RANK_FIXVARS, - fixvar_dims, &fixvar_ids[fixvar])) ERR; - - recvar_dims[0] = rec_dim; - recvar_dims[1] = len_dim; - for (recvar = 0; recvar < NRECVARS; recvar++) - if (nc_def_var(ncid, rnames[recvar], types[recvar], RANK_RECVARS, - recvar_dims, &recvar_ids[recvar])) ERR; - - /* leave define mode */ - if (nc_enddef(ncid)) ERR; - - { /* store rec */ - static size_t rec_start[RANK_REC]; - static size_t rec_count[RANK_REC]; - static int rec[] = {1}; - rec_len = 1; /* number of records of rec data */ - rec_start[0] = 0; - rec_count[0] = rec_len; - if (nc_put_vara_int(ncid, rec_id, rec_start, rec_count, rec)) ERR; - } - if (nc_close(ncid)) ERR; - - /* Now re-open file, read data, and check values */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check that fixed-size variables are full of fill values */ - for (fixvar = 0; fixvar < NFIXVARS; fixvar++) { - int varid; - nc_type type; - - if (nc_inq_varid(ncid, fnames[fixvar], &varid)) ERR; - if (nc_inq_vartype(ncid, varid, &type)) ERR; - switch(type) { - case NC_CHAR: - { - char vals[NVALS]; - if (nc_get_var_text(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_CHAR) ERR; - } - break; - case NC_BYTE: - { - signed char vals[NVALS]; - if (nc_get_var_schar(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_BYTE) ERR; - } - break; - case NC_SHORT: - { - short vals[NVALS]; - if (nc_get_var_short(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_SHORT) ERR; - } - break; - case NC_INT: - { - int vals[NVALS]; - if (nc_get_var_int(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_INT) ERR; - } - break; - case NC_FLOAT: - { - float vals[NVALS]; - if (nc_get_var_float(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_FLOAT) ERR; - } - break; - case NC_DOUBLE: - { - double vals[NVALS]; - if (nc_get_var_double(ncid, varid, vals)) ERR; - for (i = 0; i < NVALS; i++) - if (vals[i] != NC_FILL_DOUBLE) ERR; - } - break; - default: - ERR; - } - } - - /* Read record, check record variables have only fill values */ - for (recvar = 0; recvar < NRECVARS; recvar++) { - int varid; - nc_type type; - size_t start[] = {0, 0}; - size_t count[] = {1, NVALS}; - - if (nc_inq_varid(ncid, rnames[recvar], &varid)) ERR; - if (nc_inq_vartype(ncid, varid, &type)) ERR; - switch(type) { - case NC_CHAR: - { - char vals[NVALS]; - if (nc_get_vara_text(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_CHAR) ERR; - } - break; - case NC_BYTE: - { - signed char vals[NVALS]; - if (nc_get_vara_schar(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_BYTE) ERR; - } - break; - case NC_SHORT: - { - short vals[NVALS]; - if (nc_get_vara_short(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_SHORT) ERR; - } - break; - case NC_INT: - { - int vals[NVALS]; - if (nc_get_vara_int(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_INT) ERR; - } - break; - case NC_FLOAT: - { - float vals[NVALS]; - if (nc_get_vara_float(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_FLOAT) ERR; - } - break; - case NC_DOUBLE: - { - double vals[NVALS]; - if (nc_get_vara_double(ncid, varid, start, count, vals)) ERR; - for (i = 0; i < NVALS; i++) - if(vals[i] != NC_FILL_DOUBLE) ERR; - } - break; - default: - ERR; - } - } - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_formatx_hdf4.sh b/contrib/netcdf/4.4.1.1/nc_test4/tst_formatx_hdf4.sh deleted file mode 100755 index 54ea1cf9df6..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_formatx_hdf4.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# This shell script tests the output several previous tests. -# $Id: tst_output.sh,v 1.17 2010/05/14 16:21:15 ed Exp $ - -FILE=tst_interops2.h4 - -ECODE=0 - -echo "" -echo "*** Testing extended file format output." -set -e - -echo "Test extended format output for a HDF4 file" -rm -f tmp -../ncdump/ncdump -K $FILE >tmp -if ! fgrep 'HDF4 mode=00001000' -#include -#include "mfhdf.h" - -#define DIM1 5 -#define DIM0 5 -#define RANK 2 -#define FILENAME "tst_h4_lendian.h4" -#define SDSNAME "data" - -int read_hdf_file(int dtype) { - - int ncid = 0; - int le_int16_varid = 0; - int retval = 0; - int ed = 0; - - printf("\to Reading hdf4 file with a little-endian datatype %d\n",dtype); - - printf("\t\to Opening file....\t\t\t\t\t"); - retval = nc_open(FILENAME, NC_NETCDF4 | NC_NOWRITE, &ncid); - if(retval) {printf("Failure [%d]\n",retval); return retval;} - else {printf("Success\n");} - - printf("\t\to Getting varid....\t\t\t\t\t"); - retval = nc_inq_varid(ncid,SDSNAME,&le_int16_varid); - if(retval) {printf("Failure [%d]\n",retval); return retval;} - else {printf("Success\n");} - - printf("\t\to Querying endianness of the variable....\t\t"); - retval = nc_inq_var_endian(ncid,le_int16_varid,&ed); - if(retval) {printf("Failure [%d]\n",retval); return retval;} - else {printf("Success\n");} - - printf("\t\to Checking that endianness is NC_ENDIAN_LITTLE....\t"); - if (ed == NC_ENDIAN_LITTLE) printf("Success\n"); - else {printf("Failure [%d]\n\n",ed); nc_close(ncid); return -1;} - - printf("\t\to Closing file....\t\t\t\t\t"); - retval = nc_close(ncid); - if(retval) {printf("Failure [%d]\n\n",retval); return retval;} - else {printf("Success\n\n");} - - return 0; -} - -int create_hdf_file(int dtype) { - - int32 sd_id, sds_id, istat, sd_index; - int32 dims[2], start[2], edges[2], rank; - int16 array_data[DIM0][DIM1]; - intn i, j, count; - - start[0] = 0; - start[1] = 0; - edges[0] = DIM1; - edges[1] = DIM0; - - /* populate data array */ - count = 0; - for (j = 0; j < DIM0; j++) - { - for (i = 0; i < DIM1; i++) - array_data[j][i] = count++; - } - - printf("\to Creating hdf4 file with little-endian datatype %d....\t",dtype); - - sd_id = SDstart(FILENAME, DFACC_CREATE); - /* sds_id = SDcreate(sd_id, SDSNAME, DFNT_LITEND|dtype, RANK, edges); */ - sds_id = SDcreate(sd_id, SDSNAME, dtype, RANK, edges); - - istat = SDendaccess(sds_id); - if(istat) {printf("Failure %d\n", istat); SDend(sd_id); return istat;} - - istat = SDend(sd_id); - if(istat) {printf("Failure %d\n", istat); SDend(sd_id); return istat;} - - sd_id = SDstart(FILENAME, DFACC_WRITE); - - sd_index = 0; - sds_id = SDselect(sd_id, sd_index); - - istat = SDwritedata(sds_id, start, NULL, edges, (VOIDP)array_data); - if(istat) {printf("Failure %d\n", istat); SDend(sd_id); return istat;} - - istat = SDendaccess(sds_id); - if(istat) {printf("Failure %d\n", istat); SDend(sd_id); return istat;} - - istat = SDend(sd_id); - if(istat) {printf("Failure %d\n", istat); return istat;} - - printf("Success\n"); - return 0; -} - - -int test_read_write(int dtype) { - - int res = 0; - - res = create_hdf_file(dtype); - if(res) {unlink(FILENAME); return res;} - - res = read_hdf_file(dtype); - - unlink(FILENAME); - return res; -} - -/*! Standard main function. - * - */ -int main() { - - int res = 0; - - printf("Test reading from an hdf4 file with a little-endian datatype.\n"); - - /* True Positives. */ - res = test_read_write(DFNT_LINT8); - res = test_read_write(DFNT_LUINT8); - res = test_read_write(DFNT_LINT16); - res = test_read_write(DFNT_LUINT16); - res = test_read_write(DFNT_LINT32); - res = test_read_write(DFNT_LUINT32); - res = test_read_write(DFNT_LFLOAT32); - res = test_read_write(DFNT_LFLOAT64); - - /* True Negatives. */ - printf("\t**** Testing for True Negatives. THESE SHOULD FAIL.****\n\n"); - res = test_read_write(DFNT_INT8); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_UINT8); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_INT16); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_UINT16); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_INT32); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_UINT32); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_FLOAT32); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - res = test_read_write(DFNT_FLOAT64); - if(!res) {printf("Should have failed. Error!\n"); return -1;} - - printf("Finished.\n"); - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_h5_endians.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_h5_endians.c deleted file mode 100644 index 3b167f0a089..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_h5_endians.c +++ /dev/null @@ -1,136 +0,0 @@ -/*! Test for NCF-331. Added May 11, 2015. - * See the following links for more information: - * - * o Issue on GitHub: https://github.com/Unidata/netcdf-c/issues/112 - * o Issue in JIRA: https://bugtracking.unidata.ucar.edu/browse/NCF-331 - * - * Test contributed by Jeff Whitaker - */ - -#include -#include -#include -#include -#include "nc_logging.h" - -#define FILE_NAME_NC "tst_h5_endians.nc" - -#define NDIM 10 -#define NLON 20 -#define DIM_NAME "x" -#define DIM_LEN 4 -#define GRP_NAME "grp" -#define LE_FLOAT_VARNAME "fl_le" -#define BE_FLOAT_VARNAME "fl_be" -#define LE_INT_VARNAME "int_le" -#define BE_INT_VARNAME "int_be" -#define LE_DBL_VARNAME "dbl_le" -#define BE_DBL_VARNAME "dbl_be" - -int main() { - - int ncid, dimid; - int le_float_varid; - int be_float_varid; - int le_int_varid; - int be_int_varid; - int le_dbl_varid; - int be_dbl_varid; - int ed; - int failures = 0; - int retval = 0; - - printf("* Checking that endianness is properly read from file.\n"); - printf("** Generating test files.\n"); - /* - * 1. Create a netcdf file with endianness as desired. - */ - { - - printf("*** Creating a file via netcdf API: %s.\n",FILE_NAME_NC); - retval = nc_create(FILE_NAME_NC, NC_NETCDF4 | NC_CLOBBER, &ncid); - - retval = nc_def_dim(ncid, DIM_NAME, NDIM, &dimid); - - /* Little-Endian Float */ - retval = nc_def_var(ncid, LE_FLOAT_VARNAME, NC_FLOAT, 1, &dimid, &le_float_varid); - retval = nc_def_var_endian(ncid, le_float_varid, NC_ENDIAN_LITTLE); - - /* Big-Endian Float */ - retval = nc_def_var(ncid, BE_FLOAT_VARNAME, NC_FLOAT, 1, &dimid, &be_float_varid); - retval = nc_def_var_endian(ncid, be_float_varid, NC_ENDIAN_BIG); - - /* Little-Endian Int */ - retval = nc_def_var(ncid, LE_INT_VARNAME, NC_INT, 1, &dimid, &le_int_varid); - retval = nc_def_var_endian(ncid, le_int_varid, NC_ENDIAN_LITTLE); - - /* Big-Endian Int */ - retval = nc_def_var(ncid, BE_INT_VARNAME, NC_INT, 1, &dimid, &be_int_varid); - retval = nc_def_var_endian(ncid, be_int_varid, NC_ENDIAN_BIG); - - /* Little-Endian Double */ - retval = nc_def_var(ncid, LE_DBL_VARNAME, NC_DOUBLE, 1, &dimid, &le_dbl_varid); - retval = nc_def_var_endian(ncid, le_dbl_varid, NC_ENDIAN_LITTLE); - - /* Big-Endian Double */ - retval = nc_def_var(ncid, BE_DBL_VARNAME, NC_DOUBLE, 1, &dimid, &be_dbl_varid); - retval = nc_def_var_endian(ncid, be_dbl_varid, NC_ENDIAN_BIG); - - - retval = nc_close(ncid); - } - - /* - * 2. Reopen netcdf-generated file, check to see if the endianness attribute - * exists. - */ - printf("** Checking test files.\n"); - { - ncid = 0; - le_float_varid = 0; - be_float_varid = 0; - le_int_varid = 0; - be_int_varid = 0; - le_dbl_varid = 0; - be_dbl_varid = 0; - - printf("*** %s\n",FILE_NAME_NC); - retval = nc_open(FILE_NAME_NC, NC_NETCDF4 | NC_NOWRITE, &ncid); - - retval = nc_inq_varid(ncid,LE_FLOAT_VARNAME,&le_float_varid); - retval = nc_inq_varid(ncid,BE_FLOAT_VARNAME,&be_float_varid); - retval = nc_inq_varid(ncid,LE_INT_VARNAME,&le_int_varid); - retval = nc_inq_varid(ncid,BE_INT_VARNAME,&be_int_varid); - retval = nc_inq_varid(ncid,LE_DBL_VARNAME,&le_dbl_varid); - retval = nc_inq_varid(ncid,BE_DBL_VARNAME,&be_dbl_varid); - - printf("\tLittle-Endian Float...\t"); - retval = nc_inq_var_endian(ncid,le_float_varid,&ed); - if(ed == NC_ENDIAN_LITTLE) printf("passed\n"); else {printf("failed\n"); failures++;} - - printf("\tBig-Endian Float...\t"); - retval = nc_inq_var_endian(ncid,be_float_varid,&ed); - if(ed == NC_ENDIAN_BIG) printf("passed\n"); else {printf("failed\n"); failures++;} - - printf("\tLittle-Endian Int...\t"); - retval = nc_inq_var_endian(ncid,le_int_varid,&ed); - if(ed == NC_ENDIAN_LITTLE) printf("passed\n"); else {printf("failed\n"); failures++;} - - printf("\tBig-Endian Int...\t"); - retval = nc_inq_var_endian(ncid,be_int_varid,&ed); - if(ed == NC_ENDIAN_BIG) printf("passed\n"); else {printf("failed\n"); failures++;} - - printf("\tLittle-Endian Double...\t"); - retval = nc_inq_var_endian(ncid,le_dbl_varid,&ed); - if(ed == NC_ENDIAN_LITTLE) printf("passed\n"); else {printf("failed\n"); failures++;} - - printf("\tBig-Endian Double...\t"); - retval = nc_inq_var_endian(ncid,be_dbl_varid,&ed); - if(ed == NC_ENDIAN_BIG) printf("passed\n"); else {printf("failed\n"); failures++;} - - retval = nc_close(ncid); - } - - printf("** Failures Returned: [%d]\n",failures); - return failures; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_atts2.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_h_atts2.c deleted file mode 100644 index 7c40520cdec..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_atts2.c +++ /dev/null @@ -1,127 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test HDF5 file code. These are not intended to be exhaustive tests, - but they use HDF5 the same way that netCDF-4 does, so if these - tests don't work, than netCDF-4 won't work either. - - This file deals with HDF5 attributes, but more so. - - $Id: tst_h_atts2.c,v 1.18 2009/07/03 13:07:14 ed Exp $ -*/ -#include -#include "err_macros.h" -#include - -#define FILE_NAME "tst_h_atts2.h5" -#define REF_FILE_NAME "tst_xplatform2_3.nc" -#define MAX_LEN 80 -#define NUM_ATTS 1 -#define ATT_NAME "King_John" -#define NUM_OBJ 3 - -int -main() -{ - printf("\n*** Checking HDF5 attribute functions some more.\n"); -#ifdef EXTRA_TESTS - printf("*** Opening tst_xplatform2_3.nc..."); - { - hid_t fileid, grpid, attid; - hid_t file_typeid1[NUM_OBJ], native_typeid1[NUM_OBJ]; - hid_t file_typeid2, native_typeid2; - hsize_t num_obj, i; - H5O_info_t obj_info; - char obj_name[NC_MAX_NAME + 1]; - - /* Open one of the netCDF test files. */ - if ((fileid = H5Fopen(REF_FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; - if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; - - /* How many objects in this group? */ - if (H5Gget_num_objs(grpid, &num_obj) < 0) ERR; - if (num_obj != NUM_OBJ) ERR; - - /* For each object in the group... */ - for (i = 0; i < num_obj; i++) - { - /* Get the name. */ - if (H5Oget_info_by_idx(grpid, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, - i, &obj_info, H5P_DEFAULT) < 0) ERR_RET; - if (H5Lget_name_by_idx(grpid, ".", H5_INDEX_NAME, H5_ITER_INC, i, - obj_name, NC_MAX_NAME + 1, H5P_DEFAULT) < 0) ERR_RET; - printf(" reading type %s ", obj_name); - if (obj_info.type != H5O_TYPE_NAMED_DATATYPE) ERR_RET; - - /* Get the typeid. */ - if ((file_typeid1[i] = H5Topen2(grpid, obj_name, H5P_DEFAULT)) < 0) ERR_RET; - if ((native_typeid1[i] = H5Tget_native_type(file_typeid1[i], H5T_DIR_DEFAULT)) < 0) ERR_RET; - } - - /* There is one att: open it by index. */ - if ((attid = H5Aopen_idx(grpid, 0)) < 0) ERR; - - /* Get file and native typeids. */ - if ((file_typeid2 = H5Aget_type(attid)) < 0) ERR; - if ((native_typeid2 = H5Tget_native_type(file_typeid2, H5T_DIR_DEFAULT)) < 0) ERR; - - /* Close the attribute. */ - if (H5Aclose(attid) < 0) ERR; - - /* Close the typeids. */ - if (H5Tclose(file_typeid2) < 0) ERR_RET; - if (H5Tclose(native_typeid2) < 0) ERR_RET; - for (i = 0; i < NUM_OBJ; i++) - { - if (H5Tclose(file_typeid1[i]) < 0) ERR_RET; - if (H5Tclose(native_typeid1[i]) < 0) ERR_RET; - } - - /* Close the group and file. */ - if (H5Gclose(grpid) < 0 || - H5Fclose(fileid) < 0) ERR; - } - - SUMMARIZE_ERR; - printf("*** Opening tst_xplatform2_3.nc again..."); - { - hid_t fileid, grpid, attid, file_typeid, native_typeid; - hid_t file_typeid2, native_typeid2; -#if 0 - hsize_t num_obj; -#endif - - /* Open one of the netCDF test files. */ - if ((fileid = H5Fopen(REF_FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; - if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; - - /* There is one att: open it by index. */ - if ((attid = H5Aopen_idx(grpid, 0)) < 0) ERR; - - /* Get file and native typeids. */ - if ((file_typeid = H5Aget_type(attid)) < 0) ERR; - if ((native_typeid = H5Tget_native_type(file_typeid, H5T_DIR_DEFAULT)) < 0) ERR; - - /* Now getting another copy of the native typeid will fail! WTF? */ - if ((file_typeid2 = H5Aget_type(attid)) < 0) ERR; - if ((native_typeid2 = H5Tget_native_type(file_typeid, H5T_DIR_DEFAULT)) < 0) ERR; - - /* Close the attribute. */ - if (H5Aclose(attid) < 0) ERR; - - /* Close the typeids. */ - if (H5Tclose(file_typeid) < 0) ERR; - if (H5Tclose(native_typeid) < 0) ERR; - if (H5Tclose(file_typeid2) < 0) ERR; - if (H5Tclose(native_typeid2) < 0) ERR; - - /* Close the group and file. */ - if (H5Gclose(grpid) < 0 || - H5Fclose(fileid) < 0) ERR; - } - - SUMMARIZE_ERR; -#endif - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_files3.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_h_files3.c deleted file mode 100644 index 11318846821..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_files3.c +++ /dev/null @@ -1,223 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id: tst_h_files3.c,v 1.2 2010/02/05 17:06:28 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" -#include -#include -#include /* Extra high precision time info. */ -#include -#include - -#define MAX_LEN 30 -#define TMP_FILE_NAME "tst_files2_tmp.out" -#define FILE_NAME "tst_files2_1.nc" -#define MILLION 1000000 - -void *last_sbrk; - -void -get_mem_used2(int *mem_used) -{ - char buf[30]; - FILE *pf; - - snprintf(buf, 30, "/proc/%u/statm", (unsigned)getpid()); - pf = fopen(buf, "r"); - if (pf) { - unsigned size; /* total program size */ - unsigned resident;/* resident set size */ - unsigned share;/* shared pages */ - unsigned text;/* text (code) */ - unsigned lib;/* library */ - unsigned data;/* data/stack */ - /*unsigned dt; dirty pages (unused in Linux 2.6)*/ - fscanf(pf, "%u %u %u %u %u %u", &size, &resident, &share, - &text, &lib, &data); - *mem_used = data; - } - else - *mem_used = -1; - fclose(pf); -} - -int -main(int argc, char **argv) -{ - - printf("\n*** Testing netcdf-4 file functions, some more.\n"); - last_sbrk = sbrk(0); -/* printf("Test for memory consumption of simple HDF5 file read...\n"); */ -/* { */ -/* #define NUM_TRIES 200000 */ -/* #define CHUNK_CACHE_NELEMS_1 1009 */ -/* #define CHUNK_CACHE_SIZE_1 1000000 */ -/* #define CHUNK_CACHE_PREEMPTION_1 .75 */ -/* #define MAX_OBJ 2 */ -/* #define FILE_NAME2 "ref_tst_kirk.nc" */ -/* int mem_used, mem_used1, mem_used2; */ -/* hid_t fapl_id, fileid, grpid, datasetid; */ -/* int try; */ -/* int num_scales; */ - -/* printf("\t\t\tbef_open\taft_open\taft_close\tused_open\tused_closed\n"); */ -/* for (try = 0; try < NUM_TRIES; try++) */ -/* { */ -/* char obj_name2[] = "Captain_Kirk"; */ -/* get_mem_used2(&mem_used); */ - -/* /\* Reopen the file. *\/ */ -/* if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; */ -/* if ((fileid = H5Fopen(FILE_NAME2, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) ERR; */ -/* if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; */ - -/* if ((datasetid = H5Dopen2(grpid, obj_name2, H5P_DEFAULT)) < 0) ERR; */ -/* num_scales = H5DSget_num_scales(datasetid, 0); */ - -/* get_mem_used2(&mem_used1); */ - -/* /\* Close everything. *\/ */ -/* if (H5Dclose(datasetid)) ERR_RET; */ -/* if (H5Pclose(fapl_id)) ERR_RET; */ -/* if (H5Gclose(grpid) < 0) ERR_RET; */ -/* if (H5Fclose(fileid) < 0) ERR_RET; */ - -/* get_mem_used2(&mem_used2); */ - -/* if (mem_used2 - mem_used) */ -/* { */ -/* printf("try %d - \t\t%d\t\t%d\t\t%d\t\t%d\t\t%d \n", try, */ -/* mem_used, mem_used1, mem_used2, mem_used1 - mem_used, */ -/* mem_used2 - mem_used); */ -/* /\*if (try > 1) */ -/* ERR_RET;*\/ */ -/* } */ -/* } */ -/* } */ -/* SUMMARIZE_ERR; */ -/* printf("Test for memory consumption of HDF5 file read...\n"); */ -/* { */ -/* #define NUM_TRIES 2000 */ -/* #define CHUNK_CACHE_NELEMS_1 1009 */ -/* #define CHUNK_CACHE_SIZE_1 1000000 */ -/* #define CHUNK_CACHE_PREEMPTION_1 .75 */ -/* #define MAX_OBJ 2 */ -/* #define FILE_NAME2 "ref_tst_kirk.nc" */ -/* hsize_t num_obj, i; */ -/* int mem_used, mem_used1, mem_used2; */ -/* hid_t fapl_id, fileid, grpid, datasetid[MAX_OBJ]; */ -/* hid_t access_pid, spaceid; */ -/* char obj_name[NC_MAX_NAME + 1]; */ -/* int try; */ -/* H5O_info_t obj_info; */ -/* H5_index_t idx_field = H5_INDEX_CRT_ORDER; */ -/* ssize_t size; */ -/* int ndims; */ -/* hsize_t dims[NC_MAX_DIMS], max_dims[NC_MAX_DIMS]; */ -/* int is_scale = 0; */ - -/* get_mem_used2(&mem_used); */ -/* mem_used1 = mem_used; */ -/* mem_used2 = mem_used; */ -/* printf("start: memuse= %d\t%d\t%d \n",mem_used, mem_used1, */ -/* mem_used2); */ - -/* /\* if (H5Eset_auto(NULL, NULL) < 0) ERR;*\/ */ - -/* printf("bef_open\taft_open\taft_close\tused_open\tused_closed\n"); */ -/* for (try = 0; try < NUM_TRIES; try++) */ -/* { */ -/* get_mem_used2(&mem_used); */ - -/* /\* Reopen the file. *\/ */ -/* if ((fapl_id = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; */ -/* if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_SEMI)) ERR; */ -/* if (H5Pset_cache(fapl_id, 0, CHUNK_CACHE_NELEMS_1, CHUNK_CACHE_SIZE_1, */ -/* CHUNK_CACHE_PREEMPTION_1) < 0) ERR; */ -/* if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, */ -/* H5F_LIBVER_LATEST) < 0) ERR; */ -/* if ((fileid = H5Fopen(FILE_NAME2, H5F_ACC_RDONLY, fapl_id)) < 0) ERR; */ -/* if ((grpid = H5Gopen(fileid, "/")) < 0) ERR; */ - -/* if (H5Gget_num_objs(grpid, &num_obj) < 0) ERR; */ -/* if (num_obj > MAX_OBJ) ERR; */ -/* for (i = 0; i < num_obj; i++) */ -/* { */ -/* if (H5Oget_info_by_idx(grpid, ".", H5_INDEX_CRT_ORDER, H5_ITER_INC, */ -/* i, &obj_info, H5P_DEFAULT) < 0) ERR; */ -/* if ((size = H5Lget_name_by_idx(grpid, ".", idx_field, H5_ITER_INC, i, */ -/* NULL, 0, H5P_DEFAULT)) < 0) ERR; */ -/* if (H5Lget_name_by_idx(grpid, ".", idx_field, H5_ITER_INC, i, */ -/* obj_name, size+1, H5P_DEFAULT) < 0) ERR; */ -/* if ((datasetid[i] = H5Dopen2(grpid, obj_name, H5P_DEFAULT)) < 0) ERR; */ -/* if ((access_pid = H5Dget_access_plist(datasetid[i])) < 0) ERR; */ -/* if ((spaceid = H5Dget_space(datasetid[i])) < 0) ERR; */ -/* if ((ndims = H5Sget_simple_extent_ndims(spaceid)) < 0) ERR; */ -/* if (H5Sget_simple_extent_dims(spaceid, dims, max_dims) < 0) ERR; */ -/* if ((is_scale = H5DSis_scale(datasetid[i])) < 0) ERR; */ -/* if (is_scale) */ -/* { */ -/* char dimscale_name_att[NC_MAX_NAME + 1]; */ -/* int natts, a; */ -/* hid_t attid = 0; */ -/* char att_name[NC_MAX_HDF5_NAME + 1]; */ - -/* if ((natts = H5Aget_num_attrs(datasetid[i])) < 0) ERR; */ -/* for (a = 0; a < natts; a++) */ -/* { */ -/* if ((attid = H5Aopen_idx(datasetid[i], (unsigned int)a)) < 0) ERR; */ -/* if (H5Aget_name(attid, NC_MAX_HDF5_NAME, att_name) < 0) ERR; */ -/* if (H5Aclose(attid) < 0) ERR; */ -/* } */ -/* if (H5DSget_scale_name(datasetid[i], dimscale_name_att, NC_MAX_NAME) < 0) ERR; */ -/* } */ -/* else */ -/* { */ -/* int num_scales; */ -/* size_t chunk_cache_size, chunk_cache_nelems; */ -/* double rdcc_w0; */ -/* hid_t propid; */ - -/* num_scales = H5DSget_num_scales(datasetid[i], 0); */ -/* if ((H5Pget_chunk_cache(access_pid, &chunk_cache_nelems, */ -/* &chunk_cache_size, &rdcc_w0)) < 0) ERR; */ -/* if ((propid = H5Dget_create_plist(datasetid[i])) < 0) ERR; */ - -/* if (H5Pclose(propid)) ERR; */ - -/* } */ - -/* if (H5Pclose(access_pid)) ERR; */ -/* if (H5Sclose(spaceid)) ERR; */ -/* } */ - -/* get_mem_used2(&mem_used1); */ - -/* /\* Close everything. *\/ */ -/* for (i = 0; i < num_obj; i++) */ -/* if (H5Dclose(datasetid[i])) ERR; */ -/* if (H5Pclose(fapl_id)) ERR; */ -/* if (H5Gclose(grpid) < 0) ERR; */ -/* if (H5Fclose(fileid) < 0) ERR; */ - -/* get_mem_used2(&mem_used2); */ - -/* if (mem_used2 - mem_used) */ -/* { */ -/* printf("try %d - %d\t\t%d\t\t%d\t\t%d\t\t%d \n", try, */ -/* mem_used, mem_used1, mem_used2, mem_used1 - mem_used, */ -/* mem_used2 - mem_used); */ -/* if (try > 1) */ -/* ERR_RET; */ -/* } */ -/* } */ -/* } */ -/* SUMMARIZE_ERR; */ - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_scalar.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_h_scalar.c deleted file mode 100644 index 8853f2a04de..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_h_scalar.c +++ /dev/null @@ -1,381 +0,0 @@ -/* This is part of the netCDF package. Copyright 2013 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. - - This program tests reading HDF5 files that contain scalar attributes and - variables, of both string and numeric datatypes. The netCDF-4 library - should allow access to all of these. -*/ - -#include -#include "err_macros.h" -#include - -#define FILE_NAME "tst_h_scalar.h5" -#define VSTR_ATT1_NAME "vstratt1" -#define VSTR_ATT2_NAME "vstratt2" -#define VSTR_ATT3_NAME "vstratt3" -#define VSTR_ATT4_NAME "vstratt4" -#define VSTR_VAR1_NAME "vstrvar1" -#define VSTR_VAR2_NAME "vstrvar2" -#define FSTR_ATT_NAME "fstratt" -#define FSTR_VAR_NAME "fstrvar" -#define INT_ATT_NAME "intatt" -#define INT_VAR_NAME "intvar" - -int -add_attrs(hid_t objid) -{ - hid_t scalar_spaceid = -1; - hid_t vlstr_typeid = -1, fixstr_typeid = -1; - char *vlstr; - hid_t attid = -1; - - /* Create scalar dataspace */ - if ((scalar_spaceid = H5Screate(H5S_SCALAR)) < 0) ERR_GOTO; - - /* Create string datatypes */ - if ((vlstr_typeid = H5Tcreate(H5T_STRING, (size_t)H5T_VARIABLE)) < 0) ERR_GOTO; - if ((fixstr_typeid = H5Tcreate(H5T_STRING, (size_t)10)) < 0) ERR_GOTO; - - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT1_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - /* No write, use fill value */ - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT2_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - vlstr = NULL; - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT3_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - vlstr = malloc(10); - *vlstr = '\0'; - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT4_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - strcpy(vlstr, "foo"); - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - free(vlstr); - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with fixed-length string datatype on object */ - if ((attid = H5Acreate2(objid, FSTR_ATT_NAME, fixstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with native integer datatype on object */ - if ((attid = H5Acreate2(objid, INT_ATT_NAME, H5T_NATIVE_INT, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - - /* Clean up objects created */ - if (H5Sclose(scalar_spaceid) < 0) ERR_GOTO; - if (H5Tclose(vlstr_typeid) < 0) ERR_GOTO; - if (H5Tclose(fixstr_typeid) < 0) ERR_GOTO; - - return(0); - -error: - H5E_BEGIN_TRY { - H5Aclose(attid); - H5Sclose(scalar_spaceid); - H5Tclose(vlstr_typeid); - H5Tclose(fixstr_typeid); - } H5E_END_TRY; - return(-1); -} - -int -check_attrs(int ncid, int obj) -{ - int attid; - int natts = 0; - size_t len; - nc_type type; - char *vlstr; - char fixstr[10]; - int x; - - /* Check the object's attributes are OK */ - if (nc_inq_varnatts(ncid, obj, &natts )) ERR_GOTO; - if (natts != 6) ERR_GOTO; - - if (nc_inq_attid(ncid, obj, VSTR_ATT1_NAME, &attid)) ERR_GOTO; - if (attid != 0) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, VSTR_ATT1_NAME, &type)) ERR_GOTO; - if (type != NC_STRING) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, VSTR_ATT1_NAME, &len)) ERR_GOTO; - if (len != 1) ERR_GOTO; - vlstr = NULL; - if (nc_get_att(ncid, obj, VSTR_ATT1_NAME, &vlstr)) ERR_GOTO; - if (NULL != vlstr) ERR_GOTO; - - if (nc_inq_attid(ncid, obj, VSTR_ATT2_NAME, &attid)) ERR_GOTO; - if (attid != 1) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, VSTR_ATT2_NAME, &type)) ERR_GOTO; - if (type != NC_STRING) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, VSTR_ATT2_NAME, &len)) ERR_GOTO; - if (len != 1) ERR_GOTO; - vlstr = NULL; - if (nc_get_att(ncid, obj, VSTR_ATT2_NAME, &vlstr)) ERR_GOTO; - if (NULL != vlstr) ERR_GOTO; - - if (nc_inq_attid(ncid, obj, VSTR_ATT3_NAME, &attid)) ERR_GOTO; - if (attid != 2) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, VSTR_ATT3_NAME, &type)) ERR_GOTO; - if (type != NC_STRING) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, VSTR_ATT3_NAME, &len)) ERR_GOTO; - if (len != 1) ERR_GOTO; - vlstr = NULL; - if (nc_get_att(ncid, obj, VSTR_ATT3_NAME, &vlstr)) ERR_GOTO; - if (strcmp(vlstr, "")) ERR_GOTO; - free(vlstr); - - if (nc_inq_attid(ncid, obj, VSTR_ATT4_NAME, &attid)) ERR_GOTO; - if (attid != 3) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, VSTR_ATT4_NAME, &type)) ERR_GOTO; - if (type != NC_STRING) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, VSTR_ATT4_NAME, &len)) ERR_GOTO; - if (len != 1) ERR_GOTO; - vlstr = NULL; - if (nc_get_att(ncid, obj, VSTR_ATT4_NAME, &vlstr)) ERR_GOTO; - if (strcmp(vlstr, "foo")) ERR_GOTO; - free(vlstr); - - if (nc_inq_attid(ncid, obj, FSTR_ATT_NAME, &attid)) ERR_GOTO; - if (attid != 4) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, FSTR_ATT_NAME, &type)) ERR_GOTO; - if (type != NC_CHAR) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, FSTR_ATT_NAME, &len)) ERR_GOTO; - if (len != 10) ERR_GOTO; - memset(fixstr, 1, sizeof(fixstr)); - if (nc_get_att(ncid, obj, FSTR_ATT_NAME, fixstr)) ERR_GOTO; - if ('\0' != fixstr[0]) ERR_GOTO; - - if (nc_inq_attid(ncid, obj, INT_ATT_NAME, &attid)) ERR_GOTO; - if (attid != 5) ERR_GOTO; - if (nc_inq_atttype(ncid, obj, INT_ATT_NAME, &type)) ERR_GOTO; - if (type != NC_INT) ERR_GOTO; - if (nc_inq_attlen(ncid, obj, INT_ATT_NAME, &len)) ERR_GOTO; - if (len != 1) ERR_GOTO; - x = -1; - if (nc_get_att(ncid, obj, INT_ATT_NAME, &x)) ERR_GOTO; - if (0 != x) ERR_GOTO; - - - return(0); - -error: - return(-1); -} - -int -main() -{ - printf("\n*** Creating file with datasets & attributes that have scalar dataspaces..."); - { - hid_t fileid; - hid_t fcplid; - hid_t dsetid; - hid_t dcplid; - hid_t scalar_spaceid; - hid_t vlstr_typeid, fixstr_typeid; - hid_t attid; - - /* Create scalar dataspace */ - if ((scalar_spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; - - /* Set creation ordering for file, so we can revise its contents later */ - if ((fcplid = H5Pcreate(H5P_FILE_CREATE)) < 0) ERR; - if (H5Pset_link_creation_order(fcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - if (H5Pset_attr_creation_order(fcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - - /* Create new file, using default properties */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, fcplid, H5P_DEFAULT)) < 0) ERR; - - /* Close file creation property list */ - if (H5Pclose(fcplid) < 0) ERR; - - - /* Create variable-length string datatype */ - if ((vlstr_typeid = H5Tcreate(H5T_STRING, (size_t)H5T_VARIABLE)) < 0) ERR; - - /* Create fixed-length string datatype */ - if ((fixstr_typeid = H5Tcreate(H5T_STRING, (size_t)10)) < 0) ERR; - - - /* Set creation ordering for dataset, so we can revise its contents later */ - if ((dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) ERR; - if (H5Pset_attr_creation_order(dcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - - - /* Create scalar dataset with VL string datatype */ - if ((dsetid = H5Dcreate2(fileid, VSTR_VAR1_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close VL string dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Create scalar dataset with fixed-length string datatype */ - if ((dsetid = H5Dcreate2(fileid, FSTR_VAR_NAME, fixstr_typeid, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close fixed-length string dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Create scalar dataset with native integer datatype */ - if ((dsetid = H5Dcreate2(fileid, INT_VAR_NAME, H5T_NATIVE_INT, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close native integer dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Add attributes to root group */ - if (add_attrs(fileid) < 0) ERR; - - - /* Close dataset creation property list */ - if (H5Pclose(dcplid) < 0) ERR; - - /* Close string datatypes */ - if (H5Tclose(vlstr_typeid) < 0) ERR; - if (H5Tclose(fixstr_typeid) < 0) ERR; - - - /* Close rest */ - if (H5Sclose(scalar_spaceid) < 0) ERR; - if (H5Fclose(fileid) < 0) ERR; - } - SUMMARIZE_ERR; - - printf("*** Checking accessing file through netCDF-4 API..."); - { - int ncid, varid; - size_t len; - nc_type type; - int ndims; - char *vlstr; - int x; - - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check the global attributes are OK */ - if (check_attrs(ncid, NC_GLOBAL) < 0) ERR; - - /* Verify that the VL string dataset is present and OK */ - if (nc_inq_varid(ncid, VSTR_VAR1_NAME, &varid)) ERR; - if (varid != 0) ERR; - if (nc_inq_vartype(ncid, varid, &type)) ERR; - if (type != NC_STRING) ERR; - if (nc_inq_varndims(ncid, varid, &ndims)) ERR; - if (ndims != 0) ERR; - vlstr = NULL; - if (nc_get_var(ncid, varid, &vlstr)) ERR; - if (NULL != vlstr) ERR; - - /* Check the variable's attributes are OK */ - if (check_attrs(ncid, varid) < 0) ERR; - - /* Verify that the fixed-length string dataset is present and OK */ - if (nc_inq_varid(ncid, FSTR_VAR_NAME, &varid)) ERR; - if (varid != 1) ERR; - if (nc_inq_vartype(ncid, varid, &type)) ERR; - if (type != NC_STRING) ERR; - if (nc_inq_varndims(ncid, varid, &ndims)) ERR; - if (ndims != 0) ERR; - vlstr = NULL; - if (nc_get_var(ncid, varid, &vlstr)) ERR; - if ('\0' != *vlstr) ERR; - free(vlstr); - - /* Check the variable's attributes are OK */ - if (check_attrs(ncid, varid) < 0) ERR; - - /* Verify that the integer dataset is present and OK */ - if (nc_inq_varid(ncid, INT_VAR_NAME, &varid)) ERR; - if (varid != 2) ERR; - if (nc_inq_vartype(ncid, varid, &type)) ERR; - if (type != NC_INT) ERR; - if (nc_inq_varndims(ncid, varid, &ndims)) ERR; - if (ndims != 0) ERR; - x = -1; - if (nc_get_var(ncid, varid, &x)) ERR; - if (0 != x) ERR; - - /* Check the variable's attributes are OK */ - if (check_attrs(ncid, varid) < 0) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - - printf("*** Checking revising file through netCDF-4 API..."); - { - int ncid, varid; - char *vlstr; - - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - - /* Write to the VL string variable */ - if (nc_inq_varid(ncid, VSTR_VAR1_NAME, &varid)) ERR; - vlstr = NULL; - if (nc_put_var(ncid, varid, &vlstr)) ERR; - - vlstr = malloc(10); - *vlstr = '\0'; - if (nc_put_var(ncid, varid, &vlstr)) ERR; - - strcpy(vlstr, "foo"); - if (nc_put_var(ncid, varid, &vlstr)) ERR; - free(vlstr); - - - /* Write to a VL string attribute */ - vlstr = NULL; - if (nc_put_att(ncid, varid, VSTR_ATT1_NAME, NC_STRING, 1, &vlstr)) ERR; - - vlstr = malloc(10); - *vlstr = '\0'; - if (nc_put_att(ncid, varid, VSTR_ATT1_NAME, NC_STRING, 1, &vlstr)) ERR; - - strcpy(vlstr, "foo"); - if (nc_put_att(ncid, varid, VSTR_ATT1_NAME, NC_STRING, 1, &vlstr)) ERR; - free(vlstr); - - - /* Define a new VL string variable */ - if (nc_def_var(ncid, VSTR_VAR2_NAME , NC_STRING, 0, NULL, &varid)) ERR; - - /* Write to the variable's fill-value */ - vlstr = NULL; - if (nc_put_att(ncid, varid, _FillValue, NC_STRING, 1, &vlstr)) ERR; - - vlstr = malloc(10); - *vlstr = '\0'; - if (nc_put_att(ncid, varid, _FillValue, NC_STRING, 1, &vlstr)) ERR; - - strcpy(vlstr, "foo"); - if (nc_put_att(ncid, varid, _FillValue, NC_STRING, 1, &vlstr)) ERR; - free(vlstr); - - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_hdf4_read_var.sh b/contrib/netcdf/4.4.1.1/nc_test4/tst_hdf4_read_var.sh deleted file mode 100755 index a7f35f05aa3..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_hdf4_read_var.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# This shell script tests that an hdf4 file can be read a -# variable at a time. -# -# this was added in support of https://github.com/Unidata/netcdf-c/issues/264 - -FILE=tst_interops2.h4 - -set -e - -echo "" -echo "*** Testing reading an individual variable from an HDF4 file." - -../ncdump/ncdump -v hdf4_dataset_type_0 $FILE -../ncdump/ncdump -v hdf4_dataset_type_1 $FILE -../ncdump/ncdump -v hdf4_dataset_type_2 $FILE -../ncdump/ncdump -v hdf4_dataset_type_3 $FILE -../ncdump/ncdump -v hdf4_dataset_type_4 $FILE -../ncdump/ncdump -v hdf4_dataset_type_5 $FILE -../ncdump/ncdump -v hdf4_dataset_type_6 $FILE -../ncdump/ncdump -v hdf4_dataset_type_7 $FILE - -echo "*** Success." diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_interops3.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_interops3.c deleted file mode 100644 index b1a0c8fa92b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_interops3.c +++ /dev/null @@ -1,42 +0,0 @@ -/* This is part of the netCDF package. Copyright 2005-2011, University - Corporation for Atmospheric Research/Unidata. See COPYRIGHT file - for conditions of use. - - Test that NetCDF-4 can read a bunch of HDF4 files pulled in from - the FTP site. -*/ - -#include -#include -#include "err_macros.h" -#include - -#define FILE_NAME "tst_interops2.h4" - -int -main(int argc, char **argv) -{ - printf("\n*** Testing HDF4/NetCDF-4 interoperability...\n"); - printf("*** testing that all hdf4 files can be opened..."); - { -#define NUM_SAMPLE_FILES 5 - int ncid; - int nvars_in, ndims_in, natts_in, unlimdim_in; - char file_name[NUM_SAMPLE_FILES][NC_MAX_NAME + 1] = {"AMSR_E_L2_Rain_V10_200905312326_A.hdf", - "AMSR_E_L3_DailyLand_V06_20020619.hdf", - "MOD29.A2000055.0005.005.2006267200024.hdf", - "MYD29.A2002185.0000.005.2007160150627.hdf", - "MYD29.A2009152.0000.005.2009153124331.hdf"}; - size_t len_in; - int f; - - for (f = 0; f < NUM_SAMPLE_FILES; f++) - { - if (nc_open(file_name[f], NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdim_in)) ERR; - if (nc_close(ncid)) ERR; - } - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_large.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_large.c deleted file mode 100644 index 0a069c17019..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_large.c +++ /dev/null @@ -1,64 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id: tst_large.c,v 1.5 2009/05/18 10:26:24 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" -#include "ncdispatch.h" - -#define FILE_NAME "tst_large.nc" -#define NUMDIMS 2 /* rank of each variable in tests */ -#define DIM1 2048 -#define DIM2 2097153 /* DIM1*DIM2*sizeof(char) > 2**32 */ - - - -int -main(int argc, char **argv) -{ - - printf("\n*** Testing netcdf-4 large files.\n"); - printf("**** testing simple fill value attribute creation..."); - { - int ncid, varid, dimids[NUMDIMS]; - size_t index[NUMDIMS] = {0, 0}; - signed char vals[DIM2]; - signed char char_val_in; - size_t start[NUMDIMS] = {0, 0}, count[NUMDIMS] = {1, DIM2}; - int j; - - /* Create phony data. */ - for (j = 0; j < DIM2; j++) - vals[j] = 9 * (j + 11); /* note vals[j] is 99 when j==0 */ - - /* Create file with 2 dims and one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_set_fill(ncid, NC_NOFILL, NULL)) ERR; - if (nc_def_dim(ncid, "dim1", DIM1, &dimids[0])) ERR; - if (nc_def_dim(ncid, "dim2", DIM2, &dimids[1])) ERR; - if (nc_def_var(ncid, "var", NC_BYTE, NUMDIMS, dimids, &varid)) ERR; - if (nc_enddef(ncid)) ERR; - - /* Write one slice, then close. */ - if (nc_put_vara_schar(ncid, varid, start, count, vals)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen and read a value. */ -/* if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; */ -/* if (nc_inq_varid(ncid, "var", &varid)) ERR; */ -/* if (nc_get_var1_schar(ncid, varid, index, &char_val_in)) ERR; */ -/* if (char_val_in != 99) /\* see above, the value written when start[0]==0, j==0 *\/ */ -/* ERR; */ -/* if (nc_close(ncid)) ERR; */ - } - SUMMARIZE_ERR; - - nc_finalize(); - - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_misc.sh b/contrib/netcdf/4.4.1.1/nc_test4/tst_misc.sh deleted file mode 100755 index e5549f9fe4b..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_misc.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -set -e - -echo "*** Testing phony dimension creation on pure h5 file" -rm -f ./tmp -if ../ncdump/ncdump -L0 -K ${srcdir}/tdset.h5 >./tmp ; then -echo "*** Pass: phony dimension creation" -ECODE=0 -else -echo "*** Fail: phony dimension creation" -ECODE=1 -fi - -rm -f tmp - -exit $ECODE - - diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_rehash.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_rehash.c deleted file mode 100644 index 04ed0433254..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_rehash.c +++ /dev/null @@ -1,43 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2016 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Provided in support of https://github.com/Unidata/netcdf-c/issues/282 - Test provided by Greg Sjaardema - - Tests to see if the hashmap is being properly updated. - - */ - -#define FILENAME "tst_rehash.nc" - -#include -int main() -{ - int status; - int id; - int rh_id, varid, v1, v2, v3, v4; - int dimids[2]; - - - nc_create(FILENAME, NC_CLOBBER, &id); - nc_redef(id); - - status = nc_def_dim(id, "dim1", 10, &dimids[0]); - status = nc_def_var(id, "dim1", NC_FLOAT, 1, dimids, &v1); - status = nc_def_var(id, "var1", NC_FLOAT, 1, dimids, &v2); - - nc_close(id); - - nc_open(FILENAME, NC_WRITE, &id); - - nc_redef(id); - nc_rename_var(id, v1,"dim_new1"); - nc_rename_dim(id, dimids[0], "dim_new1"); - - status = nc_def_dim(id, "dim2", 20, &dimids[1]); - nc_def_var(id, "dim2", NC_FLOAT, 1, &dimids[1], &v3); - nc_def_var(id, "var2", NC_FLOAT, 2, dimids, &v4); - - nc_close(id); -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_rename.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_rename.c deleted file mode 100644 index 178ddbb7bea..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_rename.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Demonstrate netcdf-4 rename bug. - */ - -#include -#include -#include -#include - -/* On error, prints line number and file of test program. */ -#define ERR do { \ -fflush(stdout); \ -fprintf(stderr, "Unexpected result, %s, line: %d\n", \ - __FILE__, __LINE__); \ -return 2; \ -} while (0) - -#define FILE_NAME3 "tst_rnfix3.nc" -#define FILE_NAME4 "tst_rnfix4.nc" -#define ODIM_NAME "lat" /* name for coord dim */ -#define NDIM_NAME "tal" /* new name for coord dim */ -#define OVAR_NAME "lat" /* name for coord var */ -#define NVAR_NAME "tal" /* new name for coord var */ -#define OVAR2_NAME "rh" /* name for non-coord var that uses coord dim */ -#define VAR_RANK 1 /* all vars in this test are of same rank */ -#define DIM_LEN 2 /* all dims in this test are of same len */ - -/* For renaming tests. Create small test file of specified format - * with a coordinate dimension, corresponding coordinate variable, and - * a non-coordinate variable that uses the coordinate dimension. - */ -int -create_test_file( - char *path, /* filename */ - int format /* NC_FORMAT_CLASSIC, NC_FORMAT_64BIT, - NC_FORMAT_NETCDF4, or NC_FORMAT_NETCDF4_CLASSIC */ - ) -{ - int ncid, dimid, varid, var2id; - int dims[VAR_RANK]; - int lats[DIM_LEN] = {-90, 90}; - float rh[DIM_LEN] = {0.25, 0.75}; - switch (format) { - case (NC_FORMAT_CLASSIC): - if (nc_create(path, 0, &ncid)) ERR; - break; - case (NC_FORMAT_64BIT_OFFSET): - if (nc_create(path, NC_64BIT_OFFSET, &ncid)) ERR; - break; - case (NC_FORMAT_NETCDF4): - if (nc_create(path, NC_NETCDF4, &ncid)) ERR; - break; - case(NC_FORMAT_NETCDF4_CLASSIC): - if (nc_create(path, NC_NETCDF4 | NC_CLASSIC_MODEL, &ncid)) ERR; - break; - default: - ERR; - return NC_ENOTNC; - } - if (nc_def_dim(ncid, ODIM_NAME, DIM_LEN, &dimid)) ERR; - dims[0] = dimid; - if (nc_def_var(ncid, OVAR_NAME, NC_INT, VAR_RANK, dims, &varid)) ERR; - if (nc_def_var(ncid, OVAR2_NAME, NC_FLOAT, VAR_RANK, dims, &var2id)) ERR; - if (nc_enddef(ncid)) ERR; /* not necessary for netCDF-4 files */ - if (nc_put_var_int(ncid, varid, lats)) ERR; - if (nc_put_var_float(ncid, var2id, rh)) ERR; - if (nc_close(ncid)) ERR; - return 0; -} - -int -main(int argc, char **argv) -{ -#define NUM_FORMATS 2 - int formats[NUM_FORMATS] = {NC_FORMAT_NETCDF4, NC_FORMAT_NETCDF4_CLASSIC}; - char *fmt_names[] = {"netCDF-4", "netCDF-4 classic model"}; - char *file_names[] = {FILE_NAME3, FILE_NAME4}; - int format; - - fprintf(stderr,"*** Testing netcdf rename bugs and fixes.\n"); - - for(format = 0; format < NUM_FORMATS; format++) - { - int ncid, dimid, varid, var2id; - int lats[DIM_LEN] = {-90, 90}; - int lats_in[DIM_LEN]; - float rh[DIM_LEN] = {0.25, 0.75}; - float rh_in[DIM_LEN]; - int ii; - - fprintf(stderr,"*** Test renaming coordinate variable and its dimension for %s...\n", - fmt_names[format]); - if (create_test_file(file_names[format], formats[format])) ERR; - if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR; - if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR; - if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR; - if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR; - if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */ - if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR; - if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_get_var_int(ncid, varid, lats_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (lats_in[ii] != lats[ii]) - fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]); - } - if (nc_get_var_float(ncid, var2id, rh_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (rh_in[ii] != rh[ii]) - fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]); - } - if (nc_close(ncid)) ERR; - - fprintf(stderr,"*** Test renaming just coordinate variable for %s...\n", - fmt_names[format]); - if (create_test_file(file_names[format], formats[format])) ERR; - if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR; - if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR; - if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR; - if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR; - if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */ - /* if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR; */ - if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_get_var_int(ncid, varid, lats_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (lats_in[ii] != lats[ii]) - fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]); - } - if (nc_get_var_float(ncid, var2id, rh_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (rh_in[ii] != rh[ii]) - fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]); - } - if (nc_close(ncid)) ERR; - - - fprintf(stderr,"*** Test renaming just coordinate dimension for %s...\n", - fmt_names[format]); - if (create_test_file(file_names[format], formats[format])) ERR; - if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR; - if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR; - if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR; - if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR; - if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */ - if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR; - /* if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR; */ - if (nc_enddef(ncid)) ERR; - if (nc_get_var_int(ncid, varid, lats_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (lats_in[ii] != lats[ii]) - fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]); - } - if (nc_get_var_float(ncid, var2id, rh_in)) ERR; - for (ii = 0; ii < DIM_LEN; ii++) { - if (rh_in[ii] != rh[ii]) - fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]); - } - if (nc_close(ncid)) ERR; - - if (formats[format] == NC_FORMAT_NETCDF4) { - printf("*** Test renaming attribute in sub-group for %s...\n", - fmt_names[format]); - { -#define DIMNAME "lon" -#define VARNAME "lon" -#define G1_VARNAME "lon" -#define OLD_NAME "units" -#define NEW_NAME "new_units" -#define CONTENTS "degrees_east" -#define RANK_lon 1 -#define GRP_NAME "g1" -#define RANK_g1_lon 1 - - /* IDs of file, groups, dimensions, variables, attributes */ - int ncid, g1_grp, lon_dim, lon_var, g1_lon_var, units_att; - size_t lon_len = 4; - char *data_in; - - /* variable shapes */ - int lon_dims[RANK_lon]; - int g1_lon_dims[RANK_g1_lon]; - - if (!(data_in = malloc(strlen(CONTENTS) + 1))) ERR; - - /* Create test file */ - if (nc_create(file_names[format], NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; - /* Create subgroup and outer dimension */ - if (nc_def_grp(ncid, GRP_NAME, &g1_grp)) ERR; - if (nc_def_dim(ncid, DIMNAME, lon_len, &lon_dim)) ERR; - /* Create outer variable and subgroup variable */ - lon_dims[0] = lon_dim; - if (nc_def_var(ncid, VARNAME, NC_FLOAT, RANK_lon, lon_dims, &lon_var)) ERR; - g1_lon_dims[0] = lon_dim; - if (nc_def_var(g1_grp, G1_VARNAME, NC_FLOAT, RANK_g1_lon, g1_lon_dims, &g1_lon_var)) ERR; - /* assign per-variable attributes */ - if (nc_put_att_text(ncid, lon_var, OLD_NAME, strlen(CONTENTS), CONTENTS)) ERR; - if (nc_put_att_text(g1_grp, g1_lon_var, OLD_NAME, strlen(CONTENTS), CONTENTS)) ERR; - if (nc_enddef (ncid)) ERR; - /* write variable data */ - { - float lon_data[4] = {0, 90, 180, 270}; - size_t start[] = {0}; - size_t count[] = {4}; - if (nc_put_vara(ncid, lon_var, start, count, lon_data)) ERR; - } - { - float g1_lon_data[4] = {0, 90, 180, 270}; - size_t start[] = {0}; - size_t count[] = {4}; - if (nc_put_vara(g1_grp, g1_lon_var, start, count, g1_lon_data)) ERR; - } - if (nc_close(ncid)) ERR; - - /* reopen the file and rename the attribute in the subgroup */ - if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR; - if (nc_inq_grp_ncid(ncid, GRP_NAME, &g1_grp)) ERR; - if (nc_inq_varid(g1_grp,VARNAME,&g1_lon_var)) ERR; - if (nc_rename_att(g1_grp, g1_lon_var, OLD_NAME, NEW_NAME)) ERR; - if (nc_close(ncid)) ERR; - - /* reopen the file again and see if renamed attribute exists and - has expected value */ - { - nc_type att_type; - size_t att_len; - - if (nc_open(file_names[format], NC_NOWRITE, &ncid)) ERR; - if (nc_inq_grp_ncid(ncid, GRP_NAME, &g1_grp)) ERR; - if (nc_inq_varid(g1_grp, VARNAME, &g1_lon_var)) ERR; - if (nc_get_att_text(g1_grp, g1_lon_var, NEW_NAME, data_in)) ERR; - if (strncmp(CONTENTS, data_in, strlen(CONTENTS))) ERR; - if (nc_close(ncid)) ERR; - } - free(data_in); - } - } - } - - return(0); -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_simplerw_coll_r.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_simplerw_coll_r.c deleted file mode 100644 index 098db49c372..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_simplerw_coll_r.c +++ /dev/null @@ -1,249 +0,0 @@ -/* Copyright 2007-2011, UCAR/Unidata. See COPYRIGHT file for copying - and redistribution conditions. - - This is part of the netCDF package. - - This is a benchmarking program for netCDF-4 parallel I/O. -*/ - -/* Defining USE_MPE causes the MPE trace library to be used (and you - * must also relink with -llmpe -lmpe). This causes clog2 output to be - * written, which can be converted to slog2 (by the program - * clog2TOslog2) and then used in the analysis program jumpshot. */ -/*#define USE_MPE 1*/ - -#include -#include -#include -#include -#include - -#ifdef USE_MPE -#include -#endif /* USE_MPE */ - -#define FILE_NAME "tst_parallel4_simplerw_coll.nc" -#define NDIMS 3 -#define DIMSIZE 16 -#define NUM_SLABS 16 -#define DIM1_NAME "slab" -#define DIM2_NAME "x" -#define DIM3_NAME "y" -#define VAR_NAME "Bond_James_Bond" -#define ERR do { \ -fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ -fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ - __FILE__, __LINE__); \ -return 2; \ -} while (0) - -int -main(int argc, char **argv) -{ - /* MPI stuff. */ - int mpi_namelen; - char mpi_name[MPI_MAX_PROCESSOR_NAME]; - int mpi_size, mpi_rank; - MPI_Comm comm = MPI_COMM_WORLD; - MPI_Info info = MPI_INFO_NULL; - double start_time = 0, total_time; - - /* Netcdf-4 stuff. */ - int ncid, varid, dimids[NDIMS]; - size_t start[NDIMS] = {0, 0, 0}; - size_t count[NDIMS] = {1, DIMSIZE, DIMSIZE}; - int data[DIMSIZE * DIMSIZE], data_in[DIMSIZE * DIMSIZE]; - int j, i, ret; - - char file_name[NC_MAX_NAME + 1]; - int ndims_in, nvars_in, natts_in, unlimdimid_in; - -#ifdef USE_MPE - int s_init, e_init, s_define, e_define, s_write, e_write, s_close, e_close; -#endif /* USE_MPE */ - - /* Initialize MPI. */ - MPI_Init(&argc,&argv); - MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); - MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); - MPI_Get_processor_name(mpi_name, &mpi_namelen); - /*printf("mpi_name: %s size: %d rank: %d\n", mpi_name, mpi_size, mpi_rank);*/ -//#if 0 - /* Must be able to evenly divide my slabs between processors. */ - if (NUM_SLABS % mpi_size != 0) - { - if (!mpi_rank) printf("NUM_SLABS (%d) is not evenly divisible by mpi_size(%d)\n", - NUM_SLABS, mpi_size); - ERR; - } - -#ifdef USE_MPE - MPE_Init_log(); - s_init = MPE_Log_get_event_number(); - e_init = MPE_Log_get_event_number(); - s_define = MPE_Log_get_event_number(); - e_define = MPE_Log_get_event_number(); - s_write = MPE_Log_get_event_number(); - e_write = MPE_Log_get_event_number(); - s_close = MPE_Log_get_event_number(); - e_close = MPE_Log_get_event_number(); - s_open = MPE_Log_get_event_number(); - e_open = MPE_Log_get_event_number(); - MPE_Describe_state(s_init, e_init, "Init", "red"); - MPE_Describe_state(s_define, e_define, "Define", "yellow"); - MPE_Describe_state(s_write, e_write, "Write", "green"); - MPE_Describe_state(s_close, e_close, "Close", "purple"); - MPE_Describe_state(s_open, e_open, "Open", "blue"); - MPE_Start_log(); - MPE_Log_event(s_init, 0, "start init"); -#endif /* USE_MPE */ - -/* if (!mpi_rank) */ -/* { */ -/* printf("\n*** Testing parallel I/O some more.\n"); */ -/* printf("*** writing a %d x %d x %d file from %d processors...\n", */ -/* NUM_SLABS, DIMSIZE, DIMSIZE, mpi_size); */ -/* } */ - - /* We will write the same slab over and over. */ - for (i = 0; i < DIMSIZE * DIMSIZE; i++) - data[i] = mpi_rank; - -#ifdef USE_MPE - MPE_Log_event(e_init, 0, "end init"); - MPE_Log_event(s_define, 0, "start define file"); -#endif /* USE_MPE */ - - /* Create a parallel netcdf-4 file. */ - if (nc_create_par(FILE_NAME, NC_NETCDF4|NC_MPIIO, comm, info, &ncid)) ERR; - - /* A global attribute holds the number of processors that created - * the file. */ - if (nc_put_att_int(ncid, NC_GLOBAL, "num_processors", NC_INT, 1, &mpi_size)) ERR; - - /* Create three dimensions. */ - if (nc_def_dim(ncid, DIM1_NAME, NUM_SLABS, dimids)) ERR; - if (nc_def_dim(ncid, DIM2_NAME, DIMSIZE, &dimids[1])) ERR; - if (nc_def_dim(ncid, DIM3_NAME, DIMSIZE, &dimids[2])) ERR; - - /* Create one var. */ - if (nc_def_var(ncid, VAR_NAME, NC_INT, NDIMS, dimids, &varid)) ERR; - - /* Write metadata to file. */ - if (nc_enddef(ncid)) ERR; - -#ifdef USE_MPE - MPE_Log_event(e_define, 0, "end define file"); - if (mpi_rank) - sleep(mpi_rank); -#endif /* USE_MPE */ - -/* if (nc_var_par_access(ncid, varid, NC_COLLECTIVE)) ERR;*/ -/* if (nc_var_par_access(ncid, varid, NC_INDEPENDENT)) ERR;*/ - - if (!mpi_rank) - start_time = MPI_Wtime(); - - /* Write all the slabs this process is responsible for. */ - for (i = 0; i < NUM_SLABS / mpi_size; i++) - { - start[0] = NUM_SLABS / mpi_size * mpi_rank + i; - -#ifdef USE_MPE - MPE_Log_event(s_write, 0, "start write slab"); -#endif /* USE_MPE */ - - /* Write one slab of data. */ - if (nc_put_vara_int(ncid, varid, start, count, data)) ERR; - -#ifdef USE_MPE - MPE_Log_event(e_write, 0, "end write file"); -#endif /* USE_MPE */ - } - - if (!mpi_rank) - { - total_time = MPI_Wtime() - start_time; -/* printf("num_proc\ttime(s)\n");*/ - printf("%d\t%g\t%g\n", mpi_size, total_time, DIMSIZE * DIMSIZE * NUM_SLABS * sizeof(int) / total_time); - } - -#ifdef USE_MPE - MPE_Log_event(s_close, 0, "start close file"); -#endif /* USE_MPE */ - - /* Close the netcdf file. */ - if (nc_close(ncid)) ERR; - -//#endif -#ifdef USE_MPE - MPE_Log_event(e_close, 0, "end close file"); -#endif /* USE_MPE */ - - /* Reopen the file and check it. */ - if ((ret = nc_open_par(FILE_NAME, NC_NOWRITE|NC_MPIIO, comm, info, &ncid))) - { - printf("ret = %d\n", ret); - return -1; - } - if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdimid_in)) ERR; - if (ndims_in != NDIMS || nvars_in != 1 || natts_in != 1 || - unlimdimid_in != -1) ERR; - - /* Read all the slabs this process is responsible for. */ - for (i = 0; i < NUM_SLABS / mpi_size; i++) - { - start[0] = NUM_SLABS / mpi_size * mpi_rank + i; - -#ifdef USE_MPE - MPE_Log_event(s_read, 0, "start read slab"); -#endif /* USE_MPE */ - - if(mpi_rank == 0) { -for(j=0; j<3;j++) -count[j] = 0; - - } - if (nc_var_par_access(ncid, varid, NC_COLLECTIVE)) ERR; - /* Read one slab of data. */ - if (nc_get_vara_int(ncid, varid, start, count, data_in)) ERR; - -if(mpi_rank != 0) { - /* Check data. */ - for (j = 0; j < DIMSIZE * DIMSIZE; j++) - if (data_in[j] != mpi_rank) - { - ERR; - break; - } -} - -#ifdef USE_MPE - MPE_Log_event(e_read, 0, "end read file"); -#endif /* USE_MPE */ - } - -#ifdef USE_MPE - MPE_Log_event(s_close, 0, "start close file"); -#endif /* USE_MPE */ - - /* Close the netcdf file. */ - if (nc_close(ncid)) ERR; - -#ifdef USE_MPE - MPE_Log_event(e_close, 0, "end close file"); -#endif /* USE_MPE */ - - /* Delete this large file. */ - // remove(file_name); - - /* Shut down MPI. */ - MPI_Finalize(); - -/* if (!mpi_rank) */ -/* { */ -/* SUMMARIZE_ERR; */ -/* FINAL_RESULTS; */ -/* } */ - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_strings.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_strings.c deleted file mode 100644 index 30c951f832e..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_strings.c +++ /dev/null @@ -1,483 +0,0 @@ -/* This is part of the netCDF package. Copyright 2005 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. See www.unidata.ucar.edu for more info. - - Test netcdf-4 string types. - - $Id: tst_strings.c,v 1.34 2010/05/25 13:53:04 ed Exp $ -*/ - -#include -#include -#include "err_macros.h" - -#define FILE_NAME "tst_strings.nc" -#define DIM_LEN 9 -#define ATT_NAME "measure_for_measure_att" -#define DIM_NAME "line" -#define VAR_NAME "measure_for_measure_var" -#define NDIMS 1 - -int -main(int argc, char **argv) -{ - printf("\n*** Testing netcdf-4 string type.\n"); - printf("*** testing string attribute..."); - { -#define ATT_LEN_1 1 -#define MOUNTAIN_RANGE "mountain_range" - size_t att_len; - int ndims, nvars, natts, unlimdimid; - nc_type att_type; - int ncid, i; - char *data_in[ATT_LEN_1] = {NULL}; - char *data[ATT_LEN_1] = {"R"}; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_put_att(ncid, NC_GLOBAL, MOUNTAIN_RANGE, NC_STRING, ATT_LEN_1, data)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 0 || natts != 1 || unlimdimid != -1) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, MOUNTAIN_RANGE, &att_type, &att_len)) ERR; - if (att_type != NC_STRING || att_len != ATT_LEN_1) ERR; - if (nc_close(ncid)) ERR; - - /* Check it out. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 0 || natts != 1 || unlimdimid != -1) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, MOUNTAIN_RANGE, &att_type, &att_len)) ERR; - if (att_type != NC_STRING || att_len != ATT_LEN_1) ERR; - if (nc_get_att(ncid, NC_GLOBAL, MOUNTAIN_RANGE, data_in)) ERR; - for (i = 0; i < att_len; i++) - if (strcmp(data_in[i], data[i])) ERR; - if (nc_free_string(ATT_LEN_1, (char **)data_in)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing string attribute..."); - { -#define ATT_LEN 9 - size_t att_len; - int ndims, nvars, natts, unlimdimid; - nc_type att_type; - int ncid, i; - char *data_in[ATT_LEN]; - char *data[ATT_LEN] = {"Let but your honour know", - "Whom I believe to be most strait in virtue", - "That, in the working of your own affections", - "Had time cohered with place or place with wishing", - "Or that the resolute acting of your blood", - "Could have attain'd the effect of your own purpose", - "Whether you had not sometime in your life", - "Err'd in this point which now you censure him", - "And pull'd the law upon you."}; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_put_att(ncid, NC_GLOBAL, ATT_NAME, NC_STRING, ATT_LEN, data)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 0 || natts != 1 || unlimdimid != -1) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_NAME, &att_type, &att_len)) ERR; - if (att_type != NC_STRING || att_len != ATT_LEN) ERR; - if (nc_close(ncid)) ERR; - - /* Check it out. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 0 || natts != 1 || unlimdimid != -1) ERR; - if (nc_inq_att(ncid, NC_GLOBAL, ATT_NAME, &att_type, &att_len)) ERR; - if (att_type != NC_STRING || att_len != ATT_LEN) ERR; - if (nc_get_att(ncid, NC_GLOBAL, ATT_NAME, data_in)) ERR; - for (i = 0; i < att_len; i++) - if (strcmp(data_in[i], data[i])) ERR; - if (nc_free_string(att_len, (char **)data_in)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing string var functions..."); - { -#define MOBY_LEN 16 - int ncid, varid, dimids[NDIMS]; - char *data[] = {"Perhaps a very little thought will now enable you to account for ", - "those repeated whaling disasters--some few of which are casually ", - "chronicled--of this man or that man being taken out of the boat by ", - "the line, and lost.", - "For, when the line is darting out, to be seated then in the boat, ", - "is like being seated in the midst of the manifold whizzings of a ", - "steam-engine in full play, when every flying beam, and shaft, and wheel, ", - "is grazing you.", - "It is worse; for you cannot sit motionless in the heart of these perils, ", - "because the boat is rocking like a cradle, and you are pitched one way and ", - "the other, without the slightest warning;", - "But why say more?", - "All men live enveloped in whale-lines.", - "All are born with halters round their necks; but it is only when caught ", - "in the swift, sudden turn of death, that mortals realize the silent, subtle, ", - "ever-present perils of life."}; - char *data_in[MOBY_LEN]; - int i; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, MOBY_LEN, dimids)) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_STRING, NDIMS, dimids, &varid)) ERR; - if (nc_put_var_string(ncid, varid, (const char **)data)) ERR; - if (nc_close(ncid)) ERR; - - /* Check it out. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_get_var_string(ncid, varid, data_in)) ERR; - for (i=0; i= SOME_PRES && (data_in[i] == NULL || strcmp(data_in[i], ""))) ERR; - } - - /* Must free your data! */ - if (nc_free_string(NUM_PRES, (char **)data_in)) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** Testing netcdf-4 strided string access..."); - { -#define NUM_PRES 43 -#define SOME_PRES 16 -#define NDIMS_PRES 1 -#define VAR_NAME_P "presidents" - int ncid, varid, i, dimids[NDIMS_PRES]; - size_t start[NDIMS_PRES], count[NDIMS_PRES]; - ptrdiff_t stride[NDIMS_PRES]; - char *data[SOME_PRES] = {"Washington", "Adams", "Jefferson", "Madison", - "Monroe", "Adams", "Jackson", "Van Buren", - "Harrison", "Tyler", "Polk", "Taylor", - "Fillmore", "Pierce", "Buchanan", "Lincoln"}; - char *data_in[NUM_PRES]; - int status; - - /* Create a file with NUM_PRES strings, and write SOME_PRES of - * them. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, NUM_PRES, dimids)) ERR; - if (nc_def_var(ncid, VAR_NAME_P, NC_STRING, NDIMS_PRES, dimids, &varid)) ERR; - start[0] = 0; - count[0] = SOME_PRES; - stride[0] = 2; - status = nc_put_vars_string(ncid, varid, start, count, stride, (const char **)data); - if(status != NC_NOERR) - fprintf(stderr,"%s\n",nc_strerror(status)); - if (nc_close(ncid)) ERR; - - /* Check it out. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_get_vars_string(ncid, varid, start, count, stride, data_in)) ERR; - for (i = 0; i < NUM_PRES; i++) - { - if (i < SOME_PRES && strcmp(data_in[i], data[i])) ERR; - } - - /* Must free your data! */ - if (nc_free_string(SOME_PRES, (char **)data_in)) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("*** testing long string variable..."); - { -#define VAR_NAME2 "empty" -#define ATT_NAME2 "empty" -#define DHR_LEN 30 -#define DIM_NAME1 "article" -#define VAR_NAME1 "universal_declaration_of_human_rights" - int var_dimids[NDIMS]; - int ndims, nvars, natts, unlimdimid; - nc_type var_type; - char var_name[NC_MAX_NAME + 1]; - int var_natts, var_ndims; - int ncid, varid, i, dimids[NDIMS], varid2; - char *data_in[DHR_LEN]; - char *data[DHR_LEN] = { - "All human beings are born free and equal in dignity and rights. " - "They are endowed with reason and " - "conscience and should act towards one another in a " - "spirit of brotherhood.", - "Everyone is entitled to all the rights and freedoms set " - "forth in this Declaration, without distinction of " - "any kind, such as race, colour, sex, language, religion, " - "political or other opinion, national or social " - "origin, property, birth or other status. Furthermore, no " - "distinction shall be made on the basis of the " - "political, jurisdictional or international status of the " - "country or territory to which a person belongs, " - "whether it be independent, trust, non-self-governing or " - "under any other limitation of sovereignty.", - "Everyone has the right to life, liberty and security of person.", - "No one shall be held in slavery or servitude; slavery and the " - "slave trade shall be prohibited in all their forms.", - "No one shall be subjected to torture or to cruel, " - "inhuman or degrading treatment or punishment.", - "Everyone has the right to recognition everywhere as " - "a person before the law.", - "All are equal before the law and are entitled without " - "any discrimination to equal protection of the law. All are " - "entitled to equal protection against any discrimination in " - "violation of this Declaration and against any incitement " - "to such discrimination.", - "Everyone has the right to an effective remedy by the " - "competent national tribunals for acts violating the " - "fundamental rights granted " - "him by the constitution or by law.", - "No one shall be subjected to arbitrary arrest, detention or exile.", - "Everyone is entitled in full equality to a fair and public " - "hearing by an independent and impartial tribunal, in the " - "determination of his rights and obligations and of any " - "criminal charge against him.", - "(1) Everyone charged with a penal offence has the right " - "to be presumed innocent until proved guilty according to law in a " - "public trial at which he has had all the guarantees " - "necessary for his defence." - "(2) No one shall be held guilty of any penal offence " - "on account of any act or omission which did not constitute a penal " - "offence, under national or international law, at the time " - "when it was committed. Nor shall a heavier penalty be imposed " - "than the one that was applicable at the time the penal " - "offence was committed.", - "No one shall be subjected to arbitrary interference with " - "his privacy, family, home or correspondence, nor to attacks upon " - "his honour and reputation. Everyone has the right to the " - "protection of the law against such interference or attacks.", - "(1) Everyone has the right to freedom of movement and " - "residence within the borders of each state." - "(2) Everyone has the right to leave any country, " - "including his own, and to return to his country.", - "(1) Everyone has the right to seek and to enjoy in " - "other countries asylum from persecution. " - "(2) This right may not be invoked in the case of prosecutions " - "genuinely arising from non-political crimes or from acts " - "contrary to the purposes and principles of the United Nations.", - "(1) Everyone has the right to a nationality. (2) No one shall " - "be arbitrarily deprived of his nationality nor denied the " - "right to change his nationality.", - "(1) Men and women of full age, without any limitation " - "due to race, nationality or religion, have the right " - "to marry and to found a family. " - "They are entitled to equal rights as to marriage, " - "during marriage and at its dissolution. (2) Marriage " - "shall be entered into only with the free and full " - "consent of the intending spouses. (3) The family is " - "the natural and fundamental group unit of society and " - "is entitled to protection by society and the State.", - "(1) Everyone has the right to own property alone as " - "well as in association with others. (2) No one shall " - "be arbitrarily deprived of his property.", - "Everyone has the right to freedom of thought, conscience " - "and religion; this right includes freedom to change " - "his religion or belief, and freedom, " - "either alone or in community with others and in " - "public or private, to manifest his religion or " - "belief in teaching, practice, worship and observance.", - "Everyone has the right to freedom of opinion and " - "expression; this right includes freedom to hold " - "opinions without interference and to seek, receive " - "and impart information and ideas through any media " - "and regardless of frontiers.", - "(1) Everyone has the right to freedom of peaceful assembly " - "and association. (2) No one may be compelled to belong to " - "an association.", - "(1) Everyone has the right to take part in the government " - "of his country, directly or through freely chosen representatives. " - "(2) Everyone has the right of equal access to public " - "service in his country. (3) The will of the people " - "shall be the basis of the authority of government; " - "this will shall be expressed in periodic and genuine " - "elections which shall be by universal and equal suffrage " - "and shall be held by secret vote or by " - "equivalent free voting procedures.", - "Everyone, as a member of society, has the right to " - "social security and is entitled to realization, " - "through national effort and international co-operation " - "and in accordance with the organization and resources of " - "each State, of the economic, social and cultural rights " - "indispensable for his dignity and the free " - "development of his personality.", - "(1) Everyone has the right to work, to free choice " - "of employment, to just and favourable conditions of " - "work and to protection against unemployment. " - "(2) Everyone, without any discrimination, has the right " - "to equal pay for equal work. (3) Everyone who works " - "has the right to just and favourable " - "remuneration ensuring for himself and his family an " - "existence worthy of human dignity, and supplemented, " - "if necessary, by other means of social protection." - "(4) Everyone has the right to form and to join trade " - "unions for the protection of his interests.", - "Everyone has the right to rest and leisure, including " - "reasonable limitation of working hours and periodic " - "holidays with pay.", - "(1) Everyone has the right to a standard of living " - "adequate for the health and well-being of himself " - "and of his family, including food, clothing, housing " - "and medical care and necessary social services, and " - "the right to security in the event of unemployment, " - "sickness, disability, widowhood, old age or other lack " - "of livelihood in circumstances beyond his control. " - "(2) Motherhood and childhood are entitled to special " - "care and assistance. All children, whether " - "born in or out of wedlock, shall enjoy the same " - "social protection.", - "(1) Everyone has the right to education. Education " - "shall be free, at least in the elementary and " - "fundamental stages. Elementary education shall be compulsory. " - "Technical and professional education shall be made generally " - "available and higher education " - "shall be equally accessible to all on the basis of merit. " - "(2) Education shall be directed to the full development of " - "the human personality and to the strengthening of respect for " - "human rights and fundamental freedoms. " - "It shall promote understanding, tolerance and friendship among " - "all nations, racial or religious groups, and shall further the " - "activities of the United Nations " - "for the maintenance of peace. (3) Parents have a prior right to " - "choose the kind of education that shall be given to their children.", - "(1) Everyone has the right freely to participate in the cultural " - "life of the community, to enjoy the arts and to share in scientific " - "advancement and its benefits. " - "(2) Everyone has the right to the protection of the moral " - "and material interests resulting from any scientific, " - "literary or artistic production of which he is the author.", - "Everyone is entitled to a social and international order in " - "which the rights and freedoms set forth in this Declaration " - "can be fully realized.", - "(1) Everyone has duties to the community in which alone " - "the free and full development of his personality is possible. " - "(2) In the exercise of his rights and " - "freedoms, everyone shall be subject only to such limitations " - "as are determined by law solely for the purpose " - "of securing due recognition and respect for the rights " - "and freedoms of others and of meeting the just requirements " - "of morality, public order and the general welfare in a " - "democratic society. (3) These rights and freedoms may in no " - "case be exercised contrary to the purposes and " - "principles of the United Nations.", - "Nothing in this Declaration may be interpreted as implying " - "for any State, group or person any right to engage in any " - "activity or to perform any act aimed at the destruction of " - "any of the rights and freedoms set forth herein." - }; - char *empty_string[] = {""}; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* Create an array of strings for the Universal Declaraion of Human Rights. */ - if (nc_def_dim(ncid, DIM_NAME1, DHR_LEN, dimids)) ERR; - if (nc_def_var(ncid, VAR_NAME1, NC_STRING, NDIMS, dimids, &varid)) ERR; - - /* Create a scalar variable for the empty string. */ - if (nc_def_var(ncid, VAR_NAME2, NC_STRING, 0, NULL, &varid2)) ERR; - - /* Check some stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS || nvars != 2 || natts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, varid, var_name, &var_type, &var_ndims, - var_dimids, &var_natts)) ERR; - if (var_type != NC_STRING || strcmp(var_name, VAR_NAME1) || var_ndims != NDIMS || - var_dimids[0] != dimids[0]) ERR; - - /* Write the universal declaraion of human rights. */ - if (nc_put_var(ncid, varid, data)) ERR; - - /* Write an empty string with an empty attribute. */ - if (nc_put_var(ncid, varid2, empty_string)) ERR; - if (nc_put_att(ncid, varid2, ATT_NAME2, NC_STRING, 0, empty_string)) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - - /* Check it out. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS || nvars != 2 || natts != 0 || unlimdimid != -1) ERR; - - /* Check declaration. */ - if (nc_inq_varid(ncid, VAR_NAME1, &varid)) ERR; - if (nc_inq_var(ncid, varid, var_name, &var_type, &var_ndims, - var_dimids, &var_natts)) ERR; - if (var_type != NC_STRING || strcmp(var_name, VAR_NAME1) || var_ndims != NDIMS || - var_dimids[0] != dimids[0]) ERR; - if (nc_get_var(ncid, varid, data_in)) ERR; - for (i = 0; i < DHR_LEN; i++) - if (strcmp(data_in[i], data[i])) ERR; - if (nc_free_string(DHR_LEN, data_in)) ERR; - - /* Check the empty var and att. */ - if (nc_inq_varid(ncid, VAR_NAME2, &varid)) ERR; - if (nc_get_var(ncid, varid, data_in)) ERR; - if (strcmp(data_in[0], empty_string[0])) ERR; - if (nc_free_string(1, data_in)) ERR; - if (nc_get_att(ncid, varid, ATT_NAME2, NULL)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_sync.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_sync.c deleted file mode 100644 index 2cba1bff583..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_sync.c +++ /dev/null @@ -1,90 +0,0 @@ -/* This is part of the netCDF package. Copyright 2011 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. - - Test netcdf-4 syncs. -*/ - -#include -#include "err_macros.h" - -#define FILE_NAME "tst_sync.nc" -#define DIM_NAME "x" -#define VAR1_NAME "var1" -#define VAR2_NAME "var2" - -int -main(int argc, char **argv) -{ - printf("\n*** Testing netcdf-4 variable syncing.\n"); - printf("**** testing that sync works in netCDF-4..."); - { - int ncid, var1_id, var2_id, var3_id, dimid; - int ndims, nvars, natts, unlimdimid, dimid_in; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - - /* Create a file with one dim, and two vars that use it. For - * fun, do a sync between the def_var calls. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, 1, &dimid)) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_FLOAT, 1, &dimid, &var1_id)) ERR; - if (nc_sync(ncid)) ERR; - if (nc_def_var(ncid, VAR2_NAME, NC_FLOAT, 1, &dimid, &var2_id)) ERR; - - /* Now define a coordinate variable for the dimension. */ - if (nc_def_var(ncid, DIM_NAME, NC_FLOAT, 1, &dimid, &var3_id)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen the file and check it. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 1 || nvars != 3 || natts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 2, name_in, &xtype_in, &ndims, &dimid_in, &natts)) ERR; - if (strcmp(name_in, DIM_NAME) || xtype_in != NC_FLOAT || ndims != 1 || - dimid_in != 0 || natts != 0) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing that sync works in netCDF-4, with test contributed by Jeff W...."); - { - int ncid, var1_id, var2_id, var3_id, dimid; - - /* Create a file with one dim and two variables. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, 1, &dimid)) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_FLOAT, 1, &dimid, &var1_id)) ERR; - if (nc_def_var(ncid, VAR2_NAME, NC_FLOAT, 1,&dimid, &var2_id)) ERR; - - /* Sync the file and add a coordinate variable. */ - if (nc_sync(ncid)) ERR; - if (nc_def_var(ncid, DIM_NAME, NC_FLOAT, 1, &dimid, &var3_id)) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing that sync works in netCDF-4, with test contributed by Jeff W...."); - { - int ncid, var1_id, var2_id, var3_id, dimid; - float xx; - - if (nc_create(FILE_NAME, NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; - if (nc_def_dim(ncid, DIM_NAME, 1, &dimid)) ERR; - if (nc_def_var(ncid, VAR1_NAME, NC_FLOAT, 1, &dimid, &var1_id)) ERR; - xx = 1.0; - if (nc_put_var_float(ncid, var1_id, &xx)) ERR; - if (nc_sync(ncid)) ERR; - if (nc_def_var(ncid, VAR2_NAME, NC_FLOAT, 1,&dimid, &var2_id)) ERR; - xx = 2.0; - if (nc_put_var_float(ncid, var2_id, &xx)) ERR; - if (nc_sync(ncid)) ERR; - if (nc_def_var(ncid, DIM_NAME, NC_FLOAT, 1, &dimid, &var3_id)) ERR; - xx = 3.0; - if (nc_put_var_float(ncid, var3_id, &xx)) ERR; - if (nc_sync(ncid)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_utf8.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_utf8.c deleted file mode 100644 index 6d2bb456257..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_utf8.c +++ /dev/null @@ -1,289 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. - See COPYRIGHT file for conditions of use. - - This is a very simple example which writes a netCDF file with - Unicode names encoded with UTF-8. It is the NETCDF3 equivalent - of tst_unicode.c - - $Id: tst_utf8.c,v 1.14 2008/10/20 01:48:09 ed Exp $ -*/ - -#include -#include -#include -#include "err_macros.h" -#include -#include - -/* The data file we will create. */ -#define FILE_NAME "tst_utf8.nc" -#define NDIMS 1 -#define NX 18 -#define ENUM_VALUE 2 - -/* (unnormalized) UTF-8 encoding for Unicode 8-character "Hello" in Greek */ -char name_utf8[] = "\xCE\x9A\xCE\xB1\xCE\xBB\xCE\xB7\xCE\xBC\xE1\xBD\xB3\xCF\x81\xCE\xB1"; - -/* NFC normalized UTF-8 for Unicode 8-character "Hello" in Greek */ -char norm_utf8[] = "\xCE\x9A\xCE\xB1\xCE\xBB\xCE\xB7\xCE\xBC\xCE\xAD\xCF\x81\xCE\xB1"; - -/* This is the struct for the compound type. */ -struct comp { - int i; -}; - -/* Given an ncid, check the file to make sure it has all the objects I - * expect. */ -int -check_nc4_file(int ncid) -{ - int varid, dimid, attnum, grpid, grpid2, grpid3, numgrps; - int numtypes, enum_typeid, comp_typeid; - int class_in; - size_t att_len, size_in, num_mem, nfields_in; - nc_type att_type, base_type_in; - char name_in[NC_MAX_NAME + 1], strings_in[NC_MAX_NAME + 1], value; - - /* Check the group. */ - if (nc_inq_grps(ncid, &numgrps, &grpid)) ERR; - if (numgrps != 1) ERR; - name_in[0] = 0; - if (nc_inq_grpname(grpid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - - /* Check the variable. */ - if (nc_inq_varid(grpid, name_utf8, &varid)) ERR; - if (nc_inq_varname(grpid, varid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_inq_varid(grpid, norm_utf8, &varid)) ERR; - name_in[0] = 0; - if (nc_inq_varname(grpid, varid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_get_var(grpid, varid, strings_in)) ERR; - if (strncmp(name_utf8, strings_in, sizeof(name_utf8))) ERR; - strings_in[0] = '\0'; /* Reset my string buffer. */ - - /* Check the dimension. */ - if (nc_inq_dimid(grpid, name_utf8, &dimid)) ERR; - if (nc_inq_dimname(grpid, dimid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_inq_dimid(grpid, norm_utf8, &dimid)) ERR; - if (nc_inq_dimname(grpid, dimid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - - /* Check the attribute. We don't normalize data or attribute - * values, so get exactly what was put for the value, but - * normalized values for names. */ - if (nc_inq_attid(grpid, varid, norm_utf8, &attnum)) ERR; - if (attnum) ERR; - attnum = 99; /* Reset. */ - if (nc_inq_attid(grpid, varid, name_utf8, &attnum)) ERR; - if (attnum) ERR; - if (nc_inq_att(grpid, varid, norm_utf8, &att_type, &att_len)) ERR; - if (att_type != NC_CHAR || att_len != sizeof(name_utf8)) ERR; - if (nc_get_att_text(grpid, varid, norm_utf8, strings_in)) ERR; - if (strncmp(name_utf8, strings_in, sizeof(name_utf8))) ERR; - - /* Check the enum type. */ - if (nc_inq_grps(grpid, &numgrps, &grpid2)) ERR; - if (numgrps != 1) ERR; - if (nc_inq_typeids(grpid2, &numtypes, &enum_typeid)) ERR; - if (numtypes != 1) ERR; - if (nc_inq_user_type(grpid2, enum_typeid, name_in, &size_in, &base_type_in, - &nfields_in, &class_in)) ERR; - if (strncmp(norm_utf8, name_in, strlen(norm_utf8)) || size_in != 1 || - base_type_in != NC_BYTE || nfields_in != 1 || class_in != NC_ENUM) ERR; - name_in[0] = size_in = base_type_in = 0; - if (nc_inq_enum(grpid2, enum_typeid, name_in, &base_type_in, &size_in, &num_mem)) ERR; - if (strncmp(norm_utf8, name_in, strlen(norm_utf8)) || size_in != 1 || - base_type_in != NC_BYTE || num_mem != 1) ERR; - if (nc_inq_enum_member(grpid2, enum_typeid, 0, name_in, &value)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8)) || value != ENUM_VALUE) ERR; - - /* Check the compound type. */ - if (nc_inq_grps(grpid2, &numgrps, &grpid3)) ERR; - if (numgrps != 1) ERR; - if (nc_inq_typeids(grpid3, &numtypes, &comp_typeid)) ERR; - if (numtypes != 1) ERR; - name_in[0] = 0; - if (nc_inq_user_type(grpid3, comp_typeid, name_in, &size_in, &base_type_in, - &nfields_in, &class_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8)) || size_in != sizeof(struct comp) || - base_type_in != NC_NAT || nfields_in != 1 || class_in != NC_COMPOUND) ERR; - size_in = nfields_in = 999; - if (nc_inq_compound(grpid3, comp_typeid, name_in, &size_in, &nfields_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8)) || size_in != sizeof(struct comp) || - nfields_in != 1) ERR; - name_in[0] = 0; - if (nc_inq_compound_fieldname(grpid3, comp_typeid, 0, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - return NC_NOERR; -} - -/* Given an ncid, check the file to make sure it has all the objects I - * expect. */ -int -check_classic_file(int ncid) -{ - int varid, dimid, attnum; - size_t att_len; - nc_type att_type; - char name_in[sizeof(name_utf8) + 1], strings_in[sizeof(name_utf8) + 1]; - - /* Check the variable. */ - if (nc_inq_varid(ncid, name_utf8, &varid)) ERR; - if (nc_inq_varname(ncid, varid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_inq_varid(ncid, norm_utf8, &varid)) ERR; - name_in[0] = 0; - if (nc_inq_varname(ncid, varid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_get_var_text(ncid, varid, strings_in)) ERR; - if (strncmp(name_utf8, strings_in, sizeof(name_utf8))) ERR; - strings_in[0] = '\0'; /* Reset my string buffer. */ - - /* Check the dimension. */ - if (nc_inq_dimid(ncid, name_utf8, &dimid)) ERR; - if (nc_inq_dimname(ncid, dimid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - if (nc_inq_dimid(ncid, norm_utf8, &dimid)) ERR; - if (nc_inq_dimname(ncid, dimid, name_in)) ERR; - if (strncmp(norm_utf8, name_in, sizeof(norm_utf8))) ERR; - - /* Check the attribute. We don't normalize data or attribute - * values, so get exactly what was put for the value, but - * normalized values for names. */ - if (nc_inq_attid(ncid, varid, norm_utf8, &attnum)) ERR; - if (attnum) ERR; - attnum = 99; /* Reset. */ - if (nc_inq_attid(ncid, varid, name_utf8, &attnum)) ERR; - if (attnum) ERR; - if (nc_inq_att(ncid, varid, norm_utf8, &att_type, &att_len)) ERR; - if (att_type != NC_CHAR || att_len != sizeof(name_utf8)) ERR; - if (nc_get_att_text(ncid, varid, norm_utf8, strings_in)) ERR; - if (strncmp(name_utf8, strings_in, sizeof(name_utf8))) ERR; - return NC_NOERR; -} - -int -main(int argc, char **argv) -{ - printf("\n*** Testing UTF-8 names.\n"); - printf("*** creating UTF-8 names in classic model netcdf files..."); - { - int ncid, varid, dimids[NDIMS]; - int f; - - for (f = NC_FORMAT_CLASSIC; f < NC_FORMAT_NETCDF4_CLASSIC; f++) - { - if (nc_set_default_format(f, NULL)) ERR; - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; - - /* Define various netcdf objects with a Unicode UTF-8 encoded name - * that must be normalized. Where possible, also use the utf8 - * string as the value. The name will be normalized, but not the - * value. */ - if (nc_def_dim(ncid, name_utf8, NX, &dimids[0])) ERR; - if (nc_def_var(ncid, name_utf8, NC_CHAR, NDIMS, dimids, &varid)) ERR; - if (nc_put_att_text(ncid, varid, name_utf8, sizeof(name_utf8), name_utf8)) ERR; - - if (nc_enddef(ncid)) ERR; - - /* Write var data. */ - if (nc_put_var_text(ncid, varid, name_utf8)) ERR; - - /* Check the file. */ - check_classic_file(ncid); - - if (nc_close(ncid)) ERR; - - /* Reopen the file and check again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - check_classic_file(ncid); - if (nc_close(ncid)) ERR; - } /* next format */ - } - SUMMARIZE_ERR; - -#define DIM1_NAME "d1" -#define VAR1_NAME "v1" -#define ATT1_NAME "a1" - - printf("*** renaming to UTF-8 names in classic model netcdf files..."); - { - int ncid, varid, dimids[NDIMS]; - int f; - - for (f = NC_FORMAT_CLASSIC; f < NC_FORMAT_NETCDF4_CLASSIC; f++) - { - if (nc_set_default_format(f, NULL)) ERR; - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; - - /* Create objects. */ - if (nc_def_dim(ncid, DIM1_NAME, NX, &dimids[0])) ERR; - if (nc_rename_dim(ncid, 0, name_utf8)) ERR; - if (nc_def_var(ncid, name_utf8, NC_CHAR, NDIMS, dimids, &varid)) ERR; - if (nc_put_att_text(ncid, varid, ATT1_NAME, sizeof(name_utf8), name_utf8)) ERR; - if (nc_rename_att(ncid, 0, ATT1_NAME, name_utf8)) ERR; - - if (nc_enddef(ncid)) ERR; - - /* Write var data. */ - if (nc_put_var_text(ncid, varid, name_utf8)) ERR; - - /* Check the file. */ - check_classic_file(ncid); - - if (nc_close(ncid)) ERR; - - /* Reopen the file and check again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - check_classic_file(ncid); - if (nc_close(ncid)) ERR; - } /* next format */ - } - SUMMARIZE_ERR; - - printf("*** creating UTF-8 names in netcdf-4 file..."); - { - int ncid, varid, grpid, comp_typeid, enum_typeid, grpid2, grpid3; - int dimids[NDIMS]; - char my_int = ENUM_VALUE; - - if (nc_create(FILE_NAME, NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; - - /* Define various netcdf objects with a Unicode UTF-8 encoded name - * that must be normalized. Where possible, also use the utf8 - * string as the value. The name will be normalized, but not the - * value. */ - if (nc_def_grp(ncid, name_utf8, &grpid)) ERR; - if (nc_def_dim(grpid, name_utf8, NX, &dimids[0])) ERR; - if (nc_def_var(grpid, name_utf8, NC_CHAR, NDIMS, dimids, &varid)) ERR; - if (nc_put_att_text(grpid, varid, name_utf8, sizeof(name_utf8), name_utf8)) ERR; - - if (nc_def_grp(grpid, "tmp", &grpid2)) ERR; - if (nc_def_enum(grpid2, NC_BYTE, name_utf8, &enum_typeid)) ERR; - if (nc_insert_enum(grpid2, enum_typeid, name_utf8, &my_int)) ERR; - - if (nc_def_grp(grpid2, "tmp", &grpid3)) ERR; - if (nc_def_compound(grpid3, sizeof(struct comp), name_utf8, &comp_typeid)) ERR; - if (nc_insert_compound(grpid3, comp_typeid, name_utf8, offsetof(struct comp, i), NC_INT)) ERR; - - /* Write var data. */ - if (nc_put_var_text(grpid, varid, name_utf8)) ERR; - - /* Check the file. */ - check_nc4_file(ncid); - - if (nc_close(ncid)) ERR; - - /* Reopen the file and check again. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - check_nc4_file(ncid); - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars2.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_vars2.c deleted file mode 100644 index 5b8081bd33d..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars2.c +++ /dev/null @@ -1,1072 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id: tst_vars2.c,v 1.35 2010/01/25 21:01:08 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" - -#define FILE_NAME "tst_vars2.nc" -#define NUM_DIMS 1 -#define DIM1_LEN NC_UNLIMITED -#define DIM1_NAME "Hoplites_Engaged" -#define VAR_NAME "Battle_of_Marathon" -#define LOSSES_NAME "Miltiades_Losses" - -#define MAX_CNUM 4 - -int -main(int argc, char **argv) -{ - int ncid, dimids[NUM_DIMS]; - int varid; - int nvars_in, varids_in[NUM_DIMS]; - signed char fill_value = 42, fill_value_in; - nc_type xtype_in; - size_t len_in; - char name_in[NC_MAX_NAME + 1]; - int attnum_in; - int cnum; - - printf("\n*** Testing netcdf-4 variable functions, even more.\n"); - for (cnum = 0; cnum < MAX_CNUM; cnum++) - { - int cmode = 0; - - switch(cnum) - { - case 0: - printf("*** Testing with classic format:\n"); - cmode = 0; - break; - case 1: - printf("*** Testing with 64-bit offset format:\n"); - cmode = NC_64BIT_OFFSET; - break; - case 2: - printf("*** Testing with HDF5:\n"); - cmode = NC_NETCDF4|NC_CLOBBER; - break; - case 3: - printf("*** Testing with HDF5, netCDF Classic Model:\n"); - cmode = NC_CLASSIC_MODEL | NC_NETCDF4; - break; - default: - return 1; - } - - printf("**** testing simple fill value attribute creation..."); - { - /* Create a netcdf-4 file with one scalar var. Add fill - * value. */ - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_BYTE, 0, NULL, &varid)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_put_att_schar(ncid, varid, _FillValue, NC_BYTE, 1, &fill_value)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in != 1 || varids_in[0] != 0) ERR; - if (nc_inq_varname(ncid, 0, name_in)) ERR; - if (strcmp(name_in, VAR_NAME)) ERR; - if (nc_inq_att(ncid, varid, _FillValue, &xtype_in, &len_in)) ERR; - if (xtype_in != NC_BYTE || len_in != 1) ERR; - if (nc_get_att(ncid, varid, _FillValue, &fill_value_in)) ERR; - if (fill_value_in != fill_value) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing simple fill value with data read..."); - { - size_t start[NUM_DIMS], count[NUM_DIMS]; - signed char data = 99, data_in; - - /* Create a netcdf-4 file with one unlimited dim and one - * var. Add fill value. */ - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_BYTE, NUM_DIMS, dimids, &varid)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_put_att_schar(ncid, varid, _FillValue, NC_BYTE, 1, &fill_value)) ERR; - if (nc_enddef(ncid)) ERR; - - /* Write the second record. */ - start[0] = 1; - count[0] = 1; - if (nc_put_vara_schar(ncid, varid, start, count, &data)) ERR; - - /* Read the first record, it should be the fill value. */ - start[0] = 0; - if (nc_get_vara_schar(ncid, varid, start, count, &data_in)) ERR; - if (data_in != fill_value) ERR; - - /* Read the second record, it should be the value we just wrote - * there. */ - start[0] = 1; - if (nc_get_vara_schar(ncid, varid, start, count, &data_in)) ERR; - if (data_in != data) ERR; - - /* Close up. */ - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check metadata. */ - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in != 1 || varids_in[0] != 0) ERR; - if (nc_inq_varname(ncid, 0, name_in)) ERR; - if (strcmp(name_in, VAR_NAME)) ERR; - - /* Check fill value att. */ - if (nc_inq_att(ncid, varid, _FillValue, &xtype_in, &len_in)) ERR; - if (xtype_in != NC_BYTE || len_in != 1) ERR; - if (nc_get_att(ncid, varid, _FillValue, &fill_value_in)) ERR; - if (fill_value_in != fill_value) ERR; - - /* Read the first record, it should be the fill value. */ - start[0] = 0; - if (nc_get_vara_schar(ncid, varid, start, count, &data_in)) ERR; - if (data_in != fill_value) ERR; - - /* Read the second record, it should be the value we just wrote - * there. */ - start[0] = 1; - if (nc_get_vara_schar(ncid, varid, start, count, &data_in)) ERR; - if (data_in != data) ERR; - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing fill value with one other attribute..."); - - { - int losses_value = 192, losses_value_in; - - /* Create a netcdf-4 file with one dim and one var. Add another - * attribute, then fill value. */ - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_BYTE, NUM_DIMS, dimids, &varid)) ERR; - if (nc_put_att_int(ncid, varid, LOSSES_NAME, NC_INT, 1, &losses_value)) ERR; - if (nc_put_att_schar(ncid, varid, _FillValue, NC_BYTE, 1, &fill_value)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq_att(ncid, 0, LOSSES_NAME, &xtype_in, &len_in)) ERR; - if (xtype_in != NC_INT || len_in != 1) ERR; - if (nc_get_att(ncid, 0, LOSSES_NAME, &losses_value_in)) ERR; - if (losses_value_in != losses_value) ERR; - if (nc_inq_att(ncid, 0, _FillValue, &xtype_in, &len_in)) ERR; - if (xtype_in != NC_BYTE || len_in != 1) ERR; - if (nc_get_att(ncid, 0, _FillValue, &fill_value_in)) ERR; - if (fill_value_in != fill_value) ERR; - if (nc_inq_attid(ncid, 0, LOSSES_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, _FillValue, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing fill value with three other attributes..."); - { -#define NUM_LEADERS 3 - char leader[NUM_LEADERS][NC_MAX_NAME + 1] = {"hair_length_of_strategoi", - "hair_length_of_Miltiades", - "hair_length_of_Darius_I"}; - short hair_length[NUM_LEADERS] = {3, 11, 4}; - short short_in; - int a; - - /* Create a netcdf file with one dim and one var. Add 3 - * attributes, then fill value. */ - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; - if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_BYTE, NUM_DIMS, dimids, &varid)) ERR; - for (a = 0; a < NUM_LEADERS; a++) - if (nc_put_att_short(ncid, varid, leader[a], NC_SHORT, 1, &hair_length[a])) ERR; - if (nc_put_att_schar(ncid, varid, _FillValue, NC_BYTE, 1, &fill_value)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check our three hair-related attributes. */ - for (a = 0; a < NUM_LEADERS; a++) - { - if (nc_inq_att(ncid, 0, leader[a], &xtype_in, &len_in)) ERR; - if (xtype_in != NC_SHORT || len_in != 1) ERR; - if (nc_get_att(ncid, 0, leader[a], &short_in)) ERR; - if (short_in != hair_length[a]) ERR; - if (nc_inq_attid(ncid, 0, leader[a], &attnum_in)) ERR; - if (attnum_in != a) ERR; - } - - /* Check our fill value attribute. */ - if (nc_inq_att(ncid, 0, _FillValue, &xtype_in, &len_in)) ERR; - if (xtype_in != NC_BYTE || len_in != 1) ERR; - if (nc_get_att(ncid, 0, _FillValue, &fill_value_in)) ERR; - if (fill_value_in != fill_value) ERR; - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing fill value with simple example..."); - { -/* Dims stuff. */ -#define NDIMS 3 -#define VAR_DIMS 3 -#define DIM_A "dim1" -#define DIM_A_LEN 4 -#define DIM_B "dim2" -#define DIM_B_LEN 3 -#define DIM_C "dim3" -#define DIM_C_LEN NC_UNLIMITED - -/* Var stuff. */ -#define CXX_VAR_NAME "P" - -/* Att stuff. */ -#define NUM_ATTS 4 -#define LONG_NAME "long_name" -#define PRES_MAX_WIND "pressure at maximum wind" -#define UNITS "units" -#define HECTOPASCALS "hectopascals" - - int dimid[NDIMS], var_dimids[VAR_DIMS] = {2, 1, 0}; - float fill_value = -9999.0f; - char long_name[] = PRES_MAX_WIND; - - if (nc_create(FILE_NAME, cmode, &ncid)) ERR; - - /* Create dims. */ - if (nc_def_dim(ncid, DIM_A, DIM_A_LEN, &dimid[0])) ERR; - if (nc_def_dim (ncid, DIM_B, DIM_B_LEN, &dimid[1])) ERR; - if (nc_def_dim(ncid, DIM_C, DIM_C_LEN, &dimid[2])) ERR; - - /* Create var. */ - if (nc_def_var(ncid, CXX_VAR_NAME, NC_FLOAT, VAR_DIMS, - var_dimids, &varid)) ERR; - if (varid) ERR; - - if (nc_put_att(ncid, varid, LONG_NAME, NC_CHAR, strlen(long_name) + 1, - long_name)) ERR; - if (nc_put_att(ncid, varid, UNITS, NC_CHAR, strlen(UNITS) + 1, - UNITS)) ERR; - - /* Check to ensure the atts have their expected attnums. */ - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - - /* Now add a fill value. This will acutually cause HDF5 to - * destroy the dataset and recreate it, recreating also the - * three attributes that are attached to it. */ - if (nc_put_att(ncid, varid, _FillValue, NC_FLOAT, - 1, &fill_value)) ERR; - - /* Check to ensure the atts have their expected attnums. */ - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, 0, &ncid)) ERR; - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - if (nc_inq_attid(ncid, 0, _FillValue, &attnum_in)) ERR; - if (attnum_in != 2) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - -#ifndef NO_NETCDF_2 - /* The following test is an attempt to recreate a problem occurring - in the cxx tests. The file is created in c++ in nctsts.cpp. */ - printf("**** testing fill value with example from cxx tests in v2 api..."); - { -/* Dims stuff. */ -#define NDIMS_1 4 -#define VAR_DIMS 3 -#define LAT "lat" -#define LAT_LEN 4 -#define LON "lon" -#define LON_LEN 3 -#define FRTIMED "frtimed" -#define FRTIMED_LEN NC_UNLIMITED -#define TIMELEN "timelen" -#define TIMELEN_LEN 20 - -/* Var stuff. */ -#define CXX_VAR_NAME "P" - -/* Att stuff. */ -#define NUM_ATTS 4 -#define LONG_NAME "long_name" -#define UNITS "units" - - int dimid[NDIMS_1], var_dimids[VAR_DIMS] = {2, 0, 1}; - float fill_value = -9999.0f; - char long_name[] = PRES_MAX_WIND; - int i, attid[NUM_ATTS]; - - ncid = nccreate(FILE_NAME, NC_NETCDF4); - - /* Create dims. */ - dimid[0] = ncdimdef(ncid, LAT, LAT_LEN); - dimid[1] = ncdimdef(ncid, LON, LON_LEN); - dimid[2] = ncdimdef(ncid, FRTIMED, FRTIMED_LEN); - dimid[3] = ncdimdef(ncid, TIMELEN, TIMELEN_LEN); - - /* Just check our dimids to see that they are correct. */ - for (i = 0; i < NDIMS_1; i++) - if (dimid[i] != i) ERR; - - /* Create var. */ - varid = ncvardef(ncid, CXX_VAR_NAME, NC_FLOAT, VAR_DIMS, var_dimids); - if (varid) ERR; - - /* Add three atts to the var, long_name, units, and - * valid_range. */ - if (nc_put_att(ncid, varid, LONG_NAME, NC_CHAR, strlen(long_name) + 1, - long_name)) ERR; - if (nc_put_att(ncid, varid, UNITS, NC_CHAR, strlen(UNITS) + 1, - UNITS)) ERR; - - /* Check to ensure the atts have their expected attnums. */ - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - - /* Now add a fill value. This will acutually cause HDF5 to - * destroy the dataset and recreate it, recreating also the - * three attributes that are attached to it. */ - attid[3] = ncattput(ncid, varid, _FillValue, NC_FLOAT, - 1, &fill_value); - - /* Check to ensure the atts have their expected attnums. */ - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - if (nc_inq_attid(ncid, 0, _FillValue, &attnum_in)) ERR; - if (attnum_in != 2) ERR; - - ncclose(ncid); - - /* Open the file and check. */ - ncid = ncopen(FILE_NAME, 0); - if (nc_inq_attid(ncid, 0, LONG_NAME, &attnum_in)) ERR; - if (attnum_in != 0) ERR; - if (nc_inq_attid(ncid, 0, UNITS, &attnum_in)) ERR; - if (attnum_in != 1) ERR; - if (nc_inq_attid(ncid, 0, _FillValue, &attnum_in)) ERR; - if (attnum_in != 2) ERR; - ncclose(ncid); - } - SUMMARIZE_ERR; -#endif /* NO_NETCDF_2 */ - } - - printf("**** testing create order varids..."); - -#define UNITS "units" -#define DIMNAME "x" -#define VARNAME "data" - { - /* This test contributed by Jeff Whitaker of NOAA - Thanks Jeff! */ - int ncid, dimid, varid, xvarid; - char units[] = "zlotys"; - - if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLASSIC_MODEL, &ncid)) ERR; - if (nc_def_dim(ncid, DIMNAME, 1, &dimid)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_def_var(ncid, DIMNAME, NC_INT, 1, &dimid, &xvarid)) ERR; - if (nc_put_att_text(ncid, xvarid, UNITS, strlen(units), units)) ERR; - if (nc_def_var(ncid, VARNAME, NC_INT, 1, &dimid, &varid)) ERR; - if (nc_close(ncid)) ERR; - - if (nc_open(FILE_NAME, 0, &ncid)) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; -#define RANK_wind 1 - printf("**** testing simple variable renaming..."); - { - /* This test contributed by Jeff Whitaker of NOAA - Thanks Jeff! */ - int ncid, lat_dim, time_dim, lon_dim, wind_id; - size_t lat_len = 73, time_len = 10, lon_len = 145; - int cdf_goober[1]; - -/* if (nc_set_default_format(NC_FORMAT_NETCDF4, NULL)) ERR;*/ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* define dimensions */ - if (nc_def_dim(ncid, "a", lon_len, &lon_dim)) ERR; - if (nc_def_dim(ncid, "b", lat_len, &lat_dim)) ERR; - if (nc_def_dim(ncid, "c", time_len, &time_dim)) ERR; - - if (nc_put_att_text(ncid, NC_GLOBAL, "a", 3, "bar")) ERR; - cdf_goober[0] = 2; - if (nc_put_att_int(ncid, NC_GLOBAL, "b", NC_INT, 1, cdf_goober)) ERR; - - /* define variables */ - if (nc_def_var(ncid, "aa", NC_FLOAT, RANK_wind, &lon_dim, &wind_id)) ERR; - if (nc_close(ncid)) ERR; - - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_rename_var(ncid, 0, "az")) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing dimension and variable renaming..."); - { - /* This test contributed by Jeff Whitaker of NOAA - Thanks Jeff! */ - int ncid, lat_dim, time_dim, lon_dim, wind_id; - size_t lat_len = 73, time_len = 10, lon_len = 145; - int wind_dims[RANK_wind], wind_slobber[1], cdf_goober[1]; - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - - /* define dimensions */ - if (nc_def_dim(ncid, "lon", lon_len, &lon_dim)) ERR; - if (nc_def_dim(ncid, "lat", lat_len, &lat_dim)) ERR; - if (nc_def_dim(ncid, "time", time_len, &time_dim)) ERR; - - if (nc_put_att_text(ncid, NC_GLOBAL, "foo", 3, "bar")) ERR; - cdf_goober[0] = 2; - if (nc_put_att_int(ncid, NC_GLOBAL, "goober", NC_INT, 1, cdf_goober)) ERR; - - /* define variables */ - wind_dims[0] = lon_dim; - if (nc_def_var(ncid, "temp", NC_FLOAT, RANK_wind, wind_dims, &wind_id)) ERR; - - if (nc_put_att_text(ncid, wind_id, "bar", 3, "foo")) ERR; - wind_slobber[0] = 3; - if (nc_put_att_int(ncid, wind_id, "slobber", NC_INT, 1, wind_slobber)) ERR; - if (nc_close(ncid)) ERR; - - /* re-open dataset*/ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_dimid(ncid, "lon", &lon_dim)) ERR; - - /* rename dimension */ - if (nc_rename_dim(ncid, lon_dim, "longitude")) ERR; - if (nc_inq_varid(ncid, "temp", &wind_id)) ERR; - - /* rename variable */ - if (nc_rename_var(ncid, wind_id, "wind")) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - - -/* printf("*** testing 2D array of NC_CHAR..."); */ -/* { */ -/* int dimid[NDIMS_1], var_dimids[VAR_DIMS] = {2, 0, 1}; */ -/* float fill_value = -9999.0f; */ -/* char long_name[] = PRES_MAX_WIND; */ -/* int i, attid[NUM_ATTS]; */ - -/* ncid = nccreate(FILE_NAME, NC_NETCDF4); */ - -/* /\* Create dims. *\/ */ -/* dimid[0] = ncdimdef(ncid, LAT, LAT_LEN); */ -/* dimid[1] = ncdimdef(ncid, LON, LON_LEN); */ - -/* /\* Create var. *\/ */ -/* varid = ncvardef(ncid, CXX_VAR_NAME, NC_FLOAT, VAR_DIMS, var_dimids); */ -/* if (varid) ERR; */ - -/* ncclose(ncid); */ - -/* /\* Open the file and check. *\/ */ -/* ncid = ncopen(FILE_NAME, 0); */ -/* ncclose(ncid); */ -/* } */ - -/* SUMMARIZE_ERR; */ - -#define NDIMS 3 -#define NNAMES 4 -#define NLINES 13 -/* printf("**** testing funny names for netCDF-4..."); */ -/* { */ -/* int ncid, wind_id; */ -/* size_t len[NDIMS] = {7, 3, 1}; */ -/* int dimids[NDIMS], dimids_in[NDIMS], ndims_in; */ -/* char funny_name[NNAMES][NC_MAX_NAME] = {"\a\t", "\f\n", "\r\v", "\b"}; */ -/* char name_in[NC_MAX_NAME + 1]; */ -/* char *speech[NLINES] = {"who would fardels bear, ", */ -/* "To grunt and sweat under a weary life, ", */ -/* "But that the dread of something after death, ", */ -/* "The undiscover'd country from whose bourn ", */ -/* "No traveller returns, puzzles the will ", */ -/* "And makes us rather bear those ills we have ", */ -/* "Than fly to others that we know not of? ", */ -/* "Thus conscience does make cowards of us all; ", */ -/* "And thus the native hue of resolution ", */ -/* "Is sicklied o'er with the pale cast of thought, ", */ -/* "And enterprises of great pith and moment ", */ -/* "With this regard their currents turn awry, ", */ -/* "And lose the name of action."}; */ -/* char *speech_in[NLINES]; */ -/* int i; */ -/* unsigned short nlines = NLINES; */ -/* unsigned int nlines_in; */ - -/* if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; */ - -/* /\* Define dimensions. *\/ */ -/* for (i = 0; i < NDIMS; i++) */ -/* if (nc_def_dim(ncid, funny_name[i], len[i], &dimids[i])) ERR; */ - -/* /\* Write some global atts. *\/ */ -/* if (nc_put_att_string(ncid, NC_GLOBAL, funny_name[0], NLINES, */ -/* (const char **)speech)) ERR; */ -/* if (nc_put_att_ushort(ncid, NC_GLOBAL, funny_name[1], NC_UINT, 1, &nlines)) ERR; */ - -/* /\* Define variables. *\/ */ -/* if (nc_def_var(ncid, funny_name[3], NC_INT64, NDIMS, dimids, &wind_id)) ERR; */ - -/* if (nc_close(ncid)) ERR; */ - -/* /\* Open the file and check. *\/ */ -/* if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; */ -/* if (nc_inq_dimids(ncid, &ndims_in, dimids_in, 0)) ERR; */ -/* if (ndims_in != NDIMS) ERR; */ -/* for (i = 0; i < NDIMS; i++) */ -/* { */ -/* if (dimids_in[i] != i) ERR; */ -/* if (nc_inq_dimname(ncid, i, name_in)) ERR; */ -/* if (strcmp(name_in, funny_name[i])) ERR; */ -/* } */ - -/* if (nc_get_att_string(ncid, NC_GLOBAL, funny_name[0], (char **)speech_in)) ERR; */ -/* for (i = 0; i < NLINES; i++) */ -/* if (strcmp(speech_in[i], speech[i])) ERR; */ -/* if (nc_get_att_uint(ncid, NC_GLOBAL, funny_name[1], &nlines_in)) ERR; */ -/* if (nlines_in != NLINES) ERR; */ -/* if (nc_free_string(NLINES, (char **)speech_in)) ERR; */ -/* if (nc_inq_varname(ncid, 0, name_in)) ERR; */ -/* if (strcmp(name_in, funny_name[3])) ERR; */ -/* if (nc_close(ncid)) ERR; */ -/* } */ -/* SUMMARIZE_ERR; */ - printf("**** testing endianness..."); - -#define NDIMS4 1 -#define DIM4_NAME "Joe" -#define VAR_NAME4 "Ed" -#define DIM4_LEN 10 - { - int dimids[NDIMS4], dimids_in[NDIMS4]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - int data[DIM4_LEN], data_in[DIM4_LEN]; - int endian_in; - int i; - - for (i = 0; i < DIM4_LEN; i++) - data[i] = i; - - /* Create a netcdf-4 file with one dim and one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM4_NAME, DIM4_LEN, &dimids[0])) ERR; - if (dimids[0] != 0) ERR; - if (nc_def_var(ncid, VAR_NAME4, NC_INT, NDIMS4, dimids, &varid)) ERR; - if (nc_def_var_endian(ncid, varid, NC_ENDIAN_BIG)) ERR; - if (varid != 0) ERR; - if (nc_put_var_int(ncid, varid, data)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS4 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, - dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME4) || xtype_in != NC_INT || - ndims != 1 || natts != 0 || dimids_in[0] != 0) ERR; - if (nc_inq_var_endian(ncid, 0, &endian_in)) ERR; - if (endian_in != NC_ENDIAN_BIG) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check the same stuff. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS4 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, - dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME4) || xtype_in != NC_INT || - ndims != 1 || natts != 0 || dimids_in[0] != 0) ERR; - if (nc_inq_var_endian(ncid, 0, &endian_in)) ERR; - if (endian_in != NC_ENDIAN_BIG) ERR; - if (nc_get_var_int(ncid, varid, data_in)) ERR; - for (i = 0; i < DIM4_LEN; i++) - if (data[i] != data_in[i]) ERR; - - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing chunking and the chunk cache..."); - { -#define NDIMS5 1 -#define DIM5_NAME "D5" -#define VAR_NAME5 "V5" -#define DIM5_LEN 1000 -#define CACHE_SIZE 32000000 -#define CACHE_NELEMS 1009 -#define CACHE_PREEMPTION .75 - - int dimids[NDIMS5], dimids_in[NDIMS5]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - int data[DIM5_LEN], data_in[DIM5_LEN]; - size_t chunksize[NDIMS5] = {5}; - size_t chunksize_in[NDIMS5]; - int storage_in; - size_t cache_size_in, cache_nelems_in; - float cache_preemption_in; - int i, d; - - for (i = 0; i < DIM5_LEN; i++) - data[i] = i; - - /* Create a netcdf-4 file with one dim and one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM5_NAME, DIM5_LEN, &dimids[0])) ERR; - if (dimids[0] != 0) ERR; - if (nc_def_var(ncid, VAR_NAME5, NC_INT, NDIMS5, dimids, &varid)) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CHUNKED, chunksize)) ERR; - if (nc_set_var_chunk_cache(ncid, varid, CACHE_SIZE, CACHE_NELEMS, CACHE_PREEMPTION)) ERR; - if (nc_put_var_int(ncid, varid, data)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS5 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME5) || xtype_in != NC_INT || ndims != 1 || natts != 0 || - dimids_in[0] != 0) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - for (d = 0; d < NDIMS5; d++) - if (chunksize[d] != chunksize_in[d]) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_get_var_int(ncid, varid, data_in)) ERR; - for (i = 0; i < DIM5_LEN; i++) - if (data[i] != data_in[i]) - ERR_RET; - if (nc_get_var_chunk_cache(ncid, varid, &cache_size_in, &cache_nelems_in, - &cache_preemption_in)) ERR; - if (cache_size_in != CACHE_SIZE || cache_nelems_in != CACHE_NELEMS || - cache_preemption_in != CACHE_PREEMPTION) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check the same stuff. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS5 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME5) || xtype_in != NC_INT || ndims != 1 || natts != 0 || - dimids_in[0] != 0) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - for (d = 0; d < NDIMS5; d++) - if (chunksize[d] != chunksize_in[d]) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_get_var_int(ncid, varid, data_in)) ERR; - for (i = 0; i < DIM5_LEN; i++) - if (data[i] != data_in[i]) - ERR_RET; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing contiguous storage..."); - { -#define NDIMS6 1 -#define DIM6_NAME "D5" -#define VAR_NAME6 "V5" -#define DIM6_LEN 100 - - int dimids[NDIMS6], dimids_in[NDIMS6]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - int data[DIM6_LEN], data_in[DIM6_LEN]; - size_t chunksize_in[NDIMS6]; - int storage_in; - int i; - - for (i = 0; i < DIM6_LEN; i++) - data[i] = i; - - /* Create a netcdf-4 file with one dim and one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM6_NAME, DIM6_LEN, &dimids[0])) ERR; - if (dimids[0] != 0) ERR; - if (nc_def_var(ncid, VAR_NAME6, NC_INT, NDIMS6, dimids, &varid)) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CONTIGUOUS, NULL)) ERR; - if (nc_put_var_int(ncid, varid, data)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS6 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME6) || xtype_in != NC_INT || ndims != 1 || natts != 0 || - dimids_in[0] != 0) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CONTIGUOUS) ERR; - if (nc_get_var_int(ncid, varid, data_in)) ERR; - for (i = 0; i < DIM6_LEN; i++) - if (data_in[i] != data[i]) - ERR_RET; - if (nc_close(ncid)) ERR; - - /* Open the file and check the same stuff. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS6 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME6) || xtype_in != NC_INT || ndims != 1 || natts != 0 || - dimids_in[0] != 0) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CONTIGUOUS) ERR; - if (nc_get_var_int(ncid, varid, data_in)) ERR; - for (i = 0; i < DIM6_LEN; i++) - if (data[i] != data_in[i]) - ERR_RET; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing extreme numbers dude..."); - { -#define VAR_NAME7 "V5" -#define DIM6_LEN 100 - - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; -/* unsigned long long data = 9223372036854775807ull, data_in;*/ - unsigned long long data = 9223372036854775817ull, data_in; - - /* Create a netcdf-4 file with scalar var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_var(ncid, VAR_NAME7, NC_UINT64, 0, NULL, &varid)) ERR; - if (nc_put_var_ulonglong(ncid, varid, &data)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 1 || natts != 0 || unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1 || varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, NULL, &natts)) ERR; - if (strcmp(name_in, VAR_NAME7) || xtype_in != NC_UINT64 || ndims != 0 || natts != 0) ERR; - if (nc_get_var_ulonglong(ncid, varid, &data_in)) ERR; - if (data_in != data) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check the same stuff. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != 0 || nvars != 1 || natts != 0 || unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1 || varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, NULL, &natts)) ERR; - if (strcmp(name_in, VAR_NAME7) || xtype_in != NC_UINT64 || ndims != 0 || natts != 0) ERR; - if (nc_get_var_ulonglong(ncid, varid, &data_in)) ERR; - if (data_in != data) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing error codes for name clashes..."); - { -#define GENERIC_NAME "bob" - int ncid, varid, numgrps, ntypes; - - /* Create a netcdf-4 file with one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_var(ncid, GENERIC_NAME, NC_BYTE, 0, NULL, &varid)) ERR; - - /* These don'e work, because the name is already in use. Make - * sure the correct error is returned. */ - if (nc_def_grp(ncid, GENERIC_NAME, NULL) != NC_ENAMEINUSE) ERR; - if (nc_def_opaque(ncid, 1, GENERIC_NAME, NULL) != NC_ENAMEINUSE) ERR; - - /* Close it. */ - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in != 1 || varids_in[0] != 0) ERR; - if (nc_inq_varname(ncid, 0, name_in)) ERR; - if (strcmp(name_in, GENERIC_NAME)) ERR; - if (nc_inq_grps(ncid, &numgrps, NULL)) ERR; - if (numgrps) ERR; - if (nc_inq_typeids(ncid, &ntypes, NULL)) ERR; - if (ntypes) ERR; - if (nc_close(ncid)) ERR; - } - - SUMMARIZE_ERR; - printf("**** testing error codes for name clashes some more..."); - - { -#define GENERIC_NAME "bob" - int ncid, varid, numgrps, ntypes; - - /* Create a netcdf-4 file with one type. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_opaque(ncid, 1, GENERIC_NAME, NULL)) ERR; - - /* These don'e work, because the name is already in use. Make - * sure the correct error is returned. */ - if (nc_def_grp(ncid, GENERIC_NAME, NULL) != NC_ENAMEINUSE) ERR; - if (nc_def_var(ncid, GENERIC_NAME, NC_BYTE, 0, NULL, &varid) != NC_ENAMEINUSE) ERR; - - /* Close it. */ - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in) ERR; - if (nc_inq_grps(ncid, &numgrps, NULL)) ERR; - if (numgrps) ERR; - if (nc_inq_typeids(ncid, &ntypes, NULL)) ERR; - if (ntypes != 1) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing error codes for name clashes even more..."); - - { -#define GENERIC_NAME "bob" - int ncid, varid, numgrps, ntypes; - - /* Create a netcdf-4 file with one group. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_grp(ncid, GENERIC_NAME, NULL)) ERR; - - /* These don'e work, because the name is already in use. Make - * sure the correct error is returned. */ - if (nc_def_opaque(ncid, 1, GENERIC_NAME, NULL) != NC_ENAMEINUSE) ERR; - if (nc_def_var(ncid, GENERIC_NAME, NC_BYTE, 0, NULL, &varid) != NC_ENAMEINUSE) ERR; - - /* Close it. */ - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in) ERR; - if (nc_inq_grps(ncid, &numgrps, NULL)) ERR; - if (numgrps != 1) ERR; - if (nc_inq_typeids(ncid, &ntypes, NULL)) ERR; - if (ntypes) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing error code for too-large chunks..."); - { -#define NDIMS17 2 -#define DIM17_NAME "personality" -#define DIM17_NAME_2 "good_looks" -#define VAR_NAME17 "ed" -#define DIM17_LEN 2147483644 /* max dimension size - 2GB - 4. */ -#define DIM17_2_LEN 1000 - - int dimids[NDIMS17], dimids_in[NDIMS17]; - int varid; - int ndims, nvars, natts, unlimdimid; - nc_type xtype_in; - char name_in[NC_MAX_NAME + 1]; - size_t chunksize[NDIMS17] = {5, 5}; - size_t bad_chunksize[NDIMS17] = {5, DIM17_LEN}; - size_t chunksize_in[NDIMS17]; - int storage_in; - int d; - - /* Create a netcdf-4 file with two dims and one var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM17_NAME, DIM17_LEN, &dimids[0])) ERR; - if (nc_def_dim(ncid, DIM17_NAME_2, DIM17_2_LEN, &dimids[1])) ERR; - if (dimids[0] != 0 || dimids[1] != 1) ERR; - if (nc_def_var(ncid, VAR_NAME17, NC_UINT64, NDIMS17, dimids, &varid)) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CHUNKED, bad_chunksize) != NC_EBADCHUNK) ERR; - if (nc_def_var_chunking(ncid, varid, NC_CHUNKED, chunksize)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS17 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME17) || xtype_in != NC_UINT64 || ndims != 2 || natts != 0 || - dimids_in[0] != 0 || dimids_in[1] != 1) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - for (d = 0; d < NDIMS17; d++) - if (chunksize[d] != chunksize_in[d]) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check the same stuff. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - /* Check stuff. */ - if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; - if (ndims != NDIMS17 || nvars != 1 || natts != 0 || - unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars, varids_in)) ERR; - if (nvars != 1) ERR; - if (varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME17) || xtype_in != NC_UINT64 || ndims != 2 || natts != 0 || - dimids_in[0] != 0 || dimids_in[1] != 1) ERR; - if (nc_inq_var_chunking(ncid, 0, &storage_in, chunksize_in)) ERR; - for (d = 0; d < NDIMS17; d++) - if (chunksize[d] != chunksize_in[d]) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; -#define NDIMS6 1 -#define DIM8_NAME "num_monkeys" -#define DIM9_NAME "num_coconuts" -#define DIM9_LEN 10 -#define VAR_NAME8 "John_Clayton" -#define VAR_NAME9 "Lord_Greystoke" - printf("**** testing that contiguous storage can't be turned on for vars with unlimited dims or filters..."); - { - int ncid; - int dimids[NDIMS6]; - int varid, varid2; - size_t chunksize_in[NDIMS6]; - int storage_in; - - /* Create a netcdf-4 file with one dim and some vars. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM8_NAME, NC_UNLIMITED, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME8, NC_INT, NDIMS6, dimids, &varid)) ERR; - if (nc_def_dim(ncid, DIM9_NAME, DIM9_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME9, NC_INT, NDIMS6, dimids, &varid2)) ERR; - if (nc_def_var_deflate(ncid, varid2, 0, 1, 4)) ERR; - - /* This won't work because of the umlimited dimension. */ - if (nc_def_var_chunking(ncid, varid, NC_CONTIGUOUS, NULL) != NC_EINVAL) ERR; - - /* This won't work because of the deflate filter. */ - if (nc_def_var_chunking(ncid, varid2, NC_CONTIGUOUS, NULL) != NC_EINVAL) ERR; - - /* Storage must be chunked because of unlimited dimension and - * the deflate filter. */ - if (nc_inq_var_chunking(ncid, varid, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_inq_var_chunking(ncid, varid2, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_close(ncid)) ERR; - - } - SUMMARIZE_ERR; -#define NDIMS6 1 -#define DIM8_NAME "num_monkeys" -#define DIM9_NAME "num_coconuts" -#define DIM9_LEN 10 -#define VAR_NAME8 "John_Clayton" -#define VAR_NAME9 "Lord_Greystoke" - printf("**** testing that contiguous storage can't be turned on for vars with unlimited dims or filters..."); - { - int ncid; - int dimids[NDIMS6]; - int varid, varid2; - size_t chunksize_in[NDIMS6]; - int storage_in; - - /* Create a netcdf-4 file with one dim and some vars. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, DIM8_NAME, NC_UNLIMITED, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME8, NC_INT, NDIMS6, dimids, &varid)) ERR; - if (nc_def_dim(ncid, DIM9_NAME, DIM9_LEN, &dimids[0])) ERR; - if (nc_def_var(ncid, VAR_NAME9, NC_INT, NDIMS6, dimids, &varid2)) ERR; - if (nc_def_var_deflate(ncid, varid2, 0, 1, 4)) ERR; - - /* This won't work because of the umlimited dimension. */ - if (nc_def_var_chunking(ncid, varid, NC_CONTIGUOUS, NULL) != NC_EINVAL) ERR; - - /* This won't work because of the deflate filter. */ - if (nc_def_var_chunking(ncid, varid2, NC_CONTIGUOUS, NULL) != NC_EINVAL) ERR; - - /* Storage must be chunked because of unlimited dimension and - * the deflate filter. */ - if (nc_inq_var_chunking(ncid, varid, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_inq_var_chunking(ncid, varid2, &storage_in, chunksize_in)) ERR; - if (storage_in != NC_CHUNKED) ERR; - if (nc_close(ncid)) ERR; - - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars3.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_vars3.c deleted file mode 100644 index f876798223e..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars3.c +++ /dev/null @@ -1,458 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id: tst_vars3.c,v 1.29 2010/04/30 18:21:52 ed Exp $ -*/ - -#include -#include "err_macros.h" -#include "netcdf.h" - -#define FILE_NAME "tst_vars3.nc" -#define NDIMS1 1 -#define D_SMALL "small_dim" -#define D_SMALL_LEN 16 -#define D_MEDIUM "medium_dim" -#define D_MEDIUM_LEN 65546 -#define D_LARGE "large_dim" -#define D_LARGE_LEN 1048586 -#define V_SMALL "small_var" -#define V_MEDIUM "medium_var" -#define V_LARGE "large_var" -#define D_MAX_ONE_D 16384 - -int -main(int argc, char **argv) -{ - - printf("\n*** Testing netcdf-4 variable functions, some more.\n"); - printf("**** testing definition of coordinate variable after endef/redef..."); - { -#define NX 6 -#define NY 36 -#define ZD1_NAME "zD1" -#define D2_NAME "D2" - - int ncid, x_dimid, y_dimid, varid2; - char name_in[NC_MAX_NAME + 1]; - - /* Create file with two dims, two 1D vars. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, ZD1_NAME, NX, &x_dimid)) ERR; - if (nc_def_dim(ncid, D2_NAME, NY, &y_dimid)) ERR; - if (nc_enddef(ncid)) ERR; - - /* Go back into define mode and add a coordinate variable. Now - * dimensions will be out of order. Thanks for confusing my poor - * library. Why can't you just make up your bloody mind? */ - if (nc_redef(ncid)) ERR; - if (nc_def_var(ncid, ZD1_NAME, NC_DOUBLE, NDIMS1, &x_dimid, &varid2)) ERR; - if (nc_close(ncid)) ERR; - - /* Reopen file and check the name of the first dimension. Even - * though you've changed the order after doing a redef, you will - * still expect to get D1_NAME. I sure hope you appreciate how - * hard you are making life for a poor C library, just trying to - * do its best in a demanding world. Next time, why don't you - * try and be a little bit more considerate? Jerk. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq_dimname(ncid, 0, name_in)) ERR; - if (strcmp(name_in, ZD1_NAME)) ERR; - if (nc_inq_dimname(ncid, 1, name_in)) ERR; - if (strcmp(name_in, D2_NAME)) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing definition of coordinate variable with some data..."); - { -#define NX 6 -#define NY 36 -#define V1_NAME "V1" -#define D1_NAME "D1" -#define D2_NAME "D2" - - int ncid, x_dimid, y_dimid, varid1, varid2; - int nvars, ndims, ngatts, unlimdimid, dimids_in[2], natts; - size_t len_in; - char name_in[NC_MAX_NAME + 1]; - nc_type xtype_in; -#if 0 - int x, y; - double data_outx[NX], data_outy[NY]; - int retval; -#endif - -#if 0 - /* Create some pretend data. */ - for (x = 0; x < NX; x++) - data_outx[x] = x; - for (y = 0; y < NY; y++) - data_outy[y] = y; -#endif - - /* Create file with two dims, two 1D vars. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D1_NAME, NX, &x_dimid)) ERR; - if (nc_def_dim(ncid, D2_NAME, NY, &y_dimid)) ERR; - if (nc_def_var(ncid, V1_NAME, NC_DOUBLE, NDIMS1, &y_dimid, &varid1)) ERR; - if (nc_enddef(ncid)) ERR; - if (nc_redef(ncid)) ERR; - if (nc_def_var(ncid, D1_NAME, NC_DOUBLE, NDIMS1, &x_dimid, &varid2)) ERR; - -/* if (nc_put_var_double(ncid, varid1, &data_outy[0])) ERR; */ -/* if (nc_put_var_double(ncid, varid2, &data_outx[0])) ERR; */ -/* if (nc_sync(ncid)) ERR; */ - - /* Check the file. */ - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 2 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR; - - /* Check the dimensions. */ - if (nc_inq_dimids(ncid, &ndims, dimids_in, 1)) ERR; - if (ndims != 2 || dimids_in[0] != x_dimid || dimids_in[1] != y_dimid) ERR; - if (nc_inq_dim(ncid, dimids_in[0], name_in, &len_in)) ERR; - if (strcmp(name_in, D1_NAME) || len_in != NX) ERR; - if (nc_inq_dim(ncid, dimids_in[1], name_in, &len_in)) ERR; - if (strcmp(name_in, D2_NAME) || len_in != NY) ERR; - - /* Check the variables. */ - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, V1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 || - natts != 0 || dimids_in[0] != y_dimid) ERR; - if (nc_inq_var(ncid, 1, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, D1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 || - natts != 0 || dimids_in[0] != x_dimid) ERR; - - /* Close the file. */ - if (nc_close(ncid)) ERR; - - /* Reopen and check the file. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 2 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR; - - /* Check the dimensions. */ - if (nc_inq_dimids(ncid, &ndims, dimids_in, 1)) ERR; - if (ndims != 2 || dimids_in[0] != x_dimid || dimids_in[1] != y_dimid) ERR; - if (nc_inq_dim(ncid, dimids_in[0], name_in, &len_in)) ERR; - if (strcmp(name_in, D1_NAME) || len_in != NX) ERR; - if (nc_inq_dim(ncid, dimids_in[1], name_in, &len_in)) ERR; - if (strcmp(name_in, D2_NAME) || len_in != NY) ERR; - - /* Check the variables. */ - if (nc_inq_var(ncid, 0, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, V1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 || - natts != 0 || dimids_in[0] != y_dimid) ERR; - if (nc_inq_var(ncid, 1, name_in, &xtype_in, &ndims, dimids_in, &natts)) ERR; - if (strcmp(name_in, D1_NAME) || xtype_in != NC_DOUBLE || ndims != 1 || - natts != 0 || dimids_in[0] != x_dimid) ERR; - - if (nc_close(ncid)) ERR; - - } - SUMMARIZE_ERR; - printf("**** testing endianness of compound type variable..."); - { -#define COMPOUND_NAME "Billy-Bob" -#define BILLY "Billy" -#define BOB "Bob" -#define VAR_NAME1 "Buddy-Joe" -#define NDIMS 2 -#define TEXT_LEN 15 - int ncid, nvars_in, varids_in[1], typeid, varid; - int nvars, ndims, ngatts, unlimdimid; - int ndims_in, natts_in, dimids_in[NDIMS]; - char var_name_in[NC_MAX_NAME + 1]; - nc_type xtype_in; - struct billy_bob - { - int billy; - int bob; - }; - - /* Create a netcdf-4 file with scalar compound var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_compound(ncid, sizeof(struct billy_bob), COMPOUND_NAME, &typeid)) ERR; - if (nc_insert_compound(ncid, typeid, BILLY, NC_COMPOUND_OFFSET(struct billy_bob, billy), NC_INT)) ERR; - if (nc_insert_compound(ncid, typeid, BOB, NC_COMPOUND_OFFSET(struct billy_bob, bob), NC_INT)) ERR; - if (nc_def_var(ncid, VAR_NAME1, typeid, 0, NULL, &varid)) ERR; - if (nc_def_var_endian(ncid, varid, NC_ENDIAN_BIG)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 1 || ndims != 0 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; - if (nvars_in != 1 || varids_in[0] != 0) ERR; - if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; - if (strcmp(var_name_in, VAR_NAME1) || xtype_in <= NC_STRING || ndims_in != 0 || - natts_in != 0) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing that fixed vars with no filter end up being contiguous..."); - { -#define VAR_NAME2 "Yoman_of_the_Guard" -#define NDIMS 2 -#define D0_NAME1 "Tower_warders_under_orders" -#define D0_LEN 55 -#define D1_NAME1 "When_our_gallent_Norman_Foes" -#define D1_LEN 99 - int ncid, varid; - int nvars, ndims, ngatts, unlimdimid; - int dimids[NDIMS], contig; - int ndims_in, natts_in, dimids_in[NDIMS]; - char var_name_in[NC_MAX_NAME + 1]; - nc_type xtype_in; - - /* Create a netcdf-4 file with 2D fixed var. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D0_NAME1, D0_LEN, &dimids[0])) ERR; - if (nc_def_dim(ncid, D1_NAME1, D1_LEN, &dimids[1])) ERR; - if (nc_def_var(ncid, VAR_NAME2, NC_UINT64, NDIMS, dimids, &varid)) ERR; - if (nc_def_var_endian(ncid, varid, NC_ENDIAN_BIG)) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != 1 || ndims != 2 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, dimids_in, &natts_in)) ERR; - if (strcmp(var_name_in, VAR_NAME2) || xtype_in != NC_UINT64 || ndims_in != 2 || - natts_in != 0) ERR; - if (nc_inq_var_chunking(ncid, varid, &contig, NULL)) ERR; - if (!contig) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing typeless access for classic model..."); - { -#define RANK_P 3 -#define LEN 4 - int ncid, dimids[RANK_P], time_id, p_id; - int ndims, dimids_in[RANK_P]; - - double data[1] = {3.14159}; - size_t start[1] = {0}, count[1] = {1}; - static float P_data[LEN]; - size_t cor[RANK_P] = {0, 1, 0}; - size_t edg[RANK_P] = {1, 1, LEN}; - int i; - - /* Create a 3D test file. */ - if (nc_create(FILE_NAME, NC_CLASSIC_MODEL|NC_NETCDF4, &ncid)) ERR; - - /* define dimensions */ - if (nc_def_dim(ncid, "Time", NC_UNLIMITED, &dimids[0])) ERR; - if (nc_def_dim(ncid, "X", 4, &dimids[2])) ERR; - if (nc_def_dim(ncid, "Y", 3, &dimids[1])) ERR; - - /* define variables */ - if (nc_def_var(ncid, "Time", NC_DOUBLE, 1, dimids, &time_id)) ERR; - if (nc_def_var(ncid, "P", NC_FLOAT, RANK_P, dimids, &p_id)) ERR; - if (nc_enddef(ncid)) ERR; - - /* Add one record in coordinate variable. */ - if (nc_put_vara(ncid, time_id, start, count, data)) ERR; - - /* The other variable should show an increase in size, since it - * uses the unlimited dimension. */ - if (nc_inq_var(ncid, 1, NULL, NULL, &ndims, dimids_in, NULL)) ERR; - if (ndims != 3 || dimids_in[0] != 0 || dimids_in[1] != 2 || dimids_in[2] != 1) ERR; - - /* Read the record of non-existent data. */ - if (nc_get_vara(ncid, 1, cor, edg, P_data)) ERR; - for (i = 0; i < LEN; i++) - if (P_data[i] != NC_FILL_FLOAT) ERR; - - /* That's it! */ - if (nc_close(ncid)) ERR; - - /* Reopen the file and read the second slice. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - - if (nc_inq_var(ncid, 1, NULL, NULL, &ndims, dimids_in, NULL)) ERR; - if (ndims != 3 || dimids_in[0] != 0 || dimids_in[1] != 2 || dimids_in[2] != 1) ERR; - if (nc_get_vara(ncid, 1, cor, edg, P_data)) ERR; - for (i = 0; i < LEN; i++) - if (P_data[i] != NC_FILL_FLOAT) ERR; - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing large number of vars with unlimited dimension..."); - { -#define D0_NAME3 "dim0" -#define NUM_VARS 1000 - - int ncid, varid; - int nvars, ndims, ngatts, unlimdimid; - int dimid; - char var_name[NC_MAX_NAME + 1]; - int v; - - /* Create a netcdf-4 file with lots of 1D unlim dim vars. */ - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_dim(ncid, D0_NAME3, NC_UNLIMITED, &dimid)) ERR; - for (v = 0; v < NUM_VARS; v++) - { - sprintf(var_name, "var_%d", v); - if (nc_def_var(ncid, var_name, NC_INT, 1, &dimid, &varid)) ERR_RET; - if (nc_set_var_chunk_cache(ncid, varid, 0, 0, 0.75)) ERR_RET; - } - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != NUM_VARS || ndims != 1 || ngatts != 0 || unlimdimid != 0) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing fix of bug in checking coordinate variables out of order..."); - { -#define GRP_NAME "group_G" -#define TIME_DIMNAME "time" -#define B_DIMNAME "bDim" -#define C_DIMNAME "cDim" -#define C_VARNAME "c" -#define D_VARNAME "dd" -#define E_VARNAME "ee" - int ncid, grpid; - int timeDimId, bDimId, cDimId, dimidIn; - size_t timeDimSize = 2, bDimSize = 3, cDimSize = 1; - int cNdims = 1, eeNdims = 1, ddNdims = 1 ; - int cVarId, eeVarId, ddVarId ; - size_t index = 0; - double s1Data = 10; - const double timeVar[] = {1.3, 4.6 }; - - if ( nc_create(FILE_NAME, NC_NETCDF4, &ncid) ) ERR; - if ( nc_def_grp(ncid, GRP_NAME, &grpid) ) ERR; - if ( nc_def_dim(ncid, TIME_DIMNAME, timeDimSize, &timeDimId) ) ERR; - if ( nc_def_dim(grpid, B_DIMNAME, bDimSize, &bDimId) ) ERR; - if ( nc_def_dim(grpid, C_DIMNAME, cDimSize, &cDimId) ) ERR; - if ( nc_def_var(grpid, C_VARNAME, NC_DOUBLE, cNdims, &cDimId, &cVarId) ) ERR; - if ( nc_def_var(ncid, E_VARNAME, NC_DOUBLE, eeNdims, &timeDimId, &eeVarId) ) ERR; - /* worked without this enddef, but in 4.2.1.1 and earlier, inserting this caused failure */ - if ( nc_enddef(ncid)) ERR; - if ( nc_def_var(grpid, D_VARNAME, NC_DOUBLE, ddNdims, &timeDimId, &ddVarId)) ERR; - if ( nc_put_var1(grpid, cVarId, &index, &s1Data) ) ERR; - if ( nc_put_var_double(grpid, ddVarId, timeVar)) ERR; - if ( nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq_grp_ncid(ncid, GRP_NAME, &grpid)) ERR; - if (nc_inq_varid(grpid, D_VARNAME, &ddVarId)) ERR; - if (nc_inq_vardimid(grpid, ddVarId, &dimidIn)) ERR; - if (nc_inq_dimid(ncid, TIME_DIMNAME, &timeDimId)) ERR; - if (nc_inq_dimid(grpid, C_DIMNAME, &cDimId)) ERR; - if (dimidIn == cDimId || cDimId == timeDimId) ERR; /* bug in 4.2.1.1 and earlier */ - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - printf("**** testing fix of bug in non-coordinate scalar variable with same name as dimension ..."); - { -#define DIMNAME "abc" -#define SCALAR_VARNAME DIMNAME - int ncid; - int dimid, varid; - int ndims = 1; - size_t dimsize = 3; - char varname_in[NC_MAX_NAME]; - - if ( nc_create(FILE_NAME, NC_NETCDF4, &ncid) ) ERR; - if ( nc_def_dim(ncid, DIMNAME, dimsize, &dimid) ) ERR; - if ( nc_def_var(ncid, SCALAR_VARNAME, NC_FLOAT, ndims, &dimid, &varid) ) ERR; - if ( nc_close(ncid)) ERR; - - /* Open the file and check varname. */ - if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; - if (nc_inq_varid(ncid, SCALAR_VARNAME, &varid)) ERR; - if (nc_inq_varname(ncid, varid, varname_in)) ERR; - if (strcmp(varname_in, SCALAR_VARNAME) != 0) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; -/* #ifdef USE_SZIP */ -/* printf("**** testing that szip works..."); */ -/* { */ -/* #define NDIMS1 1 */ -/* #define D_SMALL "small_dim" */ -/* #define D_SMALL_LEN1 100 */ -/* #define D_MEDIUM "medium_dim" */ -/* #define D_MEDIUM_LEN1 D_SMALL_LEN1 * 2 */ -/* #define D_LARGE "large_dim" */ -/* #define D_LARGE_LEN1 D_SMALL_LEN1 * 4 */ -/* #define V_SMALL "small_var" */ -/* #define V_MEDIUM "medium_var" */ -/* #define V_LARGE "large_var" */ - -/* int ncid; */ -/* int nvars, ndims, ngatts, unlimdimid; */ -/* int ndims_in, natts_in, dimids_in; */ -/* int small_dimid, medium_dimid, large_dimid; */ -/* int small_varid, medium_varid, large_varid; */ -/* char var_name_in[NC_MAX_NAME + 1]; */ -/* nc_type xtype_in; */ -/* int options_mask_in, bits_per_pixel_in; */ -/* long long small_data[D_SMALL_LEN1], small_data_in[D_SMALL_LEN1]; */ -/* long long medium_data[D_MEDIUM_LEN1], medium_data_in[D_MEDIUM_LEN1]; */ -/* long long large_data[D_LARGE_LEN1], large_data_in[D_LARGE_LEN1]; */ -/* int i; */ - -/* for (i = 0; i < D_SMALL_LEN1; i++) */ -/* small_data[i] = i; */ -/* for (i = 0; i < D_MEDIUM_LEN1; i++) */ -/* medium_data[i] = i; */ -/* for (i = 0; i < D_LARGE_LEN1; i++) */ -/* large_data[i] = i; */ - -/* /\* Create a netcdf-4 file with three dimensions. *\/ */ -/* if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; */ -/* if (nc_def_dim(ncid, D_SMALL, D_SMALL_LEN1, &small_dimid)) ERR; */ -/* if (nc_def_dim(ncid, D_MEDIUM, D_MEDIUM_LEN1, &medium_dimid)) ERR; */ -/* if (nc_def_dim(ncid, D_LARGE, D_LARGE_LEN1, &large_dimid)) ERR; */ - -/* /\* Add three vars. Turn on szip for two of them. *\/ */ -/* if (nc_def_var(ncid, V_SMALL, NC_INT64, NDIMS1, &small_dimid, &small_varid)) ERR; */ - -/* if (nc_def_var(ncid, V_MEDIUM, NC_INT64, NDIMS1, &medium_dimid, &medium_varid)) ERR; */ -/* if (nc_def_var_szip(ncid, medium_varid, NC_SZIP_EC_OPTION_MASK, 32)) ERR; */ - -/* if (nc_def_var(ncid, V_LARGE, NC_INT64, NDIMS1, &large_dimid, &large_varid)) ERR; */ -/* if (nc_def_var_szip(ncid, large_varid, NC_SZIP_NN_OPTION_MASK, 16)) ERR; */ - -/* /\* Write data. *\/ */ -/* if (nc_put_var_longlong(ncid, small_varid, small_data)) ERR; */ -/* if (nc_put_var_longlong(ncid, medium_varid, medium_data)) ERR; */ -/* if (nc_put_var_longlong(ncid, large_varid, large_data)) ERR; */ - -/* if (nc_close(ncid)) ERR; */ - -/* /\* Open the file and check. *\/ */ -/* if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; */ -/* if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; */ -/* if (nvars != 3 || ndims != 3 || ngatts != 0 || unlimdimid != -1) ERR; */ -/* if (nc_inq_var(ncid, 0, var_name_in, &xtype_in, &ndims_in, &dimids_in, &natts_in)) ERR; */ -/* if (strcmp(var_name_in, V_SMALL) || xtype_in != NC_INT64 || ndims_in != 1 || */ -/* natts_in != 0) ERR; */ - -/* /\* Make sure we have the szip settings we expect. *\/ */ -/* if (nc_inq_var_szip(ncid, small_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */ -/* if (options_mask_in != 0 || bits_per_pixel_in !=0) ERR; */ -/* if (nc_inq_var_szip(ncid, medium_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */ -/* if (!(options_mask_in & NC_SZIP_EC_OPTION_MASK) || bits_per_pixel_in != 32) ERR; */ -/* if (nc_inq_var_szip(ncid, large_varid, &options_mask_in, &bits_per_pixel_in)) ERR; */ -/* if (!(options_mask_in & NC_SZIP_NN_OPTION_MASK) || bits_per_pixel_in != 16) ERR; */ - -/* if (nc_close(ncid)) ERR; */ -/* } */ -/* SUMMARIZE_ERR; */ -/* #endif */ - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars4.c b/contrib/netcdf/4.4.1.1/nc_test4/tst_vars4.c deleted file mode 100644 index 51df4258ee5..00000000000 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_vars4.c +++ /dev/null @@ -1,66 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2005 University Corporation for Atmospheric Research/Unidata - See COPYRIGHT file for conditions of use. - - Test netcdf-4 variables. - $Id$ -*/ - -#include -#include "err_macros.h" - -#define FILE_NAME "tst_vars4.nc" - -int -main(int argc, char **argv) -{ - printf("\n*** Testing netcdf-4 variable functions, even more.\n"); - printf("**** testing Jeff's dimension problem..."); - { -#define NDIMS2 2 -#define NUM_VARS 1 -#define Y_NAME "y" -#define X_NAME "x" -#define VAR_NAME Y_NAME -#define XDIM_LEN 2 -#define YDIM_LEN 5 - - int varid, ncid, dims[NDIMS2], dims_in[NDIMS2]; - int ndims, nvars, ngatts, unlimdimid, natts; - char name_in[NC_MAX_NAME + 1]; - nc_type type_in; - size_t len_in; - - if (nc_create(FILE_NAME, NC_NETCDF4 | NC_CLOBBER, &ncid)) ERR; - if (nc_def_dim(ncid, X_NAME, XDIM_LEN, &dims[0])) ERR; - if (nc_def_dim(ncid, Y_NAME, YDIM_LEN, &dims[1])) ERR; - if (nc_def_var(ncid, VAR_NAME, NC_FLOAT, 2, dims, &varid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != NUM_VARS || ndims != NDIMS2 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 0, name_in, &type_in, &ndims, dims_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME) || type_in != NC_FLOAT || ndims != NDIMS2 || - dims_in[0] != dims[0] || dims_in[1] != dims[1] || natts != 0) ERR; - if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; - if (strcmp(name_in, X_NAME) || len_in != XDIM_LEN) ERR; - if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; - if (strcmp(name_in, Y_NAME)) ERR; - if (len_in != YDIM_LEN) ERR; - if (nc_close(ncid)) ERR; - - /* Open the file and check. */ - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; - if (nvars != NUM_VARS || ndims != NDIMS2 || ngatts != 0 || unlimdimid != -1) ERR; - if (nc_inq_var(ncid, 0, name_in, &type_in, &ndims, dims_in, &natts)) ERR; - if (strcmp(name_in, VAR_NAME) || type_in != NC_FLOAT || ndims != NDIMS2 || - dims_in[0] != dims[0] || dims_in[1] != dims[1] || natts != 0) ERR; - if (nc_inq_dim(ncid, 0, name_in, &len_in)) ERR; - if (strcmp(name_in, X_NAME) || len_in != XDIM_LEN) ERR; - if (nc_inq_dim(ncid, 1, name_in, &len_in)) ERR; - if (strcmp(name_in, Y_NAME)) ERR; - if (len_in != YDIM_LEN) ERR; - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/CMakeLists.txt b/contrib/netcdf/4.4.1.1/ncdap_test/CMakeLists.txt deleted file mode 100644 index 333bf31f8ab..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -SET(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) - -remove_definitions(-DDLL_EXPORT) -add_definitions(-D"TOPSRCDIR=${CMAKE_SOURCE_DIR}") - -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) - -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) - -IF(ENABLE_DAP_REMOTE_TESTS) - ADD_EXECUTABLE(nctestserver nctestserver.c) - TARGET_LINK_LIBRARIES(nctestserver netcdf ${ALL_TLL_LIBS}) - - #### - # We have to do a little tweaking - # to remove the Release/ and Debug/ directories - # in MSVC builds. This is required to get - # test scripts to work. - #### - IF(MSVC) - SET_TARGET_PROPERTIES(nctestserver PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(nctestserver PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(nctestserver PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - ENDIF() -ENDIF() - -IF(ENABLE_TESTS) - # Base tests - # The tests are set up as a combination of shell scripts and executables that - # must be run in a particular order. It is painful but will use macros to help - # keep it from being too bad. - # Binary Test Macro - - add_sh_test(ncdap tst_ncdap3) - - IF(NOT MSVC) - add_bin_env_test(ncdap t_dap3a) - add_bin_env_test(ncdap test_cvt) - add_bin_env_test(ncdap test_vara) - ENDIF() - - IF(ENABLE_DAP_REMOTE_TESTS) - IF(BUILD_UTILITIES) - add_sh_test(ncdap tst_remote3) - add_sh_test(ncdap tst_formatx) - ENDIF(BUILD_UTILITIES) - add_bin_test(ncdap test_partvar) - IF(ENABLE_DAP_LONG_TESTS) - add_sh_test(ncdap tst_longremote3) - ENDIF() - add_sh_test(ncdap testurl) - - add_bin_test(ncdap test_nstride_cached) - add_bin_test(ncdap t_misc) - - IF(ENABLE_DAP_AUTH_TESTS) -##obsolete add_bin_test(ncdap t_auth) - add_sh_test(ncdap testauth) - ENDIF() - - add_bin_test(ncdap test_varm3) - - ### - # This test relates to NCF-330 in - # the Unidata JIRA system. - ### - #add_bin_test(ncdap t_ncf330) - - ENDIF() -ENDIF() - -ADD_SUBDIRECTORY(testdata3) -ADD_SUBDIRECTORY(expected3) -ADD_SUBDIRECTORY(expected4) -ADD_SUBDIRECTORY(expectremote3) -ADD_SUBDIRECTORY(expectremote4) - - -## Specify files to be distributed by 'make dist' -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.am b/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.am deleted file mode 100644 index f672ccb0dd6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.am +++ /dev/null @@ -1,127 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2011, see the COPYRIGHT file for more information. - -# This file builds and runs DAP tests. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -LDADD = ${top_builddir}/liblib/libnetcdf.la -AM_CPPFLAGS += -I$(top_builddir)/liblib - -# Set up the tests; do the .sh first, then .c -check_PROGRAMS = -TESTS = -TESTS_ENVIRONMENT=TOPSRCDIR=${abs_top_srcdir} - -TESTS += tst_ncdap3.sh - -t_dap3a_SOURCES = t_dap3a.c -test_cvt3_SOURCES = test_cvt.c -test_vara_SOURCES = test_vara.c - -check_PROGRAMS += t_dap3a test_cvt3 test_vara - -TESTS += t_dap3a test_cvt3 test_vara - -# remote tests are optional -# because the server may be down or inaccessible - -if ENABLE_DAP_REMOTE_TESTS - -# Make nctestserver be the first test to be built -check_PROGRAMS += nctestserver -nctestserver_SOURCES = nctestserver.c - -if BUILD_UTILITIES -TESTS += tst_remote3.sh tst_formatx.sh -endif - -TESTS += test_partvar testurl.sh - -if ENABLE_DAP_LONG_TESTS - TESTS += tst_longremote3.sh -endif - -test_partvar_SOURCES = test_partvar.c -test_nstride_cached_SOURCE = test_nstride_cached.c -#t_auth_SOURCES = t_auth.c -#t_auth1_SOURCES = t_auth1.c -t_misc_SOURCES = t_misc.c -test_varm3_SOURCES = test_varm3.c -#t_ncf330_SOURCES = t_ncf330.c - -TESTS += test_varm3 -#TESTS += t_ncf330 -TESTS += test_nstride_cached -TESTS += t_misc - -check_PROGRAMS += test_partvar -check_PROGRAMS += test_nstride_cached -check_PROGRAMS += t_misc -check_PROGRAMS += test_varm3 -check_PROGRAMS += t_ncf330 - -if ENABLE_DAP_AUTH_TESTS -#check_PROGRAMS += t_auth t_auth1 -#TESTS += t_auth -TESTS += testauth.sh -endif - -endif #ENABLE_DAP_REMOTE_TESTS - -if USE_NETCDF4 - -#TESTS += tst_ncdap4.sh - -if ENABLE_DAP_REMOTE_TESTS - -#TESTS += tst_remote4.sh - -if ENABLE_DAP_LONG_TESTS -#TESTS += tst_longremote4.sh -endif - -# Conversion tests - -#test_cvt4_SOURCES = test_cvt.c -#t_dap4_SOURCES = t_dap4.c -#check_PROGRAMS += test_cvt4 t_dap4 -#TESTS += test_cvt4 t_dap4 - -endif ENABLE_DAP_REMOTE_TESTS - -endif #USE_NETCDF4 - -# Need to add subdirs -SUBDIRS = testdata3 expected3 expected4 expectremote3 expectremote4 - -EXTRA_DIST = tst_ncdap3.sh tst_ncdap4.sh \ - tst_remote3.sh tst_remote4.sh \ - tst_longremote3.sh tst_longremote4.sh \ - tst_ncdap.sh tst_ncdap_shared.sh tst_remote.sh \ - t_dap.c CMakeLists.txt tst_formatx.sh testauth.sh testurl.sh \ - t_ncf330.c - -CLEANFILES = test_varm3 test_cvt3 results/*.dmp results/*.das results/*.dds datadds* t_dap3a test_nstride_cached - -if USE_NETCDF4 -CLEANFILES += test_cvt4 t_dap4 -endif - -# This rule are used if someone wants to rebuild t_dap3a.c -# Otherwise never invoked, but records how to do it. -t_dap3a.c: t_dap.c - echo "#define NETCDF3ONLY" > ./t_dap3a.c - cat t_dap.c >> t_dap3a.c - -t_dap4a.c: t_dap.c - cat t_dap.c >> ./t_dap4a.c - -# One last thing -BUILT_SOURCES = .dodsrc - -.dodsrc: - echo "#DODSRC" >.dodsrc - -DISTCLEANFILES = .dodsrc results/* results diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.in deleted file mode 100644 index c4185973cba..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/Makefile.in +++ /dev/null @@ -1,1106 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2011, see the COPYRIGHT file for more information. - -# This file builds and runs DAP tests. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -check_PROGRAMS = t_dap3a$(EXEEXT) test_cvt3$(EXEEXT) \ - test_vara$(EXEEXT) $(am__EXEEXT_1) -TESTS = tst_ncdap3.sh t_dap3a$(EXEEXT) test_cvt3$(EXEEXT) \ - test_vara$(EXEEXT) $(am__append_4) $(am__EXEEXT_2) \ - $(am__append_6) $(am__EXEEXT_3) $(am__append_8) - -# remote tests are optional -# because the server may be down or inaccessible - -# Make nctestserver be the first test to be built -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_3 = nctestserver test_partvar \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached t_misc \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3 t_ncf330 -@BUILD_UTILITIES_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_4 = tst_remote3.sh tst_formatx.sh -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_5 = test_partvar testurl.sh -@ENABLE_DAP_LONG_TESTS_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_6 = tst_longremote3.sh -#t_ncf330_SOURCES = t_ncf330.c -#TESTS += t_ncf330 -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_7 = test_varm3 \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached t_misc - -#check_PROGRAMS += t_auth t_auth1 -#TESTS += t_auth -@ENABLE_DAP_AUTH_TESTS_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_8 = testauth.sh -@USE_NETCDF4_TRUE@am__append_9 = test_cvt4 t_dap4 -subdir = ncdap_test -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_1 = nctestserver$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_partvar$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ t_misc$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ t_ncf330$(EXEEXT) -am__nctestserver_SOURCES_DIST = nctestserver.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@am_nctestserver_OBJECTS = \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ nctestserver.$(OBJEXT) -nctestserver_OBJECTS = $(am_nctestserver_OBJECTS) -nctestserver_LDADD = $(LDADD) -nctestserver_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_t_dap3a_OBJECTS = t_dap3a.$(OBJEXT) -t_dap3a_OBJECTS = $(am_t_dap3a_OBJECTS) -t_dap3a_LDADD = $(LDADD) -t_dap3a_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am__t_misc_SOURCES_DIST = t_misc.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@am_t_misc_OBJECTS = t_misc.$(OBJEXT) -t_misc_OBJECTS = $(am_t_misc_OBJECTS) -t_misc_LDADD = $(LDADD) -t_misc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -t_ncf330_SOURCES = t_ncf330.c -t_ncf330_OBJECTS = t_ncf330.$(OBJEXT) -t_ncf330_LDADD = $(LDADD) -t_ncf330_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am_test_cvt3_OBJECTS = test_cvt.$(OBJEXT) -test_cvt3_OBJECTS = $(am_test_cvt3_OBJECTS) -test_cvt3_LDADD = $(LDADD) -test_cvt3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -test_nstride_cached_SOURCES = test_nstride_cached.c -test_nstride_cached_OBJECTS = test_nstride_cached.$(OBJEXT) -test_nstride_cached_LDADD = $(LDADD) -test_nstride_cached_DEPENDENCIES = \ - ${top_builddir}/liblib/libnetcdf.la -am__test_partvar_SOURCES_DIST = test_partvar.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@am_test_partvar_OBJECTS = \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_partvar.$(OBJEXT) -test_partvar_OBJECTS = $(am_test_partvar_OBJECTS) -test_partvar_LDADD = $(LDADD) -test_partvar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am_test_vara_OBJECTS = test_vara.$(OBJEXT) -test_vara_OBJECTS = $(am_test_vara_OBJECTS) -test_vara_LDADD = $(LDADD) -test_vara_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am__test_varm3_SOURCES_DIST = test_varm3.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@am_test_varm3_OBJECTS = \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3.$(OBJEXT) -test_varm3_OBJECTS = $(am_test_varm3_OBJECTS) -test_varm3_LDADD = $(LDADD) -test_varm3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/nctestserver.Po \ - ./$(DEPDIR)/t_dap3a.Po ./$(DEPDIR)/t_misc.Po \ - ./$(DEPDIR)/t_ncf330.Po ./$(DEPDIR)/test_cvt.Po \ - ./$(DEPDIR)/test_nstride_cached.Po ./$(DEPDIR)/test_partvar.Po \ - ./$(DEPDIR)/test_vara.Po ./$(DEPDIR)/test_varm3.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(nctestserver_SOURCES) $(t_dap3a_SOURCES) $(t_misc_SOURCES) \ - t_ncf330.c $(test_cvt3_SOURCES) test_nstride_cached.c \ - $(test_partvar_SOURCES) $(test_vara_SOURCES) \ - $(test_varm3_SOURCES) -DIST_SOURCES = $(am__nctestserver_SOURCES_DIST) $(t_dap3a_SOURCES) \ - $(am__t_misc_SOURCES_DIST) t_ncf330.c $(test_cvt3_SOURCES) \ - test_nstride_cached.c $(am__test_partvar_SOURCES_DIST) \ - $(test_vara_SOURCES) $(am__test_varm3_SOURCES_DIST) -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir distdir-am -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_2 = test_partvar$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ testurl.sh -@ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_3 = test_varm3$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached$(EXEEXT) \ -@ENABLE_DAP_REMOTE_TESTS_TRUE@ t_misc$(EXEEXT) -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ - -I$(top_builddir)/liblib -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -LDADD = ${top_builddir}/liblib/libnetcdf.la -TESTS_ENVIRONMENT = TOPSRCDIR=${abs_top_srcdir} -t_dap3a_SOURCES = t_dap3a.c -test_cvt3_SOURCES = test_cvt.c -test_vara_SOURCES = test_vara.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@nctestserver_SOURCES = nctestserver.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@test_partvar_SOURCES = test_partvar.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@test_nstride_cached_SOURCE = test_nstride_cached.c -#t_auth_SOURCES = t_auth.c -#t_auth1_SOURCES = t_auth1.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@t_misc_SOURCES = t_misc.c -@ENABLE_DAP_REMOTE_TESTS_TRUE@test_varm3_SOURCES = test_varm3.c - -#TESTS += tst_ncdap4.sh - -#TESTS += tst_remote4.sh - -#TESTS += tst_longremote4.sh - -# Conversion tests - -#test_cvt4_SOURCES = test_cvt.c -#t_dap4_SOURCES = t_dap4.c -#check_PROGRAMS += test_cvt4 t_dap4 -#TESTS += test_cvt4 t_dap4 - -# Need to add subdirs -SUBDIRS = testdata3 expected3 expected4 expectremote3 expectremote4 -EXTRA_DIST = tst_ncdap3.sh tst_ncdap4.sh \ - tst_remote3.sh tst_remote4.sh \ - tst_longremote3.sh tst_longremote4.sh \ - tst_ncdap.sh tst_ncdap_shared.sh tst_remote.sh \ - t_dap.c CMakeLists.txt tst_formatx.sh testauth.sh testurl.sh \ - t_ncf330.c - -CLEANFILES = test_varm3 test_cvt3 results/*.dmp results/*.das \ - results/*.dds datadds* t_dap3a test_nstride_cached \ - $(am__append_9) - -# One last thing -BUILT_SOURCES = .dodsrc -DISTCLEANFILES = .dodsrc results/* results -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 ncdap_test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -nctestserver$(EXEEXT): $(nctestserver_OBJECTS) $(nctestserver_DEPENDENCIES) $(EXTRA_nctestserver_DEPENDENCIES) - @rm -f nctestserver$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(nctestserver_OBJECTS) $(nctestserver_LDADD) $(LIBS) - -t_dap3a$(EXEEXT): $(t_dap3a_OBJECTS) $(t_dap3a_DEPENDENCIES) $(EXTRA_t_dap3a_DEPENDENCIES) - @rm -f t_dap3a$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(t_dap3a_OBJECTS) $(t_dap3a_LDADD) $(LIBS) - -t_misc$(EXEEXT): $(t_misc_OBJECTS) $(t_misc_DEPENDENCIES) $(EXTRA_t_misc_DEPENDENCIES) - @rm -f t_misc$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(t_misc_OBJECTS) $(t_misc_LDADD) $(LIBS) - -t_ncf330$(EXEEXT): $(t_ncf330_OBJECTS) $(t_ncf330_DEPENDENCIES) $(EXTRA_t_ncf330_DEPENDENCIES) - @rm -f t_ncf330$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(t_ncf330_OBJECTS) $(t_ncf330_LDADD) $(LIBS) - -test_cvt3$(EXEEXT): $(test_cvt3_OBJECTS) $(test_cvt3_DEPENDENCIES) $(EXTRA_test_cvt3_DEPENDENCIES) - @rm -f test_cvt3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_cvt3_OBJECTS) $(test_cvt3_LDADD) $(LIBS) - -test_nstride_cached$(EXEEXT): $(test_nstride_cached_OBJECTS) $(test_nstride_cached_DEPENDENCIES) $(EXTRA_test_nstride_cached_DEPENDENCIES) - @rm -f test_nstride_cached$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_nstride_cached_OBJECTS) $(test_nstride_cached_LDADD) $(LIBS) - -test_partvar$(EXEEXT): $(test_partvar_OBJECTS) $(test_partvar_DEPENDENCIES) $(EXTRA_test_partvar_DEPENDENCIES) - @rm -f test_partvar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_partvar_OBJECTS) $(test_partvar_LDADD) $(LIBS) - -test_vara$(EXEEXT): $(test_vara_OBJECTS) $(test_vara_DEPENDENCIES) $(EXTRA_test_vara_DEPENDENCIES) - @rm -f test_vara$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_vara_OBJECTS) $(test_vara_LDADD) $(LIBS) - -test_varm3$(EXEEXT): $(test_varm3_OBJECTS) $(test_varm3_DEPENDENCIES) $(EXTRA_test_varm3_DEPENDENCIES) - @rm -f test_varm3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_varm3_OBJECTS) $(test_varm3_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nctestserver.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_dap3a.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_misc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_ncf330.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cvt.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_nstride_cached.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_partvar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_vara.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_varm3.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-recursive - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-recursive - -rm -f ./$(DEPDIR)/nctestserver.Po - -rm -f ./$(DEPDIR)/t_dap3a.Po - -rm -f ./$(DEPDIR)/t_misc.Po - -rm -f ./$(DEPDIR)/t_ncf330.Po - -rm -f ./$(DEPDIR)/test_cvt.Po - -rm -f ./$(DEPDIR)/test_nstride_cached.Po - -rm -f ./$(DEPDIR)/test_partvar.Po - -rm -f ./$(DEPDIR)/test_vara.Po - -rm -f ./$(DEPDIR)/test_varm3.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f ./$(DEPDIR)/nctestserver.Po - -rm -f ./$(DEPDIR)/t_dap3a.Po - -rm -f ./$(DEPDIR)/t_misc.Po - -rm -f ./$(DEPDIR)/t_ncf330.Po - -rm -f ./$(DEPDIR)/test_cvt.Po - -rm -f ./$(DEPDIR)/test_nstride_cached.Po - -rm -f ./$(DEPDIR)/test_partvar.Po - -rm -f ./$(DEPDIR)/test_vara.Po - -rm -f ./$(DEPDIR)/test_varm3.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(am__recursive_targets) all check check-am install install-am \ - install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--depfiles check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# This rule are used if someone wants to rebuild t_dap3a.c -# Otherwise never invoked, but records how to do it. -t_dap3a.c: t_dap.c - echo "#define NETCDF3ONLY" > ./t_dap3a.c - cat t_dap.c >> t_dap3a.c - -t_dap4a.c: t_dap.c - cat t_dap.c >> ./t_dap4a.c - -.dodsrc: - echo "#DODSRC" >.dodsrc - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123.nc.dmp deleted file mode 100644 index 84ba36a8485..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123.nc.dmp +++ /dev/null @@ -1,54 +0,0 @@ -netcdf \123 { -dimensions: - i = 2 ; - j = 3 ; - l = 3 ; - maxStrlen64 = 64 ; -variables: - short l(l) ; - char bears(i, j, maxStrlen64) ; - bears:act = "text string\n", - "\t123" ; - bears:acs = -40s ; - bears:acl = 17000 ; - bears:acf = -2.f, 1.f, 0.f ; - bears:acd = -1., 0.75 ; - bears:string_length = 3 ; - short order(i, j) ; - int shot(i, j) ; - float aloan(i, j) ; - double cross(i, j) ; - -// global attributes: - :history = "This is an example of a multi-line global\n", - "attribute. It could be used for representing the\n", - "processing history of the data, for example." ; - :DODS_EXTRA.Unlimited_Dimension = "k" ; -data: - - l = 10, 9, 8 ; - - bears = - "ind", - "ist", - "ing", - "uis", - "hab", - "le" ; - - order = - 1, 2, 3, - 4, 5, 6 ; - - shot = - 2, 3, 4, - 5, 6, 7 ; - - aloan = - 3, 4, 5, - 6, 7, 1e+12 ; - - cross = - 4, 5, 0.000244140625, - 7, 8, 10000000000 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123bears.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123bears.nc.dmp deleted file mode 100644 index 9379de3e255..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/123bears.nc.dmp +++ /dev/null @@ -1,54 +0,0 @@ -netcdf \123bears { -dimensions: - i = 2 ; - j = 3 ; - l = 3 ; - maxStrlen64 = 64 ; -variables: - short l(l) ; - char bears(i, j, maxStrlen64) ; - bears:act = "text string\n", - "\t123" ; - bears:acs = -40s ; - bears:acl = 17000 ; - bears:acf = -2.f, 1.f, 0.f ; - bears:acd = -1., 0.75 ; - bears:string_length = 3 ; - short order(i, j) ; - int shot(i, j) ; - float aloan(i, j) ; - double cross(i, j) ; - -// global attributes: - :history = "This is an example of a multi-line global\n", - "attribute. It could be used for representing the\n", - "processing history of the data, for example." ; - :DODS_EXTRA.Unlimited_Dimension = "k" ; -data: - - l = 10, 9, 8 ; - - bears = - "ind", - "ist", - "ing", - "uis", - "hab", - "le" ; - - order = - 1, 2, 3, - 4, 5, 6 ; - - shot = - 2, 3, 4, - 5, 6, 7 ; - - aloan = - 3, 4, 5, - 6, 7, 1e+12 ; - - cross = - 4, 5, 0.000244140625, - 7, 8, 10000000000 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/1990-S1700101.HDF.WVC_Lat.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/1990-S1700101.HDF.WVC_Lat.dmp deleted file mode 100644 index 05e6fc65b3c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/1990-S1700101.HDF.WVC_Lat.dmp +++ /dev/null @@ -1,1368 +0,0 @@ -netcdf \1990-S1700101.HDF { -dimensions: - WVC = 24 ; - row = 558 ; -variables: - short NSCAT%20Rev%2017.WVC_Lat(row, WVC) ; - NSCAT%20Rev%2017.WVC_Lat:long_name = "latitude" ; - NSCAT%20Rev%2017.WVC_Lat:units = "deg" ; - NSCAT%20Rev%2017.WVC_Lat:scale_factor = 0.01 ; - NSCAT%20Rev%2017.WVC_Lat:scale_factor_err = 0. ; - NSCAT%20Rev%2017.WVC_Lat:add_offset = 0. ; - NSCAT%20Rev%2017.WVC_Lat:add_offset_err = 0. ; - NSCAT%20Rev%2017.WVC_Lat:calibrated_nt = 22 ; - NSCAT%20Rev%2017.WVC_Lat:valid_range = -6281s, 8051s ; - -// global attributes: - :Producer_Agency = "NASA" ; - :Producer_Institution = "JPL" ; - :Sensor_Name = "NSCAT" ; - :Project_ID = "NSCAT" ; - :SIS_ID = "697-512-23/1994-08-29" ; - :Build_ID = "SciSim 3.0" ; - :ADEOS_Data_Package_ID = "SIMULATED DATA PRODUCT TEST" ; - :ADEOS_Data_Package_Type = "S" ; - :Product_Creation_Time = "1995-278T23:30:04.000" ; - :Data_Type = "L17" ; - :Data_Status = "COMPLETE" ; - :First_Rev_Number = 101 ; - :First_Rev_Eq_Crossing_Time = "1996-215T01:31:07.223" ; - :First_Rev_Eq_Crossing_Lon = 54.952f ; - :First_Data_Time = "1996-215T01:13:28.456" ; - :Last_Data_Time = "1996-215T02:40:22.631" ; - :Num_Expected_Output_Records = 558 ; - :Num_Actual_Output_Records = 558 ; - :HDF_Build_ID = "JPL D-xxxxx 12/15/94" ; - :HDF_SIS_ID = "JPL D-12059 12/15/94" ; - :HDF_Conversion_Organization = "JPL PO.DAAC" ; - :HDF_Conversion_Time = "1996-047T11:13:05 " ; - :Data_Format_Type = "HDF" ; -data: - - NSCAT%20Rev%2017.WVC_Lat = - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5928, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5889, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5851, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5831, - -5813, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5794, - -5774, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5791, -5772, - -5755, -5733, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5773, -5753, - -5734, -5714, -5697, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5837, -5821, -5805, -5790, -5772, - -5754, -5732, -5713, -5694, -5676, -5657, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5811, -5796, -5780, -5764, -5749, - -5731, -5714, -5692, -5673, -5652, -5635, -5618, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5770, -5755, -5739, -5722, -5708, - -5692, -5673, -5652, -5635, -5614, -5594, -5580, - 0, 0, 0, 0, -5891, -5887, 0, 0, 0, 0, 0, -5837, -5727, -5713, -5698, -5681, - -5667, -5649, -5634, -5612, -5593, -5577, -5557, -5538, - -5873, -5869, -5863, -5855, -5847, -5843, -5835, -5827, -5821, -5812, - -5802, -5793, -5688, -5671, -5656, -5640, -5626, -5610, -5593, -5571, - -5554, -5536, -5516, -5501, - -5830, -5825, -5820, -5812, -5803, -5799, -5792, -5783, -5777, -5768, - -5758, -5750, -5645, -5630, -5615, -5599, -5585, -5568, -5551, -5530, - -5513, -5496, -5476, -5459, - -5785, -5781, -5776, -5771, -5759, -5756, -5748, -5740, -5734, -5725, - -5717, -5707, -5602, -5588, -5573, -5557, -5544, -5527, -5510, -5490, - -5470, -5454, -5438, -5419, - -5740, -5737, -5733, -5727, -5716, -5711, -5704, -5696, -5690, -5681, - -5674, -5664, -5561, -5546, -5531, -5514, -5503, -5487, -5466, -5449, - -5434, -5416, -5398, -5381, - -5698, -5693, -5688, -5683, -5673, -5667, -5660, -5653, -5647, -5638, - -5631, -5621, -5519, -5504, -5490, -5474, -5461, -5445, -5430, -5409, - -5393, -5375, -5359, -5341, - -5653, -5650, -5644, -5639, -5629, -5624, -5616, -5609, -5603, -5594, - -5588, -5577, -5476, -5462, -5447, -5432, -5419, -5403, -5389, -5368, - -5354, -5335, -5316, -5302, - -5610, -5605, -5601, -5594, -5589, -5580, -5573, -5566, -5559, -5551, - -5544, -5534, -5435, -5420, -5405, -5390, -5378, -5362, -5348, -5327, - -5312, -5295, -5276, -5261, - -5565, -5561, -5556, -5551, -5546, -5536, -5529, -5524, -5516, -5507, - -5501, -5491, -5394, -5377, -5364, -5349, -5336, -5321, -5307, -5285, - -5270, -5254, -5238, -5221, - -5520, -5517, -5512, -5507, -5501, -5492, -5485, -5480, -5472, -5463, - -5457, -5447, -5351, -5336, -5322, -5307, -5293, -5280, -5265, -5243, - -5229, -5211, -5198, -5180, - -5477, -5473, -5469, -5463, -5457, -5448, -5441, -5436, -5428, -5420, - -5413, -5404, 0, -5293, -5279, -5265, -5253, -5238, -5223, -5203, -5189, - -5172, -5155, -5139, - -5433, -5429, -5424, -5419, -5413, -5404, -5398, -5393, -5384, -5376, - -5370, -5360, -5268, -5251, -5238, -5225, -5211, -5196, -5181, -5161, - -5148, -5131, -5115, -5099, - -5390, -5384, -5380, -5375, -5371, -5360, -5354, -5349, -5341, -5332, - -5326, -5317, -5227, -5209, -5195, -5184, -5169, -5154, -5141, -5121, - -5105, -5091, -5076, -5057, - -5345, -5341, -5336, -5331, -5328, -5317, -5311, -5305, -5297, -5290, - -5282, -5273, -5184, -5166, -5153, -5140, -5127, -5113, -5100, -5080, - -5066, -5049, -5035, -5016, - -5301, -5297, -5292, -5288, -5284, -5274, -5267, -5261, -5253, -5248, - -5239, -5230, -5142, -5124, -5111, -5098, -5085, -5071, -5058, -5038, - -5025, -5008, -4993, -4978, - -5256, -5255, -5248, -5246, -5240, -5228, -5223, -5217, -5210, -5204, - -5196, -5186, -5099, -5081, -5068, -5058, -5044, -5029, -5017, -4998, - -4982, -4966, -4954, -4935, - -5212, -5210, -5204, -5201, -5196, -5186, -5181, -5174, -5166, -5161, - -5152, -5143, -5057, -5039, -5026, -5015, -5002, -4987, -4975, -4955, - -4944, -4924, -4913, -4895, - -5170, -5166, -5161, -5158, -5151, -5143, -5137, -5130, -5122, -5117, - -5108, -5099, -5014, -4996, -4984, -4973, -4959, -4947, -4933, -4915, - -4901, -4886, -4871, -4854, - -5126, -5123, -5118, -5114, -5108, -5098, -5094, -5086, -5078, -5073, - -5064, -5056, -4971, -4954, -4941, -4931, -4917, -4905, -4892, -4872, - -4859, -4845, -4827, -4815, - -5082, -5079, -5074, -5070, -5064, -5055, -5049, -5043, -5035, -5029, - -5021, -5012, -4928, -4911, -4899, -4889, -4876, -4862, -4850, -4831, - -4817, -4803, -4789, -4773, - -5035, -5035, -5031, -5026, -5020, -5013, -5005, -4998, -4991, -4985, - -4977, -4968, -4886, -4869, -4856, -4846, -4833, -4822, -4807, -4791, - -4776, -4760, -4747, -4737, - -4993, -4990, -4987, -4982, -4977, -4968, -4961, -4954, -4946, -4943, - -4934, -4925, -4843, -4826, -4813, -4804, -4790, -4780, -4766, -4749, - -4735, -4723, -4702, -4690, - -4948, -4948, -4942, -4938, -4932, -4923, -4918, -4910, -4903, -4897, - -4891, -4882, -4800, -4782, -4771, -4761, -4748, -4737, -4727, -4704, - -4689, -4677, -4663, -4649, - -4906, -4903, -4899, -4893, -4888, -4884, -4874, -4866, -4861, -4853, - -4845, -4840, -4757, -4741, -4728, -4718, -4709, -4695, -4679, -4665, - -4650, -4638, -4620, -4607, - -4864, -4859, -4855, -4850, -4844, -4839, -4830, -4821, -4818, -4811, - -4802, -4796, -4714, -4699, -4689, -4674, -4662, -4653, -4639, -4623, - -4606, -4597, -4579, -4568, - -4820, -4818, -4812, -4806, -4801, -4794, -4787, -4779, -4774, -4767, - -4759, -4753, -4675, -4654, -4643, -4634, -4621, -4611, -4596, -4578, - -4568, -4554, -4539, -4525, - -4775, -4776, -4768, -4763, -4756, -4753, -4743, -4735, -4731, -4723, - -4715, -4709, -4628, -4615, -4601, -4591, -4579, -4568, -4555, -4539, - -4525, -4512, -4497, -4484, - -4734, -4729, -4725, -4722, -4713, -4709, -4700, -4691, -4687, -4679, - -4671, -4667, -4585, -4572, -4558, -4548, -4536, -4526, -4513, -4500, - -4483, -4472, -4455, -4443, - -4689, -4685, -4684, -4678, -4669, -4667, -4658, -4647, -4643, -4635, - -4627, -4626, -4543, -4529, -4515, -4505, -4493, -4484, -4471, -4457, - -4442, -4429, -4414, -4400, - -4647, -4644, -4640, -4632, -4630, -4624, -4613, -4603, -4599, -4591, - -4586, -4587, -4499, -4486, -4472, -4463, -4451, -4441, -4428, -4414, - -4399, -4387, -4372, -4360, - -4605, -4599, -4596, -4591, -4588, -4582, -4568, -4559, -4556, -4548, - -4539, -4539, -4456, -4443, -4429, -4420, -4408, -4398, -4386, -4370, - -4356, -4344, -4330, -4318, - -4560, -4557, -4552, -4546, -4544, -4538, -4528, -4514, -4506, -4503, - -4499, -4496, -4413, -4400, -4386, -4377, -4365, -4357, -4343, -4329, - -4314, -4302, -4287, -4276, - -4516, -4512, -4507, -4502, -4503, -4496, -4480, -4472, -4467, -4461, - -4456, -4451, -4370, -4356, -4344, -4334, -4323, -4312, -4301, -4286, - -4272, -4260, -4247, -4234, - -4470, -4468, -4468, -4460, -4453, -4450, -4439, -4431, -4422, -4421, - -4414, -4408, -4327, -4314, -4301, -4293, -4280, -4270, -4257, -4248, - -4231, -4219, -4207, -4190, - -4430, -4424, -4418, -4417, -4412, -4406, -4396, -4389, -4380, -4376, - -4372, -4364, -4284, -4271, -4260, -4248, -4238, -4228, -4216, -4202, - -4190, -4177, -4162, -4152, - -4382, -4381, -4375, -4372, -4368, -4363, -4354, -4346, -4339, -4334, - -4329, -4321, -4240, -4227, -4217, -4206, -4194, -4186, -4174, -4159, - -4145, -4136, -4120, -4108, - -4340, -4335, -4332, -4327, -4323, -4318, -4313, -4302, -4297, -4290, - -4285, -4277, -4197, -4185, -4174, -4163, -4152, -4142, -4130, -4120, - -4103, -4091, -4080, -4065, - -4296, -4292, -4287, -4284, -4280, -4275, -4266, -4259, -4253, -4246, - -4241, -4233, -4154, -4141, -4131, -4120, -4109, -4100, -4088, -4075, - -4063, -4048, -4037, -4024, - -4252, -4248, -4243, -4241, -4236, -4229, -4224, -4215, -4209, -4201, - -4197, -4189, -4111, -4098, -4088, -4077, -4066, -4057, -4045, -4031, - -4020, -4007, -3995, -3982, - -4207, -4204, -4198, -4197, -4190, -4186, -4180, -4171, -4165, -4158, - -4153, -4145, -4067, -4055, -4045, -4034, -4023, -4014, -4003, -3989, - -3976, -3966, -3953, -3937, - -4165, -4159, -4156, -4151, -4147, -4142, -4136, -4129, -4121, -4114, - -4109, -4101, -4024, -4013, -4001, -3991, -3980, -3971, -3960, -3948, - -3934, -3923, -3910, -3896, - -4120, -4118, -4111, -4108, -4103, -4098, -4094, -4086, -4077, -4070, - -4065, -4057, -3981, -3971, -3958, -3948, -3937, -3928, -3917, -3905, - -3890, -3882, -3865, -3855, - -4078, -4072, -4069, -4064, -4059, -4053, -4051, -4042, -4032, -4026, - -4021, -4013, -3938, -3926, -3915, -3905, -3894, -3886, -3874, -3863, - -3848, -3838, -3825, -3811, - -4033, -4029, -4025, -4020, -4015, -4010, -4007, -3998, -3989, -3982, - -3977, -3970, -3894, -3883, -3872, -3862, -3851, -3843, -3831, -3820, - -3805, -3795, -3784, -3768, - -3989, -3985, -3981, -3976, -3971, -3965, -3963, -3955, -3944, -3938, - -3933, -3926, -3851, -3840, -3829, -3818, -3808, -3800, -3790, -3777, - -3763, -3751, -3739, -3726, - -3945, -3941, -3937, -3932, -3927, -3921, -3918, -3912, -3900, -3895, - -3889, -3882, -3807, -3795, -3786, -3775, -3766, -3758, -3746, -3734, - -3720, -3711, -3697, -3681, - -3900, -3897, -3892, -3887, -3883, -3877, -3875, -3867, -3857, -3852, - -3845, -3838, -3764, -3752, -3743, -3732, -3723, -3713, -3704, -3692, - -3677, -3668, -3651, -3641, - -3856, -3852, -3847, -3844, -3838, -3835, -3830, -3822, -3812, -3808, - -3801, -3794, -3721, -3710, -3699, -3689, -3680, -3671, -3659, -3652, - -3635, -3626, -3609, -3598, - -3812, -3807, -3803, -3799, -3795, -3790, -3786, -3777, -3769, -3764, - -3757, -3750, -3677, -3666, -3656, -3646, -3638, -3628, -3619, -3608, - -3595, -3580, -3568, -3552, - -3766, -3764, -3760, -3755, -3750, -3747, -3742, -3735, -3724, -3721, - -3713, -3706, -3634, -3624, -3613, -3603, -3595, -3585, -3575, -3564, - -3552, -3537, -3526, -3514, - -3724, -3718, -3716, -3711, -3706, -3704, -3698, -3692, -3680, -3676, - -3669, -3662, -3590, -3581, -3569, -3559, -3553, -3541, -3532, -3520, - -3505, -3497, -3484, -3470, - -3682, -3676, -3672, -3667, -3662, -3659, -3654, -3648, -3636, -3632, - -3625, -3618, -3546, -3539, -3526, -3516, -3509, -3499, -3489, -3480, - -3462, -3452, -3441, -3424, - -3639, -3633, -3627, -3623, -3618, -3615, -3610, -3604, -3592, -3588, - -3581, -3574, -3503, -3497, -3482, -3473, -3466, -3455, -3448, -3435, - -3422, -3408, -3395, -3384, - -3595, -3588, -3583, -3579, -3574, -3571, -3566, -3560, -3548, -3544, - -3537, -3530, -3459, -3453, -3439, -3429, -3422, -3413, -3402, -3393, - -3376, -3365, -3352, -3340, - -3549, -3544, -3539, -3534, -3529, -3527, -3522, -3516, -3505, -3500, - -3494, -3485, -3416, -3410, -3396, -3386, -3379, -3369, -3361, -3345, - -3335, -3321, -3311, -3298, - -3506, -3500, -3495, -3490, -3485, -3483, -3477, -3472, -3463, -3456, - -3449, -3442, -3372, -3366, -3352, -3343, -3336, -3326, -3318, -3303, - -3288, -3279, -3267, -3256, - -3462, -3454, -3450, -3446, -3443, -3438, -3434, -3427, -3419, -3412, - -3405, -3398, -3329, -3323, -3308, -3300, -3292, -3283, -3276, -3261, - -3244, -3236, -3224, -3213, - -3420, -3412, -3406, -3401, -3399, -3393, -3389, -3383, -3375, -3368, - -3361, -3354, -3285, -3279, -3265, -3256, -3250, -3239, -3232, -3218, - -3201, -3195, -3181, -3171, - -3374, -3368, -3363, -3358, -3354, -3350, -3345, -3339, -3330, -3324, - -3317, -3310, -3241, -3236, -3222, -3212, -3206, -3197, -3189, -3173, - -3161, -3154, -3140, -3129, - -3329, -3322, -3318, -3316, -3311, -3306, -3301, -3295, -3286, -3280, - -3273, -3266, -3198, -3192, -3178, -3169, -3162, -3152, -3147, -3131, - -3119, -3109, -3098, -3085, - -3288, -3276, -3274, -3271, -3267, -3262, -3257, -3251, -3243, -3236, - -3229, -3222, -3154, -3149, -3135, -3125, -3119, -3110, -3102, -3093, - -3074, -3065, -3053, -3043, - -3242, -3236, -3230, -3227, -3223, -3218, -3213, -3208, -3201, -3192, - -3185, -3178, -3110, -3105, -3091, -3082, -3076, -3066, -3059, -3049, - -3033, -3020, -3012, -2999, - -3195, -3193, -3185, -3181, -3179, -3174, -3168, -3165, -3157, -3148, - -3141, -3135, -3067, -3061, -3047, -3039, -3032, -3023, -3016, -3003, - -2988, -2977, -2967, -2957, - -3155, -3145, -3142, -3136, -3134, -3131, -3123, -3121, -3113, -3103, - -3097, -3092, -3023, -3018, -3005, -2995, -2989, -2980, -2972, -2961, - -2942, -2935, -2925, -2913, - -3109, -3103, -3098, -3095, -3089, -3085, -3080, -3077, -3068, -3059, - -3052, -3048, -2979, -2974, -2961, -2951, -2945, -2936, -2929, -2914, - -2901, -2892, -2882, -2870, - -3065, -3058, -3053, -3052, -3045, -3041, -3036, -3033, -3024, -3015, - -3008, -3004, -2935, -2930, -2918, -2908, -2902, -2892, -2886, -2871, - -2856, -2849, -2839, -2828, - -3020, -3015, -3009, -3007, -3002, -2997, -2992, -2989, -2979, -2972, - -2964, -2960, -2892, -2886, -2875, -2865, -2858, -2850, -2840, -2830, - -2813, -2805, -2796, -2785, - -2980, -2970, -2966, -2963, -2958, -2953, -2947, -2946, -2935, -2927, - -2920, -2916, -2849, -2843, -2831, -2822, -2814, -2806, -2799, -2785, - -2769, -2763, -2752, -2743, - -2937, -2928, -2921, -2919, -2913, -2910, -2902, -2901, -2892, -2882, - -2876, -2872, -2807, -2799, -2786, -2777, -2772, -2762, -2755, -2741, - -2732, -2719, -2710, -2698, - -2890, -2884, -2877, -2876, -2868, -2865, -2859, -2856, -2848, -2839, - -2832, -2828, -2763, -2755, -2743, -2734, -2728, -2720, -2712, -2697, - -2690, -2676, -2666, -2657, - -2847, -2840, -2834, -2830, -2826, -2820, -2817, -2812, -2805, -2795, - -2788, -2784, -2719, -2711, -2701, -2690, -2684, -2675, -2668, -2655, - -2641, -2633, -2623, -2613, - -2803, -2796, -2791, -2786, -2781, -2776, -2774, -2768, -2762, -2750, - -2742, -2741, -2676, -2668, -2658, -2646, -2641, -2632, -2625, -2611, - -2599, -2590, -2580, -2569, - -2762, -2754, -2747, -2743, -2735, -2731, -2730, -2724, -2717, -2707, - -2699, -2695, -2632, -2624, -2614, -2604, -2597, -2588, -2581, -2566, - -2557, -2546, -2537, -2527, - -2719, -2711, -2703, -2698, -2693, -2687, -2684, -2681, -2673, -2662, - -2655, -2651, -2588, -2580, -2570, -2562, -2553, -2545, -2538, -2523, - -2513, -2504, -2493, -2484, - -2676, -2667, -2659, -2652, -2648, -2645, -2640, -2635, -2629, -2618, - -2611, -2608, -2544, -2537, -2526, -2518, -2510, -2501, -2494, -2482, - -2468, -2459, -2451, -2440, - -2631, -2622, -2614, -2611, -2603, -2599, -2597, -2591, -2585, -2574, - -2568, -2563, -2500, -2493, -2482, -2474, -2466, -2458, -2448, -2439, - -2425, -2416, -2406, -2399, - -2584, -2581, -2569, -2565, -2561, -2555, -2553, -2547, -2541, -2529, - -2526, -2519, -2456, -2449, -2439, -2431, -2422, -2414, -2407, -2393, - -2385, -2373, -2365, -2354, - -2543, -2534, -2527, -2521, -2516, -2512, -2507, -2503, -2497, -2485, - -2481, -2475, -2412, -2405, -2395, -2387, -2379, -2370, -2364, -2351, - -2340, -2331, -2320, -2311, - -2499, -2496, -2482, -2479, -2471, -2467, -2464, -2458, -2453, -2441, - -2437, -2431, -2369, -2361, -2351, -2343, -2335, -2327, -2317, -2309, - -2297, -2288, -2277, -2268, - -2455, -2449, -2440, -2432, -2428, -2423, -2420, -2414, -2408, -2398, - -2393, -2387, -2325, -2317, -2307, -2299, -2291, -2283, -2275, -2265, - -2256, -2242, -2235, -2226, - -2410, -2408, -2394, -2389, -2383, -2380, -2376, -2370, -2364, -2354, - -2349, -2342, -2281, -2274, -2263, -2255, -2247, -2240, -2233, -2220, - -2210, -2201, -2190, -2184, - -2368, -2365, -2353, -2345, -2339, -2336, -2332, -2326, -2320, -2308, - -2306, -2298, -2237, -2230, -2221, -2212, -2204, -2196, -2186, -2177, - -2166, -2157, -2148, -2139, - -2324, -2319, -2310, -2299, -2296, -2292, -2288, -2281, -2277, -2265, - -2261, -2254, -2193, -2186, -2177, -2168, -2160, -2151, -2143, -2133, - -2124, -2113, -2105, -2095, - -2281, -2271, -2267, -2255, -2251, -2248, -2244, -2236, -2233, -2223, - -2216, -2210, -2149, -2142, -2133, -2124, -2115, -2108, -2100, -2091, - -2082, -2069, -2062, -2051, - -2234, -2232, -2224, -2212, -2208, -2203, -2200, -2192, -2188, -2178, - -2172, -2166, -2105, -2098, -2089, -2080, -2073, -2065, -2055, -2045, - -2040, -2026, -2017, -2014, - -2192, -2186, -2183, -2166, -2164, -2159, -2155, -2149, -2142, -2133, - -2128, -2121, -2061, -2054, -2044, -2037, -2029, -2021, -2011, -2001, - -1997, -1986, -1969, -1966, - -2150, -2142, -2138, -2122, -2119, -2117, 0, 0, -2099, -2089, -2084, -2078, - -2017, -2010, -2000, -1993, -1985, -1978, -1969, -1962, -1946, -1940, - -1929, -1922, - -2104, -2100, -2092, -2083, -2076, -2071, -2068, -2060, -2054, -2049, - -2040, 0, -1973, -1966, -1956, -1949, -1944, -1937, -1919, -1914, -1910, - -1895, -1888, -1879, - -2058, -2057, -2047, -2040, -2034, -2027, -2021, -2018, -2010, -2005, - -1996, -1988, -1930, -1923, -1917, -1904, -1895, -1893, -1880, -1872, - -1863, -1853, -1843, -1839, - -2014, -2010, -2004, -1996, -1988, -1985, -1977, -1972, -1967, -1961, - -1952, -1945, -1889, -1877, -1868, -1861, -1854, -1849, -1837, -1828, - -1820, -1810, -1799, -1793, - -1973, -1962, -1960, -1952, -1945, -1939, -1934, -1928, -1922, -1917, - -1907, -1901, -1840, -1834, -1826, -1818, -1810, -1806, -1794, -1783, - -1778, -1768, -1757, -1748, - -1929, -1923, -1915, -1907, -1903, -1895, -1890, -1884, -1878, -1872, - -1863, -1857, -1797, -1790, -1785, -1774, -1766, -1762, -1749, -1740, - -1736, -1725, -1713, -1705, - -1884, -1879, -1874, -1865, -1859, -1851, -1846, -1840, -1834, -1828, - -1819, -1813, -1753, -1747, -1742, -1730, -1722, -1718, -1705, -1696, - -1692, -1679, -1671, -1661, - -1838, -1836, -1830, -1822, -1813, -1807, -1801, -1796, -1790, -1784, - -1775, -1771, -1709, -1702, -1699, -1686, -1678, -1672, -1661, -1653, - -1645, -1636, -1626, -1617, - -1793, -1790, -1785, -1778, -1769, -1762, -1758, -1751, -1746, -1745, - -1728, -1722, -1665, -1659, -1653, -1642, -1634, -1629, -1617, -1610, - -1602, -1592, -1583, -1574, - -1752, -1741, -1743, -1732, -1728, -1717, -1713, -1711, -1700, -1697, - -1686, -1681, -1621, -1614, -1609, -1598, -1591, -1586, -1573, -1567, - -1558, -1547, -1542, -1531, - -1703, -1705, -1696, -1691, -1683, -1678, -1664, -1663, -1660, -1652, - -1643, -1634, -1577, -1570, -1567, -1554, -1547, -1542, -1528, -1522, - -1517, -1504, -1497, -1489, - -1664, -1658, -1655, -1650, -1633, -1632, -1624, -1619, -1616, -1610, - -1597, -1591, -1533, -1527, -1522, -1511, -1503, -1499, -1486, -1477, - -1474, -1462, -1453, -1445, - -1619, -1617, -1606, -1602, -1595, -1586, -1579, -1575, -1573, -1565, - -1554, -1547, -1489, -1483, -1479, -1466, -1460, -1454, -1445, -1434, - -1430, -1420, -1408, -1402, - -1570, -1570, -1568, -1554, -1552, -1545, -1535, -1532, -1527, -1520, - -1510, -1503, -1445, -1439, -1435, -1422, -1415, -1412, -1399, -1390, - -1388, -1374, -1366, -1356, - -1532, -1526, -1521, -1516, -1506, -1501, -1492, -1485, -1484, -1477, - -1465, -1459, -1401, -1395, -1391, -1378, -1371, -1367, -1354, -1346, - -1342, -1332, -1322, -1314, - -1488, -1480, -1477, -1470, -1464, -1455, -1448, -1441, -1439, -1433, - -1421, -1415, -1357, -1350, -1347, -1334, -1327, -1323, -1310, -1302, - -1298, -1289, -1277, -1271, - -1440, -1441, -1432, -1424, -1421, -1410, -1404, -1398, -1395, -1388, - -1377, -1370, -1313, -1306, -1303, -1290, -1284, -1277, -1267, -1258, - -1255, -1244, -1235, -1228, - -1399, -1396, -1392, -1377, -1377, -1367, -1358, -1354, -1350, -1344, - -1332, -1326, -1269, -1262, -1259, -1248, -1239, -1234, -1223, -1217, - -1209, -1200, -1192, -1185, - -1357, -1348, -1348, -1335, -1330, -1326, -1317, -1308, -1306, -1300, - -1288, -1283, -1225, -1218, -1215, -1204, -1195, -1191, -1181, -1171, - -1167, -1155, -1146, -1142, - -1312, -1305, -1301, -1293, -1288, -1280, -1273, -1266, -1262, -1256, - -1244, -1240, -1181, -1175, -1171, -1159, -1152, -1146, -1136, -1128, - -1123, -1113, -1104, -1096, - -1265, -1263, -1256, -1249, -1243, -1238, -1228, -1224, -1218, -1212, - -1200, -1196, -1137, -1130, -1127, -1116, -1108, -1102, -1091, -1084, - -1079, -1070, -1063, -1054, - -1223, -1218, -1214, -1206, -1199, -1194, -1185, -1178, -1175, -1167, - -1156, -1152, -1093, -1086, -1082, -1072, -1065, -1059, -1046, -1041, - -1037, -1026, -1018, -1009, - -1180, -1176, -1169, -1161, -1156, -1147, -1141, -1135, -1129, -1123, - -1112, -1108, -1048, -1042, -1038, -1028, -1020, -1015, -1005, -997, - -994, -979, -975, -965, - -1135, -1131, -1126, -1115, -1111, -1105, -1094, -1092, -1085, -1079, - -1068, -1064, -1004, -998, -994, -983, -975, -971, -958, -953, -949, - -938, -929, -923, - -1091, -1088, -1080, -1070, -1065, -1063, -1052, -1047, -1041, -1035, - -1025, -1019, -960, -954, -951, -938, -932, -924, -917, -907, -906, -894, - -885, -881, - -1048, -1041, -1038, -1028, -1023, -1015, -1010, -1002, -997, -991, -980, - -975, -916, -911, -906, -896, -891, -880, -870, -869, -860, -854, -840, - -838, - -1003, -999, -995, -985, -978, -973, -964, -958, -952, -946, -937, -931, - -872, -868, -864, -852, -844, -838, -827, -823, -818, -808, -799, -792, - -960, -952, 0, -942, -934, -927, -922, -914, -908, -902, -893, -887, -828, - -824, -818, -809, -800, -793, -784, -778, -773, -766, -754, -749, - -915, -911, -904, -897, -888, -884, -880, -870, -864, -858, -849, -842, - -784, -780, -774, -765, -757, -751, -740, -733, -730, -721, -711, -706, - -872, -865, -858, -851, -848, -838, -837, -826, -818, -815, -804, -798, - -740, -736, -730, -721, -714, -707, -695, -694, -684, -676, -665, -662, - -828, -820, -817, -806, -803, -795, -791, -783, -775, -770, -762, -754, - -695, -692, -686, -677, -670, -663, -651, -646, -641, -633, -623, -617, - -782, -777, -775, -759, -759, -753, -746, -738, -732, -725, -719, -710, - -651, -648, -642, -633, -625, -619, -606, -603, -597, -592, -578, -572, - -741, -732, -730, -721, -712, -707, -705, -695, -687, -681, -675, -666, - -607, -604, -598, -589, -581, -574, -564, -560, -553, -549, -535, -528, - -698, -689, -683, -676, -668, -664, -661, -651, -643, -637, -631, -621, - -563, -560, -553, -545, -538, -530, -520, -515, -508, -503, -495, -487, - -651, -644, -641, -631, -625, -621, -613, -608, -599, -593, -588, -577, - -519, -515, -509, -501, -494, -488, -475, -469, -467, -461, -450, -443, - -606, -606, -596, -588, -580, -576, -572, -564, -555, -549, -544, -533, - -474, -472, -465, -456, -450, -444, -434, -427, -422, -415, -408, -399, - -563, -560, -552, -544, -536, -530, -530, -519, -511, -504, -498, -489, - -431, -427, -421, -412, -406, -400, -389, -384, -378, -370, -363, -355, - -518, -515, -508, -500, -493, -487, -483, -476, -466, -460, -455, -445, - -386, -383, -377, -368, -362, -357, -344, -339, -334, -329, -314, -313, - -476, -469, -463, -454, -447, -446, -440, -430, -423, -415, -412, -400, - -342, -339, -333, -324, -318, -310, -301, -297, -291, -280, -274, -266, - -431, -426, -418, -412, -403, -402, -397, -388, -378, -372, -367, -356, - -298, -295, -289, -280, -274, -267, -255, -253, -246, -240, -229, -223, - -386, -382, -377, -366, -362, -356, -353, -346, -334, -328, -321, -312, - -254, -251, -245, -237, -230, -223, -213, -207, -201, -197, -190, -179, - -342, -336, -335, -321, -317, -314, -308, -300, -291, -284, -275, -268, - -210, -207, -200, -194, -186, -179, -168, -164, -158, -152, -148, -134, - -301, -293, -287, -282, -272, -268, -264, -257, -247, -240, -233, -223, - -166, -162, -156, -149, -142, -135, -125, -121, -118, -106, -102, -91, - -257, -250, -243, -237, -229, -224, -220, -213, -204, -198, -189, -179, - -124, -118, -112, -105, -98, -90, -82, -77, -70, -65, -56, -48, - -211, -207, -201, -192, -184, -181, -175, -169, -160, -154, -144, -135, - -80, -74, -68, -62, -54, -48, -37, -32, -26, -24, -9, -6, - -169, -160, -156, -146, -144, -136, -130, -124, -117, -110, -100, -91, -35, - -30, -26, -18, -7, -2, 5, 8, 16, 22, 29, 38, - -126, -117, -113, -102, -97, -92, -86, -82, -73, -64, -57, -46, 8, 13, 19, - 25, 31, 41, 53, 54, 59, 65, 72, 80, - -78, -74, -68, -60, -50, -48, -43, -37, -27, -21, -12, -2, 52, 57, 62, 68, - 79, 82, 94, 98, 104, 109, 116, 126, - -36, -29, -25, -15, -8, -4, 4, 4, 16, 22, 31, 41, 96, 102, 108, 113, 122, - 128, 139, 140, 148, 155, 162, 169, - 8, 12, 19, 28, 34, 39, 44, 50, 58, 66, 76, 85, 140, 146, 152, 158, 165, - 173, 181, 187, 191, 196, 211, 211, - 50, 57, 63, 72, 77, 84, 88, 94, 103, 110, 118, 130, 185, 190, 196, 200, - 210, 217, 226, 229, 238, 241, 249, 258, - 98, 100, 109, 113, 121, 125, 133, 139, 147, 156, 163, 174, 229, 234, 240, - 244, 252, 262, 271, 272, 282, 285, 293, 300, - 140, 145, 151, 160, 164, 172, 177, 183, 190, 198, 210, 218, 273, 278, 283, - 288, 298, 304, 316, 317, 325, 329, 335, 343, - 182, 190, 195, 203, 209, 215, 222, 228, 233, 243, 251, 262, 317, 322, 327, - 332, 343, 349, 359, 361, 367, 375, 379, 384, - 226, 232, 239, 246, 252, 259, 265, 273, 277, 286, 294, 306, 361, 367, 373, - 376, 384, 393, 404, 407, 410, 419, 422, 435, - 270, 276, 283, 291, 295, 304, 309, 315, 322, 328, 338, 350, 406, 411, 417, - 420, 429, 437, 445, 453, 456, 460, 468, 477, - 315, 321, 325, 335, 341, 350, 352, 360, 364, 372, 382, 395, 450, 454, 462, - 465, 472, 483, 491, 494, 499, 506, 510, 519, - 0, 365, 370, 379, 386, 391, 396, 404, 409, 417, 426, 438, 494, 499, 504, - 509, 518, 526, 534, 537, 543, 549, 554, 562, - 0, 0, 416, 421, 429, 434, 442, 448, 453, 460, 470, 483, 538, 544, 549, 552, - 562, 567, 579, 584, 585, 594, 600, 606, - 0, 0, 0, 0, 471, 480, 487, 490, 496, 505, 515, 527, 582, 588, 594, 597, - 604, 612, 625, 625, 634, 635, 643, 653, - 0, 0, 0, 0, 518, 523, 530, 536, 540, 549, 559, 570, 627, 632, 636, 642, - 648, 658, 666, 671, 677, 683, 687, 694, - 0, 0, 0, 0, 0, 0, 573, 579, 584, 591, 603, 612, 671, 676, 680, 687, 691, - 701, 712, 716, 720, 725, 734, 738, - 0, 0, 0, 0, 0, 0, 616, 624, 627, 634, 647, 656, 715, 721, 726, 729, 737, - 746, 753, 759, 763, 770, 775, 780, - 0, 0, 0, 0, 0, 0, 0, 667, 672, 679, 691, 701, 759, 765, 770, 773, 781, 790, - 801, 804, 807, 812, 818, 828, - 0, 0, 0, 0, 0, 0, 0, 0, 716, 723, 735, 744, 803, 809, 814, 817, 825, 835, - 839, 846, 852, 861, 862, 868, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 767, 779, 786, 847, 853, 858, 862, 867, 875, - 887, 892, 898, 900, 906, 914, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821, 832, 892, 897, 900, 903, 917, 923, 925, - 935, 940, 947, 948, 960, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 875, 934, 942, 949, 950, 957, 967, 968, - 981, 982, 990, 995, 1000, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 983, 986, 990, 993, 1002, 1010, 1017, - 1024, 1029, 1033, 1038, 1040, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 1030, 1034, 1037, 1046, 1056, - 1060, 1071, 1071, 1075, 1083, 1087, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, 1074, 1077, 1082, 1089, 1099, - 1104, 1111, 1118, 1121, 1126, 1131, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1113, 1118, 1121, 1128, 1129, 1140, - 1153, 1158, 1158, 1167, 1169, 1175, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 1163, 1166, 1167, 1176, 1184, - 1197, 1200, 1204, 1208, 1215, 1220, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1201, 1207, 1210, 1215, 1220, 1228, - 1239, 1245, 1247, 1253, 1259, 1263, - 1099, 1109, 1112, 1127, 1127, 1141, 1144, 1153, 1156, 1163, 1170, 1183, 0, - 1251, 1254, 1259, 1262, 1274, 1282, 1289, 1292, 1298, 1302, 1309, - 1144, 1153, 1155, 1168, 1178, 1184, 1189, 1192, 1201, 1207, 1217, 1227, - 1290, 1295, 1297, 1302, 1307, 1318, 1325, 1332, 1336, 1343, 1346, 1351, - 1184, 1195, 1202, 1212, 1221, 1225, 1231, 1237, 1246, 1252, 1260, 1271, - 1334, 1338, 1344, 1345, 1353, 1361, 1368, 1377, 1380, 1386, 1391, 1393, - 1230, 1238, 1247, 1255, 1263, 1269, 1277, 1281, 1289, 1296, 1303, 1314, - 1377, 1385, 1387, 1390, 1398, 1406, 1411, 1418, 1426, 1429, 1434, 1437, - 0, 1282, 1287, 1299, 1310, 1312, 1318, 1327, 1332, 1339, 1345, 1357, 1422, - 1426, 1431, 1437, 1441, 1448, 1456, 1461, 1470, 1474, 1479, 1481, - 0, 0, 0, 0, 0, 0, 0, 1369, 1377, 1383, 1388, 1401, 1467, 1471, 1476, 1479, - 1483, 1491, 1500, 1508, 1512, 1516, 1524, 1527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1432, 1445, 1511, 1515, 1521, 1524, 1527, - 1536, 1545, 1551, 1557, 1562, 1566, 1570, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1555, 1560, 1564, 1569, 1572, 1576, - 1589, 1594, 1602, 1605, 1611, 1615, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1599, 1604, 1607, 1612, 1617, 1624, - 1631, 1640, 1645, 1652, 1657, 1658, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1643, 1647, 1651, 1658, 1661, 1668, - 1678, 1686, 1689, 1696, 1699, 1701, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1718, 1727, 1736, - 1736, 1744, 1746, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1779, 1782, - 1788, 1789, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1827, 1833, - 1834, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1878, 1880, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2450, 2454, 2461, 0, 0, 0, 0, - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486, 2488, 0, 2500, 2504, 2510, 0, - 0, 0, 0, 2538, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2530, 2534, 2536, 2547, 2548, 2555, - 2560, 2572, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2579, 2585, 2589, 2590, 2598, 0, - 0, 2621, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617, 2623, 2626, 2632, 2635, 2641, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2654, 2659, 2667, 2672, 2673, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2697, 2706, 2710, 2715, 0, 0, 0, 0, 0, - 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2741, 2750, 2752, 0, 0, 0, 0, 0, 0, 0, - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2784, 2795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3699, 3705, 3704, - 3718, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3739, 3742, 3747, 3749, - 3757, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3772, 3775, 3781, 3785, 3791, - 3795, 3801, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3809, 3815, 3821, 3824, 3830, - 3834, 3841, 3848, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3860, 3864, 3868, 3873, 3877, - 3885, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3903, 3910, 3912, 3918, 3921, - 3927, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3952, 3957, 3962, 3967, - 3972, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3994, 4001, 4006, 4012, - 4013, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4050, 4056, 4056, 0, - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4087, 4093, 4097, 4102, - 4106, 0, 4123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4132, 4138, 4141, 4145, - 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4171, 4177, 4181, 4186, - 4189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4209, 4213, 4221, 4226, 4229, - 4233, 4240, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4116, 4127, 4137, 0, 0, 0, 0, 4254, 4259, 4264, - 4270, 4272, 4278, 0, 0, 0, - 0, 0, 0, 0, 0, 4132, 4139, 4151, 4160, 4170, 4179, 4190, 0, 0, 0, 4297, - 4303, 4308, 4313, 4316, 0, 0, 0, 0, - 0, 0, 0, 4150, 4159, 4175, 4184, 4192, 4202, 4215, 4221, 4232, 0, 0, 0, - 4341, 4347, 4351, 4358, 4360, 0, 0, 0, 0, - 0, 0, 0, 4191, 4203, 4213, 4227, 4234, 4247, 4255, 4266, 0, 0, 0, 0, 4384, - 4389, 4397, 4402, 0, 0, 0, 0, 0, - 0, 0, 4218, 4233, 4245, 4257, 4267, 4278, 4290, 4298, 0, 0, 0, 0, 0, 4428, - 4434, 4441, 4446, 0, 0, 0, 0, 0, - 4232, 4246, 4262, 4274, 4286, 4301, 4311, 4318, 4331, 4343, 0, 0, 0, 0, - 4463, 4476, 4479, 4484, 4489, 0, 0, 0, 0, 0, - 4271, 4288, 4303, 4317, 4331, 4343, 4351, 4364, 4373, 0, 0, 0, 0, 0, 0, - 4516, 4522, 4529, 4533, 4536, 4541, 0, 0, 0, - 4316, 4333, 4347, 4360, 4372, 4386, 4394, 4404, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4572, 4578, 4580, 4585, 4590, 4595, 0, - 4361, 4373, 4388, 4403, 4414, 4424, 4437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4624, 4629, 4634, 4640, 0, - 4402, 4416, 4429, 4442, 4457, 4470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4678, 0, 0, - 4444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4487, 0, 0, 0, 0, 4555, 4563, 4575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - 0, 0, 0, 0, 0, 4598, 4604, 4618, 4629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - 4568, 0, 0, 0, 0, 0, 0, 4660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5890, 5909, 0, 5954, 5972, 0, 6007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - 5925, 5950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5962, 5986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6077, 6101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6114, 6137, 6163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6497, 6505, 0, 0, 0, 0, - 0, 0, 0, 0, - 6150, 6174, 6200, 6221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6528, 6540, 6553, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 6212, 6237, 6261, 0, 0, 0, 0, 0, 0, 0, 0, 6566, 6574, 6583, 6592, 6601, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6276, 6297, 0, 0, 0, 0, 0, 0, 0, 0, 6606, 6615, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6399, 6422, 6440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6717, 0, - 0, 6744, 0, - 0, 0, 0, 0, 0, 0, 0, 6460, 6479, 6501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6762, 0, - 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6517, 6539, 0, 0, 0, 0, 0, 0, 0, 0, 6795, 6804, - 6813, 0, 0, 6834, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6834, 6847, 0, 0, - 6872, 6881, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6868, 6878, 6889, 6900, - 6908, 6916, 6922, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6902, 6911, 6921, 6930, - 6942, 6950, 6959, 6964, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6936, 6946, 6953, 6964, 6975, - 6982, 6992, 7000, 7006, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6964, 6977, 6990, 6998, 7006, - 7017, 7029, 7034, 7043, 7050, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6994, 7008, 7019, 7032, 7038, 7050, - 7060, 7074, 7082, 7083, 7092, - 6577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7026, 7034, 7047, 7063, 7072, 7083, - 7092, 7104, 7115, 7124, 7130, 7130, - 6611, 6640, 6671, 6698, 0, 0, 0, 0, 0, 0, 0, 0, 7066, 7077, 7089, 7104, - 7115, 7126, 7138, 7146, 7156, 7168, 7172, 7180, - 6645, 6672, 6703, 6730, 6755, 6782, 0, 0, 0, 0, 0, 0, 7106, 7120, 7132, - 7145, 7158, 7169, 7178, 7193, 7196, 7209, 7217, 7224, - 6677, 6705, 6735, 6768, 6792, 0, 0, 0, 0, 0, 0, 0, 7147, 7160, 7174, 7187, - 7202, 7209, 7223, 7233, 7242, 7250, 7259, 7267, - 6708, 6738, 6772, 6798, 6826, 6852, 6877, 6905, 6929, 6955, 6980, 0, 7187, - 7202, 7214, 7230, 7240, 7254, 7265, 7276, 7287, 7293, 7301, 7308, - 6739, 6773, 6806, 6831, 6858, 6887, 6914, 6938, 6965, 6990, 7018, 7040, - 7227, 7243, 7256, 7272, 7284, 7297, 7308, 7320, 7327, 7335, 7343, 7350, - 6773, 6805, 6838, 6865, 6892, 6921, 6947, 6977, 7001, 7028, 7053, 7077, - 7268, 7285, 7297, 7314, 7326, 7339, 7352, 7361, 7371, 7378, 7384, 7392, - 6805, 6836, 6868, 6899, 6925, 6955, 6983, 7012, 7035, 7062, 7090, 7114, - 7309, 7322, 7340, 7355, 7368, 7381, 7392, 7405, 7415, 7422, 7430, 7435, - 6834, 6869, 6900, 6933, 6959, 6990, 7016, 7043, 7071, 7099, 7127, 7150, - 7349, 7364, 7380, 7398, 7409, 7422, 7436, 7447, 7457, 7465, 7472, 7479, - 6866, 6899, 6931, 6961, 6992, 7024, 7050, 7079, 7106, 7134, 7160, 7186, - 7389, 7406, 7422, 7438, 7451, 7464, 7478, 7490, 7500, 7508, 7517, 7523, - 6895, 6931, 6964, 6999, 7027, 7052, 7084, 7111, 7138, 7169, 7196, 7222, - 7429, 7446, 7464, 7478, 7491, 7506, 7520, 7533, 7543, 7552, 7560, 7564, - 6927, 6962, 6995, 7027, 7059, 7088, 7117, 7144, 7174, 7202, 7230, 7257, - 7471, 7485, 7504, 7520, 7532, 7548, 7562, 7575, 7585, 7594, 7604, 7607, - 6955, 6990, 7024, 7058, 7090, 7119, 7151, 7176, 7207, 7235, 7264, 7292, - 7508, 7526, 7544, 7558, 7575, 7591, 7604, 7618, 7627, 7638, 7647, 7653, - 6982, 7018, 7054, 7088, 7117, 7148, 7179, 7209, 7239, 7270, 7300, 7326, - 7548, 7564, 7583, 7601, 7617, 7631, 7647, 7660, 7670, 7681, 7691, 7697, - 7011, 7045, 7082, 7115, 7147, 7180, 7210, 7239, 7272, 7304, 7333, 7360, - 7586, 7604, 7623, 7640, 7658, 7674, 7690, 0, 0, 0, 0, 7738, - 7038, 7075, 7114, 7145, 7178, 7213, 7239, 7270, 7300, 7334, 7366, 7393, - 7626, 7643, 7665, 7680, 7698, 7716, 7730, 0, 0, 0, 0, 0, - 7065, 7103, 7139, 7175, 7206, 7241, 7270, 7302, 7333, 7364, 7395, 7425, - 7665, 7682, 7704, 7719, 7739, 0, 0, 0, 0, 0, 0, 0, - 7093, 7127, 7166, 7206, 7239, 7271, 7303, 7335, 7365, 7396, 7428, 7459, - 7702, 7723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7120, 7156, 7194, 7230, 7265, 7299, 7332, 7360, 7394, 7429, 7457, 7490, 0, - 7758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7142, 7182, 7219, 7259, 7293, 7327, 7361, 7389, 7423, 7457, 7488, 7522, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7169, 7206, 7248, 7283, 7317, 7354, 7386, 7417, 7452, 7487, 7520, 7552, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7192, 7233, 7269, 7302, 7343, 7381, 7413, 7446, 7482, 7515, 7547, 7583, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7213, 7256, 7293, 7332, 7370, 7404, 7439, 7473, 7508, 7544, 7576, 7610, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7238, 7275, 7316, 7354, 7392, 7429, 7465, 7499, 7532, 7569, 7602, 7639, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7255, 7294, 7337, 7377, 7414, 7452, 7488, 7521, 7556, 7594, 7630, 7666, - 7954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7276, 7315, 7357, 7396, 7435, 7472, 7508, 7544, 7582, 7619, 0, 7693, 7985, - 8015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7293, 7337, 7380, 7422, 7458, 0, 7531, 0, 0, 0, 0, 0, 8017, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7388, 7433, 7478, 7521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - 7376, 7418, 7463, 7505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - 7364, 7406, 7448, 7490, 7532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - 7348, 7391, 7435, 7474, 7515, 7550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 7334, 7374, 7414, 7453, 7494, 7536, 7575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 7318, 7357, 7395, 7436, 7479, 7517, 7553, 7593, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 7297, 7339, 7380, 7418, 7455, 7498, 7537, 7568, 7606, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 7279, 7319, 7358, 7399, 7435, 7471, 7512, 7547, 7586, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 7257, 7299, 7339, 7378, 7412, 7448, 7488, 7524, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 7238, 7277, 7317, 7352, 7389, 7423, 7462, 7498, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 7216, 7252, 0, 0, 0, 0, 7436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6612, 6624, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5430, 5431, - 5436, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5393, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5316, 5324, 0, 0, 0, - 5351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5272, 5280, 0, 0, - 5302, 5305, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5216, 5222, 5230, 0, 0, - 5253, 5256, 5263, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5170, 5173, 5181, 5187, 0, - 5204, 5209, 5214, 5218, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5127, 5130, 5139, 5144, 5153, - 5160, 5165, 5171, 5175, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5089, 5095, 5103, 5108, - 5118, 5122, 5127, 5132, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5032, 5040, 5045, 5052, 5059, - 5068, 5073, 5080, 5082, 5087, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4980, 4991, 4996, 5001, 5009, 5017, - 5024, 5030, 5033, 5039, 5043, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931, 4937, 4944, 4953, 4957, 4965, - 4975, 4980, 4985, 4989, 4994, 4997, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4886, 4893, 4903, 4907, 4913, 4922, - 4930, 4936, 4942, 4944, 4952, 4956, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4843, 4852, 4857, 4865, 4871, 4877, - 4885, 4892, 4900, 4902, 4908, 4910, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4799, 4807, 4814, 4823, 4823, 4835, - 4847, 4848, 4854, 4857, 4863, 4867, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755, 4765, 4769, 4777, 4784, 4793, - 4800, 4804, 4809, 4813, 4822, 4823, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4711, 4721, 4728, 4733, 4738, 4747, - 4758, 4761, 4765, 4771, 4778, 4777, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4668, 4677, 4684, 4689, 4694, 4705, - 4714, 4715, 4724, 4726, 4731, 4733, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4624, 4634, 4637, 4645, 4652, 4661, - 4670, 4672, 4680, 4681, 4689, 4689, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4579, 4589, 4596, 4600, 4608, 4615, - 4625, 4629, 4636, 4638, 4644, 4646, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4536, 4546, 4549, 4559, 4565, 4570, - 4581, 4584, 4592, 4594, 4598, 4603, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4492, 4502, 4507, 4512, 4521, 4529, - 4538, 4540, 4546, 4551, 4554, 4557, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4448, 4457, 4465, 4473, 4473, 4487, - 4493, 4498, 4501, 4508, 4511, 4516, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4405, 4415, 4419, 4424, 4434, 4443, - 4447, 4453, 4458, 4463, 4470, 4469, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4364, 4368, 4377, 4378, 4392, 4400, - 4405, 4409, 4414, 4420, 4423, 4426, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4321, 4323, 4332, 4339, 4350, 4356, - 4361, 4365, 4371, 4376, 4378, 4383, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4277, 4281, 4287, 4296, 4307, 4311, - 4317, 4323, 4325, 4331, 4338, 4334, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4148, 4231, 4240, 4243, 4250, 4264, 4268, - 4271, 4278, 4282, 4287, 4290, 4291, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4105, 4188, 4193, 4200, 4209, 4216, 4224, - 4228, 4233, 4240, 4241, 4246, 4248, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4062, 4145, 4149, 4154, 4164, 4175, 4179, - 4184, 4189, 4193, 4198, 4203, 4203, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4011, 4018, 4101, 4104, 4112, 4122, 4132, - 4134, 4141, 4144, 4150, 4153, 4157, 4163, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3967, 3975, 4056, 4063, 4068, 4076, 4087, - 4090, 4097, 4100, 4106, 4108, 4114, 4119, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3917, 3924, 3932, 4013, 4017, 4023, 4033, 4043, - 4046, 4052, 4056, 4063, 4066, 4068, 4075, - 0, 0, 0, 0, 0, 0, 0, 0, 3863, 3874, 3881, 3888, 3969, 3973, 3980, 3990, - 3998, 4002, 4007, 4012, 4018, 4022, 4023, 4034, - 0, 0, 0, 0, 0, 0, 0, 3806, 3820, 3830, 3838, 3845, 3924, 3932, 3935, 3945, - 3955, 3958, 3964, 3969, 3974, 3976, 3981, 3988, - 0, 0, 0, 0, 0, 0, 3751, 3763, 3777, 3787, 3795, 3801, 3880, 3888, 3893, - 3903, 3910, 3914, 3920, 3924, 3931, 3932, 3937, 3946, - 0, 0, 0, 0, 0, 3700, 3709, 3720, 3733, 3743, 3751, 3758, 3835, 3844, 3849, - 3859, 3865, 3870, 3876, 3880, 3885, 3889, 3892, 3902, - 0, 0, 0, 0, 0, 3657, 3665, 3676, 3690, 3700, 3708, 3714, 3791, 3800, 3806, - 3813, 3822, 3826, 3832, 3837, 3840, 3844, 3848, 3858, - 0, 0, 0, 0, 3604, 3616, 3622, 3635, 3647, 3657, 3664, 3672, 3747, 3754, - 3762, 3773, 3777, 3783, 3787, 3792, 3797, 3800, 3808, 3814, - 0, 0, 3538, 3552, 3560, 3571, 3580, 3592, 3603, 3613, 3621, 3630, 3705, - 3709, 3716, 3730, 3734, 3736, 3744, 3750, 3753, 3758, 3763, 3773, - 0, 3481, 3494, 3508, 3518, 3529, 3536, 3548, 3561, 3570, 3576, 3586, 3659, - 3667, 3674, 3684, 3689, 3694, 3700, 3705, 3709, 3714, 3720, 3728, - 3430, 3438, 3454, 3466, 3474, 3485, 3493, 3505, 3519, 3526, 3533, 3542, - 3615, 3622, 3631, 3642, 3645, 3649, 3656, 3661, 3664, 3671, 3678, 3681, - 3389, 3398, 3407, 3421, 3432, 3441, 3449, 3461, 3475, 3483, 3490, 3499, - 3572, 3579, 3589, 3595, 3602, 3606, 3610, 3618, 3619, 3626, 3633, 3638, - 3346, 3353, 3369, 3380, 3387, 3398, 3406, 3418, 3431, 3439, 3446, 3455, - 3530, 3533, 3547, 3550, 3556, 3563, 3566, 3573, 3577, 3583, 3590, 3593, - 3303, 3313, 3324, 3336, 3345, 3355, 3364, 3374, 3386, 3396, 3403, 3411, - 3486, 3491, 3498, 3509, 3513, 3519, 3524, 3527, 3534, 3540, 3543, 3552, - 3259, 3268, 3285, 3292, 3302, 3312, 3322, 3332, 3344, 3352, 3359, 3368, - 3440, 3448, 3459, 3464, 3469, 3474, 3479, 3484, 3488, 3495, 3503, 3504, - 3216, 3227, 3239, 3250, 3258, 3269, 3279, 3288, 3302, 3309, 3316, 3324, - 3398, 3403, 3416, 3419, 3426, 3429, 3434, 3441, 3443, 3453, 3461, 3460, - 3175, 3183, 3195, 3207, 3217, 3225, 3235, 3246, 3259, 3266, 3272, 3280, - 3353, 3360, 3371, 3374, 3379, 3387, 3390, 3397, 3399, 3409, 3415, 3416, - 3133, 3140, 3151, 3164, 3173, 3182, 3191, 3202, 3215, 3222, 3228, 3238, - 3310, 3313, 3325, 3333, 3335, 3344, 3346, 3352, 3356, 3365, 3370, 3374, - 3089, 3098, 3110, 3121, 3131, 3139, 3149, 3158, 3171, 3178, 3185, 3196, - 3264, 3273, 3283, 3288, 3291, 3298, 3303, 3307, 3314, 3320, 3324, 3331, - 3046, 3055, 3067, 3077, 3088, 3097, 3106, 3116, 3128, 3134, 3142, 3152, - 3221, 3229, 3238, 3243, 3247, 3255, 3258, 3263, 3269, 3279, 3282, 3285, - 3003, 3013, 3023, 3035, 3046, 3053, 3063, 3072, 3084, 3090, 3099, 3108, - 3177, 3183, 3194, 3200, 3203, 3209, 3215, 3218, 3227, 3236, 3237, 3240, - 2961, 2968, 2982, 2992, 3002, 3008, 3018, 3029, 3040, 3047, 3056, 3066, - 3133, 3141, 3151, 3154, 3160, 3164, 3173, 3175, 3181, 3189, 3195, 3198, - 2916, 2926, 2937, 2948, 2957, 2965, 2975, 2985, 2998, 3003, 3012, 3023, - 3089, 3097, 3107, 3109, 3117, 3122, 3124, 3132, 3140, 3145, 3150, 3156, - 2874, 2880, 2896, 2905, 2915, 2923, 2932, 2941, 2953, 2960, 2968, 2979, - 3044, 3056, 3062, 3066, 3070, 3079, 3082, 3086, 3095, 3103, 3110, 3107, - 2831, 2837, 2851, 2863, 2872, 2879, 2888, 2899, 2909, 2916, 2926, 2936, - 3000, 3014, 3015, 3022, 3029, 3032, 3039, 3044, 3053, 3055, 3062, 3065, - 2787, 2797, 2807, 2819, 2828, 2835, 2844, 2856, 2866, 2873, 2882, 2892, - 2955, 2969, 2974, 2977, 2984, 2990, 2994, 2998, 3007, 3013, 3017, 3022, - 2743, 2751, 2767, 2777, 2785, 2792, 2801, 2812, 2822, 2828, 2839, 2847, - 2911, 2923, 2930, 2936, 2939, 2943, 2950, 2957, 2963, 2968, 2975, 2977, - 2701, 2708, 2723, 2732, 2741, 2749, 2758, 2768, 2779, 2785, 2794, 2804, - 2870, 2884, 2881, 2890, 2895, 2900, 2905, 2916, 2919, 2924, 2931, 2937, - 2658, 2666, 2681, 2689, 2697, 2706, 2715, 2725, 2735, 2741, 2754, 2760, - 2822, 2836, 2841, 2844, 2851, 2856, 2860, 2870, 2875, 2882, 2885, 2893, - 2615, 2623, 2636, 2645, 2655, 2663, 2670, 2682, 2691, 2698, 2711, 2717, - 2782, 2791, 2798, 2801, 2805, 2813, 2817, 2826, 2833, 2835, 2840, 2848, - 2570, 2579, 2594, 2603, 2611, 2619, 2627, 2639, 2648, 2653, 2667, 2675, - 2738, 2747, 2753, 2758, 2763, 2769, 2775, 2781, 2789, 2793, 2797, 2801, - 2528, 2536, 2548, 2561, 2568, 2576, 2583, 2596, 2604, 2609, 2623, 2633, - 2693, 2703, 2708, 2715, 2719, 2724, 2731, 2736, 2746, 2748, 2752, 2757, - 2485, 2492, 2506, 2518, 2524, 2533, 2540, 2553, 2560, 2571, 2578, 2584, - 2650, 2659, 2664, 2669, 2674, 2681, 2685, 2691, 2703, 2704, 2709, 2713, - 2442, 2450, 2461, 2473, 2480, 2490, 2497, 2512, 2512, 2526, 2535, 2545, - 2611, 2613, 2620, 2625, 2630, 2637, 2644, 2649, 2658, 2660, 2666, 2671, - 2399, 2405, 2419, 2430, 2438, 2446, 2448, 2466, 2473, 2483, 2492, 2501, - 2566, 2571, 2576, 2582, 2586, 2593, 2596, 2607, 2613, 2617, 2621, 2627, - 2356, 2362, 2380, 2386, 2391, 2402, 2409, 2423, 2428, 2441, 2447, 2458, - 2522, 2526, 2532, 2538, 2540, 2549, 2555, 2564, 2567, 2572, 2580, 2582, - 2316, 2316, 2331, 2343, 2350, 2359, 2365, 2379, 2384, 2398, 2403, 2414, - 2477, 2482, 2484, 2496, 2495, 2505, 2511, 2517, 2524, 2529, 2535, 2539, - 2268, 2278, 2289, 2300, 2307, 2315, 2323, 2334, 2341, 2354, 2359, 2370, - 2432, 2439, 2442, 2450, 2453, 2460, 2468, 2472, 2481, 2484, 2491, 2495, - 2226, 2233, 2247, 2256, 2262, 2272, 2280, 2291, 2298, 2311, 2315, 2326, - 2388, 2394, 2400, 2403, 2410, 2417, 2425, 2428, 2436, 2441, 2447, 2452, - 2182, 2190, 2202, 2212, 2220, 2226, 2236, 2247, 2256, 2266, 2271, 2282, - 2345, 2348, 2355, 2360, 2366, 2370, 2381, 2386, 2392, 2399, 2402, 2407, - 2139, 2148, 2159, 2168, 2177, 2184, 2192, 2203, 2211, 2222, 2228, 2238, - 2300, 2305, 2312, 2316, 2322, 2326, 2335, 2342, 2348, 2353, 2359, 2364, - 2096, 2105, 2118, 2124, 2134, 2140, 2147, 2159, 2170, 2179, 2184, 2194, - 2256, 2261, 2267, 2271, 2278, 2284, 2290, 2298, 2305, 2310, 2315, 2319, - 2054, 2061, 2073, 2081, 2089, 2096, 2103, 2116, 2127, 2135, 2142, 2150, - 2211, 2216, 2223, 2228, 2232, 2240, 2249, 2254, 2260, 2267, 2271, 2276, - 2007, 2017, 2029, 2038, 2044, 2053, 2062, 2073, 2083, 2091, 2098, 2105, - 2167, 2172, 2179, 2183, 2189, 2197, 2202, 2212, 2214, 2223, 2227, 2235, - 1965, 1975, 1986, 1995, 2001, 2010, 2018, 2028, 2037, 2047, 2054, 2062, - 2123, 2127, 2135, 2139, 2146, 2154, 2158, 2168, 2168, 2179, 2181, 2192, - 1922, 1932, 1942, 1951, 1958, 1965, 1973, 1984, 1994, 2003, 2010, 2019, - 2079, 2083, 2091, 2093, 2101, 2111, 2115, 2124, 2128, 2134, 2138, 2147, - 1879, 1888, 1901, 1907, 1916, 1921, 1930, 1942, 1951, 1959, 1966, 1976, - 2035, 2037, 2047, 2049, 2057, 2067, 2070, 2081, 2085, 2088, 2095, 2102, - 1835, 1845, 1857, 1863, 1871, 1878, 1888, 1899, 1908, 1914, 1922, 1932, - 1991, 1994, 2002, 2008, 2013, 2021, 2027, 2038, 2040, 2045, 2052, 2060, - 1791, 1800, 1814, 1820, 1828, 1834, 1842, 1856, 1865, 1870, 1878, 1889, - 1946, 1953, 1958, 1962, 1969, 1978, 1985, 1994, 1997, 2001, 2008, 2016, - 1749, 1757, 1768, 1776, 1783, 1792, 1800, 1812, 1821, 1826, 1833, 1846, - 1902, 1907, 1913, 1919, 1924, 1935, 1944, 1949, 1953, 1958, 1963, 1972, - 1705, 1715, 1726, 1732, 1740, 1747, 1759, 1769, 1777, 1782, 1790, 1802, - 1857, 1864, 1868, 1875, 1881, 1889, 1898, 1905, 1909, 1913, 1922, 1928, - 1663, 1669, 1682, 1687, 1696, 1702, 1715, 1726, 1734, 1738, 1746, 1758, - 1813, 1820, 1824, 1831, 1837, 1846, 1857, 1860, 1864, 1870, 1877, 1884, - 1620, 1625, 1638, 1644, 1652, 1660, 1673, 1682, 1690, 1696, 1701, 1714, - 1768, 1776, 1780, 1786, 1795, 1801, 1813, 1818, 1820, 1827, 1837, 1838, - 1575, 1585, 1593, 1601, 1608, 1617, 1630, 1638, 1645, 1651, 1657, 1670, - 1724, 1731, 1736, 1740, 1754, 1763, 1768, 1772, 1777, 1780, 1793, 1795, - 1531, 1539, 1551, 1558, 1565, 1574, 1586, 1594, 1602, 1608, 1613, 1626, - 1681, 1686, 1692, 1700, 1712, 1719, 1725, 1727, 1732, 1738, 1746, 1752, - 1488, 1496, 1507, 1514, 1521, 1531, 1543, 1550, 1557, 1565, 1569, 1581, - 1639, 1644, 1646, 1657, 1668, 1673, 1682, 1683, 1688, 1693, 1701, 1708, - 1447, 1452, 1463, 1472, 1476, 1486, 1498, 1506, 1513, 1521, 1525, 1537, - 1596, 1602, 1606, 1614, 1622, 1629, 1637, 1639, 1643, 1650, 1660, 1661, - 1402, 1410, 1419, 1426, 1433, 1445, 1454, 1462, 1469, 1475, 1481, 1493, - 1554, 1559, 1565, 1570, 1581, 1588, 1590, 1596, 1599, 1609, 1614, 1619, - 1357, 1366, 1376, 1382, 1389, 1402, 1410, 1418, 1425, 1431, 1437, 1449, - 1511, 1515, 1522, 1524, 1536, 1543, 1548, 1550, 1555, 1565, 1572, 1575, - 1313, 1322, 1332, 1340, 1345, 1358, 1366, 1375, 1381, 1388, 1394, 1404, - 1466, 1470, 1477, 1482, 1492, 1497, 1502, 1507, 1513, 1519, 1525, 1532, - 1269, 1277, 1288, 1296, 1303, 1314, 1322, 1333, 1337, 1344, 1350, 1360, - 1422, 1426, 1433, 1437, 1448, 1456, 1459, 1461, 1466, 1476, 1480, 1485, - 1226, 1237, 1244, 1252, 1260, 1269, 1278, 1288, 1293, 1300, 1307, 1316, - 1378, 1381, 1388, 1394, 1403, 1409, 1414, 1419, 1421, 1434, 1437, 1440, - 1182, 1196, 1202, 1209, 1217, 1225, 1234, 1245, 1249, 1255, 1265, 1272, - 1333, 1337, 1344, 1350, 1360, 1367, 1368, 1373, 1378, 1389, 1392, 1397, - 1137, 1150, 1158, 1165, 1177, 1183, 1190, 1200, 1205, 1211, 1221, 1228, - 1288, 1293, 1299, 1308, 1314, 1323, 1324, 1328, 1337, 1345, 1348, 1355, - 1094, 1104, 1113, 1121, 1134, 1138, 1146, 1156, 1160, 1167, 1177, 1184, - 1244, 1250, 1255, 1263, 1272, 1276, 1281, 1284, 1293, 1301, 1306, 1308, - 1052, 1060, 1071, 1077, 1089, 1095, 1103, 1112, 1116, 1123, 1133, 1140, - 1200, 1205, 1211, 1220, 1226, 1234, 1235, 1242, 1249, 1254, 1261, 1266, - 1008, 1018, 1028, 1035, 1045, 1050, 1059, 1068, 1072, 1079, 1089, 1095, - 1155, 1161, 1166, 1178, 1181, 1190, 1191, 1198, 1203, 1213, 1217, 1222, - 965, 974, 982, 992, 1002, 1006, 1015, 1024, 1028, 1035, 1044, 1051, 1111, - 1118, 1123, 1133, 1137, 1145, 1148, 1154, 1160, 1168, 1173, 1178, - 922, 929, 939, 947, 958, 963, 973, 979, 985, 990, 1000, 1008, 1067, 1074, - 1078, 1090, 1093, 1100, 1103, 1109, 1117, 1125, 1129, 1132, - 877, 888, 895, 904, 914, 918, 928, 935, 943, 946, 955, 965, 1022, 1029, - 1033, 1045, 1050, 1055, 1059, 1065, 1073, 1081, 1087, 1090, - 835, 843, 851, 861, 869, 874, 884, 891, 898, 902, 911, 921, 978, 985, 988, - 1001, 1007, 1012, 1013, 1022, 1030, 1036, 1041, 1045, - 791, 799, 808, 819, 826, 830, 841, 847, 854, 858, 868, 876, 933, 940, 944, - 957, 963, 966, 972, 976, 985, 991, 997, 1003, - 747, 754, 766, 775, 781, 786, 799, 802, 809, 814, 826, 832, 889, 896, 901, - 912, 919, 922, 927, 932, 942, 948, 952, 957, - 703, 712, 720, 733, 737, 741, 754, 759, 766, 770, 781, 788, 844, 852, 860, - 868, 874, 878, 882, 888, 899, 903, 908, 915, - 659, 668, 679, 688, 693, 698, 711, 714, 721, 726, 737, 744, 800, 807, 817, - 823, 830, 834, 837, 843, 855, 859, 862, 871, - 616, 626, 635, 644, 649, 656, 665, 670, 676, 684, 693, 699, 756, 763, 772, - 779, 786, 789, 793, 799, 811, 817, 819, 827, - 571, 582, 592, 601, 604, 610, 622, 626, 632, 639, 648, 655, 713, 719, 728, - 735, 741, 745, 750, 758, 768, 770, 775, 784, - 527, 538, 549, 555, 561, 566, 577, 583, 588, 595, 604, 610, 670, 674, 684, - 690, 697, 701, 707, 713, 723, 727, 730, 739, - 486, 493, 505, 512, 516, 522, 533, 540, 544, 550, 560, 566, 625, 630, 639, - 646, 653, 656, 663, 671, 678, 684, 688, 694, - 441, 451, 461, 468, 472, 477, 489, 496, 499, 506, 516, 522, 581, 585, 595, - 602, 608, 612, 618, 627, 634, 640, 642, 650, - 399, 407, 417, 424, 428, 434, 444, 451, 455, 462, 471, 477, 537, 541, 553, - 557, 564, 568, 574, 583, 590, 596, 598, 606, - 353, 366, 373, 380, 384, 391, 401, 407, 411, 418, 428, 433, 492, 498, 509, - 515, 520, 523, 530, 539, 545, 551, 558, 559, - 313, 323, 331, 335, 341, 348, 356, 363, 367, 373, 385, 389, 448, 455, 465, - 472, 475, 480, 485, 496, 501, 505, 513, 518, - 271, 279, 285, 293, 295, 306, 312, 319, 323, 329, 341, 345, 403, 411, 420, - 427, 431, 436, 441, 453, 458, 462, 466, 473, - 222, 236, 244, 248, 252, 260, 269, 275, 279, 286, 297, 300, 359, 366, 376, - 383, 387, 392, 399, 408, 412, 416, 425, 427, - 179, 193, 200, 203, 208, 217, 223, 232, 235, 243, 253, 256, 315, 322, 331, - 338, 343, 348, 353, 364, 371, 373, 380, 385, - 135, 147, 154, 160, 164, 173, 180, 186, 192, 199, 208, 211, 270, 277, 288, - 293, 298, 303, 311, 320, 326, 332, 337, 340, - 94, 104, 109, 116, 120, 129, 136, 142, 148, 156, 164, 167, 226, 235, 243, - 250, 253, 260, 266, 276, 280, 287, 294, 299, - 53, 58, 67, 72, 76, 86, 93, 98, 104, 110, 121, 122, 181, 191, 199, 205, - 209, 216, 221, 233, 238, 244, 246, 252, - 5, 17, 24, 28, 30, 41, 49, 54, 60, 65, 75, 80, 137, 149, 155, 161, 165, - 172, 181, 188, 190, 199, 203, 210, - -35, -28, -20, -16, -12, -2, 4, 9, 15, 22, 31, 34, 93, 103, 112, 117, 125, - 125, 134, 143, 150, 154, 159, 166, - -79, -70, -63, -61, -56, -45, -38, -34, -28, -22, -12, -9, 48, 60, 72, 68, - 76, 83, 91, 99, 104, 112, 115, 124, - -121, -115, -108, -103, -101, -89, -82, -79, -72, -65, -57, -54, 5, 11, 24, - 27, 31, 38, 48, 53, 59, 68, 72, 78, - -165, -157, -153, -148, -145, -133, -126, -123, -117, -107, -102, -98, -37, - -30, -20, -16, -11, -5, 5, 10, 16, 23, 30, 33, - -210, -199, -197, -193, -188, -178, -171, -168, -162, -151, -146, -142, - -82, -74, -64, -60, -55, -49, -37, -31, -27, -20, -15, -8, - -256, -244, -240, -238, -231, -223, -215, -212, -205, -196, -190, -187, - -126, -117, -108, -104, -97, -93, -81, -75, -70, -63, -59, -50, - -295, -291, -284, -282, -275, -265, -259, -254, -250, -241, -231, -234, - -170, -160, -152, -148, -142, -138, -124, -120, -115, -107, -105, -95, - -339, -334, -329, -325, -317, -310, -303, -296, -293, -288, -279, -272, - -214, -204, -197, -193, -186, -183, -171, -163, -158, -152, -149, -137, - -386, -376, -374, -369, -362, -350, -348, -347, -338, -328, -323, -318, - -258, -248, -241, -237, -230, -226, -215, -208, -203, -195, -192, -181, - -432, -419, -417, -410, -408, -398, -393, -388, -383, -372, -369, -362, - -300, -291, -286, -282, -274, -269, -258, -251, -246, -242, -235, -226, - -470, -462, -465, -457, -450, -442, -437, -430, -426, -417, -412, -406, - -345, -335, -330, -326, -319, -311, -303, -296, -290, -284, -280, -269, - -516, -511, -508, -501, -493, -487, -481, -475, -472, -460, -456, -449, - -389, -379, -374, -371, -364, -354, -346, -339, -334, -330, -321, -312, - -561, -554, -549, -547, -539, -530, -526, -519, -516, -504, -500, -492, - -433, -423, -419, -415, -407, -399, -391, -385, -376, -373, -365, -356, - -603, -599, -594, -591, -583, -574, -569, -563, -560, -548, -545, -536, - -478, -468, -463, -459, -451, -443, -435, -428, -421, -418, -410, -401, - -650, -643, -638, -634, -627, -617, -614, -607, -603, -593, -590, -579, - -522, -512, -507, -502, -496, -486, -478, -473, -465, -464, -452, -446, - -691, -686, -681, -679, -668, -662, -658, -652, -646, -637, -634, -622, - -565, -556, -552, -545, -541, -530, -522, -518, -508, -505, -496, -489, - -734, -729, -727, -722, -713, -707, -701, -696, -690, -681, -678, -667, - -608, -600, -596, -590, -586, -574, -565, -560, -553, -551, -539, -529, - -779, -774, -771, -765, -759, -750, -745, -740, -734, -726, -722, -711, - -652, -645, -641, -634, -629, -617, -609, -606, -596, -593, -583, -576, - -824, -819, -815, -809, -801, -794, -791, -785, -778, -771, -763, -756, - -697, -689, -685, -677, -673, -660, -653, -648, -642, -638, -624, -619, - -867, -863, -859, -854, -846, -838, -834, -829, -820, -815, -804, -800, - -741, -733, -729, -721, -717, -705, -699, -693, -687, -680, -669, -661, - -911, -906, -904, -898, -890, -883, -877, -874, -865, -859, -848, -844, - -784, -778, -773, -766, -761, -750, -742, -738, -731, -726, -714, -706, - -954, -953, -947, -942, -931, -927, -921, -918, -910, -902, -892, -889, - -827, -822, -818, -811, -803, -792, -786, -782, -773, -771, -758, -751, - -999, -995, -993, -986, -975, -972, -966, -961, -954, -945, -936, -933, - -871, -866, -862, -854, -848, -836, -830, -824, -819, -812, -801, -796, - -1043, -1039, -1035, -1031, -1021, -1016, -1010, -1004, -998, -990, -980, - 0, -916, -911, -906, -899, -891, -880, -875, -868, -863, -852, -844, -839, - -1088, -1083, -1079, -1075, -1068, -1061, -1055, -1050, -1042, -1032, - -1025, -1022, -960, -955, -950, -943, -936, -925, -918, -911, -907, -897, - -887, -883, - -1131, -1130, -1123, -1120, -1109, -1104, -1100, -1094, -1084, -1076, - -1069, -1065, -1004, -999, -994, -987, -980, -969, -963, -956, -950, - -941, -933, -924, - -1175, -1174, -1169, -1163, -1153, -1149, -1143, -1136, -1127, -1120, - -1114, -1108, -1049, -1044, -1036, -1031, -1023, -1013, -1007, -999, - -995, -987, -974, -969, - -1221, -1216, -1214, -1207, -1196, -1192, -1188, -1180, -1170, -1165, - -1158, -1152, -1093, -1088, -1081, -1076, -1066, -1057, -1051, -1043, - -1038, -1032, -1019, -1013, - -1265, -1262, -1257, -1251, -1241, -1235, -1232, -1225, -1212, -1209, - -1203, -1197, -1137, -1132, -1124, -1120, -1111, -1100, -1095, -1087, - -1082, -1071, -1063, -1058, - -1309, -1306, -1301, -1294, -1286, -1281, -1276, -1266, -1256, -1253, - -1247, -1241, -1181, -1176, -1169, -1163, -1156, -1144, -1139, -1131, - -1126, -1115, -1107, -1102, - -1352, -1350, -1344, -1337, -1329, -1327, -1321, -1309, -1300, -1296, - -1292, -1286, -1226, -1221, -1213, -1206, -1198, -1188, -1182, -1176, - -1172, -1159, -1151, -1146, - -1398, -1395, -1388, -1381, -1374, -1370, -1365, -1353, -1345, -1339, - -1336, -1330, -1270, -1265, -1257, -1250, -1242, -1232, -1225, -1220, - -1214, -1203, -1195, -1189, - -1442, -1437, -1433, -1425, -1418, -1413, -1408, -1398, -1389, -1383, - -1380, -1374, -1314, -1309, -1302, -1294, -1287, -1276, -1269, -1265, - -1258, -1247, -1240, -1232, - -1486, -1483, -1476, -1470, -1463, -1456, -1449, -1442, -1433, -1427, - -1424, -1419, -1358, -1354, -1346, -1338, -1331, -1321, -1313, -1309, - -1301, -1291, -1282, -1277, - -1529, -1526, -1522, -1514, -1506, -1499, -1493, -1486, -1478, -1472, - -1469, -1462, -1402, -1396, -1390, -1383, -1374, -1365, -1358, -1353, - -1346, -1334, -1325, -1320, - -1575, -1568, -1565, -1557, -1551, -1543, -1537, -1531, -1522, -1516, - -1513, -1506, -1447, -1439, -1434, -1427, -1415, -1409, -1401, -1396, - -1389, -1377, -1369, -1364, - -1619, -1613, -1611, -1599, -1594, -1587, -1580, -1574, -1567, -1561, - -1558, -1551, -1491, -1484, -1479, -1471, 0, 0, 0, 0, -1433, -1423, - -1414, -1406, - -1663, -1658, -1654, -1643, -1640, -1630, -1623, -1617, -1611, -1605, - -1601, -1594, -1535, -1528, -1523, -1515, -1503, -1497, -1489, -1483, - -1477, -1464, -1458, -1450, - -1707, -1702, -1697, -1686, -1683, -1673, -1667, -1661, -1656, -1650, - -1644, -1637, -1579, -1572, -1567, -1559, -1546, 0, -1533, 0, 0, 0, 0, 0, - -1751, -1746, -1741, -1729, -1724, -1717, -1712, -1706, -1700, -1693, - -1688, -1681, -1624, -1616, -1611, -1603, 0, -1583, 0, -1573, -1561, - -1549, -1545, -1537, - -1794, -1789, -1785, -1773, -1768, -1762, -1755, -1750, -1744, -1738, - -1732, -1724, 0, 0, -1654, -1648, -1635, -1627, -1622, -1616, -1607, - -1594, -1589, -1579, - -1838, -1832, -1829, -1816, -1813, -1806, -1800, -1794, -1787, -1783, - -1777, -1768, -1712, -1705, -1697, -1691, -1679, -1672, -1665, -1660, - -1649, -1639, -1632, -1624, - -1882, -1876, -1873, -1859, -1855, -1852, -1843, -1837, -1830, -1827, - -1821, -1812, -1757, -1749, -1741, -1734, 0, -1716, -1709, -1704, -1693, - -1682, -1673, -1666, - -1927, -1923, -1916, -1904, -1898, -1894, -1888, -1880, -1874, -1871, - -1866, -1857, -1801, -1793, -1785, -1779, -1766, -1759, -1753, -1747, - -1737, -1726, -1716, -1708, - -1970, -1965, -1960, -1946, -1943, -1939, -1933, -1925, -1919, -1916, - -1910, -1901, -1843, -1837, -1829, -1823, -1810, -1802, -1798, -1790, - -1780, -1769, -1760, 0, - -2013, -2009, -2002, -1992, -1986, -1982, -1978, -1969, -1963, -1960, - -1954, -1946, -1886, -1881, -1873, -1864, -1855, -1847, -1841, -1836, - -1822, -1812, -1805, 0, - -2058, -2051, -2046, -2036, -2031, -2025, -2022, -2014, -2008, -2005, - -1999, -1989, -1930, -1925, -1917, -1907, -1899, -1890, -1885, -1877, - -1868, -1858, -1845, -1840, - -2100, -2095, -2087, -2079, -2077, -2069, -2066, -2058, -2052, -2048, - -2043, -2032, -1975, -1970, -1962, -1951, -1942, -1935, -1929, -1921, - -1911, -1902, -1889, -1882, - -2142, -2135, -2131, -2123, -2120, -2114, -2111, -2103, -2097, -2092, - -2087, -2076, -2019, -2013, -2005, -1996, -1987, -1979, -1973, -1965, - -1954, -1945, -1935, -1924, - -2187, -2180, -2174, -2167, -2164, -2158, -2155, -2147, -2141, -2136, - -2132, -2120, -2063, -2057, -2049, -2037, -2030, -2022, -2017, -2008, - -1996, -1988, -1980, -1971, - -2231, -2224, -2219, -2211, -2208, -2203, -2198, -2191, -2185, -2180, - -2176, -2165, -2107, -2102, -2094, -2081, -2073, -2066, -2062, -2051, - -2039, -2030, -2022, -2012, - -2278, -2269, -2262, -2257, -2252, -2247, -2241, -2234, -2230, -2224, - -2220, -2209, -2151, -2146, -2137, -2127, -2116, -2111, -2105, -2096, - -2083, -2074, -2064, -2053, - -2319, -2314, -2307, -2300, -2296, -2292, -2286, -2277, -2273, -2268, - -2264, -2253, -2196, -2190, -2182, -2169, -2161, -2154, -2148, -2139, - -2125, -2119, -2107, -2100, - -2365, -2356, -2348, -2345, -2340, -2336, -2331, -2323, -2318, -2312, - -2308, -2298, -2240, -2233, -2226, -2211, -2205, -2197, -2191, -2182, - -2170, -2163, -2153, -2137, - -2408, -2400, -2394, -2388, -2386, -2379, -2375, -2367, -2362, -2357, - -2351, -2342, -2282, -2275, -2269, -2255, -2247, -2242, -2233, -2226, - -2213, -2204, -2196, -2184, - -2450, -2442, -2438, -2434, -2431, -2423, -2418, -2410, -2407, -2401, - -2395, -2386, -2323, -2319, -2314, -2300, -2291, -2285, -2278, -2268, - -2255, -2247, -2239, -2230, - -2493, -2489, -2482, -2477, -2472, -2468, -2463, -2454, -2451, -2445, - -2438, -2430, -2367, -2363, -2358, -2344, -2335, -2330, -2321, -2312, - -2297, -2287, -2284, -2271, - -2539, -2532, -2526, -2521, -2517, -2513, -2507, -2499, -2494, -2489, - -2480, -2475, -2412, -2407, -2401, -2388, -2379, -2373, -2365, -2354, - -2341, -2332, -2322, -2315, - -2583, -2577, -2569, -2565, -2561, -2557, -2551, -2543, -2537, -2534, - -2525, -2519, -2454, -2450, -2442, -2431, -2422, -2416, -2409, -2398, - -2385, -2375, -2367, -2355, - -2628, -2622, -2612, -2611, -2605, -2601, -2596, -2587, -2581, -2578, - -2569, -2562, -2498, -2491, -2483, -2474, -2466, -2461, -2450, -2442, - -2428, -2420, -2410, -2401, - -2670, -2668, -2658, -2655, -2653, -2645, -2639, -2631, -2626, -2622, - -2614, -2604, -2542, -2534, -2528, -2516, -2509, -2505, -2495, -2485, - -2472, -2461, -2455, -2443, - -2713, -2715, -2702, -2700, -2696, -2689, -2682, -2676, -2671, -2667, - -2658, -2649, -2586, -2578, -2572, -2562, -2554, -2548, -2540, -2526, - -2516, -2507, -2497, -2484, - -2758, -2759, -2746, -2744, -2738, -2733, -2726, -2720, -2716, -2710, - -2703, -2693, -2629, -2622, -2615, -2607, -2597, -2588, -2581, -2571, - -2560, -2546, -2537, -2532, - -2805, -2797, -2791, -2788, -2782, -2778, -2769, -2765, -2759, -2753, - -2746, -2737, -2672, -2664, -2657, -2646, -2638, -2635, -2625, -2610, - -2604, -2593, -2584, -2570, - -2848, -2840, -2836, -2833, -2826, -2824, -2814, -2809, -2803, -2797, - -2789, -2780, -2716, -2709, -2698, -2687, -2682, -2672, -2671, -2653, - -2646, -2634, -2627, -2614, - -2890, -2887, -2879, -2876, -2871, -2867, -2857, -2853, -2847, -2841, - -2832, -2826, -2761, -2753, -2741, -2725, -2727, -2720, -2710, -2696, - -2686, -2678, -2671, -2657, - -2937, -2930, -2924, -2919, -2914, -2911, -2900, -2897, -2891, -2885, - -2876, -2870, -2801, -2797, -2787, -2774, -2768, -2762, -2752, -2741, - -2730, -2722, -2713, -2701, - -2981, -2972, -2967, -2962, -2960, -2954, -2944, -2941, -2936, -2929, - -2921, -2915, -2849, -2840, -2827, -2818, -2812, -2803, -2796, -2781, - -2774, -2766, -2755, -2743, - -3023, -3017, -3013, -3005, -3002, -2999, -2989, -2986, -2980, -2974, - -2965, -2959, -2892, -2883, -2871, -2862, -2855, -2846, -2838, -2822, - -2817, -2810, -2798, -2786, - -3067, -3061, -3056, -3051, -3046, -3042, -3034, -3031, -3024, -3018, - -3009, -3003, -2935, -2926, -2914, -2906, -2898, -2888, -2882, -2866, - -2860, -2849, -2842, -2833, - -3111, -3106, -3099, -3095, -3092, -3088, -3076, -3074, -3069, -3061, - -3052, -3044, -2979, -2970, -2958, -2949, -2943, -2933, -2925, -2912, - -2900, -2894, -2885, -2878, - -3155, -3150, -3143, -3139, -3137, -3133, -3121, -3117, -3111, -3105, - -3100, -3092, -3023, -3014, -3002, -2993, -2986, -2979, -2969, -2955, - -2944, -2935, -2930, -2915, - -3202, -3191, -3189, -3184, -3180, -3173, -3163, -3161, -3160, -3151, - -3141, -3136, -3067, -3058, -3046, -3037, -3030, -3021, -3009, -2999, - -2988, -2978, -2972, -2958, - -3245, -3235, -3232, -3228, -3222, -3217, -3212, -3205, -3201, -3194, - -3184, -3180, -3112, -3101, -3088, -3080, -3073, -3064, -3053, -3041, - -3031, -3023, -3013, -3000, - -3287, -3278, -3273, -3276, -3269, -3258, -3255, -3249, -3245, -3239, - -3228, -3224, -3155, -3147, -3132, -3124, -3117, -3108, -3098, -3085, - -3073, -3063, -3056, -3042, - -3330, -3324, -3321, -3316, -3313, -3304, -3299, -3293, -3290, -3281, - -3272, -3268, -3198, -3189, -3177, -3167, -3161, -3152, -3142, -3127, - -3119, -3108, -3098, -3086, - -3373, -3369, -3362, -3361, -3357, -3347, -3342, -3338, -3333, -3325, - -3316, -3313, -3242, -3231, -3218, -3213, -3204, -3194, -3184, -3171, - -3162, -3150, -3144, -3127, - -3416, -3414, -3406, -3405, -3400, -3390, -3388, -3382, -3378, -3369, - -3360, -3357, -3285, -3274, -3262, -3254, -3248, -3238, -3228, -3213, - -3205, -3193, -3185, -3172, - -3460, -3457, -3453, -3448, -3442, -3438, -3431, -3426, -3420, -3414, - -3405, -3401, -3328, -3317, -3305, -3298, -3289, -3284, -3268, -3256, - -3247, -3237, -3227, -3214, - -3506, -3500, -3494, -3495, -3487, -3479, -3476, -3470, -3464, -3456, - -3449, -3445, -3372, -3361, -3349, -3342, -3333, -3325, -3315, -3296, - -3290, -3280, -3270, -3256, - -3546, -3545, -3540, -3537, -3532, -3524, -3520, -3514, -3508, -3501, - -3493, -3489, -3415, -3405, -3393, -3385, -3377, -3367, -3358, -3344, - -3333, -3323, -3311, -3300, - -3593, -3590, -3584, -3581, -3576, -3567, -3563, -3559, -3553, -3545, - -3537, -3531, -3459, -3449, -3436, -3429, -3420, -3411, -3398, -3385, - -3377, -3366, -3354, -3342, - -3641, -3632, -3629, -3625, -3622, -3612, -3606, -3603, -3597, -3588, - -3581, -3572, -3502, -3492, -3480, -3472, -3461, -3454, -3441, -3429, - -3419, -3411, -3396, -3385, - -3681, -3677, -3673, -3669, -3664, -3656, -3650, -3647, -3641, -3630, - -3625, -3616, -3546, -3536, -3522, -3516, -3506, -3499, -3486, -3471, - -3460, -3452, -3443, -3426, - -3726, -3720, -3717, -3714, -3707, -3700, -3694, -3690, -3684, -3672, - -3667, -3660, -3589, -3579, -3567, -3560, -3550, -3541, -3529, -3516, - -3503, -3495, -3484, -3472, - -3770, -3766, -3761, -3758, -3750, -3744, -3739, -3732, -3728, -3713, - -3708, -3704, -3633, -3622, -3611, -3603, -3593, -3583, -3571, -3558, - -3546, -3539, -3527, -3512, - -3812, -3809, -3805, -3802, -3794, -3789, -3783, -3773, -3771, -3756, - -3752, -3747, -3677, -3663, -3654, -3647, -3636, -3626, -3614, -3600, - -3589, -3581, -3566, -3556, - -3858, -3851, -3848, -3848, -3836, -3834, -3827, -3817, -3812, -3800, - -3796, -3789, -3720, -3705, -3698, -3690, -3679, -3669, -3658, -3644, - -3633, -3624, -3610, -3598, - -3899, -3896, -3893, -3892, -3880, -3878, -3871, -3861, -3856, -3844, - -3840, -3833, -3764, -3748, -3741, -3733, -3722, -3712, -3700, -3687, - -3676, -3667, -3651, -3642, - -3941, -3942, -3937, -3933, -3926, -3918, -3915, -3904, -3899, -3889, - -3885, -3878, -3807, -3792, -3785, -3776, -3766, -3754, -3742, -3730, - -3717, -3709, -3694, -3683, - -3986, -3986, -3982, -3974, -3968, -3958, -3957, -3949, -3943, -3933, - -3929, -3922, -3851, -3835, -3828, -3820, -3809, -3798, -3784, -3774, - -3760, -3753, -3738, -3724, - -4029, -4029, -4025, -4020, -4011, -4002, -3999, -3993, -3986, -3977, - -3973, -3966, -3895, -3879, -3871, -3861, -3853, -3842, -3827, -3814, - -3804, -3796, -3781, -3767, - -4073, -4069, -4067, -4064, -4054, -4047, -4043, -4037, -4030, -4021, - -4017, -4010, -3938, -3922, -3915, -3904, -3895, -3883, -3869, -3859, - -3846, -3838, -3818, -3810, - -4119, -4112, -4113, -4103, -4096, -4090, -4087, -4081, -4073, -4065, - -4061, -4054, -3982, -3966, -3958, -3947, -3938, -3927, -3912, -3899, - -3890, -3879, -3864, -3853, - -4160, -4157, -4154, -4145, -4144, -4134, -4131, -4125, -4115, -4109, - -4105, -4098, -4024, -4009, -4001, -3990, -3980, -3969, -3955, -3944, - -3932, -3924, -3905, -3893, - -4204, -4202, -4197, -4193, -4184, -4177, -4175, -4169, -4158, -4153, - -4149, -4142, -4066, -4052, -4044, -4032, -4025, -4013, -3996, -3987, - -3975, -3965, -3946, -3935, - -4249, -4245, -4242, -4236, -4230, -4221, -4219, -4213, -4203, -4197, - -4193, -4186, -4110, -4096, -4087, -4076, -4068, -4056, -4039, -4028, - -4017, -4007, -3990, -3978, - -4291, -4287, -4288, -4279, -4273, -4268, -4262, -4258, -4248, -4241, - -4237, -4230, -4152, -4139, -4130, -4119, -4110, -4099, -4082, -4071, - -4060, -4048, -4031, -4022, - -4338, -4332, -4330, -4322, -4318, -4311, -4305, -4301, -4290, -4285, - -4280, -4274, -4196, -4182, -4174, -4162, -4152, -4141, -4124, -4113, - -4103, -4089, -4075, -4062, - -4379, -4379, -4375, -4363, -4361, -4354, -4350, -4345, -4333, -4329, - -4322, -4318, -4238, -4225, -4217, -4206, -4195, -4184, -4168, -4154, - -4146, -4134, -4117, -4103, - -4423, -4422, -4420, -4406, -4405, -4399, -4393, -4390, -4377, -4374, - -4366, -4362, -4278, -4269, -4261, -4249, -4238, -4226, -4211, -4198, - -4187, -4176, -4157, -4147, - -4469, -4465, -4463, -4452, -4445, -4445, -4437, -4433, -4422, -4417, - -4410, -4406, -4323, -4312, -4304, -4292, -4280, -4269, -4252, -4239, - -4229, -4217, -4200, -4190, - -4514, -4508, -4507, -4499, -4491, -4488, -4482, -4474, -4466, -4462, - -4454, -4449, -4365, -4355, -4346, -4334, -4323, -4310, -4296, -4283, - -4274, -4260, -4242, -4231, - -4555, -4557, -4550, -4542, -4535, -4533, -4527, -4517, -4510, -4505, - -4498, -4493, -4407, -4398, -4388, -4377, -4367, -4354, -4339, -4326, - -4314, -4300, -4283, -4274, - -4601, -4598, -4594, -4586, -4580, -4576, -4570, -4561, -4554, -4550, - -4542, -4536, -4452, -4442, -4430, -4421, -4409, -4395, -4380, -4368, - -4357, -4343, -4326, -4316, - -4643, -4644, -4635, -4628, -4623, -4622, -4614, -4606, -4598, -4593, - -4586, -4578, -4495, -4485, -4473, -4464, -4452, -4437, -4423, -4412, - -4399, -4382, -4371, -4357, - -4690, -4687, -4679, -4676, -4667, -4663, -4659, -4650, -4642, -4637, - -4630, -4622, -4537, -4528, -4516, -4507, -4494, -4479, -4464, -4452, - -4443, -4426, -4410, -4398, - -4733, -4732, -4722, -4716, -4713, -4707, -4702, -4693, -4686, -4680, - -4674, -4665, -4580, -4571, -4559, -4549, -4537, -4521, -4507, -4493, - -4484, -4465, -4452, -4439, - -4780, -4772, -4768, -4760, -4756, -4751, -4746, -4737, -4730, -4722, - -4718, -4708, -4623, -4614, -4602, -4592, -4580, -4563, -4548, -4536, - -4526, -4509, -4494, -4478, - -4825, -4817, -4811, -4805, -4799, -4795, -4790, -4781, -4774, -4767, - -4762, -4751, -4666, -4657, -4645, -4635, -4622, -4608, -4591, -4579, - -4567, -4549, -4537, -4520, - -4865, -4865, -4852, -4847, -4845, -4839, -4834, -4823, -4818, -4811, - -4806, -4795, -4709, -4700, -4687, -4677, -4665, -4650, -4630, -4622, - -4609, -4592, -4579, -4564, - -4911, -4906, -4902, -4889, -4890, -4882, -4879, -4867, -4862, -4855, - -4850, -4839, -4752, -4743, -4730, -4719, -4706, -4693, -4676, -4664, - -4649, -4634, -4621, -4606, - -4956, -4948, -4946, -4937, -4933, -4927, -4923, -4910, -4906, -4898, - -4893, -4883, -4795, -4786, -4773, -4761, -4750, -4733, -4716, -4706, - -4691, -4675, -4662, -4646, - -4997, -4994, -4988, -4980, -4977, -4970, -4966, -4954, -4950, -4942, - -4937, -4926, -4839, -4829, -4816, -4803, -4792, -4777, -4758, -4748, - -4734, -4720, -4699, -4687, - -5041, -5037, -5032, -5023, -5021, -5016, -5009, -4998, -4994, -4986, - -4979, -4970, -4881, -4870, -4858, -4845, -4835, -4819, -4803, -4790, - -4776, -4761, -4743, -4727, - -5084, -5081, -5074, -5069, -5064, -5059, -5050, -5042, -5037, -5030, - -5022, -5012, -4924, -4911, -4901, -4888, -4876, -4861, -4844, -4832, - -4817, -4800, -4786, -4768, - -5130, -5123, -5116, -5112, -5108, -5103, -5093, -5087, -5081, -5074, - -5066, -5056, -4967, -4954, -4944, -4930, -4917, -4903, -4885, -4875, - -4858, -4840, -4829, -4808, - -5172, -5168, -5163, -5155, -5152, -5148, -5136, -5130, -5124, -5118, - -5110, -5100, -5010, -4996, -4986, -4973, -4959, -4946, -4927, -4915, - -4900, -4884, -4868, -4851, - -5219, -5209, -5205, -5200, -5196, -5192, -5179, -5174, -5167, -5161, - -5153, -5142, -5052, -5039, -5029, -5015, -5000, -4985, -4969, -4959, - -4939, -4927, -4909, -4891, - -5260, -5255, -5247, -5245, -5241, -5235, -5223, -5218, -5210, -5205, - -5197, -5185, -5095, -5082, -5071, -5058, -5043, -5027, -5010, -4999, - -4981, -4966, -4947, -4935, - -5301, -5297, -5294, -5288, -5283, -5279, -5266, -5262, -5254, -5249, - -5240, -5227, -5138, -5125, -5114, -5100, -5085, -5066, -5053, -5039, - -5024, -5004, -4990, -4974, - -5348, -5337, -5338, -5334, -5327, -5323, -5310, -5306, -5298, -5293, - -5285, -5270, -5181, -5167, -5156, -5142, -5126, -5109, -5096, -5082, - -5061, -5047, -5028, -5011, - -5392, -5386, -5380, -5378, -5373, -5365, -5354, -5350, -5342, -5336, - -5328, -5314, -5223, -5209, -5197, -5184, -5169, -5151, -5138, -5124, - -5108, -5089, -5072, -5058, - -5436, -5428, -5422, -5421, -5417, -5409, -5397, -5393, -5385, -5380, - -5372, -5357, -5266, -5252, -5240, -5226, -5212, -5192, -5180, -5164, - -5144, -5134, -5113, -5094, - -5480, -5472, -5467, -5463, -5461, -5453, -5442, -5436, -5429, -5424, - -5414, -5401, -5308, -5294, -5282, -5268, -5254, -5233, -5219, -5207, - -5188, -5170, -5151, -5132, - -5522, -5514, -5512, -5509, -5503, -5495, -5486, -5482, -5472, -5466, - -5456, -5445, -5351, -5337, -5323, -5310, -5295, -5276, -5261, -5246, - -5228, -5213, -5193, -5175, - -5565, -5560, -5557, -5550, -5547, -5537, -5530, -5525, -5518, -5507, - -5500, -5488, -5392, -5379, -5364, -5351, -5336, -5315, -5304, -5287, - -5270, -5251, -5229, -5212, - -5612, -5605, -5598, -5597, -5590, -5581, -5576, -5568, -5561, -5553, - -5542, -5532, -5433, -5421, -5406, -5394, -5379, -5357, -5345, -5328, - -5310, -5294, -5273, -5254, - -5654, -5647, -5645, -5638, -5635, -5629, -5617, -5612, -5605, -5596, - -5588, -5573, -5475, -5464, -5449, -5434, -5421, -5399, -5383, -5369, - -5353, -5334, -5312, -5297, - -5698, -5691, -5689, -5683, -5679, -5668, -5661, -5655, -5648, -5639, - -5630, -5619, -5518, -5506, -5491, -5475, -5461, -5442, -5425, -5411, - -5389, -5375, -5353, -5337, - -5741, -5735, -5733, -5728, -5724, -5709, -5705, -5697, -5692, -5683, - -5673, -5662, -5560, -5545, -5533, -5520, -5502, -5484, -5468, -5449, - -5434, -5416, -5392, -5376, - -5783, -5779, -5775, -5772, -5768, -5755, -5749, -5742, -5736, -5727, - -5714, -5705, -5604, -5591, -5575, -5558, -5544, -5522, -5510, -5489, - -5475, -5455, -5434, -5417, - -5827, -5823, -5821, -5817, -5809, -5800, -5793, -5785, -5780, -5771, - -5756, -5749, -5644, -5632, -5616, -5600, -5586, -5563, -5551, -5531, - -5514, -5499, -5474, -5456, - -5872, -5866, -5866, -5859, -5851, -5842, -5837, -5829, -5823, -5814, - -5799, -5792, -5686, -5673, -5658, -5642, -5627, -5602, -5590, -5572, - -5556, -5535, -5513, -5497, - -5915, -5910, -5908, -5904, -5892, -5886, -5881, -5873, -5867, -5857, - -5842, -5834, -5728, -5715, -5699, -5682, -5667, -5645, -5633, -5612, - -5596, -5576, -5554, -5535, - -5956, -5955, -5952, -5947, -5935, -5930, -5925, -5916, -5909, -5900, - -5884, -5882, -5770, -5757, -5741, -5724, -5708, -5687, -5672, -5651, - -5634, -5615, -5594, -5574, - -6002, -5997, -5991, -5991, -5979, -5974, -5967, -5958, -5953, -5946, - -5929, -5921, -5810, -5798, -5782, -5764, -5748, -5726, -5709, -5690, - -5675, -5656, -5632, -5613, - -6046, -6040, -6038, -6033, -6022, -6014, -6013, -6005, -5996, -5985, - -5972, -5966, -5854, -5838, -5823, -5806, -5788, -5767, -5751, -5731, - -5714, -5693, -5673, -5653, - -6086, -6085, -6079, -6072, -6068, -6061, -6055, -6047, -6039, -6028, - -6017, -6007, -5895, -5880, -5865, -5848, -5831, -5810, -5793, -5773, - -5753, -5734, -5712, -5692, - -6128, -6125, -6126, -6117, -6108, -6105, -6098, -6089, -6081, -6072, - -6059, -6049, -5937, -5921, -5907, -5888, -5871, -5850, -5830, -5813, - -5796, -5774, -5749, -5732, - 0, -6171, -6168, -6159, -6151, -6146, -6140, -6130, -6125, -6115, -6102, - -6091, -5979, -5962, -5947, -5931, -5911, -5891, -5873, -5853, -5833, - -5812, -5790, -5772, - 0, 0, 0, 0, -6194, -6190, -6184, -6174, -6167, -6158, -6145, -6134, -6020, - -6003, -5988, -5970, -5952, -5930, -5913, -5894, -5873, -5854, -5828, - -5809, - 0, 0, 0, 0, 0, -6231, -6227, -6217, -6208, -6197, -6189, -6178, -6061, - -6044, -6028, -6011, -5990, -5973, -5949, -5933, -5915, -5891, -5866, - -5848, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -6236, -6232, -6221, -6102, -6085, -6067, -6051, - -6030, -6012, -5992, -5967, -5951, -5928, -5905, -5885, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6262, -6143, -6126, -6108, -6092, -6071, - -6049, -6032, -6011, -5990, -5968, -5942, -5925, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6185, -6167, -6149, -6132, -6112, - -6091, -6069, -6050, -6030, -6005, -5984, -5962, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6226, -6208, -6190, -6173, -6149, - -6131, -6109, -6089, -6068, -6047, -6021, -6000, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6190, -6171, -6149, -6127, - -6110, -6080, -6060, -6036, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6211, -6188, -6165, - -6147, -6120, -6095, -6077, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6226, -6206, -6184, - -6157, -6134, -6113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6224, -6196, - -6170, -6150, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6258, -6232, - -6208, -6187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6272, - -6246, -6223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6281, - -6262 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/D1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/D1.dmp deleted file mode 100644 index 3568ff9800c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/D1.dmp +++ /dev/null @@ -1,31 +0,0 @@ -netcdf D1 { -dimensions: - Drifters = 5 ; - maxStrlen64 = 64 ; -variables: - char Drifters.instrument_id(Drifters, maxStrlen64) ; - char Drifters.location(Drifters, maxStrlen64) ; - double Drifters.latitude(Drifters) ; - double Drifters.longitude(Drifters) ; -data: - - Drifters.instrument_id = - "This is a data test string (pass 0).", - "This is a data test string (pass 2).", - "This is a data test string (pass 4).", - "This is a data test string (pass 6).", - "This is a data test string (pass 8)." ; - - Drifters.location = - "This is a data test string (pass 1).", - "This is a data test string (pass 3).", - "This is a data test string (pass 5).", - "This is a data test string (pass 7).", - "This is a data test string (pass 9)." ; - - Drifters.latitude = 1000, 999.800006666578, 999.200106660978, - 998.200539935204, 996.801706302619 ; - - Drifters.longitude = 999.950000416665, 999.550033748988, 998.750260394966, - 997.55100025328, 995.952733011994 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Drifters.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Drifters.dmp deleted file mode 100644 index c38354b6831..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Drifters.dmp +++ /dev/null @@ -1,144 +0,0 @@ -netcdf Drifters { -dimensions: - Drifters = 5 ; - maxStrlen64 = 64 ; -variables: - char Drifters.Drifter_ID(Drifters, maxStrlen64) ; - Drifters.Drifter_ID:Description = "String value used to uniquely identify each drifter instrument." ; - char Drifters.Date_Sampled(Drifters, maxStrlen64) ; - Drifters.Date_Sampled:Description = "A Date and time string" ; - Drifters.Date_Sampled:Timezone = "GMT" ; - double Drifters.Latitude(Drifters) ; - Drifters.Latitude:Description = "Latitude as recorded by ARGOS system" ; - Drifters.Latitude:units = "degrees_north" ; - double Drifters.Longitude(Drifters) ; - Drifters.Longitude:Description = "Longitude as recorded by ARGOS system" ; - Drifters.Longitude:units = "degrees_east" ; - double Drifters.SST(Drifters) ; - Drifters.SST:Description = "Sea Surface Temperature" ; - Drifters.SST:units = "degrees Celsius" ; - double Drifters.Ed_490(Drifters) ; - Drifters.Ed_490:Description = "Downwelling Irradiance Sensor at 490nm" ; - Drifters.Ed_490:Wavelength = 490.f ; - Drifters.Ed_490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_412(Drifters) ; - Drifters.Lu_412:Description = "Upwelling Radiance Sensor at 412nm" ; - Drifters.Lu_412:Wavelength = 412.f ; - Drifters.Lu_412:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_443(Drifters) ; - Drifters.Lu_443:Description = "Upwelling Radiance Sensor at 443nm" ; - Drifters.Lu_443:Wavelength = 443.f ; - Drifters.Lu_443:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_490(Drifters) ; - Drifters.Lu_490:Description = "Upwelling Radiance Sensorat at 490nm" ; - Drifters.Lu_490:Wavelength = 490.f ; - Drifters.Lu_490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_510(Drifters) ; - Drifters.Lu_510:Description = "Upwelling Radiance Sensor at 510nm" ; - Drifters.Lu_510:Wavelength = 510.f ; - Drifters.Lu_510:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_555(Drifters) ; - Drifters.Lu_555:Description = "Upwelling Radiance Sensor at 555nm" ; - Drifters.Lu_555:Wavelength = 555.f ; - Drifters.Lu_555:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_670(Drifters) ; - Drifters.Lu_670:Description = "Upwelling Radiance Sensor at 670nm" ; - Drifters.Lu_670:Wavelength = 670.f ; - Drifters.Lu_670:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.Lu_683(Drifters) ; - Drifters.Lu_683:Description = "Upwelling Radiance Sensor at 683nm" ; - Drifters.Lu_683:Wavelength = 683.f ; - Drifters.Lu_683:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.CHL(Drifters) ; - Drifters.CHL:Description = "Chlorophyl Concentration" ; - Drifters.CHL:units = "milligrams per cubic meter" ; - double Drifters.FLH(Drifters) ; - Drifters.FLH:Description = "Fluoresence Line Height" ; - Drifters.FLH:units = "microwatts per square cm per nanometer per steradian" ; - char Drifters.Region(Drifters, maxStrlen64) ; - Drifters.Region:Description = "Short description of study area (ex: Oregon, California, Southern Ocean, etc.)" ; - double Drifters.Decimal_Day(Drifters) ; - Drifters.Decimal_Day:Description = "The time of the mesurement in a decimal format, useful for plots, starts on January 1st 1993 or January 1st 2000." ; - char Drifters.Calibration_File(Drifters, maxStrlen64) ; - Drifters.Calibration_File:Description = "Path to the file on our file server of the calibration file for the drifter." ; - char Drifters.Drifter_Type(Drifters, maxStrlen64) ; - Drifters.Drifter_Type:Description = "Type of drifter." ; -data: - - Drifters.Drifter_ID = - "This is a data test string (pass 0).", - "This is a data test string (pass 5).", - "This is a data test string (pass 10).", - "This is a data test string (pass 15).", - "This is a data test string (pass 20)." ; - - Drifters.Date_Sampled = - "This is a data test string (pass 1).", - "This is a data test string (pass 6).", - "This is a data test string (pass 11).", - "This is a data test string (pass 16).", - "This is a data test string (pass 21)." ; - - Drifters.Latitude = 1000, 990.215996212637, 961.055438310771, - 913.088940312308, 847.255111013416 ; - - Drifters.Longitude = 999.950000416665, 988.771077936042, 958.243875512697, - 908.965749674885, 841.900975162269 ; - - Drifters.SST = 999.800006666578, 987.227283375627, 955.336489125606, - 904.751663219963, 836.462649915187 ; - - Drifters.Ed_490 = 999.550033748988, 985.584766909561, 952.333569885713, - 900.447102352677, 830.940679100163 ; - - Drifters.Lu_412 = 999.200106660978, 983.843692788121, 949.235418082441, - 896.052497525525, 825.335614909678 ; - - Drifters.Lu_443 = 998.750260394966, 982.00423511727, 946.042343528387, - 891.568288195329, 819.648017845479 ; - - Drifters.Lu_490 = 998.200539935204, 980.066577841242, 942.754665528346, - 886.994922779284, 813.878456662534 ; - - Drifters.Lu_510 = 997.55100025328, 978.030914724148, 939.372712847379, - 882.332858610121, 808.027508312152 ; - - Drifters.Lu_555 = 996.801706302619, 975.897449330605, 935.896823677935, - 877.582561890373, 802.095757884292 ; - - Drifters.Lu_670 = 995.952733011994, 973.666395005375, 932.327345606034, - 872.744507645751, 796.083798549056 ; - - Drifters.Lu_683 = 995.004165278026, 971.33797485203, 928.66463557651, - 867.81917967765, 789.992231497365 ; - - Drifters.CHL = 993.956097956697, 968.912421710645, 924.909059857313, - 862.807070514761, 783.821665880849 ; - - Drifters.FLH = 992.808635853866, 966.389978134513, 921.060994002885, - 857.708681363824, 777.572718750928 ; - - Drifters.Region = - "This is a data test string (pass 2).", - "This is a data test string (pass 7).", - "This is a data test string (pass 12).", - "This is a data test string (pass 17).", - "This is a data test string (pass 22)." ; - - Drifters.Decimal_Day = 991.561893714788, 963.770896365891, 917.120822816605, - 852.524522059506, 771.246014997106 ; - - Drifters.Calibration_File = - "This is a data test string (pass 3).", - "This is a data test string (pass 8).", - "This is a data test string (pass 13).", - "This is a data test string (pass 18).", - "This is a data test string (pass 23)." ; - - Drifters.Drifter_Type = - "This is a data test string (pass 4).", - "This is a data test string (pass 9).", - "This is a data test string (pass 14).", - "This is a data test string (pass 19).", - "This is a data test string (pass 24)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/EOSDB.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/EOSDB.dmp deleted file mode 100644 index a804d9b0d57..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/EOSDB.dmp +++ /dev/null @@ -1,1123 +0,0 @@ -netcdf EOSDB { -dimensions: - Abbott_Image_Data = 5 ; - Drifters = 5 ; - Instrument = 5 ; - Sat_Images = 5 ; - Sat_Images.Image_1 = 1000 ; - Sat_Images.Raw_Image_Data_1 = 1000 ; - maxStrlen64 = 64 ; -variables: - char Abbott_Image_Data.Image_Name(Abbott_Image_Data, maxStrlen64) ; - char Abbott_Image_Data.Date_Sampled(Abbott_Image_Data, maxStrlen64) ; - double Abbott_Image_Data.North_Latitude(Abbott_Image_Data) ; - double Abbott_Image_Data.South_Latitude(Abbott_Image_Data) ; - double Abbott_Image_Data.West_Longitude(Abbott_Image_Data) ; - double Abbott_Image_Data.East_Longitude(Abbott_Image_Data) ; - char Abbott_Image_Data.Version(Abbott_Image_Data, maxStrlen64) ; - int Abbott_Image_Data.Julian_Date(Abbott_Image_Data) ; - char Abbott_Image_Data.PI(Abbott_Image_Data, maxStrlen64) ; - char Abbott_Image_Data.Algorithm_Code(Abbott_Image_Data, maxStrlen64) ; - char Abbott_Image_Data.Project(Abbott_Image_Data, maxStrlen64) ; - char Abbott_Image_Data.Comments(Abbott_Image_Data, maxStrlen64) ; - char Sat_Images.Image_Name(Sat_Images, maxStrlen64) ; - char Sat_Images.Date_Sampled(Sat_Images, maxStrlen64) ; - double Sat_Images.North_Latitude(Sat_Images) ; - double Sat_Images.South_Latitude(Sat_Images) ; - double Sat_Images.West_Longitude(Sat_Images) ; - double Sat_Images.East_Longintude(Sat_Images) ; - char Sat_Images.Version(Sat_Images, maxStrlen64) ; - char Sat_Images.Satellite(Sat_Images, maxStrlen64) ; - char Sat_Images.Instrument(Sat_Images, maxStrlen64) ; - char Sat_Images.Channel(Sat_Images, maxStrlen64) ; - char Sat_Images.Resolution(Sat_Images, maxStrlen64) ; - int Sat_Images.Image_Size(Sat_Images) ; - char Sat_Images.Image_Type(Sat_Images, maxStrlen64) ; - int Sat_Images.Image_Bits_Per_Pixel(Sat_Images) ; - int Sat_Images.Image_Width(Sat_Images) ; - int Sat_Images.Image_Height(Sat_Images) ; - byte Sat_Images.Image(Sat_Images, Sat_Images.Image_1) ; - int Sat_Images.Raw_Image_Size(Sat_Images) ; - byte Sat_Images.Raw_Image_Data(Sat_Images, Sat_Images.Raw_Image_Data_1) ; - int Sat_Images.Year(Sat_Images) ; - char Sat_Images.Month(Sat_Images, maxStrlen64) ; - int Sat_Images.Day(Sat_Images) ; - int Sat_Images.Hour(Sat_Images) ; - char Drifters.Instrument_ID(Drifters, maxStrlen64) ; - double Drifters.Battery(Drifters) ; - double Drifters.Checksum(Drifters) ; - double Drifters.Date_Age(Drifters) ; - double Drifters.Ed490(Drifters) ; - double Drifters.Ed490_stdev(Drifters) ; - double Drifters.Latitude(Drifters) ; - double Drifters.Longitude(Drifters) ; - double Drifters.Lu412(Drifters) ; - double Drifters.Lu412_stdev(Drifters) ; - double Drifters.Lu443(Drifters) ; - double Drifters.Lu443_stdev(Drifters) ; - double Drifters.Lu490(Drifters) ; - double Drifters.Lu490_stdev(Drifters) ; - double Drifters.Lu510(Drifters) ; - double Drifters.Lu510_stdev(Drifters) ; - double Drifters.Lu555(Drifters) ; - double Drifters.Lu555_stdev(Drifters) ; - double Drifters.Lu670(Drifters) ; - double Drifters.Lu670_stdev(Drifters) ; - double Drifters.Lu683(Drifters) ; - double Drifters.Lu683_stdev(Drifters) ; - double Drifters.Max_Depth(Drifters) ; - double Drifters.Night_Len(Drifters) ; - double Drifters.Number_Samples(Drifters) ; - double Drifters.Num_Aves(Drifters) ; - double Drifters.Press_Volts(Drifters) ; - double Drifters.Sea_Surface_Temperature(Drifters) ; - double Drifters.Sub_Wait(Drifters) ; - double Drifters.Surf_Volts(Drifters) ; - double Drifters.Surface_Average(Drifters) ; - double Drifters.Surface_Percent(Drifters) ; - double Drifters.Julian_Greenwich(Drifters) ; - double Drifters.Sun_Angle(Drifters) ; - int Drifters.Optical_Flag(Drifters) ; - int Drifters.Sampling_Flag(Drifters) ; - int Drifters.Tracking_Flag(Drifters) ; - int Drifters.Hand_Checked_Flag(Drifters) ; - double Drifters.Julian_Local_Time(Drifters) ; - char Drifters.Date_Greenwich(Drifters, maxStrlen64) ; - char Drifters.Date_Local_Time(Drifters, maxStrlen64) ; - char Drifters.DateStamp(Drifters, maxStrlen64) ; - char Drifters.algo_code(Drifters, maxStrlen64) ; - int Drifters.GPS_hour(Drifters) ; - double Drifters.GPS_lat(Drifters) ; - double Drifters.GPS_lon(Drifters) ; - double Drifters.rel1_lat(Drifters) ; - double Drifters.rel1_lon(Drifters) ; - double Drifters.rel2_lat(Drifters) ; - double Drifters.rel2_lon(Drifters) ; - int Drifters.time_to_1st_fix(Drifters) ; - int Drifters.message_ID(Drifters) ; - int Drifters.max_GPS_volt(Drifters) ; - char Instrument.Instrument_ID(Instrument, maxStrlen64) ; - char Instrument.Instrument_Type(Instrument, maxStrlen64) ; - char Instrument.Sensor_Platform_ID(Instrument, maxStrlen64) ; - char Instrument.Comment(Instrument, maxStrlen64) ; - -// global attributes: - :history = "FERRET V4.11 (debug/no GUI) 19-Nov-95FERRET V4.20 (debug/no GUI) 12-Mar-96" ; - :title = "COADS Surface Marine Observations (1854-1993)" ; -data: - - Abbott_Image_Data.Image_Name = - "This is a data test string (pass 0).", - "This is a data test string (pass 7).", - "This is a data test string (pass 14).", - "This is a data test string (pass 21).", - "This is a data test string (pass 28)." ; - - Abbott_Image_Data.Date_Sampled = - "This is a data test string (pass 1).", - "This is a data test string (pass 8).", - "This is a data test string (pass 15).", - "This is a data test string (pass 22).", - "This is a data test string (pass 29)." ; - - Abbott_Image_Data.North_Latitude = 1000, 999.200106660978, 996.801706302619, - 992.808635853866, 987.227283375627 ; - - Abbott_Image_Data.South_Latitude = 999.950000416665, 998.750260394966, - 995.952733011994, 991.561893714788, 985.584766909561 ; - - Abbott_Image_Data.West_Longitude = 999.800006666578, 998.200539935204, - 995.004165278026, 990.215996212637, 983.843692788121 ; - - Abbott_Image_Data.East_Longitude = 999.550033748988, 997.55100025328, - 993.956097956697, 988.771077936042, 982.00423511727 ; - - Abbott_Image_Data.Version = - "This is a data test string (pass 2).", - "This is a data test string (pass 9).", - "This is a data test string (pass 16).", - "This is a data test string (pass 23).", - "This is a data test string (pass 30)." ; - - Abbott_Image_Data.Julian_Date = 1, 2, 3, 5, 8 ; - - Abbott_Image_Data.PI = - "This is a data test string (pass 3).", - "This is a data test string (pass 10).", - "This is a data test string (pass 17).", - "This is a data test string (pass 24).", - "This is a data test string (pass 31)." ; - - Abbott_Image_Data.Algorithm_Code = - "This is a data test string (pass 4).", - "This is a data test string (pass 11).", - "This is a data test string (pass 18).", - "This is a data test string (pass 25).", - "This is a data test string (pass 32)." ; - - Abbott_Image_Data.Project = - "This is a data test string (pass 5).", - "This is a data test string (pass 12).", - "This is a data test string (pass 19).", - "This is a data test string (pass 26).", - "This is a data test string (pass 33)." ; - - Abbott_Image_Data.Comments = - "This is a data test string (pass 6).", - "This is a data test string (pass 13).", - "This is a data test string (pass 20).", - "This is a data test string (pass 27).", - "This is a data test string (pass 34)." ; - - Sat_Images.Image_Name = - "This is a data test string (pass 35).", - "This is a data test string (pass 44).", - "This is a data test string (pass 53).", - "This is a data test string (pass 62).", - "This is a data test string (pass 71)." ; - - Sat_Images.Date_Sampled = - "This is a data test string (pass 36).", - "This is a data test string (pass 45).", - "This is a data test string (pass 54).", - "This is a data test string (pass 63).", - "This is a data test string (pass 72)." ; - - Sat_Images.North_Latitude = 980.066577841242, 971.33797485203, - 961.055438310771, 949.235418082441, 935.896823677935 ; - - Sat_Images.South_Latitude = 978.030914724148, 968.912421710645, - 958.243875512697, 946.042343528387, 932.327345606034 ; - - Sat_Images.West_Longitude = 975.897449330605, 966.389978134513, - 955.336489125606, 942.754665528346, 928.66463557651 ; - - Sat_Images.East_Longintude = 973.666395005375, 963.770896365891, - 952.333569885713, 939.372712847379, 924.909059857313 ; - - Sat_Images.Version = - "This is a data test string (pass 37).", - "This is a data test string (pass 46).", - "This is a data test string (pass 55).", - "This is a data test string (pass 64).", - "This is a data test string (pass 73)." ; - - Sat_Images.Satellite = - "This is a data test string (pass 38).", - "This is a data test string (pass 47).", - "This is a data test string (pass 56).", - "This is a data test string (pass 65).", - "This is a data test string (pass 74)." ; - - Sat_Images.Instrument = - "This is a data test string (pass 39).", - "This is a data test string (pass 48).", - "This is a data test string (pass 57).", - "This is a data test string (pass 66).", - "This is a data test string (pass 75)." ; - - Sat_Images.Channel = - "This is a data test string (pass 40).", - "This is a data test string (pass 49).", - "This is a data test string (pass 58).", - "This is a data test string (pass 67).", - "This is a data test string (pass 76)." ; - - Sat_Images.Resolution = - "This is a data test string (pass 41).", - "This is a data test string (pass 50).", - "This is a data test string (pass 59).", - "This is a data test string (pass 68).", - "This is a data test string (pass 77)." ; - - Sat_Images.Image_Size = 13, 610, 28657, 1346269, 63245986 ; - - Sat_Images.Image_Type = - "This is a data test string (pass 42).", - "This is a data test string (pass 51).", - "This is a data test string (pass 60).", - "This is a data test string (pass 69).", - "This is a data test string (pass 78)." ; - - Sat_Images.Image_Bits_Per_Pixel = 21, 987, 46368, 2178309, 102334155 ; - - Sat_Images.Image_Width = 34, 1597, 75025, 3524578, 165580141 ; - - Sat_Images.Image_Height = 55, 2584, 121393, 5702887, 267914296 ; - - Sat_Images.Image = - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25 ; - - Sat_Images.Raw_Image_Size = 89, 4181, 196418, 9227465, 433494437 ; - - Sat_Images.Raw_Image_Data = - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, - -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, - -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, - -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, - -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, - -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, - -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, - -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, - -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, - -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, - -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -128, -127, -126, -125, - -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, - -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, - -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, - -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, - -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, - -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, - -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, - -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, - -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -128, -127, -126, -125, -124, -123, -122, -121, - -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, - -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, - -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, - -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, - -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, - -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, - -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25 ; - - Sat_Images.Year = 144, 6765, 317811, 14930352, 701408733 ; - - Sat_Images.Month = - "This is a data test string (pass 43).", - "This is a data test string (pass 52).", - "This is a data test string (pass 61).", - "This is a data test string (pass 70).", - "This is a data test string (pass 79)." ; - - Sat_Images.Day = 233, 10946, 514229, 24157817, 1134903170 ; - - Sat_Images.Hour = 377, 17711, 832040, 39088169, 1836311903 ; - - Drifters.Instrument_ID = - "This is a data test string (pass 80).", - "This is a data test string (pass 85).", - "This is a data test string (pass 90).", - "This is a data test string (pass 95).", - "This is a data test string (pass 100)." ; - - Drifters.Battery = 921.060994002885, 696.706709347165, 362.357754476673, - -29.1995223012899, -416.146836547144 ; - - Drifters.Checksum = 917.120822816605, 689.498432951747, 353.01940121933, - -39.1936317729888, -425.218852098153 ; - - Drifters.Date_Age = 913.088940312308, 682.221207287613, 343.645746316046, - -49.1838219141717, -434.248346118301 ; - - Drifters.Ed490 = 908.965749674885, 674.875760071267, 334.237727124502, - -59.1690937141495, -443.23441566571 ; - - Drifters.Ed490_stdev = 904.751663219963, 667.462825841308, 324.796284438775, - -69.1484486540633, -452.176162140912 ; - - Drifters.Latitude = 900.447102352677, 659.983145884982, 315.322362395268, - -79.1208888067352, -461.072691376713 ; - - Drifters.Longitude = 896.052497525525, 652.437468164051, 305.816908378288, - -89.0854169364603, -469.923113727602 ; - - Drifters.Lu412 = 891.568288195329, 644.826547240001, 296.280872925318, - -99.0410365987293, -478.72654415872 ; - - Drifters.Lu412_stdev = 886.994922779284, 637.15114419858, 286.715209631955, - -108.986752239872, -487.482102334359 ; - - Drifters.Lu443 = 882.332858610121, 629.412026573696, 277.120875056557, - -118.921569296614, -496.188912705998 ; - - Drifters.Lu443_stdev = 877.582561890373, 621.609968270664, 267.498828624587, - -128.844494295526, -504.846104599857 ; - - Drifters.Lu490 = 872.744507645751, 613.745749488811, 257.850032532669, - -138.754534952379, -513.452812303959 ; - - Drifters.Lu490_stdev = 867.81917967765, 605.820156643462, 248.175451652372, - -148.650700271365, -522.008175154706 ; - - Drifters.Lu510 = 862.807070514761, 597.833982287298, 238.476053433722, - -158.532000644199, -530.511337622944 ; - - Drifters.Lu510_stdev = 857.708681363824, 589.788025031098, 228.752807808459, - -168.397447949078, -538.96144939951 ; - - Drifters.Lu555 = 852.524522059506, 581.683089463883, 219.006687093041, - -178.246055649493, -547.35766548027 ; - - Drifters.Lu555_stdev = 847.255111013416, 573.519986072456, 209.238665891418, - -188.076838892881, -555.699146250611 ; - - Drifters.Lu670 = 841.900975162269, 565.299531160354, 199.449720997572, - -197.88881460911, -563.985057569408 ; - - Drifters.Lu670_stdev = 836.462649915187, 557.022546766217, 189.640831297833, - -207.681001608785, -572.214570852435 ; - - Drifters.Lu683 = 830.940679100163, 548.689860581587, 179.812977672998, - -217.452420681366, -580.38686315522 ; - - Drifters.Lu683_stdev = 825.335614909678, 540.302305868139, 169.96714290024, - -227.202094693088, -588.501117255343 ; - - Drifters.Max_Depth = 819.648017845479, 531.860721374355, 160.10431155483, - -236.929048684676, -596.556521734157 ; - - Drifters.Night_Len = 813.878456662534, 523.365951251649, 150.225469911685, - -246.632309968835, -604.552271057927 ; - - Drifters.Number_Samples = 808.027508312152, 514.818844969955, - 140.331605846736, -256.310908227524, -612.487565658382 ; - - Drifters.Num_Aves = 802.095757884292, 506.220257232778, 130.423708738144, - -265.963875608982, -620.361612012677 ; - - Drifters.Press_Volts = 796.083798549056, 497.571047891726, 120.502769367366, - -275.590246824514, -628.173622722736 ; - - Drifters.Sea_Surface_Temperature = 789.992231497365, 488.872081860527, - 110.569779820068, -285.189059245022, -635.922816593999 ; - - Drifters.Sub_Wait = 783.821665880849, 480.124229028533, 100.625733386931, - -294.759352997262, -643.608418713537 ; - - Drifters.Surf_Volts = 777.572718750928, 471.328364173739, 90.6716244643086, - -304.300171059835, -651.229660527542 ; - - Drifters.Surface_Average = 771.246014997106, 462.4853668753, - 80.7084484547995, -313.810559358884, -658.785779918184 ; - - Drifters.Surface_Percent = 764.842187284488, 453.596121425577, - 70.7372016677018, -323.289566863505, -666.27602127982 ; - - Drifters.Julian_Greenwich = 758.361875990508, 444.661516741706, - 60.7588812193848, -332.736245680847, -673.699635594557 ; - - Drifters.Sun_Angle = 751.805729140895, 435.682446276712, 50.7744849335781, - -342.1496511509, -681.055880507149 ; - - Drifters.Optical_Flag = -1323752223, 2144908973, -944741150, 696897233, - -660827267 ; - - Drifters.Sampling_Flag = 512559680, -1781832971, 1640636603, 1582341984, - -285007387 ; - - Drifters.Tracking_Flag = -811192543, 363076002, 695895453, -2015728079, - -945834654 ; - - Drifters.Hand_Checked_Flag = -298632863, -1418756969, -1958435240, - -433386095, -1230842041 ; - - Drifters.Julian_Local_Time = 745.17440234487, 426.659807930157, - 40.7850112415899, -351.528841940961, -688.344020399234 ; - - Drifters.Date_Greenwich = - "This is a data test string (pass 81).", - "This is a data test string (pass 86).", - "This is a data test string (pass 91).", - "This is a data test string (pass 96).", - "This is a data test string (pass 101)." ; - - Drifters.Date_Local_Time = - "This is a data test string (pass 82).", - "This is a data test string (pass 87).", - "This is a data test string (pass 92).", - "This is a data test string (pass 97).", - "This is a data test string (pass 102)." ; - - Drifters.DateStamp = - "This is a data test string (pass 83).", - "This is a data test string (pass 88).", - "This is a data test string (pass 93).", - "This is a data test string (pass 98).", - "This is a data test string (pass 103)." ; - - Drifters.algo_code = - "This is a data test string (pass 84).", - "This is a data test string (pass 89).", - "This is a data test string (pass 94).", - "This is a data test string (pass 99).", - "This is a data test string (pass 104)." ; - - Drifters.GPS_hour = -1109825406, -1055680967, -1262539787, 1845853122, - 2118290601 ; - - Drifters.GPS_lat = 738.468558729588, 417.594503958357, 30.791459082465, - -360.872880139769, -695.563326462898 ; - - Drifters.GPS_lon = 731.688868873821, 408.487440884157, 20.7948278030913, - -370.180831351288, -702.71307677355 ; - - Drifters.rel1_lat = 724.836010740905, 399.339529406272, 10.7961170582663, - -379.451764788156, -709.792556362116 ; - - Drifters.rel1_lon = 717.910669610943, 390.151684308229, 0.796326710732153, - -388.684753364753, -716.801057286538 ; - - Drifters.rel2_lat = 710.913538012277, 380.924824366881, -9.20354326880945, - -397.878873789917, -723.737878702564 ; - - Drifters.rel2_lon = 703.845315652236, 371.659872260532, -19.2024929016938, - -407.033206659267, -730.602326933832 ; - - Drifters.time_to_1st_fix = -1408458269, 1820529360, 1073992269, 1412467027, - 887448560 ; - - Drifters.message_ID = 1776683621, 764848393, -188547518, -1036647147, - -1289228135 ; - - Drifters.max_GPS_volt = 368225352, -1709589543, 885444751, 375819880, - -401779575 ; - - Instrument.Instrument_ID = - "This is a data test string (pass 105).", - "This is a data test string (pass 109).", - "This is a data test string (pass 113).", - "This is a data test string (pass 117).", - "This is a data test string (pass 121)." ; - - Instrument.Instrument_Type = - "This is a data test string (pass 106).", - "This is a data test string (pass 110).", - "This is a data test string (pass 114).", - "This is a data test string (pass 118).", - "This is a data test string (pass 122)." ; - - Instrument.Sensor_Platform_ID = - "This is a data test string (pass 107).", - "This is a data test string (pass 111).", - "This is a data test string (pass 115).", - "This is a data test string (pass 119).", - "This is a data test string (pass 123)." ; - - Instrument.Comment = - "This is a data test string (pass 108).", - "This is a data test string (pass 112).", - "This is a data test string (pass 116).", - "This is a data test string (pass 120).", - "This is a data test string (pass 124)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.am b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.am deleted file mode 100644 index 9c920c6127b..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.9 2009/11/20 03:06:32 dmh Exp $ - -EXTRA_DIST=\ -123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \ -1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \ -bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \ -coads_climatology2.nc.dmp D1.dmp data.nc.dmp \ -Drifters.dmp EOSDB.dmp fnoc1.nc.dmp \ -in1.nc.dmp in_2.nc.dmp ingrid.dmp \ -in.nc.dmp in_no_three_double_dmn.nc.dmp in_v.nc.dmp \ -nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \ -OverideExample.dmp pbug0001b.dmp saco1.nc.dmp \ -SimpleDrdsExample.dmp synth1.dmp synth2.dmp \ -synth3.dmp synth4.dmp synth5.dmp \ -synth6.dmp synth7.dmp synth8.dmp synth9.dmp synth10.dmp \ -test.01.dmp test.02.dmp test.03.dmp \ -test.04.dmp test.05.dmp test.06a.dmp \ -test.07a.dmp test.07.dmp test.21.dmp \ -test.22.dmp test.23.dmp test.31.dmp \ -test.50.dmp test.53.dmp test.55.dmp \ -test.56.dmp test.57.dmp test.66.dmp \ -test.67.dmp test.68.dmp test.69.dmp \ -test.an1.dmp test.dfp1.dmp test.dfr1.dmp \ -test.dfr2.dmp test.dfr3.dmp test.gr1.dmp \ -test.gr2.dmp test.gr3.dmp test.gr4.dmp \ -test.gr5.dmp test.nc.dmp test.PointFile.dmp \ -test.sds1.dmp test.sds2.dmp test.sds3.dmp \ -test.sds4.dmp test.sds5.dmp test.sds6.dmp \ -test.sds7.dmp test.vs1.dmp test.vs2.dmp \ -test.vs3.dmp test.vs4.dmp test.vs5.dmp \ -text.nc.dmp whoi.dmp \ -testData.nc.dmp \ -CMakeLists.txt - - diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.in deleted file mode 100644 index dc882cd4105..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/Makefile.in +++ /dev/null @@ -1,533 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.9 2009/11/20 03:06:32 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdap_test/expected3 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \ -1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \ -bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \ -coads_climatology2.nc.dmp D1.dmp data.nc.dmp \ -Drifters.dmp EOSDB.dmp fnoc1.nc.dmp \ -in1.nc.dmp in_2.nc.dmp ingrid.dmp \ -in.nc.dmp in_no_three_double_dmn.nc.dmp in_v.nc.dmp \ -nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \ -OverideExample.dmp pbug0001b.dmp saco1.nc.dmp \ -SimpleDrdsExample.dmp synth1.dmp synth2.dmp \ -synth3.dmp synth4.dmp synth5.dmp \ -synth6.dmp synth7.dmp synth8.dmp synth9.dmp synth10.dmp \ -test.01.dmp test.02.dmp test.03.dmp \ -test.04.dmp test.05.dmp test.06a.dmp \ -test.07a.dmp test.07.dmp test.21.dmp \ -test.22.dmp test.23.dmp test.31.dmp \ -test.50.dmp test.53.dmp test.55.dmp \ -test.56.dmp test.57.dmp test.66.dmp \ -test.67.dmp test.68.dmp test.69.dmp \ -test.an1.dmp test.dfp1.dmp test.dfr1.dmp \ -test.dfr2.dmp test.dfr3.dmp test.gr1.dmp \ -test.gr2.dmp test.gr3.dmp test.gr4.dmp \ -test.gr5.dmp test.nc.dmp test.PointFile.dmp \ -test.sds1.dmp test.sds2.dmp test.sds3.dmp \ -test.sds4.dmp test.sds5.dmp test.sds6.dmp \ -test.sds7.dmp test.vs1.dmp test.vs2.dmp \ -test.vs3.dmp test.vs4.dmp test.vs5.dmp \ -text.nc.dmp whoi.dmp \ -testData.nc.dmp \ -CMakeLists.txt - -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 ncdap_test/expected3/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/expected3/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/expected3/SimpleDrdsExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/SimpleDrdsExample.dmp deleted file mode 100644 index 861aecb06fe..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/SimpleDrdsExample.dmp +++ /dev/null @@ -1,319 +0,0 @@ -netcdf SimpleDrdsExample { -dimensions: - Drifters = 5 ; - maxStrlen64 = 64 ; -variables: - double Drifters.battery(Drifters) ; - Drifters.battery:Description = "Battery Voltage (VBAT)" ; - Drifters.battery:units = "volts" ; - double Drifters.checksum(Drifters) ; - Drifters.checksum:Description = "Low 8 bits of the sum of the specified bytes in ARGOS transmission. (Checksum)" ; - Drifters.checksum:units = "unknown" ; - double Drifters.data_age(Drifters) ; - Drifters.data_age:Description = "Optical Sensor Data Age: Elapsed time between sample time and time of delivery to ARGOS system. (DA)" ; - Drifters.data_age:units = "minutes" ; - double Drifters.ed490(Drifters) ; - Drifters.ed490:Description = "Downwelling Irradiance Sensor at 490nm" ; - Drifters.ed490:Wavelength = 490.f ; - Drifters.ed490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.ed490_stdev(Drifters) ; - Drifters.ed490_stdev:Description = "Standard deviation of Downwelling Irradiance Sensor at 490nm" ; - Drifters.ed490_stdev:Wavelength = 490.f ; - Drifters.ed490_stdev:units = "counts" ; - char Drifters.instrument_id(Drifters, maxStrlen64) ; - Drifters.instrument_id:Description = "String value used to uniquely identify each drifter instrument." ; - double Drifters.flag_argos(Drifters) ; - double Drifters.flag_gps(Drifters) ; - double Drifters.flag_optical(Drifters) ; - double Drifters.flag_sampling(Drifters) ; - double Drifters.flag_tracking(Drifters) ; - double Drifters.gpshour(Drifters) ; - Drifters.gpshour:Description = "GPS Acquisition Time: Hour of day of GPS fix. (GPSHour)" ; - Drifters.gpshour:units = "hour" ; - double Drifters.gpslat(Drifters) ; - Drifters.gpslat:Description = "GPS Latitiude (Lat)" ; - Drifters.gpslat:units = "degrees_north" ; - double Drifters.gpslon(Drifters) ; - Drifters.gpslon:Description = "GPS Longitude (Lon)" ; - Drifters.gpslon:units = "degrees_east" ; - double Drifters.latitude(Drifters) ; - Drifters.latitude:Description = "Latitude as recorded by ARGOS system" ; - Drifters.latitude:units = "degrees_north" ; - char Drifters.location(Drifters, maxStrlen64) ; - Drifters.location:Description = "String describing general location (southern ocean,oregon coast, etc.) of drifter deployment." ; - double Drifters.longitude(Drifters) ; - Drifters.longitude:Description = "Longitude as recorded by ARGOS system" ; - Drifters.longitude:units = "degrees_east" ; - double Drifters.lu412(Drifters) ; - Drifters.lu412:Description = "Upwelling Radiance Sensor at 412nm" ; - Drifters.lu412:Wavelength = 412.f ; - Drifters.lu412:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu412_stdev(Drifters) ; - Drifters.lu412_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 412nm" ; - Drifters.lu412_stdev:Wavelength = 412.f ; - Drifters.lu412_stdev:units = "counts" ; - double Drifters.lu443(Drifters) ; - Drifters.lu443:Description = "Upwelling Radiance Sensor at 443nm" ; - Drifters.lu443:Wavelength = 443.f ; - Drifters.lu443:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu443_stdev(Drifters) ; - Drifters.lu443_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 443nm" ; - Drifters.lu443_stdev:Wavelength = 443.f ; - Drifters.lu443_stdev:units = "counts" ; - double Drifters.lu490(Drifters) ; - Drifters.lu490:Description = "Upwelling Radiance Sensorat at 490nm" ; - Drifters.lu490:Wavelength = 490.f ; - Drifters.lu490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu490_stdev(Drifters) ; - Drifters.lu490_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 490nm" ; - Drifters.lu490_stdev:Wavelength = 490.f ; - Drifters.lu490_stdev:units = "counts" ; - double Drifters.lu510(Drifters) ; - Drifters.lu510:Description = "Upwelling Radiance Sensor at 510nm" ; - Drifters.lu510:Wavelength = 510.f ; - Drifters.lu510:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu510_stdev(Drifters) ; - Drifters.lu510_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 510nm" ; - Drifters.lu510_stdev:Wavelength = 510.f ; - Drifters.lu510_stdev:units = "counts" ; - double Drifters.lu555(Drifters) ; - Drifters.lu555:Description = "Upwelling Radiance Sensor at 555nm" ; - Drifters.lu555:Wavelength = 555.f ; - Drifters.lu555:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu555_stdev(Drifters) ; - Drifters.lu555_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 555nm" ; - Drifters.lu555_stdev:Wavelength = 555.f ; - Drifters.lu555_stdev:units = "counts" ; - double Drifters.lu670(Drifters) ; - Drifters.lu670:Description = "Upwelling Radiance Sensor at 670nm" ; - Drifters.lu670:Wavelength = 670.f ; - Drifters.lu670:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu670_stdev(Drifters) ; - Drifters.lu670_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 670nm" ; - Drifters.lu670_stdev:Wavelength = 670.f ; - Drifters.lu670_stdev:units = "counts" ; - double Drifters.lu683(Drifters) ; - Drifters.lu683:Description = "Upwelling Radiance Sensor at 683nm" ; - Drifters.lu683:Wavelength = 683.f ; - Drifters.lu683:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu683_stdev(Drifters) ; - Drifters.lu683_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 683nm" ; - Drifters.lu683_stdev:Wavelength = 683.f ; - Drifters.lu683_stdev:units = "counts" ; - double Drifters.max_depth(Drifters) ; - Drifters.max_depth:Description = "Maximum Depth Voltage reading from the previous 10.5 minute period. (MDV)" ; - Drifters.max_depth:units = "volts" ; - double Drifters.night_len(Drifters) ; - Drifters.night_len:Description = "Length of the previous night (LNL)" ; - Drifters.night_len:units = "minutes" ; - double Drifters.nsamp(Drifters) ; - Drifters.nsamp:Description = "Message ID: Always set to 3 for GPS data Message" ; - Drifters.nsamp:units = "unknown" ; - double Drifters.numaves(Drifters) ; - Drifters.numaves:Description = "Number of samples in OCM data (NAve)" ; - Drifters.numaves:units = "unknown" ; - double Drifters.press_volts(Drifters) ; - Drifters.press_volts:Description = "Pressure sensor voltage at surface as determined by the surface check function. (SV)" ; - Drifters.press_volts:units = "volts" ; - double Drifters.rellat1hr(Drifters) ; - Drifters.rellat1hr:Description = "Relative Latitude: Change in latitude in the last hour as determined by the GPS subsystem (Rlat1)" ; - Drifters.rellat1hr:units = "degrees_north" ; - double Drifters.rellat2hr(Drifters) ; - Drifters.rellat2hr:Description = "Relative Latitude: Change in latitude in the last 2 hours as determined by the GPS subsystem (Rlat2)" ; - Drifters.rellat2hr:units = "degrees_north" ; - double Drifters.rellon1hr(Drifters) ; - Drifters.rellon1hr:Description = "Relative Longitude: Change in longitude in the last hour as determined by the GPS subsystem (Rlon1)" ; - Drifters.rellon1hr:units = "degrees_east" ; - double Drifters.rellon2hr(Drifters) ; - Drifters.rellon2hr:Description = "Relative Longitude: Change in longitude in the last 2 hours as determined by the GPS subsystem (Rlon2)" ; - Drifters.rellon2hr:units = "degrees_east" ; - double Drifters.sst(Drifters) ; - Drifters.sst:Description = "Sea Surface Temperature (SST)" ; - Drifters.sst:units = "Degrees C" ; - double Drifters.sub_wait(Drifters) ; - Drifters.sub_wait:Description = "Average time that bouy software waited for bouy to come to surface before measuring irradiance. (ASW)" ; - Drifters.sub_wait:units = "minutes" ; - double Drifters.surf_volts(Drifters) ; - Drifters.surf_volts:Description = "Averaged amplified pressure sensor voltage as measured during the surface check function. (AV)" ; - Drifters.surf_volts:units = "volts" ; - double Drifters.surface_average(Drifters) ; - Drifters.surface_average:Description = "Average duration of time that the bouy remained on the surface during the surface check function. (AST)" ; - Drifters.surface_average:units = "minutes" ; - double Drifters.surface_percent(Drifters) ; - Drifters.surface_percent:Description = "Percentage of time that the bouy was on the surface during the surface check function. (PTOS)" ; - Drifters.surface_percent:units = "percentage" ; - double Drifters.time(Drifters) ; - Drifters.time:Description = "Time data sample was received by ARGOS system" ; - Drifters.time:units = "Decimal days since Jan 1, 1993 (01/01/1993)" ; - double Drifters.ttff(Drifters) ; - Drifters.ttff:Description = "Time between GPS power on and first fix: Time To First Fix (TTFF)" ; - Drifters.ttff:units = "Decimal days since Jan 1, 1993 (01/01/1993)" ; - double Drifters.maxgps(Drifters) ; - Drifters.maxgps:Description = "Strongest GPS Signal Level (dB0)" ; - Drifters.maxgps:units = "dB" ; - double Drifters.rellat3hr(Drifters) ; - Drifters.rellat3hr:Description = "Relative Latitude: Change in latitude in the last 3 hours as determined by the GPS subsystem (Rlat3)" ; - Drifters.rellat3hr:units = "degrees_north" ; - double Drifters.rellon3hr(Drifters) ; - Drifters.rellon3hr:Description = "Relative Longitude: Change in longitude in the last 3 hours as determined by the GPS subsystem (Rlon3)" ; - Drifters.rellon3hr:units = "degrees_east" ; -data: - - Drifters.battery = 1000, 886.994922779284, 573.519986072456, - 130.423708738144, -342.1496511509 ; - - Drifters.checksum = 999.950000416665, 882.332858610121, 565.299531160354, - 120.502769367366, -351.528841940961 ; - - Drifters.data_age = 999.800006666578, 877.582561890373, 557.022546766217, - 110.569779820068, -360.872880139769 ; - - Drifters.ed490 = 999.550033748988, 872.744507645751, 548.689860581587, - 100.625733386931, -370.180831351288 ; - - Drifters.ed490_stdev = 999.200106660978, 867.81917967765, 540.302305868139, - 90.6716244643086, -379.451764788156 ; - - Drifters.instrument_id = - "This is a data test string (pass 0).", - "This is a data test string (pass 2).", - "This is a data test string (pass 4).", - "This is a data test string (pass 6).", - "This is a data test string (pass 8)." ; - - Drifters.flag_argos = 998.750260394966, 862.807070514761, 531.860721374355, - 80.7084484547995, -388.684753364753 ; - - Drifters.flag_gps = 998.200539935204, 857.708681363824, 523.365951251649, - 70.7372016677018, -397.878873789917 ; - - Drifters.flag_optical = 997.55100025328, 852.524522059506, 514.818844969955, - 60.7588812193848, -407.033206659267 ; - - Drifters.flag_sampling = 996.801706302619, 847.255111013416, - 506.220257232778, 50.7744849335781, -416.146836547144 ; - - Drifters.flag_tracking = 995.952733011994, 841.900975162269, - 497.571047891726, 40.7850112415899, -425.218852098153 ; - - Drifters.gpshour = 995.004165278026, 836.462649915187, 488.872081860527, - 30.791459082465, -434.248346118301 ; - - Drifters.gpslat = 993.956097956697, 830.940679100163, 480.124229028533, - 20.7948278030913, -443.23441566571 ; - - Drifters.gpslon = 992.808635853866, 825.335614909678, 471.328364173739, - 10.7961170582663, -452.176162140912 ; - - Drifters.latitude = 991.561893714788, 819.648017845479, 462.4853668753, - 0.796326710732153, -461.072691376713 ; - - Drifters.location = - "This is a data test string (pass 1).", - "This is a data test string (pass 3).", - "This is a data test string (pass 5).", - "This is a data test string (pass 7).", - "This is a data test string (pass 9)." ; - - Drifters.longitude = 990.215996212637, 813.878456662534, 453.596121425577, - -9.20354326880945, -469.923113727602 ; - - Drifters.lu412 = 988.771077936042, 808.027508312152, 444.661516741706, - -19.2024929016938, -478.72654415872 ; - - Drifters.lu412_stdev = 987.227283375627, 802.095757884292, 435.682446276712, - -29.1995223012899, -487.482102334359 ; - - Drifters.lu443 = 985.584766909561, 796.083798549056, 426.659807930157, - -39.1936317729888, -496.188912705998 ; - - Drifters.lu443_stdev = 983.843692788121, 789.992231497365, 417.594503958357, - -49.1838219141717, -504.846104599857 ; - - Drifters.lu490 = 982.00423511727, 783.821665880849, 408.487440884157, - -59.1690937141495, -513.452812303959 ; - - Drifters.lu490_stdev = 980.066577841242, 777.572718750928, 399.339529406272, - -69.1484486540633, -522.008175154706 ; - - Drifters.lu510 = 978.030914724148, 771.246014997106, 390.151684308229, - -79.1208888067352, -530.511337622944 ; - - Drifters.lu510_stdev = 975.897449330605, 764.842187284488, 380.924824366881, - -89.0854169364603, -538.96144939951 ; - - Drifters.lu555 = 973.666395005375, 758.361875990508, 371.659872260532, - -99.0410365987293, -547.35766548027 ; - - Drifters.lu555_stdev = 971.33797485203, 751.805729140895, 362.357754476673, - -108.986752239872, -555.699146250611 ; - - Drifters.lu670 = 968.912421710645, 745.17440234487, 353.01940121933, - -118.921569296614, -563.985057569408 ; - - Drifters.lu670_stdev = 966.389978134513, 738.468558729588, 343.645746316046, - -128.844494295526, -572.214570852435 ; - - Drifters.lu683 = 963.770896365891, 731.688868873821, 334.237727124502, - -138.754534952379, -580.38686315522 ; - - Drifters.lu683_stdev = 961.055438310771, 724.836010740905, 324.796284438775, - -148.650700271365, -588.501117255343 ; - - Drifters.max_depth = 958.243875512697, 717.910669610943, 315.322362395268, - -158.532000644199, -596.556521734157 ; - - Drifters.night_len = 955.336489125606, 710.913538012277, 305.816908378288, - -168.397447949078, -604.552271057927 ; - - Drifters.nsamp = 952.333569885713, 703.845315652236, 296.280872925318, - -178.246055649493, -612.487565658382 ; - - Drifters.numaves = 949.235418082441, 696.706709347165, 286.715209631955, - -188.076838892881, -620.361612012677 ; - - Drifters.press_volts = 946.042343528387, 689.498432951747, 277.120875056557, - -197.88881460911, -628.173622722736 ; - - Drifters.rellat1hr = 942.754665528346, 682.221207287613, 267.498828624587, - -207.681001608785, -635.922816593999 ; - - Drifters.rellat2hr = 939.372712847379, 674.875760071267, 257.850032532669, - -217.452420681366, -643.608418713537 ; - - Drifters.rellon1hr = 935.896823677935, 667.462825841308, 248.175451652372, - -227.202094693088, -651.229660527542 ; - - Drifters.rellon2hr = 932.327345606034, 659.983145884982, 238.476053433722, - -236.929048684676, -658.785779918184 ; - - Drifters.sst = 928.66463557651, 652.437468164051, 228.752807808459, - -246.632309968835, -666.27602127982 ; - - Drifters.sub_wait = 924.909059857313, 644.826547240001, 219.006687093041, - -256.310908227524, -673.699635594557 ; - - Drifters.surf_volts = 921.060994002885, 637.15114419858, 209.238665891418, - -265.963875608982, -681.055880507149 ; - - Drifters.surface_average = 917.120822816605, 629.412026573696, - 199.449720997572, -275.590246824514, -688.344020399234 ; - - Drifters.surface_percent = 913.088940312308, 621.609968270664, - 189.640831297833, -285.189059245022, -695.563326462898 ; - - Drifters.time = 908.965749674885, 613.745749488811, 179.812977672998, - -294.759352997262, -702.71307677355 ; - - Drifters.ttff = 904.751663219963, 605.820156643462, 169.96714290024, - -304.300171059835, -709.792556362116 ; - - Drifters.maxgps = 900.447102352677, 597.833982287298, 160.10431155483, - -313.810559358884, -716.801057286538 ; - - Drifters.rellat3hr = 896.052497525525, 589.788025031098, 150.225469911685, - -323.289566863505, -723.737878702564 ; - - Drifters.rellon3hr = 891.568288195329, 581.683089463883, 140.331605846736, - -332.736245680847, -730.602326933832 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/b31.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/b31.dmp deleted file mode 100644 index 67d94f278d1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/b31.dmp +++ /dev/null @@ -1,34 +0,0 @@ -netcdf b31 { -dimensions: - b31 = 5 ; - maxStrlen64 = 64 ; -variables: - int b32 ; - b32:billy = "Bob is my real name" ; - b32:Robert = "Really wants to be called Billy" ; - double b31.id(b31) ; - char b31.class(b31, maxStrlen64) ; - b31.class:long_name = "class is dismissed" ; - char b31.text(b31, maxStrlen64) ; - b31.text:long_name = "textually yours" ; -data: - - b32 = 1 ; - - b31.id = 1000, 999.950000416665, 999.800006666578, 999.550033748988, - 999.200106660978 ; - - b31.class = - "This is a data test string (pass 0).", - "This is a data test string (pass 2).", - "This is a data test string (pass 4).", - "This is a data test string (pass 6).", - "This is a data test string (pass 8)." ; - - b31.text = - "This is a data test string (pass 1).", - "This is a data test string (pass 3).", - "This is a data test string (pass 5).", - "This is a data test string (pass 7).", - "This is a data test string (pass 9)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/bears.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/bears.nc.dmp deleted file mode 100644 index a1679341cde..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/bears.nc.dmp +++ /dev/null @@ -1,54 +0,0 @@ -netcdf bears { -dimensions: - i = 2 ; - j = 3 ; - l = 3 ; - maxStrlen64 = 64 ; -variables: - short l(l) ; - char bears(i, j, maxStrlen64) ; - bears:act = "text string\n", - "\t123" ; - bears:acs = -40s ; - bears:acl = 17000 ; - bears:acf = -2.f, 1.f, 0.f ; - bears:acd = -1., 0.75 ; - bears:string_length = 3 ; - short order(i, j) ; - int shot(i, j) ; - float aloan(i, j) ; - double cross(i, j) ; - -// global attributes: - :history = "This is an example of a multi-line global\n", - "attribute. It could be used for representing the\n", - "processing history of the data, for example." ; - :DODS_EXTRA.Unlimited_Dimension = "k" ; -data: - - l = 10, 9, 8 ; - - bears = - "ind", - "ist", - "ing", - "uis", - "hab", - "le" ; - - order = - 1, 2, 3, - 4, 5, 6 ; - - shot = - 2, 3, 4, - 5, 6, 7 ; - - aloan = - 3, 4, 5, - 6, 7, 1e+12 ; - - cross = - 4, 5, 0.000244140625, - 7, 8, 10000000000 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/ber-2002-10-01.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/ber-2002-10-01.nc.dmp deleted file mode 100644 index da164462edf..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/ber-2002-10-01.nc.dmp +++ /dev/null @@ -1,125 +0,0 @@ -netcdf ber-2002-10-01 { -dimensions: - latitude = 10 ; - longitude = 10 ; - nv = 2 ; - time = 2 ; -variables: - float TSurfAir(time, latitude, longitude) ; - TSurfAir:standard_name = "TSurfAir" ; - TSurfAir:long_name = "Surface Air Temperature" ; - TSurfAir:_FillValue = -1.f ; - TSurfAir:units = "K" ; - double Delta_Time(time, latitude, longitude) ; - Delta_Time:long_name = "offset to time" ; - Delta_Time:Description = "Cell observation time, in offsets to values defined in the time variable" ; - Delta_Time:units = "seconds" ; - double time_bnds(time, nv) ; - time_bnds:long_name = "time_bnds" ; - time_bnds:units = "seconds since 1993-1-1 0:0:0" ; - -// global attributes: - :Conventions = "CF-1.0" ; - :Institution = "CSISS,GMU" ; -data: - - TSurfAir = - 274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.9831, 273.9831, - 273.9831, 273.9831, 273.9831, - 274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.5546, 273.5546, - 273.9831, 273.9831, 274.2321, - 274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.5546, 273.5546, - 273.5546, 274.2321, 274.2321, - 274.2136, 274.2136, 274.2136, 274.2136, 272.9281, 272.9281, 273.5546, - 273.5546, 273.7883, 274.2321, - 271.0015, 271.0015, 274.2136, 271.3818, 272.9281, 272.9281, 272.9281, - 273.7883, 273.7883, 273.7883, - 271.0015, 271.0015, 271.3818, 271.3818, 271.3818, 272.9281, 272.9281, - 275.1449, 273.7883, 273.7883, - 271.0015, 271.0015, 272.6438, 271.3818, 271.3818, 272.9281, 275.1449, - 275.1449, 275.1449, 275.1449, - 271.0015, 272.6438, 272.6438, 272.6438, 272.6438, 275.1449, 275.1449, - 275.1449, 275.1449, 275.1449, - 272.905, 272.905, 272.6438, 272.6438, 272.6438, 275.1449, 275.1449, - 275.1449, 275.1449, 275.1449, - 272.905, 272.905, 272.905, 272.905, 272.6438, 272.6438, 275.1449, 275.1449, - 275.1449, 275.1449, - 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, - 263.4927, _, _, - 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, - 263.4927, _, _, - 268.0008, 268.0008, 268.0008, 263.4927, 263.4927, 263.4927, 263.4927, - 263.4927, _, _, - 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, - 263.4927, _, _, - 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, _, _, _, - 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, _, _, _, - 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 275.4808, - 275.4808, 275.4808, 275.4808, - 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 275.4808, - 275.4808, 275.4808, 275.4808, - _, _, _, _, _, 275.4808, 275.4808, 275.4808, 275.4808, 275.4808, - _, _, _, _, _, 275.4808, 275.4808, 275.4808, 275.4808, 275.4808 ; - - Delta_Time = - 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, - 29614.4520000219, 29606.4520000219, 29606.4520000219, 29606.4520000219, - 29606.4520000219, 29606.4520000219, - 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, - 29614.4520000219, 29614.4520000219, 29614.4520000219, 29606.4520000219, - 29606.4520000219, 29614.3847849965, - 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, - 29614.4520000219, 29614.4520000219, 29614.4520000219, 29614.4520000219, - 29614.3847849965, 29614.3847849965, - 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, - 29622.4520310163, 29622.4520310163, 29614.4520000219, 29614.4520000219, - 29622.3847849965, 29614.3847849965, - 29630.5192610025, 29630.5192610025, 29622.5192610025, 29630.452015996, - 29622.4520310163, 29622.4520310163, 29622.4520310163, 29622.3847849965, - 29622.3847849965, 29622.3847849965, - 29630.5192610025, 29630.5192610025, 29630.452015996, 29630.452015996, - 29630.452015996, 29622.4520310163, 29622.4520310163, 29630.3848010302, - 29622.3847849965, 29622.3847849965, - 29630.5192610025, 29630.5192610025, 29638.4520000219, 29630.452015996, - 29630.452015996, 29622.4520310163, 29630.3848010302, 29630.3848010302, - 29630.3848010302, 29630.3848010302, - 29630.5192610025, 29638.4520000219, 29638.4520000219, 29638.4520000219, - 29638.4520000219, 29630.3848010302, 29630.3848010302, 29630.3848010302, - 29630.3848010302, 29630.3848010302, - 29646.4520000219, 29646.4520000219, 29638.4520000219, 29638.4520000219, - 29638.4520000219, 29630.3848010302, 29630.3848010302, 29630.3848010302, - 29630.3848010302, 29630.3848010302, - 29646.4520000219, 29646.4520000219, 29646.4520000219, 29646.4520000219, - 29638.4520000219, 29638.4520000219, 29630.3848010302, 29630.3848010302, - 29630.3848010302, 29630.3848010302, - 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, - 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, - 0, 0, - 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, - 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, - 0, 0, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20918.3848010302, - 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, - 0, 0, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20918.3848010302, - 0, 0, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 0, 0, 0, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 0, 0, 0, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, - 20902.3175550103, 20902.3175550103, 20878.3847700357, 20878.3847700357, - 20878.3847700357, 20878.3847700357, - 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, - 20902.3175550103, 20902.3175550103, 20878.3847700357, 20878.3847700357, - 20878.3847700357, 20878.3847700357, - 0, 0, 0, 0, 0, 20878.3847700357, 20878.3847700357, 20878.3847700357, - 20878.3847700357, 20878.3847700357, - 0, 0, 0, 0, 0, 20878.3847700357, 20878.3847700357, 20878.3847700357, - 20878.3847700357, 20878.3847700357 ; - - time_bnds = - 307559753.548, 307619046.452, - 307611681.615199, 307653518.384801 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in.nc.dmp deleted file mode 100644 index 4cc005853ba..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in.nc.dmp +++ /dev/null @@ -1,1155 +0,0 @@ -netcdf in { -dimensions: - time = UNLIMITED ; // (10 currently) - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - maxStrlen64 = 64 ; - rlev = 3 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - float lev(lev) ; - lev:purpose = "Monotonically increasing coordinate pressure" ; - lev:units = "hybrid_sigma_pressure" ; - lev:positive = "down" ; - lev:A_var = "hyam" ; - lev:B_var = "hybm" ; - lev:P0_var = "P0" ; - lev:PS_var = "PS" ; - lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - lsmlev:purpose = "Homebrew level coordinate for LSM" ; - lsmlev:long_name = "Soil depth" ; - lsmlev:units = "meter" ; - float wvl(wvl) ; - wvl:long_name = "Wavelength" ; - wvl:units = "meter" ; - float P0 ; - P0:long_name = "reference pressure" ; - P0:units = "pascal" ; - char fl_dmn(fl_dmn, maxStrlen64) ; - fl_dmn:long_name = "Character coordinate" ; - fl_dmn:units = "[chr]" ; - int nbdate ; - nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float mss_val_scl ; - mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - short pck ; - pck:long_name = "Packed scalar variable" ; - pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - double upk ; - upk:long_name = "Unpacked scalar variable" ; - upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - int val_one_int ; - val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - float val_half ; - val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - float scalar_var ; - scalar_var:long_name = "scalar variable" ; - scalar_var:units = "Fraction" ; - float float_var ; - float_var:long_name = "float" ; - double double_var ; - double_var:long_name = "double" ; - double double_var2 ; - double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - int_var:long_name = "int" ; - short short_var ; - short_var:long_name = "short" ; - char char_var(maxStrlen64) ; - char_var:long_name = "char" ; - char char_var_space(maxStrlen64) ; - char_var_space:long_name = "Character variable with whitespace on ends" ; - char char_var_nul(maxStrlen64) ; - char_var_nul:long_name = "Character variable containing one NUL" ; - char fl_nm(char_dmn_lng, maxStrlen64) ; - fl_nm:long_name = "Variable contains a file name" ; - char fl_nm_arr(fl_dmn, char_dmn_lng, maxStrlen64) ; - fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - fl_nm_arr:units = "[sng]" ; - char non_nul_trm_char_one_dmn(char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - non_nul_trm_char_one_dmn:units = "[chr]" ; - char non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - non_nul_trm_char_two_dmn:units = "[chr]" ; - byte byte_var ; - byte_var:long_name = "byte" ; - float zero ; - zero:long_name = "zero" ; - float one ; - one:long_name = "one" ; - float two ; - two:long_name = "two" ; - double e_dbl ; - e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - three:long_name = "three" ; - float four ; - four:long_name = "four" ; - float negative_one ; - negative_one:long_name = "negative one" ; - float g ; - g:long_name = "g" ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0b ; - att_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0b ; - bnd_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - double time_udunits(time_udunits) ; - time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - float lat_var(lat) ; - float lat_wgt(lat) ; - float hyam(lev) ; - hyam:long_name = "hybrid A coefficient at layer midpoints" ; - float hybm(lev) ; - hybm:long_name = "hybrid B coefficient at layer midpoints" ; - float PS(time, lat, lon) ; - PS:long_name = "surface pressure" ; - PS:units = "pascal" ; - int date(time) ; - date:long_name = "current date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float lon_wgt(lon) ; - lon_wgt:long_name = "Gaussian weights" ; - lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average." ; - float msk_prt_mss_prt(lon) ; - msk_prt_mss_prt:long_name = "partial mask, partial missing value example" ; - msk_prt_mss_prt:missing_value = 1.e+36f ; - float mss_val(lon) ; - mss_val:long_name = "partial missing value example" ; - mss_val:missing_value = 1.e+36f ; - float mss_val_fst(lon) ; - mss_val_fst:long_name = "offset partial missing value example" ; - mss_val_fst:missing_value = -999.f ; - float fll_val(lon) ; - fll_val:long_name = "_FillValue example" ; - fll_val:_FillValue = -999.f ; - float no_mss_val(lon) ; - no_mss_val:long_name = "no missing value" ; - float val_one_mss(lat) ; - val_one_mss:long_name = "one regular value, one missing value" ; - val_one_mss:missing_value = 1.e+36f ; - short pck_arr(lon) ; - pck_arr:long_name = "Packed array" ; - pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double" ; - pck_arr:scale_factor = 1. ; - pck_arr:add_offset = 0. ; - double upk_arr(lon) ; - upk_arr:long_name = "Unpacked array" ; - upk_arr:note = "Unpacked value is -32767.d, 0.d, 1.d, 32767.d, packed is same in short. Packing algorithm should yield an NC_SHORT array = [] with packing attributes scale_factor=1.0d, add_offset=0.0d" ; - int val_one_one_int(lat) ; - val_one_one_int:long_name = "1, 1" ; - val_one_one_int:missing_value = -99 ; - short val_max_max_sht(lat) ; - val_max_max_sht:long_name = "17000, 17000" ; - val_max_max_sht:missing_value = -99s ; - int val_one_mss_int(lat) ; - val_one_mss_int:long_name = "1, mss_val" ; - val_one_mss_int:missing_value = -99 ; - float val_half_half(lat) ; - val_half_half:long_name = "0.5,0.5" ; - val_half_half:missing_value = 1.e+36f ; - float wgt_one(lat) ; - wgt_one:long_name = "all values are one" ; - float mss_val_all(lon) ; - mss_val_all:long_name = "all missing values example" ; - mss_val_all:missing_value = 1.e+36f ; - char char_var_multinul(lev, maxStrlen64) ; - char_var_multinul:long_name = "Character variable containing multiple NULs" ; - float lev_var(lev) ; - lev_var:long_name = "lev_var" ; - float lev_wgt(lev) ; - lev_wgt:long_name = "lev_wgt" ; - float z(lev) ; - z:long_name = "Height" ; - z:units = "meter" ; - z:purpose = "Height stored with a monotonically increasing coordinate" ; - float rz(rlev) ; - rz:long_name = "Height" ; - rz:units = "meter" ; - rz:purpose = "Height stored with a monotonically decreasing coordinate" ; - float three_dmn_var(lat, lev, lon) ; - three_dmn_var:long_name = "three dimensional variable with CCM coordinate convention C=[lat,lev,lon], Fortran=(lon,lev,lat)" ; - three_dmn_var:units = "Fraction" ; - float three_dmn_var_crd(lev, lat, lon) ; - three_dmn_var_crd:long_name = "three dimensional variable with COORDS coordinate convention C=[lev,lat,lon], Fortran=(lon,lat,lev)" ; - three_dmn_var_crd:units = "Fraction" ; - float prs_sfc(time, lat, lon) ; - prs_sfc:long_name = "Surface pressure" ; - prs_sfc:units = "pascal" ; - float two_dmn_var(lat, lev) ; - two_dmn_var:long_name = "two dimensional variable" ; - two_dmn_var:units = "Fraction" ; - float mask(lat, lon) ; - mask:long_name = "mask variable like ORO" ; - mask:units = "Fraction" ; - float ORO(lat, lon) ; - ORO:long_name = "Orography" ; - ORO:units = "Fraction" ; - float weight(lat) ; - weight:long_name = "Gaussian weight" ; - weight:units = "Fraction" ; - float gw(lat) ; - gw:long_name = "gw variable like gw" ; - gw:units = "Fraction" ; - float gw_T42(lat_T42) ; - gw_T42:long_name = "gw variable like gw_T42" ; - gw_T42:units = "Fraction" ; - float rec_var_flt(time) ; - rec_var_flt:long_name = "record variable, float" ; - double rec_var_dbl(time) ; - rec_var_dbl:long_name = "record variable, double" ; - int one_dmn_rec_var(time) ; - one_dmn_rec_var:long_name = "one dimensional record variable" ; - one_dmn_rec_var:units = "second" ; - float tpt(time) ; - tpt:long_name = "Temperature" ; - tpt:units = "kelvin" ; - tpt:hieght = "Leave mispelled for NCO User\'s guide example" ; - double rec_var_dbl_mss_val_dbl_upk(time) ; - rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values" ; - rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its missing_value should not be too far out of range, i.e., it should be representable by a short. However, the missing_value should itself be the same type as the unpacked variable, NC_DOUBLE in this case." ; - rec_var_dbl_mss_val_dbl_upk:missing_value = -999. ; - short rec_var_dbl_mss_val_dbl_pck(time) ; - rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, with double missing values, packed" ; - rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk" ; - rec_var_dbl_mss_val_dbl_pck:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck:add_offset = 5. ; - float rec_var_flt_mss_val_flt(time) ; - rec_var_flt_mss_val_flt:long_name = "record variable, float, with float missing values" ; - rec_var_flt_mss_val_flt:missing_value = 1.e+36f ; - short rec_var_flt_pck(time) ; - rec_var_flt_pck:long_name = "record variable, float, packed" ; - rec_var_flt_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_flt_pck:scale_factor = 0.1f ; - rec_var_flt_pck:add_offset = 100.f ; - short rec_var_dbl_pck(time) ; - rec_var_dbl_pck:long_name = "record variable, double, packed" ; - rec_var_dbl_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_dbl_pck:scale_factor = 0.1 ; - rec_var_dbl_pck:add_offset = 100. ; - float rec_var_flt_mss_val_dbl(time) ; - rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values" ; - rec_var_flt_mss_val_dbl:missing_value = 1.e+36 ; - float rec_var_flt_mss_val_int(time) ; - rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values" ; - rec_var_flt_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_int(time) ; - rec_var_int_mss_val_int:long_name = "record variable, integer, with integer missing values" ; - rec_var_int_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_flt(time) ; - rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values" ; - rec_var_int_mss_val_flt:missing_value = -999.f ; - int rec_var_int_mss_val_dbl(time) ; - rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values" ; - rec_var_int_mss_val_dbl:missing_value = -999. ; - int rec_var_dbl_mss_val_dbl_pck_lng(time) ; - rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values" ; - rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) is still a considerable cost savings" ; - rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5. ; - char one_dmn_rec_var_sng(time, maxStrlen64) ; - one_dmn_rec_var_sng:long_name = "one dimensional record variable of string" ; - float time_lon(time, lon) ; - time_lon:long_name = "Record variable of longitude coordinate" ; - char two_dmn_rec_var_sng(time, lev, maxStrlen64) ; - two_dmn_rec_var_sng:long_name = "two dimensional record variable of string" ; - float two_dmn_rec_var(time, lev) ; - two_dmn_rec_var:long_name = "two dimensional record variable" ; - two_dmn_rec_var:units = "watt meter-2" ; - float three_dmn_rec_var(time, lat, lon) ; - three_dmn_rec_var:long_name = "three dimensional record variable" ; - three_dmn_rec_var:units = "watt meter-2" ; - double three_dmn_var_dbl(time, lat, lon) ; - three_dmn_var_dbl:long_name = "three dimensional record variable of type double" ; - three_dmn_var_dbl:units = "watt meter-2" ; - three_dmn_var_dbl:missing_value = -99. ; - int three_dmn_var_int(time, lat, lon) ; - three_dmn_var_int:long_name = "three dimensional record variable of type int" ; - three_dmn_var_int:units = "watt meter-2" ; - three_dmn_var_int:missing_value = -99 ; - short three_dmn_var_sht(time, lat, lon) ; - three_dmn_var_sht:long_name = "three dimensional record variable" ; - three_dmn_var_sht:units = "watt meter-2" ; - three_dmn_var_sht:missing_value = -99s ; - float four_dmn_rec_var(time, lat, lev, lon) ; - four_dmn_rec_var:long_name = "four dimensional record variable" ; - four_dmn_rec_var:units = "watt meter-2" ; - float u(time) ; - u:long_name = "Zonal wind speed" ; - u:units = "meter second-1" ; - float v(time) ; - v:long_name = "Meridional wind speed" ; - v:units = "meter second-1" ; - -// global attributes: - :Conventions = "NCAR-CSM" ; - :history = "History global attribute.\n", - "" ; - :julian_day = 200000.04 ; - :DODS_EXTRA.Unlimited_Dimension = "time" ; -data: - - lat = _, _ ; - - lev = _, _, _ ; - - lon_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _ ; - - lat_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rlev = _, _, _ ; - - lon = _, _, _, _ ; - - time = _, _, _, _, _, _, _, _, _, _ ; - - lsmlev = _, _, _, _, _, _ ; - - wvl = _, _ ; - - P0 = _ ; - - fl_dmn = - "", - "", - "" ; - - nbdate = _ ; - - mss_val_scl = _ ; - - pck = _ ; - - upk = _ ; - - val_one_int = _ ; - - val_half = _ ; - - scalar_var = _ ; - - float_var = _ ; - - double_var = _ ; - - double_var2 = _ ; - - int_var = _ ; - - short_var = _ ; - - char_var = "" ; - - char_var_space = "" ; - - char_var_nul = "" ; - - fl_nm = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - fl_nm_arr = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - non_nul_trm_char_one_dmn = - "", - "", - "", - "" ; - - non_nul_trm_char_two_dmn = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - byte_var = -127 ; - - zero = _ ; - - one = _ ; - - two = _ ; - - e_dbl = _ ; - - e_flt = _ ; - - three = _ ; - - four = _ ; - - negative_one = _ ; - - g = _ ; - - one_dmn_var = _, _ ; - - att_var = _ ; - - bnd_var = - _, _, - _, _, - _, _ ; - - time_udunits = 876012, 876018, 876024 ; - - lat_var = _, _ ; - - lat_wgt = _, _ ; - - hyam = _, _, _ ; - - hybm = _, _, _ ; - - PS = - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325 ; - - date = _, _, _, _, _, _, _, _, _, _ ; - - lon_wgt = _, _, _, _ ; - - msk_prt_mss_prt = _, _, _, _ ; - - mss_val = _, _, _, _ ; - - mss_val_fst = _, _, _, _ ; - - fll_val = _, _, _, _ ; - - no_mss_val = _, _, _, _ ; - - val_one_mss = _, _ ; - - pck_arr = _, _, _, _ ; - - upk_arr = _, _, _, _ ; - - val_one_one_int = _, _ ; - - val_max_max_sht = _, _ ; - - val_one_mss_int = _, _ ; - - val_half_half = _, _ ; - - wgt_one = _, _ ; - - mss_val_all = _, _, _, _ ; - - char_var_multinul = - "", - "", - "" ; - - lev_var = _, _, _ ; - - lev_wgt = _, _, _ ; - - z = _, _, _ ; - - rz = _, _, _ ; - - three_dmn_var = - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - three_dmn_var_crd = - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - prs_sfc = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - two_dmn_var = - _, _, _, - _, _, _ ; - - mask = - _, _, _, _, - _, _, _, _ ; - - ORO = - _, _, _, _, - _, _, _, _ ; - - weight = _, _ ; - - gw = _, _ ; - - gw_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl = _, _, _, _, _, _, _, _, _, _ ; - - one_dmn_rec_var = _, _, _, _, _, _, _, _, _, _ ; - - tpt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_upk = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_dbl = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_int = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_int = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_dbl = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_pck_lng = _, _, _, _, _, _, _, _, _, _ ; - - one_dmn_rec_var_sng = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - time_lon = - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270 ; - - two_dmn_rec_var_sng = - "a", - "b", - "c", - "b", - "c", - "d", - "c", - "d", - "e", - "d", - "e", - "f", - "e", - "f", - "g", - "f", - "g", - "h", - "g", - "h", - "i", - "h", - "i", - "j", - "j", - "k", - "l", - "k", - "l", - "m" ; - - two_dmn_rec_var = - 1, 2, 3, - 1, 2.1, 3, - 1, 2.2, 3, - 1, 2.3, 3, - 1, 2.4, 3, - 1, 2.5, 3, - 1, 2.6, 3, - 1, 2.7, 3, - 1, 2.8, 3, - 1, 2.9, 3 ; - - three_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - three_dmn_var_dbl = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - -99, -99, -99, -99, - -99, -99, -99, -99, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, 76, - 77, 78, 79, -99 ; - - three_dmn_var_int = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - -99, -99, -99, -99, - -99, -99, -99, -99, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, -99, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - -99, 62, 63, 64, - 65, -99, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, -99, - 77, 78, 79, 80 ; - - three_dmn_var_sht = - 1, 2, 3, 4, - 5, 6, 7, 8, - -99, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - -99, 34, 35, -99, - 37, 38, 39, 40, - 41, 42, 43, 44, - -99, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, -99, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, -99, -99, -99, - -99, -99, -99, -99 ; - - four_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80, - 81, 82, 83, 84, - 85, 86, 87, 88, - 89, 90, 91, 92, - 93, 94, 95, 96, - 97, 98, 99, 100, - 101, 102, 103, 104, - 105, 106, 107, 108, - 109, 110, 111, 112, - 113, 114, 115, 116, - 117, 118, 119, 120, - 121, 122, 123, 124, - 125, 126, 127, 128, - 129, 130, 131, 132, - 133, 134, 135, 136, - 137, 138, 139, 140, - 141, 142, 143, 144, - 145, 146, 147, 148, - 149, 150, 151, 152, - 153, 154, 155, 156, - 157, 158, 159, 160, - 161, 162, 163, 164, - 165, 166, 167, 168, - 169, 170, 171, 172, - 173, 174, 175, 176, - 177, 178, 179, 180, - 181, 182, 183, 184, - 185, 186, 187, 188, - 189, 190, 191, 192, - 193, 194, 195, 196, - 197, 198, 199, 200, - 201, 202, 203, 204, - 205, 206, 207, 208, - 209, 210, 211, 212, - 213, 214, 215, 216, - 217, 218, 219, 220, - 221, 222, 223, 224, - 225, 226, 227, 228, - 229, 230, 231, 232, - 233, 234, 235, 236, - 237, 238, 239, 240 ; - - u = _, _, _, _, _, _, _, _, _, _ ; - - v = _, _, _, _, _, _, _, _, _, _ ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in1.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in1.nc.dmp deleted file mode 100644 index d31d7d35c26..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in1.nc.dmp +++ /dev/null @@ -1,1339 +0,0 @@ -netcdf in1 { -dimensions: - time = UNLIMITED ; // (10 currently) - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - dgn = 1 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - maxStrlen64 = 64 ; - rlev = 3 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - lat:long_name = "Latitude" ; - lat:units = "degrees_north" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float lev(lev) ; - lev:purpose = "Monotonically increasing coordinate pressure" ; - lev:units = "hybrid_sigma_pressure" ; - lev:positive = "down" ; - lev:A_var = "hyam" ; - lev:B_var = "hybm" ; - lev:P0_var = "P0" ; - lev:PS_var = "PS" ; - lev:bounds = "ilev" ; - float rlev(rlev) ; - rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - lon:long_name = "Latitude" ; - lon:units = "degrees_north" ; - double time(time) ; - float lsmlev(lsmlev) ; - lsmlev:purpose = "Homebrew level coordinate for LSM" ; - lsmlev:long_name = "Soil depth" ; - lsmlev:units = "meter" ; - float wvl(wvl) ; - wvl:long_name = "Wavelength" ; - wvl:units = "meter" ; - float P0 ; - P0:long_name = "reference pressure" ; - P0:units = "pascal" ; - char fl_dmn(fl_dmn, maxStrlen64) ; - fl_dmn:long_name = "Character coordinate" ; - fl_dmn:units = "[chr]" ; - int nbdate ; - nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float mss_val_scl ; - mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - short pck ; - pck:long_name = "Packed scalar variable" ; - pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - double upk ; - upk:long_name = "Unpacked scalar variable" ; - upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - int val_one_int ; - val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - float val_half ; - val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - float scalar_var ; - scalar_var:long_name = "scalar variable" ; - scalar_var:units = "Fraction" ; - float float_var ; - float_var:long_name = "float" ; - double double_var ; - double_var:long_name = "double" ; - double double_var2 ; - double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - int_var:long_name = "int" ; - short short_var ; - short_var:long_name = "short" ; - char char_var(maxStrlen64) ; - char_var:long_name = "char" ; - char char_var_space(maxStrlen64) ; - char_var_space:long_name = "Character variable with whitespace on ends" ; - char char_var_nul(maxStrlen64) ; - char_var_nul:long_name = "Character variable containing one NUL" ; - char fl_nm(char_dmn_lng, maxStrlen64) ; - fl_nm:long_name = "Variable contains a file name" ; - char fl_nm_arr(fl_dmn, char_dmn_lng, maxStrlen64) ; - fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - fl_nm_arr:units = "[sng]" ; - char non_nul_trm_char_one_dmn(char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - non_nul_trm_char_one_dmn:units = "[chr]" ; - char non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - non_nul_trm_char_two_dmn:units = "[chr]" ; - byte byte_var ; - byte_var:long_name = "byte" ; - byte byte_var_neg ; - byte_var_neg:long_name = "negative byte" ; - float zero ; - zero:long_name = "zero" ; - float one ; - one:long_name = "one" ; - float two ; - two:long_name = "two" ; - double e_dbl ; - e_dbl:long_name = "e, natural logarithm base" ; - float e_flt ; - e_flt:long_name = "e, natural logarithm base" ; - float three ; - three:long_name = "three" ; - float four ; - four:long_name = "four" ; - float negative_one ; - negative_one:long_name = "negative one" ; - float g ; - g:long_name = "g" ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0b ; - att_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0b ; - bnd_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - float td(time, dgn) ; - td:long_name = "two dimensional record variable stored in td (time,dgn) order (dgn means degenerate, i.e., of size 1)" ; - double time_udunits(time_udunits) ; - time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - float lat_var(lat) ; - float lat_wgt(lat) ; - float hyam(lev) ; - hyam:long_name = "hybrid A coefficient at layer midpoints" ; - float hybm(lev) ; - hybm:long_name = "hybrid B coefficient at layer midpoints" ; - float PS(time, lat, lon) ; - PS:long_name = "surface pressure" ; - PS:units = "pascal" ; - int date(time) ; - date:long_name = "current date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float lon_wgt(lon) ; - lon_wgt:long_name = "Gaussian weights" ; - lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average." ; - float msk_prt_mss_prt(lon) ; - msk_prt_mss_prt:long_name = "partial mask, partial missing value example" ; - msk_prt_mss_prt:missing_value = 1.e+36f ; - float mss_val(lon) ; - mss_val:long_name = "partial missing value example" ; - mss_val:missing_value = 1.e+36f ; - float mss_val_fst(lon) ; - mss_val_fst:long_name = "offset partial missing value example" ; - mss_val_fst:missing_value = -999.f ; - float fll_val(lon) ; - fll_val:long_name = "_FillValue example" ; - fll_val:_FillValue = -999.f ; - float no_mss_val(lon) ; - no_mss_val:long_name = "no missing value" ; - float val_one_mss(lat) ; - val_one_mss:long_name = "one regular value, one missing value" ; - val_one_mss:missing_value = 1.e+36f ; - short pck_arr(lon) ; - pck_arr:long_name = "Packed array" ; - pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double" ; - pck_arr:scale_factor = 1. ; - pck_arr:add_offset = 0. ; - double upk_arr(lon) ; - upk_arr:long_name = "Unpacked array" ; - upk_arr:note = "Unpacked value is -32767.d, 0.d, 1.d, 32767.d, packed is same in short. Packing algorithm should yield an NC_SHORT array = [] with packing attributes scale_factor=1.0d, add_offset=0.0d" ; - int val_one_one_int(lat) ; - val_one_one_int:long_name = "1, 1" ; - val_one_one_int:missing_value = -99 ; - short val_max_max_sht(lat) ; - val_max_max_sht:long_name = "17000, 17000" ; - val_max_max_sht:missing_value = -99s ; - int val_one_mss_int(lat) ; - val_one_mss_int:long_name = "1, mss_val" ; - val_one_mss_int:missing_value = -99 ; - float val_half_half(lat) ; - val_half_half:long_name = "0.5,0.5" ; - val_half_half:missing_value = 1.e+36f ; - float wgt_one(lat) ; - wgt_one:long_name = "all values are one" ; - float mss_val_all(lon) ; - mss_val_all:long_name = "all missing values example" ; - mss_val_all:missing_value = 1.e+36f ; - char char_var_multinul(lev, maxStrlen64) ; - char_var_multinul:long_name = "Character variable containing multiple NULs" ; - float lev_var(lev) ; - lev_var:long_name = "lev_var" ; - float lev_wgt(lev) ; - lev_wgt:long_name = "lev_wgt" ; - float z(lev) ; - z:long_name = "Height" ; - z:units = "meter" ; - z:purpose = "Height stored with a monotonically increasing coordinate" ; - float rz(rlev) ; - rz:long_name = "Height" ; - rz:units = "meter" ; - rz:purpose = "Height stored with a monotonically decreasing coordinate" ; - int one_dmn_int_val_one(lat) ; - int one_dmn_int_val_two(lat) ; - float three_dmn_var(lat, lev, lon) ; - three_dmn_var:long_name = "three dimensional variable with CCM coordinate convention C=[lat,lev,lon], Fortran=(lon,lev,lat)" ; - three_dmn_var:units = "Fraction" ; - float three_dmn_var_crd(lev, lat, lon) ; - three_dmn_var_crd:long_name = "three dimensional variable with COORDS coordinate convention C=[lev,lat,lon], Fortran=(lon,lat,lev)" ; - three_dmn_var_crd:units = "Fraction" ; - float prs_sfc(time, lat, lon) ; - prs_sfc:long_name = "Surface pressure" ; - prs_sfc:units = "pascal" ; - float two_dmn_var(lat, lev) ; - two_dmn_var:long_name = "two dimensional variable" ; - two_dmn_var:units = "Fraction" ; - float mask(lat, lon) ; - mask:long_name = "mask variable like ORO" ; - mask:units = "Fraction" ; - float ORO(lat, lon) ; - ORO:long_name = "Orography" ; - ORO:units = "Fraction" ; - float weight(lat) ; - weight:long_name = "Gaussian weight" ; - weight:units = "Fraction" ; - float gw(lat) ; - gw:long_name = "gw variable like gw" ; - gw:units = "Fraction" ; - float gw_T42(lat_T42) ; - gw_T42:long_name = "gw variable like gw_T42" ; - gw_T42:units = "Fraction" ; - float rec_var_flt(time) ; - rec_var_flt:long_name = "record variable, float" ; - double rec_var_dbl(time) ; - rec_var_dbl:long_name = "record variable, double" ; - int one_dmn_rec_var(time) ; - one_dmn_rec_var:long_name = "one dimensional record variable" ; - one_dmn_rec_var:units = "second" ; - float tpt(time) ; - tpt:long_name = "Temperature" ; - tpt:units = "kelvin" ; - tpt:hieght = "Leave hieght mispelled for NCO User\'s guide example" ; - double rec_var_dbl_mss_val_dbl_upk(time) ; - rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values" ; - rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its missing_value should not be too far out of range, i.e., it should be representable by a short. However, the missing_value should itself be the same type as the unpacked variable, NC_DOUBLE in this case." ; - rec_var_dbl_mss_val_dbl_upk:missing_value = -999. ; - short rec_var_dbl_mss_val_dbl_pck(time) ; - rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, with double missing values, packed" ; - rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk" ; - rec_var_dbl_mss_val_dbl_pck:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck:add_offset = 5. ; - float rec_var_flt_mss_val_flt(time) ; - rec_var_flt_mss_val_flt:long_name = "record variable, float, with float missing values" ; - rec_var_flt_mss_val_flt:missing_value = 1.e+36f ; - short rec_var_flt_pck(time) ; - rec_var_flt_pck:long_name = "record variable, float, packed" ; - rec_var_flt_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_flt_pck:scale_factor = 0.1f ; - rec_var_flt_pck:add_offset = 100.f ; - short rec_var_dbl_pck(time) ; - rec_var_dbl_pck:long_name = "record variable, double, packed" ; - rec_var_dbl_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_dbl_pck:scale_factor = 0.1 ; - rec_var_dbl_pck:add_offset = 100. ; - float rec_var_flt_mss_val_dbl(time) ; - rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values" ; - rec_var_flt_mss_val_dbl:missing_value = 1.e+36 ; - rec_var_flt_mss_val_dbl:note = "The correct average of this variable is 5.0" ; - float rec_var_flt_mss_val_int(time) ; - rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values" ; - rec_var_flt_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_int(time) ; - rec_var_int_mss_val_int:long_name = "record variable, integer, with integer missing values" ; - rec_var_int_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_flt(time) ; - rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values" ; - rec_var_int_mss_val_flt:missing_value = -999.f ; - int rec_var_int_mss_val_dbl(time) ; - rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values" ; - rec_var_int_mss_val_dbl:missing_value = -999. ; - int rec_var_dbl_mss_val_dbl_pck_lng(time) ; - rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values" ; - rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) is still a considerable cost savings" ; - rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5. ; - char one_dmn_rec_var_sng(time, maxStrlen64) ; - one_dmn_rec_var_sng:long_name = "one dimensional record variable of string" ; - float time_lon(time, lon) ; - time_lon:long_name = "Record variable of longitude coordinate" ; - char two_dmn_rec_var_sng(time, lev, maxStrlen64) ; - two_dmn_rec_var_sng:long_name = "two dimensional record variable of string" ; - float two_dmn_rec_var(time, lev) ; - two_dmn_rec_var:long_name = "two dimensional record variable" ; - two_dmn_rec_var:units = "watt meter-2" ; - float three_dmn_rec_var(time, lat, lon) ; - three_dmn_rec_var:long_name = "three dimensional record variable" ; - three_dmn_rec_var:units = "watt meter-2" ; - double three_dmn_var_dbl(time, lat, lon) ; - three_dmn_var_dbl:long_name = "three dimensional record variable of type double" ; - three_dmn_var_dbl:units = "watt meter-2" ; - three_dmn_var_dbl:missing_value = -99. ; - int three_dmn_var_int(time, lat, lon) ; - three_dmn_var_int:long_name = "three dimensional record variable of type int" ; - three_dmn_var_int:units = "watt meter-2" ; - three_dmn_var_int:missing_value = -99 ; - short three_dmn_var_sht(time, lat, lon) ; - three_dmn_var_sht:long_name = "three dimensional record variable" ; - three_dmn_var_sht:units = "watt meter-2" ; - three_dmn_var_sht:missing_value = -99s ; - float tx(time, lon) ; - tx:long_name = "two dimensional record variable stored in tx (time,lon) order" ; - float ty(time, lat) ; - ty:long_name = "two dimensional record variable stored in ty (time,lat) order" ; - float tz(time, lev) ; - tz:long_name = "two dimensional record variable stored in tz (time,lev) order" ; - float txyz(time, lon, lat, lev) ; - txyz:long_name = "four dimensional record variable stored in txyz (time,lon,lat,lev) order" ; - float four_dmn_rec_var(time, lat, lev, lon) ; - four_dmn_rec_var:long_name = "four dimensional record variable" ; - four_dmn_rec_var:units = "watt meter-2" ; - float u(time) ; - u:long_name = "Zonal wind speed" ; - u:units = "meter second-1" ; - float v(time) ; - v:long_name = "Meridional wind speed" ; - v:units = "meter second-1" ; - -// global attributes: - :Conventions = "NCAR-CSM" ; - :history = "History global attribute.\n", - "" ; - :julian_day = 200000.04 ; - :DODS_EXTRA.Unlimited_Dimension = "time" ; -data: - - lat = -90, 90 ; - - lon_T42 = 0, 2.8125, 5.625, 8.4375, 11.25, 14.0625, 16.875, 19.6875, 22.5, - 25.3125, 28.125, 30.9375, 33.75, 36.5625, 39.375, 42.1875, 45, 47.8125, - 50.625, 53.4375, 56.25, 59.0625, 61.875, 64.6875, 67.5, 70.3125, 73.125, - 75.9375, 78.75, 81.5625, 84.375, 87.1875, 90, 92.8125, 95.625, 98.4375, - 101.25, 104.0625, 106.875, 109.6875, 112.5, 115.3125, 118.125, 120.9375, - 123.75, 126.5625, 129.375, 132.1875, 135, 137.8125, 140.625, 143.4375, - 146.25, 149.0625, 151.875, 154.6875, 157.5, 160.3125, 163.125, 165.9375, - 168.75, 171.5625, 174.375, 177.1875, 180, 182.8125, 185.625, 188.4375, - 191.25, 194.0625, 196.875, 199.6875, 202.5, 205.3125, 208.125, 210.9375, - 213.75, 216.5625, 219.375, 222.1875, 225, 227.8125, 230.625, 233.4375, - 236.25, 239.0625, 241.875, 244.6875, 247.5, 250.3125, 253.125, 255.9375, - 258.75, 261.5625, 264.375, 267.1875, 270, 272.8125, 275.625, 278.4375, - 281.25, 284.0625, 286.875, 289.6875, 292.5, 295.3125, 298.125, 300.9375, - 303.75, 306.5625, 309.375, 312.1875, 315, 317.8125, 320.625, 323.4375, - 326.25, 329.0625, 331.875, 334.6875, 337.5, 340.3125, 343.125, 345.9375, - 348.75, 351.5625, 354.375, 357.1875 ; - - lat_T42 = -88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, - -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, - -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, - -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, - 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, - 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, - 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009 ; - - lev = 100, 500, 1000 ; - - rlev = 1000, 500, 100 ; - - lon = 0, 90, 180, 270 ; - - time = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - lsmlev = 0.05, 0.1, 0.2, 0.5, 1, 3 ; - - wvl = 5e-07, 1e-06 ; - - P0 = 100000 ; - - fl_dmn = - "a", - "b", - "3" ; - - nbdate = 640312 ; - - mss_val_scl = 1e+36 ; - - pck = 1 ; - - upk = 3 ; - - val_one_int = 1 ; - - val_half = 0.5 ; - - scalar_var = 10 ; - - float_var = 10 ; - - double_var = 10 ; - - double_var2 = 10 ; - - int_var = 10 ; - - short_var = 10 ; - - char_var = "z" ; - - char_var_space = " " ; - - char_var_nul = "" ; - - fl_nm = - "/", - "h", - "o", - "m", - "e", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "n", - "c", - "o", - "/", - "d", - "a", - "t", - "a", - "/", - "i", - "n", - ".", - "c", - "d", - "l", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - fl_nm_arr = - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "1", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "2", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "3", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - non_nul_trm_char_one_dmn = - "a", - "b", - "", - "" ; - - non_nul_trm_char_two_dmn = - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "m" ; - - byte_var = 122 ; - - byte_var_neg = -122 ; - - zero = 0 ; - - one = 1 ; - - two = 2 ; - - e_dbl = 2.71828182846 ; - - e_flt = 2.718282 ; - - three = 3 ; - - four = 4 ; - - negative_one = -1 ; - - g = 9.8 ; - - one_dmn_var = 1, 10 ; - - att_var = 10 ; - - bnd_var = - 1, 2, - 3, 4, - 5, 6 ; - - td = - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 ; - - time_udunits = 876012, 876018, 876024 ; - - lat_var = 1, 2 ; - - lat_wgt = 1, 2 ; - - hyam = 0.0802583, 0.0438226, 0 ; - - hybm = 0.0187849, 0.457453, 0.992528 ; - - PS = - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325 ; - - date = 640312, 640313, 640314, 640315, 640316, 640317, 640318, 640319, - 640320, 640321 ; - - lon_wgt = 0.347855, 0.652145, 0.652145, 0.347855 ; - - msk_prt_mss_prt = 0.5, 1e+36, 1.5, 1e+36 ; - - mss_val = 73, 1e+36, 73, 1e+36 ; - - mss_val_fst = -999, 73, -999, 73 ; - - fll_val = 73, _, 73, _ ; - - no_mss_val = 73, 1e+36, 73, 1e+36 ; - - val_one_mss = 1, 1e+36 ; - - pck_arr = _, 0, 1, 32767 ; - - upk_arr = -32767, 0, 1, 32767 ; - - val_one_one_int = 1, 1 ; - - val_max_max_sht = 17000, 17000 ; - - val_one_mss_int = 1, -99 ; - - val_half_half = 0.5, 0.5 ; - - wgt_one = 1, 1 ; - - mss_val_all = 1e+36, 1e+36, 1e+36, 1e+36 ; - - char_var_multinul = - "\b", - "\n", - "", - "" ; - - lev_var = 100, 500, 1000 ; - - lev_wgt = 10, 2, 1 ; - - z = 17000, 5000, 0 ; - - rz = 0, 5000, 17000 ; - - one_dmn_int_val_one = 1, 1 ; - - one_dmn_int_val_two = 2, 2 ; - - three_dmn_var = - 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 ; - - three_dmn_var_crd = - 0, 1, 2, 3, - 12, 13, 14, 15, - 4, 5, 6, 7, - 16, 17, 18, 19, - 8, 9, 10, 11, - 20, 21, 22, 23 ; - - prs_sfc = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - two_dmn_var = - 1.5, 5.5, 9.5, - 13.5, 17.5, 21.5 ; - - mask = - 0, 1, 0, 0, - 1, 1, 0, 2 ; - - ORO = - 1, 1, 1, 1, - 1, 1, 1, 1 ; - - weight = 10, 10 ; - - gw = 10, 10 ; - - gw_T42 = -87.8638, -85.09653, -82.31291, -79.5256, -76.7369, -73.94752, - -71.15775, -68.36776, -65.57761, -62.78735, -59.99702, -57.20663, - -54.4162, -51.62573, -48.83524, -46.04473, -43.2542, -40.46365, - -37.67309, -34.88252, -32.09195, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767146, -6.976534, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976534, 9.767146, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09195, - 34.88252, 37.67309, 40.46365, 43.2542, 46.04473, 48.83524, 51.62573, - 54.4162, 57.20663, 59.99702, 62.78735, 65.57761, 68.36776, 71.15775, - 73.94752, 76.7369, 79.5256, 82.31291, 85.09653, 87.8638 ; - - rec_var_flt = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_dbl = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - one_dmn_rec_var = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - tpt = 273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 274 ; - - rec_var_dbl_mss_val_dbl_upk = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_dbl_mss_val_dbl_pck = -999, 32767, 21845, 10922, 0, -10922, -21845, - _, -999, -999 ; - - rec_var_flt_mss_val_flt = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ; - - rec_var_flt_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_dbl_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_flt_mss_val_dbl = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ; - - rec_var_flt_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_flt = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_dbl = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_dbl_mss_val_dbl_pck_lng = -999, 32767, 21845, 10922, 0, -10922, - -21845, -32767, -999, -999 ; - - one_dmn_rec_var_sng = - "H", - "e", - "l", - "l", - "o", - " ", - "W", - "o", - "r", - "" ; - - time_lon = - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270 ; - - two_dmn_rec_var_sng = - "a", - "b", - "c", - "b", - "c", - "d", - "c", - "d", - "e", - "d", - "e", - "f", - "e", - "f", - "g", - "f", - "g", - "h", - "g", - "h", - "i", - "h", - "i", - "j", - "j", - "k", - "l", - "k", - "l", - "m" ; - - two_dmn_rec_var = - 1, 2, 3, - 1, 2.1, 3, - 1, 2.2, 3, - 1, 2.3, 3, - 1, 2.4, 3, - 1, 2.5, 3, - 1, 2.6, 3, - 1, 2.7, 3, - 1, 2.8, 3, - 1, 2.9, 3 ; - - three_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - three_dmn_var_dbl = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - -99, -99, -99, -99, - -99, -99, -99, -99, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, 76, - 77, 78, 79, -99 ; - - three_dmn_var_int = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - -99, -99, -99, -99, - -99, -99, -99, -99, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, -99, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - -99, 62, 63, 64, - 65, -99, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, -99, - 77, 78, 79, 80 ; - - three_dmn_var_sht = - 1, 2, 3, 4, - 5, 6, 7, 8, - -99, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - -99, 34, 35, -99, - 37, 38, 39, 40, - 41, 42, 43, 44, - -99, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, -99, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, -99, -99, -99, - -99, -99, -99, -99 ; - - tx = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40 ; - - ty = - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20 ; - - tz = - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - 28, 29, 30 ; - - txyz = - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - 28, 29, 30, - 31, 32, 33, - 34, 35, 36, - 37, 38, 39, - 40, 41, 42, - 43, 44, 45, - 46, 47, 48, - 49, 50, 51, - 52, 53, 54, - 55, 56, 57, - 58, 59, 60, - 61, 62, 63, - 64, 65, 66, - 67, 68, 69, - 70, 71, 72, - 73, 74, 75, - 76, 77, 78, - 79, 80, 81, - 82, 83, 84, - 85, 86, 87, - 88, 89, 90, - 91, 92, 93, - 94, 95, 96, - 97, 98, 99, - 100, 101, 102, - 103, 104, 105, - 106, 107, 108, - 109, 110, 111, - 112, 113, 114, - 115, 116, 117, - 118, 119, 120, - 121, 122, 123, - 124, 125, 126, - 127, 128, 129, - 130, 131, 132, - 133, 134, 135, - 136, 137, 138, - 139, 140, 141, - 142, 143, 144, - 145, 146, 147, - 148, 149, 150, - 151, 152, 153, - 154, 155, 156, - 157, 158, 159, - 160, 161, 162, - 163, 164, 165, - 166, 167, 168, - 169, 170, 171, - 172, 173, 174, - 175, 176, 177, - 178, 179, 180, - 181, 182, 183, - 184, 185, 186, - 187, 188, 189, - 190, 191, 192, - 193, 194, 195, - 196, 197, 198, - 199, 200, 201, - 202, 203, 204, - 205, 206, 207, - 208, 209, 210, - 211, 212, 213, - 214, 215, 216, - 217, 218, 219, - 220, 221, 222, - 223, 224, 225, - 226, 227, 228, - 229, 230, 231, - 232, 233, 234, - 235, 236, 237, - 238, 239, 240 ; - - four_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80, - 81, 82, 83, 84, - 85, 86, 87, 88, - 89, 90, 91, 92, - 93, 94, 95, 96, - 97, 98, 99, 100, - 101, 102, 103, 104, - 105, 106, 107, 108, - 109, 110, 111, 112, - 113, 114, 115, 116, - 117, 118, 119, 120, - 121, 122, 123, 124, - 125, 126, 127, 128, - 129, 130, 131, 132, - 133, 134, 135, 136, - 137, 138, 139, 140, - 141, 142, 143, 144, - 145, 146, 147, 148, - 149, 150, 151, 152, - 153, 154, 155, 156, - 157, 158, 159, 160, - 161, 162, 163, 164, - 165, 166, 167, 168, - 169, 170, 171, 172, - 173, 174, 175, 176, - 177, 178, 179, 180, - 181, 182, 183, 184, - 185, 186, 187, 188, - 189, 190, 191, 192, - 193, 194, 195, 196, - 197, 198, 199, 200, - 201, 202, 203, 204, - 205, 206, 207, 208, - 209, 210, 211, 212, - 213, 214, 215, 216, - 217, 218, 219, 220, - 221, 222, 223, 224, - 225, 226, 227, 228, - 229, 230, 231, 232, - 233, 234, 235, 236, - 237, 238, 239, 240 ; - - u = 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ; - - v = 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_2.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_2.nc.dmp deleted file mode 100644 index 17c50837ea5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_2.nc.dmp +++ /dev/null @@ -1,1199 +0,0 @@ -netcdf in_2 { -dimensions: - time = UNLIMITED ; // (10 currently) - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon1 = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - maxStrlen64 = 64 ; - rlev = 3 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - float lev(lev) ; - lev:purpose = "Monotonically increasing coordinate pressure" ; - lev:units = "hybrid_sigma_pressure" ; - lev:positive = "down" ; - lev:A_var = "hyam" ; - lev:B_var = "hybm" ; - lev:P0_var = "P0" ; - lev:PS_var = "PS" ; - lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - lsmlev:purpose = "Homebrew level coordinate for LSM" ; - lsmlev:long_name = "Soil depth" ; - lsmlev:units = "meter" ; - float wvl(wvl) ; - wvl:long_name = "Wavelength" ; - wvl:units = "meter" ; - float P0 ; - P0:long_name = "reference pressure" ; - P0:units = "pascal" ; - char fl_dmn(fl_dmn, maxStrlen64) ; - fl_dmn:long_name = "Character coordinate" ; - fl_dmn:units = "[chr]" ; - int nbdate ; - nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float mss_val_scl ; - mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - short pck ; - pck:long_name = "Packed scalar variable" ; - pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - double upk ; - upk:long_name = "Unpacked scalar variable" ; - upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - int val_one_int ; - val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - float val_half ; - val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - float scalar_var ; - scalar_var:long_name = "scalar variable" ; - scalar_var:units = "Fraction" ; - float float_var ; - float_var:long_name = "float" ; - double double_var ; - double_var:long_name = "double" ; - double double_var2 ; - double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - int_var:long_name = "int" ; - short short_var ; - short_var:long_name = "short" ; - char char_var(maxStrlen64) ; - char_var:long_name = "char" ; - char char_var_space(maxStrlen64) ; - char_var_space:long_name = "Character variable with whitespace on ends" ; - char char_var_nul(maxStrlen64) ; - char_var_nul:long_name = "Character variable containing one NUL" ; - char fl_nm(char_dmn_lng, maxStrlen64) ; - fl_nm:long_name = "Variable contains a file name" ; - char fl_nm_arr(fl_dmn, char_dmn_lng, maxStrlen64) ; - fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - fl_nm_arr:units = "[sng]" ; - char non_nul_trm_char_one_dmn(char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - non_nul_trm_char_one_dmn:units = "[chr]" ; - char non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - non_nul_trm_char_two_dmn:units = "[chr]" ; - byte byte_var ; - byte_var:long_name = "byte" ; - float zero ; - zero:long_name = "zero" ; - float one ; - one:long_name = "one" ; - float two ; - two:long_name = "two" ; - double e_dbl ; - e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - three:long_name = "three" ; - float four ; - four:long_name = "four" ; - float negative_one ; - negative_one:long_name = "negative one" ; - float g ; - g:long_name = "g" ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0b ; - att_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0b ; - bnd_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - double time_udunits(time_udunits) ; - time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - float lat_var(lat) ; - float lat_wgt(lat) ; - float hyam(lev) ; - hyam:long_name = "hybrid A coefficient at layer midpoints" ; - float hybm(lev) ; - hybm:long_name = "hybrid B coefficient at layer midpoints" ; - float PS(time, lat, lon) ; - PS:long_name = "surface pressure" ; - PS:units = "pascal" ; - int date(time) ; - date:long_name = "current date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float lon_wgt(lon) ; - lon_wgt:long_name = "Gaussian weights" ; - lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average." ; - float msk_prt_mss_prt(lon) ; - msk_prt_mss_prt:long_name = "partial mask, partial missing value example" ; - msk_prt_mss_prt:missing_value = 1.e+36f ; - float mss_val(lon) ; - mss_val:long_name = "partial missing value example" ; - mss_val:missing_value = 1.e+36f ; - float mss_val_fst(lon) ; - mss_val_fst:long_name = "offset partial missing value example" ; - mss_val_fst:missing_value = -999.f ; - float fll_val(lon) ; - fll_val:long_name = "_FillValue example" ; - fll_val:_FillValue = -999.f ; - float no_mss_val(lon) ; - no_mss_val:long_name = "no missing value" ; - float val_one_mss(lat) ; - val_one_mss:long_name = "one regular value, one missing value" ; - val_one_mss:missing_value = 1.e+36f ; - short pck_arr(lon) ; - pck_arr:long_name = "Packed array" ; - pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double" ; - pck_arr:scale_factor = 1. ; - pck_arr:add_offset = 0. ; - double upk_arr(lon) ; - upk_arr:long_name = "Unpacked array" ; - upk_arr:note = "Unpacked value is -32767.d, 0.d, 1.d, 32767.d, packed is same in short. Packing algorithm should yield an NC_SHORT array = [] with packing attributes scale_factor=1.0d, add_offset=0.0d" ; - int val_one_one_int(lat) ; - val_one_one_int:long_name = "1, 1" ; - val_one_one_int:missing_value = -99 ; - short val_max_max_sht(lat) ; - val_max_max_sht:long_name = "17000, 17000" ; - val_max_max_sht:missing_value = -99s ; - int val_one_mss_int(lat) ; - val_one_mss_int:long_name = "1, mss_val" ; - val_one_mss_int:missing_value = -99 ; - float val_half_half(lat) ; - val_half_half:long_name = "0.5,0.5" ; - val_half_half:missing_value = 1.e+36f ; - float wgt_one(lat) ; - wgt_one:long_name = "all values are one" ; - float mss_val_all(lon) ; - mss_val_all:long_name = "all missing values example" ; - mss_val_all:missing_value = 1.e+36f ; - char char_var_multinul(lev, maxStrlen64) ; - char_var_multinul:long_name = "Character variable containing multiple NULs" ; - float lev_var(lev) ; - lev_var:long_name = "lev_var" ; - float lev_wgt(lev) ; - lev_wgt:long_name = "lev_wgt" ; - float z(lev) ; - z:long_name = "Height" ; - z:units = "meter" ; - z:purpose = "Height stored with a monotonically increasing coordinate" ; - float rz(rlev) ; - rz:long_name = "Height" ; - rz:units = "meter" ; - rz:purpose = "Height stored with a monotonically decreasing coordinate" ; - float three_dmn_var(lat, lev, lon) ; - three_dmn_var:long_name = "three dimensional variable with CCM coordinate convention C=[lat,lev,lon], Fortran=(lon,lev,lat)" ; - three_dmn_var:units = "Fraction" ; - float three_dmn_var_crd(lev, lat, lon) ; - three_dmn_var_crd:long_name = "three dimensional variable with COORDS coordinate convention C=[lev,lat,lon], Fortran=(lon,lat,lev)" ; - three_dmn_var_crd:units = "Fraction" ; - float prs_sfc(time, lat, lon) ; - prs_sfc:long_name = "Surface pressure" ; - prs_sfc:units = "pascal" ; - float two_dmn_var(lat, lev) ; - two_dmn_var:long_name = "two dimensional variable" ; - two_dmn_var:units = "Fraction" ; - float mask(lat, lon) ; - mask:long_name = "mask variable like ORO" ; - mask:units = "Fraction" ; - float ORO(lat, lon) ; - ORO:long_name = "Orography" ; - ORO:units = "Fraction" ; - float weight(lat) ; - weight:long_name = "Gaussian weight" ; - weight:units = "Fraction" ; - float gw(lat) ; - gw:long_name = "gw variable like gw" ; - gw:units = "Fraction" ; - float gw_T42(lat_T42) ; - gw_T42:long_name = "gw variable like gw_T42" ; - gw_T42:units = "Fraction" ; - float rec_var_flt(time) ; - rec_var_flt:long_name = "record variable, float" ; - double rec_var_dbl(time) ; - rec_var_dbl:long_name = "record variable, double" ; - int one_dmn_rec_var(time) ; - one_dmn_rec_var:long_name = "one dimensional record variable" ; - one_dmn_rec_var:units = "second" ; - float tpt(time) ; - tpt:long_name = "Temperature" ; - tpt:units = "kelvin" ; - tpt:hieght = "Leave mispelled for NCO User\'s guide example" ; - double rec_var_dbl_mss_val_dbl_upk(time) ; - rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values" ; - rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its missing_value should not be too far out of range, i.e., it should be representable by a short. However, the missing_value should itself be the same type as the unpacked variable, NC_DOUBLE in this case." ; - rec_var_dbl_mss_val_dbl_upk:missing_value = -999. ; - short rec_var_dbl_mss_val_dbl_pck(time) ; - rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, with double missing values, packed" ; - rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk" ; - rec_var_dbl_mss_val_dbl_pck:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck:add_offset = 5. ; - float rec_var_flt_mss_val_flt(time) ; - rec_var_flt_mss_val_flt:long_name = "record variable, float, with float missing values" ; - rec_var_flt_mss_val_flt:missing_value = 1.e+36f ; - short rec_var_flt_pck(time) ; - rec_var_flt_pck:long_name = "record variable, float, packed" ; - rec_var_flt_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_flt_pck:scale_factor = 0.1f ; - rec_var_flt_pck:add_offset = 100.f ; - short rec_var_dbl_pck(time) ; - rec_var_dbl_pck:long_name = "record variable, double, packed" ; - rec_var_dbl_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_dbl_pck:scale_factor = 0.1 ; - rec_var_dbl_pck:add_offset = 100. ; - float rec_var_flt_mss_val_dbl(time) ; - rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values" ; - rec_var_flt_mss_val_dbl:missing_value = 1.e+36 ; - float rec_var_flt_mss_val_int(time) ; - rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values" ; - rec_var_flt_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_int(time) ; - rec_var_int_mss_val_int:long_name = "record variable, integer, with integer missing values" ; - rec_var_int_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_flt(time) ; - rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values" ; - rec_var_int_mss_val_flt:missing_value = -999.f ; - int rec_var_int_mss_val_dbl(time) ; - rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values" ; - rec_var_int_mss_val_dbl:missing_value = -999. ; - int rec_var_dbl_mss_val_dbl_pck_lng(time) ; - rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values" ; - rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) is still a considerable cost savings" ; - rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5. ; - char one_dmn_rec_var_sng(time, maxStrlen64) ; - one_dmn_rec_var_sng:long_name = "one dimensional record variable of string" ; - float time_lon(time, lon) ; - time_lon:long_name = "Record variable of longitude coordinate" ; - char two_dmn_rec_var_sng(time, lev, maxStrlen64) ; - two_dmn_rec_var_sng:long_name = "two dimensional record variable of string" ; - float two_dmn_rec_var(time, lev) ; - two_dmn_rec_var:long_name = "two dimensional record variable" ; - two_dmn_rec_var:units = "watt meter-2" ; - float three_dmn_rec_var(time, lat, lon) ; - three_dmn_rec_var:long_name = "three dimensional record variable" ; - three_dmn_rec_var:units = "watt meter-2" ; - double three_dmn_var_dbl(time, lat, lon) ; - three_dmn_var_dbl:long_name = "three dimensional record variable of type double" ; - three_dmn_var_dbl:units = "watt meter-2" ; - three_dmn_var_dbl:missing_value = -99. ; - int three_dmn_var_int(time, lat, lon) ; - three_dmn_var_int:long_name = "three dimensional record variable of type int" ; - three_dmn_var_int:units = "watt meter-2" ; - three_dmn_var_int:missing_value = -99 ; - short three_dmn_var_sht(time, lat, lon) ; - three_dmn_var_sht:long_name = "three dimensional record variable" ; - three_dmn_var_sht:units = "watt meter-2" ; - three_dmn_var_sht:missing_value = -99s ; - float four_dmn_rec_var(time, lat, lev, lon) ; - four_dmn_rec_var:long_name = "four dimensional record variable" ; - four_dmn_rec_var:units = "watt meter-2" ; - double three_double_dmn(time, lon, lon1) ; - float u(time) ; - u:long_name = "Zonal wind speed" ; - u:units = "meter second-1" ; - float v(time) ; - v:long_name = "Meridional wind speed" ; - v:units = "meter second-1" ; - -// global attributes: - :Conventions = "NCAR-CSM" ; - :history = "History global attribute.\n", - "" ; - :julian_day = 200000.04 ; - :DODS_EXTRA.Unlimited_Dimension = "time" ; -data: - - lat = _, _ ; - - lev = _, _, _ ; - - lon_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _ ; - - lat_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rlev = _, _, _ ; - - lon = _, _, _, _ ; - - time = _, _, _, _, _, _, _, _, _, _ ; - - lsmlev = _, _, _, _, _, _ ; - - wvl = _, _ ; - - P0 = _ ; - - fl_dmn = - "", - "", - "" ; - - nbdate = _ ; - - mss_val_scl = _ ; - - pck = _ ; - - upk = _ ; - - val_one_int = _ ; - - val_half = _ ; - - scalar_var = _ ; - - float_var = _ ; - - double_var = _ ; - - double_var2 = _ ; - - int_var = _ ; - - short_var = _ ; - - char_var = "" ; - - char_var_space = "" ; - - char_var_nul = "" ; - - fl_nm = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - fl_nm_arr = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - non_nul_trm_char_one_dmn = - "", - "", - "", - "" ; - - non_nul_trm_char_two_dmn = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - byte_var = -127 ; - - zero = _ ; - - one = _ ; - - two = _ ; - - e_dbl = _ ; - - e_flt = _ ; - - three = _ ; - - four = _ ; - - negative_one = _ ; - - g = _ ; - - one_dmn_var = _, _ ; - - att_var = _ ; - - bnd_var = - _, _, - _, _, - _, _ ; - - time_udunits = 876012, 876018, 876024 ; - - lat_var = _, _ ; - - lat_wgt = _, _ ; - - hyam = _, _, _ ; - - hybm = _, _, _ ; - - PS = - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325 ; - - date = _, _, _, _, _, _, _, _, _, _ ; - - lon_wgt = _, _, _, _ ; - - msk_prt_mss_prt = _, _, _, _ ; - - mss_val = _, _, _, _ ; - - mss_val_fst = _, _, _, _ ; - - fll_val = _, _, _, _ ; - - no_mss_val = _, _, _, _ ; - - val_one_mss = _, _ ; - - pck_arr = _, _, _, _ ; - - upk_arr = _, _, _, _ ; - - val_one_one_int = _, _ ; - - val_max_max_sht = _, _ ; - - val_one_mss_int = _, _ ; - - val_half_half = _, _ ; - - wgt_one = _, _ ; - - mss_val_all = _, _, _, _ ; - - char_var_multinul = - "", - "", - "" ; - - lev_var = _, _, _ ; - - lev_wgt = _, _, _ ; - - z = _, _, _ ; - - rz = _, _, _ ; - - three_dmn_var = - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - three_dmn_var_crd = - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - prs_sfc = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - two_dmn_var = - _, _, _, - _, _, _ ; - - mask = - _, _, _, _, - _, _, _, _ ; - - ORO = - _, _, _, _, - _, _, _, _ ; - - weight = _, _ ; - - gw = _, _ ; - - gw_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl = _, _, _, _, _, _, _, _, _, _ ; - - one_dmn_rec_var = _, _, _, _, _, _, _, _, _, _ ; - - tpt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_upk = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_pck = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_dbl = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_flt_mss_val_int = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_int = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_flt = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_int_mss_val_dbl = _, _, _, _, _, _, _, _, _, _ ; - - rec_var_dbl_mss_val_dbl_pck_lng = _, _, _, _, _, _, _, _, _, _ ; - - one_dmn_rec_var_sng = - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - time_lon = - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270 ; - - two_dmn_rec_var_sng = - "a", - "b", - "c", - "b", - "c", - "d", - "c", - "d", - "e", - "d", - "e", - "f", - "e", - "f", - "g", - "f", - "g", - "h", - "g", - "h", - "i", - "h", - "i", - "j", - "j", - "k", - "l", - "k", - "l", - "m" ; - - two_dmn_rec_var = - 1, 2, 3, - 1, 2.1, 3, - 1, 2.2, 3, - 1, 2.3, 3, - 1, 2.4, 3, - 1, 2.5, 3, - 1, 2.6, 3, - 1, 2.7, 3, - 1, 2.8, 3, - 1, 2.9, 3 ; - - three_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - three_dmn_var_dbl = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - -99, -99, -99, -99, - -99, -99, -99, -99, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, 76, - 77, 78, 79, -99 ; - - three_dmn_var_int = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - -99, -99, -99, -99, - -99, -99, -99, -99, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, -99, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - -99, 62, 63, 64, - 65, -99, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, -99, - 77, 78, 79, 80 ; - - three_dmn_var_sht = - 1, 2, 3, 4, - 5, 6, 7, 8, - -99, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - -99, 34, 35, -99, - 37, 38, 39, 40, - 41, 42, 43, 44, - -99, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, -99, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, -99, -99, -99, - -99, -99, -99, -99 ; - - four_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80, - 81, 82, 83, 84, - 85, 86, 87, 88, - 89, 90, 91, 92, - 93, 94, 95, 96, - 97, 98, 99, 100, - 101, 102, 103, 104, - 105, 106, 107, 108, - 109, 110, 111, 112, - 113, 114, 115, 116, - 117, 118, 119, 120, - 121, 122, 123, 124, - 125, 126, 127, 128, - 129, 130, 131, 132, - 133, 134, 135, 136, - 137, 138, 139, 140, - 141, 142, 143, 144, - 145, 146, 147, 148, - 149, 150, 151, 152, - 153, 154, 155, 156, - 157, 158, 159, 160, - 161, 162, 163, 164, - 165, 166, 167, 168, - 169, 170, 171, 172, - 173, 174, 175, 176, - 177, 178, 179, 180, - 181, 182, 183, 184, - 185, 186, 187, 188, - 189, 190, 191, 192, - 193, 194, 195, 196, - 197, 198, 199, 200, - 201, 202, 203, 204, - 205, 206, 207, 208, - 209, 210, 211, 212, - 213, 214, 215, 216, - 217, 218, 219, 220, - 221, 222, 223, 224, - 225, 226, 227, 228, - 229, 230, 231, 232, - 233, 234, 235, 236, - 237, 238, 239, 240 ; - - three_double_dmn = - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - u = _, _, _, _, _, _, _, _, _, _ ; - - v = _, _, _, _, _, _, _, _, _, _ ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_no_three_double_dmn.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_no_three_double_dmn.nc.dmp deleted file mode 100644 index ca15ca58f24..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_no_three_double_dmn.nc.dmp +++ /dev/null @@ -1,1183 +0,0 @@ -netcdf in_no_three_double_dmn { -dimensions: - time = UNLIMITED ; // (10 currently) - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - maxStrlen64 = 64 ; - rlev = 3 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - float lev(lev) ; - lev:purpose = "Monotonically increasing coordinate pressure" ; - lev:units = "hybrid_sigma_pressure" ; - lev:positive = "down" ; - lev:A_var = "hyam" ; - lev:B_var = "hybm" ; - lev:P0_var = "P0" ; - lev:PS_var = "PS" ; - lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - lsmlev:purpose = "Homebrew level coordinate for LSM" ; - lsmlev:long_name = "Soil depth" ; - lsmlev:units = "meter" ; - float wvl(wvl) ; - wvl:long_name = "Wavelength" ; - wvl:units = "meter" ; - float P0 ; - P0:long_name = "reference pressure" ; - P0:units = "pascal" ; - char fl_dmn(fl_dmn, maxStrlen64) ; - fl_dmn:long_name = "Character coordinate" ; - fl_dmn:units = "[chr]" ; - int nbdate ; - nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float mss_val_scl ; - mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - short pck ; - pck:long_name = "Packed scalar variable" ; - pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - double upk ; - upk:long_name = "Unpacked scalar variable" ; - upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - int val_one_int ; - val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - float val_half ; - val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - float scalar_var ; - scalar_var:long_name = "scalar variable" ; - scalar_var:units = "Fraction" ; - float float_var ; - float_var:long_name = "float" ; - double double_var ; - double_var:long_name = "double" ; - double double_var2 ; - double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - int_var:long_name = "int" ; - short short_var ; - short_var:long_name = "short" ; - char char_var(maxStrlen64) ; - char_var:long_name = "char" ; - char char_var_space(maxStrlen64) ; - char_var_space:long_name = "Character variable with whitespace on ends" ; - char char_var_nul(maxStrlen64) ; - char_var_nul:long_name = "Character variable containing one NUL" ; - char fl_nm(char_dmn_lng, maxStrlen64) ; - fl_nm:long_name = "Variable contains a file name" ; - char fl_nm_arr(fl_dmn, char_dmn_lng, maxStrlen64) ; - fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - fl_nm_arr:units = "[sng]" ; - char non_nul_trm_char_one_dmn(char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - non_nul_trm_char_one_dmn:units = "[chr]" ; - char non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml, maxStrlen64) ; - non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - non_nul_trm_char_two_dmn:units = "[chr]" ; - byte byte_var ; - byte_var:long_name = "byte" ; - float zero ; - zero:long_name = "zero" ; - float one ; - one:long_name = "one" ; - float two ; - two:long_name = "two" ; - double e_dbl ; - e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - three:long_name = "three" ; - float four ; - four:long_name = "four" ; - float negative_one ; - negative_one:long_name = "negative one" ; - float g ; - g:long_name = "g" ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0b ; - att_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0b ; - bnd_var:char_att = "Sentence one.\n", - "Sentence two.\n", - "" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - double time_udunits(time_udunits) ; - time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - float lat_var(lat) ; - float lat_wgt(lat) ; - float hyam(lev) ; - hyam:long_name = "hybrid A coefficient at layer midpoints" ; - float hybm(lev) ; - hybm:long_name = "hybrid B coefficient at layer midpoints" ; - float PS(time, lat, lon) ; - PS:long_name = "surface pressure" ; - PS:units = "pascal" ; - int date(time) ; - date:long_name = "current date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - float lon_wgt(lon) ; - lon_wgt:long_name = "Gaussian weights" ; - lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average." ; - float msk_prt_mss_prt(lon) ; - msk_prt_mss_prt:long_name = "partial mask, partial missing value example" ; - msk_prt_mss_prt:missing_value = 1.e+36f ; - float mss_val(lon) ; - mss_val:long_name = "partial missing value example" ; - mss_val:missing_value = 1.e+36f ; - float mss_val_fst(lon) ; - mss_val_fst:long_name = "offset partial missing value example" ; - mss_val_fst:missing_value = -999.f ; - float fll_val(lon) ; - fll_val:long_name = "_FillValue example" ; - fll_val:_FillValue = -999.f ; - float no_mss_val(lon) ; - no_mss_val:long_name = "no missing value" ; - float val_one_mss(lat) ; - val_one_mss:long_name = "one regular value, one missing value" ; - val_one_mss:missing_value = 1.e+36f ; - short pck_arr(lon) ; - pck_arr:long_name = "Packed array" ; - pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double" ; - pck_arr:scale_factor = 1. ; - pck_arr:add_offset = 0. ; - double upk_arr(lon) ; - upk_arr:long_name = "Unpacked array" ; - upk_arr:note = "Unpacked value is -32767.d, 0.d, 1.d, 32767.d, packed is same in short. Packing algorithm should yield an NC_SHORT array = [] with packing attributes scale_factor=1.0d, add_offset=0.0d" ; - int val_one_one_int(lat) ; - val_one_one_int:long_name = "1, 1" ; - val_one_one_int:missing_value = -99 ; - short val_max_max_sht(lat) ; - val_max_max_sht:long_name = "17000, 17000" ; - val_max_max_sht:missing_value = -99s ; - int val_one_mss_int(lat) ; - val_one_mss_int:long_name = "1, mss_val" ; - val_one_mss_int:missing_value = -99 ; - float val_half_half(lat) ; - val_half_half:long_name = "0.5,0.5" ; - val_half_half:missing_value = 1.e+36f ; - float wgt_one(lat) ; - wgt_one:long_name = "all values are one" ; - float mss_val_all(lon) ; - mss_val_all:long_name = "all missing values example" ; - mss_val_all:missing_value = 1.e+36f ; - char char_var_multinul(lev, maxStrlen64) ; - char_var_multinul:long_name = "Character variable containing multiple NULs" ; - float lev_var(lev) ; - lev_var:long_name = "lev_var" ; - float lev_wgt(lev) ; - lev_wgt:long_name = "lev_wgt" ; - float z(lev) ; - z:long_name = "Height" ; - z:units = "meter" ; - z:purpose = "Height stored with a monotonically increasing coordinate" ; - float rz(rlev) ; - rz:long_name = "Height" ; - rz:units = "meter" ; - rz:purpose = "Height stored with a monotonically decreasing coordinate" ; - float three_dmn_var(lat, lev, lon) ; - three_dmn_var:long_name = "three dimensional variable with CCM coordinate convention C=[lat,lev,lon], Fortran=(lon,lev,lat)" ; - three_dmn_var:units = "Fraction" ; - float three_dmn_var_crd(lev, lat, lon) ; - three_dmn_var_crd:long_name = "three dimensional variable with COORDS coordinate convention C=[lev,lat,lon], Fortran=(lon,lat,lev)" ; - three_dmn_var_crd:units = "Fraction" ; - float prs_sfc(time, lat, lon) ; - prs_sfc:long_name = "Surface pressure" ; - prs_sfc:units = "pascal" ; - float two_dmn_var(lat, lev) ; - two_dmn_var:long_name = "two dimensional variable" ; - two_dmn_var:units = "Fraction" ; - float mask(lat, lon) ; - mask:long_name = "mask variable like ORO" ; - mask:units = "Fraction" ; - float ORO(lat, lon) ; - ORO:long_name = "Orography" ; - ORO:units = "Fraction" ; - float weight(lat) ; - weight:long_name = "Gaussian weight" ; - weight:units = "Fraction" ; - float gw(lat) ; - gw:long_name = "gw variable like gw" ; - gw:units = "Fraction" ; - float gw_T42(lat_T42) ; - gw_T42:long_name = "gw variable like gw_T42" ; - gw_T42:units = "Fraction" ; - float rec_var_flt(time) ; - rec_var_flt:long_name = "record variable, float" ; - double rec_var_dbl(time) ; - rec_var_dbl:long_name = "record variable, double" ; - int one_dmn_rec_var(time) ; - one_dmn_rec_var:long_name = "one dimensional record variable" ; - one_dmn_rec_var:units = "second" ; - float tpt(time) ; - tpt:long_name = "Temperature" ; - tpt:units = "kelvin" ; - tpt:hieght = "Leave mispelled for NCO User\'s guide example" ; - double rec_var_dbl_mss_val_dbl_upk(time) ; - rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values" ; - rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its missing_value should not be too far out of range, i.e., it should be representable by a short. However, the missing_value should itself be the same type as the unpacked variable, NC_DOUBLE in this case." ; - rec_var_dbl_mss_val_dbl_upk:missing_value = -999. ; - short rec_var_dbl_mss_val_dbl_pck(time) ; - rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, with double missing values, packed" ; - rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk" ; - rec_var_dbl_mss_val_dbl_pck:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck:add_offset = 5. ; - float rec_var_flt_mss_val_flt(time) ; - rec_var_flt_mss_val_flt:long_name = "record variable, float, with float missing values" ; - rec_var_flt_mss_val_flt:missing_value = 1.e+36f ; - short rec_var_flt_pck(time) ; - rec_var_flt_pck:long_name = "record variable, float, packed" ; - rec_var_flt_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_flt_pck:scale_factor = 0.1f ; - rec_var_flt_pck:add_offset = 100.f ; - short rec_var_dbl_pck(time) ; - rec_var_dbl_pck:long_name = "record variable, double, packed" ; - rec_var_dbl_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly" ; - rec_var_dbl_pck:scale_factor = 0.1 ; - rec_var_dbl_pck:add_offset = 100. ; - float rec_var_flt_mss_val_dbl(time) ; - rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values" ; - rec_var_flt_mss_val_dbl:missing_value = 1.e+36 ; - float rec_var_flt_mss_val_int(time) ; - rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values" ; - rec_var_flt_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_int(time) ; - rec_var_int_mss_val_int:long_name = "record variable, integer, with integer missing values" ; - rec_var_int_mss_val_int:missing_value = -999 ; - int rec_var_int_mss_val_flt(time) ; - rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values" ; - rec_var_int_mss_val_flt:missing_value = -999.f ; - int rec_var_int_mss_val_dbl(time) ; - rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values" ; - rec_var_int_mss_val_dbl:missing_value = -999. ; - int rec_var_dbl_mss_val_dbl_pck_lng(time) ; - rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values" ; - rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) is still a considerable cost savings" ; - rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999. ; - rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05 ; - rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5. ; - char one_dmn_rec_var_sng(time, maxStrlen64) ; - one_dmn_rec_var_sng:long_name = "one dimensional record variable of string" ; - float time_lon(time, lon) ; - time_lon:long_name = "Record variable of longitude coordinate" ; - char two_dmn_rec_var_sng(time, lev, maxStrlen64) ; - two_dmn_rec_var_sng:long_name = "two dimensional record variable of string" ; - float two_dmn_rec_var(time, lev) ; - two_dmn_rec_var:long_name = "two dimensional record variable" ; - two_dmn_rec_var:units = "watt meter-2" ; - float three_dmn_rec_var(time, lat, lon) ; - three_dmn_rec_var:long_name = "three dimensional record variable" ; - three_dmn_rec_var:units = "watt meter-2" ; - double three_dmn_var_dbl(time, lat, lon) ; - three_dmn_var_dbl:long_name = "three dimensional record variable of type double" ; - three_dmn_var_dbl:units = "watt meter-2" ; - three_dmn_var_dbl:missing_value = -99. ; - int three_dmn_var_int(time, lat, lon) ; - three_dmn_var_int:long_name = "three dimensional record variable of type int" ; - three_dmn_var_int:units = "watt meter-2" ; - three_dmn_var_int:missing_value = -99 ; - short three_dmn_var_sht(time, lat, lon) ; - three_dmn_var_sht:long_name = "three dimensional record variable" ; - three_dmn_var_sht:units = "watt meter-2" ; - three_dmn_var_sht:missing_value = -99s ; - float four_dmn_rec_var(time, lat, lev, lon) ; - four_dmn_rec_var:long_name = "four dimensional record variable" ; - four_dmn_rec_var:units = "watt meter-2" ; - float u(time) ; - u:long_name = "Zonal wind speed" ; - u:units = "meter second-1" ; - float v(time) ; - v:long_name = "Meridional wind speed" ; - v:units = "meter second-1" ; - -// global attributes: - :Conventions = "NCAR-CSM" ; - :history = "History global attribute.\n", - "" ; - :julian_day = 200000.04 ; - :DODS_EXTRA.Unlimited_Dimension = "time" ; -data: - - lat = -90, 90 ; - - lev = 100, 500, 1000 ; - - lon_T42 = 0, 2.8125, 5.625, 8.4375, 11.25, 14.0625, 16.875, 19.6875, 22.5, - 25.3125, 28.125, 30.9375, 33.75, 36.5625, 39.375, 42.1875, 45, 47.8125, - 50.625, 53.4375, 56.25, 59.0625, 61.875, 64.6875, 67.5, 70.3125, 73.125, - 75.9375, 78.75, 81.5625, 84.375, 87.1875, 90, 92.8125, 95.625, 98.4375, - 101.25, 104.0625, 106.875, 109.6875, 112.5, 115.3125, 118.125, 120.9375, - 123.75, 126.5625, 129.375, 132.1875, 135, 137.8125, 140.625, 143.4375, - 146.25, 149.0625, 151.875, 154.6875, 157.5, 160.3125, 163.125, 165.9375, - 168.75, 171.5625, 174.375, 177.1875, 180, 182.8125, 185.625, 188.4375, - 191.25, 194.0625, 196.875, 199.6875, 202.5, 205.3125, 208.125, 210.9375, - 213.75, 216.5625, 219.375, 222.1875, 225, 227.8125, 230.625, 233.4375, - 236.25, 239.0625, 241.875, 244.6875, 247.5, 250.3125, 253.125, 255.9375, - 258.75, 261.5625, 264.375, 267.1875, 270, 272.8125, 275.625, 278.4375, - 281.25, 284.0625, 286.875, 289.6875, 292.5, 295.3125, 298.125, 300.9375, - 303.75, 306.5625, 309.375, 312.1875, 315, 317.8125, 320.625, 323.4375, - 326.25, 329.0625, 331.875, 334.6875, 337.5, 340.3125, 343.125, 345.9375, - 348.75, 351.5625, 354.375, 357.1875 ; - - lat_T42 = -88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, - -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, - -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, - -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, - 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, - 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, - 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009 ; - - rlev = 1000, 500, 100 ; - - lon = 0, 90, 180, 270 ; - - time = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - lsmlev = 0.05, 0.1, 0.2, 0.5, 1, 3 ; - - wvl = 5e-07, 1e-06 ; - - P0 = 100000 ; - - fl_dmn = - "a", - "b", - "3" ; - - nbdate = 640312 ; - - mss_val_scl = 1e+36 ; - - pck = 1 ; - - upk = 3 ; - - val_one_int = 1 ; - - val_half = 0.5 ; - - scalar_var = 10 ; - - float_var = 10 ; - - double_var = 10 ; - - double_var2 = 10 ; - - int_var = 10 ; - - short_var = 10 ; - - char_var = "z" ; - - char_var_space = " " ; - - char_var_nul = "" ; - - fl_nm = - "/", - "h", - "o", - "m", - "e", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "n", - "c", - "o", - "/", - "d", - "a", - "t", - "a", - "/", - "i", - "n", - ".", - "c", - "d", - "l", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - fl_nm_arr = - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "1", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "2", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "/", - "d", - "a", - "t", - "a", - "/", - "z", - "e", - "n", - "d", - "e", - "r", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "/", - "d", - "s", - "t", - "c", - "c", - "m", - "0", - "4", - "_", - "8", - "5", - "8", - "9", - "_", - "0", - "3", - ".", - "n", - "c", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" ; - - non_nul_trm_char_one_dmn = - "a", - "b", - "", - "" ; - - non_nul_trm_char_two_dmn = - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "m" ; - - byte_var = 122 ; - - zero = 0 ; - - one = 1 ; - - two = 2 ; - - e_dbl = 2.71828182846 ; - - e_flt = 2.718282 ; - - three = 3 ; - - four = 4 ; - - negative_one = -1 ; - - g = 9.8 ; - - one_dmn_var = 1, 10 ; - - att_var = 10 ; - - bnd_var = - 1, 2, - 3, 4, - 5, 6 ; - - time_udunits = 876012, 876018, 876024 ; - - lat_var = 1, 2 ; - - lat_wgt = 1, 2 ; - - hyam = 0.0802583, 0.0438226, 0 ; - - hybm = 0.0187849, 0.457453, 0.992528 ; - - PS = - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325, - 101325, 101325, 101325, 101325 ; - - date = 640312, 640313, 640314, 640315, 640316, 640317, 640318, 640319, - 640320, 640321 ; - - lon_wgt = 0.347855, 0.652145, 0.652145, 0.347855 ; - - msk_prt_mss_prt = 0.5, 1e+36, 1.5, 1e+36 ; - - mss_val = 73, 1e+36, 73, 1e+36 ; - - mss_val_fst = -999, 73, -999, 73 ; - - fll_val = 73, _, 73, _ ; - - no_mss_val = 73, 1e+36, 73, 1e+36 ; - - val_one_mss = 1, 1e+36 ; - - pck_arr = _, 0, 1, 32767 ; - - upk_arr = -32767, 0, 1, 32767 ; - - val_one_one_int = 1, 1 ; - - val_max_max_sht = 17000, 17000 ; - - val_one_mss_int = 1, -99 ; - - val_half_half = 0.5, 0.5 ; - - wgt_one = 1, 1 ; - - mss_val_all = 1e+36, 1e+36, 1e+36, 1e+36 ; - - char_var_multinul = - "\b", - "\n", - "", - "" ; - - lev_var = 100, 500, 1000 ; - - lev_wgt = 10, 2, 1 ; - - z = 17000, 5000, 0 ; - - rz = 0, 5000, 17000 ; - - three_dmn_var = - 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 ; - - three_dmn_var_crd = - 0, 1, 2, 3, - 12, 13, 14, 15, - 4, 5, 6, 7, - 16, 17, 18, 19, - 8, 9, 10, 11, - 20, 21, 22, 23 ; - - prs_sfc = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - two_dmn_var = - 1.5, 5.5, 9.5, - 13.5, 17.5, 21.5 ; - - mask = - 0, 1, 0, 0, - 1, 1, 0, 2 ; - - ORO = - 1, 1, 1, 1, - 1, 1, 1, 1 ; - - weight = 10, 10 ; - - gw = 10, 10 ; - - gw_T42 = -87.8638, -85.09653, -82.31291, -79.5256, -76.7369, -73.94752, - -71.15775, -68.36776, -65.57761, -62.78735, -59.99702, -57.20663, - -54.4162, -51.62573, -48.83524, -46.04473, -43.2542, -40.46365, - -37.67309, -34.88252, -32.09195, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767146, -6.976534, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976534, 9.767146, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09195, - 34.88252, 37.67309, 40.46365, 43.2542, 46.04473, 48.83524, 51.62573, - 54.4162, 57.20663, 59.99702, 62.78735, 65.57761, 68.36776, 71.15775, - 73.94752, 76.7369, 79.5256, 82.31291, 85.09653, 87.8638 ; - - rec_var_flt = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_dbl = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - one_dmn_rec_var = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - tpt = 273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 273.1 ; - - rec_var_dbl_mss_val_dbl_upk = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_dbl_mss_val_dbl_pck = -999, 32767, 21845, 10922, 0, -10922, -21845, - _, -999, -999 ; - - rec_var_flt_mss_val_flt = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ; - - rec_var_flt_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_dbl_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - rec_var_flt_mss_val_dbl = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ; - - rec_var_flt_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_flt = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_int_mss_val_dbl = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ; - - rec_var_dbl_mss_val_dbl_pck_lng = -999, 32767, 21845, 10922, 0, -10922, - -21845, -32767, -999, -999 ; - - one_dmn_rec_var_sng = - "H", - "e", - "l", - "l", - "o", - " ", - "W", - "o", - "r", - "" ; - - time_lon = - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270 ; - - two_dmn_rec_var_sng = - "a", - "b", - "c", - "b", - "c", - "d", - "c", - "d", - "e", - "d", - "e", - "f", - "e", - "f", - "g", - "f", - "g", - "h", - "g", - "h", - "i", - "h", - "i", - "j", - "j", - "k", - "l", - "k", - "l", - "m" ; - - two_dmn_rec_var = - 1, 2, 3, - 1, 2.1, 3, - 1, 2.2, 3, - 1, 2.3, 3, - 1, 2.4, 3, - 1, 2.5, 3, - 1, 2.6, 3, - 1, 2.7, 3, - 1, 2.8, 3, - 1, 2.9, 3 ; - - three_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80 ; - - three_dmn_var_dbl = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - -99, -99, -99, -99, - -99, -99, -99, -99, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, 76, - 77, 78, 79, -99 ; - - three_dmn_var_int = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - -99, -99, -99, -99, - -99, -99, -99, -99, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, -99, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - -99, 58, 59, 60, - -99, 62, 63, 64, - 65, -99, 67, 68, - 69, 70, 71, 72, - -99, 74, 75, -99, - 77, 78, 79, 80 ; - - three_dmn_var_sht = - 1, 2, 3, 4, - 5, 6, 7, 8, - -99, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - -99, 34, 35, -99, - 37, 38, 39, 40, - 41, 42, 43, 44, - -99, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, -99, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - -99, -99, -99, -99, - -99, -99, -99, -99 ; - - four_dmn_rec_var = - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - 33, 34, 35, 36, - 37, 38, 39, 40, - 41, 42, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 54, 55, 56, - 57, 58, 59, 60, - 61, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 72, - 73, 74, 75, 76, - 77, 78, 79, 80, - 81, 82, 83, 84, - 85, 86, 87, 88, - 89, 90, 91, 92, - 93, 94, 95, 96, - 97, 98, 99, 100, - 101, 102, 103, 104, - 105, 106, 107, 108, - 109, 110, 111, 112, - 113, 114, 115, 116, - 117, 118, 119, 120, - 121, 122, 123, 124, - 125, 126, 127, 128, - 129, 130, 131, 132, - 133, 134, 135, 136, - 137, 138, 139, 140, - 141, 142, 143, 144, - 145, 146, 147, 148, - 149, 150, 151, 152, - 153, 154, 155, 156, - 157, 158, 159, 160, - 161, 162, 163, 164, - 165, 166, 167, 168, - 169, 170, 171, 172, - 173, 174, 175, 176, - 177, 178, 179, 180, - 181, 182, 183, 184, - 185, 186, 187, 188, - 189, 190, 191, 192, - 193, 194, 195, 196, - 197, 198, 199, 200, - 201, 202, 203, 204, - 205, 206, 207, 208, - 209, 210, 211, 212, - 213, 214, 215, 216, - 217, 218, 219, 220, - 221, 222, 223, 224, - 225, 226, 227, 228, - 229, 230, 231, 232, - 233, 234, 235, 236, - 237, 238, 239, 240 ; - - u = 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ; - - v = 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_v.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_v.nc.dmp deleted file mode 100644 index 94a2e639e93..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/in_v.nc.dmp +++ /dev/null @@ -1,18 +0,0 @@ -netcdf in_v { -dimensions: - time = UNLIMITED ; // (10 currently) -variables: - float v(time) ; - v:long_name = "Meridional wind speed" ; - v:units = "meter second-1" ; - -// global attributes: - :Conventions = "NCAR-CSM" ; - :history = "History global attribute.\n", - "" ; - :julian_day = 200000.04 ; - :DODS_EXTRA.Unlimited_Dimension = "time" ; -data: - - v = 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/pbug0001b.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/pbug0001b.dmp deleted file mode 100644 index c187bbb6276..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/pbug0001b.dmp +++ /dev/null @@ -1,303 +0,0 @@ -netcdf pbug0001b { -dimensions: - ISTA = 35 ; - IZ = 44 ; -variables: - int ISTA(ISTA) ; - float IZ(IZ) ; - float \3H(ISTA, IZ) ; - -// global attributes: - :bs5 = "foo\foo\\" ; - :dsp_ing_tiros_ourid = "NO11****C��5>B�\\" ; - :bung = 0.f, 1.f, 2.3f, -2.23456f ; -data: - - ISTA = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, - 63488, 65536, 67584, 69632 ; - - IZ = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, - 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, - 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, - 0.4077604, 0.4168708 ; - - \3H = - 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, - 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, - 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, - 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, - 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, - 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, - 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, - 0.4168708, - 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, - 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, - 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, - 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, - 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, - 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, - 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, - 0.7578425, 0.764329, - 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, - 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, - 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, - 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, - 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, - 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, - 0.9520903, 0.9551008, 0.9580159, 0.960835, 0.9635582, 0.966185, - 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, - 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, - 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, - 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, - 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, - 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, - 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, - 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, - 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, - 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, - 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, - 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, - 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, - 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, 0.8201039, 0.8143409, - 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, - 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, - 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, - 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, - 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, - 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, - 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, - 0.4982616, 0.4895666, - 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, - 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, - 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, - 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, - 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, - 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, - 0.1212933, 0.1113612, 0.101418, 0.09146464, 0.08150215, 0.07153151, - 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, - 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, - -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, - -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, - -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, - -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, - -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, - -0.3319852, -0.3414013, -0.3507832, -0.3601301, - -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, - -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, - -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, - -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, - -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, - -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, - -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, - -0.7162456, -0.7231881, - -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, - -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, - -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, - -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, - -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, - -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, - -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, - -0.9452655, -0.9484812, - -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, - -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, - -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, - -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, - -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, - -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, - -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, - -0.9942155, -0.9930918, - -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, - -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, - -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, - -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, - -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, - -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, - -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, - -0.8537708, -0.8485217, - -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, - -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, - -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, - -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, - -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, - -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, - -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, - -0.5506855, -0.542311, - -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, - -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, - -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, - -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, - -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, - -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, - -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, - -0.1426965, -0.1327919, - -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, - -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, - -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, - 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, - 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, - 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, - 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, - 0.2924757, 0.3020236, - 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, - 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, - 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, - 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, - 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, - 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, - 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, - 0.6793047, - 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, - 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, - 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, - 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, - 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, - 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, - 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, - 0.9271804, - 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, - 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, - 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, - 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, - 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, - 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, - 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, - 0.9984314, - 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, - 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, - 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, - 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, - 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, - 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, - 0.9064404, 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, - 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, - 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, - 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, - 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, - 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, - 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, - 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, 0.601021, 0.5929987, - 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, - 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, - 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, - 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, - 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, - 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, - 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, - 0.2033498, 0.1935487, - 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, - 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, - 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, - 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, - -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, - -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, - -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, - -0.2135644, -0.2233228, -0.2330589, -0.2427717, - -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, - -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, - -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, - -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, - -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, - -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, - -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, - -0.6250706, -0.6328449, - -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, - -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, - -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, - -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, - -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, - -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, - -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, - -0.8980085, -0.9023633, - -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, - -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, - -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, - -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, - -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, - -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, - -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, - -0.9998787, -0.9999844, - -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, - -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, - -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, - -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, - -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, - -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, - -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, - -0.9112754, -0.9071119, - -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, - -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, - -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, - -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, - -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, - -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, - -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, - -0.6490771, -0.6414375, - -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, - -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, - -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, - -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, - -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, - -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, - -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, - -0.2632318, -0.2535715, - -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, - -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, - -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, - -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, - -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, - 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, - 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, - 0.1530258, 0.1629002, 0.1727583, 0.1825991, - 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, - 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, - 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, - 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, - 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, - 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, - 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, - 0.5758385, 0.5839852, - 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, - 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, - 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, - 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, - 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, - 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, - 0.8487566, 0.8540019, 0.8591618, 0.8642358, 0.8692234, 0.8741241, - 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, - 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, - 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, - 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, - 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, - 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, - 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, - 0.9970241, 0.9977452, - 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, - 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, - 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, - 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, - 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, - 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, - 0.9514655, 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, - 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, - 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, - 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, - 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, - 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, - 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, - 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, - 0.6946716, 0.6874437, - 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, - 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, - 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, - 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, - 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, - 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, - 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, - 0.3221155, 0.3126326 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth1.dmp deleted file mode 100644 index fd0dedbb301..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth1.dmp +++ /dev/null @@ -1,10 +0,0 @@ -netcdf synth1 { -dimensions: - S1.v1_0 = 3 ; -variables: - int S1.v1(S1.v1_0) ; - S1.v1:a%201 = 32 ; -data: - - S1.v1 = 132, 232, 332 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth4.dmp deleted file mode 100644 index 382416c61c4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth4.dmp +++ /dev/null @@ -1,45 +0,0 @@ -netcdf synth4 { -dimensions: - S1.v1_0 = 2 ; - S1.v1_1 = 4 ; - S1.v2_0 = 2 ; - S1.v2_1 = 4 ; - S1.v3_0 = 2 ; - S1.v3_1 = 2 ; - S1.v4_0 = 2 ; - S1.v4_1 = 2 ; - S1.v5_0 = 2 ; - S1.v5_1 = 2 ; -variables: - byte S1.v1(S1.v1_0, S1.v1_1) ; - short S1.v2(S1.v2_0, S1.v2_1) ; - S1.v2:a1 = 32 ; - int S1.v3(S1.v3_0, S1.v3_1) ; - float S1.v4(S1.v4_0, S1.v4_1) ; - double S1.v5(S1.v5_0, S1.v5_1) ; - -// global attributes: - :g1 = 3, 8, 16, 32 ; - :s1 = "gvalue1" ; -data: - - S1.v1 = - 97, 98, 99, 100, - 101, 102, 103, 104 ; - - S1.v2 = - 116, 216, 316, 416, - 516, 616, 716, 816 ; - - S1.v3 = - 132, 232, - 332, 432 ; - - S1.v4 = - 1320, 2320, - 3320, 4320 ; - - S1.v5 = - 1640, 2640, - 3640, 4640 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth5.dmp deleted file mode 100644 index 98ec3e46a79..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth5.dmp +++ /dev/null @@ -1,12 +0,0 @@ -netcdf synth5 { -dimensions: - lat = 2 ; - long = 2 ; -variables: - float G1(lat, long) ; -data: - - G1 = - 1320, 2320, - 3320, 4320 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth6.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth6.dmp deleted file mode 100644 index 3f263599d00..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/synth6.dmp +++ /dev/null @@ -1,39 +0,0 @@ -netcdf synth6 { -dimensions: - Q1 = 2 ; - Q1.v2_1 = 4 ; - Q1.v4_1 = 2 ; - S1.v1_0 = 2 ; - S1.v1_1 = 4 ; - S1.v3_0 = 2 ; - S1.v3_1 = 2 ; - S1.v5_0 = 2 ; - S1.v5_1 = 2 ; -variables: - byte S1.v1(S1.v1_0, S1.v1_1) ; - int S1.v3(S1.v3_0, S1.v3_1) ; - double S1.v5(S1.v5_0, S1.v5_1) ; - short Q1.v2(Q1, Q1.v2_1) ; - float Q1.v4(Q1, Q1.v4_1) ; -data: - - S1.v1 = - 97, 98, 99, 100, - 101, 102, 103, 104 ; - - S1.v3 = - 132, 232, - 332, 432 ; - - S1.v5 = - 1640, 2640, - 3640, 4640 ; - - Q1.v2 = - 116, 216, 316, 416, - 516, 616, 716, 816 ; - - Q1.v4 = - 1320, 2320, - 3320, 4320 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.01.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.01.dmp deleted file mode 100644 index a8744060c0e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.01.dmp +++ /dev/null @@ -1,37 +0,0 @@ -netcdf test { -dimensions: - maxStrlen64 = 64 ; -variables: - byte b ; - b:Description = "A test byte" ; - b:units = "unknown" ; - int i32 ; - i32:Description = "A 32 bit test server int" ; - i32:units = "unknown" ; - int ui32 ; - short i16 ; - short ui16 ; - float f32 ; - double f64 ; - char s(maxStrlen64) ; - char u(maxStrlen64) ; -data: - - b = 0 ; - - i32 = 1 ; - - ui32 = 0 ; - - i16 = 0 ; - - ui16 = 0 ; - - f32 = 0 ; - - f64 = 1000 ; - - s = "This is a data test string (pass 0)." ; - - u = "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.21.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.21.dmp deleted file mode 100644 index c0374329d93..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.21.dmp +++ /dev/null @@ -1,39 +0,0 @@ -netcdf test { -dimensions: - exp.f_0 = 2 ; - exp.f_1 = 2 ; - exp.g_0 = 3 ; - exp.g_1 = 3 ; - exp.g_2 = 3 ; -variables: - int exp.j ; - int exp.i ; - short exp.g(exp.g_0, exp.g_1, exp.g_2) ; - short exp.f(exp.f_0, exp.f_1) ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; -data: - - exp.j = 1 ; - - exp.i = 2 ; - - exp.g = - 0, 256, 512, - 768, 1024, 1280, - 1536, 1792, 2048, - 2304, 2560, 2816, - 3072, 3328, 3584, - 3840, 4096, 4352, - 4608, 4864, 5120, - 5376, 5632, 5888, - 6144, 6400, 6656 ; - - exp.f = - 0, 256, - 512, 768 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.nc.dmp deleted file mode 100644 index 464750abeb2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/test.nc.dmp +++ /dev/null @@ -1,1055 +0,0 @@ -netcdf test { -dimensions: - Dr = UNLIMITED ; // (2 currently) - D1 = 1 ; - D2 = 2 ; - D3 = 3 ; - D4 = 4 ; - maxStrlen64 = 64 ; -variables: - char c(maxStrlen64) ; - byte b ; - b:c = "" ; - short s ; - s:b = -128b ; - s:s = -32768s, 32767s ; - int i ; - i:i = -2147483648, 2147483647, -2147483648 ; - i:f = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f ; - i:d = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660. ; - float f ; - double d ; - d:c = "�\177AZ$&" ; - char cr(Dr, maxStrlen64) ; - byte br(Dr) ; - short sr(Dr) ; - int ir(Dr) ; - float fr(Dr) ; - double dr(Dr) ; - char c1(D1, maxStrlen64) ; - byte b1(D1) ; - short s1(D1) ; - int i1(D1) ; - float f1(D1) ; - double d1(D1) ; - char c2(D2, maxStrlen64) ; - byte b2(D2) ; - short s2(D2) ; - int i2(D2) ; - float f2(D2) ; - double d2(D2) ; - char c3(D3, maxStrlen64) ; - byte b3(D3) ; - short s3(D3) ; - int i3(D3) ; - float f3(D3) ; - double d3(D3) ; - char c4(D4, maxStrlen64) ; - byte b4(D4) ; - short s4(D4) ; - int i4(D4) ; - float f4(D4) ; - double d4(D4) ; - char cr1(Dr, D1, maxStrlen64) ; - byte br2(Dr, D2) ; - short sr3(Dr, D3) ; - int ir4(Dr, D4) ; - float f11(D1, D1) ; - double d12(D1, D2) ; - char c13(D1, D3, maxStrlen64) ; - byte b14(D1, D4) ; - short s21(D2, D1) ; - int i22(D2, D2) ; - float f23(D2, D3) ; - double d24(D2, D4) ; - char c31(D3, D1, maxStrlen64) ; - byte b32(D3, D2) ; - short s33(D3, D3) ; - int i34(D3, D4) ; - float f41(D4, D1) ; - double d42(D4, D2) ; - char c43(D4, D3, maxStrlen64) ; - byte b44(D4, D4) ; - short sr11(Dr, D1, D1) ; - int ir12(Dr, D1, D2) ; - float fr13(Dr, D1, D3) ; - double dr14(Dr, D1, D4) ; - char cr21(Dr, D2, D1, maxStrlen64) ; - byte br22(Dr, D2, D2) ; - short sr23(Dr, D2, D3) ; - int ir24(Dr, D2, D4) ; - float fr31(Dr, D3, D1) ; - double dr32(Dr, D3, D2) ; - char cr33(Dr, D3, D3, maxStrlen64) ; - byte br34(Dr, D3, D4) ; - short sr41(Dr, D4, D1) ; - int ir42(Dr, D4, D2) ; - float fr43(Dr, D4, D3) ; - double dr44(Dr, D4, D4) ; - char c111(D1, D1, D1, maxStrlen64) ; - byte b112(D1, D1, D2) ; - short s113(D1, D1, D3) ; - int i114(D1, D1, D4) ; - float f121(D1, D2, D1) ; - double d122(D1, D2, D2) ; - char c123(D1, D2, D3, maxStrlen64) ; - byte b124(D1, D2, D4) ; - short s131(D1, D3, D1) ; - int i132(D1, D3, D2) ; - float f133(D1, D3, D3) ; - double d134(D1, D3, D4) ; - char c141(D1, D4, D1, maxStrlen64) ; - byte b142(D1, D4, D2) ; - short s143(D1, D4, D3) ; - int i144(D1, D4, D4) ; - float f211(D2, D1, D1) ; - double d212(D2, D1, D2) ; - char c213(D2, D1, D3, maxStrlen64) ; - byte b214(D2, D1, D4) ; - short s221(D2, D2, D1) ; - int i222(D2, D2, D2) ; - float f223(D2, D2, D3) ; - double d224(D2, D2, D4) ; - char c231(D2, D3, D1, maxStrlen64) ; - byte b232(D2, D3, D2) ; - short s233(D2, D3, D3) ; - int i234(D2, D3, D4) ; - float f241(D2, D4, D1) ; - double d242(D2, D4, D2) ; - char c243(D2, D4, D3, maxStrlen64) ; - byte b244(D2, D4, D4) ; - short s311(D3, D1, D1) ; - int i312(D3, D1, D2) ; - float f313(D3, D1, D3) ; - double d314(D3, D1, D4) ; - char c321(D3, D2, D1, maxStrlen64) ; - byte b322(D3, D2, D2) ; - short s323(D3, D2, D3) ; - int i324(D3, D2, D4) ; - float f331(D3, D3, D1) ; - double d332(D3, D3, D2) ; - char c333(D3, D3, D3, maxStrlen64) ; - byte b334(D3, D3, D4) ; - short s341(D3, D4, D1) ; - int i342(D3, D4, D2) ; - float f343(D3, D4, D3) ; - double d344(D3, D4, D4) ; - char c411(D4, D1, D1, maxStrlen64) ; - byte b412(D4, D1, D2) ; - short s413(D4, D1, D3) ; - int i414(D4, D1, D4) ; - float f421(D4, D2, D1) ; - double d422(D4, D2, D2) ; - char c423(D4, D2, D3, maxStrlen64) ; - byte b424(D4, D2, D4) ; - short s431(D4, D3, D1) ; - int i432(D4, D3, D2) ; - float f433(D4, D3, D3) ; - double d434(D4, D3, D4) ; - char c441(D4, D4, D1, maxStrlen64) ; - byte b442(D4, D4, D2) ; - short s443(D4, D4, D3) ; - int i444(D4, D4, D4) ; - -// global attributes: - :Gc = "�" ; - :Gb = -128b, 127b ; - :Gs = -32768s, 32767s, 32767s ; - :Gi = -2147483648, 2147483647, -2147483648, 2147483647 ; - :Gf = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f, 531.f ; - :Gd = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660., 650. ; - :DODS_EXTRA.Unlimited_Dimension = "Dr" ; -data: - - c = "\002" ; - - b = -2 ; - - s = -5 ; - - i = -20 ; - - f = -9 ; - - d = -10 ; - - cr = - "\200", - "\177" ; - - br = -128, 127 ; - - sr = -32768, 32767 ; - - ir = -2147483648, 2147483647 ; - - fr = -3.402823e+38, 3.402823e+38 ; - - dr = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c1 = - "\200" ; - - b1 = -128 ; - - s1 = -32768 ; - - i1 = -2147483648 ; - - f1 = -3.402823e+38 ; - - d1 = -1.79769313486232e+308 ; - - c2 = - "\200", - "\177" ; - - b2 = -128, 127 ; - - s2 = -32768, 32767 ; - - i2 = -2147483648, 2147483647 ; - - f2 = -3.402823e+38, 3.402823e+38 ; - - d2 = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c3 = - "\200", - "\177", - "A" ; - - b3 = -128, 127, 127 ; - - s3 = -32768, 32767, 32767 ; - - i3 = -2147483648, 2147483647, -2147483648 ; - - f3 = -3.402823e+38, 3.402823e+38, -3.402823e+38 ; - - d3 = -1.79769313486232e+308, 1.79769313486232e+308, -1 ; - - c4 = - "\200", - "\177", - "A", - "Z" ; - - b4 = -128, 127, 127, -128 ; - - s4 = -32768, 32767, 32767, -32768 ; - - i4 = -2147483648, 2147483647, -2147483648, 2147483647 ; - - f4 = -3.402823e+38, 3.402823e+38, -3.402823e+38, 3.402823e+38 ; - - d4 = -1.79769313486232e+308, 1.79769313486232e+308, -1, 1 ; - - cr1 = - "\030", - "\034" ; - - br2 = - -24, -26, - -20, -22 ; - - sr3 = - -375, -380, -385, - -350, -355, -360 ; - - ir4 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660 ; - - f11 = - -2187 ; - - d12 = - -3000, -3010 ; - - c13 = - "\030", - "\032", - "\034" ; - - b14 = - -24, -26, -28, -30 ; - - s21 = - -375, - -350 ; - - i22 = - -24000, -24020, - -23600, -23620 ; - - f23 = - -2187, -2196, -2205, - -2106, -2115, -2124 ; - - d24 = - -3000, -3010, -3020, -3030, - -2900, -2910, -2920, -2930 ; - - c31 = - "\030", - "\034", - " " ; - - b32 = - -24, -26, - -20, -22, - -16, -18 ; - - s33 = - -375, -380, -385, - -350, -355, -360, - -325, -330, -335 ; - - i34 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660, - -23200, -23220, -23240, -23260 ; - - f41 = - -2187, - -2106, - -2025, - -1944 ; - - d42 = - -3000, -3010, - -2900, -2910, - -2800, -2810, - -2700, -2710 ; - - c43 = - "\030", - "\032", - "\034", - "\034", - "\036", - " ", - " ", - "\"", - "$", - "$", - "&", - "(" ; - - b44 = - -24, -26, -28, -30, - -20, -22, -24, -26, - -16, -18, -20, -22, - -12, -14, -16, -18 ; - - sr11 = - 2500, - 2375 ; - - ir12 = - 640000, 639980, - 632000, 631980 ; - - fr13 = - 26244, 26235, 26226, - 25515, 25506, 25497 ; - - dr14 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970 ; - - cr21 = - "@", - "D", - "H", - "L" ; - - br22 = - 64, 62, - 68, 66, - 56, 54, - 60, 58 ; - - sr23 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390 ; - - ir24 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340 ; - - fr31 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677 ; - - dr32 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190 ; - - cr33 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T" ; - - br34 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58 ; - - sr41 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450 ; - - ir42 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180 ; - - fr43 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740 ; - - dr44 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270 ; - - c111 = - "@" ; - - b112 = - 64, 62 ; - - s113 = - 2500, 2495, 2490 ; - - i114 = - 640000, 639980, 639960, 639940 ; - - f121 = - 26244, - 26325 ; - - d122 = - 40000, 39990, - 40100, 40090 ; - - c123 = - "@", - "B", - "D", - "D", - "F", - "H" ; - - b124 = - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s131 = - 2500, - 2525, - 2550 ; - - i132 = - 640000, 639980, - 640400, 640380, - 640800, 640780 ; - - f133 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388 ; - - d134 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170 ; - - c141 = - "@", - "D", - "H", - "L" ; - - b142 = - 64, 62, - 68, 66, - 72, 70, - 76, 74 ; - - s143 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565 ; - - i144 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140 ; - - f211 = - 26244, - 25515 ; - - d212 = - 40000, 39990, - 39000, 38990 ; - - c213 = - "@", - "B", - "D", - "H", - "J", - "L" ; - - b214 = - 64, 62, 60, 58, - 56, 54, 52, 50 ; - - s221 = - 2500, - 2525, - 2375, - 2400 ; - - i222 = - 640000, 639980, - 640400, 640380, - 632000, 631980, - 632400, 632380 ; - - f223 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 25515, 25506, 25497, - 25596, 25587, 25578 ; - - d224 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070 ; - - c231 = - "@", - "D", - "H", - "H", - "L", - "P" ; - - b232 = - 64, 62, - 68, 66, - 72, 70, - 56, 54, - 60, 58, - 64, 62 ; - - s233 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415 ; - - i234 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740 ; - - f241 = - 26244, - 26325, - 26406, - 26487, - 25515, - 25596, - 25677, - 25758 ; - - d242 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 40300, 40290, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 39300, 39290 ; - - c243 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "L", - "N", - "P", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "T", - "V", - "X" ; - - b244 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 76, 74, 72, 70, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s311 = - 2500, - 2375, - 2250 ; - - i312 = - 640000, 639980, - 632000, 631980, - 624000, 623980 ; - - f313 = - 26244, 26235, 26226, - 25515, 25506, 25497, - 24786, 24777, 24768 ; - - d314 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970, - 38000, 37990, 37980, 37970 ; - - c321 = - "@", - "D", - "H", - "L", - "P", - "T" ; - - b322 = - 64, 62, - 68, 66, - 56, 54, - 60, 58, - 48, 46, - 52, 50 ; - - s323 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2250, 2245, 2240, - 2275, 2270, 2265 ; - - i324 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340 ; - - f331 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677, - 24786, - 24867, - 24948 ; - - d332 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 38000, 37990, - 38100, 38090, - 38200, 38190 ; - - c333 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "P", - "R", - "T", - "T", - "V", - "X", - "X", - "Z", - "\\" ; - - b334 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 48, 46, 44, 42, - 52, 50, 48, 46, - 56, 54, 52, 50 ; - - s341 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450, - 2250, - 2275, - 2300, - 2325 ; - - i342 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 625200, 625180 ; - - f343 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 25029, 25020, 25011 ; - - d344 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 38300, 38290, 38280, 38270 ; - - c411 = - "@", - "H", - "P", - "X" ; - - b412 = - 64, 62, - 56, 54, - 48, 46, - 40, 38 ; - - s413 = - 2500, 2495, 2490, - 2375, 2370, 2365, - 2250, 2245, 2240, - 2125, 2120, 2115 ; - - i414 = - 640000, 639980, 639960, 639940, - 632000, 631980, 631960, 631940, - 624000, 623980, 623960, 623940, - 616000, 615980, 615960, 615940 ; - - f421 = - 26244, - 26325, - 25515, - 25596, - 24786, - 24867, - 24057, - 24138 ; - - d422 = - 40000, 39990, - 40100, 40090, - 39000, 38990, - 39100, 39090, - 38000, 37990, - 38100, 38090, - 37000, 36990, - 37100, 37090 ; - - c423 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "T", - "V", - "X", - "X", - "Z", - "\\", - "\\", - "^", - "`" ; - - b424 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 56, 54, 52, 50, - 60, 58, 56, 54, - 48, 46, 44, 42, - 52, 50, 48, 46, - 40, 38, 36, 34, - 44, 42, 40, 38 ; - - s431 = - 2500, - 2525, - 2550, - 2375, - 2400, - 2425, - 2250, - 2275, - 2300, - 2125, - 2150, - 2175 ; - - i432 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 616000, 615980, - 616400, 616380, - 616800, 616780 ; - - f433 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 24057, 24048, 24039, - 24138, 24129, 24120, - 24219, 24210, 24201 ; - - d434 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 37000, 36990, 36980, 36970, - 37100, 37090, 37080, 37070, - 37200, 37190, 37180, 37170 ; - - c441 = - "@", - "D", - "H", - "L", - "H", - "L", - "P", - "T", - "P", - "T", - "X", - "\\", - "X", - "\\", - "`", - "d" ; - - b442 = - 64, 62, - 68, 66, - 72, 70, - 76, 74, - 56, 54, - 60, 58, - 64, 62, - 68, 66, - 48, 46, - 52, 50, - 56, 54, - 60, 58, - 40, 38, - 44, 42, - 48, 46, - 52, 50 ; - - s443 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415, - 2450, 2445, 2440, - 2250, 2245, 2240, - 2275, 2270, 2265, - 2300, 2295, 2290, - 2325, 2320, 2315, - 2125, 2120, 2115, - 2150, 2145, 2140, - 2175, 2170, 2165, - 2200, 2195, 2190 ; - - i444 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740, - 633200, 633180, 633160, 633140, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340, - 624800, 624780, 624760, 624740, - 625200, 625180, 625160, 625140, - 616000, 615980, 615960, 615940, - 616400, 616380, 616360, 616340, - 616800, 616780, 616760, 616740, - 617200, 617180, 617160, 617140 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/text.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected3/text.nc.dmp deleted file mode 100644 index cdc0ed2f2f3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected3/text.nc.dmp +++ /dev/null @@ -1,1055 +0,0 @@ -netcdf text { -dimensions: - Dr = UNLIMITED ; // (2 currently) - D1 = 1 ; - D2 = 2 ; - D3 = 3 ; - D4 = 4 ; - maxStrlen64 = 64 ; -variables: - char c(maxStrlen64) ; - byte b ; - b:c = "" ; - short s ; - s:b = -128b ; - s:s = -32768s, 32767s ; - int i ; - i:i = -2147483648, 2147483647, -2147483648 ; - i:f = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f ; - i:d = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660. ; - float f ; - double d ; - d:c = "�\177AZ$&" ; - char cr(Dr, maxStrlen64) ; - byte br(Dr) ; - short sr(Dr) ; - int ir(Dr) ; - float fr(Dr) ; - double dr(Dr) ; - char c1(D1, maxStrlen64) ; - byte b1(D1) ; - short s1(D1) ; - int i1(D1) ; - float f1(D1) ; - double d1(D1) ; - char c2(D2, maxStrlen64) ; - byte b2(D2) ; - short s2(D2) ; - int i2(D2) ; - float f2(D2) ; - double d2(D2) ; - char c3(D3, maxStrlen64) ; - byte b3(D3) ; - short s3(D3) ; - int i3(D3) ; - float f3(D3) ; - double d3(D3) ; - char c4(D4, maxStrlen64) ; - byte b4(D4) ; - short s4(D4) ; - int i4(D4) ; - float f4(D4) ; - double d4(D4) ; - char cr1(Dr, D1, maxStrlen64) ; - byte br2(Dr, D2) ; - short sr3(Dr, D3) ; - int ir4(Dr, D4) ; - float f11(D1, D1) ; - double d12(D1, D2) ; - char c13(D1, D3, maxStrlen64) ; - byte b14(D1, D4) ; - short s21(D2, D1) ; - int i22(D2, D2) ; - float f23(D2, D3) ; - double d24(D2, D4) ; - char c31(D3, D1, maxStrlen64) ; - byte b32(D3, D2) ; - short s33(D3, D3) ; - int i34(D3, D4) ; - float f41(D4, D1) ; - double d42(D4, D2) ; - char c43(D4, D3, maxStrlen64) ; - byte b44(D4, D4) ; - short sr11(Dr, D1, D1) ; - int ir12(Dr, D1, D2) ; - float fr13(Dr, D1, D3) ; - double dr14(Dr, D1, D4) ; - char cr21(Dr, D2, D1, maxStrlen64) ; - byte br22(Dr, D2, D2) ; - short sr23(Dr, D2, D3) ; - int ir24(Dr, D2, D4) ; - float fr31(Dr, D3, D1) ; - double dr32(Dr, D3, D2) ; - char cr33(Dr, D3, D3, maxStrlen64) ; - byte br34(Dr, D3, D4) ; - short sr41(Dr, D4, D1) ; - int ir42(Dr, D4, D2) ; - float fr43(Dr, D4, D3) ; - double dr44(Dr, D4, D4) ; - char c111(D1, D1, D1, maxStrlen64) ; - byte b112(D1, D1, D2) ; - short s113(D1, D1, D3) ; - int i114(D1, D1, D4) ; - float f121(D1, D2, D1) ; - double d122(D1, D2, D2) ; - char c123(D1, D2, D3, maxStrlen64) ; - byte b124(D1, D2, D4) ; - short s131(D1, D3, D1) ; - int i132(D1, D3, D2) ; - float f133(D1, D3, D3) ; - double d134(D1, D3, D4) ; - char c141(D1, D4, D1, maxStrlen64) ; - byte b142(D1, D4, D2) ; - short s143(D1, D4, D3) ; - int i144(D1, D4, D4) ; - float f211(D2, D1, D1) ; - double d212(D2, D1, D2) ; - char c213(D2, D1, D3, maxStrlen64) ; - byte b214(D2, D1, D4) ; - short s221(D2, D2, D1) ; - int i222(D2, D2, D2) ; - float f223(D2, D2, D3) ; - double d224(D2, D2, D4) ; - char c231(D2, D3, D1, maxStrlen64) ; - byte b232(D2, D3, D2) ; - short s233(D2, D3, D3) ; - int i234(D2, D3, D4) ; - float f241(D2, D4, D1) ; - double d242(D2, D4, D2) ; - char c243(D2, D4, D3, maxStrlen64) ; - byte b244(D2, D4, D4) ; - short s311(D3, D1, D1) ; - int i312(D3, D1, D2) ; - float f313(D3, D1, D3) ; - double d314(D3, D1, D4) ; - char c321(D3, D2, D1, maxStrlen64) ; - byte b322(D3, D2, D2) ; - short s323(D3, D2, D3) ; - int i324(D3, D2, D4) ; - float f331(D3, D3, D1) ; - double d332(D3, D3, D2) ; - char c333(D3, D3, D3, maxStrlen64) ; - byte b334(D3, D3, D4) ; - short s341(D3, D4, D1) ; - int i342(D3, D4, D2) ; - float f343(D3, D4, D3) ; - double d344(D3, D4, D4) ; - char c411(D4, D1, D1, maxStrlen64) ; - byte b412(D4, D1, D2) ; - short s413(D4, D1, D3) ; - int i414(D4, D1, D4) ; - float f421(D4, D2, D1) ; - double d422(D4, D2, D2) ; - char c423(D4, D2, D3, maxStrlen64) ; - byte b424(D4, D2, D4) ; - short s431(D4, D3, D1) ; - int i432(D4, D3, D2) ; - float f433(D4, D3, D3) ; - double d434(D4, D3, D4) ; - char c441(D4, D4, D1, maxStrlen64) ; - byte b442(D4, D4, D2) ; - short s443(D4, D4, D3) ; - int i444(D4, D4, D4) ; - -// global attributes: - :Gc = "�" ; - :Gb = -128b, 127b ; - :Gs = -32768s, 32767s, 32767s ; - :Gi = -2147483648, 2147483647, -2147483648, 2147483647 ; - :Gf = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f, 531.f ; - :Gd = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660., 650. ; - :DODS_EXTRA.Unlimited_Dimension = "Dr" ; -data: - - c = "\002" ; - - b = -2 ; - - s = -5 ; - - i = -20 ; - - f = -9 ; - - d = -10 ; - - cr = - "\200", - "\177" ; - - br = -128, 127 ; - - sr = -32768, 32767 ; - - ir = -2147483648, 2147483647 ; - - fr = -3.402823e+38, 3.402823e+38 ; - - dr = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c1 = - "\200" ; - - b1 = -128 ; - - s1 = -32768 ; - - i1 = -2147483648 ; - - f1 = -3.402823e+38 ; - - d1 = -1.79769313486232e+308 ; - - c2 = - "\200", - "\177" ; - - b2 = -128, 127 ; - - s2 = -32768, 32767 ; - - i2 = -2147483648, 2147483647 ; - - f2 = -3.402823e+38, 3.402823e+38 ; - - d2 = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c3 = - "\200", - "\177", - "A" ; - - b3 = -128, 127, 127 ; - - s3 = -32768, 32767, 32767 ; - - i3 = -2147483648, 2147483647, -2147483648 ; - - f3 = -3.402823e+38, 3.402823e+38, -3.402823e+38 ; - - d3 = -1.79769313486232e+308, 1.79769313486232e+308, -1 ; - - c4 = - "\200", - "\177", - "A", - "Z" ; - - b4 = -128, 127, 127, -128 ; - - s4 = -32768, 32767, 32767, -32768 ; - - i4 = -2147483648, 2147483647, -2147483648, 2147483647 ; - - f4 = -3.402823e+38, 3.402823e+38, -3.402823e+38, 3.402823e+38 ; - - d4 = -1.79769313486232e+308, 1.79769313486232e+308, -1, 1 ; - - cr1 = - "\030", - "\034" ; - - br2 = - -24, -26, - -20, -22 ; - - sr3 = - -375, -380, -385, - -350, -355, -360 ; - - ir4 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660 ; - - f11 = - -2187 ; - - d12 = - -3000, -3010 ; - - c13 = - "\030", - "\032", - "\034" ; - - b14 = - -24, -26, -28, -30 ; - - s21 = - -375, - -350 ; - - i22 = - -24000, -24020, - -23600, -23620 ; - - f23 = - -2187, -2196, -2205, - -2106, -2115, -2124 ; - - d24 = - -3000, -3010, -3020, -3030, - -2900, -2910, -2920, -2930 ; - - c31 = - "\030", - "\034", - " " ; - - b32 = - -24, -26, - -20, -22, - -16, -18 ; - - s33 = - -375, -380, -385, - -350, -355, -360, - -325, -330, -335 ; - - i34 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660, - -23200, -23220, -23240, -23260 ; - - f41 = - -2187, - -2106, - -2025, - -1944 ; - - d42 = - -3000, -3010, - -2900, -2910, - -2800, -2810, - -2700, -2710 ; - - c43 = - "\030", - "\032", - "\034", - "\034", - "\036", - " ", - " ", - "\"", - "$", - "$", - "&", - "(" ; - - b44 = - -24, -26, -28, -30, - -20, -22, -24, -26, - -16, -18, -20, -22, - -12, -14, -16, -18 ; - - sr11 = - 2500, - 2375 ; - - ir12 = - 640000, 639980, - 632000, 631980 ; - - fr13 = - 26244, 26235, 26226, - 25515, 25506, 25497 ; - - dr14 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970 ; - - cr21 = - "@", - "D", - "H", - "L" ; - - br22 = - 64, 62, - 68, 66, - 56, 54, - 60, 58 ; - - sr23 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390 ; - - ir24 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340 ; - - fr31 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677 ; - - dr32 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190 ; - - cr33 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T" ; - - br34 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58 ; - - sr41 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450 ; - - ir42 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180 ; - - fr43 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740 ; - - dr44 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270 ; - - c111 = - "@" ; - - b112 = - 64, 62 ; - - s113 = - 2500, 2495, 2490 ; - - i114 = - 640000, 639980, 639960, 639940 ; - - f121 = - 26244, - 26325 ; - - d122 = - 40000, 39990, - 40100, 40090 ; - - c123 = - "@", - "B", - "D", - "D", - "F", - "H" ; - - b124 = - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s131 = - 2500, - 2525, - 2550 ; - - i132 = - 640000, 639980, - 640400, 640380, - 640800, 640780 ; - - f133 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388 ; - - d134 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170 ; - - c141 = - "@", - "D", - "H", - "L" ; - - b142 = - 64, 62, - 68, 66, - 72, 70, - 76, 74 ; - - s143 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565 ; - - i144 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140 ; - - f211 = - 26244, - 25515 ; - - d212 = - 40000, 39990, - 39000, 38990 ; - - c213 = - "@", - "B", - "D", - "H", - "J", - "L" ; - - b214 = - 64, 62, 60, 58, - 56, 54, 52, 50 ; - - s221 = - 2500, - 2525, - 2375, - 2400 ; - - i222 = - 640000, 639980, - 640400, 640380, - 632000, 631980, - 632400, 632380 ; - - f223 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 25515, 25506, 25497, - 25596, 25587, 25578 ; - - d224 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070 ; - - c231 = - "@", - "D", - "H", - "H", - "L", - "P" ; - - b232 = - 64, 62, - 68, 66, - 72, 70, - 56, 54, - 60, 58, - 64, 62 ; - - s233 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415 ; - - i234 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740 ; - - f241 = - 26244, - 26325, - 26406, - 26487, - 25515, - 25596, - 25677, - 25758 ; - - d242 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 40300, 40290, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 39300, 39290 ; - - c243 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "L", - "N", - "P", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "T", - "V", - "X" ; - - b244 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 76, 74, 72, 70, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s311 = - 2500, - 2375, - 2250 ; - - i312 = - 640000, 639980, - 632000, 631980, - 624000, 623980 ; - - f313 = - 26244, 26235, 26226, - 25515, 25506, 25497, - 24786, 24777, 24768 ; - - d314 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970, - 38000, 37990, 37980, 37970 ; - - c321 = - "@", - "D", - "H", - "L", - "P", - "T" ; - - b322 = - 64, 62, - 68, 66, - 56, 54, - 60, 58, - 48, 46, - 52, 50 ; - - s323 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2250, 2245, 2240, - 2275, 2270, 2265 ; - - i324 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340 ; - - f331 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677, - 24786, - 24867, - 24948 ; - - d332 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 38000, 37990, - 38100, 38090, - 38200, 38190 ; - - c333 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "P", - "R", - "T", - "T", - "V", - "X", - "X", - "Z", - "\\" ; - - b334 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 48, 46, 44, 42, - 52, 50, 48, 46, - 56, 54, 52, 50 ; - - s341 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450, - 2250, - 2275, - 2300, - 2325 ; - - i342 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 625200, 625180 ; - - f343 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 25029, 25020, 25011 ; - - d344 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 38300, 38290, 38280, 38270 ; - - c411 = - "@", - "H", - "P", - "X" ; - - b412 = - 64, 62, - 56, 54, - 48, 46, - 40, 38 ; - - s413 = - 2500, 2495, 2490, - 2375, 2370, 2365, - 2250, 2245, 2240, - 2125, 2120, 2115 ; - - i414 = - 640000, 639980, 639960, 639940, - 632000, 631980, 631960, 631940, - 624000, 623980, 623960, 623940, - 616000, 615980, 615960, 615940 ; - - f421 = - 26244, - 26325, - 25515, - 25596, - 24786, - 24867, - 24057, - 24138 ; - - d422 = - 40000, 39990, - 40100, 40090, - 39000, 38990, - 39100, 39090, - 38000, 37990, - 38100, 38090, - 37000, 36990, - 37100, 37090 ; - - c423 = - "@", - "B", - "D", - "D", - "F", - "H", - "H", - "J", - "L", - "L", - "N", - "P", - "P", - "R", - "T", - "T", - "V", - "X", - "X", - "Z", - "\\", - "\\", - "^", - "`" ; - - b424 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 56, 54, 52, 50, - 60, 58, 56, 54, - 48, 46, 44, 42, - 52, 50, 48, 46, - 40, 38, 36, 34, - 44, 42, 40, 38 ; - - s431 = - 2500, - 2525, - 2550, - 2375, - 2400, - 2425, - 2250, - 2275, - 2300, - 2125, - 2150, - 2175 ; - - i432 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 616000, 615980, - 616400, 616380, - 616800, 616780 ; - - f433 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 24057, 24048, 24039, - 24138, 24129, 24120, - 24219, 24210, 24201 ; - - d434 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 37000, 36990, 36980, 36970, - 37100, 37090, 37080, 37070, - 37200, 37190, 37180, 37170 ; - - c441 = - "@", - "D", - "H", - "L", - "H", - "L", - "P", - "T", - "P", - "T", - "X", - "\\", - "X", - "\\", - "`", - "d" ; - - b442 = - 64, 62, - 68, 66, - 72, 70, - 76, 74, - 56, 54, - 60, 58, - 64, 62, - 68, 66, - 48, 46, - 52, 50, - 56, 54, - 60, 58, - 40, 38, - 44, 42, - 48, 46, - 52, 50 ; - - s443 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415, - 2450, 2445, 2440, - 2250, 2245, 2240, - 2275, 2270, 2265, - 2300, 2295, 2290, - 2325, 2320, 2315, - 2125, 2120, 2115, - 2150, 2145, 2140, - 2175, 2170, 2165, - 2200, 2195, 2190 ; - - i444 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740, - 633200, 633180, 633160, 633140, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340, - 624800, 624780, 624760, 624740, - 625200, 625180, 625160, 625140, - 616000, 615980, 615960, 615940, - 616400, 616380, 616360, 616340, - 616800, 616780, 616760, 616740, - 617200, 617180, 617160, 617140 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123.nc.dmp deleted file mode 100644 index d51553fad79..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123.nc.dmp +++ /dev/null @@ -1,53 +0,0 @@ -netcdf \123 { -types: - compound bears_t { - string bears(2, 3) ; - int i(2) ; - float j(3) ; - }; // bears_t - compound order_t { - short order(2, 3) ; - int i(2) ; - float j(3) ; - }; // order_t - compound shot_t { - int shot(2, 3) ; - int i(2) ; - float j(3) ; - }; // shot_t - compound aloan_t { - float aloan(2, 3) ; - int i(2) ; - float j(3) ; - }; // aloan_t - compound cross_t { - double cross(2, 3) ; - int i(2) ; - float j(3) ; - }; // cross_t -dimensions: - l = 3 ; -variables: - bears_t bears ; - order_t order ; - shot_t shot ; - aloan_t aloan ; - cross_t cross ; - short l(l) ; - -// global attributes: - string :history = "This is an example of a multi-line global\\012attribute. It could be used for representing the\\012processing history of the data, for example." ; -data: - - bears = {{"ind", "ist", "ing", "uis", "hab", "le"}, {10, 20}, {2, 4, 6}} ; - - order = {{1, 2, 3, 4, 5, 6}, {10, 20}, {2, 4, 6}} ; - - shot = {{2, 3, 4, 5, 6, 7}, {10, 20}, {2, 4, 6}} ; - - aloan = {{3, 4, 5, 6, 7, 1e+12}, {10, 20}, {2, 4, 6}} ; - - cross = {{4, 5, 0.000244140625, 7, 8, 10000000000}, {10, 20}, {2, 4, 6}} ; - - l = 10, 9, 8 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123bears.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123bears.nc.dmp deleted file mode 100644 index 7b2a97a064a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/123bears.nc.dmp +++ /dev/null @@ -1,53 +0,0 @@ -netcdf \123bears { -types: - compound bears_t { - string bears(2, 3) ; - int i(2) ; - float j(3) ; - }; // bears_t - compound order_t { - short order(2, 3) ; - int i(2) ; - float j(3) ; - }; // order_t - compound shot_t { - int shot(2, 3) ; - int i(2) ; - float j(3) ; - }; // shot_t - compound aloan_t { - float aloan(2, 3) ; - int i(2) ; - float j(3) ; - }; // aloan_t - compound cross_t { - double cross(2, 3) ; - int i(2) ; - float j(3) ; - }; // cross_t -dimensions: - l = 3 ; -variables: - bears_t bears ; - order_t order ; - shot_t shot ; - aloan_t aloan ; - cross_t cross ; - short l(l) ; - -// global attributes: - string :history = "This is an example of a multi-line global\\012attribute. It could be used for representing the\\012processing history of the data, for example." ; -data: - - bears = {{"ind", "ist", "ing", "uis", "hab", "le"}, {10, 20}, {2, 4, 6}} ; - - order = {{1, 2, 3, 4, 5, 6}, {10, 20}, {2, 4, 6}} ; - - shot = {{2, 3, 4, 5, 6, 7}, {10, 20}, {2, 4, 6}} ; - - aloan = {{3, 4, 5, 6, 7, 1e+12}, {10, 20}, {2, 4, 6}} ; - - cross = {{4, 5, 0.000244140625, 7, 8, 10000000000}, {10, 20}, {2, 4, 6}} ; - - l = 10, 9, 8 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1990-S1700101.HDF.WVC_Lat.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1990-S1700101.HDF.WVC_Lat.dmp deleted file mode 100644 index 596c57fb265..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1990-S1700101.HDF.WVC_Lat.dmp +++ /dev/null @@ -1,37 +0,0 @@ -netcdf \1990-S1700101.HDF { -types: - compound NSCAT%20Rev%2017_t { - short WVC_Lat(558, 24) ; - }; // NSCAT%20Rev%2017_t -variables: - NSCAT%20Rev%2017_t NSCAT%20Rev%2017 ; - -// global attributes: - string :Producer_Agency = "NASA\\000" ; - string :Producer_Institution = "JPL\\000" ; - string :Sensor_Name = "NSCAT\\000" ; - string :Project_ID = "NSCAT\\000" ; - string :SIS_ID = "697-512-23/1994-08-29\\000" ; - string :Build_ID = "SciSim 3.0\\000" ; - string :ADEOS_Data_Package_ID = "SIMULATED DATA PRODUCT TEST\\000" ; - string :ADEOS_Data_Package_Type = "S\\000" ; - string :Product_Creation_Time = "1995-278T23:30:04.000\\000" ; - string :Data_Type = "L17\\000" ; - string :Data_Status = "COMPLETE\\000" ; - :First_Rev_Number = 101 ; - string :First_Rev_Eq_Crossing_Time = "1996-215T01:31:07.223\\000" ; - :First_Rev_Eq_Crossing_Lon = 54.952f ; - string :First_Data_Time = "1996-215T01:13:28.456\\000" ; - string :Last_Data_Time = "1996-215T02:40:22.631\\000" ; - :Num_Expected_Output_Records = 558 ; - :Num_Actual_Output_Records = 558 ; - string :HDF_Build_ID = "JPL D-xxxxx 12/15/94\\000" ; - string :HDF_SIS_ID = "JPL D-12059 12/15/94\\000" ; - string :HDF_Conversion_Organization = "JPL PO.DAAC\\000" ; - string :HDF_Conversion_Time = "1996-047T11:13:05 " ; - string :Data_Format_Type = "HDF\\000" ; -data: - - NSCAT%20Rev%2017 = - {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5831, -5813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5794, -5774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5791, -5772, -5755, -5733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5773, -5753, -5734, -5714, -5697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5837, -5821, -5805, -5790, -5772, -5754, -5732, -5713, -5694, -5676, -5657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5811, -5796, -5780, -5764, -5749, -5731, -5714, -5692, -5673, -5652, -5635, -5618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5770, -5755, -5739, -5722, -5708, -5692, -5673, -5652, -5635, -5614, -5594, -5580, 0, 0, 0, 0, -5891, -5887, 0, 0, 0, 0, 0, -5837, -5727, -5713, -5698, -5681, -5667, -5649, -5634, -5612, -5593, -5577, -5557, -5538, -5873, -5869, -5863, -5855, -5847, -5843, -5835, -5827, -5821, -5812, -5802, -5793, -5688, -5671, -5656, -5640, -5626, -5610, -5593, -5571, -5554, -5536, -5516, -5501, -5830, -5825, -5820, -5812, -5803, -5799, -5792, -5783, -5777, -5768, -5758, -5750, -5645, -5630, -5615, -5599, -5585, -5568, -5551, -5530, -5513, -5496, -5476, -5459, -5785, -5781, -5776, -5771, -5759, -5756, -5748, -5740, -5734, -5725, -5717, -5707, -5602, -5588, -5573, -5557, -5544, -5527, -5510, -5490, -5470, -5454, -5438, -5419, -5740, -5737, -5733, -5727, -5716, -5711, -5704, -5696, -5690, -5681, -5674, -5664, -5561, -5546, -5531, -5514, -5503, -5487, -5466, -5449, -5434, -5416, -5398, -5381, -5698, -5693, -5688, -5683, -5673, -5667, -5660, -5653, -5647, -5638, -5631, -5621, -5519, -5504, -5490, -5474, -5461, -5445, -5430, -5409, -5393, -5375, -5359, -5341, -5653, -5650, -5644, -5639, -5629, -5624, -5616, -5609, -5603, -5594, -5588, -5577, -5476, -5462, -5447, -5432, -5419, -5403, -5389, -5368, -5354, -5335, -5316, -5302, -5610, -5605, -5601, -5594, -5589, -5580, -5573, -5566, -5559, -5551, -5544, -5534, -5435, -5420, -5405, -5390, -5378, -5362, -5348, -5327, -5312, -5295, -5276, -5261, -5565, -5561, -5556, -5551, -5546, -5536, -5529, -5524, -5516, -5507, -5501, -5491, -5394, -5377, -5364, -5349, -5336, -5321, -5307, -5285, -5270, -5254, -5238, -5221, -5520, -5517, -5512, -5507, -5501, -5492, -5485, -5480, -5472, -5463, -5457, -5447, -5351, -5336, -5322, -5307, -5293, -5280, -5265, -5243, -5229, -5211, -5198, -5180, -5477, -5473, -5469, -5463, -5457, -5448, -5441, -5436, -5428, -5420, -5413, -5404, 0, -5293, -5279, -5265, -5253, -5238, -5223, -5203, -5189, -5172, -5155, -5139, -5433, -5429, -5424, -5419, -5413, -5404, -5398, -5393, -5384, -5376, -5370, -5360, -5268, -5251, -5238, -5225, -5211, -5196, -5181, -5161, -5148, -5131, -5115, -5099, -5390, -5384, -5380, -5375, -5371, -5360, -5354, -5349, -5341, -5332, -5326, -5317, -5227, -5209, -5195, -5184, -5169, -5154, -5141, -5121, -5105, -5091, -5076, -5057, -5345, -5341, -5336, -5331, -5328, -5317, -5311, -5305, -5297, -5290, -5282, -5273, -5184, -5166, -5153, -5140, -5127, -5113, -5100, -5080, -5066, -5049, -5035, -5016, -5301, -5297, -5292, -5288, -5284, -5274, -5267, -5261, -5253, -5248, -5239, -5230, -5142, -5124, -5111, -5098, -5085, -5071, -5058, -5038, -5025, -5008, -4993, -4978, -5256, -5255, -5248, -5246, -5240, -5228, -5223, -5217, -5210, -5204, -5196, -5186, -5099, -5081, -5068, -5058, -5044, -5029, -5017, -4998, -4982, -4966, -4954, -4935, -5212, -5210, -5204, -5201, -5196, -5186, -5181, -5174, -5166, -5161, -5152, -5143, -5057, -5039, -5026, -5015, -5002, -4987, -4975, -4955, -4944, -4924, -4913, -4895, -5170, -5166, -5161, -5158, -5151, -5143, -5137, -5130, -5122, -5117, -5108, -5099, -5014, -4996, -4984, -4973, -4959, -4947, -4933, -4915, -4901, -4886, -4871, -4854, -5126, -5123, -5118, -5114, -5108, -5098, -5094, -5086, -5078, -5073, -5064, -5056, -4971, -4954, -4941, -4931, -4917, -4905, -4892, -4872, -4859, -4845, -4827, -4815, -5082, -5079, -5074, -5070, -5064, -5055, -5049, -5043, -5035, -5029, -5021, -5012, -4928, -4911, -4899, -4889, -4876, -4862, -4850, -4831, -4817, -4803, -4789, -4773, -5035, -5035, -5031, -5026, -5020, -5013, -5005, -4998, -4991, -4985, -4977, -4968, -4886, -4869, -4856, -4846, -4833, -4822, -4807, -4791, -4776, -4760, -4747, -4737, -4993, -4990, -4987, -4982, -4977, -4968, -4961, -4954, -4946, -4943, -4934, -4925, -4843, -4826, -4813, -4804, -4790, -4780, -4766, -4749, -4735, -4723, -4702, -4690, -4948, -4948, -4942, -4938, -4932, -4923, -4918, -4910, -4903, -4897, -4891, -4882, -4800, -4782, -4771, -4761, -4748, -4737, -4727, -4704, -4689, -4677, -4663, -4649, -4906, -4903, -4899, -4893, -4888, -4884, -4874, -4866, -4861, -4853, -4845, -4840, -4757, -4741, -4728, -4718, -4709, -4695, -4679, -4665, -4650, -4638, -4620, -4607, -4864, -4859, -4855, -4850, -4844, -4839, -4830, -4821, -4818, -4811, -4802, -4796, -4714, -4699, -4689, -4674, -4662, -4653, -4639, -4623, -4606, -4597, -4579, -4568, -4820, -4818, -4812, -4806, -4801, -4794, -4787, -4779, -4774, -4767, -4759, -4753, -4675, -4654, -4643, -4634, -4621, -4611, -4596, -4578, -4568, -4554, -4539, -4525, -4775, -4776, -4768, -4763, -4756, -4753, -4743, -4735, -4731, -4723, -4715, -4709, -4628, -4615, -4601, -4591, -4579, -4568, -4555, -4539, -4525, -4512, -4497, -4484, -4734, -4729, -4725, -4722, -4713, -4709, -4700, -4691, -4687, -4679, -4671, -4667, -4585, -4572, -4558, -4548, -4536, -4526, -4513, -4500, -4483, -4472, -4455, -4443, -4689, -4685, -4684, -4678, -4669, -4667, -4658, -4647, -4643, -4635, -4627, -4626, -4543, -4529, -4515, -4505, -4493, -4484, -4471, -4457, -4442, -4429, -4414, -4400, -4647, -4644, -4640, -4632, -4630, -4624, -4613, -4603, -4599, -4591, -4586, -4587, -4499, -4486, -4472, -4463, -4451, -4441, -4428, -4414, -4399, -4387, -4372, -4360, -4605, -4599, -4596, -4591, -4588, -4582, -4568, -4559, -4556, -4548, -4539, -4539, -4456, -4443, -4429, -4420, -4408, -4398, -4386, -4370, -4356, -4344, -4330, -4318, -4560, -4557, -4552, -4546, -4544, -4538, -4528, -4514, -4506, -4503, -4499, -4496, -4413, -4400, -4386, -4377, -4365, -4357, -4343, -4329, -4314, -4302, -4287, -4276, -4516, -4512, -4507, -4502, -4503, -4496, -4480, -4472, -4467, -4461, -4456, -4451, -4370, -4356, -4344, -4334, -4323, -4312, -4301, -4286, -4272, -4260, -4247, -4234, -4470, -4468, -4468, -4460, -4453, -4450, -4439, -4431, -4422, -4421, -4414, -4408, -4327, -4314, -4301, -4293, -4280, -4270, -4257, -4248, -4231, -4219, -4207, -4190, -4430, -4424, -4418, -4417, -4412, -4406, -4396, -4389, -4380, -4376, -4372, -4364, -4284, -4271, -4260, -4248, -4238, -4228, -4216, -4202, -4190, -4177, -4162, -4152, -4382, -4381, -4375, -4372, -4368, -4363, -4354, -4346, -4339, -4334, -4329, -4321, -4240, -4227, -4217, -4206, -4194, -4186, -4174, -4159, -4145, -4136, -4120, -4108, -4340, -4335, -4332, -4327, -4323, -4318, -4313, -4302, -4297, -4290, -4285, -4277, -4197, -4185, -4174, -4163, -4152, -4142, -4130, -4120, -4103, -4091, -4080, -4065, -4296, -4292, -4287, -4284, -4280, -4275, -4266, -4259, -4253, -4246, -4241, -4233, -4154, -4141, -4131, -4120, -4109, -4100, -4088, -4075, -4063, -4048, -4037, -4024, -4252, -4248, -4243, -4241, -4236, -4229, -4224, -4215, -4209, -4201, -4197, -4189, -4111, -4098, -4088, -4077, -4066, -4057, -4045, -4031, -4020, -4007, -3995, -3982, -4207, -4204, -4198, -4197, -4190, -4186, -4180, -4171, -4165, -4158, -4153, -4145, -4067, -4055, -4045, -4034, -4023, -4014, -4003, -3989, -3976, -3966, -3953, -3937, -4165, -4159, -4156, -4151, -4147, -4142, -4136, -4129, -4121, -4114, -4109, -4101, -4024, -4013, -4001, -3991, -3980, -3971, -3960, -3948, -3934, -3923, -3910, -3896, -4120, -4118, -4111, -4108, -4103, -4098, -4094, -4086, -4077, -4070, -4065, -4057, -3981, -3971, -3958, -3948, -3937, -3928, -3917, -3905, -3890, -3882, -3865, -3855, -4078, -4072, -4069, -4064, -4059, -4053, -4051, -4042, -4032, -4026, -4021, -4013, -3938, -3926, -3915, -3905, -3894, -3886, -3874, -3863, -3848, -3838, -3825, -3811, -4033, -4029, -4025, -4020, -4015, -4010, -4007, -3998, -3989, -3982, -3977, -3970, -3894, -3883, -3872, -3862, -3851, -3843, -3831, -3820, -3805, -3795, -3784, -3768, -3989, -3985, -3981, -3976, -3971, -3965, -3963, -3955, -3944, -3938, -3933, -3926, -3851, -3840, -3829, -3818, -3808, -3800, -3790, -3777, -3763, -3751, -3739, -3726, -3945, -3941, -3937, -3932, -3927, -3921, -3918, -3912, -3900, -3895, -3889, -3882, -3807, -3795, -3786, -3775, -3766, -3758, -3746, -3734, -3720, -3711, -3697, -3681, -3900, -3897, -3892, -3887, -3883, -3877, -3875, -3867, -3857, -3852, -3845, -3838, -3764, -3752, -3743, -3732, -3723, -3713, -3704, -3692, -3677, -3668, -3651, -3641, -3856, -3852, -3847, -3844, -3838, -3835, -3830, -3822, -3812, -3808, -3801, -3794, -3721, -3710, -3699, -3689, -3680, -3671, -3659, -3652, -3635, -3626, -3609, -3598, -3812, -3807, -3803, -3799, -3795, -3790, -3786, -3777, -3769, -3764, -3757, -3750, -3677, -3666, -3656, -3646, -3638, -3628, -3619, -3608, -3595, -3580, -3568, -3552, -3766, -3764, -3760, -3755, -3750, -3747, -3742, -3735, -3724, -3721, -3713, -3706, -3634, -3624, -3613, -3603, -3595, -3585, -3575, -3564, -3552, -3537, -3526, -3514, -3724, -3718, -3716, -3711, -3706, -3704, -3698, -3692, -3680, -3676, -3669, -3662, -3590, -3581, -3569, -3559, -3553, -3541, -3532, -3520, -3505, -3497, -3484, -3470, -3682, -3676, -3672, -3667, -3662, -3659, -3654, -3648, -3636, -3632, -3625, -3618, -3546, -3539, -3526, -3516, -3509, -3499, -3489, -3480, -3462, -3452, -3441, -3424, -3639, -3633, -3627, -3623, -3618, -3615, -3610, -3604, -3592, -3588, -3581, -3574, -3503, -3497, -3482, -3473, -3466, -3455, -3448, -3435, -3422, -3408, -3395, -3384, -3595, -3588, -3583, -3579, -3574, -3571, -3566, -3560, -3548, -3544, -3537, -3530, -3459, -3453, -3439, -3429, -3422, -3413, -3402, -3393, -3376, -3365, -3352, -3340, -3549, -3544, -3539, -3534, -3529, -3527, -3522, -3516, -3505, -3500, -3494, -3485, -3416, -3410, -3396, -3386, -3379, -3369, -3361, -3345, -3335, -3321, -3311, -3298, -3506, -3500, -3495, -3490, -3485, -3483, -3477, -3472, -3463, -3456, -3449, -3442, -3372, -3366, -3352, -3343, -3336, -3326, -3318, -3303, -3288, -3279, -3267, -3256, -3462, -3454, -3450, -3446, -3443, -3438, -3434, -3427, -3419, -3412, -3405, -3398, -3329, -3323, -3308, -3300, -3292, -3283, -3276, -3261, -3244, -3236, -3224, -3213, -3420, -3412, -3406, -3401, -3399, -3393, -3389, -3383, -3375, -3368, -3361, -3354, -3285, -3279, -3265, -3256, -3250, -3239, -3232, -3218, -3201, -3195, -3181, -3171, -3374, -3368, -3363, -3358, -3354, -3350, -3345, -3339, -3330, -3324, -3317, -3310, -3241, -3236, -3222, -3212, -3206, -3197, -3189, -3173, -3161, -3154, -3140, -3129, -3329, -3322, -3318, -3316, -3311, -3306, -3301, -3295, -3286, -3280, -3273, -3266, -3198, -3192, -3178, -3169, -3162, -3152, -3147, -3131, -3119, -3109, -3098, -3085, -3288, -3276, -3274, -3271, -3267, -3262, -3257, -3251, -3243, -3236, -3229, -3222, -3154, -3149, -3135, -3125, -3119, -3110, -3102, -3093, -3074, -3065, -3053, -3043, -3242, -3236, -3230, -3227, -3223, -3218, -3213, -3208, -3201, -3192, -3185, -3178, -3110, -3105, -3091, -3082, -3076, -3066, -3059, -3049, -3033, -3020, -3012, -2999, -3195, -3193, -3185, -3181, -3179, -3174, -3168, -3165, -3157, -3148, -3141, -3135, -3067, -3061, -3047, -3039, -3032, -3023, -3016, -3003, -2988, -2977, -2967, -2957, -3155, -3145, -3142, -3136, -3134, -3131, -3123, -3121, -3113, -3103, -3097, -3092, -3023, -3018, -3005, -2995, -2989, -2980, -2972, -2961, -2942, -2935, -2925, -2913, -3109, -3103, -3098, -3095, -3089, -3085, -3080, -3077, -3068, -3059, -3052, -3048, -2979, -2974, -2961, -2951, -2945, -2936, -2929, -2914, -2901, -2892, -2882, -2870, -3065, -3058, -3053, -3052, -3045, -3041, -3036, -3033, -3024, -3015, -3008, -3004, -2935, -2930, -2918, -2908, -2902, -2892, -2886, -2871, -2856, -2849, -2839, -2828, -3020, -3015, -3009, -3007, -3002, -2997, -2992, -2989, -2979, -2972, -2964, -2960, -2892, -2886, -2875, -2865, -2858, -2850, -2840, -2830, -2813, -2805, -2796, -2785, -2980, -2970, -2966, -2963, -2958, -2953, -2947, -2946, -2935, -2927, -2920, -2916, -2849, -2843, -2831, -2822, -2814, -2806, -2799, -2785, -2769, -2763, -2752, -2743, -2937, -2928, -2921, -2919, -2913, -2910, -2902, -2901, -2892, -2882, -2876, -2872, -2807, -2799, -2786, -2777, -2772, -2762, -2755, -2741, -2732, -2719, -2710, -2698, -2890, -2884, -2877, -2876, -2868, -2865, -2859, -2856, -2848, -2839, -2832, -2828, -2763, -2755, -2743, -2734, -2728, -2720, -2712, -2697, -2690, -2676, -2666, -2657, -2847, -2840, -2834, -2830, -2826, -2820, -2817, -2812, -2805, -2795, -2788, -2784, -2719, -2711, -2701, -2690, -2684, -2675, -2668, -2655, -2641, -2633, -2623, -2613, -2803, -2796, -2791, -2786, -2781, -2776, -2774, -2768, -2762, -2750, -2742, -2741, -2676, -2668, -2658, -2646, -2641, -2632, -2625, -2611, -2599, -2590, -2580, -2569, -2762, -2754, -2747, -2743, -2735, -2731, -2730, -2724, -2717, -2707, -2699, -2695, -2632, -2624, -2614, -2604, -2597, -2588, -2581, -2566, -2557, -2546, -2537, -2527, -2719, -2711, -2703, -2698, -2693, -2687, -2684, -2681, -2673, -2662, -2655, -2651, -2588, -2580, -2570, -2562, -2553, -2545, -2538, -2523, -2513, -2504, -2493, -2484, -2676, -2667, -2659, -2652, -2648, -2645, -2640, -2635, -2629, -2618, -2611, -2608, -2544, -2537, -2526, -2518, -2510, -2501, -2494, -2482, -2468, -2459, -2451, -2440, -2631, -2622, -2614, -2611, -2603, -2599, -2597, -2591, -2585, -2574, -2568, -2563, -2500, -2493, -2482, -2474, -2466, -2458, -2448, -2439, -2425, -2416, -2406, -2399, -2584, -2581, -2569, -2565, -2561, -2555, -2553, -2547, -2541, -2529, -2526, -2519, -2456, -2449, -2439, -2431, -2422, -2414, -2407, -2393, -2385, -2373, -2365, -2354, -2543, -2534, -2527, -2521, -2516, -2512, -2507, -2503, -2497, -2485, -2481, -2475, -2412, -2405, -2395, -2387, -2379, -2370, -2364, -2351, -2340, -2331, -2320, -2311, -2499, -2496, -2482, -2479, -2471, -2467, -2464, -2458, -2453, -2441, -2437, -2431, -2369, -2361, -2351, -2343, -2335, -2327, -2317, -2309, -2297, -2288, -2277, -2268, -2455, -2449, -2440, -2432, -2428, -2423, -2420, -2414, -2408, -2398, -2393, -2387, -2325, -2317, -2307, -2299, -2291, -2283, -2275, -2265, -2256, -2242, -2235, -2226, -2410, -2408, -2394, -2389, -2383, -2380, -2376, -2370, -2364, -2354, -2349, -2342, -2281, -2274, -2263, -2255, -2247, -2240, -2233, -2220, -2210, -2201, -2190, -2184, -2368, -2365, -2353, -2345, -2339, -2336, -2332, -2326, -2320, -2308, -2306, -2298, -2237, -2230, -2221, -2212, -2204, -2196, -2186, -2177, -2166, -2157, -2148, -2139, -2324, -2319, -2310, -2299, -2296, -2292, -2288, -2281, -2277, -2265, -2261, -2254, -2193, -2186, -2177, -2168, -2160, -2151, -2143, -2133, -2124, -2113, -2105, -2095, -2281, -2271, -2267, -2255, -2251, -2248, -2244, -2236, -2233, -2223, -2216, -2210, -2149, -2142, -2133, -2124, -2115, -2108, -2100, -2091, -2082, -2069, -2062, -2051, -2234, -2232, -2224, -2212, -2208, -2203, -2200, -2192, -2188, -2178, -2172, -2166, -2105, -2098, -2089, -2080, -2073, -2065, -2055, -2045, -2040, -2026, -2017, -2014, -2192, -2186, -2183, -2166, -2164, -2159, -2155, -2149, -2142, -2133, -2128, -2121, -2061, -2054, -2044, -2037, -2029, -2021, -2011, -2001, -1997, -1986, -1969, -1966, -2150, -2142, -2138, -2122, -2119, -2117, 0, 0, -2099, -2089, -2084, -2078, -2017, -2010, -2000, -1993, -1985, -1978, -1969, -1962, -1946, -1940, -1929, -1922, -2104, -2100, -2092, -2083, -2076, -2071, -2068, -2060, -2054, -2049, -2040, 0, -1973, -1966, -1956, -1949, -1944, -1937, -1919, -1914, -1910, -1895, -1888, -1879, -2058, -2057, -2047, -2040, -2034, -2027, -2021, -2018, -2010, -2005, -1996, -1988, -1930, -1923, -1917, -1904, -1895, -1893, -1880, -1872, -1863, -1853, -1843, -1839, -2014, -2010, -2004, -1996, -1988, -1985, -1977, -1972, -1967, -1961, -1952, -1945, -1889, -1877, -1868, -1861, -1854, -1849, -1837, -1828, -1820, -1810, -1799, -1793, -1973, -1962, -1960, -1952, -1945, -1939, -1934, -1928, -1922, -1917, -1907, -1901, -1840, -1834, -1826, -1818, -1810, -1806, -1794, -1783, -1778, -1768, -1757, -1748, -1929, -1923, -1915, -1907, -1903, -1895, -1890, -1884, -1878, -1872, -1863, -1857, -1797, -1790, -1785, -1774, -1766, -1762, -1749, -1740, -1736, -1725, -1713, -1705, -1884, -1879, -1874, -1865, -1859, -1851, -1846, -1840, -1834, -1828, -1819, -1813, -1753, -1747, -1742, -1730, -1722, -1718, -1705, -1696, -1692, -1679, -1671, -1661, -1838, -1836, -1830, -1822, -1813, -1807, -1801, -1796, -1790, -1784, -1775, -1771, -1709, -1702, -1699, -1686, -1678, -1672, -1661, -1653, -1645, -1636, -1626, -1617, -1793, -1790, -1785, -1778, -1769, -1762, -1758, -1751, -1746, -1745, -1728, -1722, -1665, -1659, -1653, -1642, -1634, -1629, -1617, -1610, -1602, -1592, -1583, -1574, -1752, -1741, -1743, -1732, -1728, -1717, -1713, -1711, -1700, -1697, -1686, -1681, -1621, -1614, -1609, -1598, -1591, -1586, -1573, -1567, -1558, -1547, -1542, -1531, -1703, -1705, -1696, -1691, -1683, -1678, -1664, -1663, -1660, -1652, -1643, -1634, -1577, -1570, -1567, -1554, -1547, -1542, -1528, -1522, -1517, -1504, -1497, -1489, -1664, -1658, -1655, -1650, -1633, -1632, -1624, -1619, -1616, -1610, -1597, -1591, -1533, -1527, -1522, -1511, -1503, -1499, -1486, -1477, -1474, -1462, -1453, -1445, -1619, -1617, -1606, -1602, -1595, -1586, -1579, -1575, -1573, -1565, -1554, -1547, -1489, -1483, -1479, -1466, -1460, -1454, -1445, -1434, -1430, -1420, -1408, -1402, -1570, -1570, -1568, -1554, -1552, -1545, -1535, -1532, -1527, -1520, -1510, -1503, -1445, -1439, -1435, -1422, -1415, -1412, -1399, -1390, -1388, -1374, -1366, -1356, -1532, -1526, -1521, -1516, -1506, -1501, -1492, -1485, -1484, -1477, -1465, -1459, -1401, -1395, -1391, -1378, -1371, -1367, -1354, -1346, -1342, -1332, -1322, -1314, -1488, -1480, -1477, -1470, -1464, -1455, -1448, -1441, -1439, -1433, -1421, -1415, -1357, -1350, -1347, -1334, -1327, -1323, -1310, -1302, -1298, -1289, -1277, -1271, -1440, -1441, -1432, -1424, -1421, -1410, -1404, -1398, -1395, -1388, -1377, -1370, -1313, -1306, -1303, -1290, -1284, -1277, -1267, -1258, -1255, -1244, -1235, -1228, -1399, -1396, -1392, -1377, -1377, -1367, -1358, -1354, -1350, -1344, -1332, -1326, -1269, -1262, -1259, -1248, -1239, -1234, -1223, -1217, -1209, -1200, -1192, -1185, -1357, -1348, -1348, -1335, -1330, -1326, -1317, -1308, -1306, -1300, -1288, -1283, -1225, -1218, -1215, -1204, -1195, -1191, -1181, -1171, -1167, -1155, -1146, -1142, -1312, -1305, -1301, -1293, -1288, -1280, -1273, -1266, -1262, -1256, -1244, -1240, -1181, -1175, -1171, -1159, -1152, -1146, -1136, -1128, -1123, -1113, -1104, -1096, -1265, -1263, -1256, -1249, -1243, -1238, -1228, -1224, -1218, -1212, -1200, -1196, -1137, -1130, -1127, -1116, -1108, -1102, -1091, -1084, -1079, -1070, -1063, -1054, -1223, -1218, -1214, -1206, -1199, -1194, -1185, -1178, -1175, -1167, -1156, -1152, -1093, -1086, -1082, -1072, -1065, -1059, -1046, -1041, -1037, -1026, -1018, -1009, -1180, -1176, -1169, -1161, -1156, -1147, -1141, -1135, -1129, -1123, -1112, -1108, -1048, -1042, -1038, -1028, -1020, -1015, -1005, -997, -994, -979, -975, -965, -1135, -1131, -1126, -1115, -1111, -1105, -1094, -1092, -1085, -1079, -1068, -1064, -1004, -998, -994, -983, -975, -971, -958, -953, -949, -938, -929, -923, -1091, -1088, -1080, -1070, -1065, -1063, -1052, -1047, -1041, -1035, -1025, -1019, -960, -954, -951, -938, -932, -924, -917, -907, -906, -894, -885, -881, -1048, -1041, -1038, -1028, -1023, -1015, -1010, -1002, -997, -991, -980, -975, -916, -911, -906, -896, -891, -880, -870, -869, -860, -854, -840, -838, -1003, -999, -995, -985, -978, -973, -964, -958, -952, -946, -937, -931, -872, -868, -864, -852, -844, -838, -827, -823, -818, -808, -799, -792, -960, -952, 0, -942, -934, -927, -922, -914, -908, -902, -893, -887, -828, -824, -818, -809, -800, -793, -784, -778, -773, -766, -754, -749, -915, -911, -904, -897, -888, -884, -880, -870, -864, -858, -849, -842, -784, -780, -774, -765, -757, -751, -740, -733, -730, -721, -711, -706, -872, -865, -858, -851, -848, -838, -837, -826, -818, -815, -804, -798, -740, -736, -730, -721, -714, -707, -695, -694, -684, -676, -665, -662, -828, -820, -817, -806, -803, -795, -791, -783, -775, -770, -762, -754, -695, -692, -686, -677, -670, -663, -651, -646, -641, -633, -623, -617, -782, -777, -775, -759, -759, -753, -746, -738, -732, -725, -719, -710, -651, -648, -642, -633, -625, -619, -606, -603, -597, -592, -578, -572, -741, -732, -730, -721, -712, -707, -705, -695, -687, -681, -675, -666, -607, -604, -598, -589, -581, -574, -564, -560, -553, -549, -535, -528, -698, -689, -683, -676, -668, -664, -661, -651, -643, -637, -631, -621, -563, -560, -553, -545, -538, -530, -520, -515, -508, -503, -495, -487, -651, -644, -641, -631, -625, -621, -613, -608, -599, -593, -588, -577, -519, -515, -509, -501, -494, -488, -475, -469, -467, -461, -450, -443, -606, -606, -596, -588, -580, -576, -572, -564, -555, -549, -544, -533, -474, -472, -465, -456, -450, -444, -434, -427, -422, -415, -408, -399, -563, -560, -552, -544, -536, -530, -530, -519, -511, -504, -498, -489, -431, -427, -421, -412, -406, -400, -389, -384, -378, -370, -363, -355, -518, -515, -508, -500, -493, -487, -483, -476, -466, -460, -455, -445, -386, -383, -377, -368, -362, -357, -344, -339, -334, -329, -314, -313, -476, -469, -463, -454, -447, -446, -440, -430, -423, -415, -412, -400, -342, -339, -333, -324, -318, -310, -301, -297, -291, -280, -274, -266, -431, -426, -418, -412, -403, -402, -397, -388, -378, -372, -367, -356, -298, -295, -289, -280, -274, -267, -255, -253, -246, -240, -229, -223, -386, -382, -377, -366, -362, -356, -353, -346, -334, -328, -321, -312, -254, -251, -245, -237, -230, -223, -213, -207, -201, -197, -190, -179, -342, -336, -335, -321, -317, -314, -308, -300, -291, -284, -275, -268, -210, -207, -200, -194, -186, -179, -168, -164, -158, -152, -148, -134, -301, -293, -287, -282, -272, -268, -264, -257, -247, -240, -233, -223, -166, -162, -156, -149, -142, -135, -125, -121, -118, -106, -102, -91, -257, -250, -243, -237, -229, -224, -220, -213, -204, -198, -189, -179, -124, -118, -112, -105, -98, -90, -82, -77, -70, -65, -56, -48, -211, -207, -201, -192, -184, -181, -175, -169, -160, -154, -144, -135, -80, -74, -68, -62, -54, -48, -37, -32, -26, -24, -9, -6, -169, -160, -156, -146, -144, -136, -130, -124, -117, -110, -100, -91, -35, -30, -26, -18, -7, -2, 5, 8, 16, 22, 29, 38, -126, -117, -113, -102, -97, -92, -86, -82, -73, -64, -57, -46, 8, 13, 19, 25, 31, 41, 53, 54, 59, 65, 72, 80, -78, -74, -68, -60, -50, -48, -43, -37, -27, -21, -12, -2, 52, 57, 62, 68, 79, 82, 94, 98, 104, 109, 116, 126, -36, -29, -25, -15, -8, -4, 4, 4, 16, 22, 31, 41, 96, 102, 108, 113, 122, 128, 139, 140, 148, 155, 162, 169, 8, 12, 19, 28, 34, 39, 44, 50, 58, 66, 76, 85, 140, 146, 152, 158, 165, 173, 181, 187, 191, 196, 211, 211, 50, 57, 63, 72, 77, 84, 88, 94, 103, 110, 118, 130, 185, 190, 196, 200, 210, 217, 226, 229, 238, 241, 249, 258, 98, 100, 109, 113, 121, 125, 133, 139, 147, 156, 163, 174, 229, 234, 240, 244, 252, 262, 271, 272, 282, 285, 293, 300, 140, 145, 151, 160, 164, 172, 177, 183, 190, 198, 210, 218, 273, 278, 283, 288, 298, 304, 316, 317, 325, 329, 335, 343, 182, 190, 195, 203, 209, 215, 222, 228, 233, 243, 251, 262, 317, 322, 327, 332, 343, 349, 359, 361, 367, 375, 379, 384, 226, 232, 239, 246, 252, 259, 265, 273, 277, 286, 294, 306, 361, 367, 373, 376, 384, 393, 404, 407, 410, 419, 422, 435, 270, 276, 283, 291, 295, 304, 309, 315, 322, 328, 338, 350, 406, 411, 417, 420, 429, 437, 445, 453, 456, 460, 468, 477, 315, 321, 325, 335, 341, 350, 352, 360, 364, 372, 382, 395, 450, 454, 462, 465, 472, 483, 491, 494, 499, 506, 510, 519, 0, 365, 370, 379, 386, 391, 396, 404, 409, 417, 426, 438, 494, 499, 504, 509, 518, 526, 534, 537, 543, 549, 554, 562, 0, 0, 416, 421, 429, 434, 442, 448, 453, 460, 470, 483, 538, 544, 549, 552, 562, 567, 579, 584, 585, 594, 600, 606, 0, 0, 0, 0, 471, 480, 487, 490, 496, 505, 515, 527, 582, 588, 594, 597, 604, 612, 625, 625, 634, 635, 643, 653, 0, 0, 0, 0, 518, 523, 530, 536, 540, 549, 559, 570, 627, 632, 636, 642, 648, 658, 666, 671, 677, 683, 687, 694, 0, 0, 0, 0, 0, 0, 573, 579, 584, 591, 603, 612, 671, 676, 680, 687, 691, 701, 712, 716, 720, 725, 734, 738, 0, 0, 0, 0, 0, 0, 616, 624, 627, 634, 647, 656, 715, 721, 726, 729, 737, 746, 753, 759, 763, 770, 775, 780, 0, 0, 0, 0, 0, 0, 0, 667, 672, 679, 691, 701, 759, 765, 770, 773, 781, 790, 801, 804, 807, 812, 818, 828, 0, 0, 0, 0, 0, 0, 0, 0, 716, 723, 735, 744, 803, 809, 814, 817, 825, 835, 839, 846, 852, 861, 862, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 767, 779, 786, 847, 853, 858, 862, 867, 875, 887, 892, 898, 900, 906, 914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821, 832, 892, 897, 900, 903, 917, 923, 925, 935, 940, 947, 948, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 875, 934, 942, 949, 950, 957, 967, 968, 981, 982, 990, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 983, 986, 990, 993, 1002, 1010, 1017, 1024, 1029, 1033, 1038, 1040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 1030, 1034, 1037, 1046, 1056, 1060, 1071, 1071, 1075, 1083, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1069, 1074, 1077, 1082, 1089, 1099, 1104, 1111, 1118, 1121, 1126, 1131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1113, 1118, 1121, 1128, 1129, 1140, 1153, 1158, 1158, 1167, 1169, 1175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 1163, 1166, 1167, 1176, 1184, 1197, 1200, 1204, 1208, 1215, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1201, 1207, 1210, 1215, 1220, 1228, 1239, 1245, 1247, 1253, 1259, 1263, 1099, 1109, 1112, 1127, 1127, 1141, 1144, 1153, 1156, 1163, 1170, 1183, 0, 1251, 1254, 1259, 1262, 1274, 1282, 1289, 1292, 1298, 1302, 1309, 1144, 1153, 1155, 1168, 1178, 1184, 1189, 1192, 1201, 1207, 1217, 1227, 1290, 1295, 1297, 1302, 1307, 1318, 1325, 1332, 1336, 1343, 1346, 1351, 1184, 1195, 1202, 1212, 1221, 1225, 1231, 1237, 1246, 1252, 1260, 1271, 1334, 1338, 1344, 1345, 1353, 1361, 1368, 1377, 1380, 1386, 1391, 1393, 1230, 1238, 1247, 1255, 1263, 1269, 1277, 1281, 1289, 1296, 1303, 1314, 1377, 1385, 1387, 1390, 1398, 1406, 1411, 1418, 1426, 1429, 1434, 1437, 0, 1282, 1287, 1299, 1310, 1312, 1318, 1327, 1332, 1339, 1345, 1357, 1422, 1426, 1431, 1437, 1441, 1448, 1456, 1461, 1470, 1474, 1479, 1481, 0, 0, 0, 0, 0, 0, 0, 1369, 1377, 1383, 1388, 1401, 1467, 1471, 1476, 1479, 1483, 1491, 1500, 1508, 1512, 1516, 1524, 1527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1432, 1445, 1511, 1515, 1521, 1524, 1527, 1536, 1545, 1551, 1557, 1562, 1566, 1570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1555, 1560, 1564, 1569, 1572, 1576, 1589, 1594, 1602, 1605, 1611, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1599, 1604, 1607, 1612, 1617, 1624, 1631, 1640, 1645, 1652, 1657, 1658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1643, 1647, 1651, 1658, 1661, 1668, 1678, 1686, 1689, 1696, 1699, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1718, 1727, 1736, 1736, 1744, 1746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1779, 1782, 1788, 1789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1827, 1833, 1834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1878, 1880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2450, 2454, 2461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486, 2488, 0, 2500, 2504, 2510, 0, 0, 0, 0, 2538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2530, 2534, 2536, 2547, 2548, 2555, 2560, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2579, 2585, 2589, 2590, 2598, 0, 0, 2621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617, 2623, 2626, 2632, 2635, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2654, 2659, 2667, 2672, 2673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2697, 2706, 2710, 2715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2741, 2750, 2752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2784, 2795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3699, 3705, 3704, 3718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3739, 3742, 3747, 3749, 3757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3772, 3775, 3781, 3785, 3791, 3795, 3801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3809, 3815, 3821, 3824, 3830, 3834, 3841, 3848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3860, 3864, 3868, 3873, 3877, 3885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3903, 3910, 3912, 3918, 3921, 3927, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3952, 3957, 3962, 3967, 3972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3994, 4001, 4006, 4012, 4013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4050, 4056, 4056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4087, 4093, 4097, 4102, 4106, 0, 4123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4132, 4138, 4141, 4145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4171, 4177, 4181, 4186, 4189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4209, 4213, 4221, 4226, 4229, 4233, 4240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4116, 4127, 4137, 0, 0, 0, 0, 4254, 4259, 4264, 4270, 4272, 4278, 0, 0, 0, 0, 0, 0, 0, 0, 4132, 4139, 4151, 4160, 4170, 4179, 4190, 0, 0, 0, 4297, 4303, 4308, 4313, 4316, 0, 0, 0, 0, 0, 0, 0, 4150, 4159, 4175, 4184, 4192, 4202, 4215, 4221, 4232, 0, 0, 0, 4341, 4347, 4351, 4358, 4360, 0, 0, 0, 0, 0, 0, 0, 4191, 4203, 4213, 4227, 4234, 4247, 4255, 4266, 0, 0, 0, 0, 4384, 4389, 4397, 4402, 0, 0, 0, 0, 0, 0, 0, 4218, 4233, 4245, 4257, 4267, 4278, 4290, 4298, 0, 0, 0, 0, 0, 4428, 4434, 4441, 4446, 0, 0, 0, 0, 0, 4232, 4246, 4262, 4274, 4286, 4301, 4311, 4318, 4331, 4343, 0, 0, 0, 0, 4463, 4476, 4479, 4484, 4489, 0, 0, 0, 0, 0, 4271, 4288, 4303, 4317, 4331, 4343, 4351, 4364, 4373, 0, 0, 0, 0, 0, 0, 4516, 4522, 4529, 4533, 4536, 4541, 0, 0, 0, 4316, 4333, 4347, 4360, 4372, 4386, 4394, 4404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4572, 4578, 4580, 4585, 4590, 4595, 0, 4361, 4373, 4388, 4403, 4414, 4424, 4437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4624, 4629, 4634, 4640, 0, 4402, 4416, 4429, 4442, 4457, 4470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4678, 0, 0, 4444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4487, 0, 0, 0, 0, 4555, 4563, 4575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4598, 4604, 4618, 4629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4568, 0, 0, 0, 0, 0, 0, 4660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5890, 5909, 0, 5954, 5972, 0, 6007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5925, 5950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5962, 5986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6077, 6101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6114, 6137, 6163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6497, 6505, 0, 0, 0, 0, 0, 0, 0, 0, 6150, 6174, 6200, 6221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6528, 6540, 6553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6212, 6237, 6261, 0, 0, 0, 0, 0, 0, 0, 0, 6566, 6574, 6583, 6592, 6601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6276, 6297, 0, 0, 0, 0, 0, 0, 0, 0, 6606, 6615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6399, 6422, 6440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6717, 0, 0, 6744, 0, 0, 0, 0, 0, 0, 0, 0, 6460, 6479, 6501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6517, 6539, 0, 0, 0, 0, 0, 0, 0, 0, 6795, 6804, 6813, 0, 0, 6834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6834, 6847, 0, 0, 6872, 6881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6868, 6878, 6889, 6900, 6908, 6916, 6922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6902, 6911, 6921, 6930, 6942, 6950, 6959, 6964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6936, 6946, 6953, 6964, 6975, 6982, 6992, 7000, 7006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6964, 6977, 6990, 6998, 7006, 7017, 7029, 7034, 7043, 7050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6994, 7008, 7019, 7032, 7038, 7050, 7060, 7074, 7082, 7083, 7092, 6577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7026, 7034, 7047, 7063, 7072, 7083, 7092, 7104, 7115, 7124, 7130, 7130, 6611, 6640, 6671, 6698, 0, 0, 0, 0, 0, 0, 0, 0, 7066, 7077, 7089, 7104, 7115, 7126, 7138, 7146, 7156, 7168, 7172, 7180, 6645, 6672, 6703, 6730, 6755, 6782, 0, 0, 0, 0, 0, 0, 7106, 7120, 7132, 7145, 7158, 7169, 7178, 7193, 7196, 7209, 7217, 7224, 6677, 6705, 6735, 6768, 6792, 0, 0, 0, 0, 0, 0, 0, 7147, 7160, 7174, 7187, 7202, 7209, 7223, 7233, 7242, 7250, 7259, 7267, 6708, 6738, 6772, 6798, 6826, 6852, 6877, 6905, 6929, 6955, 6980, 0, 7187, 7202, 7214, 7230, 7240, 7254, 7265, 7276, 7287, 7293, 7301, 7308, 6739, 6773, 6806, 6831, 6858, 6887, 6914, 6938, 6965, 6990, 7018, 7040, 7227, 7243, 7256, 7272, 7284, 7297, 7308, 7320, 7327, 7335, 7343, 7350, 6773, 6805, 6838, 6865, 6892, 6921, 6947, 6977, 7001, 7028, 7053, 7077, 7268, 7285, 7297, 7314, 7326, 7339, 7352, 7361, 7371, 7378, 7384, 7392, 6805, 6836, 6868, 6899, 6925, 6955, 6983, 7012, 7035, 7062, 7090, 7114, 7309, 7322, 7340, 7355, 7368, 7381, 7392, 7405, 7415, 7422, 7430, 7435, 6834, 6869, 6900, 6933, 6959, 6990, 7016, 7043, 7071, 7099, 7127, 7150, 7349, 7364, 7380, 7398, 7409, 7422, 7436, 7447, 7457, 7465, 7472, 7479, 6866, 6899, 6931, 6961, 6992, 7024, 7050, 7079, 7106, 7134, 7160, 7186, 7389, 7406, 7422, 7438, 7451, 7464, 7478, 7490, 7500, 7508, 7517, 7523, 6895, 6931, 6964, 6999, 7027, 7052, 7084, 7111, 7138, 7169, 7196, 7222, 7429, 7446, 7464, 7478, 7491, 7506, 7520, 7533, 7543, 7552, 7560, 7564, 6927, 6962, 6995, 7027, 7059, 7088, 7117, 7144, 7174, 7202, 7230, 7257, 7471, 7485, 7504, 7520, 7532, 7548, 7562, 7575, 7585, 7594, 7604, 7607, 6955, 6990, 7024, 7058, 7090, 7119, 7151, 7176, 7207, 7235, 7264, 7292, 7508, 7526, 7544, 7558, 7575, 7591, 7604, 7618, 7627, 7638, 7647, 7653, 6982, 7018, 7054, 7088, 7117, 7148, 7179, 7209, 7239, 7270, 7300, 7326, 7548, 7564, 7583, 7601, 7617, 7631, 7647, 7660, 7670, 7681, 7691, 7697, 7011, 7045, 7082, 7115, 7147, 7180, 7210, 7239, 7272, 7304, 7333, 7360, 7586, 7604, 7623, 7640, 7658, 7674, 7690, 0, 0, 0, 0, 7738, 7038, 7075, 7114, 7145, 7178, 7213, 7239, 7270, 7300, 7334, 7366, 7393, 7626, 7643, 7665, 7680, 7698, 7716, 7730, 0, 0, 0, 0, 0, 7065, 7103, 7139, 7175, 7206, 7241, 7270, 7302, 7333, 7364, 7395, 7425, 7665, 7682, 7704, 7719, 7739, 0, 0, 0, 0, 0, 0, 0, 7093, 7127, 7166, 7206, 7239, 7271, 7303, 7335, 7365, 7396, 7428, 7459, 7702, 7723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7120, 7156, 7194, 7230, 7265, 7299, 7332, 7360, 7394, 7429, 7457, 7490, 0, 7758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7142, 7182, 7219, 7259, 7293, 7327, 7361, 7389, 7423, 7457, 7488, 7522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7169, 7206, 7248, 7283, 7317, 7354, 7386, 7417, 7452, 7487, 7520, 7552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7192, 7233, 7269, 7302, 7343, 7381, 7413, 7446, 7482, 7515, 7547, 7583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7213, 7256, 7293, 7332, 7370, 7404, 7439, 7473, 7508, 7544, 7576, 7610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7238, 7275, 7316, 7354, 7392, 7429, 7465, 7499, 7532, 7569, 7602, 7639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7255, 7294, 7337, 7377, 7414, 7452, 7488, 7521, 7556, 7594, 7630, 7666, 7954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7276, 7315, 7357, 7396, 7435, 7472, 7508, 7544, 7582, 7619, 0, 7693, 7985, 8015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7293, 7337, 7380, 7422, 7458, 0, 7531, 0, 0, 0, 0, 0, 8017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7388, 7433, 7478, 7521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7376, 7418, 7463, 7505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7364, 7406, 7448, 7490, 7532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7348, 7391, 7435, 7474, 7515, 7550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7334, 7374, 7414, 7453, 7494, 7536, 7575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7318, 7357, 7395, 7436, 7479, 7517, 7553, 7593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7297, 7339, 7380, 7418, 7455, 7498, 7537, 7568, 7606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7279, 7319, 7358, 7399, 7435, 7471, 7512, 7547, 7586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7257, 7299, 7339, 7378, 7412, 7448, 7488, 7524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7238, 7277, 7317, 7352, 7389, 7423, 7462, 7498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7216, 7252, 0, 0, 0, 0, 7436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6612, 6624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5430, 5431, 5436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5316, 5324, 0, 0, 0, 5351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5272, 5280, 0, 0, 5302, 5305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5216, 5222, 5230, 0, 0, 5253, 5256, 5263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5170, 5173, 5181, 5187, 0, 5204, 5209, 5214, 5218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5127, 5130, 5139, 5144, 5153, 5160, 5165, 5171, 5175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5089, 5095, 5103, 5108, 5118, 5122, 5127, 5132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5032, 5040, 5045, 5052, 5059, 5068, 5073, 5080, 5082, 5087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4980, 4991, 4996, 5001, 5009, 5017, 5024, 5030, 5033, 5039, 5043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931, 4937, 4944, 4953, 4957, 4965, 4975, 4980, 4985, 4989, 4994, 4997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4886, 4893, 4903, 4907, 4913, 4922, 4930, 4936, 4942, 4944, 4952, 4956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4843, 4852, 4857, 4865, 4871, 4877, 4885, 4892, 4900, 4902, 4908, 4910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4799, 4807, 4814, 4823, 4823, 4835, 4847, 4848, 4854, 4857, 4863, 4867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755, 4765, 4769, 4777, 4784, 4793, 4800, 4804, 4809, 4813, 4822, 4823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4711, 4721, 4728, 4733, 4738, 4747, 4758, 4761, 4765, 4771, 4778, 4777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4668, 4677, 4684, 4689, 4694, 4705, 4714, 4715, 4724, 4726, 4731, 4733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4624, 4634, 4637, 4645, 4652, 4661, 4670, 4672, 4680, 4681, 4689, 4689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4579, 4589, 4596, 4600, 4608, 4615, 4625, 4629, 4636, 4638, 4644, 4646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4536, 4546, 4549, 4559, 4565, 4570, 4581, 4584, 4592, 4594, 4598, 4603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4492, 4502, 4507, 4512, 4521, 4529, 4538, 4540, 4546, 4551, 4554, 4557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4448, 4457, 4465, 4473, 4473, 4487, 4493, 4498, 4501, 4508, 4511, 4516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4405, 4415, 4419, 4424, 4434, 4443, 4447, 4453, 4458, 4463, 4470, 4469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4364, 4368, 4377, 4378, 4392, 4400, 4405, 4409, 4414, 4420, 4423, 4426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4321, 4323, 4332, 4339, 4350, 4356, 4361, 4365, 4371, 4376, 4378, 4383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4277, 4281, 4287, 4296, 4307, 4311, 4317, 4323, 4325, 4331, 4338, 4334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4148, 4231, 4240, 4243, 4250, 4264, 4268, 4271, 4278, 4282, 4287, 4290, 4291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4105, 4188, 4193, 4200, 4209, 4216, 4224, 4228, 4233, 4240, 4241, 4246, 4248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4062, 4145, 4149, 4154, 4164, 4175, 4179, 4184, 4189, 4193, 4198, 4203, 4203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4011, 4018, 4101, 4104, 4112, 4122, 4132, 4134, 4141, 4144, 4150, 4153, 4157, 4163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3967, 3975, 4056, 4063, 4068, 4076, 4087, 4090, 4097, 4100, 4106, 4108, 4114, 4119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3917, 3924, 3932, 4013, 4017, 4023, 4033, 4043, 4046, 4052, 4056, 4063, 4066, 4068, 4075, 0, 0, 0, 0, 0, 0, 0, 0, 3863, 3874, 3881, 3888, 3969, 3973, 3980, 3990, 3998, 4002, 4007, 4012, 4018, 4022, 4023, 4034, 0, 0, 0, 0, 0, 0, 0, 3806, 3820, 3830, 3838, 3845, 3924, 3932, 3935, 3945, 3955, 3958, 3964, 3969, 3974, 3976, 3981, 3988, 0, 0, 0, 0, 0, 0, 3751, 3763, 3777, 3787, 3795, 3801, 3880, 3888, 3893, 3903, 3910, 3914, 3920, 3924, 3931, 3932, 3937, 3946, 0, 0, 0, 0, 0, 3700, 3709, 3720, 3733, 3743, 3751, 3758, 3835, 3844, 3849, 3859, 3865, 3870, 3876, 3880, 3885, 3889, 3892, 3902, 0, 0, 0, 0, 0, 3657, 3665, 3676, 3690, 3700, 3708, 3714, 3791, 3800, 3806, 3813, 3822, 3826, 3832, 3837, 3840, 3844, 3848, 3858, 0, 0, 0, 0, 3604, 3616, 3622, 3635, 3647, 3657, 3664, 3672, 3747, 3754, 3762, 3773, 3777, 3783, 3787, 3792, 3797, 3800, 3808, 3814, 0, 0, 3538, 3552, 3560, 3571, 3580, 3592, 3603, 3613, 3621, 3630, 3705, 3709, 3716, 3730, 3734, 3736, 3744, 3750, 3753, 3758, 3763, 3773, 0, 3481, 3494, 3508, 3518, 3529, 3536, 3548, 3561, 3570, 3576, 3586, 3659, 3667, 3674, 3684, 3689, 3694, 3700, 3705, 3709, 3714, 3720, 3728, 3430, 3438, 3454, 3466, 3474, 3485, 3493, 3505, 3519, 3526, 3533, 3542, 3615, 3622, 3631, 3642, 3645, 3649, 3656, 3661, 3664, 3671, 3678, 3681, 3389, 3398, 3407, 3421, 3432, 3441, 3449, 3461, 3475, 3483, 3490, 3499, 3572, 3579, 3589, 3595, 3602, 3606, 3610, 3618, 3619, 3626, 3633, 3638, 3346, 3353, 3369, 3380, 3387, 3398, 3406, 3418, 3431, 3439, 3446, 3455, 3530, 3533, 3547, 3550, 3556, 3563, 3566, 3573, 3577, 3583, 3590, 3593, 3303, 3313, 3324, 3336, 3345, 3355, 3364, 3374, 3386, 3396, 3403, 3411, 3486, 3491, 3498, 3509, 3513, 3519, 3524, 3527, 3534, 3540, 3543, 3552, 3259, 3268, 3285, 3292, 3302, 3312, 3322, 3332, 3344, 3352, 3359, 3368, 3440, 3448, 3459, 3464, 3469, 3474, 3479, 3484, 3488, 3495, 3503, 3504, 3216, 3227, 3239, 3250, 3258, 3269, 3279, 3288, 3302, 3309, 3316, 3324, 3398, 3403, 3416, 3419, 3426, 3429, 3434, 3441, 3443, 3453, 3461, 3460, 3175, 3183, 3195, 3207, 3217, 3225, 3235, 3246, 3259, 3266, 3272, 3280, 3353, 3360, 3371, 3374, 3379, 3387, 3390, 3397, 3399, 3409, 3415, 3416, 3133, 3140, 3151, 3164, 3173, 3182, 3191, 3202, 3215, 3222, 3228, 3238, 3310, 3313, 3325, 3333, 3335, 3344, 3346, 3352, 3356, 3365, 3370, 3374, 3089, 3098, 3110, 3121, 3131, 3139, 3149, 3158, 3171, 3178, 3185, 3196, 3264, 3273, 3283, 3288, 3291, 3298, 3303, 3307, 3314, 3320, 3324, 3331, 3046, 3055, 3067, 3077, 3088, 3097, 3106, 3116, 3128, 3134, 3142, 3152, 3221, 3229, 3238, 3243, 3247, 3255, 3258, 3263, 3269, 3279, 3282, 3285, 3003, 3013, 3023, 3035, 3046, 3053, 3063, 3072, 3084, 3090, 3099, 3108, 3177, 3183, 3194, 3200, 3203, 3209, 3215, 3218, 3227, 3236, 3237, 3240, 2961, 2968, 2982, 2992, 3002, 3008, 3018, 3029, 3040, 3047, 3056, 3066, 3133, 3141, 3151, 3154, 3160, 3164, 3173, 3175, 3181, 3189, 3195, 3198, 2916, 2926, 2937, 2948, 2957, 2965, 2975, 2985, 2998, 3003, 3012, 3023, 3089, 3097, 3107, 3109, 3117, 3122, 3124, 3132, 3140, 3145, 3150, 3156, 2874, 2880, 2896, 2905, 2915, 2923, 2932, 2941, 2953, 2960, 2968, 2979, 3044, 3056, 3062, 3066, 3070, 3079, 3082, 3086, 3095, 3103, 3110, 3107, 2831, 2837, 2851, 2863, 2872, 2879, 2888, 2899, 2909, 2916, 2926, 2936, 3000, 3014, 3015, 3022, 3029, 3032, 3039, 3044, 3053, 3055, 3062, 3065, 2787, 2797, 2807, 2819, 2828, 2835, 2844, 2856, 2866, 2873, 2882, 2892, 2955, 2969, 2974, 2977, 2984, 2990, 2994, 2998, 3007, 3013, 3017, 3022, 2743, 2751, 2767, 2777, 2785, 2792, 2801, 2812, 2822, 2828, 2839, 2847, 2911, 2923, 2930, 2936, 2939, 2943, 2950, 2957, 2963, 2968, 2975, 2977, 2701, 2708, 2723, 2732, 2741, 2749, 2758, 2768, 2779, 2785, 2794, 2804, 2870, 2884, 2881, 2890, 2895, 2900, 2905, 2916, 2919, 2924, 2931, 2937, 2658, 2666, 2681, 2689, 2697, 2706, 2715, 2725, 2735, 2741, 2754, 2760, 2822, 2836, 2841, 2844, 2851, 2856, 2860, 2870, 2875, 2882, 2885, 2893, 2615, 2623, 2636, 2645, 2655, 2663, 2670, 2682, 2691, 2698, 2711, 2717, 2782, 2791, 2798, 2801, 2805, 2813, 2817, 2826, 2833, 2835, 2840, 2848, 2570, 2579, 2594, 2603, 2611, 2619, 2627, 2639, 2648, 2653, 2667, 2675, 2738, 2747, 2753, 2758, 2763, 2769, 2775, 2781, 2789, 2793, 2797, 2801, 2528, 2536, 2548, 2561, 2568, 2576, 2583, 2596, 2604, 2609, 2623, 2633, 2693, 2703, 2708, 2715, 2719, 2724, 2731, 2736, 2746, 2748, 2752, 2757, 2485, 2492, 2506, 2518, 2524, 2533, 2540, 2553, 2560, 2571, 2578, 2584, 2650, 2659, 2664, 2669, 2674, 2681, 2685, 2691, 2703, 2704, 2709, 2713, 2442, 2450, 2461, 2473, 2480, 2490, 2497, 2512, 2512, 2526, 2535, 2545, 2611, 2613, 2620, 2625, 2630, 2637, 2644, 2649, 2658, 2660, 2666, 2671, 2399, 2405, 2419, 2430, 2438, 2446, 2448, 2466, 2473, 2483, 2492, 2501, 2566, 2571, 2576, 2582, 2586, 2593, 2596, 2607, 2613, 2617, 2621, 2627, 2356, 2362, 2380, 2386, 2391, 2402, 2409, 2423, 2428, 2441, 2447, 2458, 2522, 2526, 2532, 2538, 2540, 2549, 2555, 2564, 2567, 2572, 2580, 2582, 2316, 2316, 2331, 2343, 2350, 2359, 2365, 2379, 2384, 2398, 2403, 2414, 2477, 2482, 2484, 2496, 2495, 2505, 2511, 2517, 2524, 2529, 2535, 2539, 2268, 2278, 2289, 2300, 2307, 2315, 2323, 2334, 2341, 2354, 2359, 2370, 2432, 2439, 2442, 2450, 2453, 2460, 2468, 2472, 2481, 2484, 2491, 2495, 2226, 2233, 2247, 2256, 2262, 2272, 2280, 2291, 2298, 2311, 2315, 2326, 2388, 2394, 2400, 2403, 2410, 2417, 2425, 2428, 2436, 2441, 2447, 2452, 2182, 2190, 2202, 2212, 2220, 2226, 2236, 2247, 2256, 2266, 2271, 2282, 2345, 2348, 2355, 2360, 2366, 2370, 2381, 2386, 2392, 2399, 2402, 2407, 2139, 2148, 2159, 2168, 2177, 2184, 2192, 2203, 2211, 2222, 2228, 2238, 2300, 2305, 2312, 2316, 2322, 2326, 2335, 2342, 2348, 2353, 2359, 2364, 2096, 2105, 2118, 2124, 2134, 2140, 2147, 2159, 2170, 2179, 2184, 2194, 2256, 2261, 2267, 2271, 2278, 2284, 2290, 2298, 2305, 2310, 2315, 2319, 2054, 2061, 2073, 2081, 2089, 2096, 2103, 2116, 2127, 2135, 2142, 2150, 2211, 2216, 2223, 2228, 2232, 2240, 2249, 2254, 2260, 2267, 2271, 2276, 2007, 2017, 2029, 2038, 2044, 2053, 2062, 2073, 2083, 2091, 2098, 2105, 2167, 2172, 2179, 2183, 2189, 2197, 2202, 2212, 2214, 2223, 2227, 2235, 1965, 1975, 1986, 1995, 2001, 2010, 2018, 2028, 2037, 2047, 2054, 2062, 2123, 2127, 2135, 2139, 2146, 2154, 2158, 2168, 2168, 2179, 2181, 2192, 1922, 1932, 1942, 1951, 1958, 1965, 1973, 1984, 1994, 2003, 2010, 2019, 2079, 2083, 2091, 2093, 2101, 2111, 2115, 2124, 2128, 2134, 2138, 2147, 1879, 1888, 1901, 1907, 1916, 1921, 1930, 1942, 1951, 1959, 1966, 1976, 2035, 2037, 2047, 2049, 2057, 2067, 2070, 2081, 2085, 2088, 2095, 2102, 1835, 1845, 1857, 1863, 1871, 1878, 1888, 1899, 1908, 1914, 1922, 1932, 1991, 1994, 2002, 2008, 2013, 2021, 2027, 2038, 2040, 2045, 2052, 2060, 1791, 1800, 1814, 1820, 1828, 1834, 1842, 1856, 1865, 1870, 1878, 1889, 1946, 1953, 1958, 1962, 1969, 1978, 1985, 1994, 1997, 2001, 2008, 2016, 1749, 1757, 1768, 1776, 1783, 1792, 1800, 1812, 1821, 1826, 1833, 1846, 1902, 1907, 1913, 1919, 1924, 1935, 1944, 1949, 1953, 1958, 1963, 1972, 1705, 1715, 1726, 1732, 1740, 1747, 1759, 1769, 1777, 1782, 1790, 1802, 1857, 1864, 1868, 1875, 1881, 1889, 1898, 1905, 1909, 1913, 1922, 1928, 1663, 1669, 1682, 1687, 1696, 1702, 1715, 1726, 1734, 1738, 1746, 1758, 1813, 1820, 1824, 1831, 1837, 1846, 1857, 1860, 1864, 1870, 1877, 1884, 1620, 1625, 1638, 1644, 1652, 1660, 1673, 1682, 1690, 1696, 1701, 1714, 1768, 1776, 1780, 1786, 1795, 1801, 1813, 1818, 1820, 1827, 1837, 1838, 1575, 1585, 1593, 1601, 1608, 1617, 1630, 1638, 1645, 1651, 1657, 1670, 1724, 1731, 1736, 1740, 1754, 1763, 1768, 1772, 1777, 1780, 1793, 1795, 1531, 1539, 1551, 1558, 1565, 1574, 1586, 1594, 1602, 1608, 1613, 1626, 1681, 1686, 1692, 1700, 1712, 1719, 1725, 1727, 1732, 1738, 1746, 1752, 1488, 1496, 1507, 1514, 1521, 1531, 1543, 1550, 1557, 1565, 1569, 1581, 1639, 1644, 1646, 1657, 1668, 1673, 1682, 1683, 1688, 1693, 1701, 1708, 1447, 1452, 1463, 1472, 1476, 1486, 1498, 1506, 1513, 1521, 1525, 1537, 1596, 1602, 1606, 1614, 1622, 1629, 1637, 1639, 1643, 1650, 1660, 1661, 1402, 1410, 1419, 1426, 1433, 1445, 1454, 1462, 1469, 1475, 1481, 1493, 1554, 1559, 1565, 1570, 1581, 1588, 1590, 1596, 1599, 1609, 1614, 1619, 1357, 1366, 1376, 1382, 1389, 1402, 1410, 1418, 1425, 1431, 1437, 1449, 1511, 1515, 1522, 1524, 1536, 1543, 1548, 1550, 1555, 1565, 1572, 1575, 1313, 1322, 1332, 1340, 1345, 1358, 1366, 1375, 1381, 1388, 1394, 1404, 1466, 1470, 1477, 1482, 1492, 1497, 1502, 1507, 1513, 1519, 1525, 1532, 1269, 1277, 1288, 1296, 1303, 1314, 1322, 1333, 1337, 1344, 1350, 1360, 1422, 1426, 1433, 1437, 1448, 1456, 1459, 1461, 1466, 1476, 1480, 1485, 1226, 1237, 1244, 1252, 1260, 1269, 1278, 1288, 1293, 1300, 1307, 1316, 1378, 1381, 1388, 1394, 1403, 1409, 1414, 1419, 1421, 1434, 1437, 1440, 1182, 1196, 1202, 1209, 1217, 1225, 1234, 1245, 1249, 1255, 1265, 1272, 1333, 1337, 1344, 1350, 1360, 1367, 1368, 1373, 1378, 1389, 1392, 1397, 1137, 1150, 1158, 1165, 1177, 1183, 1190, 1200, 1205, 1211, 1221, 1228, 1288, 1293, 1299, 1308, 1314, 1323, 1324, 1328, 1337, 1345, 1348, 1355, 1094, 1104, 1113, 1121, 1134, 1138, 1146, 1156, 1160, 1167, 1177, 1184, 1244, 1250, 1255, 1263, 1272, 1276, 1281, 1284, 1293, 1301, 1306, 1308, 1052, 1060, 1071, 1077, 1089, 1095, 1103, 1112, 1116, 1123, 1133, 1140, 1200, 1205, 1211, 1220, 1226, 1234, 1235, 1242, 1249, 1254, 1261, 1266, 1008, 1018, 1028, 1035, 1045, 1050, 1059, 1068, 1072, 1079, 1089, 1095, 1155, 1161, 1166, 1178, 1181, 1190, 1191, 1198, 1203, 1213, 1217, 1222, 965, 974, 982, 992, 1002, 1006, 1015, 1024, 1028, 1035, 1044, 1051, 1111, 1118, 1123, 1133, 1137, 1145, 1148, 1154, 1160, 1168, 1173, 1178, 922, 929, 939, 947, 958, 963, 973, 979, 985, 990, 1000, 1008, 1067, 1074, 1078, 1090, 1093, 1100, 1103, 1109, 1117, 1125, 1129, 1132, 877, 888, 895, 904, 914, 918, 928, 935, 943, 946, 955, 965, 1022, 1029, 1033, 1045, 1050, 1055, 1059, 1065, 1073, 1081, 1087, 1090, 835, 843, 851, 861, 869, 874, 884, 891, 898, 902, 911, 921, 978, 985, 988, 1001, 1007, 1012, 1013, 1022, 1030, 1036, 1041, 1045, 791, 799, 808, 819, 826, 830, 841, 847, 854, 858, 868, 876, 933, 940, 944, 957, 963, 966, 972, 976, 985, 991, 997, 1003, 747, 754, 766, 775, 781, 786, 799, 802, 809, 814, 826, 832, 889, 896, 901, 912, 919, 922, 927, 932, 942, 948, 952, 957, 703, 712, 720, 733, 737, 741, 754, 759, 766, 770, 781, 788, 844, 852, 860, 868, 874, 878, 882, 888, 899, 903, 908, 915, 659, 668, 679, 688, 693, 698, 711, 714, 721, 726, 737, 744, 800, 807, 817, 823, 830, 834, 837, 843, 855, 859, 862, 871, 616, 626, 635, 644, 649, 656, 665, 670, 676, 684, 693, 699, 756, 763, 772, 779, 786, 789, 793, 799, 811, 817, 819, 827, 571, 582, 592, 601, 604, 610, 622, 626, 632, 639, 648, 655, 713, 719, 728, 735, 741, 745, 750, 758, 768, 770, 775, 784, 527, 538, 549, 555, 561, 566, 577, 583, 588, 595, 604, 610, 670, 674, 684, 690, 697, 701, 707, 713, 723, 727, 730, 739, 486, 493, 505, 512, 516, 522, 533, 540, 544, 550, 560, 566, 625, 630, 639, 646, 653, 656, 663, 671, 678, 684, 688, 694, 441, 451, 461, 468, 472, 477, 489, 496, 499, 506, 516, 522, 581, 585, 595, 602, 608, 612, 618, 627, 634, 640, 642, 650, 399, 407, 417, 424, 428, 434, 444, 451, 455, 462, 471, 477, 537, 541, 553, 557, 564, 568, 574, 583, 590, 596, 598, 606, 353, 366, 373, 380, 384, 391, 401, 407, 411, 418, 428, 433, 492, 498, 509, 515, 520, 523, 530, 539, 545, 551, 558, 559, 313, 323, 331, 335, 341, 348, 356, 363, 367, 373, 385, 389, 448, 455, 465, 472, 475, 480, 485, 496, 501, 505, 513, 518, 271, 279, 285, 293, 295, 306, 312, 319, 323, 329, 341, 345, 403, 411, 420, 427, 431, 436, 441, 453, 458, 462, 466, 473, 222, 236, 244, 248, 252, 260, 269, 275, 279, 286, 297, 300, 359, 366, 376, 383, 387, 392, 399, 408, 412, 416, 425, 427, 179, 193, 200, 203, 208, 217, 223, 232, 235, 243, 253, 256, 315, 322, 331, 338, 343, 348, 353, 364, 371, 373, 380, 385, 135, 147, 154, 160, 164, 173, 180, 186, 192, 199, 208, 211, 270, 277, 288, 293, 298, 303, 311, 320, 326, 332, 337, 340, 94, 104, 109, 116, 120, 129, 136, 142, 148, 156, 164, 167, 226, 235, 243, 250, 253, 260, 266, 276, 280, 287, 294, 299, 53, 58, 67, 72, 76, 86, 93, 98, 104, 110, 121, 122, 181, 191, 199, 205, 209, 216, 221, 233, 238, 244, 246, 252, 5, 17, 24, 28, 30, 41, 49, 54, 60, 65, 75, 80, 137, 149, 155, 161, 165, 172, 181, 188, 190, 199, 203, 210, -35, -28, -20, -16, -12, -2, 4, 9, 15, 22, 31, 34, 93, 103, 112, 117, 125, 125, 134, 143, 150, 154, 159, 166, -79, -70, -63, -61, -56, -45, -38, -34, -28, -22, -12, -9, 48, 60, 72, 68, 76, 83, 91, 99, 104, 112, 115, 124, -121, -115, -108, -103, -101, -89, -82, -79, -72, -65, -57, -54, 5, 11, 24, 27, 31, 38, 48, 53, 59, 68, 72, 78, -165, -157, -153, -148, -145, -133, -126, -123, -117, -107, -102, -98, -37, -30, -20, -16, -11, -5, 5, 10, 16, 23, 30, 33, -210, -199, -197, -193, -188, -178, -171, -168, -162, -151, -146, -142, -82, -74, -64, -60, -55, -49, -37, -31, -27, -20, -15, -8, -256, -244, -240, -238, -231, -223, -215, -212, -205, -196, -190, -187, -126, -117, -108, -104, -97, -93, -81, -75, -70, -63, -59, -50, -295, -291, -284, -282, -275, -265, -259, -254, -250, -241, -231, -234, -170, -160, -152, -148, -142, -138, -124, -120, -115, -107, -105, -95, -339, -334, -329, -325, -317, -310, -303, -296, -293, -288, -279, -272, -214, -204, -197, -193, -186, -183, -171, -163, -158, -152, -149, -137, -386, -376, -374, -369, -362, -350, -348, -347, -338, -328, -323, -318, -258, -248, -241, -237, -230, -226, -215, -208, -203, -195, -192, -181, -432, -419, -417, -410, -408, -398, -393, -388, -383, -372, -369, -362, -300, -291, -286, -282, -274, -269, -258, -251, -246, -242, -235, -226, -470, -462, -465, -457, -450, -442, -437, -430, -426, -417, -412, -406, -345, -335, -330, -326, -319, -311, -303, -296, -290, -284, -280, -269, -516, -511, -508, -501, -493, -487, -481, -475, -472, -460, -456, -449, -389, -379, -374, -371, -364, -354, -346, -339, -334, -330, -321, -312, -561, -554, -549, -547, -539, -530, -526, -519, -516, -504, -500, -492, -433, -423, -419, -415, -407, -399, -391, -385, -376, -373, -365, -356, -603, -599, -594, -591, -583, -574, -569, -563, -560, -548, -545, -536, -478, -468, -463, -459, -451, -443, -435, -428, -421, -418, -410, -401, -650, -643, -638, -634, -627, -617, -614, -607, -603, -593, -590, -579, -522, -512, -507, -502, -496, -486, -478, -473, -465, -464, -452, -446, -691, -686, -681, -679, -668, -662, -658, -652, -646, -637, -634, -622, -565, -556, -552, -545, -541, -530, -522, -518, -508, -505, -496, -489, -734, -729, -727, -722, -713, -707, -701, -696, -690, -681, -678, -667, -608, -600, -596, -590, -586, -574, -565, -560, -553, -551, -539, -529, -779, -774, -771, -765, -759, -750, -745, -740, -734, -726, -722, -711, -652, -645, -641, -634, -629, -617, -609, -606, -596, -593, -583, -576, -824, -819, -815, -809, -801, -794, -791, -785, -778, -771, -763, -756, -697, -689, -685, -677, -673, -660, -653, -648, -642, -638, -624, -619, -867, -863, -859, -854, -846, -838, -834, -829, -820, -815, -804, -800, -741, -733, -729, -721, -717, -705, -699, -693, -687, -680, -669, -661, -911, -906, -904, -898, -890, -883, -877, -874, -865, -859, -848, -844, -784, -778, -773, -766, -761, -750, -742, -738, -731, -726, -714, -706, -954, -953, -947, -942, -931, -927, -921, -918, -910, -902, -892, -889, -827, -822, -818, -811, -803, -792, -786, -782, -773, -771, -758, -751, -999, -995, -993, -986, -975, -972, -966, -961, -954, -945, -936, -933, -871, -866, -862, -854, -848, -836, -830, -824, -819, -812, -801, -796, -1043, -1039, -1035, -1031, -1021, -1016, -1010, -1004, -998, -990, -980, 0, -916, -911, -906, -899, -891, -880, -875, -868, -863, -852, -844, -839, -1088, -1083, -1079, -1075, -1068, -1061, -1055, -1050, -1042, -1032, -1025, -1022, -960, -955, -950, -943, -936, -925, -918, -911, -907, -897, -887, -883, -1131, -1130, -1123, -1120, -1109, -1104, -1100, -1094, -1084, -1076, -1069, -1065, -1004, -999, -994, -987, -980, -969, -963, -956, -950, -941, -933, -924, -1175, -1174, -1169, -1163, -1153, -1149, -1143, -1136, -1127, -1120, -1114, -1108, -1049, -1044, -1036, -1031, -1023, -1013, -1007, -999, -995, -987, -974, -969, -1221, -1216, -1214, -1207, -1196, -1192, -1188, -1180, -1170, -1165, -1158, -1152, -1093, -1088, -1081, -1076, -1066, -1057, -1051, -1043, -1038, -1032, -1019, -1013, -1265, -1262, -1257, -1251, -1241, -1235, -1232, -1225, -1212, -1209, -1203, -1197, -1137, -1132, -1124, -1120, -1111, -1100, -1095, -1087, -1082, -1071, -1063, -1058, -1309, -1306, -1301, -1294, -1286, -1281, -1276, -1266, -1256, -1253, -1247, -1241, -1181, -1176, -1169, -1163, -1156, -1144, -1139, -1131, -1126, -1115, -1107, -1102, -1352, -1350, -1344, -1337, -1329, -1327, -1321, -1309, -1300, -1296, -1292, -1286, -1226, -1221, -1213, -1206, -1198, -1188, -1182, -1176, -1172, -1159, -1151, -1146, -1398, -1395, -1388, -1381, -1374, -1370, -1365, -1353, -1345, -1339, -1336, -1330, -1270, -1265, -1257, -1250, -1242, -1232, -1225, -1220, -1214, -1203, -1195, -1189, -1442, -1437, -1433, -1425, -1418, -1413, -1408, -1398, -1389, -1383, -1380, -1374, -1314, -1309, -1302, -1294, -1287, -1276, -1269, -1265, -1258, -1247, -1240, -1232, -1486, -1483, -1476, -1470, -1463, -1456, -1449, -1442, -1433, -1427, -1424, -1419, -1358, -1354, -1346, -1338, -1331, -1321, -1313, -1309, -1301, -1291, -1282, -1277, -1529, -1526, -1522, -1514, -1506, -1499, -1493, -1486, -1478, -1472, -1469, -1462, -1402, -1396, -1390, -1383, -1374, -1365, -1358, -1353, -1346, -1334, -1325, -1320, -1575, -1568, -1565, -1557, -1551, -1543, -1537, -1531, -1522, -1516, -1513, -1506, -1447, -1439, -1434, -1427, -1415, -1409, -1401, -1396, -1389, -1377, -1369, -1364, -1619, -1613, -1611, -1599, -1594, -1587, -1580, -1574, -1567, -1561, -1558, -1551, -1491, -1484, -1479, -1471, 0, 0, 0, 0, -1433, -1423, -1414, -1406, -1663, -1658, -1654, -1643, -1640, -1630, -1623, -1617, -1611, -1605, -1601, -1594, -1535, -1528, -1523, -1515, -1503, -1497, -1489, -1483, -1477, -1464, -1458, -1450, -1707, -1702, -1697, -1686, -1683, -1673, -1667, -1661, -1656, -1650, -1644, -1637, -1579, -1572, -1567, -1559, -1546, 0, -1533, 0, 0, 0, 0, 0, -1751, -1746, -1741, -1729, -1724, -1717, -1712, -1706, -1700, -1693, -1688, -1681, -1624, -1616, -1611, -1603, 0, -1583, 0, -1573, -1561, -1549, -1545, -1537, -1794, -1789, -1785, -1773, -1768, -1762, -1755, -1750, -1744, -1738, -1732, -1724, 0, 0, -1654, -1648, -1635, -1627, -1622, -1616, -1607, -1594, -1589, -1579, -1838, -1832, -1829, -1816, -1813, -1806, -1800, -1794, -1787, -1783, -1777, -1768, -1712, -1705, -1697, -1691, -1679, -1672, -1665, -1660, -1649, -1639, -1632, -1624, -1882, -1876, -1873, -1859, -1855, -1852, -1843, -1837, -1830, -1827, -1821, -1812, -1757, -1749, -1741, -1734, 0, -1716, -1709, -1704, -1693, -1682, -1673, -1666, -1927, -1923, -1916, -1904, -1898, -1894, -1888, -1880, -1874, -1871, -1866, -1857, -1801, -1793, -1785, -1779, -1766, -1759, -1753, -1747, -1737, -1726, -1716, -1708, -1970, -1965, -1960, -1946, -1943, -1939, -1933, -1925, -1919, -1916, -1910, -1901, -1843, -1837, -1829, -1823, -1810, -1802, -1798, -1790, -1780, -1769, -1760, 0, -2013, -2009, -2002, -1992, -1986, -1982, -1978, -1969, -1963, -1960, -1954, -1946, -1886, -1881, -1873, -1864, -1855, -1847, -1841, -1836, -1822, -1812, -1805, 0, -2058, -2051, -2046, -2036, -2031, -2025, -2022, -2014, -2008, -2005, -1999, -1989, -1930, -1925, -1917, -1907, -1899, -1890, -1885, -1877, -1868, -1858, -1845, -1840, -2100, -2095, -2087, -2079, -2077, -2069, -2066, -2058, -2052, -2048, -2043, -2032, -1975, -1970, -1962, -1951, -1942, -1935, -1929, -1921, -1911, -1902, -1889, -1882, -2142, -2135, -2131, -2123, -2120, -2114, -2111, -2103, -2097, -2092, -2087, -2076, -2019, -2013, -2005, -1996, -1987, -1979, -1973, -1965, -1954, -1945, -1935, -1924, -2187, -2180, -2174, -2167, -2164, -2158, -2155, -2147, -2141, -2136, -2132, -2120, -2063, -2057, -2049, -2037, -2030, -2022, -2017, -2008, -1996, -1988, -1980, -1971, -2231, -2224, -2219, -2211, -2208, -2203, -2198, -2191, -2185, -2180, -2176, -2165, -2107, -2102, -2094, -2081, -2073, -2066, -2062, -2051, -2039, -2030, -2022, -2012, -2278, -2269, -2262, -2257, -2252, -2247, -2241, -2234, -2230, -2224, -2220, -2209, -2151, -2146, -2137, -2127, -2116, -2111, -2105, -2096, -2083, -2074, -2064, -2053, -2319, -2314, -2307, -2300, -2296, -2292, -2286, -2277, -2273, -2268, -2264, -2253, -2196, -2190, -2182, -2169, -2161, -2154, -2148, -2139, -2125, -2119, -2107, -2100, -2365, -2356, -2348, -2345, -2340, -2336, -2331, -2323, -2318, -2312, -2308, -2298, -2240, -2233, -2226, -2211, -2205, -2197, -2191, -2182, -2170, -2163, -2153, -2137, -2408, -2400, -2394, -2388, -2386, -2379, -2375, -2367, -2362, -2357, -2351, -2342, -2282, -2275, -2269, -2255, -2247, -2242, -2233, -2226, -2213, -2204, -2196, -2184, -2450, -2442, -2438, -2434, -2431, -2423, -2418, -2410, -2407, -2401, -2395, -2386, -2323, -2319, -2314, -2300, -2291, -2285, -2278, -2268, -2255, -2247, -2239, -2230, -2493, -2489, -2482, -2477, -2472, -2468, -2463, -2454, -2451, -2445, -2438, -2430, -2367, -2363, -2358, -2344, -2335, -2330, -2321, -2312, -2297, -2287, -2284, -2271, -2539, -2532, -2526, -2521, -2517, -2513, -2507, -2499, -2494, -2489, -2480, -2475, -2412, -2407, -2401, -2388, -2379, -2373, -2365, -2354, -2341, -2332, -2322, -2315, -2583, -2577, -2569, -2565, -2561, -2557, -2551, -2543, -2537, -2534, -2525, -2519, -2454, -2450, -2442, -2431, -2422, -2416, -2409, -2398, -2385, -2375, -2367, -2355, -2628, -2622, -2612, -2611, -2605, -2601, -2596, -2587, -2581, -2578, -2569, -2562, -2498, -2491, -2483, -2474, -2466, -2461, -2450, -2442, -2428, -2420, -2410, -2401, -2670, -2668, -2658, -2655, -2653, -2645, -2639, -2631, -2626, -2622, -2614, -2604, -2542, -2534, -2528, -2516, -2509, -2505, -2495, -2485, -2472, -2461, -2455, -2443, -2713, -2715, -2702, -2700, -2696, -2689, -2682, -2676, -2671, -2667, -2658, -2649, -2586, -2578, -2572, -2562, -2554, -2548, -2540, -2526, -2516, -2507, -2497, -2484, -2758, -2759, -2746, -2744, -2738, -2733, -2726, -2720, -2716, -2710, -2703, -2693, -2629, -2622, -2615, -2607, -2597, -2588, -2581, -2571, -2560, -2546, -2537, -2532, -2805, -2797, -2791, -2788, -2782, -2778, -2769, -2765, -2759, -2753, -2746, -2737, -2672, -2664, -2657, -2646, -2638, -2635, -2625, -2610, -2604, -2593, -2584, -2570, -2848, -2840, -2836, -2833, -2826, -2824, -2814, -2809, -2803, -2797, -2789, -2780, -2716, -2709, -2698, -2687, -2682, -2672, -2671, -2653, -2646, -2634, -2627, -2614, -2890, -2887, -2879, -2876, -2871, -2867, -2857, -2853, -2847, -2841, -2832, -2826, -2761, -2753, -2741, -2725, -2727, -2720, -2710, -2696, -2686, -2678, -2671, -2657, -2937, -2930, -2924, -2919, -2914, -2911, -2900, -2897, -2891, -2885, -2876, -2870, -2801, -2797, -2787, -2774, -2768, -2762, -2752, -2741, -2730, -2722, -2713, -2701, -2981, -2972, -2967, -2962, -2960, -2954, -2944, -2941, -2936, -2929, -2921, -2915, -2849, -2840, -2827, -2818, -2812, -2803, -2796, -2781, -2774, -2766, -2755, -2743, -3023, -3017, -3013, -3005, -3002, -2999, -2989, -2986, -2980, -2974, -2965, -2959, -2892, -2883, -2871, -2862, -2855, -2846, -2838, -2822, -2817, -2810, -2798, -2786, -3067, -3061, -3056, -3051, -3046, -3042, -3034, -3031, -3024, -3018, -3009, -3003, -2935, -2926, -2914, -2906, -2898, -2888, -2882, -2866, -2860, -2849, -2842, -2833, -3111, -3106, -3099, -3095, -3092, -3088, -3076, -3074, -3069, -3061, -3052, -3044, -2979, -2970, -2958, -2949, -2943, -2933, -2925, -2912, -2900, -2894, -2885, -2878, -3155, -3150, -3143, -3139, -3137, -3133, -3121, -3117, -3111, -3105, -3100, -3092, -3023, -3014, -3002, -2993, -2986, -2979, -2969, -2955, -2944, -2935, -2930, -2915, -3202, -3191, -3189, -3184, -3180, -3173, -3163, -3161, -3160, -3151, -3141, -3136, -3067, -3058, -3046, -3037, -3030, -3021, -3009, -2999, -2988, -2978, -2972, -2958, -3245, -3235, -3232, -3228, -3222, -3217, -3212, -3205, -3201, -3194, -3184, -3180, -3112, -3101, -3088, -3080, -3073, -3064, -3053, -3041, -3031, -3023, -3013, -3000, -3287, -3278, -3273, -3276, -3269, -3258, -3255, -3249, -3245, -3239, -3228, -3224, -3155, -3147, -3132, -3124, -3117, -3108, -3098, -3085, -3073, -3063, -3056, -3042, -3330, -3324, -3321, -3316, -3313, -3304, -3299, -3293, -3290, -3281, -3272, -3268, -3198, -3189, -3177, -3167, -3161, -3152, -3142, -3127, -3119, -3108, -3098, -3086, -3373, -3369, -3362, -3361, -3357, -3347, -3342, -3338, -3333, -3325, -3316, -3313, -3242, -3231, -3218, -3213, -3204, -3194, -3184, -3171, -3162, -3150, -3144, -3127, -3416, -3414, -3406, -3405, -3400, -3390, -3388, -3382, -3378, -3369, -3360, -3357, -3285, -3274, -3262, -3254, -3248, -3238, -3228, -3213, -3205, -3193, -3185, -3172, -3460, -3457, -3453, -3448, -3442, -3438, -3431, -3426, -3420, -3414, -3405, -3401, -3328, -3317, -3305, -3298, -3289, -3284, -3268, -3256, -3247, -3237, -3227, -3214, -3506, -3500, -3494, -3495, -3487, -3479, -3476, -3470, -3464, -3456, -3449, -3445, -3372, -3361, -3349, -3342, -3333, -3325, -3315, -3296, -3290, -3280, -3270, -3256, -3546, -3545, -3540, -3537, -3532, -3524, -3520, -3514, -3508, -3501, -3493, -3489, -3415, -3405, -3393, -3385, -3377, -3367, -3358, -3344, -3333, -3323, -3311, -3300, -3593, -3590, -3584, -3581, -3576, -3567, -3563, -3559, -3553, -3545, -3537, -3531, -3459, -3449, -3436, -3429, -3420, -3411, -3398, -3385, -3377, -3366, -3354, -3342, -3641, -3632, -3629, -3625, -3622, -3612, -3606, -3603, -3597, -3588, -3581, -3572, -3502, -3492, -3480, -3472, -3461, -3454, -3441, -3429, -3419, -3411, -3396, -3385, -3681, -3677, -3673, -3669, -3664, -3656, -3650, -3647, -3641, -3630, -3625, -3616, -3546, -3536, -3522, -3516, -3506, -3499, -3486, -3471, -3460, -3452, -3443, -3426, -3726, -3720, -3717, -3714, -3707, -3700, -3694, -3690, -3684, -3672, -3667, -3660, -3589, -3579, -3567, -3560, -3550, -3541, -3529, -3516, -3503, -3495, -3484, -3472, -3770, -3766, -3761, -3758, -3750, -3744, -3739, -3732, -3728, -3713, -3708, -3704, -3633, -3622, -3611, -3603, -3593, -3583, -3571, -3558, -3546, -3539, -3527, -3512, -3812, -3809, -3805, -3802, -3794, -3789, -3783, -3773, -3771, -3756, -3752, -3747, -3677, -3663, -3654, -3647, -3636, -3626, -3614, -3600, -3589, -3581, -3566, -3556, -3858, -3851, -3848, -3848, -3836, -3834, -3827, -3817, -3812, -3800, -3796, -3789, -3720, -3705, -3698, -3690, -3679, -3669, -3658, -3644, -3633, -3624, -3610, -3598, -3899, -3896, -3893, -3892, -3880, -3878, -3871, -3861, -3856, -3844, -3840, -3833, -3764, -3748, -3741, -3733, -3722, -3712, -3700, -3687, -3676, -3667, -3651, -3642, -3941, -3942, -3937, -3933, -3926, -3918, -3915, -3904, -3899, -3889, -3885, -3878, -3807, -3792, -3785, -3776, -3766, -3754, -3742, -3730, -3717, -3709, -3694, -3683, -3986, -3986, -3982, -3974, -3968, -3958, -3957, -3949, -3943, -3933, -3929, -3922, -3851, -3835, -3828, -3820, -3809, -3798, -3784, -3774, -3760, -3753, -3738, -3724, -4029, -4029, -4025, -4020, -4011, -4002, -3999, -3993, -3986, -3977, -3973, -3966, -3895, -3879, -3871, -3861, -3853, -3842, -3827, -3814, -3804, -3796, -3781, -3767, -4073, -4069, -4067, -4064, -4054, -4047, -4043, -4037, -4030, -4021, -4017, -4010, -3938, -3922, -3915, -3904, -3895, -3883, -3869, -3859, -3846, -3838, -3818, -3810, -4119, -4112, -4113, -4103, -4096, -4090, -4087, -4081, -4073, -4065, -4061, -4054, -3982, -3966, -3958, -3947, -3938, -3927, -3912, -3899, -3890, -3879, -3864, -3853, -4160, -4157, -4154, -4145, -4144, -4134, -4131, -4125, -4115, -4109, -4105, -4098, -4024, -4009, -4001, -3990, -3980, -3969, -3955, -3944, -3932, -3924, -3905, -3893, -4204, -4202, -4197, -4193, -4184, -4177, -4175, -4169, -4158, -4153, -4149, -4142, -4066, -4052, -4044, -4032, -4025, -4013, -3996, -3987, -3975, -3965, -3946, -3935, -4249, -4245, -4242, -4236, -4230, -4221, -4219, -4213, -4203, -4197, -4193, -4186, -4110, -4096, -4087, -4076, -4068, -4056, -4039, -4028, -4017, -4007, -3990, -3978, -4291, -4287, -4288, -4279, -4273, -4268, -4262, -4258, -4248, -4241, -4237, -4230, -4152, -4139, -4130, -4119, -4110, -4099, -4082, -4071, -4060, -4048, -4031, -4022, -4338, -4332, -4330, -4322, -4318, -4311, -4305, -4301, -4290, -4285, -4280, -4274, -4196, -4182, -4174, -4162, -4152, -4141, -4124, -4113, -4103, -4089, -4075, -4062, -4379, -4379, -4375, -4363, -4361, -4354, -4350, -4345, -4333, -4329, -4322, -4318, -4238, -4225, -4217, -4206, -4195, -4184, -4168, -4154, -4146, -4134, -4117, -4103, -4423, -4422, -4420, -4406, -4405, -4399, -4393, -4390, -4377, -4374, -4366, -4362, -4278, -4269, -4261, -4249, -4238, -4226, -4211, -4198, -4187, -4176, -4157, -4147, -4469, -4465, -4463, -4452, -4445, -4445, -4437, -4433, -4422, -4417, -4410, -4406, -4323, -4312, -4304, -4292, -4280, -4269, -4252, -4239, -4229, -4217, -4200, -4190, -4514, -4508, -4507, -4499, -4491, -4488, -4482, -4474, -4466, -4462, -4454, -4449, -4365, -4355, -4346, -4334, -4323, -4310, -4296, -4283, -4274, -4260, -4242, -4231, -4555, -4557, -4550, -4542, -4535, -4533, -4527, -4517, -4510, -4505, -4498, -4493, -4407, -4398, -4388, -4377, -4367, -4354, -4339, -4326, -4314, -4300, -4283, -4274, -4601, -4598, -4594, -4586, -4580, -4576, -4570, -4561, -4554, -4550, -4542, -4536, -4452, -4442, -4430, -4421, -4409, -4395, -4380, -4368, -4357, -4343, -4326, -4316, -4643, -4644, -4635, -4628, -4623, -4622, -4614, -4606, -4598, -4593, -4586, -4578, -4495, -4485, -4473, -4464, -4452, -4437, -4423, -4412, -4399, -4382, -4371, -4357, -4690, -4687, -4679, -4676, -4667, -4663, -4659, -4650, -4642, -4637, -4630, -4622, -4537, -4528, -4516, -4507, -4494, -4479, -4464, -4452, -4443, -4426, -4410, -4398, -4733, -4732, -4722, -4716, -4713, -4707, -4702, -4693, -4686, -4680, -4674, -4665, -4580, -4571, -4559, -4549, -4537, -4521, -4507, -4493, -4484, -4465, -4452, -4439, -4780, -4772, -4768, -4760, -4756, -4751, -4746, -4737, -4730, -4722, -4718, -4708, -4623, -4614, -4602, -4592, -4580, -4563, -4548, -4536, -4526, -4509, -4494, -4478, -4825, -4817, -4811, -4805, -4799, -4795, -4790, -4781, -4774, -4767, -4762, -4751, -4666, -4657, -4645, -4635, -4622, -4608, -4591, -4579, -4567, -4549, -4537, -4520, -4865, -4865, -4852, -4847, -4845, -4839, -4834, -4823, -4818, -4811, -4806, -4795, -4709, -4700, -4687, -4677, -4665, -4650, -4630, -4622, -4609, -4592, -4579, -4564, -4911, -4906, -4902, -4889, -4890, -4882, -4879, -4867, -4862, -4855, -4850, -4839, -4752, -4743, -4730, -4719, -4706, -4693, -4676, -4664, -4649, -4634, -4621, -4606, -4956, -4948, -4946, -4937, -4933, -4927, -4923, -4910, -4906, -4898, -4893, -4883, -4795, -4786, -4773, -4761, -4750, -4733, -4716, -4706, -4691, -4675, -4662, -4646, -4997, -4994, -4988, -4980, -4977, -4970, -4966, -4954, -4950, -4942, -4937, -4926, -4839, -4829, -4816, -4803, -4792, -4777, -4758, -4748, -4734, -4720, -4699, -4687, -5041, -5037, -5032, -5023, -5021, -5016, -5009, -4998, -4994, -4986, -4979, -4970, -4881, -4870, -4858, -4845, -4835, -4819, -4803, -4790, -4776, -4761, -4743, -4727, -5084, -5081, -5074, -5069, -5064, -5059, -5050, -5042, -5037, -5030, -5022, -5012, -4924, -4911, -4901, -4888, -4876, -4861, -4844, -4832, -4817, -4800, -4786, -4768, -5130, -5123, -5116, -5112, -5108, -5103, -5093, -5087, -5081, -5074, -5066, -5056, -4967, -4954, -4944, -4930, -4917, -4903, -4885, -4875, -4858, -4840, -4829, -4808, -5172, -5168, -5163, -5155, -5152, -5148, -5136, -5130, -5124, -5118, -5110, -5100, -5010, -4996, -4986, -4973, -4959, -4946, -4927, -4915, -4900, -4884, -4868, -4851, -5219, -5209, -5205, -5200, -5196, -5192, -5179, -5174, -5167, -5161, -5153, -5142, -5052, -5039, -5029, -5015, -5000, -4985, -4969, -4959, -4939, -4927, -4909, -4891, -5260, -5255, -5247, -5245, -5241, -5235, -5223, -5218, -5210, -5205, -5197, -5185, -5095, -5082, -5071, -5058, -5043, -5027, -5010, -4999, -4981, -4966, -4947, -4935, -5301, -5297, -5294, -5288, -5283, -5279, -5266, -5262, -5254, -5249, -5240, -5227, -5138, -5125, -5114, -5100, -5085, -5066, -5053, -5039, -5024, -5004, -4990, -4974, -5348, -5337, -5338, -5334, -5327, -5323, -5310, -5306, -5298, -5293, -5285, -5270, -5181, -5167, -5156, -5142, -5126, -5109, -5096, -5082, -5061, -5047, -5028, -5011, -5392, -5386, -5380, -5378, -5373, -5365, -5354, -5350, -5342, -5336, -5328, -5314, -5223, -5209, -5197, -5184, -5169, -5151, -5138, -5124, -5108, -5089, -5072, -5058, -5436, -5428, -5422, -5421, -5417, -5409, -5397, -5393, -5385, -5380, -5372, -5357, -5266, -5252, -5240, -5226, -5212, -5192, -5180, -5164, -5144, -5134, -5113, -5094, -5480, -5472, -5467, -5463, -5461, -5453, -5442, -5436, -5429, -5424, -5414, -5401, -5308, -5294, -5282, -5268, -5254, -5233, -5219, -5207, -5188, -5170, -5151, -5132, -5522, -5514, -5512, -5509, -5503, -5495, -5486, -5482, -5472, -5466, -5456, -5445, -5351, -5337, -5323, -5310, -5295, -5276, -5261, -5246, -5228, -5213, -5193, -5175, -5565, -5560, -5557, -5550, -5547, -5537, -5530, -5525, -5518, -5507, -5500, -5488, -5392, -5379, -5364, -5351, -5336, -5315, -5304, -5287, -5270, -5251, -5229, -5212, -5612, -5605, -5598, -5597, -5590, -5581, -5576, -5568, -5561, -5553, -5542, -5532, -5433, -5421, -5406, -5394, -5379, -5357, -5345, -5328, -5310, -5294, -5273, -5254, -5654, -5647, -5645, -5638, -5635, -5629, -5617, -5612, -5605, -5596, -5588, -5573, -5475, -5464, -5449, -5434, -5421, -5399, -5383, -5369, -5353, -5334, -5312, -5297, -5698, -5691, -5689, -5683, -5679, -5668, -5661, -5655, -5648, -5639, -5630, -5619, -5518, -5506, -5491, -5475, -5461, -5442, -5425, -5411, -5389, -5375, -5353, -5337, -5741, -5735, -5733, -5728, -5724, -5709, -5705, -5697, -5692, -5683, -5673, -5662, -5560, -5545, -5533, -5520, -5502, -5484, -5468, -5449, -5434, -5416, -5392, -5376, -5783, -5779, -5775, -5772, -5768, -5755, -5749, -5742, -5736, -5727, -5714, -5705, -5604, -5591, -5575, -5558, -5544, -5522, -5510, -5489, -5475, -5455, -5434, -5417, -5827, -5823, -5821, -5817, -5809, -5800, -5793, -5785, -5780, -5771, -5756, -5749, -5644, -5632, -5616, -5600, -5586, -5563, -5551, -5531, -5514, -5499, -5474, -5456, -5872, -5866, -5866, -5859, -5851, -5842, -5837, -5829, -5823, -5814, -5799, -5792, -5686, -5673, -5658, -5642, -5627, -5602, -5590, -5572, -5556, -5535, -5513, -5497, -5915, -5910, -5908, -5904, -5892, -5886, -5881, -5873, -5867, -5857, -5842, -5834, -5728, -5715, -5699, -5682, -5667, -5645, -5633, -5612, -5596, -5576, -5554, -5535, -5956, -5955, -5952, -5947, -5935, -5930, -5925, -5916, -5909, -5900, -5884, -5882, -5770, -5757, -5741, -5724, -5708, -5687, -5672, -5651, -5634, -5615, -5594, -5574, -6002, -5997, -5991, -5991, -5979, -5974, -5967, -5958, -5953, -5946, -5929, -5921, -5810, -5798, -5782, -5764, -5748, -5726, -5709, -5690, -5675, -5656, -5632, -5613, -6046, -6040, -6038, -6033, -6022, -6014, -6013, -6005, -5996, -5985, -5972, -5966, -5854, -5838, -5823, -5806, -5788, -5767, -5751, -5731, -5714, -5693, -5673, -5653, -6086, -6085, -6079, -6072, -6068, -6061, -6055, -6047, -6039, -6028, -6017, -6007, -5895, -5880, -5865, -5848, -5831, -5810, -5793, -5773, -5753, -5734, -5712, -5692, -6128, -6125, -6126, -6117, -6108, -6105, -6098, -6089, -6081, -6072, -6059, -6049, -5937, -5921, -5907, -5888, -5871, -5850, -5830, -5813, -5796, -5774, -5749, -5732, 0, -6171, -6168, -6159, -6151, -6146, -6140, -6130, -6125, -6115, -6102, -6091, -5979, -5962, -5947, -5931, -5911, -5891, -5873, -5853, -5833, -5812, -5790, -5772, 0, 0, 0, 0, -6194, -6190, -6184, -6174, -6167, -6158, -6145, -6134, -6020, -6003, -5988, -5970, -5952, -5930, -5913, -5894, -5873, -5854, -5828, -5809, 0, 0, 0, 0, 0, -6231, -6227, -6217, -6208, -6197, -6189, -6178, -6061, -6044, -6028, -6011, -5990, -5973, -5949, -5933, -5915, -5891, -5866, -5848, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6236, -6232, -6221, -6102, -6085, -6067, -6051, -6030, -6012, -5992, -5967, -5951, -5928, -5905, -5885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6262, -6143, -6126, -6108, -6092, -6071, -6049, -6032, -6011, -5990, -5968, -5942, -5925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6185, -6167, -6149, -6132, -6112, -6091, -6069, -6050, -6030, -6005, -5984, -5962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6226, -6208, -6190, -6173, -6149, -6131, -6109, -6089, -6068, -6047, -6021, -6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6190, -6171, -6149, -6127, -6110, -6080, -6060, -6036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6211, -6188, -6165, -6147, -6120, -6095, -6077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6226, -6206, -6184, -6157, -6134, -6113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6224, -6196, -6170, -6150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6258, -6232, -6208, -6187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6272, -6246, -6223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6281, -6262}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1998-6-avhrr.dat.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1998-6-avhrr.dat.dmp deleted file mode 100644 index ae2d0c8e24a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/1998-6-avhrr.dat.dmp +++ /dev/null @@ -1,22 +0,0 @@ -netcdf \1998-6-avhrr { -types: - compound GSO_AVHRR_record_t { - string satellite ; - int year ; - int day_num ; - int hh ; - int mm ; - int ss ; - string DODS_URL ; - }; // GSO_AVHRR_record_t - GSO_AVHRR_record_t(*) GSO_AVHRR_t ; -variables: - GSO_AVHRR_t GSO_AVHRR ; - -// global attributes: - string :Server = "DODS FreeFrom based on FFND release 4.2.3" ; -data: - - GSO_AVHRR = - {{"f", 98, 152, 7, 45, 33, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98152074533.pvu.Z"}, {"f", 98, 152, 19, 11, 2, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98152191102.pvu.Z"}, {"f", 98, 153, 18, 59, 32, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98153185932.pvu.Z"}, {"f", 98, 154, 7, 23, 29, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98154072329.pvu.Z"}, {"f", 98, 154, 18, 48, 19, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98154184819.pvu.Z"}, {"f", 98, 155, 7, 12, 41, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98155071241.pvu.Z"}, {"f", 98, 155, 18, 37, 23, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98155183723.pvu.Z"}, {"f", 98, 156, 7, 2, 17, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98156070217.pvu.Z"}, {"f", 98, 156, 18, 26, 36, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98156182636.pvu.Z"}, {"f", 98, 157, 6, 50, 56, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98157065056.pvu.Z"}, {"f", 98, 157, 8, 33, 28, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98157083328.pvu.Z"}, {"f", 98, 157, 18, 16, 24, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98157181624.pvu.Z"}, {"f", 98, 158, 6, 39, 41, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98158063941.pvu.Z"}, {"f", 98, 158, 8, 20, 55, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98158082055.pvu.Z"}, {"f", 98, 158, 18, 5, 53, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98158180553.pvu.Z"}, {"f", 98, 159, 8, 9, 30, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98159080930.pvu.Z"}, {"f", 98, 159, 17, 55, 24, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98159175524.pvu.Z"}, {"f", 98, 160, 7, 57, 43, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98160075743.pvu.Z"}, {"f", 98, 160, 17, 45, 0, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98160174500.pvu.Z"}, {"f", 98, 160, 19, 24, 48, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98160192448.pvu.Z"}, {"f", 98, 161, 7, 46, 40, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98161074640.pvu.Z"}, {"f", 98, 161, 19, 12, 32, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98161191232.pvu.Z"}, {"f", 98, 162, 7, 35, 46, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98162073546.pvu.Z"}, {"f", 98, 162, 19, 0, 24, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98162190024.pvu.Z"}, {"f", 98, 163, 7, 24, 28, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98163072428.pvu.Z"}, {"f", 98, 163, 18, 49, 23, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98163184923.pvu.Z"}, {"f", 98, 164, 7, 13, 38, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98164071338.pvu.Z"}, {"f", 98, 164, 18, 38, 27, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98164183827.pvu.Z"}, {"f", 98, 165, 7, 2, 57, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98165070257.pvu.Z"}, {"f", 98, 165, 18, 27, 35, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98165182735.pvu.Z"}, {"f", 98, 166, 6, 52, 18, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98166065218.pvu.Z"}, {"f", 98, 166, 8, 34, 34, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98166083434.pvu.Z"}, {"f", 98, 166, 18, 17, 2, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98166181702.pvu.Z"}, {"f", 98, 167, 6, 41, 39, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98167064139.pvu.Z"}, {"f", 98, 167, 8, 22, 43, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98167082243.pvu.Z"}, {"f", 98, 167, 18, 7, 1, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98167180701.pvu.Z"}, {"f", 98, 168, 8, 10, 18, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98168081018.pvu.Z"}, {"f", 98, 168, 17, 55, 57, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98168175557.pvu.Z"}, {"f", 98, 169, 7, 58, 46, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98169075846.pvu.Z"}, {"f", 98, 169, 17, 45, 20, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98169174520.pvu.Z"}, {"f", 98, 169, 19, 25, 49, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98169192549.pvu.Z"}, {"f", 98, 172, 7, 26, 24, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98172072624.pvu.Z"}, {"f", 98, 172, 18, 50, 31, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98172185031.pvu.Z"}, {"f", 98, 173, 7, 15, 7, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98173071507.pvu.Z"}, {"f", 98, 173, 18, 39, 39, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98173183939.pvu.Z"}, {"f", 98, 174, 7, 4, 21, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98174070421.pvu.Z"}, {"f", 98, 174, 18, 28, 45, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98174182845.pvu.Z"}, {"f", 98, 175, 6, 53, 9, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98175065309.pvu.Z"}, {"f", 98, 175, 8, 34, 47, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98175083447.pvu.Z"}, {"f", 98, 175, 18, 18, 0, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98175181800.pvu.Z"}, {"f", 98, 176, 6, 42, 36, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98176064236.pvu.Z"}, {"f", 98, 176, 8, 23, 26, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98176082326.pvu.Z"}, {"f", 98, 176, 18, 7, 33, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98176180733.pvu.Z"}, {"f", 98, 177, 8, 12, 9, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98177081209.pvu.Z"}, {"f", 98, 177, 17, 58, 16, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98177175816.pvu.Z"}, {"f", 98, 178, 7, 59, 55, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98178075955.pvu.Z"}, {"f", 98, 178, 17, 46, 39, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98178174639.pvu.Z"}, {"f", 98, 178, 19, 26, 28, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98178192628.pvu.Z"}, {"f", 98, 179, 7, 49, 7, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98179074907.pvu.Z"}, {"f", 98, 179, 19, 14, 33, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98179191433.pvu.Z"}, {"f", 98, 180, 7, 37, 55, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98180073755.pvu.Z"}, {"f", 98, 180, 19, 2, 15, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98180190215.pvu.Z"}, {"f", 98, 181, 7, 26, 32, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98181072632.pvu.Z"}, {"f", 98, 181, 18, 51, 33, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/f98181185133.pvu.Z"}, {"h", 98, 152, 11, 31, 30, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98152113130.pvu.Z"}, {"h", 98, 152, 21, 13, 6, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98152211306.pvu.Z"}, {"h", 98, 153, 11, 8, 49, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98153110849.pvu.Z"}, {"h", 98, 153, 22, 28, 41, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98153222841.pvu.Z"}, {"h", 98, 154, 10, 46, 29, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98154104629.pvu.Z"}, {"h", 98, 154, 22, 6, 15, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98154220615.pvu.Z"}, {"h", 98, 155, 10, 24, 57, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98155102457.pvu.Z"}, {"h", 98, 155, 21, 44, 42, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98155214442.pvu.Z"}, {"h", 98, 156, 10, 3, 43, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98156100343.pvu.Z"}, {"h", 98, 156, 11, 44, 27, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98156114427.pvu.Z"}, {"h", 98, 156, 21, 24, 6, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98156212406.pvu.Z"}, {"h", 98, 157, 11, 20, 15, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98157112015.pvu.Z"}, {"h", 98, 157, 22, 41, 39, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98157224139.pvu.Z"}, {"h", 98, 158, 10, 58, 6, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98158105806.pvu.Z"}, {"h", 98, 158, 22, 17, 55, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98158221755.pvu.Z"}, {"h", 98, 159, 10, 36, 33, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98159103633.pvu.Z"}, {"h", 98, 159, 21, 56, 28, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98159215628.pvu.Z"}, {"h", 98, 160, 10, 14, 53, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98160101453.pvu.Z"}, {"h", 98, 160, 21, 35, 20, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98160213520.pvu.Z"}, {"h", 98, 161, 11, 33, 39, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98161113339.pvu.Z"}, {"h", 98, 161, 21, 14, 29, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98161211429.pvu.Z"}, {"h", 98, 162, 11, 10, 6, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98162111006.pvu.Z"}, {"h", 98, 162, 22, 30, 38, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98162223038.pvu.Z"}, {"h", 98, 163, 10, 48, 6, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98163104806.pvu.Z"}, {"h", 98, 163, 22, 8, 7, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98163220807.pvu.Z"}, {"h", 98, 164, 10, 26, 24, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98164102624.pvu.Z"}, {"h", 98, 164, 21, 46, 14, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98164214614.pvu.Z"}, {"h", 98, 165, 10, 5, 0, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98165100500.pvu.Z"}, {"h", 98, 165, 11, 46, 23, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98165114623.pvu.Z"}, {"h", 98, 165, 21, 25, 5, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98165212505.pvu.Z"}, {"h", 98, 166, 11, 22, 37, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98166112237.pvu.Z"}, {"h", 98, 166, 22, 43, 43, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98166224343.pvu.Z"}, {"h", 98, 167, 11, 0, 11, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98167110011.pvu.Z"}, {"h", 98, 167, 22, 19, 49, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98167221949.pvu.Z"}, {"h", 98, 168, 10, 38, 13, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98168103813.pvu.Z"}, {"h", 98, 168, 21, 58, 4, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98168215804.pvu.Z"}, {"h", 98, 169, 10, 16, 21, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98169101621.pvu.Z"}, {"h", 98, 169, 21, 36, 31, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98169213631.pvu.Z"}, {"h", 98, 172, 10, 50, 12, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98172105012.pvu.Z"}, {"h", 98, 172, 22, 9, 42, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98172220942.pvu.Z"}, {"h", 98, 173, 10, 28, 25, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98173102825.pvu.Z"}, {"h", 98, 173, 21, 48, 23, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98173214823.pvu.Z"}, {"h", 98, 174, 10, 6, 38, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98174100638.pvu.Z"}, {"h", 98, 174, 21, 27, 4, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98174212704.pvu.Z"}, {"h", 98, 175, 11, 23, 43, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98175112343.pvu.Z"}, {"h", 98, 175, 21, 6, 8, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98175210608.pvu.Z"}, {"h", 98, 176, 11, 2, 38, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98176110238.pvu.Z"}, {"h", 98, 176, 22, 21, 17, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98176222117.pvu.Z"}, {"h", 98, 177, 10, 40, 56, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98177104056.pvu.Z"}, {"h", 98, 177, 21, 59, 37, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98177215937.pvu.Z"}, {"h", 98, 178, 10, 18, 35, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98178101835.pvu.Z"}, {"h", 98, 178, 21, 38, 16, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98178213816.pvu.Z"}, {"h", 98, 179, 11, 37, 50, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98179113750.pvu.Z"}, {"h", 98, 179, 21, 18, 5, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98179211805.pvu.Z"}, {"h", 98, 180, 11, 14, 15, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98180111415.pvu.Z"}, {"h", 98, 180, 22, 34, 27, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98180223427.pvu.Z"}, {"h", 98, 181, 10, 52, 2, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98181105202.pvu.Z"}, {"h", 98, 181, 22, 11, 28, "http://dods.gso.uri.edu/cgi-bin/nph-dsp/avhrr/1998/6/h98181221128.pvu.Z"}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/D1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/D1.dmp deleted file mode 100644 index 22e9891a957..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/D1.dmp +++ /dev/null @@ -1,16 +0,0 @@ -netcdf D1 { -types: - compound Drifters_record_t { - string instrument_id ; - string location ; - double latitude ; - double longitude ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665}, {"This is a data test string (pass 2).", "This is a data test string (pass 3).", 999.800006666578, 999.550033748988}, {"This is a data test string (pass 4).", "This is a data test string (pass 5).", 999.200106660978, 998.750260394966}, {"This is a data test string (pass 6).", "This is a data test string (pass 7).", 998.200539935204, 997.55100025328}, {"This is a data test string (pass 8).", "This is a data test string (pass 9).", 996.801706302619, 995.952733011994}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Drifters.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Drifters.dmp deleted file mode 100644 index 7ccbd1884e9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Drifters.dmp +++ /dev/null @@ -1,31 +0,0 @@ -netcdf Drifters { -types: - compound Drifters_record_t { - string Drifter_ID ; - string Date_Sampled ; - double Latitude ; - double Longitude ; - double SST ; - double Ed_490 ; - double Lu_412 ; - double Lu_443 ; - double Lu_490 ; - double Lu_510 ; - double Lu_555 ; - double Lu_670 ; - double Lu_683 ; - double CHL ; - double FLH ; - string Region ; - double Decimal_Day ; - string Calibration_File ; - string Drifter_Type ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, "This is a data test string (pass 2).", 991.561893714788, "This is a data test string (pass 3).", "This is a data test string (pass 4)."}, {"This is a data test string (pass 5).", "This is a data test string (pass 6).", 990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, "This is a data test string (pass 7).", 963.770896365891, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}, {"This is a data test string (pass 10).", "This is a data test string (pass 11).", 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, "This is a data test string (pass 12).", 917.120822816605, "This is a data test string (pass 13).", "This is a data test string (pass 14)."}, {"This is a data test string (pass 15).", "This is a data test string (pass 16).", 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, "This is a data test string (pass 17).", 852.524522059506, "This is a data test string (pass 18).", "This is a data test string (pass 19)."}, {"This is a data test string (pass 20).", "This is a data test string (pass 21).", 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, "This is a data test string (pass 22).", 771.246014997106, "This is a data test string (pass 23).", "This is a data test string (pass 24)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/EOSDB.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/EOSDB.dmp deleted file mode 100644 index 613414ee6c2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/EOSDB.dmp +++ /dev/null @@ -1,129 +0,0 @@ -netcdf EOSDB { -types: - compound Abbott_Image_Data_record_t { - string Image_Name ; - string Date_Sampled ; - double North_Latitude ; - double South_Latitude ; - double West_Longitude ; - double East_Longitude ; - string Version ; - int Julian_Date ; - string PI ; - string Algorithm_Code ; - string Project ; - string Comments ; - }; // Abbott_Image_Data_record_t - Abbott_Image_Data_record_t(*) Abbott_Image_Data_t ; - compound Sat_Images_record_t { - string Image_Name ; - string Date_Sampled ; - double North_Latitude ; - double South_Latitude ; - double West_Longitude ; - double East_Longintude ; - string Version ; - string Satellite ; - string Instrument ; - string Channel ; - string Resolution ; - int Image_Size ; - string Image_Type ; - int Image_Bits_Per_Pixel ; - int Image_Width ; - int Image_Height ; - ubyte Image(1000) ; - int Raw_Image_Size ; - ubyte Raw_Image_Data(1000) ; - int Year ; - string Month ; - int Day ; - int Hour ; - }; // Sat_Images_record_t - Sat_Images_record_t(*) Sat_Images_t ; - compound Drifters_record_t { - string Instrument_ID ; - double Battery ; - double Checksum ; - double Date_Age ; - double Ed490 ; - double Ed490_stdev ; - double Latitude ; - double Longitude ; - double Lu412 ; - double Lu412_stdev ; - double Lu443 ; - double Lu443_stdev ; - double Lu490 ; - double Lu490_stdev ; - double Lu510 ; - double Lu510_stdev ; - double Lu555 ; - double Lu555_stdev ; - double Lu670 ; - double Lu670_stdev ; - double Lu683 ; - double Lu683_stdev ; - double Max_Depth ; - double Night_Len ; - double Number_Samples ; - double Num_Aves ; - double Press_Volts ; - double Sea_Surface_Temperature ; - double Sub_Wait ; - double Surf_Volts ; - double Surface_Average ; - double Surface_Percent ; - double Julian_Greenwich ; - double Sun_Angle ; - int Optical_Flag ; - int Sampling_Flag ; - int Tracking_Flag ; - int Hand_Checked_Flag ; - double Julian_Local_Time ; - string Date_Greenwich ; - string Date_Local_Time ; - string DateStamp ; - string algo_code ; - int GPS_hour ; - double GPS_lat ; - double GPS_lon ; - double rel1_lat ; - double rel1_lon ; - double rel2_lat ; - double rel2_lon ; - int time_to_1st_fix ; - int message_ID ; - int max_GPS_volt ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; - compound Instrument_record_t { - string Instrument_ID ; - string Instrument_Type ; - string Sensor_Platform_ID ; - string Comment ; - }; // Instrument_record_t - Instrument_record_t(*) Instrument_t ; -variables: - Abbott_Image_Data_t Abbott_Image_Data ; - Sat_Images_t Sat_Images ; - Drifters_t Drifters ; - Instrument_t Instrument ; - -// global attributes: - string :history = "FERRET V4.11 (debug/no GUI) 19-Nov-95FERRET V4.20 (debug/no GUI) 12-Mar-96" ; - string :title = "COADS Surface Marine Observations (1854-1993)" ; -data: - - Abbott_Image_Data = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988, "This is a data test string (pass 2).", 1, "This is a data test string (pass 3).", "This is a data test string (pass 4).", "This is a data test string (pass 5).", "This is a data test string (pass 6)."}, {"This is a data test string (pass 7).", "This is a data test string (pass 8).", 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328, "This is a data test string (pass 9).", 2, "This is a data test string (pass 10).", "This is a data test string (pass 11).", "This is a data test string (pass 12).", "This is a data test string (pass 13)."}, {"This is a data test string (pass 14).", "This is a data test string (pass 15).", 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, "This is a data test string (pass 16).", 3, "This is a data test string (pass 17).", "This is a data test string (pass 18).", "This is a data test string (pass 19).", "This is a data test string (pass 20)."}, {"This is a data test string (pass 21).", "This is a data test string (pass 22).", 992.808635853866, 991.561893714788, 990.215996212637, 988.771077936042, "This is a data test string (pass 23).", 5, "This is a data test string (pass 24).", "This is a data test string (pass 25).", "This is a data test string (pass 26).", "This is a data test string (pass 27)."}, {"This is a data test string (pass 28).", "This is a data test string (pass 29).", 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, "This is a data test string (pass 30).", 8, "This is a data test string (pass 31).", "This is a data test string (pass 32).", "This is a data test string (pass 33).", "This is a data test string (pass 34)."}} ; - - Sat_Images = - {{"This is a data test string (pass 35).", "This is a data test string (pass 36).", 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, "This is a data test string (pass 37).", "This is a data test string (pass 38).", "This is a data test string (pass 39).", "This is a data test string (pass 40).", "This is a data test string (pass 41).", 13, "This is a data test string (pass 42).", 21, 34, 55, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 89, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 144, "This is a data test string (pass 43).", 233, 377}, {"This is a data test string (pass 44).", "This is a data test string (pass 45).", 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891, "This is a data test string (pass 46).", "This is a data test string (pass 47).", "This is a data test string (pass 48).", "This is a data test string (pass 49).", "This is a data test string (pass 50).", 610, "This is a data test string (pass 51).", 987, 1597, 2584, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 4181, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 6765, "This is a data test string (pass 52).", 10946, 17711}, {"This is a data test string (pass 53).", "This is a data test string (pass 54).", 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, "This is a data test string (pass 55).", "This is a data test string (pass 56).", "This is a data test string (pass 57).", "This is a data test string (pass 58).", "This is a data test string (pass 59).", 28657, "This is a data test string (pass 60).", 46368, 75025, 121393, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 196418, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 317811, "This is a data test string (pass 61).", 514229, 832040}, {"This is a data test string (pass 62).", "This is a data test string (pass 63).", 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, "This is a data test string (pass 64).", "This is a data test string (pass 65).", "This is a data test string (pass 66).", "This is a data test string (pass 67).", "This is a data test string (pass 68).", 1346269, "This is a data test string (pass 69).", 2178309, 3524578, 5702887, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 9227465, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 14930352, "This is a data test string (pass 70).", 24157817, 39088169}, {"This is a data test string (pass 71).", "This is a data test string (pass 72).", 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, "This is a data test string (pass 73).", "This is a data test string (pass 74).", "This is a data test string (pass 75).", "This is a data test string (pass 76).", "This is a data test string (pass 77).", 63245986, "This is a data test string (pass 78).", 102334155, 165580141, 267914296, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 433494437, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 701408733, "This is a data test string (pass 79).", 1134903170, 1836311903}} ; - - Drifters = - {{"This is a data test string (pass 80).", 921.060994002885, 917.120822816605, 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, 852.524522059506, 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106, 764.842187284488, 758.361875990508, 751.805729140895, -1323752223, 512559680, -811192543, -298632863, 745.17440234487, "This is a data test string (pass 81).", "This is a data test string (pass 82).", "This is a data test string (pass 83).", "This is a data test string (pass 84).", -1109825406, 738.468558729588, 731.688868873821, 724.836010740905, 717.910669610943, 710.913538012277, 703.845315652236, -1408458269, 1776683621, 368225352}, {"This is a data test string (pass 85).", 696.706709347165, 689.498432951747, 682.221207287613, 674.875760071267, 667.462825841308, 659.983145884982, 652.437468164051, 644.826547240001, 637.15114419858, 629.412026573696, 621.609968270664, 613.745749488811, 605.820156643462, 597.833982287298, 589.788025031098, 581.683089463883, 573.519986072456, 565.299531160354, 557.022546766217, 548.689860581587, 540.302305868139, 531.860721374355, 523.365951251649, 514.818844969955, 506.220257232778, 497.571047891726, 488.872081860527, 480.124229028533, 471.328364173739, 462.4853668753, 453.596121425577, 444.661516741706, 435.682446276712, 2144908973, -1781832971, 363076002, -1418756969, 426.659807930157, "This is a data test string (pass 86).", "This is a data test string (pass 87).", "This is a data test string (pass 88).", "This is a data test string (pass 89).", -1055680967, 417.594503958357, 408.487440884157, 399.339529406272, 390.151684308229, 380.924824366881, 371.659872260532, 1820529360, 764848393, -1709589543}, {"This is a data test string (pass 90).", 362.357754476673, 353.01940121933, 343.645746316046, 334.237727124502, 324.796284438775, 315.322362395268, 305.816908378288, 296.280872925318, 286.715209631955, 277.120875056557, 267.498828624587, 257.850032532669, 248.175451652372, 238.476053433722, 228.752807808459, 219.006687093041, 209.238665891418, 199.449720997572, 189.640831297833, 179.812977672998, 169.96714290024, 160.10431155483, 150.225469911685, 140.331605846736, 130.423708738144, 120.502769367366, 110.569779820068, 100.625733386931, 90.6716244643086, 80.7084484547995, 70.7372016677018, 60.7588812193848, 50.7744849335781, -944741150, 1640636603, 695895453, -1958435240, 40.7850112415899, "This is a data test string (pass 91).", "This is a data test string (pass 92).", "This is a data test string (pass 93).", "This is a data test string (pass 94).", -1262539787, 30.791459082465, 20.7948278030913, 10.7961170582663, 0.796326710732153, -9.20354326880945, -19.2024929016938, 1073992269, -188547518, 885444751}, {"This is a data test string (pass 95).", -29.1995223012899, -39.1936317729888, -49.1838219141717, -59.1690937141495, -69.1484486540633, -79.1208888067352, -89.0854169364603, -99.0410365987293, -108.986752239872, -118.921569296614, -128.844494295526, -138.754534952379, -148.650700271365, -158.532000644199, -168.397447949078, -178.246055649493, -188.076838892881, -197.88881460911, -207.681001608785, -217.452420681366, -227.202094693088, -236.929048684676, -246.632309968835, -256.310908227524, -265.963875608982, -275.590246824514, -285.189059245022, -294.759352997262, -304.300171059835, -313.810559358884, -323.289566863505, -332.736245680847, -342.1496511509, 696897233, 1582341984, -2015728079, -433386095, -351.528841940961, "This is a data test string (pass 96).", "This is a data test string (pass 97).", "This is a data test string (pass 98).", "This is a data test string (pass 99).", 1845853122, -360.872880139769, -370.180831351288, -379.451764788156, -388.684753364753, -397.878873789917, -407.033206659267, 1412467027, -1036647147, 375819880}, {"This is a data test string (pass 100).", -416.146836547144, -425.218852098153, -434.248346118301, -443.23441566571, -452.176162140912, -461.072691376713, -469.923113727602, -478.72654415872, -487.482102334359, -496.188912705998, -504.846104599857, -513.452812303959, -522.008175154706, -530.511337622944, -538.96144939951, -547.35766548027, -555.699146250611, -563.985057569408, -572.214570852435, -580.38686315522, -588.501117255343, -596.556521734157, -604.552271057927, -612.487565658382, -620.361612012677, -628.173622722736, -635.922816593999, -643.608418713537, -651.229660527542, -658.785779918184, -666.27602127982, -673.699635594557, -681.055880507149, -660827267, -285007387, -945834654, -1230842041, -688.344020399234, "This is a data test string (pass 101).", "This is a data test string (pass 102).", "This is a data test string (pass 103).", "This is a data test string (pass 104).", 2118290601, -695.563326462898, -702.71307677355, -709.792556362116, -716.801057286538, -723.737878702564, -730.602326933832, 887448560, -1289228135, -401779575}} ; - - Instrument = - {{"This is a data test string (pass 105).", "This is a data test string (pass 106).", "This is a data test string (pass 107).", "This is a data test string (pass 108)."}, {"This is a data test string (pass 109).", "This is a data test string (pass 110).", "This is a data test string (pass 111).", "This is a data test string (pass 112)."}, {"This is a data test string (pass 113).", "This is a data test string (pass 114).", "This is a data test string (pass 115).", "This is a data test string (pass 116)."}, {"This is a data test string (pass 117).", "This is a data test string (pass 118).", "This is a data test string (pass 119).", "This is a data test string (pass 120)."}, {"This is a data test string (pass 121).", "This is a data test string (pass 122).", "This is a data test string (pass 123).", "This is a data test string (pass 124)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.am b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.am deleted file mode 100644 index afb4391247e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.4 2009/11/20 03:06:37 dmh Exp $ -EXTRA_DIST=\ -123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \ -1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \ -bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \ -D1.dmp data.nc.dmp Drifters.dmp \ -EOSDB.dmp fnoc1.nc.dmp in1.nc.dmp \ -in_2.nc.dmp ingrid.dmp in.nc.dmp \ -in_no_three_double_dmn.nc.dmp in_v.nc.dmp nestedDAS.dmp \ -NestedSeq2.dmp NestedSeq.dmp OverideExample.dmp \ -pbug0001b.dmp saco1.nc.dmp SimpleDrdsExample.dmp \ -synth1.dmp synth2.dmp synth3.dmp \ -synth4.dmp synth5.dmp synth6.dmp \ -synth7.dmp synth8.dmp test.01.dmp \ -test.02.dmp test.03.dmp test.04.dmp \ -test.05.dmp test.06a.dmp test.07a.dmp \ -test.07.dmp test.21.dmp test.22.dmp \ -test.23.dmp test.31.dmp test.50.dmp \ -test.53.dmp test.55.dmp test.56.dmp \ -test.57.dmp test.66.dmp test.67.dmp \ -test.68.dmp test.69.dmp test.an1.dmp \ -test.dfp1.dmp test.dfr1.dmp test.dfr2.dmp \ -test.dfr3.dmp test.gr1.dmp test.gr2.dmp \ -test.gr3.dmp test.gr4.dmp test.gr5.dmp \ -test.nc.dmp test.PointFile.dmp test.sds1.dmp \ -test.sds2.dmp test.sds3.dmp test.sds4.dmp \ -test.sds5.dmp test.sds6.dmp test.sds7.dmp \ -test.vs1.dmp test.vs2.dmp test.vs3.dmp \ -test.vs4.dmp test.vs5.dmp text.nc.dmp \ -whoi.dmp CMakeLists.txt diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.in deleted file mode 100644 index 509cb84b158..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/Makefile.in +++ /dev/null @@ -1,531 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdap_test/expected4 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# $Id: Makefile.am,v 1.4 2009/11/20 03:06:37 dmh Exp $ -EXTRA_DIST = \ -123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \ -1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \ -bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \ -D1.dmp data.nc.dmp Drifters.dmp \ -EOSDB.dmp fnoc1.nc.dmp in1.nc.dmp \ -in_2.nc.dmp ingrid.dmp in.nc.dmp \ -in_no_three_double_dmn.nc.dmp in_v.nc.dmp nestedDAS.dmp \ -NestedSeq2.dmp NestedSeq.dmp OverideExample.dmp \ -pbug0001b.dmp saco1.nc.dmp SimpleDrdsExample.dmp \ -synth1.dmp synth2.dmp synth3.dmp \ -synth4.dmp synth5.dmp synth6.dmp \ -synth7.dmp synth8.dmp test.01.dmp \ -test.02.dmp test.03.dmp test.04.dmp \ -test.05.dmp test.06a.dmp test.07a.dmp \ -test.07.dmp test.21.dmp test.22.dmp \ -test.23.dmp test.31.dmp test.50.dmp \ -test.53.dmp test.55.dmp test.56.dmp \ -test.57.dmp test.66.dmp test.67.dmp \ -test.68.dmp test.69.dmp test.an1.dmp \ -test.dfp1.dmp test.dfr1.dmp test.dfr2.dmp \ -test.dfr3.dmp test.gr1.dmp test.gr2.dmp \ -test.gr3.dmp test.gr4.dmp test.gr5.dmp \ -test.nc.dmp test.PointFile.dmp test.sds1.dmp \ -test.sds2.dmp test.sds3.dmp test.sds4.dmp \ -test.sds5.dmp test.sds6.dmp test.sds7.dmp \ -test.vs1.dmp test.vs2.dmp test.vs3.dmp \ -test.vs4.dmp test.vs5.dmp text.nc.dmp \ -whoi.dmp CMakeLists.txt - -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 ncdap_test/expected4/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/expected4/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq.dmp deleted file mode 100644 index 0c8b0ae8f46..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf NestedSeq { -types: - short(*) stuff_t ; - compound person1_record_t { - int age ; - stuff_t stuff ; - }; // person1_record_t - person1_record_t(*) person1_t ; -variables: - person1_t person1 ; -data: - - person1 = - {{1, {0, 16, 32, 48, 64}}, {2, {80, 96, 112, 128, 144}}, {3, {160, 176, 192, 208, 224}}, {5, {240, 256, 272, 288, 304}}, {8, {320, 336, 352, 368, 384}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq2.dmp deleted file mode 100644 index 313984f12e4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/NestedSeq2.dmp +++ /dev/null @@ -1,35 +0,0 @@ -netcdf NestedSeq2 { -types: - compound person1.stuff_record_t { - short foo ; - short bar ; - }; // person1.stuff_record_t - person1.stuff_record_t(*) person1.stuff_t ; - compound person1_record_t { - int age ; - int size ; - person1.stuff_t stuff ; - }; // person1_record_t - person1_record_t(*) person1_t ; - compound stuff_record_t { - short foo ; - short bar ; - }; // stuff_record_t - stuff_record_t(*) stuff_t ; - compound person2_record_t { - int age ; - stuff_t stuff ; - int size ; - }; // person2_record_t - person2_record_t(*) person2_t ; -variables: - person1_t person1 ; - person2_t person2 ; -data: - - person1 = - {{1, 2, {{0, 16}, {32, 48}, {64, 80}, {96, 112}, {128, 144}}}, {3, 5, {{160, 176}, {192, 208}, {224, 240}, {256, 272}, {288, 304}}}, {8, 13, {{320, 336}, {352, 368}, {384, 400}, {416, 432}, {448, 464}}}, {21, 34, {{480, 496}, {512, 528}, {544, 560}, {576, 592}, {608, 624}}}, {55, 89, {{640, 656}, {672, 688}, {704, 720}, {736, 752}, {768, 784}}}} ; - - person2 = - {{144, {{800, 816}, {832, 848}, {864, 880}, {896, 912}, {928, 944}}, 233}, {377, {{960, 976}, {992, 1008}, {1024, 1040}, {1056, 1072}, {1088, 1104}}, 610}, {987, {{1120, 1136}, {1152, 1168}, {1184, 1200}, {1216, 1232}, {1248, 1264}}, 1597}, {2584, {{1280, 1296}, {1312, 1328}, {1344, 1360}, {1376, 1392}, {1408, 1424}}, 4181}, {6765, {{1440, 1456}, {1472, 1488}, {1504, 1520}, {1536, 1552}, {1568, 1584}}, 10946}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/OverideExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/OverideExample.dmp deleted file mode 100644 index 988374bcbf0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/OverideExample.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf OverideExample { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - data_t data ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/SimpleDrdsExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/SimpleDrdsExample.dmp deleted file mode 100644 index b5d36863ce3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/SimpleDrdsExample.dmp +++ /dev/null @@ -1,62 +0,0 @@ -netcdf SimpleDrdsExample { -types: - compound Drifters_record_t { - double battery ; - double checksum ; - double data_age ; - double ed490 ; - double ed490_stdev ; - string instrument_id ; - double flag_argos ; - double flag_gps ; - double flag_optical ; - double flag_sampling ; - double flag_tracking ; - double gpshour ; - double gpslat ; - double gpslon ; - double latitude ; - string location ; - double longitude ; - double lu412 ; - double lu412_stdev ; - double lu443 ; - double lu443_stdev ; - double lu490 ; - double lu490_stdev ; - double lu510 ; - double lu510_stdev ; - double lu555 ; - double lu555_stdev ; - double lu670 ; - double lu670_stdev ; - double lu683 ; - double lu683_stdev ; - double max_depth ; - double night_len ; - double nsamp ; - double numaves ; - double press_volts ; - double rellat1hr ; - double rellat2hr ; - double rellon1hr ; - double rellon2hr ; - double sst ; - double sub_wait ; - double surf_volts ; - double surface_average ; - double surface_percent ; - double time ; - double ttff ; - double maxgps ; - double rellat3hr ; - double rellon3hr ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, "This is a data test string (pass 0).", 998.750260394966, 998.200539935204, 997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, 991.561893714788, "This is a data test string (pass 1).", 990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891, 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, 917.120822816605, 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329}, {886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, "This is a data test string (pass 2).", 862.807070514761, 857.708681363824, 852.524522059506, 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, "This is a data test string (pass 3).", 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106, 764.842187284488, 758.361875990508, 751.805729140895, 745.17440234487, 738.468558729588, 731.688868873821, 724.836010740905, 717.910669610943, 710.913538012277, 703.845315652236, 696.706709347165, 689.498432951747, 682.221207287613, 674.875760071267, 667.462825841308, 659.983145884982, 652.437468164051, 644.826547240001, 637.15114419858, 629.412026573696, 621.609968270664, 613.745749488811, 605.820156643462, 597.833982287298, 589.788025031098, 581.683089463883}, {573.519986072456, 565.299531160354, 557.022546766217, 548.689860581587, 540.302305868139, "This is a data test string (pass 4).", 531.860721374355, 523.365951251649, 514.818844969955, 506.220257232778, 497.571047891726, 488.872081860527, 480.124229028533, 471.328364173739, 462.4853668753, "This is a data test string (pass 5).", 453.596121425577, 444.661516741706, 435.682446276712, 426.659807930157, 417.594503958357, 408.487440884157, 399.339529406272, 390.151684308229, 380.924824366881, 371.659872260532, 362.357754476673, 353.01940121933, 343.645746316046, 334.237727124502, 324.796284438775, 315.322362395268, 305.816908378288, 296.280872925318, 286.715209631955, 277.120875056557, 267.498828624587, 257.850032532669, 248.175451652372, 238.476053433722, 228.752807808459, 219.006687093041, 209.238665891418, 199.449720997572, 189.640831297833, 179.812977672998, 169.96714290024, 160.10431155483, 150.225469911685, 140.331605846736}, {130.423708738144, 120.502769367366, 110.569779820068, 100.625733386931, 90.6716244643086, "This is a data test string (pass 6).", 80.7084484547995, 70.7372016677018, 60.7588812193848, 50.7744849335781, 40.7850112415899, 30.791459082465, 20.7948278030913, 10.7961170582663, 0.796326710732153, "This is a data test string (pass 7).", -9.20354326880945, -19.2024929016938, -29.1995223012899, -39.1936317729888, -49.1838219141717, -59.1690937141495, -69.1484486540633, -79.1208888067352, -89.0854169364603, -99.0410365987293, -108.986752239872, -118.921569296614, -128.844494295526, -138.754534952379, -148.650700271365, -158.532000644199, -168.397447949078, -178.246055649493, -188.076838892881, -197.88881460911, -207.681001608785, -217.452420681366, -227.202094693088, -236.929048684676, -246.632309968835, -256.310908227524, -265.963875608982, -275.590246824514, -285.189059245022, -294.759352997262, -304.300171059835, -313.810559358884, -323.289566863505, -332.736245680847}, {-342.1496511509, -351.528841940961, -360.872880139769, -370.180831351288, -379.451764788156, "This is a data test string (pass 8).", -388.684753364753, -397.878873789917, -407.033206659267, -416.146836547144, -425.218852098153, -434.248346118301, -443.23441566571, -452.176162140912, -461.072691376713, "This is a data test string (pass 9).", -469.923113727602, -478.72654415872, -487.482102334359, -496.188912705998, -504.846104599857, -513.452812303959, -522.008175154706, -530.511337622944, -538.96144939951, -547.35766548027, -555.699146250611, -563.985057569408, -572.214570852435, -580.38686315522, -588.501117255343, -596.556521734157, -604.552271057927, -612.487565658382, -620.361612012677, -628.173622722736, -635.922816593999, -643.608418713537, -651.229660527542, -658.785779918184, -666.27602127982, -673.699635594557, -681.055880507149, -688.344020399234, -695.563326462898, -702.71307677355, -709.792556362116, -716.801057286538, -723.737878702564, -730.602326933832}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31.dmp deleted file mode 100644 index 1d5f1aadb99..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf b31 { -types: - compound b31_record_t { - double id ; - string class ; - string text ; - }; // b31_record_t - b31_record_t(*) b31_t ; -variables: - b31_t b31 ; - int b32 ; - string b32:billy = "Bob is my real name" ; - string b32:Robert = "Really wants to be called Billy" ; -data: - - b31 = - {{1000, "This is a data test string (pass 0).", "This is a data test string (pass 1)."}, {999.950000416665, "This is a data test string (pass 2).", "This is a data test string (pass 3)."}, {999.800006666578, "This is a data test string (pass 4).", "This is a data test string (pass 5)."}, {999.550033748988, "This is a data test string (pass 6).", "This is a data test string (pass 7)."}, {999.200106660978, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}} ; - - b32 = 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31a.dmp deleted file mode 100644 index 5e5a5fc8bf1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/b31a.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf b31a { -types: - compound b31_record_t { - double id ; - string class ; - string text ; - }; // b31_record_t - b31_record_t(*) b31_t ; -variables: - b31_t b31 ; -data: - - b31 = - {{1000, "This is a data test string (pass 0).", "This is a data test string (pass 1)."}, {999.950000416665, "This is a data test string (pass 2).", "This is a data test string (pass 3)."}, {999.800006666578, "This is a data test string (pass 4).", "This is a data test string (pass 5)."}, {999.550033748988, "This is a data test string (pass 6).", "This is a data test string (pass 7)."}, {999.200106660978, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/bears.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/bears.nc.dmp deleted file mode 100644 index eed1773b88c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/bears.nc.dmp +++ /dev/null @@ -1,53 +0,0 @@ -netcdf bears { -types: - compound bears_t { - string bears(2, 3) ; - int i(2) ; - float j(3) ; - }; // bears_t - compound order_t { - short order(2, 3) ; - int i(2) ; - float j(3) ; - }; // order_t - compound shot_t { - int shot(2, 3) ; - int i(2) ; - float j(3) ; - }; // shot_t - compound aloan_t { - float aloan(2, 3) ; - int i(2) ; - float j(3) ; - }; // aloan_t - compound cross_t { - double cross(2, 3) ; - int i(2) ; - float j(3) ; - }; // cross_t -dimensions: - l = 3 ; -variables: - bears_t bears ; - order_t order ; - shot_t shot ; - aloan_t aloan ; - cross_t cross ; - short l(l) ; - -// global attributes: - string :history = "This is an example of a multi-line global\\012attribute. It could be used for representing the\\012processing history of the data, for example." ; -data: - - bears = {{"ind", "ist", "ing", "uis", "hab", "le"}, {10, 20}, {2, 4, 6}} ; - - order = {{1, 2, 3, 4, 5, 6}, {10, 20}, {2, 4, 6}} ; - - shot = {{2, 3, 4, 5, 6, 7}, {10, 20}, {2, 4, 6}} ; - - aloan = {{3, 4, 5, 6, 7, 1e+12}, {10, 20}, {2, 4, 6}} ; - - cross = {{4, 5, 0.000244140625, 7, 8, 10000000000}, {10, 20}, {2, 4, 6}} ; - - l = 10, 9, 8 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ber-2002-10-01.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ber-2002-10-01.nc.dmp deleted file mode 100644 index d06e01d40b3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ber-2002-10-01.nc.dmp +++ /dev/null @@ -1,38 +0,0 @@ -netcdf ber-2002-10-01 { -types: - compound TSurfAir_t { - float TSurfAir(2, 10, 10) ; - double time(2) ; - double latitude(10) ; - double longitude(10) ; - }; // TSurfAir_t - compound Delta_Time_t { - double Delta_Time(2, 10, 10) ; - double time(2) ; - double latitude(10) ; - double longitude(10) ; - }; // Delta_Time_t - compound time_bnds_t { - double time_bnds(2, 2) ; - double time(2) ; - int nv(2) ; - }; // time_bnds_t -variables: - TSurfAir_t TSurfAir ; - Delta_Time_t Delta_Time ; - time_bnds_t time_bnds ; - -// global attributes: - string :Conventions = "CF-1.0" ; - string :Institution = "CSISS,GMU" ; -data: - - TSurfAir = - {{274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.9831, 273.9831, 273.9831, 273.9831, 273.9831, 274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.5546, 273.5546, 273.9831, 273.9831, 274.2321, 274.2136, 274.2136, 274.2136, 274.2136, 273.5546, 273.5546, 273.5546, 273.5546, 274.2321, 274.2321, 274.2136, 274.2136, 274.2136, 274.2136, 272.9281, 272.9281, 273.5546, 273.5546, 273.7883, 274.2321, 271.0015, 271.0015, 274.2136, 271.3818, 272.9281, 272.9281, 272.9281, 273.7883, 273.7883, 273.7883, 271.0015, 271.0015, 271.3818, 271.3818, 271.3818, 272.9281, 272.9281, 275.1449, 273.7883, 273.7883, 271.0015, 271.0015, 272.6438, 271.3818, 271.3818, 272.9281, 275.1449, 275.1449, 275.1449, 275.1449, 271.0015, 272.6438, 272.6438, 272.6438, 272.6438, 275.1449, 275.1449, 275.1449, 275.1449, 275.1449, 272.905, 272.905, 272.6438, 272.6438, 272.6438, 275.1449, 275.1449, 275.1449, 275.1449, 275.1449, 272.905, 272.905, 272.905, 272.905, 272.6438, 272.6438, 275.1449, 275.1449, 275.1449, 275.1449, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, -1, -1, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, -1, -1, 268.0008, 268.0008, 268.0008, 263.4927, 263.4927, 263.4927, 263.4927, 263.4927, -1, -1, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 263.4927, -1, -1, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, -1, -1, -1, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, -1, -1, -1, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 275.4808, 275.4808, 275.4808, 275.4808, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 268.0008, 275.4808, 275.4808, 275.4808, 275.4808, -1, -1, -1, -1, -1, 275.4808, 275.4808, 275.4808, 275.4808, 275.4808, -1, -1, -1, -1, -1, 275.4808, 275.4808, 275.4808, 275.4808, 275.4808}, {307589400, 307632600}, {55.125, 54.875, 54.625, 54.375, 54.125, 53.875, 53.625, 53.375, 53.125, 52.875}, {-106.125, -105.875, -105.625, -105.375, -105.125, -104.875, -104.625, -104.375, -104.125, -103.875}} ; - - Delta_Time = - {{29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29614.4520000219, 29606.4520000219, 29606.4520000219, 29606.4520000219, 29606.4520000219, 29606.4520000219, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29614.4520000219, 29614.4520000219, 29614.4520000219, 29606.4520000219, 29606.4520000219, 29614.3847849965, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29614.4520000219, 29614.4520000219, 29614.4520000219, 29614.4520000219, 29614.3847849965, 29614.3847849965, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.5192610025, 29622.4520310163, 29622.4520310163, 29614.4520000219, 29614.4520000219, 29622.3847849965, 29614.3847849965, 29630.5192610025, 29630.5192610025, 29622.5192610025, 29630.452015996, 29622.4520310163, 29622.4520310163, 29622.4520310163, 29622.3847849965, 29622.3847849965, 29622.3847849965, 29630.5192610025, 29630.5192610025, 29630.452015996, 29630.452015996, 29630.452015996, 29622.4520310163, 29622.4520310163, 29630.3848010302, 29622.3847849965, 29622.3847849965, 29630.5192610025, 29630.5192610025, 29638.4520000219, 29630.452015996, 29630.452015996, 29622.4520310163, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.5192610025, 29638.4520000219, 29638.4520000219, 29638.4520000219, 29638.4520000219, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29646.4520000219, 29646.4520000219, 29638.4520000219, 29638.4520000219, 29638.4520000219, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29646.4520000219, 29646.4520000219, 29646.4520000219, 29646.4520000219, 29638.4520000219, 29638.4520000219, 29630.3848010302, 29630.3848010302, 29630.3848010302, 29630.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 0, 0, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 0, 0, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 20918.3848010302, 0, 0, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20918.3848010302, 0, 0, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 0, 0, 0, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 0, 0, 0, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20902.3175550103, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357, 0, 0, 0, 0, 0, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357, 0, 0, 0, 0, 0, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357, 20878.3847700357}, {307589400, 307632600}, {55.125, 54.875, 54.625, 54.375, 54.125, 53.875, 53.625, 53.375, 53.125, 52.875}, {-106.125, -105.875, -105.625, -105.375, -105.125, -104.875, -104.625, -104.375, -104.125, -103.875}} ; - - time_bnds = - {{307559753.548, 307619046.452, 307611681.615199, 307653518.384801}, {307589400, 307632600}, {0, 1}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ceopL2AIRS2-2.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ceopL2AIRS2-2.nc.dmp deleted file mode 100644 index 4ea66c69f89..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ceopL2AIRS2-2.nc.dmp +++ /dev/null @@ -1,1141 +0,0 @@ -netcdf ceopL2AIRS2-2 { -dimensions: - H2OPressureLay = 14 ; - latitude = 20 ; - longitude = 20 ; - nv = 2 ; - time = 1 ; -variables: - double longitude(longitude) ; - string longitude:units = "degrees_east" ; - string longitude:standard_name = "longitude" ; - string longitude:axis = "X" ; - string longitude:long_name = "longitude" ; - double latitude(latitude) ; - string latitude:units = "degrees_north" ; - string latitude:standard_name = "latitude" ; - string latitude:axis = "Y" ; - string latitude:long_name = "latitude" ; - int H2OPressureLay(H2OPressureLay, nv) ; - string H2OPressureLay:long_name = "H2OPressureLay" ; - string H2OPressureLay:axis = "Z" ; - string H2OPressureLay:units = "mph" ; - int time(time) ; - string time:long_name = "time" ; - string time:axis = "T" ; - string time:units = "days since 1970-01-01" ; - float H2OMMRStd_Orbit_1735(time, H2OPressureLay, latitude, longitude) ; - H2OMMRStd_Orbit_1735:_FillValue = -1.f ; - string H2OMMRStd_Orbit_1735:unit = "gm/kg" ; - string H2OMMRStd_Orbit_1735:H2OPressureLay_ = "1100-1000,1000-925,925-850,850-700,700-600,600-500,500-400,400-300,300-250,250-200,200-150,150-100,100-70,70-50" ; - string H2OMMRStd_Orbit_1735:long_name = "H2OMMRStd_Orbit_1735" ; - string H2OMMRStd_Orbit_1735:GCTP_Projection_Name = "Geographic" ; - string H2OMMRStd_Orbit_1735:GCTP_Spheroid_Name = "Clarke 1866" ; - float H2OMMRStd_Orbit_1742(time, H2OPressureLay, latitude, longitude) ; - H2OMMRStd_Orbit_1742:_FillValue = -1.000001f ; - string H2OMMRStd_Orbit_1742:unit = "gm/kg" ; - string H2OMMRStd_Orbit_1742:H2OPressureLay_ = "1100-1000,1000-925,925-850,850-700,700-600,600-500,500-400,400-300,300-250,250-200,200-150,150-100,100-70,70-50" ; - string H2OMMRStd_Orbit_1742:long_name = "H2OMMRStd_Orbit_1742" ; - string H2OMMRStd_Orbit_1742:GCTP_Projection_Name = "Geographic" ; - string H2OMMRStd_Orbit_1742:GCTP_Spheroid_Name = "Clarke 1866" ; - -// global attributes: - string :Conventions = "CF-1.0" ; - string :Institution = "CSISS,GMU" ; -data: - - longitude = -99.865, -99.615, -99.365, -99.115, -98.865, -98.615, -98.365, - -98.115, -97.865, -97.615, -97.365, -97.115, -96.865, -96.615, -96.365, - -96.115, -95.865, -95.615, -95.365, -95.115 ; - - latitude = 38.985, 38.735, 38.485, 38.235, 37.985, 37.735, 37.485, 37.235, - 36.985, 36.735, 36.485, 36.235, 35.985, 35.735, 35.485, 35.235, 34.985, - 34.735, 34.485, 34.235 ; - - H2OPressureLay = - 1100, 1000, - 1000, 925, - 925, 850, - 850, 700, - 700, 600, - 600, 500, - 500, 400, - 400, 300, - 300, 250, - 250, 200, - 200, 150, - 150, 100, - 100, 70, - 70, 50 ; - - time = 11929 ; - - H2OMMRStd_Orbit_1735 = - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, 10.42683, _, _, 10.50696, _, _, _, _, _, _, _, - 10.56056, - _, _, _, 12.80856, _, 12.53336, _, _, _, _, _, _, _, _, 10.79308, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 10.73799, _, 10.32333, _, _, _, _, _, _, _, - 11.27027, _, - _, _, _, _, 11.43723, _, _, _, _, _, _, _, _, _, 10.72748, _, _, _, _, _, - _, _, _, _, _, _, _, 11.73406, _, _, 10.41096, _, _, _, _, _, _, 11.3389, - _, _, - _, _, _, _, 11.82485, _, _, _, _, _, _, _, _, 10.39163, _, _, _, _, _, _, - _, _, _, _, _, _, 10.89853, _, _, 11.66459, _, _, _, _, _, _, 11.35826, _, - _, _, - _, _, _, 11.95294, _, _, 12.85001, _, _, _, _, _, 11.58182, _, _, 11.48493, - _, _, _, _, - 12.63652, _, _, _, _, _, _, _, 12.44498, _, _, _, _, _, _, _, _, _, _, - 12.52124, - _, _, 12.86209, _, _, 11.68635, _, _, _, _, _, 11.64139, _, _, _, 11.40699, - _, _, _, _, - _, _, _, _, _, _, _, _, 12.62054, _, _, 12.03271, _, _, _, _, _, _, _, - 11.11348, - _, _, _, _, 12.85148, _, _, _, _, _, _, _, _, _, 11.59873, _, _, _, _, _, - _, _, _, _, _, _, _, 12.63671, _, _, 11.81004, _, _, _, _, _, _, _, - 11.73362, _, - _, _, _, 12.47033, _, _, _, _, _, _, _, _, _, 11.85189, _, _, _, _, _, _, - _, _, _, _, _, _, 13.5238, _, _, 11.49611, _, _, _, _, _, _, _, 11.82039, - _, _, - 12.64256, _, _, 10.61772, _, _, _, _, _, _, _, _, _, 11.55755, _, _, _, _, - _, _, - 13.49446, _, _, _, _, 11.76018, _, _, 11.84233, _, _, _, _, _, _, _, - 11.58694, _, _, _, - _, _, 12.71752, _, _, 12.82097, _, _, _, _, _, _, 11.63417, _, _, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 10.14486, _, _, _, _, _, _, _, 12.36346, _, _, _, - _, 12.72816, _, _, 13.71777, _, _, _, _, _, _, 11.91062, _, _, _, 11.59973, - _, _, _, _, - _, _, _, _, _, _, _, _, 9.772367, _, _, 9.194705, _, _, _, _, _, _, _, - 8.683325, - 10.35767, _, _, 10.68043, _, 10.18837, _, _, _, _, _, _, _, _, 9.048093, _, - _, _, _, _, - 10.18949, _, _, _, _, _, _, _, 10.30815, _, 9.592661, _, _, _, _, _, _, _, - 9.373028, _, - _, _, 9.146196, _, 9.810217, _, _, _, _, _, _, _, _, _, 9.358518, _, _, _, - _, _, - _, _, _, _, _, _, _, 10.23776, _, _, 9.660467, _, _, _, _, _, _, 9.624987, - _, _, - _, 10.56269, _, _, 10.60803, _, _, _, _, _, _, _, _, 9.116282, _, _, _, _, - _, _, - _, _, _, _, _, _, 10.73553, _, _, 10.14109, _, _, _, _, _, _, 9.459518, _, - _, _, - _, 10.21269, _, 10.68794, _, _, 12.32669, _, _, _, _, _, 10.68715, _, _, - 9.579394, _, _, _, _, - 10.92445, _, _, _, _, _, _, _, 11.65137, _, _, _, _, _, _, _, _, _, _, - 10.15341, - _, _, 10.98302, _, _, 10.09634, _, _, _, _, _, 10.3263, _, _, _, 9.548866, - _, _, _, _, - _, _, _, _, _, _, _, _, 11.66984, _, _, 10.2735, _, _, _, _, _, _, _, - 10.53038, - _, _, 12.02855, _, 13.01514, _, _, _, _, _, _, _, _, _, 9.876745, _, _, _, - _, _, - _, _, _, _, _, _, _, 11.80927, _, _, 10.25012, _, _, _, _, _, _, _, - 10.49022, _, - _, 13.92397, _, 14.31709, _, _, _, _, _, _, _, _, _, 10.16798, _, _, _, _, - _, _, - _, _, _, _, _, _, 12.20892, _, _, 10.36588, _, _, _, _, _, _, _, 9.964018, - _, _, - 11.79558, _, _, 13.02969, _, _, _, _, _, _, _, _, _, 9.703039, _, _, _, _, - _, _, - 11.58657, _, _, _, _, 11.06567, _, _, 9.924013, _, _, _, _, _, _, _, - 9.357682, _, _, _, - _, _, 11.74401, _, _, 11.24235, _, _, _, _, _, _, 9.304838, _, _, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 7.050066, _, _, _, _, _, _, _, 10.15053, _, _, _, - _, 13.24752, _, _, 11.99925, _, _, _, _, _, _, 9.49575, _, _, _, 9.066326, - _, _, _, _, - _, _, _, _, _, _, _, _, 8.918771, _, _, 7.158425, _, _, _, _, _, _, _, - 5.771627, - 7.256557, _, _, 8.523567, _, 8.7319, _, _, _, _, _, _, _, _, 6.294191, _, - _, _, _, _, - 7.559494, _, _, _, _, _, _, _, 9.083248, _, 7.687873, _, _, _, _, _, _, _, - 6.267635, _, - _, _, 8.126592, _, 8.317467, _, _, _, _, _, _, _, _, _, 6.758687, _, _, _, - _, _, - _, _, _, _, _, _, _, 9.071494, _, _, 7.74412, _, _, _, _, _, _, 6.747161, - _, _, - _, 8.175607, _, _, 8.297558, _, _, _, _, _, _, _, _, 6.63267, _, _, _, _, - _, _, - _, _, _, _, _, _, 9.023491, _, _, 7.737569, _, _, _, _, _, _, 6.540256, _, - _, _, - _, 8.413112, _, 8.170027, _, _, 9.149413, _, _, _, _, _, 7.4319, _, _, - 6.26823, _, _, _, _, - 8.899057, _, _, _, _, _, _, _, 9.795968, _, _, _, _, _, _, _, _, _, _, - 6.829187, - _, _, 9.752924, _, _, 9.325312, _, _, _, _, _, 7.412814, _, _, _, 7.326201, - _, _, _, _, - _, _, _, _, _, _, _, _, 8.970785, _, _, 7.643015, _, _, _, _, _, _, _, - 7.320814, - _, _, 9.874618, _, 10.65373, _, _, _, _, _, _, _, _, _, 7.429714, _, _, _, - _, _, - _, _, _, _, _, _, _, 9.066382, _, _, 7.713646, _, _, _, _, _, _, _, - 7.165817, _, - _, 11.50497, _, 10.23989, _, _, _, _, _, _, _, _, _, 7.263686, _, _, _, _, - _, _, - _, _, _, _, _, _, 9.024104, _, _, 7.809846, _, _, _, _, _, _, _, 6.550485, - _, _, - 9.357559, _, _, 9.339013, _, _, _, _, _, _, _, _, _, 7.013798, _, _, _, _, - _, _, - 9.77884, _, _, _, _, 7.975885, _, _, 7.424665, _, _, _, _, _, _, _, - 5.465125, _, _, _, - _, _, 9.38381, _, _, 8.548382, _, _, _, _, _, _, 6.153101, _, _, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 4.042087, _, _, _, _, _, _, _, 5.670447, _, _, _, - _, 10.33477, _, _, 8.864391, _, _, _, _, _, _, 5.549394, _, _, _, 4.996204, - _, _, _, _, - _, _, _, _, _, _, _, _, 6.019665, _, _, 4.965127, _, _, _, _, _, _, _, - 3.623973, - 3.520382, _, _, 4.471444, _, 5.106831, _, _, _, _, _, _, _, _, 4.063688, _, - _, _, _, _, - 3.867551, _, _, _, _, _, _, _, 5.164579, _, 5.584627, _, _, _, _, _, _, _, - 3.983552, _, - _, _, 5.315122, _, 4.985534, _, _, _, _, _, _, _, _, _, 4.424124, _, _, _, - _, _, - _, _, _, _, _, _, _, 5.514681, _, _, 5.389504, _, _, _, _, _, _, 4.237243, - _, _, - _, 4.355546, _, _, 4.508291, _, _, _, _, _, _, _, _, 4.499592, _, _, _, _, - _, _, - _, _, _, _, _, _, 4.922162, _, _, 5.672986, _, _, _, _, _, _, 4.151125, _, - _, _, - _, 4.784837, _, 4.222713, _, _, 4.345345, _, _, _, _, _, 4.848848, _, _, - 4.100299, _, _, _, _, - 5.434897, _, _, _, _, _, _, _, 6.679379, _, _, _, _, _, _, _, _, _, _, - 4.330585, - _, _, 6.048448, _, _, 5.377656, _, _, _, _, _, 5.176875, _, _, _, 4.911465, - _, _, _, _, - _, _, _, _, _, _, _, _, 6.172438, _, _, 5.110558, _, _, _, _, _, _, _, - 3.996585, - _, _, 5.585401, _, 5.648882, _, _, _, _, _, _, _, _, _, 4.926129, _, _, _, - _, _, - _, _, _, _, _, _, _, 5.557625, _, _, 4.556805, _, _, _, _, _, _, _, - 3.804101, _, - _, 6.095801, _, 3.634272, _, _, _, _, _, _, _, _, _, 4.399351, _, _, _, _, - _, _, - _, _, _, _, _, _, 5.06394, _, _, 4.718143, _, _, _, _, _, _, _, 3.121289, - _, _, - 5.495305, _, _, 4.072839, _, _, _, _, _, _, _, _, _, 4.200701, _, _, _, _, - _, _, - 5.466282, _, _, _, _, 4.608902, _, _, 4.599293, _, _, _, _, _, _, _, - 2.03493, _, _, _, - _, _, 5.091508, _, _, 5.303615, _, _, _, _, _, _, 3.708326, _, _, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 3.833514, _, _, _, _, _, _, _, 2.003222, _, _, _, - _, 5.063286, _, _, 5.335797, _, _, _, _, _, _, 2.887829, _, _, _, 2.080557, - _, _, _, _, - _, _, _, _, _, _, _, _, 2.600815, _, _, 2.205894, _, _, _, _, _, _, _, - 1.763157, - 1.184497, _, _, 1.373826, _, 1.698269, _, _, _, _, _, _, _, _, 1.900293, _, - _, _, _, _, - 1.269257, _, _, _, _, _, _, _, 1.765917, _, 2.510102, _, _, _, _, _, _, _, - 1.902913, _, - _, _, 1.730513, _, 1.767238, _, _, _, _, _, _, _, _, _, 2.12004, _, _, _, - _, _, - _, _, _, _, _, _, _, 1.811384, _, _, 2.1383, _, _, _, _, _, _, 1.952306, _, _, - _, 1.336811, _, _, 1.484462, _, _, _, _, _, _, _, _, 2.125665, _, _, _, _, - _, _, - _, _, _, _, _, _, 1.620859, _, _, 2.266819, _, _, _, _, _, _, 1.927027, _, - _, _, - _, 1.666311, _, 1.572296, _, _, 1.614327, _, _, _, _, _, 2.175265, _, _, - 1.92464, _, _, _, _, - 2.37118, _, _, _, _, _, _, _, 2.328851, _, _, _, _, _, _, _, _, _, _, - 2.193261, - _, _, 2.579261, _, _, 1.675537, _, _, _, _, _, 2.201659, _, _, _, 1.89812, - _, _, _, _, - _, _, _, _, _, _, _, _, 2.42245, _, _, 2.04443, _, _, _, _, _, _, _, - 1.791352, - _, _, 2.968773, _, 3.034456, _, _, _, _, _, _, _, _, _, 1.959377, _, _, _, - _, _, - _, _, _, _, _, _, _, 2.084338, _, _, 1.967747, _, _, _, _, _, _, _, - 1.727702, _, - _, 3.268435, _, 1.384629, _, _, _, _, _, _, _, _, _, 1.743225, _, _, _, _, - _, _, - _, _, _, _, _, _, 2.066008, _, _, 1.999298, _, _, _, _, _, _, _, 1.384796, - _, _, - 3.114085, _, _, 2.306065, _, _, _, _, _, _, _, _, _, 1.749381, _, _, _, _, - _, _, - 2.588423, _, _, _, _, 2.098056, _, _, 1.899747, _, _, _, _, _, _, _, - 0.8655578, _, _, _, - _, _, 2.47041, _, _, 2.412685, _, _, _, _, _, _, 1.750905, _, _, _, _, _, - _, _, - _, _, _, _, _, _, _, _, 2.287829, _, _, _, _, _, _, _, 0.7768297, _, _, _, - _, 2.648704, _, _, 2.077359, _, _, _, _, _, _, 1.421121, _, _, _, - 0.7892935, _, _, _, _, - _, _, _, _, _, _, _, _, 0.6291567, _, _, 0.4854234, _, _, _, _, _, _, _, - 0.4797352, - 0.3157294, _, _, 0.3343098, _, 0.4024512, _, _, _, _, _, _, _, _, - 0.4738208, _, _, _, _, _, - 0.3052132, _, _, _, _, _, _, _, 0.446995, _, 0.5301894, _, _, _, _, _, _, - _, 0.5050504, _, - _, _, 0.3783778, _, 0.4262444, _, _, _, _, _, _, _, _, _, 0.5283793, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.3654843, _, _, 0.4661307, _, _, _, _, _, _, - 0.5202098, _, _, - _, 0.2730667, _, _, 0.3313915, _, _, _, _, _, _, _, _, 0.5285911, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.3268317, _, _, 0.4391789, _, _, _, _, _, _, 0.4965764, - _, _, _, - _, 0.3654233, _, 0.3445751, _, _, 0.4274168, _, _, _, _, _, 0.5143459, _, - _, 0.432492, _, _, _, _, - 0.624234, _, _, _, _, _, _, _, 0.4346937, _, _, _, _, _, _, _, _, _, _, - 0.6410329, - _, _, 0.8371385, _, _, 0.5161644, _, _, _, _, _, 0.3939349, _, _, _, - 0.2794161, _, _, _, _, - _, _, _, _, _, _, _, _, 0.3987486, _, _, 0.3487488, _, _, _, _, _, _, _, - 0.5908926, - _, _, 1.476124, _, 1.525737, _, _, _, _, _, _, _, _, _, 0.3141694, _, _, _, - _, _, - _, _, _, _, _, _, _, 0.4914477, _, _, 0.5601476, _, _, _, _, _, _, _, - 0.5246512, _, - _, 1.399957, _, 0.9261711, _, _, _, _, _, _, _, _, _, 0.4376495, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.6401776, _, _, 0.5228487, _, _, _, _, _, _, _, - 0.5703739, _, _, - 1.632739, _, _, 1.329874, _, _, _, _, _, _, _, _, _, 0.4660563, _, _, _, _, - _, _, - 1.144565, _, _, _, _, 0.7491207, _, _, 0.510797, _, _, _, _, _, _, _, - 0.466953, _, _, _, - _, _, 1.037078, _, _, 0.6208939, _, _, _, _, _, _, 0.6587166, _, _, _, _, - _, _, _, - _, _, _, _, _, _, _, _, 0.7381621, _, _, _, _, _, _, _, 0.4482371, _, _, _, - _, 0.9122726, _, _, 0.5953169, _, _, _, _, _, _, 0.55512, _, _, _, - 0.3188243, _, _, _, _, - _, _, _, _, _, _, _, _, 0.132651, _, _, 0.1022856, _, _, _, _, _, _, _, - 0.1194218, - 0.1715599, _, _, 0.1635145, _, 0.15744, _, _, _, _, _, _, _, _, 0.1043912, - _, _, _, _, _, - 0.1705138, _, _, _, _, _, _, _, 0.1487642, _, 0.09528217, _, _, _, _, _, _, - _, 0.1036556, _, - _, _, 0.1485861, _, 0.1614268, _, _, _, _, _, _, _, _, _, 0.1035215, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.109576, _, _, 0.1058078, _, _, _, _, _, _, - 0.1129123, _, _, - _, 0.1531491, _, _, 0.136056, _, _, _, _, _, _, _, _, 0.1069928, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.1008615, _, _, 0.1292468, _, _, _, _, _, _, 0.112548, - _, _, _, - _, 0.1515007, _, 0.1357538, _, _, 0.09774403, _, _, _, _, _, 0.09116791, _, - _, 0.09338746, _, _, _, _, - 0.189439, _, _, _, _, _, _, _, 0.1093922, _, _, _, _, _, _, _, _, _, _, - 0.1405865, - _, _, 0.2404758, _, _, 0.2595569, _, _, _, _, _, 0.09822413, _, _, _, - 0.07383901, _, _, _, _, - _, _, _, _, _, _, _, _, 0.1190074, _, _, 0.1325311, _, _, _, _, _, _, _, - 0.1213829, - _, _, 0.597658, _, 0.6138088, _, _, _, _, _, _, _, _, _, 0.105895, _, _, _, - _, _, - _, _, _, _, _, _, _, 0.2962824, _, _, 0.3015485, _, _, _, _, _, _, _, - 0.1542183, _, - _, 0.4986322, _, 0.6340318, _, _, _, _, _, _, _, _, _, 0.2095982, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.4198576, _, _, 0.2471934, _, _, _, _, _, _, _, - 0.2758955, _, _, - 0.677281, _, _, 0.6335158, _, _, _, _, _, _, _, _, _, 0.2423655, _, _, _, - _, _, _, - 0.5490316, _, _, _, _, 0.4164687, _, _, 0.2867492, _, _, _, _, _, _, _, - 0.2711674, _, _, _, - _, _, 0.4456161, _, _, 0.2605394, _, _, _, _, _, _, 0.2541651, _, _, _, _, - _, _, _, - _, _, _, _, _, _, _, _, 0.2922591, _, _, _, _, _, _, _, 0.252904, _, _, _, - _, 0.2595911, _, _, 0.2895615, _, _, _, _, _, _, 0.2156315, _, _, _, - 0.2008013, _, _, _, _, - _, _, _, _, _, _, _, _, 0.08037327, _, _, 0.07464832, _, _, _, _, _, _, _, - 0.06183392, - 0.09488925, _, _, 0.09258211, _, 0.07416545, _, _, _, _, _, _, _, _, - 0.06979298, _, _, _, _, _, - 0.1162478, _, _, _, _, _, _, _, 0.07478926, _, 0.07755646, _, _, _, _, _, - _, _, 0.06081326, _, - _, _, 0.1020418, _, 0.0851082, _, _, _, _, _, _, _, _, _, 0.06841189, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.07720956, _, _, 0.07250732, _, _, _, _, _, _, - 0.06408162, _, _, - _, 0.1302345, _, _, 0.1113517, _, _, _, _, _, _, _, _, 0.0760674, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.0977348, _, _, 0.09942498, _, _, _, _, _, _, - 0.06811582, _, _, _, - _, 0.1180888, _, 0.1111216, _, _, 0.09291938, _, _, _, _, _, 0.09724257, _, - _, 0.08563249, _, _, _, _, - 0.1569083, _, _, _, _, _, _, _, 0.1904642, _, _, _, _, _, _, _, _, _, _, - 0.07021514, - _, _, 0.1716115, _, _, 0.2162313, _, _, _, _, _, 0.1512596, _, _, _, - 0.1938034, _, _, _, _, - _, _, _, _, _, _, _, _, 0.1757379, _, _, 0.2034774, _, _, _, _, _, _, _, - 0.09177032, - _, _, 0.2454274, _, 0.2578019, _, _, _, _, _, _, _, _, _, 0.194745, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.2775753, _, _, 0.2322377, _, _, _, _, _, _, _, - 0.1373269, _, - _, 0.1895054, _, 0.2646919, _, _, _, _, _, _, _, _, _, 0.2040382, _, _, _, - _, _, _, - _, _, _, _, _, _, 0.3040908, _, _, 0.2665235, _, _, _, _, _, _, _, - 0.1741579, _, _, - 0.2884258, _, _, 0.3443388, _, _, _, _, _, _, _, _, _, 0.2293898, _, _, _, - _, _, _, - 0.2932368, _, _, _, _, 0.2864713, _, _, 0.2741358, _, _, _, _, _, _, _, - 0.1728883, _, _, _, - _, _, 0.2729693, _, _, 0.2772094, _, _, _, _, _, _, 0.1907862, _, _, _, _, - _, _, _, - _, _, _, _, _, _, _, _, 0.1972843, _, _, _, _, _, _, _, 0.1762692, _, _, _, - _, 0.1458211, _, _, 0.2265337, _, _, _, _, _, _, 0.1434233, _, _, _, - 0.1201354, _, _, _, _, - _, _, _, _, _, _, _, _, 0.03995864, _, _, 0.04301612, _, _, _, _, _, _, _, - 0.03762819, - 0.0475106, _, _, 0.04725369, _, 0.03649548, _, _, _, _, _, _, _, _, - 0.04384021, _, _, _, _, _, - 0.05631673, _, _, _, _, _, _, _, 0.0388586, _, 0.04430887, _, _, _, _, _, - _, _, 0.04095693, _, - _, _, 0.04991687, _, 0.03828994, _, _, _, _, _, _, _, _, _, 0.04261909, _, - _, _, _, _, - _, _, _, _, _, _, _, 0.0452977, _, _, 0.04760806, _, _, _, _, _, _, - 0.04243068, _, _, - _, 0.07091061, _, _, 0.06278864, _, _, _, _, _, _, _, _, 0.04721214, _, _, - _, _, _, _, - _, _, _, _, _, _, 0.06063705, _, _, 0.06542457, _, _, _, _, _, _, - 0.04433564, _, _, _, - _, 0.06277891, _, 0.0616699, _, _, 0.05746608, _, _, _, _, _, 0.06350318, - _, _, 0.05924265, _, _, _, _, - 0.07914826, _, _, _, _, _, _, _, 0.1082881, _, _, _, _, _, _, _, _, _, _, - 0.04842088, - _, _, 0.08982443, _, _, 0.1049104, _, _, _, _, _, 0.09244097, _, _, _, - 0.1151257, _, _, _, _, - _, _, _, _, _, _, _, _, 0.09985659, _, _, 0.1033329, _, _, _, _, _, _, _, - 0.07247344, - _, _, 0.08866598, _, 0.0888482, _, _, _, _, _, _, _, _, _, 0.1036271, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.1205464, _, _, 0.09664892, _, _, _, _, _, _, _, - 0.08557931, _, - _, 0.07393657, _, 0.08420023, _, _, _, _, _, _, _, _, _, 0.09646645, _, _, - _, _, _, _, - _, _, _, _, _, _, 0.1095914, _, _, 0.1094659, _, _, _, _, _, _, _, - 0.08726138, _, _, - 0.09197982, _, _, 0.126345, _, _, _, _, _, _, _, _, _, 0.1037143, _, _, _, - _, _, _, - 0.1077639, _, _, _, _, 0.1047624, _, _, 0.1081974, _, _, _, _, _, _, _, - 0.08545639, _, _, _, - _, _, 0.1075105, _, _, 0.1203896, _, _, _, _, _, _, 0.09561902, _, _, _, _, - _, _, _, - _, _, _, _, _, _, _, _, 0.08439046, _, _, _, _, _, _, _, 0.09637882, _, _, _, - _, 0.07405875, _, _, 0.1005222, _, _, _, _, _, _, 0.08044294, _, _, _, - 0.06979045, _, _, _, _, - _, _, _, _, _, _, _, _, 0.01397225, _, _, 0.01580808, _, _, _, _, _, _, _, - 0.01411265, - 0.01681655, _, _, 0.01678746, _, 0.01371277, _, _, _, _, _, _, _, _, - 0.01619283, _, _, _, _, _, - 0.01828054, _, _, _, _, _, _, _, 0.01375119, _, 0.01647641, _, _, _, _, _, - _, _, 0.01614892, _, - _, _, 0.01730299, _, 0.01345285, _, _, _, _, _, _, _, _, _, 0.01668037, _, - _, _, _, _, - _, _, _, _, _, _, _, 0.01759028, _, _, 0.01941101, _, _, _, _, _, _, - 0.01709047, _, _, - _, 0.02290365, _, _, 0.02367288, _, _, _, _, _, _, _, _, 0.01813679, _, _, - _, _, _, _, - _, _, _, _, _, _, 0.02254198, _, _, 0.02578158, _, _, _, _, _, _, - 0.01734987, _, _, _, - _, 0.02162854, _, 0.02078216, _, _, 0.01909926, _, _, _, _, _, 0.02506261, - _, _, 0.02282344, _, _, _, _, - 0.02471745, _, _, _, _, _, _, _, 0.03318673, _, _, _, _, _, _, _, _, _, _, - 0.019798, - _, _, 0.02640743, _, _, 0.0260081, _, _, _, _, _, 0.02806349, _, _, _, - 0.03357667, _, _, _, _, - _, _, _, _, _, _, _, _, 0.02821634, _, _, 0.02974148, _, _, _, _, _, _, _, - 0.02696364, - _, _, 0.0201132, _, 0.0198185, _, _, _, _, _, _, _, _, _, 0.02949838, _, _, - _, _, _, - _, _, _, _, _, _, _, 0.03079595, _, _, 0.02512017, _, _, _, _, _, _, _, - 0.03121963, _, - _, 0.01906762, _, 0.01512005, _, _, _, _, _, _, _, _, _, 0.02732853, _, _, - _, _, _, _, - _, _, _, _, _, _, 0.02716686, _, _, 0.02819475, _, _, _, _, _, _, _, - 0.02679006, _, _, - 0.0182022, _, _, 0.02640342, _, _, _, _, _, _, _, _, _, 0.02899102, _, _, - _, _, _, _, - 0.02326424, _, _, _, _, 0.02618844, _, _, 0.02714735, _, _, _, _, _, _, _, - 0.02711672, _, _, _, - _, _, 0.02247029, _, _, 0.02987606, _, _, _, _, _, _, 0.02867859, _, _, _, - _, _, _, _, - _, _, _, _, _, _, _, _, 0.02504346, _, _, _, _, _, _, _, 0.03144621, _, _, _, - _, 0.02028225, _, _, 0.03060555, _, _, _, _, _, _, 0.02752425, _, _, _, - 0.02587092, _, _, _, _, - _, _, _, _, _, _, _, _, 0.00405583, _, _, 0.004537465, _, _, _, _, _, _, _, - 0.00426196, - 0.00442314, _, _, 0.004485251, _, 0.003900765, _, _, _, _, _, _, _, _, - 0.00450012, _, _, _, _, _, - 0.004686644, _, _, _, _, _, _, _, 0.004081598, _, 0.004767802, _, _, _, _, - _, _, _, 0.004607819, _, - _, _, 0.004715857, _, 0.00414123, _, _, _, _, _, _, _, _, _, 0.004785344, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.004837892, _, _, 0.005328194, _, _, _, _, _, _, - 0.005039224, _, _, - _, 0.005483704, _, _, 0.005908733, _, _, _, _, _, _, _, _, 0.004882794, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.005537251, _, _, 0.005752493, _, _, _, _, _, _, - 0.004738824, _, _, _, - _, 0.005264724, _, 0.004965357, _, _, 0.004700108, _, _, _, _, _, - 0.005923705, _, _, 0.005590363, _, _, _, _, - 0.005749694, _, _, _, _, _, _, _, 0.007978138, _, _, _, _, _, _, _, _, _, - _, 0.005250677, - _, _, 0.005538015, _, _, 0.005078285, _, _, _, _, _, 0.006771238, _, _, _, - 0.006997874, _, _, _, _, - _, _, _, _, _, _, _, _, 0.006330026, _, _, 0.006475414, _, _, _, _, _, _, - _, 0.006639164, - _, _, 0.004207236, _, 0.00376306, _, _, _, _, _, _, _, _, _, 0.006358202, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.005593626, _, _, 0.004980106, _, _, _, _, _, _, _, - 0.00755458, _, - _, 0.00403717, _, 0.002608601, _, _, _, _, _, _, _, _, _, 0.005724966, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.005135283, _, _, 0.005274475, _, _, _, _, _, _, _, - 0.006355356, _, _, - 0.003381781, _, _, 0.004529564, _, _, _, _, _, _, _, _, _, 0.005955895, _, - _, _, _, _, _, - 0.004385665, _, _, _, _, 0.004697463, _, _, 0.004887731, _, _, _, _, _, _, - _, 0.006182333, _, _, _, - _, _, 0.004213462, _, _, 0.005763907, _, _, _, _, _, _, 0.005908161, _, _, - _, _, _, _, _, - _, _, _, _, _, _, _, _, 0.005125896, _, _, _, _, _, _, _, 0.006488696, _, - _, _, - _, 0.004063415, _, _, 0.006577578, _, _, _, _, _, _, 0.006016137, _, _, _, - 0.005995101, _, _, _, _, - _, _, _, _, _, _, _, _, 0.002144917, _, _, 0.00227489, _, _, _, _, _, _, _, - 0.002314828, - 0.002283148, _, _, 0.002293594, _, 0.002025449, _, _, _, _, _, _, _, _, - 0.002257528, _, _, _, _, _, - 0.002441752, _, _, _, _, _, _, _, 0.002260707, _, 0.002361776, _, _, _, _, - _, _, _, 0.0023614, _, - _, _, 0.002497189, _, 0.002315958, _, _, _, _, _, _, _, _, _, 0.00240827, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.00242131, _, _, 0.002533628, _, _, _, _, _, _, - 0.002493, _, _, - _, 0.002718076, _, _, 0.002691718, _, _, _, _, _, _, _, _, 0.002398272, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.002533918, _, _, 0.002686566, _, _, _, _, _, _, - 0.002334306, _, _, _, - _, 0.002504684, _, 0.002363533, _, _, 0.002309511, _, _, _, _, _, - 0.002583462, _, _, 0.002518469, _, _, _, _, - 0.002658015, _, _, _, _, _, _, _, 0.003554456, _, _, _, _, _, _, _, _, _, - _, 0.002569, - _, _, 0.00254514, _, _, 0.002477052, _, _, _, _, _, 0.002980658, _, _, _, - 0.002953195, _, _, _, _, - _, _, _, _, _, _, _, _, 0.002896748, _, _, 0.002938448, _, _, _, _, _, _, - _, 0.003076538, - _, _, 0.002080081, _, 0.001902956, _, _, _, _, _, _, _, _, _, 0.002853221, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.002463343, _, _, 0.002318655, _, _, _, _, _, _, _, - 0.003379468, _, - _, 0.001940235, _, 0.001515619, _, _, _, _, _, _, _, _, _, 0.002698731, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.0024105, _, _, 0.002375881, _, _, _, _, _, _, _, - 0.002997452, _, _, - 0.001809219, _, _, 0.002211982, _, _, _, _, _, _, _, _, _, 0.002630881, _, - _, _, _, _, _, - 0.00218469, _, _, _, _, 0.002102388, _, _, 0.002185251, _, _, _, _, _, _, - _, 0.002904708, _, _, _, - _, _, 0.002046105, _, _, 0.002629467, _, _, _, _, _, _, 0.002602894, _, _, - _, _, _, _, _, - _, _, _, _, _, _, _, _, 0.002470857, _, _, _, _, _, _, _, 0.002828047, _, - _, _, - _, 0.001865821, _, _, 0.003038337, _, _, _, _, _, _, 0.002685659, _, _, _, - 0.002797281, _, _, _, _, - _, _, _, _, _, _, _, _, 0.002014709, _, _, 0.002089367, _, _, _, _, _, _, - _, 0.002198119, - 0.002139243, _, _, 0.002148028, _, 0.001886177, _, _, _, _, _, _, _, _, - 0.002076203, _, _, _, _, _, - 0.002279266, _, _, _, _, _, _, _, 0.002170773, _, 0.002167467, _, _, _, _, - _, _, _, 0.002199032, _, - _, _, 0.002361774, _, 0.002242618, _, _, _, _, _, _, _, _, _, 0.002229875, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.002228162, _, _, 0.00230085, _, _, _, _, _, _, - 0.002271566, _, _, - _, 0.00249256, _, _, 0.002400191, _, _, _, _, _, _, _, _, 0.002212032, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.002236282, _, _, 0.002534942, _, _, _, _, _, _, - 0.002139803, _, _, _, - _, 0.002270195, _, 0.002134633, _, _, 0.002153071, _, _, _, _, _, - 0.002306994, _, _, 0.002254453, _, _, _, _, - 0.002383106, _, _, _, _, _, _, _, 0.003077176, _, _, _, _, _, _, _, _, _, - _, 0.002385886, - _, _, 0.002303027, _, _, 0.002227167, _, _, _, _, _, 0.002593911, _, _, _, - 0.002595842, _, _, _, _, - _, _, _, _, _, _, _, _, 0.002535704, _, _, 0.002632418, _, _, _, _, _, _, - _, 0.002777772, - _, _, 0.001922599, _, 0.001773139, _, _, _, _, _, _, _, _, _, 0.002515383, - _, _, _, _, _, - _, _, _, _, _, _, _, 0.002172667, _, _, 0.002093839, _, _, _, _, _, _, _, - 0.002999837, _, - _, 0.001815335, _, 0.001482393, _, _, _, _, _, _, _, _, _, 0.002425786, _, - _, _, _, _, _, - _, _, _, _, _, _, 0.002201422, _, _, 0.002111604, _, _, _, _, _, _, _, - 0.002699859, _, _, - 0.001671795, _, _, 0.001989888, _, _, _, _, _, _, _, _, _, 0.002291486, _, - _, _, _, _, _, - 0.001988123, _, _, _, _, 0.001871231, _, _, 0.001938802, _, _, _, _, _, _, - _, 0.002593103, _, _, _, - _, _, 0.00180548, _, _, 0.002384434, _, _, _, _, _, _, 0.0022523, _, _, _, - _, _, _, _, - _, _, _, _, _, _, _, _, 0.002237851, _, _, _, _, _, _, _, 0.002505273, _, - _, _, - _, 0.001673772, _, _, 0.002714993, _, _, _, _, _, _, 0.002356096, _, _, _, - 0.002495558, _, _, _, _ ; - - H2OMMRStd_Orbit_1742 = - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 12.38362, -1, -1, 10.64975, -1, 11.67567, - -1, -1, -1, 11.68133, -1, -1, - -1, -1, -1, 14.29292, -1, -1, 14.3746, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 11.84192, -1, -1, 11.61031, -1, -1, - 10.79061, -1, -1, 10.84638, -1, -1, - -1, -1, -1, -1, 13.83816, -1, 13.99947, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 11.34708, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 12.25145, -1, 9.402631, -1, -1, - 9.894357, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 13.65246, -1, -1, 13.84942, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 10.945, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 11.62382, -1, -1, 9.694736, -1, -1, - 10.42728, -1, -1, -1, -1, - -1, 13.48009, -1, 13.65836, -1, 14.28646, -1, 12.36918, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 11.8552, -1, - -1, -1, -1, -1, -1, -1, -1, 14.07927, -1, -1, 10.71713, -1, 11.40197, -1, - -1, 11.48643, -1, -1, -1, -1, - -1, 14.70246, -1, 15.31367, -1, 14.41566, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 12.97165, - -1, -1, -1, -1, -1, -1, -1, -1, 12.09653, -1, 12.20885, -1, -1, 12.24429, - -1, -1, 11.16811, -1, -1, -1, - -1, -1, -1, -1, 15.18609, -1, 14.00363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 14.26085, -1, -1, 14.36556, - -1, -1, -1, -1, -1, -1, -1, -1, 13.41577, -1, -1, 12.65541, -1, 12.2159, - -1, -1, -1, -1, -1, -1, - -1, -1, 12.91161, -1, 14.6521, -1, 12.09737, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 12.12238, -1, -1, 13.3686, - -1, -1, -1, -1, -1, -1, -1, 10.98875, -1, 11.52529, -1, 12.34414, -1, -1, - 12.22066, -1, -1, -1, -1, -1, - -1, 9.9169, -1, 13.03579, -1, 13.87691, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 11.6278, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 11.18389, -1, 12.20102, -1, -1, 12.17034, -1, - 11.46207, -1, -1, -1, -1, -1, - -1, 15.53603, -1, 13.57182, -1, 12.50811, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 11.28121, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 10.36662, -1, 11.84369, -1, 11.8321, -1, - -1, 11.65275, -1, -1, -1, -1, - 13.60668, -1, 12.70099, -1, 13.03724, -1, 12.16311, -1, -1, -1, -1, -1, -1, - -1, -1, 13.33916, -1, -1, 12.26843, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 12.04619, -1, -1, 9.994142, -1, 10.19553, - -1, -1, -1, 10.29205, -1, -1, - -1, 14.43294, -1, 15.43404, -1, -1, 15.01783, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 11.69763, -1, -1, 11.29698, -1, -1, - 9.357984, -1, -1, 9.403737, -1, -1, - 14.94741, -1, 12.04981, -1, 14.53561, -1, 14.05362, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 10.00885, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 11.80358, -1, 9.079291, -1, -1, - 8.690677, -1, -1, -1, -1, -1, - 14.18867, -1, 14.15842, -1, 14.08122, -1, -1, 13.75745, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 9.778666, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 11.43851, -1, -1, 8.911757, -1, -1, - 8.942759, -1, -1, -1, -1, - -1, 13.7797, -1, 13.03204, -1, 13.74864, -1, 12.52044, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 10.7647, -1, - -1, -1, -1, -1, -1, -1, -1, 13.92307, -1, -1, 10.61651, -1, 10.16686, -1, - -1, 9.931579, -1, -1, -1, -1, - -1, 12.53611, -1, 13.74296, -1, 14.29867, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 11.54485, - -1, -1, -1, -1, -1, -1, -1, -1, 11.90044, -1, 11.68985, -1, -1, 10.68976, - -1, -1, 10.01459, -1, -1, -1, - 12.98678, -1, 12.90685, -1, 13.25818, -1, 14.10182, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 12.37179, -1, -1, 12.79675, - -1, -1, -1, -1, -1, -1, -1, -1, 12.94639, -1, -1, 11.66776, -1, 10.83912, - -1, -1, -1, -1, -1, -1, - 10.52359, -1, 12.06072, -1, 13.67731, -1, 12.08641, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 10.1441, -1, -1, 11.81445, - -1, -1, -1, -1, -1, -1, -1, 10.85104, -1, 11.16424, -1, 11.47569, -1, -1, - 10.98466, -1, -1, -1, -1, -1, - -1, 9.026844, -1, 12.42062, -1, 12.04864, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 9.823149, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 10.83146, -1, 10.82942, -1, -1, 10.61149, -1, - 10.04111, -1, -1, -1, -1, -1, - -1, 14.6738, -1, 12.8005, -1, 11.79987, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 9.836681, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 9.957008, -1, 10.27876, -1, 10.07308, -1, - -1, 9.917186, -1, -1, -1, -1, - 12.68189, -1, 11.94567, -1, 12.51936, -1, 10.70425, -1, -1, -1, -1, -1, -1, - -1, -1, 11.71425, -1, -1, 10.62009, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 10.61147, -1, -1, 8.898002, -1, 8.016523, - -1, -1, -1, 7.242176, -1, -1, - -1, 10.0618, -1, 10.59666, -1, -1, 11.06453, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 10.51287, -1, -1, 9.223976, -1, -1, - 7.693172, -1, -1, 6.893898, -1, -1, - 10.21342, -1, 11.51974, -1, 10.26225, -1, 10.97971, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 7.257115, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 10.04801, -1, 7.546216, -1, -1, - 7.209318, -1, -1, -1, -1, -1, - 10.71987, -1, 9.799483, -1, 11.58493, -1, -1, 11.30658, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 6.958184, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 9.383289, -1, -1, 7.004887, -1, -1, - 7.066679, -1, -1, -1, -1, - -1, 9.32733, -1, 9.660233, -1, 12.10942, -1, 10.39578, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8.014044, -1, - -1, -1, -1, -1, -1, -1, -1, 11.77655, -1, -1, 8.945783, -1, 7.306826, -1, - -1, 7.466043, -1, -1, -1, -1, - -1, 10.2777, -1, 11.68908, -1, 12.22422, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8.780133, - -1, -1, -1, -1, -1, -1, -1, -1, 10.46407, -1, 9.057076, -1, -1, 7.65333, - -1, -1, 9.359784, -1, -1, -1, - 11.178, -1, 11.36329, -1, 11.27319, -1, 12.07439, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 9.165315, -1, -1, 9.815444, - -1, -1, -1, -1, -1, -1, -1, -1, 10.79784, -1, -1, 9.007884, -1, 8.140968, - -1, -1, -1, -1, -1, -1, - 10.22235, -1, 10.5732, -1, 11.71384, -1, 11.17817, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 7.989646, -1, -1, 8.879281, - -1, -1, -1, -1, -1, -1, -1, 9.252629, -1, 9.209252, -1, 8.903582, -1, -1, - 8.552207, -1, -1, -1, -1, -1, - -1, 9.327926, -1, 10.41602, -1, 9.433717, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8.389853, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8.360893, -1, 8.093883, -1, -1, 8.040504, -1, - 7.828959, -1, -1, -1, -1, -1, - -1, 11.6624, -1, 9.665039, -1, 8.286007, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8.028294, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 7.729041, -1, 7.446854, -1, 6.613822, -1, - -1, 7.051621, -1, -1, -1, -1, - 10.18543, -1, 9.833223, -1, 9.252248, -1, 6.78778, -1, -1, -1, -1, -1, -1, - -1, -1, 6.825848, -1, -1, 7.120554, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 6.429665, -1, -1, 6.210791, -1, 4.868364, - -1, -1, -1, 3.974777, -1, -1, - -1, 4.142265, -1, 3.53938, -1, -1, 4.370872, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 6.36399, -1, -1, 5.542277, -1, -1, - 5.152528, -1, -1, 3.983243, -1, -1, - 3.723314, -1, 3.088058, -1, 3.551063, -1, 4.830272, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3.987427, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5.569803, -1, 4.767272, -1, -1, - 4.771811, -1, -1, -1, -1, -1, - 4.442745, -1, 3.880895, -1, 5.248265, -1, -1, 5.328406, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3.978646, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4.932638, -1, -1, 4.477881, -1, -1, - 4.637861, -1, -1, -1, -1, - -1, 4.138938, -1, 4.834995, -1, 6.949813, -1, 5.070393, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4.347741, -1, - -1, -1, -1, -1, -1, -1, -1, 6.195211, -1, -1, 4.945945, -1, 3.909096, -1, - -1, 4.303785, -1, -1, -1, -1, - -1, 6.960253, -1, 7.682668, -1, 6.341686, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 5.126359, - -1, -1, -1, -1, -1, -1, -1, -1, 6.404423, -1, 4.591238, -1, -1, 4.121669, - -1, -1, 5.508808, -1, -1, -1, - 7.452466, -1, 8.148824, -1, 7.504981, -1, 6.835045, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4.666038, -1, -1, 5.288129, - -1, -1, -1, -1, -1, -1, -1, -1, 5.616419, -1, -1, 4.513792, -1, 4.172001, - -1, -1, -1, -1, -1, -1, - 8.123507, -1, 7.518586, -1, 7.882612, -1, 6.721637, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4.75959, -1, -1, 4.767568, - -1, -1, -1, -1, -1, -1, -1, 5.794287, -1, 4.811872, -1, 4.349126, -1, -1, - 4.601245, -1, -1, -1, -1, -1, - -1, 8.43891, -1, 7.452432, -1, 6.775403, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 5.166274, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4.486325, -1, 4.383745, -1, -1, 4.400574, -1, - 4.740035, -1, -1, -1, -1, -1, - -1, 6.678753, -1, 6.185923, -1, 4.912583, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4.304421, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4.456388, -1, 4.121171, -1, 3.56264, -1, - -1, 3.875491, -1, -1, -1, -1, - 6.273441, -1, 6.653442, -1, 5.62796, -1, 4.547194, -1, -1, -1, -1, -1, -1, - -1, -1, 2.329102, -1, -1, 2.925502, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2.368985, -1, -1, 2.506599, -1, 1.75304, - -1, -1, -1, 1.499937, -1, -1, - -1, 1.074408, -1, 0.691287, -1, -1, 1.123711, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2.199787, -1, -1, 2.156072, -1, -1, - 1.861145, -1, -1, 1.498315, -1, -1, - 0.7953327, -1, 0.483124, -1, 0.6261673, -1, 1.230006, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1.478659, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.639869, -1, 1.703768, -1, -1, - 1.724268, -1, -1, -1, -1, -1, - 0.8596335, -1, 0.6813142, -1, 1.173104, -1, -1, 1.262905, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1.474467, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.460897, -1, -1, 1.690088, -1, -1, - 1.698055, -1, -1, -1, -1, - -1, 0.9608809, -1, 1.292584, -1, 2.265428, -1, 1.359412, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1.552831, -1, - -1, -1, -1, -1, -1, -1, -1, 1.951508, -1, -1, 1.571579, -1, 1.563752, -1, - -1, 1.580687, -1, -1, -1, -1, - -1, 3.349823, -1, 3.115479, -1, 1.985466, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1.929037, - -1, -1, -1, -1, -1, -1, -1, -1, 2.221276, -1, 1.508751, -1, -1, 1.609182, - -1, -1, 1.509019, -1, -1, -1, - 3.748283, -1, 3.765379, -1, 3.169544, -1, 2.728518, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1.418754, -1, -1, 1.84425, - -1, -1, -1, -1, -1, -1, -1, -1, 1.932889, -1, -1, 1.481287, -1, 1.451586, - -1, -1, -1, -1, -1, -1, - 4.113621, -1, 3.680743, -1, 3.430924, -1, 2.587143, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1.695059, -1, -1, 1.796517, - -1, -1, -1, -1, -1, -1, -1, 2.375796, -1, 1.597223, -1, 1.408737, -1, -1, - 1.631567, -1, -1, -1, -1, -1, - -1, 3.881472, -1, 3.248815, -1, 2.913086, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1.962904, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1.64705, -1, 1.690192, -1, -1, 1.749783, -1, - 1.962349, -1, -1, -1, -1, -1, - -1, 2.930567, -1, 2.715554, -1, 2.17049, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1.274617, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1.713158, -1, 1.662155, -1, 1.625277, -1, - -1, 1.611186, -1, -1, -1, -1, - 2.547604, -1, 2.637157, -1, 2.099942, -1, 1.771232, -1, -1, -1, -1, -1, -1, - -1, -1, 0.7116678, -1, -1, 0.7481387, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.422663, -1, -1, 0.4942754, -1, 0.3776747, - -1, -1, -1, 0.3729632, -1, -1, - -1, 0.2918694, -1, 0.07599716, -1, -1, 0.2019217, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.3978807, -1, -1, 0.3970318, -1, -1, - 0.3768882, -1, -1, 0.3876787, -1, -1, - 0.1764775, -1, 0.2381255, -1, 0.1575044, -1, 0.1933141, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.3469307, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.2999924, -1, 0.3261201, -1, -1, - 0.3410881, -1, -1, -1, -1, -1, - 0.2110218, -1, 0.2043043, -1, 0.2368577, -1, -1, 0.2018194, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.3416399, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.3871345, -1, -1, 0.3728305, -1, -1, - 0.3579137, -1, -1, -1, -1, - -1, 0.2584873, -1, 0.3618549, -1, 0.5991492, -1, 0.3733209, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.3085955, -1, - -1, -1, -1, -1, -1, -1, -1, 0.5798641, -1, -1, 0.5021927, -1, 0.4799645, - -1, -1, 0.3420441, -1, -1, -1, -1, - -1, 1.35615, -1, 1.208266, -1, 0.6982037, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.3847079, - -1, -1, -1, -1, -1, -1, -1, -1, 0.7585106, -1, 0.5003067, -1, -1, - 0.5185027, -1, -1, 0.1879701, -1, -1, -1, - 1.360265, -1, 1.475075, -1, 1.224311, -1, 1.075896, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0.3016706, -1, -1, 0.3321739, - -1, -1, -1, -1, -1, -1, -1, -1, 0.6367921, -1, -1, 0.5911005, -1, - 0.4831443, -1, -1, -1, -1, -1, -1, - 1.811171, -1, 1.730461, -1, 1.586739, -1, 1.21242, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0.3777315, -1, -1, 0.3437368, - -1, -1, -1, -1, -1, -1, -1, 1.119577, -1, 0.5838587, -1, 0.4982553, -1, -1, - 0.4768365, -1, -1, -1, -1, -1, - -1, 1.537141, -1, 1.367134, -1, 1.270117, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0.5149102, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.6438604, -1, 0.5536297, -1, -1, 0.5665911, - -1, 0.6416807, -1, -1, -1, -1, -1, - -1, 1.43777, -1, 1.288699, -1, 0.9874995, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0.3047381, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.6091524, -1, 0.6313369, -1, 0.5966316, - -1, -1, 0.5886483, -1, -1, -1, -1, - 1.000596, -1, 1.007105, -1, 0.8772323, -1, 0.5747824, -1, -1, -1, -1, -1, - -1, -1, -1, 0.3091379, -1, -1, 0.2750811, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.09479251, -1, -1, 0.08492569, -1, - 0.1321602, -1, -1, -1, 0.1235197, -1, -1, - -1, 0.1878974, -1, 0.1278429, -1, -1, 0.1234083, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.1241301, -1, -1, 0.1185216, -1, -1, - 0.1462902, -1, -1, 0.1314269, -1, -1, - 0.264523, -1, 0.2510378, -1, 0.2728057, -1, 0.1724796, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.1346977, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.1657145, -1, 0.1480499, -1, -1, - 0.150274, -1, -1, -1, -1, -1, - 0.2870461, -1, 0.32347, -1, 0.2789751, -1, -1, 0.219703, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.1213938, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.2463592, -1, -1, 0.1580852, -1, -1, - 0.1471856, -1, -1, -1, -1, - -1, 0.2972445, -1, 0.2870857, -1, 0.305277, -1, 0.3092072, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.1103997, -1, - -1, -1, -1, -1, -1, -1, -1, 0.3836747, -1, -1, 0.3414937, -1, 0.2760163, - -1, -1, 0.1368032, -1, -1, -1, -1, - -1, 0.4918324, -1, 0.4732783, -1, 0.4446527, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.1273054, - -1, -1, -1, -1, -1, -1, -1, -1, 0.4618959, -1, 0.4258333, -1, -1, - 0.3472718, -1, -1, 0.09352233, -1, -1, -1, - 0.4871188, -1, 0.4887983, -1, 0.4948103, -1, 0.5568228, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.1893833, -1, -1, 0.1177494, - -1, -1, -1, -1, -1, -1, -1, -1, 0.4402539, -1, -1, 0.5178307, -1, - 0.4412312, -1, -1, -1, -1, -1, -1, - 0.682815, -1, 0.7268168, -1, 0.7276757, -1, 0.6316776, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.2183255, -1, -1, 0.1283906, - -1, -1, -1, -1, -1, -1, -1, 0.5937, -1, 0.4400036, -1, 0.4364025, -1, -1, - 0.3617183, -1, -1, -1, -1, -1, - -1, 0.5993655, -1, 0.5993466, -1, 0.6187661, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.2843606, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.3997332, -1, 0.3108829, -1, -1, 0.3605699, - -1, 0.3787363, -1, -1, -1, -1, -1, - -1, 0.5416973, -1, 0.5746801, -1, 0.4740594, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.2383836, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.3367812, -1, 0.4095963, -1, 0.3891692, - -1, -1, 0.4123557, -1, -1, -1, -1, - 0.45012, -1, 0.3853252, -1, 0.3806758, -1, 0.2868859, -1, -1, -1, -1, -1, - -1, -1, -1, 0.3978859, -1, -1, 0.3548206, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.08562002, -1, -1, 0.1005258, -1, - 0.07317902, -1, -1, -1, 0.06707428, -1, -1, - -1, 0.078866, -1, 0.0586053, -1, -1, 0.06955986, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.1219912, -1, -1, 0.1226388, -1, -1, - 0.09327748, -1, -1, 0.07736786, -1, -1, - 0.1226509, -1, 0.1292475, -1, 0.1337245, -1, 0.1265086, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.1093902, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.167218, -1, 0.1498424, -1, -1, - 0.1182711, -1, -1, -1, -1, -1, - 0.1652938, -1, 0.1735396, -1, 0.188093, -1, -1, 0.1661652, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.1121845, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.192591, -1, -1, 0.1468572, -1, -1, - 0.1229911, -1, -1, -1, -1, - -1, 0.1736851, -1, 0.1847906, -1, 0.1971201, -1, 0.1912189, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.121524, -1, - -1, -1, -1, -1, -1, -1, -1, 0.2363025, -1, -1, 0.2341728, -1, 0.2043514, - -1, -1, 0.123593, -1, -1, -1, -1, - -1, 0.1890311, -1, 0.2000983, -1, 0.2330877, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.1368979, - -1, -1, -1, -1, -1, -1, -1, -1, 0.2830437, -1, 0.2763612, -1, -1, - 0.2348724, -1, -1, 0.1350377, -1, -1, -1, - 0.218934, -1, 0.2081618, -1, 0.227054, -1, 0.256825, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.1796862, -1, -1, 0.157887, - -1, -1, -1, -1, -1, -1, -1, -1, 0.279285, -1, -1, 0.2471177, -1, 0.2773055, - -1, -1, -1, -1, -1, -1, - 0.2534964, -1, 0.2694519, -1, 0.2715401, -1, 0.3116022, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.2057946, -1, -1, 0.1502556, - -1, -1, -1, -1, -1, -1, -1, 0.2624417, -1, 0.2896295, -1, 0.2623805, -1, - -1, 0.2362952, -1, -1, -1, -1, -1, - -1, 0.2652172, -1, 0.2611712, -1, 0.2527854, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.209823, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.26852, -1, 0.2546368, -1, -1, 0.2540614, -1, - 0.2348363, -1, -1, -1, -1, -1, - -1, 0.210671, -1, 0.2400022, -1, 0.2360022, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0.1936144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.2347605, -1, 0.2683289, -1, 0.2680696, - -1, -1, 0.2439998, -1, -1, -1, -1, - 0.2578581, -1, 0.216202, -1, 0.1999721, -1, 0.1815215, -1, -1, -1, -1, -1, - -1, -1, -1, 0.272619, -1, -1, 0.228561, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.04721661, -1, -1, 0.04999025, -1, - 0.04409112, -1, -1, -1, 0.04262836, -1, -1, - -1, 0.0419007, -1, 0.04079619, -1, -1, 0.0466764, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.06184521, -1, -1, 0.0602206, -1, -1, - 0.05375875, -1, -1, 0.04756131, -1, -1, - 0.05644052, -1, 0.05625408, -1, 0.06335213, -1, 0.06529769, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.05999582, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.0777808, -1, 0.06790397, -1, -1, - 0.06152761, -1, -1, -1, -1, -1, - 0.07432938, -1, 0.06950191, -1, 0.08273683, -1, -1, 0.07695454, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.06004465, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.08440053, -1, -1, 0.07162194, -1, -1, - 0.06523395, -1, -1, -1, -1, - -1, 0.07850214, -1, 0.08101783, -1, 0.08529643, -1, 0.0791195, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.06414901, -1, - -1, -1, -1, -1, -1, -1, -1, 0.09439926, -1, -1, 0.09327946, -1, 0.08703773, - -1, -1, 0.06853594, -1, -1, -1, -1, - -1, 0.078962, -1, 0.08275281, -1, 0.09390261, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.07635441, - -1, -1, -1, -1, -1, -1, -1, -1, 0.1125235, -1, 0.1005539, -1, -1, - 0.09245986, -1, -1, 0.09145868, -1, -1, -1, - 0.09205689, -1, 0.08832586, -1, 0.09250925, -1, 0.1018019, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.08786064, -1, -1, 0.08079787, - -1, -1, -1, -1, -1, -1, -1, -1, 0.1134847, -1, -1, 0.08578721, -1, - 0.09644347, -1, -1, -1, -1, -1, -1, - 0.1037123, -1, 0.1009538, -1, 0.1040132, -1, 0.1173782, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.08941451, -1, -1, 0.0784642, - -1, -1, -1, -1, -1, -1, -1, 0.09994371, -1, 0.1062034, -1, 0.09401115, -1, - -1, 0.08643249, -1, -1, -1, -1, -1, - -1, 0.105192, -1, 0.1007438, -1, 0.09804475, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.08479143, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.1073835, -1, 0.1057243, -1, -1, 0.09818381, - -1, 0.08703238, -1, -1, -1, -1, -1, - -1, 0.09329951, -1, 0.1015378, -1, 0.09705323, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.08481453, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.1015944, -1, 0.1007104, -1, 0.1034859, - -1, -1, 0.08818486, -1, -1, -1, -1, - 0.1114342, -1, 0.1028191, -1, 0.09337839, -1, 0.0864953, -1, -1, -1, -1, - -1, -1, -1, -1, 0.0978768, -1, -1, 0.08655781, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.01933227, -1, -1, 0.01910428, -1, - 0.01819636, -1, -1, -1, 0.01833303, -1, -1, - -1, 0.01597328, -1, 0.01760089, -1, -1, 0.01909891, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.02161555, -1, -1, 0.02194635, -1, -1, - 0.02105259, -1, -1, 0.01942062, -1, -1, - 0.01761442, -1, 0.01594109, -1, 0.01918398, -1, 0.02119223, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.02158413, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.02364152, -1, 0.02178285, -1, -1, - 0.02162859, -1, -1, -1, -1, -1, - 0.02007798, -1, 0.01842526, -1, 0.02255381, -1, -1, 0.02154424, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.02094251, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.02376816, -1, -1, 0.02366706, -1, -1, - 0.02333151, -1, -1, -1, -1, - -1, 0.02171342, -1, 0.02312957, -1, 0.02382663, -1, 0.02059482, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.02178398, -1, - -1, -1, -1, -1, -1, -1, -1, 0.02465881, -1, -1, 0.02435155, -1, 0.02397916, - -1, -1, 0.02451453, -1, -1, -1, -1, - -1, 0.02366268, -1, 0.0263331, -1, 0.02469503, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.02625937, - -1, -1, -1, -1, -1, -1, -1, -1, 0.02798841, -1, 0.02376844, -1, -1, - 0.02456897, -1, -1, 0.02558341, -1, -1, -1, - 0.0252708, -1, 0.02666527, -1, 0.02806178, -1, 0.02731119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.02881429, -1, -1, 0.02712589, - -1, -1, -1, -1, -1, -1, -1, -1, 0.03011552, -1, -1, 0.02190213, -1, - 0.02349437, -1, -1, -1, -1, -1, -1, - 0.03015553, -1, 0.02838772, -1, 0.03021435, -1, 0.02952271, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.02591157, -1, -1, 0.02648677, - -1, -1, -1, -1, -1, -1, -1, 0.02651614, -1, 0.02552809, -1, 0.02306335, -1, - -1, 0.02234053, -1, -1, -1, -1, -1, - -1, 0.02901982, -1, 0.02868041, -1, 0.02825027, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.02546916, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.02735885, -1, 0.02780072, -1, -1, 0.02516262, - -1, 0.02329902, -1, -1, -1, -1, -1, - -1, 0.03058489, -1, 0.03060636, -1, 0.02760777, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0.0265927, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.02722157, -1, 0.02572624, -1, 0.02605108, - -1, -1, 0.02403711, -1, -1, -1, -1, - 0.0311056, -1, 0.03095211, -1, 0.02847764, -1, 0.02580394, -1, -1, -1, -1, - -1, -1, -1, -1, 0.02457416, -1, -1, 0.02553482, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.005640676, -1, -1, 0.005223408, -1, - 0.005877499, -1, -1, -1, 0.005917228, -1, -1, - -1, 0.004955817, -1, 0.004909407, -1, -1, 0.005221204, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.005639876, -1, -1, 0.005608505, -1, -1, - 0.00632083, -1, -1, 0.005871074, -1, -1, - 0.005082103, -1, 0.004869324, -1, 0.004623144, -1, 0.005263111, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00611334, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.005644931, -1, 0.005245841, -1, -1, - 0.006237822, -1, -1, -1, -1, -1, - 0.005603259, -1, 0.004883656, -1, 0.005191565, -1, -1, 0.005076326, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.006039825, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.005326479, -1, -1, 0.005627634, -1, - -1, 0.006514915, -1, -1, -1, -1, - -1, 0.005760423, -1, 0.005702388, -1, 0.005595339, -1, 0.004501231, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.006442659, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00535816, -1, -1, 0.005159518, -1, - 0.005222405, -1, -1, 0.00685269, -1, -1, -1, -1, - -1, 0.00576905, -1, 0.006462569, -1, 0.005432748, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00741261, - -1, -1, -1, -1, -1, -1, -1, -1, 0.005714609, -1, 0.00488958, -1, -1, - 0.005349049, -1, -1, 0.00667874, -1, -1, -1, - 0.006187082, -1, 0.006232561, -1, 0.006340918, -1, 0.005905484, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.007254547, -1, -1, 0.007040903, - -1, -1, -1, -1, -1, -1, -1, -1, 0.006180467, -1, -1, 0.004664623, -1, - 0.005029179, -1, -1, -1, -1, -1, -1, - 0.006574416, -1, 0.006590126, -1, 0.006972703, -1, 0.006049082, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.006417532, -1, -1, 0.006984773, - -1, -1, -1, -1, -1, -1, -1, 0.005431044, -1, 0.005141323, -1, 0.004875841, - -1, -1, 0.004895196, -1, -1, -1, -1, -1, - -1, 0.006260087, -1, 0.006546667, -1, 0.006617177, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.006238573, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.005552614, -1, 0.005906885, -1, -1, - 0.005357576, -1, 0.005252023, -1, -1, -1, -1, -1, - -1, 0.00692776, -1, 0.006982017, -1, 0.006211043, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.006648999, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.005602703, -1, 0.005401659, -1, - 0.00529094, -1, -1, 0.005317866, -1, -1, -1, -1, - 0.006675695, -1, 0.006807875, -1, 0.006484197, -1, 0.006295248, -1, -1, -1, - -1, -1, -1, -1, -1, 0.005214022, -1, -1, 0.005918572, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002897259, -1, -1, 0.00265262, -1, - 0.002870859, -1, -1, -1, 0.002856574, -1, -1, - -1, 0.002780663, -1, 0.00277109, -1, -1, 0.002801915, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002887234, -1, -1, 0.002814294, -1, -1, - 0.002921524, -1, -1, 0.002753877, -1, -1, - 0.002723944, -1, 0.002669347, -1, 0.002598929, -1, 0.002794395, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.002872241, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.002908573, -1, 0.00270738, -1, -1, - 0.002936858, -1, -1, -1, -1, -1, - 0.002863528, -1, 0.002689734, -1, 0.002823103, -1, -1, 0.002760003, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002812765, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.002713234, -1, -1, 0.002755286, -1, - -1, 0.002963391, -1, -1, -1, -1, - -1, 0.002983341, -1, 0.002874867, -1, 0.002828069, -1, 0.002440525, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002993037, -1, - -1, -1, -1, -1, -1, -1, -1, 0.002752162, -1, -1, 0.002629921, -1, - 0.002616266, -1, -1, 0.00307465, -1, -1, -1, -1, - -1, 0.00279646, -1, 0.003084347, -1, 0.002813007, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.003186504, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002734835, -1, 0.002499943, -1, -1, - 0.002635671, -1, -1, 0.003058562, -1, -1, -1, - 0.002875507, -1, 0.002808517, -1, 0.002943425, -1, 0.00290038, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.003155207, -1, -1, 0.003078914, - -1, -1, -1, -1, -1, -1, -1, -1, 0.003036741, -1, -1, 0.002412982, -1, - 0.002613348, -1, -1, -1, -1, -1, -1, - 0.003010268, -1, 0.0031765, -1, 0.003182251, -1, 0.002897787, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.002997119, -1, -1, 0.003212751, - -1, -1, -1, -1, -1, -1, -1, 0.0026237, -1, 0.002616077, -1, 0.00256031, -1, - -1, 0.002560063, -1, -1, -1, -1, -1, - -1, 0.00296652, -1, 0.003062244, -1, 0.003054794, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.002888574, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.002705727, -1, 0.002837356, -1, -1, - 0.002626978, -1, 0.002625805, -1, -1, -1, -1, -1, - -1, 0.003242166, -1, 0.003238396, -1, 0.002971262, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.002985405, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002749498, -1, 0.002654247, -1, - 0.002573213, -1, -1, 0.002660715, -1, -1, -1, -1, - 0.003107514, -1, 0.003110364, -1, 0.003089213, -1, 0.003089355, -1, -1, -1, - -1, -1, -1, -1, -1, 0.002653314, -1, -1, 0.002816054, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002772469, -1, -1, 0.002576804, -1, - 0.002672293, -1, -1, -1, 0.002626404, -1, -1, - -1, 0.002722804, -1, 0.002709695, -1, -1, 0.002699778, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002717481, -1, -1, 0.002652653, -1, -1, - 0.002638043, -1, -1, 0.002492113, -1, -1, - 0.002597935, -1, 0.002570902, -1, 0.002533907, -1, 0.002668346, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00261373, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.002735798, -1, 0.002560628, -1, -1, - 0.002683372, -1, -1, -1, -1, -1, - 0.002650293, -1, 0.002609437, -1, 0.002726222, -1, -1, 0.002656443, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002588663, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.002534672, -1, -1, 0.00254983, -1, - -1, 0.002670548, -1, -1, -1, -1, - -1, 0.002798069, -1, 0.002698702, -1, 0.002652901, -1, 0.002344788, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002723842, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00260032, -1, -1, 0.002460329, -1, - 0.002445537, -1, -1, 0.002771361, -1, -1, -1, -1, - -1, 0.002675227, -1, 0.002948606, -1, 0.002683953, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.002795885, - -1, -1, -1, -1, -1, -1, -1, -1, 0.00251489, -1, 0.00235068, -1, -1, - 0.002447522, -1, -1, 0.002712957, -1, -1, -1, - 0.002692607, -1, 0.002587649, -1, 0.002776072, -1, 0.002712202, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.002814738, -1, -1, 0.002741431, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002825865, -1, -1, 0.0023038, -1, - 0.002492012, -1, -1, -1, -1, -1, -1, - 0.002783785, -1, 0.00301627, -1, 0.00295905, -1, 0.002651443, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0.002736788, -1, -1, 0.00288234, - -1, -1, -1, -1, -1, -1, -1, 0.002411855, -1, 0.00245376, -1, 0.002435386, - -1, -1, 0.002426023, -1, -1, -1, -1, -1, - -1, 0.002769004, -1, 0.002866582, -1, 0.002839245, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.002641699, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0.00247752, -1, 0.002611536, -1, -1, - 0.002433883, -1, 0.002462394, -1, -1, -1, -1, -1, - -1, 0.003027125, -1, 0.002961707, -1, 0.002720762, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0.00270662, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0.002520365, -1, 0.002459628, -1, - 0.002373158, -1, -1, 0.002486733, -1, -1, -1, -1, - 0.002857551, -1, 0.002813199, -1, 0.002847445, -1, 0.002854384, -1, -1, -1, - -1, -1, -1, -1, -1, 0.002498582, -1, -1, 0.002606415, -1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/data.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/data.nc.dmp deleted file mode 100644 index aee62b85174..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/data.nc.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf data { -types: - compound SST_t { - float SST(12) ; - double TIME(12) ; - }; // SST_t -dimensions: - TIME = 12 ; -variables: - double TIME(TIME) ; - string TIME:units = "hour" ; - string TIME:time_origin = "1-JAN-0000 00:00:00" ; - string TIME:modulo = " " ; - SST_t SST ; - -// global attributes: - string :history = "FERRET V3.20 (development) 24-Jan-95" ; -data: - - TIME = 366, 1096.485, 1826.97, 2557.455, 3287.94, 4018.425, 4748.91, - 5479.395, 6209.88, 6940.365, 7670.85, 8401.335 ; - - SST = - {{27.54567, 28.3144, 28.61936, 28.66284, 27.93789, 25.67098, 24.74051, 24.5248, 25.00667, 25.83214, 26.57257, 27.17107}, {366, 1096.485, 1826.97, 2557.455, 3287.94, 4018.425, 4748.91, 5479.395, 6209.88, 6940.365, 7670.85, 8401.335}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/fnoc1.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/fnoc1.nc.dmp deleted file mode 100644 index bd8353d3fe0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/fnoc1.nc.dmp +++ /dev/null @@ -1,1129 +0,0 @@ -netcdf fnoc1 { -dimensions: - lat = 17 ; - lon = 21 ; - time = 16 ; - time_a = 16 ; -variables: - short u(time_a, lat, lon) ; - string u:units = "meter per second" ; - string u:long_name = "Vector wind eastward component" ; - string u:missing_value = "-32767" ; - string u:scale_factor = "0.005" ; - short v(time_a, lat, lon) ; - string v:units = "meter per second" ; - string v:long_name = "Vector wind northward component" ; - string v:missing_value = "-32767" ; - string v:scale_factor = "0.005" ; - float lat(lat) ; - string lat:units = "degree North" ; - float lon(lon) ; - string lon:units = "degree East" ; - float time(time) ; - string time:units = "hours from base_time" ; - -// global attributes: - string :base_time = "88- 10-00:00:00" ; - string :title = " FNOC UV wind components from 1988- 10 to 1988- 13." ; -data: - - u = - -1728, -2449, -3099, -3585, -3254, -2406, -1252, 662, 2483, 2910, 2819, - 2946, 2745, 2734, 2931, 2601, 2139, 1845, 1754, 1897, 1854, - -1686, -1985, -2508, -3397, -3501, -3268, -2700, -705, 1834, 2728, 2484, - 2465, 2531, 2591, 2514, 2200, 1934, 1677, 1401, 1202, 1084, - -223, -864, -864, -1152, -1427, -1717, -1992, -1211, 791, 2235, 2558, 2770, - 2961, 2663, 2131, 1959, 2035, 2053, 1732, 926, 581, - 1924, 1664, 1555, 1551, 1190, 430, -459, -453, 914, 2055, 2526, 2916, 2761, - 1955, 1418, 1509, 1645, 1720, 1510, 739, 318, - 2869, 3660, 3561, 3069, 2378, 1453, 601, 479, 953, 1237, 1494, 1700, 1436, - 751, 358, 732, 1067, 922, 701, 484, 166, - 2012, 2885, 3172, 2734, 2141, 1453, 795, 420, -98, -415, -37, 108, -104, - -313, -609, -225, 559, 508, 144, 128, -57, - 685, 1311, 1566, 1458, 1174, 762, 327, -113, -779, -1281, -1168, -968, - -932, -1048, -1344, -1051, -235, 72, -14, -6, -83, - -135, 336, 408, 261, -1, -305, -509, -664, -932, -1326, -1734, -1680, - -1197, -1260, -1784, -1724, -1132, -545, -169, -26, 92, - -628, -593, -482, -575, -792, -1064, -1290, -1280, -1125, -1202, -1598, - -1676, -1340, -1307, -1652, -1748, -1393, -896, -534, -363, -175, - -903, -1244, -1158, -1036, -1219, -1432, -1556, -1551, -1223, -1041, -1074, - -1040, -1194, -1380, -1351, -1211, -916, -749, -956, -1132, -1125, - -1247, -1435, -1261, -1147, -1445, -1657, -1641, -1599, -1298, -1042, -946, - -630, -512, -1018, -1489, -1185, -483, -401, -1168, -1888, -2185, - -1873, -1883, -1557, -1411, -1469, -1584, -1648, -1599, -1362, -1119, - -1068, -760, -282, -690, -1633, -1489, -569, -324, -906, -1711, -2371, - -2116, -2318, -2171, -1834, -1610, -1576, -1672, -1547, -1307, -1238, - -1113, -936, -745, -782, -1320, -1385, -635, -48, -131, -907, -1877, - -2055, -2123, -2049, -1781, -1842, -2019, -2132, -1775, -1288, -1227, - -1023, -787, -848, -845, -1010, -1162, -522, 403, 488, -509, -1602, - -2087, -1807, -1623, -1734, -1891, -2086, -2257, -1897, -1349, -1079, -811, - -698, -1040, -1163, -933, -944, -617, 193, 388, -413, -1269, - -1942, -1670, -1472, -1896, -1915, -1669, -1709, -1607, -1319, -1140, -959, - -911, -1290, -1252, -467, -281, -597, -429, -251, -484, -749, - -1661, -1294, -934, -1328, -1643, -1426, -1321, -1400, -1250, -1130, -1209, - -1096, -929, -669, 42, 212, -485, -892, -865, -605, -303, - -146, -422, -1033, -1668, -2000, -2307, -2216, -1757, -1231, -294, 861, - 1807, 2561, 3064, 3235, 3228, 3132, 2854, 2510, 2241, 1853, - 695, 1086, 962, -3, -491, -679, -1114, -1268, -918, -159, 783, 1642, 2133, - 2245, 2376, 2497, 2381, 2218, 2058, 1630, 1081, - 1437, 2109, 2430, 1835, 1600, 1931, 1692, 1011, 552, 553, 1212, 2068, 2082, - 1460, 1365, 1775, 2045, 2174, 2019, 1332, 640, - 1372, 2221, 2958, 3042, 3039, 3570, 3694, 2954, 1807, 871, 1154, 2053, - 1842, 960, 790, 1234, 1735, 1921, 1599, 1116, 646, - 613, 1528, 2490, 2979, 2993, 3147, 3254, 2895, 1955, 799, 626, 1271, 1165, - 517, 574, 998, 1115, 999, 765, 608, 424, - -317, 593, 1389, 1808, 1871, 1832, 1882, 1903, 1435, 400, -104, 148, 82, - -243, -47, 359, 387, 279, 234, 94, -101, - -762, 139, 483, 508, 645, 946, 1046, 986, 768, -26, -655, -615, -665, -843, - -787, -509, -113, 86, 9, -51, -155, - -454, -98, -183, -461, -318, -3, 12, -84, -146, -483, -836, -810, -770, - -981, -1210, -1065, -472, -85, -197, -181, 66, - -132, -567, -819, -1009, -911, -893, -1117, -1184, -975, -890, -972, -948, - -821, -944, -1380, -1382, -827, -456, -385, -252, 55, - -311, -901, -1235, -1142, -1147, -1303, -1585, -1713, -1324, -1024, -1088, - -1157, -1080, -1073, -1292, -1173, -791, -754, -670, -360, -283, - -722, -809, -1119, -1167, -1312, -1516, -1530, -1439, -1258, -1132, -1189, - -1291, -1345, -1393, -1261, -771, -441, -649, -898, -916, -1072, - -1065, -919, -1196, -1345, -1373, -1519, -1366, -1063, -1099, -1218, -1246, - -1309, -1408, -1541, -1462, -1017, -656, -596, -840, -1364, -1816, - -1404, -1508, -1839, -1682, -1494, -1520, -1409, -1209, -1051, -990, -1137, - -1291, -1252, -1311, -1627, -1643, -1108, -659, -790, -1321, -1762, - -1896, -1864, -1990, -1901, -1938, -1827, -1511, -1432, -1164, -829, -1014, - -1187, -1036, -1048, -1740, -2259, -1314, -439, -884, -1277, -1245, - -2076, -1719, -1547, -1800, -2135, -2002, -1509, -1336, -1398, -1171, -854, - -913, -1215, -1248, -1615, -2352, -1788, -818, -1102, -1331, -984, - -1858, -1614, -1321, -1603, -1927, -1849, -1496, -1122, -1198, -1211, -753, - -828, -1383, -1291, -920, -1338, -1905, -1782, -1455, -1160, -851, - -1571, -1384, -1038, -1207, -1521, -1476, -1185, -824, -700, -809, -898, - -1003, -1023, -781, -328, -379, -1285, -1985, -1672, -885, -460, - 1418, 1662, 1172, 67, -112, 5, -840, -1933, -2373, -1796, -665, -79, 69, - 862, 2036, 2481, 2515, 2522, 2259, 2181, 2399, - 2147, 2461, 2003, 1414, 2067, 2979, 2542, 1311, 186, -328, -203, -18, 349, - 1192, 1850, 1958, 2062, 1977, 1439, 1507, 2106, - 1628, 2179, 2018, 2273, 3051, 3867, 4409, 4158, 2936, 1621, 1015, 899, 987, - 1276, 1445, 1450, 1570, 1438, 1147, 1435, 1539, - 679, 1404, 1864, 2519, 3168, 3503, 3701, 3890, 3459, 2181, 1329, 1221, - 1062, 1074, 1237, 1147, 1144, 1185, 1087, 1066, 874, - 28, 1030, 1771, 2167, 3077, 3717, 2892, 2197, 2338, 1620, 527, 353, 399, - 640, 990, 625, 414, 727, 597, 277, 335, - -122, 1100, 1714, 1659, 2191, 2896, 2504, 1554, 1147, 757, -215, -672, - -304, 37, 104, -166, -377, -69, 191, 73, -31, - 90, 717, 1403, 1341, 915, 930, 1231, 1053, 405, -121, -810, -1283, -793, - -578, -1080, -1127, -813, -457, -56, -1, -147, - 277, 119, 653, 708, -25, -307, -110, -125, -346, -656, -1170, -1564, -1508, - -1510, -1783, -1602, -860, -317, -168, -109, 73, - 121, -208, -209, -335, -856, -950, -676, -871, -1039, -878, -1015, -1404, - -1701, -1920, -1913, -1299, -430, -104, -171, -116, 46, - -496, -793, -1089, -1372, -1611, -1570, -1254, -1141, -1201, -1102, -1005, - -1163, -1455, -1709, -1509, -738, -203, -274, -618, -754, -696, - -1358, -1633, -1926, -2062, -2029, -1964, -1824, -1519, -1310, -1310, - -1220, -1116, -1423, -1602, -999, -481, -461, -677, -1296, -1708, -1735, - -1899, -2021, -2231, -2193, -1979, -1867, -1847, -1804, -1742, -1582, - -1236, -1013, -1318, -1493, -1006, -656, -591, -695, -1205, -1703, -2179, - -2027, -1979, -2138, -2164, -1782, -1495, -1590, -1742, -1894, -1817, - -1309, -1002, -1153, -1267, -1148, -987, -741, -425, -692, -1521, -2216, - -2179, -2049, -2150, -2167, -1713, -1413, -1552, -1631, -1660, -1587, - -1216, -1007, -1027, -938, -1097, -1437, -966, -348, -1036, -2082, -2271, - -2333, -2032, -1992, -1948, -1697, -1598, -1658, -1706, -1554, -1100, -762, - -886, -1196, -1068, -1045, -1507, -1171, -849, -1606, -2073, -1907, - -2101, -2059, -1976, -1827, -1752, -1827, -1737, -1683, -1550, -902, -510, - -980, -1687, -1582, -812, -764, -1310, -1544, -1376, -1131, -1207, - -1359, -2069, -2216, -1995, -1795, -1892, -1731, -1502, -1433, -882, -645, - -1420, -1975, -1535, -554, -174, -825, -1343, -874, -59, 32, - 1612, 1533, 1633, 1733, 1706, 2090, 2275, 1806, 1156, 563, 268, 211, 271, - 538, 907, 1261, 1702, 2293, 2649, 2660, 2547, - 2419, 2111, 1824, 2342, 3078, 3489, 3817, 4036, 3536, 2721, 2431, 2223, - 1621, 1130, 1099, 1187, 1365, 1734, 1853, 1794, 1817, - 1935, 1673, 1398, 1701, 2421, 3096, 3725, 4314, 4164, 3743, 3588, 3133, - 2378, 1688, 1220, 1003, 988, 969, 815, 923, 1067, - 744, 968, 815, 368, 815, 2042, 2964, 3450, 3400, 3221, 3209, 2738, 1997, - 1475, 939, 506, 417, 350, 143, 211, 425, - 215, 1092, 1203, 423, 633, 1662, 2350, 2653, 2482, 2187, 2131, 1832, 1219, - 683, 233, -171, -361, -278, -184, -190, -15, - 693, 1507, 1919, 1710, 1579, 1594, 1662, 1694, 1533, 1368, 1159, 757, 344, - -44, -499, -998, -1219, -872, -406, -249, -112, - 1045, 1544, 1995, 2184, 1977, 1340, 673, 313, 214, 185, 12, -452, -773, - -650, -912, -1653, -1735, -1047, -383, -88, 38, - 685, 967, 1370, 1446, 1268, 795, -83, -864, -1104, -1141, -1291, -1525, - -1653, -1407, -1234, -1576, -1625, -857, -138, -4, 71, - 11, -76, 43, 22, -130, -159, -482, -1208, -1456, -1438, -1633, -1601, - -1696, -1930, -1561, -1306, -1422, -957, -331, -135, -31, - -574, -793, -1124, -1298, -1361, -1140, -863, -1078, -1193, -1117, -1211, - -1019, -1012, -1437, -1407, -1178, -1199, -1186, -1020, -616, -303, - -856, -1188, -1693, -1954, -1923, -1592, -1083, -990, -1125, -1097, -1301, - -1359, -979, -880, -910, -624, -482, -809, -1253, -1242, -971, - -1065, -1411, -1732, -2012, -2081, -1700, -1100, -851, -950, -1076, -1524, - -1850, -1449, -1122, -925, -393, -115, -346, -841, -1276, -1519, - -1514, -1497, -1531, -1792, -2015, -1650, -1109, -901, -843, -863, -1119, - -1238, -910, -795, -1027, -928, -584, -300, -225, -746, -1568, - -1957, -1763, -1813, -1844, -1670, -1419, -1360, -1285, -964, -680, -574, - -578, -336, -107, -698, -1228, -850, -162, 237, -353, -1340, - -2161, -2050, -2130, -1914, -1515, -1583, -1719, -1428, -1007, -603, -294, - -440, -721, -535, -548, -971, -904, -323, 95, -301, -984, - -2030, -2155, -1937, -1639, -1682, -2055, -1951, -1495, -1172, -621, -213, - -497, -1013, -887, -336, -545, -1233, -1170, -526, -400, -750, - -1257, -1738, -1586, -1533, -1619, -1790, -1867, -1708, -1393, -755, -350, - -664, -788, -165, 225, -279, -1087, -1361, -850, -279, -186, - 2474, 2571, 2659, 2430, 2349, 2731, 3231, 3686, 3985, 3662, 2877, 2088, - 1191, 510, 555, 982, 1337, 1673, 2035, 2259, 2262, - 2625, 2713, 2732, 2289, 2026, 2622, 3480, 4089, 4433, 4393, 3943, 3208, - 2407, 1855, 1627, 1610, 1735, 1783, 1792, 1856, 1648, - 1896, 2269, 2233, 1792, 1613, 1835, 2432, 2920, 2844, 2811, 2891, 2797, - 2739, 2403, 1841, 1697, 1783, 1560, 1220, 1072, 852, - 975, 1540, 1566, 1303, 1414, 1406, 1500, 1870, 1814, 1653, 1946, 2335, - 2361, 1933, 1342, 938, 842, 781, 456, 144, 61, - 205, 921, 1079, 1105, 1544, 1868, 1784, 1688, 1727, 1716, 1585, 1576, 1600, - 1303, 613, -140, -326, -42, -10, -241, -289, - -160, 660, 1015, 1137, 1533, 2224, 2340, 1737, 1462, 1501, 886, 149, 191, - 398, 45, -611, -911, -603, -166, -75, -98, - -48, 647, 1094, 1159, 1348, 1750, 1752, 1300, 960, 765, 204, -714, -1233, - -955, -634, -936, -1252, -936, -346, -4, 104, - 300, 646, 833, 837, 881, 824, 565, 335, 112, -163, -486, -1126, -1850, - -1925, -1592, -1524, -1439, -964, -396, -79, 53, - 348, 360, 176, 43, -98, -198, -389, -739, -913, -916, -1130, -1579, -1998, - -2258, -2241, -1914, -1390, -687, -201, -124, 38, - -402, -520, -734, -887, -1006, -951, -1116, -1562, -1557, -1253, -1356, - -1521, -1646, -2156, -2417, -2030, -1412, -594, -76, -143, -170, - -1335, -1331, -1563, -1667, -1588, -1480, -1672, -2035, -1966, -1586, - -1497, -1366, -1126, -1449, -1855, -1639, -1169, -778, -425, -347, -821, - -1777, -1576, -1879, -2025, -1891, -1880, -1956, -2089, -2138, -1870, - -1630, -1504, -1124, -798, -838, -731, -482, -665, -854, -762, -1259, - -2111, -2096, -2023, -2015, -2044, -2044, -2041, -2122, -2107, -1925, - -1759, -1495, -1092, -851, -908, -873, -555, -523, -852, -1068, -1450, - -2080, -2246, -2145, -2062, -2124, -2105, -2181, -2263, -2083, -1902, - -1746, -1366, -953, -968, -1763, -2214, -1130, -426, -1049, -1440, -1559, - -1518, -1342, -1728, -1985, -1913, -1976, -2088, -1869, -1825, -1806, - -1310, -1038, -1096, -1128, -1758, -2031, -696, -91, -1144, -1562, -1249, - -1583, -1333, -1508, -1782, -1825, -1870, -1789, -1411, -1597, -1912, - -1329, -859, -1149, -1305, -901, -251, 110, -24, -457, -821, -780, - -1882, -1800, -1749, -1918, -1989, -1852, -1741, -1674, -1581, -1495, - -1447, -1309, -994, -701, -22, 785, 468, -149, -12, -65, -280, - 2293, 2249, 2339, 2492, 2972, 3740, 4023, 3937, 3896, 3779, 3491, 2911, - 2291, 1825, 1271, 874, 857, 1070, 1279, 1270, 1364, - 2172, 1871, 1841, 2386, 2934, 3373, 3449, 3243, 3436, 3802, 3900, 3652, - 2976, 2045, 1547, 1740, 1825, 1616, 1506, 1302, 1153, - 1109, 1265, 1488, 1948, 2382, 2486, 2410, 2381, 2453, 2432, 2351, 2437, - 2348, 1734, 1371, 1731, 1989, 1763, 1279, 737, 611, - 80, 747, 1357, 1598, 1798, 1707, 1454, 1640, 1789, 1568, 1476, 1444, 1296, - 1248, 1377, 1532, 1428, 1083, 618, 63, -121, - -636, 309, 1179, 1432, 1444, 1468, 1303, 1262, 1563, 1834, 1896, 1541, 882, - 607, 815, 1004, 817, 333, -82, -421, -584, - -573, 452, 1249, 1494, 1385, 1460, 1707, 1667, 1641, 1878, 1864, 1346, 753, - 246, -80, 114, 257, -79, -214, -207, -233, - 180, 1178, 1745, 1714, 1318, 1123, 1472, 1609, 1276, 1088, 939, 498, 230, - -120, -830, -918, -682, -672, -259, 103, 156, - 448, 1115, 1402, 1119, 633, 464, 617, 593, 359, 147, -39, -238, -477, -909, - -1481, -1646, -1331, -921, -665, -645, -565, - 66, 191, 196, -179, -481, -275, -77, -307, -680, -825, -727, -674, -948, - -1361, -1571, -1423, -783, -238, -545, -1237, -1576, - -682, -590, -394, -844, -1277, -928, -599, -883, -1412, -1532, -1185, - -1048, -1142, -1090, -1159, -1157, -658, -261, -243, -599, -1468, - -1445, -1123, -792, -1205, -1722, -1512, -1218, -1343, -1533, -1564, -1409, - -1237, -1108, -876, -917, -1230, -1291, -1097, -551, -154, -932, - -1811, -1662, -1695, -1849, -1953, -1820, -1534, -1461, -1526, -1547, - -1505, -1289, -1071, -916, -712, -655, -835, -851, -520, -280, -795, - -2076, -2364, -2370, -2125, -1922, -1779, -1466, -1411, -1684, -1757, - -1699, -1558, -1234, -959, -720, -382, -204, -144, -30, -221, -884, - -2101, -2443, -2302, -1967, -1814, -1833, -1731, -1619, -1721, -1773, - -1689, -1592, -1285, -991, -1213, -1198, -416, 149, 224, -215, -1099, - -1841, -1785, -1844, -1836, -1751, -1806, -1914, -1721, -1619, -1611, - -1233, -1077, -1233, -1182, -1322, -1204, -185, 482, 168, -555, -1102, - -1668, -1649, -1790, -1834, -1717, -1625, -1610, -1448, -1517, -1572, - -1055, -886, -1423, -1562, -782, 227, 737, 635, -51, -785, -862, - -732, -1054, -1586, -1822, -1637, -1517, -1465, -1364, -1353, -1228, -1025, - -1107, -1399, -1333, -208, 1085, 1067, 361, -132, -425, -426, - 1667, 1421, 1436, 2225, 3262, 3779, 3435, 2582, 2653, 3674, 4454, 5052, - 5399, 4675, 3239, 2622, 2738, 2388, 1992, 2012, 1818, - 1666, 1363, 1229, 1933, 2705, 3135, 3131, 2428, 1931, 2257, 2902, 3394, - 3448, 3075, 2542, 2370, 2741, 2809, 2228, 1823, 1580, - 783, 950, 1085, 1642, 2163, 2425, 2616, 2612, 1997, 1392, 1714, 2159, 2119, - 1944, 1760, 1789, 2141, 2346, 1987, 1442, 808, - -56, 140, 434, 1023, 1492, 1787, 2182, 2426, 1863, 1280, 1657, 2177, 2304, - 2040, 1580, 1500, 1499, 1189, 925, 792, 304, - -420, -506, -322, 255, 789, 1325, 1906, 1912, 1438, 1556, 2258, 2585, 2467, - 2127, 1672, 1439, 1120, 453, 98, 126, -34, - -414, -320, -215, 181, 719, 1212, 1552, 1525, 1566, 2146, 2655, 2373, 1771, - 1537, 1263, 841, 523, 117, -128, -53, 80, - -56, 383, 620, 805, 1135, 1429, 1231, 1059, 1501, 1929, 1836, 1234, 478, - 243, 257, -29, -310, -350, -287, 8, 523, - 375, 689, 1034, 1071, 999, 1046, 593, 166, 416, 500, 226, -108, -627, -855, - -595, -585, -763, -487, -148, -97, 113, - 26, 205, 485, 509, 325, 110, -292, -608, -537, -584, -832, -1011, -1126, - -964, -766, -885, -749, -240, -121, -373, -391, - -915, -719, -548, -374, -477, -688, -793, -1029, -1124, -988, -1064, -1288, - -1368, -1123, -892, -948, -663, -332, -701, -885, -584, - -1364, -1315, -1279, -1051, -1207, -1378, -1276, -1383, -1514, -1361, - -1279, -1327, -1449, -1512, -1328, -1169, -1010, -853, -1141, -1491, -1433, - -1498, -1413, -1457, -1419, -1550, -1710, -1702, -1579, -1465, -1487, - -1595, -1440, -1159, -1292, -1616, -1651, -1353, -922, -924, -1512, -1984, - -1973, -1729, -1528, -1627, -1903, -2021, -1919, -1807, -1697, -1617, - -1710, -1503, -847, -665, -1215, -1641, -1271, -568, -510, -1038, -1632, - -2260, -2095, -1652, -1678, -2242, -2512, -2179, -1979, -1962, -1806, - -1683, -1449, -925, -454, -617, -1277, -1335, -864, -833, -1049, -1344, - -1901, -1964, -1752, -1560, -1959, -2419, -2062, -1664, -1718, -1766, - -1464, -1039, -1202, -1388, -1019, -856, -882, -1109, -1661, -1632, -1290, - -1650, -1900, -1891, -1570, -1556, -1962, -1788, -1293, -1427, -1757, - -1417, -861, -1526, -2511, -1711, -246, 93, -737, -1909, -1986, -1249, - -1575, -1726, -1604, -1568, -1515, -1511, -1528, -1260, -1213, -1475, - -1391, -1159, -1628, -2253, -1441, 1, 140, -811, -1590, -1479, -896, - 1386, 1306, 2063, 2993, 3321, 3242, 3314, 3792, 4077, 3984, 4054, 4153, - 4016, 3658, 2834, 1874, 1431, 1290, 1099, 1073, 1305, - 2009, 1320, 1219, 1951, 2638, 2786, 2781, 3372, 4094, 4275, 4502, 4464, - 3700, 2911, 2324, 1930, 1920, 1902, 1489, 1344, 1740, - 854, 1098, 677, 561, 1587, 2233, 2197, 2738, 3698, 4354, 4460, 3851, 3005, - 2505, 2112, 1803, 1951, 2140, 1776, 1429, 1548, - -410, 354, 189, -209, 414, 1015, 1397, 2221, 3180, 3623, 3239, 2768, 2768, - 2766, 2331, 1772, 1720, 1864, 1414, 426, -83, - -1138, -795, -561, -580, -387, 181, 1013, 1982, 2618, 2468, 2351, 2998, - 3348, 2917, 2578, 2187, 1630, 1278, 695, -243, -792, - -1774, -1760, -1385, -910, -277, 584, 1263, 1873, 2281, 2209, 2410, 3107, - 3248, 2417, 1774, 1572, 1025, 429, 89, -24, 37, - -1740, -1605, -1131, -308, 557, 1143, 1396, 1680, 2055, 2329, 2239, 1959, - 1947, 1470, 416, -42, -25, -127, -243, -168, 267, - -1001, -649, -90, 595, 864, 861, 1092, 1193, 1237, 1446, 1170, 584, 462, - 408, -93, -615, -635, -334, -369, -700, -501, - -673, -281, 89, 329, 172, 110, 482, 425, 143, 40, -332, -719, -765, -571, - -379, -600, -920, -703, -491, -769, -868, - -1240, -778, -545, -590, -656, -605, -535, -606, -734, -963, -1422, -1814, - -1737, -1364, -1084, -1000, -1133, -1171, -835, -504, -548, - -1711, -1339, -1092, -1090, -1080, -1165, -1403, -1509, -1499, -1621, - -2035, -2497, -2474, -1981, -1356, -916, -957, -1203, -1059, -681, -671, - -1654, -1723, -1609, -1382, -1384, -1570, -1680, -1856, -1970, -2004, - -2282, -2550, -2557, -2101, -1198, -710, -722, -631, -565, -714, -960, - -1921, -1943, -1896, -1747, -1776, -1926, -1898, -1946, -1985, -1942, - -2037, -2025, -1839, -1567, -1333, -1274, -997, -396, -42, -333, -986, - -2395, -2005, -1694, -1732, -1991, -2159, -2042, -1840, -1784, -1855, - -1834, -1601, -1233, -1079, -1405, -1632, -1294, -525, 105, -382, -1288, - -2310, -2085, -1655, -1488, -1846, -2147, -1818, -1420, -1659, -2056, - -1827, -1362, -1408, -1607, -1459, -1247, -955, -190, 465, -33, -910, - -1941, -2047, -1904, -1608, -1675, -1997, -1673, -1256, -1722, -2207, - -1786, -1316, -1953, -2615, -1872, -687, -146, 41, 484, 819, 177, - -1490, -1661, -1667, -1718, -1706, -1728, -1657, -1416, -1536, -1862, - -1688, -1460, -2020, -2502, -1643, -117, 536, 152, 175, 913, 704, - 1560, 1537, 1595, 2139, 2557, 2822, 3389, 3820, 3611, 3661, 4166, 4202, - 3782, 3229, 2478, 1756, 1319, 817, 377, 480, 765, - 1954, 1831, 1567, 1906, 2276, 2448, 3084, 3872, 3910, 3975, 4660, 4480, - 3317, 2569, 2136, 1814, 1850, 1574, 846, 461, 585, - 711, 1123, 1388, 1330, 1144, 1385, 2031, 2649, 3130, 3814, 4493, 4059, - 2906, 2363, 2150, 1900, 2117, 2285, 1556, 594, 262, - -313, 146, 287, -110, -284, 267, 797, 1284, 2223, 2975, 3181, 3171, 3034, - 2945, 2782, 2354, 2227, 2376, 1974, 915, 8, - -480, -292, -537, -672, -539, -404, -90, 582, 1351, 1745, 1897, 2423, 3096, - 3413, 3246, 2682, 2203, 2050, 1889, 1258, 501, - -1032, -346, 30, 336, 340, -164, -125, 596, 1117, 1395, 1742, 2083, 2390, - 2753, 2805, 2229, 1526, 1215, 1126, 1029, 1028, - -1084, 119, 1055, 1418, 1379, 944, 634, 1110, 1669, 1691, 1849, 1966, 1537, - 1291, 1438, 1192, 594, 279, 203, 334, 774, - 6, 650, 1219, 1509, 1437, 1142, 813, 1036, 1495, 1421, 1274, 1307, 917, - 284, 108, 195, 126, -62, -326, -429, 4, - 123, 56, 140, 262, 126, 52, 90, 156, 426, 455, 65, -167, -197, -267, -329, - -311, -201, -337, -757, -815, -263, - -1092, -1086, -954, -1009, -1052, -933, -809, -741, -565, -527, -847, - -1263, -1389, -1053, -552, -363, -531, -896, -1088, -618, 40, - -1526, -1447, -1161, -1282, -1375, -1450, -1571, -1389, -1193, -1104, - -1083, -1334, -1541, -1441, -930, -409, -604, -1088, -1155, -747, -326, - -984, -1255, -1386, -1492, -1537, -1711, -1886, -1805, -1724, -1580, -1283, - -1209, -1274, -1278, -1024, -503, -380, -626, -865, -1078, -1089, - -993, -1159, -1655, -1921, -1834, -1819, -1886, -1959, -2060, -1942, -1564, - -1318, -1208, -1058, -876, -543, -223, -160, -387, -861, -1170, - -1548, -1377, -1532, -1965, -2070, -1933, -1946, -1909, -1907, -1918, - -1603, -1195, -1034, -1087, -1081, -793, -306, 51, -44, -666, -1166, - -1961, -1933, -1834, -1839, -1974, -1951, -1710, -1519, -1709, -1892, - -1412, -932, -1367, -2051, -1993, -1197, -92, 646, 487, -369, -1058, - -2098, -2261, -2268, -1974, -1889, -1899, -1397, -1082, -1574, -1867, - -1199, -943, -2151, -3147, -2577, -1132, 303, 1097, 979, 443, -141, - -1553, -1766, -1885, -2041, -2109, -1981, -1565, -1122, -1140, -1363, - -1067, -953, -2114, -3103, -2254, -585, 433, 824, 1052, 1097, 616, - 3121, 2355, 1986, 2431, 2707, 2712, 2925, 3483, 4042, 4327, 4538, 4975, - 4862, 3967, 3176, 2254, 1187, 539, 283, 306, 457, - 2458, 1759, 1739, 2130, 2261, 2510, 2722, 3034, 3615, 4275, 4986, 5510, - 4643, 2543, 1639, 1834, 1451, 998, 991, 880, 687, - 724, 832, 1199, 1433, 1580, 1663, 1776, 2216, 2922, 3725, 4606, 4658, 3052, - 1052, 925, 2115, 2261, 1813, 1765, 1476, 913, - -128, -27, 230, 459, 473, 263, 487, 1300, 2164, 2690, 3165, 3145, 2002, - 1014, 1507, 2636, 3014, 2643, 1887, 1295, 851, - -412, -399, -292, -289, -526, -662, -428, 222, 1078, 1499, 1498, 1803, - 2143, 2151, 2374, 2730, 2851, 2469, 1470, 816, 609, - -700, -219, -96, -185, -158, -185, -316, -64, 428, 580, 574, 1108, 1982, - 2346, 2283, 2201, 2002, 1640, 1210, 712, 471, - -680, -357, -58, 261, 903, 1056, 720, 754, 869, 649, 753, 1323, 1644, 1580, - 1459, 1370, 1192, 946, 782, 617, 582, - -401, -626, -369, 159, 922, 1432, 1400, 1356, 1418, 1162, 984, 1209, 1250, - 949, 688, 569, 502, 350, 158, 149, 202, - -113, -592, -835, -567, -99, 448, 855, 1034, 918, 498, 244, 270, 267, 113, - -155, -310, -267, -269, -344, -395, -475, - -111, -685, -1207, -1330, -1243, -1019, -529, -206, -545, -957, -905, -782, - -808, -833, -902, -1028, -1025, -949, -980, -923, -699, - -432, -900, -1294, -1565, -1767, -1879, -1751, -1579, -1767, -1978, -1889, - -1679, -1481, -1451, -1441, -1367, -1488, -1639, -1716, -1606, -1139, - -722, -912, -1143, -1302, -1457, -1639, -1863, -1974, -2054, -2229, -2314, - -2225, -1987, -1769, -1644, -1499, -1466, -1638, -1881, -2082, -1921, - -833, -699, -767, -946, -1012, -951, -1185, -1771, -2008, -1930, -1991, - -2089, -1989, -1559, -1240, -1254, -919, -554, -1041, -1875, -2034, - -993, -908, -810, -770, -805, -808, -1127, -1744, -1930, -1770, -1627, - -1448, -1356, -1281, -1204, -1090, -299, 558, 10, -1166, -1486, - -1563, -1838, -1681, -1148, -1027, -1280, -1513, -1580, -1751, -1886, - -1454, -1033, -1373, -2002, -2162, -1527, -94, 811, 195, -690, -996, - -2047, -2325, -2257, -1877, -1755, -1810, -1492, -1194, -1585, -1844, - -1233, -1038, -2089, -3058, -2777, -1517, -56, 588, 163, -346, -535, - -1536, -1751, -1855, -2057, -2175, -2020, -1543, -1134, -1220, -1391, - -1074, -1036, -2100, -3093, -2500, -957, 25, 448, 644, 429, 109, - 2617, 2084, 2175, 2374, 2321, 2337, 2684, 3207, 3890, 4638, 5180, 5469, - 4979, 3972, 3578, 3592, 3437, 3211, 2720, 1776, 851, - 1271, 1306, 1806, 2008, 1945, 1948, 2247, 2628, 2891, 3094, 3242, 3581, - 3951, 3859, 3660, 3791, 3820, 3501, 3042, 2280, 1481, - -32, 227, 598, 459, 491, 928, 1532, 1797, 1713, 1961, 2428, 2857, 3339, - 3406, 3137, 3333, 3637, 3324, 2754, 2291, 1875, - -290, -477, -967, -1233, -497, 804, 1566, 1356, 977, 1523, 2393, 2660, - 2688, 2629, 2457, 2610, 2961, 2747, 2199, 2069, 1725, - -815, -1465, -1873, -1958, -1281, 18, 738, 591, 413, 992, 1759, 1987, 2068, - 2157, 2173, 2129, 2194, 2238, 1860, 1551, 1236, - -1096, -1356, -1260, -1938, -2448, -1947, -1308, -578, 112, 409, 838, 1560, - 1899, 1788, 1922, 2104, 2075, 2186, 1825, 1126, 942, - -280, 133, 177, -974, -2053, -1780, -1051, -184, 552, 451, 527, 1420, 1895, - 1652, 1653, 2040, 2047, 1727, 1517, 1171, 687, - 182, 677, 743, 178, -499, -160, 678, 934, 882, 856, 1070, 1552, 1845, 1751, - 1438, 1408, 1469, 984, 622, 638, 84, - 41, 74, -73, -196, -328, -137, 368, 503, 479, 696, 1023, 1263, 1358, 1219, - 637, 211, 500, 521, -92, -326, -499, - -241, -522, -960, -1173, -1062, -956, -940, -691, -283, -103, -82, -1, 208, - 282, -187, -710, -553, -196, -443, -851, -849, - -754, -1208, -1403, -1356, -1180, -1188, -1397, -1284, -1050, -967, -868, - -788, -686, -502, -509, -799, -946, -870, -1078, -1381, -1222, - -1179, -1646, -1699, -1416, -1220, -1324, -1527, -1478, -1499, -1587, - -1278, -834, -766, -810, -739, -815, -912, -1002, -1394, -1715, -1670, - -1379, -1451, -1747, -1908, -1788, -1749, -1890, -1863, -1757, -1795, - -1546, -891, -481, -480, -763, -1087, -1087, -896, -962, -1423, -1864, - -1428, -1424, -1911, -2350, -2174, -1920, -2029, -2171, -2017, -1812, - -1404, -578, -167, -467, -976, -1243, -870, -495, -815, -1333, -1638, - -1568, -1866, -2271, -2316, -2123, -1910, -1663, -1630, -1748, -1651, - -1110, -393, -554, -1472, -1877, -1406, -375, -196, -1211, -1652, -1394, - -1698, -2042, -2194, -2007, -1983, -2028, -1442, -985, -1307, -1341, -821, - -722, -1593, -2599, -2452, -1258, -171, -244, -1079, -1485, -1362, - -1602, -1604, -1574, -1747, -1781, -1886, -1646, -1267, -1419, -1369, -880, - -881, -1801, -2649, -2116, -762, -115, -164, -315, -698, -978, - 943, 1109, 1697, 1923, 1965, 2570, 3254, 3502, 3869, 4168, 4222, 4818, - 5522, 5346, 4585, 4179, 4066, 3594, 3358, 3100, 1666, - 898, 1172, 1824, 2250, 2090, 2225, 2932, 3241, 3321, 3283, 3388, 4350, - 4946, 4331, 3927, 4137, 3904, 3484, 3357, 2703, 1439, - 769, 593, 788, 1096, 1231, 1587, 2238, 2669, 2636, 2518, 2888, 3658, 3841, - 3389, 3455, 3572, 2915, 2743, 3121, 2531, 1373, - -83, -825, -1162, -1043, -588, 423, 1391, 1810, 1830, 2121, 2687, 2962, - 2837, 2690, 2640, 2309, 2083, 2313, 2412, 1887, 768, - -1450, -2061, -2359, -2269, -1834, -824, 222, 945, 1400, 1830, 2285, 2438, - 2420, 2373, 1904, 1460, 1777, 1964, 1779, 1663, 656, - -1954, -2109, -2079, -1738, -1386, -807, -105, 412, 965, 1470, 1705, 1885, - 2173, 2203, 1760, 1588, 1868, 1839, 1865, 2016, 1176, - -1366, -1099, -1000, -490, 205, 711, 582, -66, 173, 1061, 1349, 1526, 1859, - 1884, 1726, 1685, 1809, 1945, 1931, 1682, 1161, - -448, -14, -140, -36, 781, 1420, 879, -33, 137, 928, 1353, 1561, 1636, - 1513, 1398, 1338, 1313, 1365, 1227, 834, 578, - 192, 244, -222, -528, 15, 762, 710, 264, 308, 719, 1132, 1331, 1240, 970, - 629, 494, 508, 343, 127, 63, 93, - 58, -146, -575, -855, -558, -144, -69, -348, -463, -154, 262, 467, 424, - 181, -326, -643, -400, -351, -677, -631, -363, - -480, -803, -877, -874, -783, -970, -1172, -1147, -1200, -1130, -785, -547, - -549, -648, -877, -1052, -867, -701, -942, -1170, -1060, - -1072, -1509, -1348, -1056, -1136, -1483, -1564, -1217, -1103, -1364, - -1383, -1191, -1121, -1035, -921, -908, -873, -632, -658, -1214, -1428, - -1510, -1866, -1662, -1436, -1804, -2159, -1910, -1340, -1114, -1447, - -1610, -1275, -881, -665, -667, -733, -614, -84, 203, -545, -1230, - -1363, -1864, -2002, -2030, -2403, -2810, -2578, -2016, -1809, -1888, - -1672, -908, -238, -316, -635, -550, -289, 357, 996, 272, -817, - -1207, -1748, -2253, -2168, -2107, -2373, -2349, -2126, -1902, -1664, - -1415, -776, -312, -831, -1176, -625, -209, 293, 953, 503, -400, - -1419, -1903, -2167, -1858, -1711, -1622, -1295, -1164, -1097, -1069, - -1174, -1035, -1052, -1631, -1516, -425, 123, 192, 360, 63, -428, - -1238, -1858, -2047, -1955, -1958, -1624, -1003, -738, -876, -1261, -1271, - -868, -1111, -1652, -1139, 85, 620, 391, 132, -212, -558, - 954, 1376, 1807, 1755, 1742, 2562, 3203, 3066, 3126, 3721, 4305, 4744, - 4961, 4876, 4679, 4141, 3358, 2829, 2611, 2662, 2521, - 1203, 1209, 1348, 1710, 2104, 2243, 2523, 3307, 3745, 3851, 4052, 4060, - 4198, 4496, 4571, 4427, 3977, 3382, 2919, 2646, 2512, - 688, 650, 538, 581, 954, 1229, 1600, 2411, 3144, 3380, 3238, 3171, 3433, - 3693, 3758, 3920, 4118, 3825, 2996, 2315, 1941, - -529, -544, -711, -973, -767, -283, 487, 1433, 2005, 2109, 1993, 2116, - 2426, 2682, 2944, 3103, 3283, 3305, 2635, 1721, 1046, - -1952, -1916, -1649, -1386, -1054, -646, -236, 339, 791, 1132, 1563, 1566, - 1446, 1961, 2414, 2320, 2175, 2140, 2152, 1865, 1256, - -2613, -2349, -1575, -530, 125, 357, 386, 244, 257, 1076, 1976, 1549, 965, - 1524, 1728, 1407, 1527, 1610, 1791, 1988, 1719, - -1623, -1290, -496, 598, 1314, 1265, 1285, 1034, 404, 920, 1643, 1018, 545, - 926, 830, 792, 1522, 1920, 1919, 1743, 1214, - 298, 232, 563, 1037, 1296, 1086, 884, 789, 527, 469, 514, 310, 354, 411, - 47, 268, 1268, 1926, 2029, 1667, 771, - 1141, 536, 361, 447, 355, 39, -266, -46, 391, 171, -164, 123, 509, 159, - -507, -446, 161, 618, 641, 578, 456, - 395, -301, -705, -721, -723, -962, -1031, -539, -68, -268, -642, -407, 85, - -153, -752, -736, -516, -695, -1288, -1394, -479, - -340, -1041, -1644, -1673, -1443, -1377, -1346, -1116, -887, -953, -1191, - -1194, -877, -737, -878, -677, -407, -701, -1459, -2012, -1423, - -767, -1460, -1926, -1857, -1684, -1550, -1494, -1511, -1484, -1407, -1244, - -1209, -1521, -1677, -1362, -929, -606, -381, -540, -1184, -1465, - -1464, -1560, -1664, -1736, -1835, -1922, -1814, -1591, -1558, -1579, - -1192, -807, -1141, -1624, -1555, -1235, -684, 43, 135, -495, -1078, - -1627, -1440, -1662, -1947, -2109, -2256, -2140, -1836, -1779, -1812, - -1364, -492, 105, -159, -989, -1255, -535, 298, 376, -314, -997, - -1428, -1737, -2020, -2034, -2060, -2088, -1873, -1738, -1777, -1700, - -1348, -449, 291, -223, -1163, -1458, -1291, -837, -382, -426, -733, - -1557, -2107, -2107, -1750, -1629, -1629, -1377, -1185, -1234, -1239, - -1138, -856, -1087, -2027, -2058, -1422, -1492, -1588, -1188, -709, -466, - -1220, -1665, -1757, -1651, -1564, -1581, -1574, -1364, -1287, -1433, - -1228, -1060, -1843, -2627, -2002, -697, -256, -599, -760, -639, -495, - 23, 619, 1507, 2030, 2017, 2107, 2616, 3196, 3226, 2826, 2614, 2705, 2897, - 3001, 3273, 3878, 4189, 3952, 3455, 2970, 2443, - 608, 656, 1142, 1607, 1745, 1860, 2490, 3165, 3006, 2414, 2249, 2392, 2306, - 2042, 2504, 3811, 4385, 4018, 3673, 3090, 2302, - 187, 161, 268, 714, 1465, 1661, 1658, 1857, 1907, 2011, 2399, 2620, 2182, - 1905, 2721, 3704, 3740, 3289, 2947, 2532, 1838, - -1088, -1119, -692, -284, 365, 624, 62, -77, 652, 1645, 2450, 2542, 2118, - 2506, 3388, 3321, 2847, 2378, 1589, 1225, 1073, - -2452, -2384, -1711, -1146, -725, -586, -953, -1033, -286, 839, 1675, 1726, - 1568, 2331, 3065, 2617, 2209, 2007, 1262, 745, 704, - -2684, -2430, -1976, -1522, -946, -195, 34, -466, -576, 11, 541, 693, 891, - 1487, 1983, 1905, 1738, 1856, 1753, 1430, 1465, - -1160, -1078, -801, -768, -514, 560, 1155, 575, 27, -53, 153, 551, 860, - 1262, 1632, 1537, 1381, 1573, 1771, 1824, 1929, - 786, 486, 417, 266, 13, 225, 806, 956, 654, 423, 680, 1157, 1168, 1174, - 1394, 1298, 1232, 1281, 1316, 1491, 1387, - 1532, 921, 474, 208, -125, -327, 81, 533, 556, 708, 1149, 1322, 1020, 561, - 337, 559, 965, 1026, 862, 861, 695, - 1050, 344, -172, -513, -632, -597, -456, -172, 73, 314, 647, 736, 457, 5, - -472, -498, 25, 331, 175, 42, 41, - 51, -492, -942, -1124, -1037, -1010, -1055, -895, -690, -691, -532, -196, - -173, -367, -881, -1453, -1168, -608, -609, -694, -585, - -888, -1217, -1499, -1588, -1489, -1460, -1471, -1404, -1488, -1751, -1612, - -1141, -904, -911, -1353, -1860, -1587, -980, -793, -945, -1019, - -1486, -1686, -1716, -1885, -1880, -1699, -1708, -1662, -1776, -2254, - -2308, -1782, -1243, -1074, -1374, -1467, -998, -602, -604, -880, -1083, - -1532, -1734, -1825, -2074, -2145, -1942, -1972, -1961, -1908, -2214, - -2369, -1648, -526, -317, -1019, -1211, -523, -95, -433, -851, -964, - -1330, -1527, -1840, -1965, -2061, -2040, -1826, -1801, -1937, -1975, - -1862, -1158, -291, -478, -1254, -1495, -1154, -568, -336, -692, -934, - -1451, -1552, -1569, -1546, -1752, -1864, -1447, -1165, -1431, -1589, - -1411, -1236, -1542, -2124, -1942, -1375, -1407, -1235, -578, -501, -742, - -1688, -1605, -1170, -1250, -1517, -1522, -1496, -1219, -1119, -1448, - -1447, -1414, -2154, -2725, -1943, -693, -365, -650, -618, -407, -392, - -363, -535, -1, 489, 988, 1853, 2595, 3225, 3585, 3240, 2624, 2268, 2477, - 3096, 3433, 3482, 3629, 3805, 3383, 2266, 1932, - 108, -370, 215, 901, 967, 1114, 1879, 2756, 3153, 3080, 2581, 2028, 2102, - 2446, 2727, 3331, 3688, 3533, 3335, 2760, 2169, - -32, -465, -251, -132, -80, 424, 1398, 2292, 2694, 2794, 2665, 2434, 2367, - 2498, 2876, 3322, 3305, 3030, 3167, 3077, 2288, - -824, -1175, -775, -768, -1080, -569, 476, 1386, 1905, 2099, 2361, 2972, - 3378, 3164, 2889, 2850, 2737, 2418, 2285, 2262, 2064, - -1770, -2058, -983, -583, -1548, -1765, -945, 24, 816, 1441, 2126, 2704, - 3007, 2817, 2361, 2291, 2344, 1872, 990, 882, 1761, - -1899, -1984, -825, -501, -1759, -2306, -1914, -1317, -456, 521, 1405, - 1449, 1183, 1525, 1929, 1956, 1740, 1449, 698, 244, 1039, - -673, -602, -233, -325, -1095, -1505, -1721, -1797, -1204, -406, 187, 474, - 660, 1056, 1345, 1266, 1056, 902, 642, 554, 1009, - 1301, 1254, 475, -91, -68, -191, -550, -677, -420, -241, -143, 465, 1122, - 1204, 966, 793, 730, 508, 478, 1154, 1755, - 2456, 1778, 481, -262, -257, -86, 35, 211, 573, 657, 350, 493, 1031, 1206, - 1040, 778, 574, 620, 897, 1349, 1574, - 1786, 685, -338, -835, -1076, -909, -680, -505, 183, 802, 331, -258, 151, - 609, 572, 470, 384, 450, 570, 643, 709, - 334, -474, -1025, -1070, -1077, -1292, -1226, -812, -398, -102, -415, - -1131, -1212, -738, -412, -251, -110, -201, -462, -373, -44, - -612, -1125, -1205, -929, -1026, -1581, -1521, -748, -400, -596, -722, - -1139, -1845, -1722, -1074, -931, -920, -670, -570, -734, -815, - -1274, -1514, -1391, -1390, -1781, -2152, -2217, -1822, -1000, -374, -439, - -1040, -1621, -1653, -1342, -1139, -991, -625, -318, -704, -1315, - -1732, -1731, -1799, -2265, -2601, -2553, -2602, -2765, -2137, -983, -868, - -1178, -742, -557, -1024, -1043, -442, -152, -432, -918, -1363, - -1870, -2005, -2141, -2418, -2784, -2773, -2520, -2642, -2567, -2028, - -1540, -549, 487, 385, -442, -1023, -781, -274, -342, -811, -1169, - -2114, -2219, -1877, -1744, -2291, -2504, -2067, -1875, -1905, -1900, - -1377, -30, 459, -313, -799, -938, -1071, -748, -147, -231, -794, - -2062, -1953, -1273, -1165, -1526, -1630, -1546, -1346, -1226, -1471, - -1336, -551, -469, -1263, -1478, -799, -307, -265, -2, 81, -397, - 364, -76, 491, 1095, 1571, 2062, 2116, 2507, 3128, 3149, 2948, 2830, 2536, - 2318, 2427, 2582, 2852, 3280, 3222, 2446, 1928, - 833, -111, 57, 768, 830, 995, 1589, 2420, 2709, 2284, 2466, 2718, 2179, - 2095, 2111, 1441, 1666, 2758, 2995, 2476, 1922, - 276, -431, -748, -387, -332, -258, 689, 1794, 1998, 2007, 2661, 2996, 2696, - 2583, 2412, 1782, 1409, 1538, 1897, 2251, 1737, - -954, -1416, -1266, -990, -924, -665, 106, 754, 1372, 2487, 3044, 3156, - 3532, 3316, 2889, 2779, 2216, 1475, 1541, 2007, 1718, - -1786, -1737, -1346, -1280, -1160, -740, -348, 159, 1179, 2210, 2599, 2785, - 2999, 2995, 3059, 3034, 2741, 2511, 2109, 1589, 1290, - -1033, -761, -1053, -1500, -1317, -933, -756, -183, 528, 727, 1070, 1611, - 1883, 2208, 2685, 2740, 2517, 2435, 1825, 1001, 760, - 913, 488, -533, -1155, -981, -845, -1162, -1064, -698, -503, -36, 620, - 1280, 1658, 1718, 1739, 1657, 1364, 951, 784, 778, - 2073, 1508, 412, -356, -390, -370, -909, -1112, -787, -488, -38, 389, 761, - 1011, 806, 647, 844, 830, 649, 604, 620, - 1799, 1790, 1166, 276, -91, -2, -85, -195, -182, -240, -146, -14, 131, 450, - 506, 602, 1000, 971, 654, 445, 335, - 1090, 918, 571, 161, -150, -161, -37, -96, -318, -455, -473, -494, -244, - 238, 472, 870, 1213, 774, 364, 311, 128, - 487, -170, -648, -602, -716, -971, -974, -743, -573, -689, -780, -666, - -341, 28, 82, 176, 249, -6, -129, -247, -455, - -245, -808, -978, -979, -1427, -1900, -1914, -1363, -750, -881, -1179, - -1058, -953, -848, -819, -1041, -1001, -513, -284, -596, -823, - -965, -1203, -1009, -1122, -1650, -1916, -1915, -1743, -1339, -1114, -1158, - -1188, -1398, -1685, -1738, -1670, -1330, -630, -257, -537, -889, - -1484, -1491, -1558, -1849, -1969, -1725, -1685, -1938, -1874, -1552, - -1233, -618, -159, -671, -1479, -1522, -1042, -563, -300, -572, -1025, - -2011, -1986, -1952, -2108, -2311, -2136, -1955, -1917, -1746, -1792, - -1614, -188, 1269, 955, -337, -1037, -853, -294, -12, -325, -774, - -2380, -2446, -1790, -1520, -2075, -2111, -1564, -1154, -884, -987, -1048, - -53, 958, 623, -120, -464, -465, 59, 469, -44, -651, - -2046, -2134, -1534, -1309, -1723, -1591, -997, -641, -373, -317, -415, - -61, 137, -432, -653, -214, 117, 488, 550, -252, -774 ; - - v = - -2067, -2025, -668, 603, 1419, 2261, 2410, 1566, 429, -286, -475, -838, - -1354, -1373, -969, -524, -28, 452, 640, 618, 595, - -3100, -3037, -999, 1124, 2528, 3511, 3779, 2626, 695, -340, -579, -780, - -833, -915, -1144, -982, -279, 344, 510, 291, -2, - -3139, -3255, -750, 1608, 2788, 3856, 4321, 3137, 1477, 692, 200, -123, - -252, -919, -1623, -1334, -385, 432, 708, 201, -328, - -2858, -2657, -155, 2000, 3020, 4009, 4239, 3193, 1562, 483, 265, 105, - -456, -1483, -2014, -1368, -373, 471, 740, 224, -139, - -1812, -1465, 362, 2554, 3907, 4324, 4030, 3236, 1379, -376, -547, -564, - -1144, -1751, -1939, -1405, -651, 2, 266, 141, 63, - -511, -288, 1165, 3002, 3738, 3543, 3070, 2283, 1194, 17, -798, -1211, - -1345, -1348, -1471, -1617, -1497, -747, 12, 114, -40, - 335, 570, 1698, 2684, 2511, 1891, 1384, 698, 337, 130, -635, -1090, -855, - -953, -1401, -1825, -1995, -1011, 201, 235, -16, - 776, 901, 1179, 1530, 1528, 981, 331, -209, -640, -706, -731, -764, -539, - -721, -1419, -1868, -1785, -991, 46, 353, 231, - 891, 570, 231, 619, 1169, 874, 189, -370, -982, -1198, -792, -517, -463, - -403, -898, -1505, -1338, -781, -175, 256, 299, - 614, 44, -232, 314, 816, 410, -83, -356, -857, -1158, -747, -256, -245, - -457, -875, -1137, -734, -198, -35, 9, 108, - 97, -206, -208, -51, -32, -459, -687, -531, -649, -982, -833, -270, -257, - -1092, -1680, -1157, -259, 110, 135, 110, -69, - -304, -342, -292, -421, -627, -802, -856, -747, -740, -895, -864, -562, - -560, -1393, -2086, -1354, -320, -125, 115, 348, -153, - -425, -325, -399, -606, -713, -679, -730, -892, -989, -915, -738, -763, - -865, -1108, -1557, -1276, -544, -306, -102, 27, -407, - -123, -68, -262, -579, -651, -751, -830, -922, -1085, -1004, -710, -734, - -994, -997, -821, -604, -317, -178, -273, -500, -811, - 145, -90, -282, -449, -555, -653, -687, -823, -1017, -963, -775, -702, - -855, -934, -623, -338, -240, -204, -356, -635, -917, - 110, -224, -374, -422, -517, -309, -347, -640, -640, -711, -782, -620, - -663, -792, -756, -729, -635, -524, -477, -414, -527, - 345, 96, -107, -149, -220, -333, -437, -346, -397, -768, -584, -185, -629, - -1203, -1068, -628, -493, -719, -646, 19, 356, - -195, -835, -1591, -1109, 97, 479, 800, 1742, 2298, 2139, 1656, 1054, 481, - 85, 25, 111, -44, -239, 100, 899, 1291, - -880, -1499, -1880, -1242, -127, 509, 1096, 2092, 2886, 2763, 1953, 1041, - 387, 117, -21, -165, -376, -651, -465, 369, 684, - -848, -1522, -1860, -1039, 258, 1053, 1566, 2131, 2737, 2887, 2027, 633, - -78, -21, -155, -602, -991, -1039, -682, -201, 82, - -405, -984, -1270, -393, 1042, 1684, 1795, 2035, 2418, 2619, 1802, 313, - -345, -255, -431, -873, -1179, -1057, -641, -207, 358, - 94, -256, -358, 173, 1226, 1841, 1777, 1719, 1999, 2051, 1216, 36, -518, - -559, -703, -976, -1015, -854, -582, 114, 910, - 337, 443, 503, 739, 1266, 1595, 1462, 1224, 1236, 1156, 502, -384, -781, - -760, -842, -973, -921, -869, -669, 52, 661, - 562, 1194, 1288, 1321, 1366, 1139, 833, 635, 438, 198, -156, -572, -764, - -879, -1113, -1140, -1023, -951, -609, -29, 247, - 1114, 1566, 1486, 1255, 1055, 765, 410, 106, -169, -486, -705, -627, -506, - -842, -1456, -1593, -1204, -695, -126, 274, 257, - 1363, 1289, 1042, 722, 575, 449, 173, -155, -535, -905, -1021, -796, -477, - -729, -1548, -1739, -1039, -343, 179, 542, 402, - 842, 649, 419, 214, 133, -55, -243, -279, -606, -1057, -1074, -884, -733, - -854, -1341, -1404, -843, -372, -17, 343, 221, - 121, 68, 28, -145, -297, -555, -661, -496, -623, -995, -1099, -1021, -1007, - -1027, -1121, -1204, -1026, -608, -124, 87, -241, - -156, -46, 13, -260, -504, -650, -748, -682, -714, -986, -1153, -1156, - -1146, -1095, -1182, -1353, -1212, -708, -140, -76, -560, - -194, -15, -46, -288, -525, -586, -614, -648, -707, -973, -1167, -1137, - -1110, -1097, -1246, -1368, -1092, -686, -457, -532, -784, - -228, -236, -293, -350, -520, -679, -583, -650, -875, -1044, -1174, -1115, - -1053, -1057, -1031, -962, -732, -620, -800, -980, -983, - -144, -469, -487, -430, -529, -670, -736, -988, -1196, -1106, -1057, -1080, - -1060, -978, -809, -703, -634, -722, -1027, -1131, -972, - -210, -463, -466, -507, -614, -640, -967, -1167, -929, -842, -990, -1054, - -954, -824, -707, -689, -761, -876, -1045, -967, -736, - -368, -316, -331, -264, -267, -580, -917, -667, -453, -824, -986, -810, - -883, -1096, -845, -337, -348, -709, -714, -308, -95, - -1085, -782, -1356, -2034, -2482, -2521, -1387, 860, 2728, 3318, 3258, - 2861, 2595, 2322, 1203, 298, 183, -310, -735, -214, 391, - -618, -291, -945, -1802, -2201, -2115, -1096, 836, 2966, 4124, 4091, 3486, - 2591, 1546, 516, -117, -217, -484, -716, -532, -452, - -218, -591, -814, -1263, -1468, -1064, -307, 951, 2737, 4068, 4284, 3598, - 2289, 965, 36, -396, -559, -868, -1048, -1212, -933, - -273, -663, -716, -830, -661, -90, 433, 1398, 2728, 3809, 4086, 3131, 1607, - 417, -262, -520, -882, -1369, -1376, -1221, -773, - -155, 179, -22, -303, -213, 120, 767, 1872, 2782, 3191, 2980, 2010, 926, - -99, -670, -663, -1194, -1763, -1378, -895, -591, - 442, 1036, 1092, 779, 486, 467, 1118, 2114, 2508, 2195, 1578, 865, 441, - -227, -1100, -1149, -1333, -1741, -1160, -641, -517, - 1167, 1416, 1896, 1918, 1449, 1068, 1125, 1627, 1728, 1143, 620, 277, 4, - -541, -1561, -1873, -1499, -1259, -666, -208, -209, - 1544, 1470, 1829, 1799, 1333, 942, 640, 673, 640, 177, -132, -196, -417, - -984, -1824, -2090, -1382, -561, -60, 73, 103, - 1410, 1329, 1155, 639, 366, 365, 187, 59, -85, -502, -884, -867, -741, - -1108, -1752, -1719, -960, -240, 164, 215, 350, - 964, 829, 455, -20, -91, -149, -338, -329, -364, -751, -1295, -1390, -1104, - -1159, -1436, -1367, -1042, -538, 96, 317, 279, - 340, 59, -106, -160, -158, -477, -800, -725, -635, -871, -1193, -1314, - -1296, -1214, -1144, -1203, -1164, -672, 11, 195, -77, - -255, -348, -396, -397, -417, -540, -759, -928, -987, -1012, -941, -951, - -1145, -1181, -1165, -1253, -1014, -487, -98, 12, -212, - -442, -489, -443, -449, -624, -585, -565, -938, -1199, -1064, -872, -920, - -1119, -1169, -1165, -1226, -1005, -540, -329, -368, -465, - -333, -737, -586, -480, -664, -730, -795, -911, -872, -860, -869, -1015, - -1362, -1293, -878, -761, -827, -750, -725, -909, -997, - -430, -822, -735, -627, -801, -945, -1090, -1032, -684, -660, -812, -993, - -1383, -1269, -665, -475, -710, -995, -1116, -1127, -1144, - -702, -668, -535, -601, -971, -1068, -1055, -1238, -1184, -906, -739, -705, - -745, -679, -522, -578, -869, -1164, -1140, -923, -864, - -865, -618, -326, -404, -601, -715, -929, -1075, -1154, -1149, -691, -49, - 15, -342, -419, -399, -696, -988, -770, -251, -71, - -1258, -453, -215, -473, -694, -809, -681, -203, 1020, 2357, 3323, 4291, - 4651, 4120, 3367, 2613, 1626, 466, -285, -620, -699, - -1087, -345, -7, 65, -78, -646, -674, -109, 991, 2815, 4677, 5509, 4983, - 4145, 3419, 2552, 1608, 480, -493, -961, -892, - -529, -783, -772, -480, -27, -233, -637, -221, 1022, 3112, 5179, 5581, - 4476, 3286, 2370, 1498, 820, 187, -636, -1159, -1080, - -202, -534, -871, -828, -255, -319, -787, -591, 704, 3072, 4847, 4712, - 3493, 2155, 1079, 381, -99, -533, -952, -1133, -1002, - -24, 165, 228, 328, 173, -454, -727, -599, 265, 2523, 4162, 3721, 2481, - 1149, 80, -410, -921, -1253, -1033, -922, -750, - 169, 571, 964, 1148, 639, 37, 99, 156, 251, 1503, 2746, 2310, 1017, 77, - -400, -822, -1368, -1346, -758, -680, -671, - 482, 1104, 1186, 997, 724, 572, 755, 787, 352, 258, 892, 828, -205, -587, - -605, -1057, -1264, -942, -494, -367, -407, - 949, 1584, 1451, 928, 572, 407, 562, 759, 419, -161, -242, -193, -482, - -800, -1090, -1207, -972, -582, -175, -6, -61, - 1180, 1532, 1377, 716, 230, 46, 176, 374, 214, -208, -523, -513, -634, - -1255, -1507, -1080, -702, -345, 37, -115, -294, - 967, 927, 651, 163, -111, -77, 25, -177, -469, -661, -724, -527, -729, - -1323, -1209, -655, -479, -399, -257, -478, -707, - 575, 113, -186, -240, -304, -188, -16, -405, -866, -925, -965, -910, -846, - -890, -543, -148, -345, -591, -463, -425, -642, - 177, -236, -389, -444, -440, -350, -224, -369, -714, -846, -1003, -1176, - -1045, -729, -248, 29, -373, -593, -223, -169, -487, - 130, -257, -361, -673, -716, -591, -605, -617, -655, -722, -838, -913, - -763, -463, -215, -228, -563, -608, -145, -88, -555, - 375, -551, -714, -776, -865, -780, -762, -754, -611, -536, -601, -674, - -554, -196, -78, -350, -648, -671, -284, -139, -610, - 73, -686, -796, -737, -825, -772, -697, -681, -524, -408, -513, -708, -643, - -200, -11, -315, -699, -794, -434, -241, -542, - -445, -449, -469, -754, -929, -787, -734, -818, -752, -579, -497, -607, - -612, -307, -155, -378, -759, -924, -594, -297, -391, - -643, -514, -515, -748, -723, -519, -638, -781, -902, -980, -570, -242, - -627, -993, -663, -282, -523, -830, -517, 16, 142, - -853, -559, -734, -530, -278, -910, -1561, -1764, -1486, -265, 1601, 3370, - 4292, 4040, 3393, 2689, 1857, 1239, 857, 546, 283, - -1624, -612, -239, -281, -82, -344, -836, -1100, -956, -90, 1324, 2880, - 3710, 3599, 3234, 2559, 1674, 897, 358, 184, -87, - -1172, -1147, -937, -672, -386, -174, -203, -497, -553, 74, 1099, 2276, - 3193, 3216, 2682, 2121, 1370, 416, -176, -336, -637, - -669, -1594, -1796, -1085, -523, -195, 124, 171, 156, 595, 1334, 2163, - 2831, 2662, 2030, 1541, 774, -81, -616, -1034, -1148, - -508, -1446, -1656, -826, -180, 115, 422, 747, 1006, 1213, 1509, 1956, - 2140, 1860, 1415, 773, -6, -568, -1045, -1459, -1337, - -229, -339, -220, 156, 387, 593, 915, 1247, 1419, 1335, 1240, 1319, 1260, - 955, 507, -152, -724, -1034, -1239, -1292, -1094, - 417, 1233, 1643, 1195, 591, 733, 1288, 1448, 1191, 921, 827, 736, 526, 108, - -507, -999, -1220, -1252, -1163, -959, -546, - 767, 1565, 2109, 1508, 366, 181, 796, 1078, 688, 180, 39, 3, -200, -566, - -1086, -1406, -1266, -919, -688, -448, 50, - 495, 783, 1348, 955, -6, -364, 44, 422, 93, -557, -934, -941, -850, -974, - -1207, -1209, -945, -562, -129, 177, 290, - 276, 301, 666, 256, -266, -341, -124, 2, -375, -1013, -1426, -1305, -958, - -999, -1085, -808, -594, -526, -184, 160, 115, - 141, 212, 354, 83, -191, -268, -330, -392, -639, -1230, -1602, -1245, -755, - -750, -771, -556, -409, -427, -474, -315, -126, - -50, 21, 4, -61, -116, -342, -648, -871, -1020, -1237, -1423, -1223, -801, - -531, -368, -370, -535, -577, -538, -424, -319, - -31, -27, -355, -537, -570, -624, -676, -872, -1120, -1073, -891, -767, - -645, -502, -315, -291, -699, -1061, -810, -532, -743, - -78, -91, -377, -608, -956, -1078, -821, -693, -836, -922, -764, -477, - -494, -819, -849, -550, -628, -1071, -1093, -946, -1140, - -129, -241, -130, -211, -688, -1110, -1043, -853, -908, -933, -889, -866, - -883, -1131, -1280, -952, -617, -646, -813, -911, -905, - -114, -133, -29, -117, -412, -804, -1005, -967, -1098, -1072, -815, -855, - -971, -1057, -1107, -802, -409, -274, -278, -328, -436, - -287, -113, -247, -360, -408, -636, -887, -918, -895, -802, -560, -481, - -843, -1337, -1025, -46, 237, -113, -69, 160, -88, - 419, -12, -1163, -2183, -2219, -1935, -1534, -1059, -651, 60, 1074, 1745, - 2431, 3715, 4627, 4565, 4081, 3379, 2375, 1145, 69, - -553, -626, -980, -1757, -2085, -1768, -1023, -169, 208, 253, 337, 607, - 1672, 3365, 4362, 4414, 4013, 3187, 2152, 1026, 66, - -1323, -1542, -1406, -1489, -1683, -1430, -786, -146, -1, -30, 214, 709, - 1785, 3207, 3859, 3660, 3294, 2633, 1471, 280, -118, - -1603, -1354, -1019, -949, -1245, -1307, -761, -219, -187, -50, 491, 1187, - 2108, 2825, 2940, 2578, 1959, 1243, 249, -742, -885, - -1534, -529, -59, -330, -883, -1142, -568, 175, 295, 193, 446, 1124, 1891, - 2123, 1803, 1283, 572, -126, -773, -1402, -1459, - -1229, -380, 66, -123, -241, -117, 249, 661, 738, 486, 454, 850, 1196, - 1222, 869, 213, -327, -632, -1018, -1421, -1237, - -467, -381, -202, 24, 504, 1056, 1109, 842, 673, 475, 355, 476, 438, 177, - -98, -528, -843, -858, -984, -1248, -913, - 402, 261, 236, 524, 924, 1139, 921, 573, 335, 41, -147, 8, 18, -444, -858, - -982, -917, -698, -616, -897, -746, - 810, 871, 900, 961, 902, 556, 150, 8, 17, -204, -513, -465, -345, -521, - -814, -876, -500, -103, -185, -451, -349, - 620, 659, 841, 831, 479, 67, -290, -476, -293, -296, -655, -759, -751, - -749, -651, -546, -228, -35, -349, -450, -205, - 159, 169, 316, 241, -36, -262, -466, -602, -532, -546, -735, -834, -953, - -1054, -903, -640, -459, -417, -550, -644, -571, - -55, 4, -70, -282, -301, -380, -553, -610, -691, -739, -800, -995, -1072, - -1016, -954, -821, -727, -636, -498, -587, -766, - -41, 15, -184, -385, -388, -467, -669, -837, -939, -948, -953, -1013, - -1055, -983, -844, -820, -909, -850, -558, -455, -671, - -114, -114, -308, -345, -428, -786, -1063, -1098, -1051, -1058, -987, -773, - -859, -1184, -1215, -1087, -1122, -1071, -753, -557, -684, - -223, -329, -511, -532, -612, -1115, -1341, -1114, -1023, -968, -817, -726, - -789, -1183, -1616, -1550, -1239, -1141, -1067, -846, -754, - -284, -345, -595, -863, -948, -1157, -1162, -964, -1032, -933, -668, -705, - -762, -904, -1305, -1372, -1069, -1009, -1008, -771, -662, - -300, -199, -535, -947, -899, -875, -998, -976, -904, -774, -594, -599, - -895, -1225, -1098, -581, -428, -592, -417, -203, -327, - 202, 408, -57, -889, -1641, -1760, -1525, -1992, -2305, -1783, -908, -25, - 507, 701, 1321, 2747, 3967, 4433, 4490, 3768, 2357, - 140, 285, 189, -708, -1715, -1469, -977, -1591, -2222, -1729, -470, 351, - 479, 688, 1294, 2470, 3601, 3901, 3855, 3144, 1543, - -215, -186, -309, -933, -1764, -2028, -1774, -1461, -1511, -964, 752, 1613, - 1191, 958, 1309, 2274, 3196, 3050, 2362, 1675, 636, - -486, -621, -1045, -1392, -1714, -2010, -1760, -1247, -1029, -10, 1908, - 2872, 2649, 2012, 1667, 2045, 2443, 2036, 865, -135, -769, - -881, -1045, -1327, -1398, -1412, -1309, -1030, -1337, -1280, 563, 2393, - 2762, 2740, 2676, 2327, 1797, 1277, 895, 34, -1368, -2380, - -1142, -1138, -886, -572, -481, -530, -649, -1139, -807, 987, 2022, 1721, - 1781, 2149, 1845, 1044, 249, -301, -705, -1416, -2101, - -393, -355, 135, 480, 692, 600, 32, -291, 97, 765, 975, 967, 1306, 1225, - 403, -177, -579, -1197, -1329, -939, -660, - 914, 714, 786, 817, 929, 955, 474, 114, 165, 199, 219, 404, 517, 8, -832, - -1112, -1088, -1171, -1003, -593, -73, - 1275, 810, 552, 532, 405, 196, 74, -26, -83, -63, -35, -111, -496, -1001, - -1265, -1253, -1161, -872, -547, -483, -47, - 750, 299, 223, 240, 22, -132, -202, -266, -248, -288, -258, -357, -920, - -1293, -1237, -1136, -1097, -1008, -837, -715, -429, - 165, 186, 272, 58, -147, -171, -407, -625, -508, -415, -440, -609, -1059, - -1504, -1459, -1141, -1091, -1043, -774, -734, -987, - -195, 138, 140, -251, -311, -436, -775, -825, -601, -459, -684, -889, - -1025, -1329, -1146, -945, -1192, -903, -377, -462, -933, - -124, -178, -427, -554, -469, -568, -836, -818, -661, -800, -1076, -1088, - -1003, -764, -428, -768, -1205, -881, -413, -312, -581, - -85, -401, -750, -504, -491, -794, -906, -828, -854, -1053, -1088, -1130, - -1236, -980, -746, -962, -1222, -1100, -626, -357, -569, - -293, -223, -589, -564, -568, -1046, -1060, -809, -826, -863, -898, -984, - -1194, -1523, -1594, -1375, -1340, -1335, -1011, -735, -689, - -246, -3, -618, -1005, -879, -1137, -1019, -707, -828, -1055, -1317, -1115, - -890, -1467, -1847, -1450, -1110, -1094, -967, -656, -442, - -230, -368, -817, -1085, -1013, -1049, -944, -677, -756, -1299, -1741, - -1370, -1091, -1674, -1783, -1019, -568, -497, -137, 219, 147, - 1793, 1665, 799, 44, -490, -1353, -1699, -1655, -1972, -1930, -1284, -545, - 135, 413, 608, 1454, 2665, 3509, 3731, 3620, 3106, - 1156, 1257, 1082, 424, -392, -1155, -1460, -1169, -974, -1124, -768, -195, - -195, -279, 232, 1523, 3037, 3775, 3693, 3273, 2331, - 627, 591, 593, 315, -670, -1605, -1836, -1740, -1391, -1026, -851, -332, - 352, 585, 1149, 2493, 3472, 3740, 3305, 1816, 820, - 63, -76, -187, -282, -968, -1804, -2132, -2136, -1674, -1247, -1511, -655, - 1507, 2409, 2526, 3099, 3202, 2994, 2339, 507, -534, - -569, -811, -712, -558, -923, -1538, -1792, -1520, -1326, -1559, -1070, - 493, 2047, 3037, 3146, 2472, 1813, 1532, 1018, -177, -1110, - -1002, -1030, -396, 18, -345, -919, -904, -218, -254, -745, 349, 1564, - 1690, 2099, 2188, 1373, 513, 97, -150, -853, -1411, - -1048, -619, 284, 713, 521, 131, 8, 708, 1360, 1311, 1181, 1020, 983, 922, - 532, 240, -158, -612, -854, -1263, -1320, - -324, -138, 464, 926, 890, 569, 246, 614, 1654, 1952, 1136, 424, 244, 17, - -189, -241, -433, -652, -948, -1193, -615, - 673, 241, 435, 757, 561, 178, -49, 86, 633, 880, 555, 83, -475, -761, -456, - -244, -389, -769, -1299, -1141, -125, - 919, 313, 347, 427, 184, -86, -214, -206, -75, 38, -42, -340, -853, -1175, - -1026, -767, -620, -1121, -1663, -1031, -307, - 501, 40, 173, 164, -252, -427, -324, -287, -263, -210, -280, -523, -874, - -1124, -1168, -1102, -1056, -1147, -968, -562, -607, - -406, -507, -57, -191, -972, -1088, -510, -183, -212, -306, -484, -683, - -812, -920, -1028, -1138, -1177, -870, -361, -283, -567, - -1009, -1170, -553, -610, -1329, -1238, -467, -17, -105, -501, -846, -896, - -792, -739, -975, -1354, -1289, -795, -373, -287, -509, - -428, -1353, -1179, -706, -845, -699, -268, -89, -228, -700, -959, -946, - -1022, -1001, -1032, -1333, -1514, -1066, -310, -213, -681, - 174, -955, -1485, -882, -529, -591, -342, -141, -387, -752, -837, -851, - -1116, -1475, -1529, -1357, -1475, -1321, -470, -140, -575, - 221, -412, -1223, -1405, -1151, -1226, -916, -394, -555, -980, -1138, -938, - -841, -1393, -1739, -1293, -1075, -1116, -525, 81, -44, - 287, -109, -644, -1379, -1604, -1560, -1511, -1063, -652, -1022, -1508, - -1181, -924, -1431, -1478, -763, -458, -416, 33, 499, 446, - 1907, 2027, 2518, 1780, -385, -1840, -2054, -2520, -2960, -2326, -1518, - -1434, -1345, -748, 39, 671, 1198, 2248, 3525, 4017, 3907, - 1262, 1272, 1829, 1382, -243, -1247, -1476, -2078, -2393, -1752, -1473, - -1918, -1848, -1249, -492, 522, 1245, 2136, 3727, 4403, 3621, - 808, 599, 510, 228, -480, -1125, -1526, -1807, -1798, -1502, -1565, -2188, - -2378, -1823, -704, 1092, 2311, 2631, 3425, 3972, 3003, - 655, 275, -2, -514, -1124, -1364, -1608, -1675, -1383, -1305, -1481, -1774, - -2032, -1772, -469, 1598, 2970, 3065, 2762, 2525, 1761, - 652, -55, -287, -603, -1211, -1479, -1610, -1511, -971, -840, -753, -131, - 26, -213, 350, 1487, 2328, 2437, 1576, 606, 159, - 862, -154, -533, -74, -183, -965, -1362, -1061, -494, -197, 323, 1182, - 1824, 1990, 1537, 1157, 1250, 1144, 390, -460, -704, - 1121, 289, -133, 397, 683, 32, -548, -432, -84, 285, 834, 1135, 1444, 1871, - 1523, 784, 384, 283, 46, -510, -726, - 928, 718, 467, 443, 724, 613, 187, -6, 48, 259, 551, 660, 348, 89, 312, - 413, 127, -140, -281, -385, -478, - 776, 763, 483, 385, 561, 451, 195, 6, -152, -25, 251, 177, -254, -506, - -303, 3, -218, -1090, -1421, -795, -437, - 790, 572, 360, 385, 384, 118, -102, -173, -242, -78, 80, -332, -711, -563, - -493, -619, -1030, -1835, -2232, -1660, -840, - 190, 230, 472, 280, 19, 38, -16, -185, -200, -149, -305, -720, -1088, -974, - -839, -1209, -1429, -1410, -1946, -2105, -1257, - -564, -275, 194, 65, -185, -126, -96, -211, -294, -435, -695, -995, -1221, - -1055, -931, -1367, -1424, -1041, -1372, -1685, -1268, - -768, -758, -265, -80, -356, -621, -693, -560, -476, -655, -891, -1095, - -1119, -825, -738, -1117, -1449, -1365, -1019, -913, -1181, - -541, -1009, -707, -338, -531, -708, -750, -780, -796, -911, -960, -1020, - -1132, -1034, -909, -1087, -1558, -1537, -756, -592, -1233, - -155, -745, -981, -611, -405, -365, -237, -431, -958, -1194, -1011, -959, - -1255, -1620, -1689, -1527, -1547, -1306, -652, -572, -964, - 125, -59, -661, -596, -362, -452, -280, -155, -675, -1116, -1074, -986, - -1133, -1647, -1924, -1523, -1138, -910, -517, -279, -337, - 17, 129, -343, -508, -282, -392, -634, -337, -190, -755, -1231, -1073, - -1080, -1642, -1658, -942, -518, -323, 41, 255, 187, - 2023, 1689, 1343, 1190, 660, -358, -1214, -1685, -1859, -1569, -739, -572, - -1245, -942, -602, -1290, -1290, -559, 459, 2092, 3602, - 1120, 735, 860, 954, 540, -131, -1018, -1346, -1047, -917, -1182, -1887, - -2366, -1712, -1168, -1639, -1613, -481, 1083, 2377, 3107, - 122, 40, 399, 650, 487, -161, -948, -1027, -840, -1218, -1976, -2639, - -2818, -2245, -1065, -413, -491, 267, 1798, 2597, 2332, - 8, 28, 235, 244, 100, -446, -1000, -1213, -1441, -1742, -2014, -2408, - -2601, -1996, -664, 578, 1308, 1815, 2282, 2399, 1314, - 95, 8, -132, -87, -55, -448, -989, -1371, -1487, -1527, -1667, -1745, - -1627, -1152, -236, 858, 1802, 2164, 2006, 1573, 476, - 87, -126, -165, 173, 331, -56, -504, -774, -922, -1054, -1064, -499, 76, - -58, 71, 846, 1391, 1497, 1233, 680, 180, - 810, 489, 627, 759, 735, 454, 165, 26, -262, -585, -273, 638, 951, 395, - 215, 677, 999, 917, 505, 123, -74, - 1483, 1425, 1337, 926, 736, 656, 480, 432, 238, -228, -19, 700, 582, 18, - 194, 522, 284, -20, -164, -226, -372, - 1075, 1308, 1201, 718, 398, 250, 271, 399, 239, -204, -154, 218, -60, -472, - -145, 65, -386, -706, -781, -830, -659, - 288, 458, 600, 458, 118, -286, -421, -222, -146, -360, -371, -251, -634, - -936, -673, -533, -603, -650, -914, -1279, -1005, - -235, -198, 38, 7, -228, -574, -991, -1078, -689, -434, -680, -1092, -1346, - -1346, -1141, -874, -722, -688, -647, -806, -828, - -398, -516, -336, -421, -669, -899, -1157, -1318, -988, -485, -807, -1650, - -1863, -1526, -1220, -1027, -934, -842, -543, -251, -327, - -271, -621, -545, -505, -799, -1200, -1276, -1065, -855, -665, -808, -1299, - -1522, -1200, -799, -980, -1305, -1053, -583, -308, -344, - -117, -765, -831, -620, -768, -1052, -1018, -806, -812, -913, -891, -910, - -1012, -987, -862, -1162, -1779, -1608, -761, -404, -554, - 6, -664, -985, -827, -741, -650, -379, -447, -907, -1118, -987, -926, - -1101, -1480, -1755, -1768, -1885, -1766, -988, -426, -533, - 107, -146, -662, -660, -477, -484, -306, -238, -686, -1074, -1052, -950, - -1102, -1654, -2057, -1794, -1434, -1187, -715, -379, -409, - 2, 72, -336, -458, -228, -346, -580, -327, -203, -760, -1207, -1021, -997, - -1588, -1795, -1227, -819, -559, -130, 23, -41, - -514, 1, 646, 1054, 772, -168, -1082, -1662, -1930, -2158, -2325, -2219, - -2121, -1725, -482, 716, 819, 78, 83, 1737, 3495, - -342, -49, 595, 1114, 878, 39, -781, -1401, -1924, -2332, -2191, -1546, - -1392, -1542, -854, -26, -207, -547, 379, 2195, 3433, - -102, -136, 276, 961, 912, 18, -554, -1016, -1989, -2417, -1647, -797, - -1055, -1642, -1424, -1159, -1405, -1401, 19, 2569, 3858, - -248, 50, 354, 629, 567, 33, -381, -969, -1935, -2194, -1555, -1038, -1264, - -1657, -1632, -1478, -1297, -1018, 259, 2541, 3265, - -445, -34, 247, 481, 535, 344, -317, -1267, -1867, -2206, -1997, -1385, - -1418, -1689, -1495, -884, -177, 581, 1811, 2577, 1660, - -197, -125, 74, 632, 931, 608, -242, -1114, -1609, -2072, -1982, -1525, - -1719, -1790, -954, 191, 769, 1125, 1969, 2308, 1086, - 462, 454, 584, 902, 1013, 577, -20, -512, -961, -1149, -1228, -1348, -1340, - -1224, -214, 1335, 1578, 1008, 1044, 1262, 728, - 997, 899, 887, 945, 811, 462, 191, -124, -265, -21, -227, -610, -533, -549, - 51, 1392, 1682, 1063, 663, 324, -53, - 1378, 1197, 791, 633, 455, 215, -5, -303, -181, 239, 191, -278, -620, -509, - -27, 455, 542, 406, 166, -231, -454, - 1880, 1531, 624, 214, 109, 76, -91, -448, -535, -334, -209, -475, -671, - -303, -125, -401, -546, -439, -481, -643, -541, - 1746, 1057, 348, 183, 45, 109, 177, -125, -502, -698, -678, -589, -398, - -71, -207, -812, -1004, -805, -751, -646, -374, - 749, 266, 343, 427, 12, -163, -86, -62, -211, -636, -906, -746, -536, -432, - -554, -1098, -1476, -1286, -863, -507, -326, - 42, 72, 278, 105, -234, -389, -470, -371, -264, -545, -905, -850, -592, - -662, -1078, -1490, -1769, -1692, -1122, -607, -453, - -123, -319, -266, -500, -635, -442, -348, -529, -693, -776, -859, -756, - -652, -827, -1073, -1395, -1799, -1698, -1157, -714, -401, - -173, -756, -652, -558, -892, -869, -378, -398, -962, -1183, -978, -745, - -912, -1148, -847, -903, -1610, -1548, -865, -640, -445, - -82, -616, -833, -601, -860, -1143, -513, -117, -774, -1165, -951, -826, - -919, -1021, -760, -414, -630, -881, -639, -529, -516, - 44, -599, -1129, -956, -896, -901, -429, -184, -629, -985, -935, -843, - -886, -1140, -1033, -131, 340, -171, -473, -279, -157, - -19, 256, 130, 153, 469, 381, -96, -731, -1374, -2161, -2644, -2359, -2022, - -1706, -895, -71, 238, 583, 874, 485, 1010, - -135, 265, 451, 152, 183, 443, 270, -319, -1104, -2079, -2362, -1781, - -1392, -1060, -659, -446, -200, 158, 330, 46, 944, - -157, -212, 49, 146, 343, 416, 154, -229, -988, -1943, -1954, -1198, -717, - -694, -1235, -1561, -769, -56, -376, -55, 1947, - -555, -390, -10, 415, 516, 36, -253, -389, -1032, -1743, -1714, -963, -278, - -633, -1648, -1611, -426, -88, -1063, -147, 3017, - -933, -158, 443, 809, 744, 107, -303, -589, -1159, -1608, -1782, -1442, - -698, -748, -1390, -1091, -328, -524, -898, 337, 2536, - -775, 88, 863, 1163, 1228, 869, 208, -472, -1056, -1526, -1949, -1980, - -1501, -1233, -1368, -1125, -666, -502, 355, 1541, 1718, - 202, 667, 1248, 1391, 1468, 1141, 495, 18, -481, -1100, -1576, -1769, - -1682, -1547, -1575, -1132, -70, 620, 1041, 1529, 1319, - 1453, 1394, 1400, 1154, 1131, 877, 384, 105, -128, -307, -505, -905, -1104, - -1059, -1296, -992, 503, 1275, 681, 440, 491, - 1712, 1550, 1183, 731, 598, 526, 196, -235, -322, -31, 57, -95, -151, -283, - -735, -878, -90, 511, 202, -181, -387, - 1290, 1230, 715, 497, 419, 129, -97, -301, -468, -349, -208, -71, 15, -315, - -683, -735, -616, -330, -184, -409, -633, - 985, 729, 206, 152, 297, 27, -228, -361, -501, -440, -396, -422, -533, - -841, -979, -865, -682, -457, -460, -610, -610, - 497, 241, -44, -178, -48, 56, -155, -575, -609, -387, -465, -482, -525, - -965, -1278, -1195, -955, -741, -671, -649, -621, - 35, 12, -110, -200, -266, -200, -146, -395, -599, -599, -690, -650, -584, - -1177, -1795, -1607, -1362, -1292, -855, -490, -524, - -138, -201, -202, -355, -608, -642, -346, -139, -379, -703, -771, -983, - -1481, -1952, -2207, -2100, -1889, -1531, -743, -202, -261, - -205, -286, -294, -656, -812, -615, -432, -166, -166, -554, -621, -768, - -1611, -2243, -2193, -2153, -2165, -1493, -401, 51, -130, - -391, -352, -635, -850, -645, -261, -62, -40, -251, -540, -576, -337, -512, - -1470, -1938, -1657, -1489, -1024, -251, -2, -219, - -586, -694, -1038, -887, -683, -456, -1, -45, -496, -660, -777, -571, -199, - -876, -1621, -1146, -421, -312, -347, -144, -88, - 1295, 490, -525, -473, -83, -714, -1155, -1082, -863, -441, -297, -905, - -2060, -2556, -2076, -1124, 260, 1465, 2010, 1777, 901, - 879, 485, -6, -502, -830, -738, -449, -573, -637, -645, -1029, -1474, - -1805, -1852, -1372, -681, -115, 348, 875, 1465, 1295, - 222, 85, -128, -605, -859, -612, -428, -655, -835, -950, -1151, -1178, - -1143, -1134, -751, -342, -647, -1201, -1055, -44, 1058, - -806, -663, -531, -556, -469, -310, -359, -600, -814, -867, -806, -832, - -899, -840, -661, -247, -285, -1106, -1346, -562, 809, - -1373, -1128, -640, 26, 252, 148, -24, -282, -375, -339, -535, -983, -1093, - -931, -947, -448, 62, -349, -352, 513, 1434, - -854, -656, 219, 1220, 1053, 650, 396, 69, 67, 120, -207, -895, -1192, - -891, -871, -903, -841, -1092, -682, 611, 1503, - 553, 808, 1827, 2389, 1617, 938, 428, -53, -72, -61, -306, -651, -656, - -276, -520, -1454, -2046, -1911, -902, 214, 485, - 1541, 1900, 2705, 2990, 2286, 1042, -1, -335, -416, -529, -645, -667, -463, - -288, -711, -1743, -2165, -1283, 221, 1011, 302, - 1348, 1651, 2228, 2386, 1912, 949, 82, -216, -399, -561, -686, -957, -1127, - -1050, -1093, -1459, -1388, -519, 372, 947, 577, - 1008, 1204, 797, 396, 443, 532, 281, -82, -312, -487, -751, -1185, -1316, - -1055, -991, -1008, -766, -561, -587, -382, -122, - 830, 1025, -311, -1111, -377, 139, 2, -101, -251, -591, -956, -1130, -836, - -554, -784, -953, -874, -942, -893, -722, -694, - 241, 347, -424, -874, -355, -42, -205, -278, -319, -573, -986, -1035, -511, - -269, -697, -1093, -1245, -1247, -821, -401, -596, - -166, -169, -272, -305, -207, -80, -141, -606, -776, -636, -929, -1112, - -713, -584, -1034, -1353, -1491, -1511, -1104, -565, -543, - -169, -215, -252, -267, -181, -24, 3, -514, -947, -871, -919, -1251, -1607, - -1859, -1922, -1862, -1856, -1642, -1069, -632, -590, - -472, -483, -447, -435, -209, 50, 117, -147, -825, -1135, -807, -974, - -1864, -2344, -2118, -1890, -1721, -1109, -363, -244, -486, - -823, -763, -719, -732, -457, -107, 26, -231, -1019, -1370, -815, -381, - -586, -1075, -1325, -1140, -780, -334, 22, -51, -296, - -651, -689, -754, -858, -787, -555, -518, -779, -1062, -1189, -1070, -389, - 270, -161, -825, -503, -36, -169, -288, -119, 4, - 2714, 2432, 1579, 559, -346, -1068, -1551, -1840, -1865, -1589, -1325, - -1426, -2038, -2918, -2857, -1577, -412, 459, 1340, 1776, 1735, - 2269, 2011, 1412, 467, -196, -550, -1134, -1781, -1981, -1587, -1096, - -1298, -2408, -3328, -2450, -862, -266, 289, 903, 965, 978, - 1221, 809, 382, -29, -272, -432, -1002, -2081, -2351, -1299, -482, -994, - -2286, -2667, -1396, -405, -575, -378, 192, 366, 521, - 396, 111, -247, -136, 138, -268, -1373, -2414, -2022, -490, 49, -921, - -1890, -1505, -614, -770, -1241, -974, -480, -235, -38, - -81, 257, 255, 641, 1242, 561, -1083, -1659, -895, -100, -113, -911, -1369, - -743, -453, -1262, -1506, -880, -730, -686, -22, - -48, 744, 950, 1308, 1704, 1217, 243, -57, 3, -305, -529, -556, -517, -314, - -503, -1208, -1396, -991, -887, -392, 940, - 531, 1283, 1334, 1177, 1127, 996, 797, 586, 148, -482, -658, -404, -226, - -194, -571, -1220, -1399, -1065, -599, 154, 1183, - 1146, 1621, 1636, 1037, 700, 658, 492, 279, -90, -536, -770, -849, -697, - -253, -316, -1076, -1277, -544, 209, 423, 444, - 1380, 1548, 1540, 1090, 633, 498, 336, 63, -144, -464, -954, -1111, -686, - -32, 78, -524, -670, -20, 520, 673, 485, - 1278, 1096, 773, 540, 301, 167, 47, -141, -167, -312, -737, -825, -354, 81, - -105, -517, -426, -91, 273, 745, 761, - 921, 636, 162, -103, -8, -99, -346, -394, -415, -512, -637, -742, -600, - -431, -705, -1048, -1047, -805, -237, 212, 136, - 340, 262, 169, -38, -89, -206, -450, -495, -610, -954, -1159, -1125, -978, - -923, -1062, -1230, -1383, -1257, -721, -494, -620, - 42, 1, 163, 37, -336, -436, -451, -574, -691, -1037, -1452, -1460, -1216, - -1152, -1298, -1362, -1282, -1049, -718, -658, -743, - 208, 1, -63, -120, -338, -483, -532, -654, -785, -929, -1147, -1451, -1813, - -2026, -2037, -1918, -1486, -808, -456, -524, -568, - 85, -172, -349, -249, -134, -368, -553, -581, -901, -1044, -738, -928, - -1849, -2476, -2365, -1989, -1373, -560, -248, -419, -506, - -422, -578, -555, -535, -509, -563, -499, -490, -870, -1009, -525, -192, - -579, -1198, -1436, -1213, -663, -244, -228, -308, -376, - -629, -638, -467, -576, -687, -592, -629, -672, -441, -417, -562, -106, - 332, -179, -772, -531, -90, -202, -412, -218, -63, - 3562, 3347, 2976, 2244, 934, -749, -2008, -2389, -2251, -1780, -1278, - -1302, -1606, -1791, -1784, -1291, -172, 914, 1598, 2421, 2948, - 3243, 2749, 1867, 1099, 460, -72, -821, -1574, -1605, -1203, -1184, -1523, - -1647, -1342, -875, -679, -87, 1278, 1884, 1773, 2073, - 2148, 1674, 1079, 676, 405, 236, -88, -839, -1278, -1102, -1153, -1672, - -1824, -1361, -961, -785, -243, 876, 1567, 1241, 834, - 771, 637, 730, 774, 828, 988, 712, -322, -1320, -1518, -1351, -1699, -1970, - -1433, -968, -761, -197, 425, 800, 830, 622, - -233, 82, 580, 1092, 1379, 1649, 1297, -46, -1342, -1648, -1378, -1432, - -1528, -898, -197, -143, -88, 79, -52, 32, 543, - -910, 237, 961, 1358, 1342, 1200, 846, -5, -1101, -1652, -1319, -1014, - -1026, -783, -299, -44, -230, -436, -726, -1131, -623, - -1038, 912, 1679, 1539, 1170, 854, 466, 27, -594, -1254, -1150, -879, - -1138, -1281, -914, -487, -652, -905, -1000, -1485, -1064, - -228, 1670, 2104, 1831, 1482, 1090, 729, 212, -224, -474, -614, -727, - -1066, -1027, -532, -557, -995, -1111, -786, -489, 2, - 546, 1796, 2000, 1686, 1138, 716, 688, 366, -220, -418, -394, -495, -552, - -177, 87, -404, -931, -918, -285, 671, 1062, - 551, 1219, 1550, 1166, 262, -20, 284, 203, -342, -568, -518, -723, -542, - 83, 104, -409, -678, -600, -52, 987, 1432, - 291, 675, 978, 787, 79, -321, -167, -149, -383, -329, -332, -827, -1040, - -645, -369, -475, -610, -608, -244, 665, 1312, - 102, 254, 404, 399, 70, -413, -589, -528, -434, -163, 66, -238, -930, - -1183, -862, -692, -869, -891, -501, 85, 570, - -69, -104, 50, -1, -293, -522, -685, -776, -558, -97, 186, 8, -488, -857, - -1054, -1317, -1526, -1286, -689, -369, -320, - 121, 95, -11, -168, -354, -476, -556, -756, -736, -344, -288, -792, -1285, - -1535, -1846, -2246, -2212, -1682, -1123, -763, -604, - 580, 512, 45, -224, -235, -407, -513, -605, -925, -884, -744, -1416, -2423, - -2880, -2834, -2630, -2117, -1618, -1502, -1097, -509, - 609, 371, -58, -456, -532, -543, -487, -417, -771, -912, -663, -1071, - -1929, -2357, -2232, -1814, -1289, -1011, -1126, -866, -314, - 100, -94, -302, -541, -607, -493, -546, -725, -524, -296, -521, -716, -811, - -1147, -1171, -724, -547, -645, -614, -321, 30, - 3023, 3200, 3082, 2904, 2798, 1800, 141, -881, -1527, -1891, -1784, -2033, - -2631, -2504, -1678, -1029, -467, 161, 680, 1417, 2318, - 2837, 2881, 2695, 2306, 1906, 1034, 79, -410, -1436, -2374, -1997, -2051, - -2937, -2861, -1847, -752, -105, 119, 432, 903, 1659, - 2769, 2420, 2059, 1666, 1240, 794, 485, -45, -1226, -1918, -1748, -2259, - -3003, -2841, -2142, -1053, -51, 472, 879, 1076, 996, - 2668, 1919, 1547, 1362, 1004, 1117, 1229, 184, -867, -1022, -1529, -2156, - -2196, -2220, -1914, -1042, -114, 566, 961, 1121, 761, - 2136, 1071, 1137, 1819, 1642, 1527, 1375, 138, -633, -592, -1251, -1641, - -1524, -1819, -1459, -663, -392, -83, 184, 152, 157, - 1223, 753, 1301, 2526, 2528, 1788, 1039, 36, -499, -584, -903, -1239, - -1440, -1364, -816, -654, -910, -481, -144, -472, -395, - 314, 1210, 2193, 2950, 2729, 1546, 486, 228, 98, -488, -742, -905, -1301, - -928, -761, -1570, -1581, -543, 127, 17, -189, - 244, 1428, 2475, 2971, 2424, 923, 206, 912, 912, -211, -681, -882, -1350, - -1055, -1125, -1993, -1795, -817, -21, 36, -236, - 554, 1397, 2141, 2524, 1798, 403, 220, 1108, 799, -429, -933, -1154, -1304, - -813, -468, -865, -1224, -943, -248, -15, -53, - 763, 1563, 1790, 1563, 1016, 319, 149, 364, 34, -716, -1088, -1111, -738, - 4, 232, -376, -990, -814, -60, 518, 543, - 816, 1335, 1037, 602, 556, 432, 78, -162, -244, -416, -712, -793, -347, - 111, -217, -1022, -1355, -901, -114, 365, 410, - 195, 533, 374, 215, 289, 246, -86, -156, 63, -101, -536, -647, -479, -437, - -689, -1162, -1326, -904, -409, -54, 259, - -24, 144, 144, 67, -3, -34, -336, -351, 48, -252, -722, -642, -686, -628, - -396, -750, -1070, -780, -408, 38, 310, - 545, 335, -86, -190, -221, -157, -355, -660, -646, -787, -905, -926, -1331, - -1325, -754, -819, -1275, -1008, -175, 209, -98, - 126, 70, -373, -585, -455, -219, -359, -722, -941, -990, -996, -1454, - -2354, -2849, -2485, -1779, -1391, -879, 61, 244, -351, - -1030, -632, -633, -789, -527, -237, -352, -629, -691, -480, -596, -1394, - -2294, -3011, -3241, -2272, -940, -331, 0, 68, -239, - -1414, -884, -601, -316, -199, -486, -743, -999, -785, -13, -86, -888, - -1325, -1804, -2218, -1544, -539, -354, -342, -121, -27 ; - - lat = 50, 47.5, 45, 42.5, 40, 37.5, 35, 32.5, 30, 27.5, 25, 22.5, 20, 17.5, - 15, 12.5, 10 ; - - lon = -60, -57.5, -55, -52.5, -50, -47.5, -45, -42.5, -40, -37.5, -35, - -32.5, -30, -27.5, -25, -22.5, -20, -17.5, -15, -12.5, -10 ; - - time = 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in.nc.dmp deleted file mode 100644 index 201d0536fe2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in.nc.dmp +++ /dev/null @@ -1,760 +0,0 @@ -netcdf in { -types: - compound lat_var_t { - float lat_var(2) ; - float lat(2) ; - }; // lat_var_t - compound lat_wgt_t { - float lat_wgt(2) ; - float lat(2) ; - }; // lat_wgt_t - compound hyam_t { - float hyam(3) ; - float lev(3) ; - }; // hyam_t - compound hybm_t { - float hybm(3) ; - float lev(3) ; - }; // hybm_t - compound PS_t { - float PS(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // PS_t - compound date_t { - int date(10) ; - double time(10) ; - }; // date_t - compound lon_wgt_t { - float lon_wgt(4) ; - float lon(4) ; - }; // lon_wgt_t - compound msk_prt_mss_prt_t { - float msk_prt_mss_prt(4) ; - float lon(4) ; - }; // msk_prt_mss_prt_t - compound mss_val_t { - float mss_val(4) ; - float lon(4) ; - }; // mss_val_t - compound mss_val_fst_t { - float mss_val_fst(4) ; - float lon(4) ; - }; // mss_val_fst_t - compound fll_val_t { - float fll_val(4) ; - float lon(4) ; - }; // fll_val_t - compound no_mss_val_t { - float no_mss_val(4) ; - float lon(4) ; - }; // no_mss_val_t - compound val_one_mss_t { - float val_one_mss(2) ; - float lat(2) ; - }; // val_one_mss_t - compound pck_arr_t { - short pck_arr(4) ; - float lon(4) ; - }; // pck_arr_t - compound upk_arr_t { - double upk_arr(4) ; - float lon(4) ; - }; // upk_arr_t - compound val_one_one_int_t { - int val_one_one_int(2) ; - float lat(2) ; - }; // val_one_one_int_t - compound val_max_max_sht_t { - short val_max_max_sht(2) ; - float lat(2) ; - }; // val_max_max_sht_t - compound val_one_mss_int_t { - int val_one_mss_int(2) ; - float lat(2) ; - }; // val_one_mss_int_t - compound val_half_half_t { - float val_half_half(2) ; - float lat(2) ; - }; // val_half_half_t - compound wgt_one_t { - float wgt_one(2) ; - float lat(2) ; - }; // wgt_one_t - compound mss_val_all_t { - float mss_val_all(4) ; - float lon(4) ; - }; // mss_val_all_t - compound char_var_multinul_t { - string char_var_multinul(3) ; - float lev(3) ; - }; // char_var_multinul_t - compound lev_var_t { - float lev_var(3) ; - float lev(3) ; - }; // lev_var_t - compound lev_wgt_t { - float lev_wgt(3) ; - float lev(3) ; - }; // lev_wgt_t - compound z_t { - float z(3) ; - float lev(3) ; - }; // z_t - compound rz_t { - float rz(3) ; - float rlev(3) ; - }; // rz_t - compound three_dmn_var_t { - float three_dmn_var(2, 3, 4) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // three_dmn_var_t - compound three_dmn_var_crd_t { - float three_dmn_var_crd(3, 2, 4) ; - float lev(3) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_crd_t - compound prs_sfc_t { - float prs_sfc(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // prs_sfc_t - compound two_dmn_var_t { - float two_dmn_var(2, 3) ; - float lat(2) ; - float lev(3) ; - }; // two_dmn_var_t - compound mask_t { - float mask(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // mask_t - compound ORO_t { - float ORO(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // ORO_t - compound weight_t { - float weight(2) ; - float lat(2) ; - }; // weight_t - compound gw_t { - float gw(2) ; - float lat(2) ; - }; // gw_t - compound gw_T42_t { - float gw_T42(64) ; - float lat_T42(64) ; - }; // gw_T42_t - compound rec_var_flt_t { - float rec_var_flt(10) ; - double time(10) ; - }; // rec_var_flt_t - compound rec_var_dbl_t { - double rec_var_dbl(10) ; - double time(10) ; - }; // rec_var_dbl_t - compound one_dmn_rec_var_t { - int one_dmn_rec_var(10) ; - double time(10) ; - }; // one_dmn_rec_var_t - compound tpt_t { - float tpt(10) ; - double time(10) ; - }; // tpt_t - compound rec_var_dbl_mss_val_dbl_upk_t { - double rec_var_dbl_mss_val_dbl_upk(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_upk_t - compound rec_var_dbl_mss_val_dbl_pck_t { - short rec_var_dbl_mss_val_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_t - compound rec_var_flt_mss_val_flt_t { - float rec_var_flt_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_flt_t - compound rec_var_flt_pck_t { - short rec_var_flt_pck(10) ; - double time(10) ; - }; // rec_var_flt_pck_t - compound rec_var_dbl_pck_t { - short rec_var_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_pck_t - compound rec_var_flt_mss_val_dbl_t { - float rec_var_flt_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_dbl_t - compound rec_var_flt_mss_val_int_t { - float rec_var_flt_mss_val_int(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_int_t - compound rec_var_int_mss_val_int_t { - int rec_var_int_mss_val_int(10) ; - double time(10) ; - }; // rec_var_int_mss_val_int_t - compound rec_var_int_mss_val_flt_t { - int rec_var_int_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_int_mss_val_flt_t - compound rec_var_int_mss_val_dbl_t { - int rec_var_int_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_int_mss_val_dbl_t - compound rec_var_dbl_mss_val_dbl_pck_lng_t { - int rec_var_dbl_mss_val_dbl_pck_lng(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_lng_t - compound one_dmn_rec_var_sng_t { - string one_dmn_rec_var_sng(10) ; - double time(10) ; - }; // one_dmn_rec_var_sng_t - compound time_lon_t { - float time_lon(10, 4) ; - double time(10) ; - float lon(4) ; - }; // time_lon_t - compound two_dmn_rec_var_sng_t { - string two_dmn_rec_var_sng(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_sng_t - compound two_dmn_rec_var_t { - float two_dmn_rec_var(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_t - compound three_dmn_rec_var_t { - float three_dmn_rec_var(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_rec_var_t - compound three_dmn_var_dbl_t { - double three_dmn_var_dbl(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_dbl_t - compound three_dmn_var_int_t { - int three_dmn_var_int(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_int_t - compound three_dmn_var_sht_t { - short three_dmn_var_sht(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_sht_t - compound four_dmn_rec_var_t { - float four_dmn_rec_var(10, 2, 3, 4) ; - double time(10) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // four_dmn_rec_var_t - compound u_t { - float u(10) ; - double time(10) ; - }; // u_t - compound v_t { - float v(10) ; - double time(10) ; - }; // v_t -dimensions: - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - rlev = 3 ; - time = 10 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - lat_var_t lat_var ; - lat_wgt_t lat_wgt ; - float lev(lev) ; - string lev:purpose = "Monotonically increasing coordinate pressure" ; - string lev:units = "hybrid_sigma_pressure" ; - string lev:positive = "down" ; - string lev:A_var = "hyam" ; - string lev:B_var = "hybm" ; - string lev:P0_var = "P0" ; - string lev:PS_var = "PS" ; - string lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - string rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - string lsmlev:purpose = "Homebrew level coordinate for LSM" ; - string lsmlev:long_name = "Soil depth" ; - string lsmlev:units = "meter" ; - float wvl(wvl) ; - string wvl:long_name = "Wavelength" ; - string wvl:units = "meter" ; - hyam_t hyam ; - hybm_t hybm ; - float P0 ; - string P0:long_name = "reference pressure" ; - string P0:units = "pascal" ; - PS_t PS ; - string fl_dmn(fl_dmn) ; - string fl_dmn:long_name = "Character coordinate" ; - string fl_dmn:units = "[chr]" ; - int nbdate ; - string nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - date_t date ; - lon_wgt_t lon_wgt ; - msk_prt_mss_prt_t msk_prt_mss_prt ; - mss_val_t mss_val ; - float mss_val_scl ; - string mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - mss_val_fst_t mss_val_fst ; - fll_val_t fll_val ; - no_mss_val_t no_mss_val ; - val_one_mss_t val_one_mss ; - short pck ; - string pck:long_name = "Packed scalar variable" ; - string pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - pck_arr_t pck_arr ; - double upk ; - string upk:long_name = "Unpacked scalar variable" ; - string upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - upk_arr_t upk_arr ; - int val_one_int ; - string val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - val_one_one_int_t val_one_one_int ; - val_max_max_sht_t val_max_max_sht ; - val_one_mss_int_t val_one_mss_int ; - float val_half ; - string val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - val_half_half_t val_half_half ; - wgt_one_t wgt_one ; - mss_val_all_t mss_val_all ; - float scalar_var ; - string scalar_var:long_name = "scalar variable" ; - string scalar_var:units = "Fraction" ; - float float_var ; - string float_var:long_name = "float" ; - double double_var ; - string double_var:long_name = "double" ; - double double_var2 ; - string double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - string int_var:long_name = "int" ; - short short_var ; - string short_var:long_name = "short" ; - string char_var ; - string char_var:long_name = "char" ; - string char_var_space ; - string char_var_space:long_name = "Character variable with whitespace on ends" ; - string char_var_nul ; - string char_var_nul:long_name = "Character variable containing one NUL" ; - char_var_multinul_t char_var_multinul ; - string fl_nm(char_dmn_lng) ; - string fl_nm:long_name = "Variable contains a file name" ; - string fl_nm_arr(fl_dmn, char_dmn_lng) ; - string fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - string fl_nm_arr:units = "[sng]" ; - string non_nul_trm_char_one_dmn(char_dmn_sml) ; - string non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - string non_nul_trm_char_one_dmn:units = "[chr]" ; - string non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml) ; - string non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - string non_nul_trm_char_two_dmn:units = "[chr]" ; - ubyte byte_var ; - string byte_var:long_name = "byte" ; - float zero ; - string zero:long_name = "zero" ; - float one ; - string one:long_name = "one" ; - float two ; - string two:long_name = "two" ; - double e_dbl ; - string e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - string e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - string three:long_name = "three" ; - float four ; - string four:long_name = "four" ; - float negative_one ; - string negative_one:long_name = "negative one" ; - lev_var_t lev_var ; - lev_wgt_t lev_wgt ; - float g ; - string g:long_name = "g" ; - z_t z ; - rz_t rz ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0UB ; - string att_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0UB ; - string bnd_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - three_dmn_var_t three_dmn_var ; - three_dmn_var_crd_t three_dmn_var_crd ; - prs_sfc_t prs_sfc ; - two_dmn_var_t two_dmn_var ; - mask_t mask ; - ORO_t ORO ; - weight_t weight ; - gw_t gw ; - gw_T42_t gw_T42 ; - rec_var_flt_t rec_var_flt ; - rec_var_dbl_t rec_var_dbl ; - one_dmn_rec_var_t one_dmn_rec_var ; - tpt_t tpt ; - rec_var_dbl_mss_val_dbl_upk_t rec_var_dbl_mss_val_dbl_upk ; - rec_var_dbl_mss_val_dbl_pck_t rec_var_dbl_mss_val_dbl_pck ; - rec_var_flt_mss_val_flt_t rec_var_flt_mss_val_flt ; - rec_var_flt_pck_t rec_var_flt_pck ; - rec_var_dbl_pck_t rec_var_dbl_pck ; - rec_var_flt_mss_val_dbl_t rec_var_flt_mss_val_dbl ; - rec_var_flt_mss_val_int_t rec_var_flt_mss_val_int ; - rec_var_int_mss_val_int_t rec_var_int_mss_val_int ; - rec_var_int_mss_val_flt_t rec_var_int_mss_val_flt ; - rec_var_int_mss_val_dbl_t rec_var_int_mss_val_dbl ; - rec_var_dbl_mss_val_dbl_pck_lng_t rec_var_dbl_mss_val_dbl_pck_lng ; - one_dmn_rec_var_sng_t one_dmn_rec_var_sng ; - time_lon_t time_lon ; - two_dmn_rec_var_sng_t two_dmn_rec_var_sng ; - two_dmn_rec_var_t two_dmn_rec_var ; - three_dmn_rec_var_t three_dmn_rec_var ; - three_dmn_var_dbl_t three_dmn_var_dbl ; - three_dmn_var_int_t three_dmn_var_int ; - three_dmn_var_sht_t three_dmn_var_sht ; - four_dmn_rec_var_t four_dmn_rec_var ; - double time_udunits(time_udunits) ; - string time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - string time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - u_t u ; - v_t v ; - -// global attributes: - string :Conventions = "NCAR-CSM" ; - string :history = "History global attribute.\\012" ; - :julian_day = 200000.04 ; -data: - - lat = _, _ ; - - lat_var = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - lat_wgt = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - lev = _, _, _ ; - - lon_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _ ; - - lat_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rlev = _, _, _ ; - - lon = _, _, _, _ ; - - time = _, _, _, _, _, _, _, _, _, _ ; - - lsmlev = _, _, _, _, _, _ ; - - wvl = _, _ ; - - hyam = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - hybm = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - P0 = _ ; - - PS = - {{101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fl_dmn = _, _, _ ; - - nbdate = _ ; - - date = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - lon_wgt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - msk_prt_mss_prt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mss_val = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mss_val_scl = _ ; - - mss_val_fst = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fll_val = - {{-999, -999, -999, -999}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - no_mss_val = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - val_one_mss = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - pck = _ ; - - pck_arr = - {{-32767, -32767, -32767, -32767}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - upk = _ ; - - upk_arr = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - val_one_int = _ ; - - val_one_one_int = {{-2147483647, -2147483647}, {9.96921e+36, 9.96921e+36}} ; - - val_max_max_sht = {{-32767, -32767}, {9.96921e+36, 9.96921e+36}} ; - - val_one_mss_int = {{-2147483647, -2147483647}, {9.96921e+36, 9.96921e+36}} ; - - val_half = _ ; - - val_half_half = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - wgt_one = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - mss_val_all = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - scalar_var = _ ; - - float_var = _ ; - - double_var = _ ; - - double_var2 = _ ; - - int_var = _ ; - - short_var = _ ; - - char_var = _ ; - - char_var_space = _ ; - - char_var_nul = _ ; - - char_var_multinul = {{"", "", ""}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fl_nm = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _ ; - - fl_nm_arr = - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _ ; - - non_nul_trm_char_one_dmn = _, _, _, _ ; - - non_nul_trm_char_two_dmn = - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - byte_var = 129 ; - - zero = _ ; - - one = _ ; - - two = _ ; - - e_dbl = _ ; - - e_flt = _ ; - - three = _ ; - - four = _ ; - - negative_one = _ ; - - lev_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - lev_wgt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - g = _ ; - - z = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - rz = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - one_dmn_var = _, _ ; - - att_var = _ ; - - bnd_var = - _, _, - _, _, - _, _ ; - - three_dmn_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_crd = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - prs_sfc = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mask = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - ORO = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - weight = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - gw = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - gw_T42 = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - rec_var_flt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - one_dmn_rec_var = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - tpt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_upk = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_flt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_dbl = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_int = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_int = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_flt = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_dbl = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_pck_lng = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - one_dmn_rec_var_sng = - {{"", "", "", "", "", "", "", "", "", ""}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - time_lon = - {{0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_rec_var_sng = - {{"a", "b", "c", "b", "c", "d", "c", "d", "e", "d", "e", "f", "e", "f", "g", "f", "g", "h", "g", "h", "i", "h", "i", "j", "j", "k", "l", "k", "l", "m"}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_rec_var = - {{1, 2, 3, 1, 2.1, 3, 1, 2.2, 3, 1, 2.3, 3, 1, 2.4, 3, 1, 2.5, 3, 1, 2.6, 3, 1, 2.7, 3, 1, 2.8, 3, 1, 2.9, 3}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -99, -99, -99, -99, -99, -99, -99, -99, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, 74, 75, 76, 77, 78, 79, -99}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_int = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -99, -99, -99, -99, -99, -99, -99, -99, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -99, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, -99, 62, 63, 64, 65, -99, 67, 68, 69, 70, 71, 72, -99, 74, 75, -99, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_sht = - {{1, 2, 3, 4, 5, 6, 7, 8, -99, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -99, 34, 35, -99, 37, 38, 39, 40, 41, 42, 43, 44, -99, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, -99, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, -99, -99, -99, -99, -99, -99, -99}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - four_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - time_udunits = 876012, 876018, 876024 ; - - u = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - v = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in1.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in1.nc.dmp deleted file mode 100644 index dd2db8172f9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in1.nc.dmp +++ /dev/null @@ -1,838 +0,0 @@ -netcdf in1 { -types: - compound lat_var_t { - float lat_var(2) ; - float lat(2) ; - }; // lat_var_t - compound lat_wgt_t { - float lat_wgt(2) ; - float lat(2) ; - }; // lat_wgt_t - compound hyam_t { - float hyam(3) ; - float lev(3) ; - }; // hyam_t - compound hybm_t { - float hybm(3) ; - float lev(3) ; - }; // hybm_t - compound PS_t { - float PS(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // PS_t - compound date_t { - int date(10) ; - double time(10) ; - }; // date_t - compound lon_wgt_t { - float lon_wgt(4) ; - float lon(4) ; - }; // lon_wgt_t - compound msk_prt_mss_prt_t { - float msk_prt_mss_prt(4) ; - float lon(4) ; - }; // msk_prt_mss_prt_t - compound mss_val_t { - float mss_val(4) ; - float lon(4) ; - }; // mss_val_t - compound mss_val_fst_t { - float mss_val_fst(4) ; - float lon(4) ; - }; // mss_val_fst_t - compound fll_val_t { - float fll_val(4) ; - float lon(4) ; - }; // fll_val_t - compound no_mss_val_t { - float no_mss_val(4) ; - float lon(4) ; - }; // no_mss_val_t - compound val_one_mss_t { - float val_one_mss(2) ; - float lat(2) ; - }; // val_one_mss_t - compound pck_arr_t { - short pck_arr(4) ; - float lon(4) ; - }; // pck_arr_t - compound upk_arr_t { - double upk_arr(4) ; - float lon(4) ; - }; // upk_arr_t - compound val_one_one_int_t { - int val_one_one_int(2) ; - float lat(2) ; - }; // val_one_one_int_t - compound val_max_max_sht_t { - short val_max_max_sht(2) ; - float lat(2) ; - }; // val_max_max_sht_t - compound val_one_mss_int_t { - int val_one_mss_int(2) ; - float lat(2) ; - }; // val_one_mss_int_t - compound val_half_half_t { - float val_half_half(2) ; - float lat(2) ; - }; // val_half_half_t - compound wgt_one_t { - float wgt_one(2) ; - float lat(2) ; - }; // wgt_one_t - compound mss_val_all_t { - float mss_val_all(4) ; - float lon(4) ; - }; // mss_val_all_t - compound char_var_multinul_t { - string char_var_multinul(3) ; - float lev(3) ; - }; // char_var_multinul_t - compound lev_var_t { - float lev_var(3) ; - float lev(3) ; - }; // lev_var_t - compound lev_wgt_t { - float lev_wgt(3) ; - float lev(3) ; - }; // lev_wgt_t - compound z_t { - float z(3) ; - float lev(3) ; - }; // z_t - compound rz_t { - float rz(3) ; - float rlev(3) ; - }; // rz_t - compound one_dmn_int_val_one_t { - int one_dmn_int_val_one(2) ; - float lat(2) ; - }; // one_dmn_int_val_one_t - compound one_dmn_int_val_two_t { - int one_dmn_int_val_two(2) ; - float lat(2) ; - }; // one_dmn_int_val_two_t - compound three_dmn_var_t { - float three_dmn_var(2, 3, 4) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // three_dmn_var_t - compound three_dmn_var_crd_t { - float three_dmn_var_crd(3, 2, 4) ; - float lev(3) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_crd_t - compound prs_sfc_t { - float prs_sfc(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // prs_sfc_t - compound two_dmn_var_t { - float two_dmn_var(2, 3) ; - float lat(2) ; - float lev(3) ; - }; // two_dmn_var_t - compound mask_t { - float mask(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // mask_t - compound ORO_t { - float ORO(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // ORO_t - compound weight_t { - float weight(2) ; - float lat(2) ; - }; // weight_t - compound gw_t { - float gw(2) ; - float lat(2) ; - }; // gw_t - compound gw_T42_t { - float gw_T42(64) ; - float lat_T42(64) ; - }; // gw_T42_t - compound rec_var_flt_t { - float rec_var_flt(10) ; - double time(10) ; - }; // rec_var_flt_t - compound rec_var_dbl_t { - double rec_var_dbl(10) ; - double time(10) ; - }; // rec_var_dbl_t - compound one_dmn_rec_var_t { - int one_dmn_rec_var(10) ; - double time(10) ; - }; // one_dmn_rec_var_t - compound tpt_t { - float tpt(10) ; - double time(10) ; - }; // tpt_t - compound rec_var_dbl_mss_val_dbl_upk_t { - double rec_var_dbl_mss_val_dbl_upk(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_upk_t - compound rec_var_dbl_mss_val_dbl_pck_t { - short rec_var_dbl_mss_val_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_t - compound rec_var_flt_mss_val_flt_t { - float rec_var_flt_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_flt_t - compound rec_var_flt_pck_t { - short rec_var_flt_pck(10) ; - double time(10) ; - }; // rec_var_flt_pck_t - compound rec_var_dbl_pck_t { - short rec_var_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_pck_t - compound rec_var_flt_mss_val_dbl_t { - float rec_var_flt_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_dbl_t - compound rec_var_flt_mss_val_int_t { - float rec_var_flt_mss_val_int(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_int_t - compound rec_var_int_mss_val_int_t { - int rec_var_int_mss_val_int(10) ; - double time(10) ; - }; // rec_var_int_mss_val_int_t - compound rec_var_int_mss_val_flt_t { - int rec_var_int_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_int_mss_val_flt_t - compound rec_var_int_mss_val_dbl_t { - int rec_var_int_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_int_mss_val_dbl_t - compound rec_var_dbl_mss_val_dbl_pck_lng_t { - int rec_var_dbl_mss_val_dbl_pck_lng(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_lng_t - compound one_dmn_rec_var_sng_t { - string one_dmn_rec_var_sng(10) ; - double time(10) ; - }; // one_dmn_rec_var_sng_t - compound time_lon_t { - float time_lon(10, 4) ; - double time(10) ; - float lon(4) ; - }; // time_lon_t - compound two_dmn_rec_var_sng_t { - string two_dmn_rec_var_sng(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_sng_t - compound two_dmn_rec_var_t { - float two_dmn_rec_var(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_t - compound three_dmn_rec_var_t { - float three_dmn_rec_var(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_rec_var_t - compound three_dmn_var_dbl_t { - double three_dmn_var_dbl(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_dbl_t - compound three_dmn_var_int_t { - int three_dmn_var_int(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_int_t - compound three_dmn_var_sht_t { - short three_dmn_var_sht(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_sht_t - compound tx_t { - float tx(10, 4) ; - double time(10) ; - float lon(4) ; - }; // tx_t - compound ty_t { - float ty(10, 2) ; - double time(10) ; - float lat(2) ; - }; // ty_t - compound tz_t { - float tz(10, 3) ; - double time(10) ; - float lev(3) ; - }; // tz_t - compound txyz_t { - float txyz(10, 4, 2, 3) ; - double time(10) ; - float lon(4) ; - float lat(2) ; - float lev(3) ; - }; // txyz_t - compound four_dmn_rec_var_t { - float four_dmn_rec_var(10, 2, 3, 4) ; - double time(10) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // four_dmn_rec_var_t - compound u_t { - float u(10) ; - double time(10) ; - }; // u_t - compound v_t { - float v(10) ; - double time(10) ; - }; // v_t -dimensions: - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - dgn = 1 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - rlev = 3 ; - time = 10 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - string lat:long_name = "Latitude" ; - string lat:units = "degrees_north" ; - lat_var_t lat_var ; - lat_wgt_t lat_wgt ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float lev(lev) ; - string lev:purpose = "Monotonically increasing coordinate pressure" ; - string lev:units = "hybrid_sigma_pressure" ; - string lev:positive = "down" ; - string lev:A_var = "hyam" ; - string lev:B_var = "hybm" ; - string lev:P0_var = "P0" ; - string lev:PS_var = "PS" ; - string lev:bounds = "ilev" ; - float rlev(rlev) ; - string rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - string lon:long_name = "Latitude" ; - string lon:units = "degrees_north" ; - double time(time) ; - float lsmlev(lsmlev) ; - string lsmlev:purpose = "Homebrew level coordinate for LSM" ; - string lsmlev:long_name = "Soil depth" ; - string lsmlev:units = "meter" ; - float wvl(wvl) ; - string wvl:long_name = "Wavelength" ; - string wvl:units = "meter" ; - hyam_t hyam ; - hybm_t hybm ; - float P0 ; - string P0:long_name = "reference pressure" ; - string P0:units = "pascal" ; - PS_t PS ; - string fl_dmn(fl_dmn) ; - string fl_dmn:long_name = "Character coordinate" ; - string fl_dmn:units = "[chr]" ; - int nbdate ; - string nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - date_t date ; - lon_wgt_t lon_wgt ; - msk_prt_mss_prt_t msk_prt_mss_prt ; - mss_val_t mss_val ; - float mss_val_scl ; - string mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - mss_val_fst_t mss_val_fst ; - fll_val_t fll_val ; - no_mss_val_t no_mss_val ; - val_one_mss_t val_one_mss ; - short pck ; - string pck:long_name = "Packed scalar variable" ; - string pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - pck_arr_t pck_arr ; - double upk ; - string upk:long_name = "Unpacked scalar variable" ; - string upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - upk_arr_t upk_arr ; - int val_one_int ; - string val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - val_one_one_int_t val_one_one_int ; - val_max_max_sht_t val_max_max_sht ; - val_one_mss_int_t val_one_mss_int ; - float val_half ; - string val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - val_half_half_t val_half_half ; - wgt_one_t wgt_one ; - mss_val_all_t mss_val_all ; - float scalar_var ; - string scalar_var:long_name = "scalar variable" ; - string scalar_var:units = "Fraction" ; - float float_var ; - string float_var:long_name = "float" ; - double double_var ; - string double_var:long_name = "double" ; - double double_var2 ; - string double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - string int_var:long_name = "int" ; - short short_var ; - string short_var:long_name = "short" ; - string char_var ; - string char_var:long_name = "char" ; - string char_var_space ; - string char_var_space:long_name = "Character variable with whitespace on ends" ; - string char_var_nul ; - string char_var_nul:long_name = "Character variable containing one NUL" ; - char_var_multinul_t char_var_multinul ; - string fl_nm(char_dmn_lng) ; - string fl_nm:long_name = "Variable contains a file name" ; - string fl_nm_arr(fl_dmn, char_dmn_lng) ; - string fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - string fl_nm_arr:units = "[sng]" ; - string non_nul_trm_char_one_dmn(char_dmn_sml) ; - string non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - string non_nul_trm_char_one_dmn:units = "[chr]" ; - string non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml) ; - string non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - string non_nul_trm_char_two_dmn:units = "[chr]" ; - ubyte byte_var ; - string byte_var:long_name = "byte" ; - ubyte byte_var_neg ; - string byte_var_neg:long_name = "negative byte" ; - float zero ; - string zero:long_name = "zero" ; - float one ; - string one:long_name = "one" ; - float two ; - string two:long_name = "two" ; - double e_dbl ; - string e_dbl:long_name = "e, natural logarithm base" ; - float e_flt ; - string e_flt:long_name = "e, natural logarithm base" ; - float three ; - string three:long_name = "three" ; - float four ; - string four:long_name = "four" ; - float negative_one ; - string negative_one:long_name = "negative one" ; - lev_var_t lev_var ; - lev_wgt_t lev_wgt ; - float g ; - string g:long_name = "g" ; - z_t z ; - rz_t rz ; - float one_dmn_var(bnd) ; - one_dmn_int_val_one_t one_dmn_int_val_one ; - one_dmn_int_val_two_t one_dmn_int_val_two ; - float att_var ; - att_var:byte_att = 0UB ; - string att_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0UB ; - string bnd_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - three_dmn_var_t three_dmn_var ; - three_dmn_var_crd_t three_dmn_var_crd ; - prs_sfc_t prs_sfc ; - two_dmn_var_t two_dmn_var ; - mask_t mask ; - ORO_t ORO ; - weight_t weight ; - gw_t gw ; - gw_T42_t gw_T42 ; - rec_var_flt_t rec_var_flt ; - rec_var_dbl_t rec_var_dbl ; - one_dmn_rec_var_t one_dmn_rec_var ; - tpt_t tpt ; - rec_var_dbl_mss_val_dbl_upk_t rec_var_dbl_mss_val_dbl_upk ; - rec_var_dbl_mss_val_dbl_pck_t rec_var_dbl_mss_val_dbl_pck ; - rec_var_flt_mss_val_flt_t rec_var_flt_mss_val_flt ; - rec_var_flt_pck_t rec_var_flt_pck ; - rec_var_dbl_pck_t rec_var_dbl_pck ; - rec_var_flt_mss_val_dbl_t rec_var_flt_mss_val_dbl ; - rec_var_flt_mss_val_int_t rec_var_flt_mss_val_int ; - rec_var_int_mss_val_int_t rec_var_int_mss_val_int ; - rec_var_int_mss_val_flt_t rec_var_int_mss_val_flt ; - rec_var_int_mss_val_dbl_t rec_var_int_mss_val_dbl ; - rec_var_dbl_mss_val_dbl_pck_lng_t rec_var_dbl_mss_val_dbl_pck_lng ; - one_dmn_rec_var_sng_t one_dmn_rec_var_sng ; - time_lon_t time_lon ; - two_dmn_rec_var_sng_t two_dmn_rec_var_sng ; - two_dmn_rec_var_t two_dmn_rec_var ; - three_dmn_rec_var_t three_dmn_rec_var ; - three_dmn_var_dbl_t three_dmn_var_dbl ; - three_dmn_var_int_t three_dmn_var_int ; - three_dmn_var_sht_t three_dmn_var_sht ; - float td(time, dgn) ; - string td:long_name = "two dimensional record variable stored in td (time,dgn) order (dgn means degenerate, i.e., of size 1)" ; - tx_t tx ; - ty_t ty ; - tz_t tz ; - txyz_t txyz ; - four_dmn_rec_var_t four_dmn_rec_var ; - double time_udunits(time_udunits) ; - string time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - string time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - u_t u ; - v_t v ; - -// global attributes: - string :Conventions = "NCAR-CSM" ; - string :history = "History global attribute.\\012" ; - :julian_day = 200000.04 ; -data: - - lat = -90, 90 ; - - lat_var = {{1, 2}, {-90, 90}} ; - - lat_wgt = {{1, 2}, {-90, 90}} ; - - lon_T42 = 0, 2.8125, 5.625, 8.4375, 11.25, 14.0625, 16.875, 19.6875, 22.5, - 25.3125, 28.125, 30.9375, 33.75, 36.5625, 39.375, 42.1875, 45, 47.8125, - 50.625, 53.4375, 56.25, 59.0625, 61.875, 64.6875, 67.5, 70.3125, 73.125, - 75.9375, 78.75, 81.5625, 84.375, 87.1875, 90, 92.8125, 95.625, 98.4375, - 101.25, 104.0625, 106.875, 109.6875, 112.5, 115.3125, 118.125, 120.9375, - 123.75, 126.5625, 129.375, 132.1875, 135, 137.8125, 140.625, 143.4375, - 146.25, 149.0625, 151.875, 154.6875, 157.5, 160.3125, 163.125, 165.9375, - 168.75, 171.5625, 174.375, 177.1875, 180, 182.8125, 185.625, 188.4375, - 191.25, 194.0625, 196.875, 199.6875, 202.5, 205.3125, 208.125, 210.9375, - 213.75, 216.5625, 219.375, 222.1875, 225, 227.8125, 230.625, 233.4375, - 236.25, 239.0625, 241.875, 244.6875, 247.5, 250.3125, 253.125, 255.9375, - 258.75, 261.5625, 264.375, 267.1875, 270, 272.8125, 275.625, 278.4375, - 281.25, 284.0625, 286.875, 289.6875, 292.5, 295.3125, 298.125, 300.9375, - 303.75, 306.5625, 309.375, 312.1875, 315, 317.8125, 320.625, 323.4375, - 326.25, 329.0625, 331.875, 334.6875, 337.5, 340.3125, 343.125, 345.9375, - 348.75, 351.5625, 354.375, 357.1875 ; - - lat_T42 = -88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, - -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, - -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, - -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, - 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, - 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, - 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009 ; - - lev = 100, 500, 1000 ; - - rlev = 1000, 500, 100 ; - - lon = 0, 90, 180, 270 ; - - time = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - lsmlev = 0.05, 0.1, 0.2, 0.5, 1, 3 ; - - wvl = 5e-07, 1e-06 ; - - hyam = {{0.0802583, 0.0438226, 0}, {100, 500, 1000}} ; - - hybm = {{0.0187849, 0.457453, 0.992528}, {100, 500, 1000}} ; - - P0 = 100000 ; - - PS = - {{101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - fl_dmn = "a", "b", "3" ; - - nbdate = 640312 ; - - date = - {{640312, 640313, 640314, 640315, 640316, 640317, 640318, 640319, 640320, 640321}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - lon_wgt = {{0.347855, 0.652145, 0.652145, 0.347855}, {0, 90, 180, 270}} ; - - msk_prt_mss_prt = {{0.5, 1e+36, 1.5, 1e+36}, {0, 90, 180, 270}} ; - - mss_val = {{73, 1e+36, 73, 1e+36}, {0, 90, 180, 270}} ; - - mss_val_scl = 1e+36 ; - - mss_val_fst = {{-999, 73, -999, 73}, {0, 90, 180, 270}} ; - - fll_val = {{73, -999, 73, -999}, {0, 90, 180, 270}} ; - - no_mss_val = {{73, 1e+36, 73, 1e+36}, {0, 90, 180, 270}} ; - - val_one_mss = {{1, 1e+36}, {-90, 90}} ; - - pck = 1 ; - - pck_arr = {{-32767, 0, 1, 32767}, {0, 90, 180, 270}} ; - - upk = 3 ; - - upk_arr = {{-32767, 0, 1, 32767}, {0, 90, 180, 270}} ; - - val_one_int = 1 ; - - val_one_one_int = {{1, 1}, {-90, 90}} ; - - val_max_max_sht = {{17000, 17000}, {-90, 90}} ; - - val_one_mss_int = {{1, -99}, {-90, 90}} ; - - val_half = 0.5 ; - - val_half_half = {{0.5, 0.5}, {-90, 90}} ; - - wgt_one = {{1, 1}, {-90, 90}} ; - - mss_val_all = {{1e+36, 1e+36, 1e+36, 1e+36}, {0, 90, 180, 270}} ; - - scalar_var = 10 ; - - float_var = 10 ; - - double_var = 10 ; - - double_var2 = 10 ; - - int_var = 10 ; - - short_var = 10 ; - - char_var = "z" ; - - char_var_space = " " ; - - char_var_nul = _ ; - - char_var_multinul = {{"", " -", ""}, {100, 500, 1000}} ; - - fl_nm = "/", "h", "o", "m", "e", "/", "z", "e", "n", "d", "e", "r", "/", - "n", "c", "o", "/", "d", "a", "t", "a", "/", "i", "n", ".", "c", "d", - "l", _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _ ; - - fl_nm_arr = - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "1", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "2", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "3", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _ ; - - non_nul_trm_char_one_dmn = "a", "b", _, _ ; - - non_nul_trm_char_two_dmn = - "a", "b", "c", "d", - "e", "f", "g", "h", - "i", "j", "k", "m" ; - - byte_var = 122 ; - - byte_var_neg = 134 ; - - zero = 0 ; - - one = 1 ; - - two = 2 ; - - e_dbl = 2.71828182846 ; - - e_flt = 2.718282 ; - - three = 3 ; - - four = 4 ; - - negative_one = -1 ; - - lev_var = {{100, 500, 1000}, {100, 500, 1000}} ; - - lev_wgt = {{10, 2, 1}, {100, 500, 1000}} ; - - g = 9.8 ; - - z = {{17000, 5000, 0}, {100, 500, 1000}} ; - - rz = {{0, 5000, 17000}, {1000, 500, 100}} ; - - one_dmn_var = 1, 10 ; - - one_dmn_int_val_one = {{1, 1}, {-90, 90}} ; - - one_dmn_int_val_two = {{2, 2}, {-90, 90}} ; - - att_var = 10 ; - - bnd_var = - 1, 2, - 3, 4, - 5, 6 ; - - three_dmn_var = - {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, {-90, 90}, {100, 500, 1000}, {0, 90, 180, 270}} ; - - three_dmn_var_crd = - {{0, 1, 2, 3, 12, 13, 14, 15, 4, 5, 6, 7, 16, 17, 18, 19, 8, 9, 10, 11, 20, 21, 22, 23}, {100, 500, 1000}, {-90, 90}, {0, 90, 180, 270}} ; - - prs_sfc = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - two_dmn_var = - {{1.5, 5.5, 9.5, 13.5, 17.5, 21.5}, {-90, 90}, {100, 500, 1000}} ; - - mask = {{0, 1, 0, 0, 1, 1, 0, 2}, {-90, 90}, {0, 90, 180, 270}} ; - - ORO = {{1, 1, 1, 1, 1, 1, 1, 1}, {-90, 90}, {0, 90, 180, 270}} ; - - weight = {{10, 10}, {-90, 90}} ; - - gw = {{10, 10}, {-90, 90}} ; - - gw_T42 = - {{-87.8638, -85.09653, -82.31291, -79.5256, -76.7369, -73.94752, -71.15775, -68.36776, -65.57761, -62.78735, -59.99702, -57.20663, -54.4162, -51.62573, -48.83524, -46.04473, -43.2542, -40.46365, -37.67309, -34.88252, -32.09195, -29.30136, -26.51077, -23.72017, -20.92957, -18.13897, -15.34836, -12.55776, -9.767146, -6.976534, -4.185921, -1.395307, 1.395307, 4.185921, 6.976534, 9.767146, 12.55776, 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09195, 34.88252, 37.67309, 40.46365, 43.2542, 46.04473, 48.83524, 51.62573, 54.4162, 57.20663, 59.99702, 62.78735, 65.57761, 68.36776, 71.15775, 73.94752, 76.7369, 79.5256, 82.31291, 85.09653, 87.8638}, {-88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009}} ; - - rec_var_flt = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - one_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - tpt = - {{273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 274}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_upk = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_pck = - {{-999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_flt = - {{1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_pck = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_pck = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_dbl = - {{1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_int = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_int = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_flt = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_dbl = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_pck_lng = - {{-999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - one_dmn_rec_var_sng = - {{"H", "e", "l", "l", "o", " ", "W", "o", "r", ""}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - time_lon = - {{0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {0, 90, 180, 270}} ; - - two_dmn_rec_var_sng = - {{"a", "b", "c", "b", "c", "d", "c", "d", "e", "d", "e", "f", "e", "f", "g", "f", "g", "h", "g", "h", "i", "h", "i", "j", "j", "k", "l", "k", "l", "m"}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {100, 500, 1000}} ; - - two_dmn_rec_var = - {{1, 2, 3, 1, 2.1, 3, 1, 2.2, 3, 1, 2.3, 3, 1, 2.4, 3, 1, 2.5, 3, 1, 2.6, 3, 1, 2.7, 3, 1, 2.8, 3, 1, 2.9, 3}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {100, 500, 1000}} ; - - three_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -99, -99, -99, -99, -99, -99, -99, -99, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, 74, 75, 76, 77, 78, 79, -99}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_int = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -99, -99, -99, -99, -99, -99, -99, -99, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -99, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, -99, 62, 63, 64, 65, -99, 67, 68, 69, 70, 71, 72, -99, 74, 75, -99, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_sht = - {{1, 2, 3, 4, 5, 6, 7, 8, -99, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -99, 34, 35, -99, 37, 38, 39, 40, 41, 42, 43, 44, -99, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, -99, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, -99, -99, -99, -99, -99, -99, -99}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - td = - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 ; - - tx = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {0, 90, 180, 270}} ; - - ty = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}} ; - - tz = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {100, 500, 1000}} ; - - txyz = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {0, 90, 180, 270}, {-90, 90}, {100, 500, 1000}} ; - - four_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {100, 500, 1000}, {0, 90, 180, 270}} ; - - time_udunits = 876012, 876018, 876024 ; - - u = {{1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - v = {{0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_2.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_2.nc.dmp deleted file mode 100644 index 49e56981651..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_2.nc.dmp +++ /dev/null @@ -1,770 +0,0 @@ -netcdf in_2 { -types: - compound lat_var_t { - float lat_var(2) ; - float lat(2) ; - }; // lat_var_t - compound lat_wgt_t { - float lat_wgt(2) ; - float lat(2) ; - }; // lat_wgt_t - compound hyam_t { - float hyam(3) ; - float lev(3) ; - }; // hyam_t - compound hybm_t { - float hybm(3) ; - float lev(3) ; - }; // hybm_t - compound PS_t { - float PS(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // PS_t - compound date_t { - int date(10) ; - double time(10) ; - }; // date_t - compound lon_wgt_t { - float lon_wgt(4) ; - float lon(4) ; - }; // lon_wgt_t - compound msk_prt_mss_prt_t { - float msk_prt_mss_prt(4) ; - float lon(4) ; - }; // msk_prt_mss_prt_t - compound mss_val_t { - float mss_val(4) ; - float lon(4) ; - }; // mss_val_t - compound mss_val_fst_t { - float mss_val_fst(4) ; - float lon(4) ; - }; // mss_val_fst_t - compound fll_val_t { - float fll_val(4) ; - float lon(4) ; - }; // fll_val_t - compound no_mss_val_t { - float no_mss_val(4) ; - float lon(4) ; - }; // no_mss_val_t - compound val_one_mss_t { - float val_one_mss(2) ; - float lat(2) ; - }; // val_one_mss_t - compound pck_arr_t { - short pck_arr(4) ; - float lon(4) ; - }; // pck_arr_t - compound upk_arr_t { - double upk_arr(4) ; - float lon(4) ; - }; // upk_arr_t - compound val_one_one_int_t { - int val_one_one_int(2) ; - float lat(2) ; - }; // val_one_one_int_t - compound val_max_max_sht_t { - short val_max_max_sht(2) ; - float lat(2) ; - }; // val_max_max_sht_t - compound val_one_mss_int_t { - int val_one_mss_int(2) ; - float lat(2) ; - }; // val_one_mss_int_t - compound val_half_half_t { - float val_half_half(2) ; - float lat(2) ; - }; // val_half_half_t - compound wgt_one_t { - float wgt_one(2) ; - float lat(2) ; - }; // wgt_one_t - compound mss_val_all_t { - float mss_val_all(4) ; - float lon(4) ; - }; // mss_val_all_t - compound char_var_multinul_t { - string char_var_multinul(3) ; - float lev(3) ; - }; // char_var_multinul_t - compound lev_var_t { - float lev_var(3) ; - float lev(3) ; - }; // lev_var_t - compound lev_wgt_t { - float lev_wgt(3) ; - float lev(3) ; - }; // lev_wgt_t - compound z_t { - float z(3) ; - float lev(3) ; - }; // z_t - compound rz_t { - float rz(3) ; - float rlev(3) ; - }; // rz_t - compound three_dmn_var_t { - float three_dmn_var(2, 3, 4) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // three_dmn_var_t - compound three_dmn_var_crd_t { - float three_dmn_var_crd(3, 2, 4) ; - float lev(3) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_crd_t - compound prs_sfc_t { - float prs_sfc(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // prs_sfc_t - compound two_dmn_var_t { - float two_dmn_var(2, 3) ; - float lat(2) ; - float lev(3) ; - }; // two_dmn_var_t - compound mask_t { - float mask(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // mask_t - compound ORO_t { - float ORO(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // ORO_t - compound weight_t { - float weight(2) ; - float lat(2) ; - }; // weight_t - compound gw_t { - float gw(2) ; - float lat(2) ; - }; // gw_t - compound gw_T42_t { - float gw_T42(64) ; - float lat_T42(64) ; - }; // gw_T42_t - compound rec_var_flt_t { - float rec_var_flt(10) ; - double time(10) ; - }; // rec_var_flt_t - compound rec_var_dbl_t { - double rec_var_dbl(10) ; - double time(10) ; - }; // rec_var_dbl_t - compound one_dmn_rec_var_t { - int one_dmn_rec_var(10) ; - double time(10) ; - }; // one_dmn_rec_var_t - compound tpt_t { - float tpt(10) ; - double time(10) ; - }; // tpt_t - compound rec_var_dbl_mss_val_dbl_upk_t { - double rec_var_dbl_mss_val_dbl_upk(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_upk_t - compound rec_var_dbl_mss_val_dbl_pck_t { - short rec_var_dbl_mss_val_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_t - compound rec_var_flt_mss_val_flt_t { - float rec_var_flt_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_flt_t - compound rec_var_flt_pck_t { - short rec_var_flt_pck(10) ; - double time(10) ; - }; // rec_var_flt_pck_t - compound rec_var_dbl_pck_t { - short rec_var_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_pck_t - compound rec_var_flt_mss_val_dbl_t { - float rec_var_flt_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_dbl_t - compound rec_var_flt_mss_val_int_t { - float rec_var_flt_mss_val_int(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_int_t - compound rec_var_int_mss_val_int_t { - int rec_var_int_mss_val_int(10) ; - double time(10) ; - }; // rec_var_int_mss_val_int_t - compound rec_var_int_mss_val_flt_t { - int rec_var_int_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_int_mss_val_flt_t - compound rec_var_int_mss_val_dbl_t { - int rec_var_int_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_int_mss_val_dbl_t - compound rec_var_dbl_mss_val_dbl_pck_lng_t { - int rec_var_dbl_mss_val_dbl_pck_lng(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_lng_t - compound one_dmn_rec_var_sng_t { - string one_dmn_rec_var_sng(10) ; - double time(10) ; - }; // one_dmn_rec_var_sng_t - compound time_lon_t { - float time_lon(10, 4) ; - double time(10) ; - float lon(4) ; - }; // time_lon_t - compound two_dmn_rec_var_sng_t { - string two_dmn_rec_var_sng(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_sng_t - compound two_dmn_rec_var_t { - float two_dmn_rec_var(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_t - compound three_dmn_rec_var_t { - float three_dmn_rec_var(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_rec_var_t - compound three_dmn_var_dbl_t { - double three_dmn_var_dbl(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_dbl_t - compound three_dmn_var_int_t { - int three_dmn_var_int(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_int_t - compound three_dmn_var_sht_t { - short three_dmn_var_sht(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_sht_t - compound four_dmn_rec_var_t { - float four_dmn_rec_var(10, 2, 3, 4) ; - double time(10) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // four_dmn_rec_var_t - compound three_double_dmn_t { - double three_double_dmn(10, 4, 4) ; - double time(10) ; - float lon(4) ; - float lon1(4) ; - }; // three_double_dmn_t - compound u_t { - float u(10) ; - double time(10) ; - }; // u_t - compound v_t { - float v(10) ; - double time(10) ; - }; // v_t -dimensions: - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - rlev = 3 ; - time = 10 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - lat_var_t lat_var ; - lat_wgt_t lat_wgt ; - float lev(lev) ; - string lev:purpose = "Monotonically increasing coordinate pressure" ; - string lev:units = "hybrid_sigma_pressure" ; - string lev:positive = "down" ; - string lev:A_var = "hyam" ; - string lev:B_var = "hybm" ; - string lev:P0_var = "P0" ; - string lev:PS_var = "PS" ; - string lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - string rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - string lsmlev:purpose = "Homebrew level coordinate for LSM" ; - string lsmlev:long_name = "Soil depth" ; - string lsmlev:units = "meter" ; - float wvl(wvl) ; - string wvl:long_name = "Wavelength" ; - string wvl:units = "meter" ; - hyam_t hyam ; - hybm_t hybm ; - float P0 ; - string P0:long_name = "reference pressure" ; - string P0:units = "pascal" ; - PS_t PS ; - string fl_dmn(fl_dmn) ; - string fl_dmn:long_name = "Character coordinate" ; - string fl_dmn:units = "[chr]" ; - int nbdate ; - string nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - date_t date ; - lon_wgt_t lon_wgt ; - msk_prt_mss_prt_t msk_prt_mss_prt ; - mss_val_t mss_val ; - float mss_val_scl ; - string mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - mss_val_fst_t mss_val_fst ; - fll_val_t fll_val ; - no_mss_val_t no_mss_val ; - val_one_mss_t val_one_mss ; - short pck ; - string pck:long_name = "Packed scalar variable" ; - string pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - pck_arr_t pck_arr ; - double upk ; - string upk:long_name = "Unpacked scalar variable" ; - string upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - upk_arr_t upk_arr ; - int val_one_int ; - string val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - val_one_one_int_t val_one_one_int ; - val_max_max_sht_t val_max_max_sht ; - val_one_mss_int_t val_one_mss_int ; - float val_half ; - string val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - val_half_half_t val_half_half ; - wgt_one_t wgt_one ; - mss_val_all_t mss_val_all ; - float scalar_var ; - string scalar_var:long_name = "scalar variable" ; - string scalar_var:units = "Fraction" ; - float float_var ; - string float_var:long_name = "float" ; - double double_var ; - string double_var:long_name = "double" ; - double double_var2 ; - string double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - string int_var:long_name = "int" ; - short short_var ; - string short_var:long_name = "short" ; - string char_var ; - string char_var:long_name = "char" ; - string char_var_space ; - string char_var_space:long_name = "Character variable with whitespace on ends" ; - string char_var_nul ; - string char_var_nul:long_name = "Character variable containing one NUL" ; - char_var_multinul_t char_var_multinul ; - string fl_nm(char_dmn_lng) ; - string fl_nm:long_name = "Variable contains a file name" ; - string fl_nm_arr(fl_dmn, char_dmn_lng) ; - string fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - string fl_nm_arr:units = "[sng]" ; - string non_nul_trm_char_one_dmn(char_dmn_sml) ; - string non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - string non_nul_trm_char_one_dmn:units = "[chr]" ; - string non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml) ; - string non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - string non_nul_trm_char_two_dmn:units = "[chr]" ; - ubyte byte_var ; - string byte_var:long_name = "byte" ; - float zero ; - string zero:long_name = "zero" ; - float one ; - string one:long_name = "one" ; - float two ; - string two:long_name = "two" ; - double e_dbl ; - string e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - string e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - string three:long_name = "three" ; - float four ; - string four:long_name = "four" ; - float negative_one ; - string negative_one:long_name = "negative one" ; - lev_var_t lev_var ; - lev_wgt_t lev_wgt ; - float g ; - string g:long_name = "g" ; - z_t z ; - rz_t rz ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0UB ; - string att_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0UB ; - string bnd_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - three_dmn_var_t three_dmn_var ; - three_dmn_var_crd_t three_dmn_var_crd ; - prs_sfc_t prs_sfc ; - two_dmn_var_t two_dmn_var ; - mask_t mask ; - ORO_t ORO ; - weight_t weight ; - gw_t gw ; - gw_T42_t gw_T42 ; - rec_var_flt_t rec_var_flt ; - rec_var_dbl_t rec_var_dbl ; - one_dmn_rec_var_t one_dmn_rec_var ; - tpt_t tpt ; - rec_var_dbl_mss_val_dbl_upk_t rec_var_dbl_mss_val_dbl_upk ; - rec_var_dbl_mss_val_dbl_pck_t rec_var_dbl_mss_val_dbl_pck ; - rec_var_flt_mss_val_flt_t rec_var_flt_mss_val_flt ; - rec_var_flt_pck_t rec_var_flt_pck ; - rec_var_dbl_pck_t rec_var_dbl_pck ; - rec_var_flt_mss_val_dbl_t rec_var_flt_mss_val_dbl ; - rec_var_flt_mss_val_int_t rec_var_flt_mss_val_int ; - rec_var_int_mss_val_int_t rec_var_int_mss_val_int ; - rec_var_int_mss_val_flt_t rec_var_int_mss_val_flt ; - rec_var_int_mss_val_dbl_t rec_var_int_mss_val_dbl ; - rec_var_dbl_mss_val_dbl_pck_lng_t rec_var_dbl_mss_val_dbl_pck_lng ; - one_dmn_rec_var_sng_t one_dmn_rec_var_sng ; - time_lon_t time_lon ; - two_dmn_rec_var_sng_t two_dmn_rec_var_sng ; - two_dmn_rec_var_t two_dmn_rec_var ; - three_dmn_rec_var_t three_dmn_rec_var ; - three_dmn_var_dbl_t three_dmn_var_dbl ; - three_dmn_var_int_t three_dmn_var_int ; - three_dmn_var_sht_t three_dmn_var_sht ; - four_dmn_rec_var_t four_dmn_rec_var ; - three_double_dmn_t three_double_dmn ; - double time_udunits(time_udunits) ; - string time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - string time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - u_t u ; - v_t v ; - -// global attributes: - string :Conventions = "NCAR-CSM" ; - string :history = "History global attribute.\\012" ; - :julian_day = 200000.04 ; -data: - - lat = _, _ ; - - lat_var = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - lat_wgt = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - lev = _, _, _ ; - - lon_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _ ; - - lat_T42 = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ ; - - rlev = _, _, _ ; - - lon = _, _, _, _ ; - - time = _, _, _, _, _, _, _, _, _, _ ; - - lsmlev = _, _, _, _, _, _ ; - - wvl = _, _ ; - - hyam = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - hybm = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - P0 = _ ; - - PS = - {{101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fl_dmn = _, _, _ ; - - nbdate = _ ; - - date = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - lon_wgt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - msk_prt_mss_prt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mss_val = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mss_val_scl = _ ; - - mss_val_fst = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fll_val = - {{-999, -999, -999, -999}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - no_mss_val = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - val_one_mss = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - pck = _ ; - - pck_arr = - {{-32767, -32767, -32767, -32767}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - upk = _ ; - - upk_arr = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - val_one_int = _ ; - - val_one_one_int = {{-2147483647, -2147483647}, {9.96921e+36, 9.96921e+36}} ; - - val_max_max_sht = {{-32767, -32767}, {9.96921e+36, 9.96921e+36}} ; - - val_one_mss_int = {{-2147483647, -2147483647}, {9.96921e+36, 9.96921e+36}} ; - - val_half = _ ; - - val_half_half = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - wgt_one = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - mss_val_all = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - scalar_var = _ ; - - float_var = _ ; - - double_var = _ ; - - double_var2 = _ ; - - int_var = _ ; - - short_var = _ ; - - char_var = _ ; - - char_var_space = _ ; - - char_var_nul = _ ; - - char_var_multinul = {{"", "", ""}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - fl_nm = _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _ ; - - fl_nm_arr = - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _ ; - - non_nul_trm_char_one_dmn = _, _, _, _ ; - - non_nul_trm_char_two_dmn = - _, _, _, _, - _, _, _, _, - _, _, _, _ ; - - byte_var = 129 ; - - zero = _ ; - - one = _ ; - - two = _ ; - - e_dbl = _ ; - - e_flt = _ ; - - three = _ ; - - four = _ ; - - negative_one = _ ; - - lev_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - lev_wgt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - g = _ ; - - z = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - rz = - {{9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - one_dmn_var = _, _ ; - - att_var = _ ; - - bnd_var = - _, _, - _, _, - _, _ ; - - three_dmn_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_crd = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - prs_sfc = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_var = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - mask = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - ORO = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - weight = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - gw = {{9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36}} ; - - gw_T42 = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - rec_var_flt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - one_dmn_rec_var = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - tpt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_upk = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_flt = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_pck = - {{-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_dbl = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_flt_mss_val_int = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_int = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_flt = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_int_mss_val_dbl = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - rec_var_dbl_mss_val_dbl_pck_lng = - {{-2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647, -2147483647}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - one_dmn_rec_var_sng = - {{"", "", "", "", "", "", "", "", "", ""}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - time_lon = - {{0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_rec_var_sng = - {{"a", "b", "c", "b", "c", "d", "c", "d", "e", "d", "e", "f", "e", "f", "g", "f", "g", "h", "g", "h", "i", "h", "i", "j", "j", "k", "l", "k", "l", "m"}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - two_dmn_rec_var = - {{1, 2, 3, 1, 2.1, 3, 1, 2.2, 3, 1, 2.3, 3, 1, 2.4, 3, 1, 2.5, 3, 1, 2.6, 3, 1, 2.7, 3, 1, 2.8, 3, 1, 2.9, 3}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -99, -99, -99, -99, -99, -99, -99, -99, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, 74, 75, 76, 77, 78, 79, -99}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_int = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -99, -99, -99, -99, -99, -99, -99, -99, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -99, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, -99, 62, 63, 64, 65, -99, 67, 68, 69, 70, 71, 72, -99, 74, 75, -99, 77, 78, 79, 80}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_dmn_var_sht = - {{1, 2, 3, 4, 5, 6, 7, 8, -99, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -99, 34, 35, -99, 37, 38, 39, 40, 41, 42, 43, 44, -99, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, -99, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, -99, -99, -99, -99, -99, -99, -99}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - four_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - three_double_dmn = - {{9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}} ; - - time_udunits = 876012, 876018, 876024 ; - - u = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; - - v = - {{9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36, 9.96921e+36}, {9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36, 9.96920996838687e+36}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_no_three_double_dmn.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_no_three_double_dmn.nc.dmp deleted file mode 100644 index f2fce0c6da9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_no_three_double_dmn.nc.dmp +++ /dev/null @@ -1,763 +0,0 @@ -netcdf in_no_three_double_dmn { -types: - compound lat_var_t { - float lat_var(2) ; - float lat(2) ; - }; // lat_var_t - compound lat_wgt_t { - float lat_wgt(2) ; - float lat(2) ; - }; // lat_wgt_t - compound hyam_t { - float hyam(3) ; - float lev(3) ; - }; // hyam_t - compound hybm_t { - float hybm(3) ; - float lev(3) ; - }; // hybm_t - compound PS_t { - float PS(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // PS_t - compound date_t { - int date(10) ; - double time(10) ; - }; // date_t - compound lon_wgt_t { - float lon_wgt(4) ; - float lon(4) ; - }; // lon_wgt_t - compound msk_prt_mss_prt_t { - float msk_prt_mss_prt(4) ; - float lon(4) ; - }; // msk_prt_mss_prt_t - compound mss_val_t { - float mss_val(4) ; - float lon(4) ; - }; // mss_val_t - compound mss_val_fst_t { - float mss_val_fst(4) ; - float lon(4) ; - }; // mss_val_fst_t - compound fll_val_t { - float fll_val(4) ; - float lon(4) ; - }; // fll_val_t - compound no_mss_val_t { - float no_mss_val(4) ; - float lon(4) ; - }; // no_mss_val_t - compound val_one_mss_t { - float val_one_mss(2) ; - float lat(2) ; - }; // val_one_mss_t - compound pck_arr_t { - short pck_arr(4) ; - float lon(4) ; - }; // pck_arr_t - compound upk_arr_t { - double upk_arr(4) ; - float lon(4) ; - }; // upk_arr_t - compound val_one_one_int_t { - int val_one_one_int(2) ; - float lat(2) ; - }; // val_one_one_int_t - compound val_max_max_sht_t { - short val_max_max_sht(2) ; - float lat(2) ; - }; // val_max_max_sht_t - compound val_one_mss_int_t { - int val_one_mss_int(2) ; - float lat(2) ; - }; // val_one_mss_int_t - compound val_half_half_t { - float val_half_half(2) ; - float lat(2) ; - }; // val_half_half_t - compound wgt_one_t { - float wgt_one(2) ; - float lat(2) ; - }; // wgt_one_t - compound mss_val_all_t { - float mss_val_all(4) ; - float lon(4) ; - }; // mss_val_all_t - compound char_var_multinul_t { - string char_var_multinul(3) ; - float lev(3) ; - }; // char_var_multinul_t - compound lev_var_t { - float lev_var(3) ; - float lev(3) ; - }; // lev_var_t - compound lev_wgt_t { - float lev_wgt(3) ; - float lev(3) ; - }; // lev_wgt_t - compound z_t { - float z(3) ; - float lev(3) ; - }; // z_t - compound rz_t { - float rz(3) ; - float rlev(3) ; - }; // rz_t - compound three_dmn_var_t { - float three_dmn_var(2, 3, 4) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // three_dmn_var_t - compound three_dmn_var_crd_t { - float three_dmn_var_crd(3, 2, 4) ; - float lev(3) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_crd_t - compound prs_sfc_t { - float prs_sfc(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // prs_sfc_t - compound two_dmn_var_t { - float two_dmn_var(2, 3) ; - float lat(2) ; - float lev(3) ; - }; // two_dmn_var_t - compound mask_t { - float mask(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // mask_t - compound ORO_t { - float ORO(2, 4) ; - float lat(2) ; - float lon(4) ; - }; // ORO_t - compound weight_t { - float weight(2) ; - float lat(2) ; - }; // weight_t - compound gw_t { - float gw(2) ; - float lat(2) ; - }; // gw_t - compound gw_T42_t { - float gw_T42(64) ; - float lat_T42(64) ; - }; // gw_T42_t - compound rec_var_flt_t { - float rec_var_flt(10) ; - double time(10) ; - }; // rec_var_flt_t - compound rec_var_dbl_t { - double rec_var_dbl(10) ; - double time(10) ; - }; // rec_var_dbl_t - compound one_dmn_rec_var_t { - int one_dmn_rec_var(10) ; - double time(10) ; - }; // one_dmn_rec_var_t - compound tpt_t { - float tpt(10) ; - double time(10) ; - }; // tpt_t - compound rec_var_dbl_mss_val_dbl_upk_t { - double rec_var_dbl_mss_val_dbl_upk(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_upk_t - compound rec_var_dbl_mss_val_dbl_pck_t { - short rec_var_dbl_mss_val_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_t - compound rec_var_flt_mss_val_flt_t { - float rec_var_flt_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_flt_t - compound rec_var_flt_pck_t { - short rec_var_flt_pck(10) ; - double time(10) ; - }; // rec_var_flt_pck_t - compound rec_var_dbl_pck_t { - short rec_var_dbl_pck(10) ; - double time(10) ; - }; // rec_var_dbl_pck_t - compound rec_var_flt_mss_val_dbl_t { - float rec_var_flt_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_dbl_t - compound rec_var_flt_mss_val_int_t { - float rec_var_flt_mss_val_int(10) ; - double time(10) ; - }; // rec_var_flt_mss_val_int_t - compound rec_var_int_mss_val_int_t { - int rec_var_int_mss_val_int(10) ; - double time(10) ; - }; // rec_var_int_mss_val_int_t - compound rec_var_int_mss_val_flt_t { - int rec_var_int_mss_val_flt(10) ; - double time(10) ; - }; // rec_var_int_mss_val_flt_t - compound rec_var_int_mss_val_dbl_t { - int rec_var_int_mss_val_dbl(10) ; - double time(10) ; - }; // rec_var_int_mss_val_dbl_t - compound rec_var_dbl_mss_val_dbl_pck_lng_t { - int rec_var_dbl_mss_val_dbl_pck_lng(10) ; - double time(10) ; - }; // rec_var_dbl_mss_val_dbl_pck_lng_t - compound one_dmn_rec_var_sng_t { - string one_dmn_rec_var_sng(10) ; - double time(10) ; - }; // one_dmn_rec_var_sng_t - compound time_lon_t { - float time_lon(10, 4) ; - double time(10) ; - float lon(4) ; - }; // time_lon_t - compound two_dmn_rec_var_sng_t { - string two_dmn_rec_var_sng(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_sng_t - compound two_dmn_rec_var_t { - float two_dmn_rec_var(10, 3) ; - double time(10) ; - float lev(3) ; - }; // two_dmn_rec_var_t - compound three_dmn_rec_var_t { - float three_dmn_rec_var(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_rec_var_t - compound three_dmn_var_dbl_t { - double three_dmn_var_dbl(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_dbl_t - compound three_dmn_var_int_t { - int three_dmn_var_int(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_int_t - compound three_dmn_var_sht_t { - short three_dmn_var_sht(10, 2, 4) ; - double time(10) ; - float lat(2) ; - float lon(4) ; - }; // three_dmn_var_sht_t - compound four_dmn_rec_var_t { - float four_dmn_rec_var(10, 2, 3, 4) ; - double time(10) ; - float lat(2) ; - float lev(3) ; - float lon(4) ; - }; // four_dmn_rec_var_t - compound u_t { - float u(10) ; - double time(10) ; - }; // u_t - compound v_t { - float v(10) ; - double time(10) ; - }; // v_t -dimensions: - bnd = 2 ; - char_dmn_lng = 80 ; - char_dmn_sml = 4 ; - fl_dmn = 3 ; - lat = 2 ; - lat_T42 = 64 ; - lev = 3 ; - lon = 4 ; - lon_T42 = 128 ; - lsmlev = 6 ; - rlev = 3 ; - time = 10 ; - time_udunits = 3 ; - wvl = 2 ; -variables: - float lat(lat) ; - lat_var_t lat_var ; - lat_wgt_t lat_wgt ; - float lev(lev) ; - string lev:purpose = "Monotonically increasing coordinate pressure" ; - string lev:units = "hybrid_sigma_pressure" ; - string lev:positive = "down" ; - string lev:A_var = "hyam" ; - string lev:B_var = "hybm" ; - string lev:P0_var = "P0" ; - string lev:PS_var = "PS" ; - string lev:bounds = "ilev" ; - float lon_T42(lon_T42) ; - float lat_T42(lat_T42) ; - float rlev(rlev) ; - string rlev:purpose = "Monotonically decreasing coordinate pressure" ; - float lon(lon) ; - double time(time) ; - float lsmlev(lsmlev) ; - string lsmlev:purpose = "Homebrew level coordinate for LSM" ; - string lsmlev:long_name = "Soil depth" ; - string lsmlev:units = "meter" ; - float wvl(wvl) ; - string wvl:long_name = "Wavelength" ; - string wvl:units = "meter" ; - hyam_t hyam ; - hybm_t hybm ; - float P0 ; - string P0:long_name = "reference pressure" ; - string P0:units = "pascal" ; - PS_t PS ; - string fl_dmn(fl_dmn) ; - string fl_dmn:long_name = "Character coordinate" ; - string fl_dmn:units = "[chr]" ; - int nbdate ; - string nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)" ; - date_t date ; - lon_wgt_t lon_wgt ; - msk_prt_mss_prt_t msk_prt_mss_prt ; - mss_val_t mss_val ; - float mss_val_scl ; - string mss_val_scl:long_name = "scalar missing value" ; - mss_val_scl:missing_value = 1.e+36f ; - mss_val_fst_t mss_val_fst ; - fll_val_t fll_val ; - no_mss_val_t no_mss_val ; - val_one_mss_t val_one_mss ; - short pck ; - string pck:long_name = "Packed scalar variable" ; - string pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d." ; - pck:scale_factor = 2. ; - pck:add_offset = 1. ; - pck_arr_t pck_arr ; - double upk ; - string upk:long_name = "Unpacked scalar variable" ; - string upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq)." ; - upk_arr_t upk_arr ; - int val_one_int ; - string val_one_int:long_name = "scalar equal to 1" ; - val_one_int:missing_value = -99 ; - val_one_one_int_t val_one_one_int ; - val_max_max_sht_t val_max_max_sht ; - val_one_mss_int_t val_one_mss_int ; - float val_half ; - string val_half:long_name = "Scalar with value 0.5" ; - val_half:missing_value = 1.e+36f ; - val_half_half_t val_half_half ; - wgt_one_t wgt_one ; - mss_val_all_t mss_val_all ; - float scalar_var ; - string scalar_var:long_name = "scalar variable" ; - string scalar_var:units = "Fraction" ; - float float_var ; - string float_var:long_name = "float" ; - double double_var ; - string double_var:long_name = "double" ; - double double_var2 ; - string double_var2:long_name = "double" ; - double_var2:missing_value = 1.e+36 ; - int int_var ; - string int_var:long_name = "int" ; - short short_var ; - string short_var:long_name = "short" ; - string char_var ; - string char_var:long_name = "char" ; - string char_var_space ; - string char_var_space:long_name = "Character variable with whitespace on ends" ; - string char_var_nul ; - string char_var_nul:long_name = "Character variable containing one NUL" ; - char_var_multinul_t char_var_multinul ; - string fl_nm(char_dmn_lng) ; - string fl_nm:long_name = "Variable contains a file name" ; - string fl_nm_arr(fl_dmn, char_dmn_lng) ; - string fl_nm_arr:long_name = "Variable that contains a short array of file names" ; - string fl_nm_arr:units = "[sng]" ; - string non_nul_trm_char_one_dmn(char_dmn_sml) ; - string non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated" ; - string non_nul_trm_char_one_dmn:units = "[chr]" ; - string non_nul_trm_char_two_dmn(fl_dmn, char_dmn_sml) ; - string non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated" ; - string non_nul_trm_char_two_dmn:units = "[chr]" ; - ubyte byte_var ; - string byte_var:long_name = "byte" ; - float zero ; - string zero:long_name = "zero" ; - float one ; - string one:long_name = "one" ; - float two ; - string two:long_name = "two" ; - double e_dbl ; - string e_dbl:long_name = "e, base of the natural logarithm" ; - float e_flt ; - string e_flt:long_name = "e, base of the natural logarithm" ; - float three ; - string three:long_name = "three" ; - float four ; - string four:long_name = "four" ; - float negative_one ; - string negative_one:long_name = "negative one" ; - lev_var_t lev_var ; - lev_wgt_t lev_wgt ; - float g ; - string g:long_name = "g" ; - z_t z ; - rz_t rz ; - float one_dmn_var(bnd) ; - float att_var ; - att_var:byte_att = 0UB ; - string att_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - att_var:short_att = 37s ; - att_var:int_att = 73 ; - att_var:float_att = 73.f, 72.f, 71.f ; - att_var:double_att = 73. ; - int bnd_var(lev, bnd) ; - bnd_var:byte_att = 0UB ; - string bnd_var:char_att = "Sentence one.\\012Sentence two.\\012" ; - bnd_var:short_att = 37s ; - bnd_var:int_att = 73 ; - bnd_var:float_att = 73.f ; - bnd_var:double_att = 73. ; - three_dmn_var_t three_dmn_var ; - three_dmn_var_crd_t three_dmn_var_crd ; - prs_sfc_t prs_sfc ; - two_dmn_var_t two_dmn_var ; - mask_t mask ; - ORO_t ORO ; - weight_t weight ; - gw_t gw ; - gw_T42_t gw_T42 ; - rec_var_flt_t rec_var_flt ; - rec_var_dbl_t rec_var_dbl ; - one_dmn_rec_var_t one_dmn_rec_var ; - tpt_t tpt ; - rec_var_dbl_mss_val_dbl_upk_t rec_var_dbl_mss_val_dbl_upk ; - rec_var_dbl_mss_val_dbl_pck_t rec_var_dbl_mss_val_dbl_pck ; - rec_var_flt_mss_val_flt_t rec_var_flt_mss_val_flt ; - rec_var_flt_pck_t rec_var_flt_pck ; - rec_var_dbl_pck_t rec_var_dbl_pck ; - rec_var_flt_mss_val_dbl_t rec_var_flt_mss_val_dbl ; - rec_var_flt_mss_val_int_t rec_var_flt_mss_val_int ; - rec_var_int_mss_val_int_t rec_var_int_mss_val_int ; - rec_var_int_mss_val_flt_t rec_var_int_mss_val_flt ; - rec_var_int_mss_val_dbl_t rec_var_int_mss_val_dbl ; - rec_var_dbl_mss_val_dbl_pck_lng_t rec_var_dbl_mss_val_dbl_pck_lng ; - one_dmn_rec_var_sng_t one_dmn_rec_var_sng ; - time_lon_t time_lon ; - two_dmn_rec_var_sng_t two_dmn_rec_var_sng ; - two_dmn_rec_var_t two_dmn_rec_var ; - three_dmn_rec_var_t three_dmn_rec_var ; - three_dmn_var_dbl_t three_dmn_var_dbl ; - three_dmn_var_int_t three_dmn_var_int ; - three_dmn_var_sht_t three_dmn_var_sht ; - four_dmn_rec_var_t four_dmn_rec_var ; - double time_udunits(time_udunits) ; - string time_udunits:units = "hours since 1900-01-01 00:00:0.0" ; - string time_udunits:delta_t = "0000-00-00 06:00:0.0" ; - u_t u ; - v_t v ; - -// global attributes: - string :Conventions = "NCAR-CSM" ; - string :history = "History global attribute.\\012" ; - :julian_day = 200000.04 ; -data: - - lat = -90, 90 ; - - lat_var = {{1, 2}, {-90, 90}} ; - - lat_wgt = {{1, 2}, {-90, 90}} ; - - lev = 100, 500, 1000 ; - - lon_T42 = 0, 2.8125, 5.625, 8.4375, 11.25, 14.0625, 16.875, 19.6875, 22.5, - 25.3125, 28.125, 30.9375, 33.75, 36.5625, 39.375, 42.1875, 45, 47.8125, - 50.625, 53.4375, 56.25, 59.0625, 61.875, 64.6875, 67.5, 70.3125, 73.125, - 75.9375, 78.75, 81.5625, 84.375, 87.1875, 90, 92.8125, 95.625, 98.4375, - 101.25, 104.0625, 106.875, 109.6875, 112.5, 115.3125, 118.125, 120.9375, - 123.75, 126.5625, 129.375, 132.1875, 135, 137.8125, 140.625, 143.4375, - 146.25, 149.0625, 151.875, 154.6875, 157.5, 160.3125, 163.125, 165.9375, - 168.75, 171.5625, 174.375, 177.1875, 180, 182.8125, 185.625, 188.4375, - 191.25, 194.0625, 196.875, 199.6875, 202.5, 205.3125, 208.125, 210.9375, - 213.75, 216.5625, 219.375, 222.1875, 225, 227.8125, 230.625, 233.4375, - 236.25, 239.0625, 241.875, 244.6875, 247.5, 250.3125, 253.125, 255.9375, - 258.75, 261.5625, 264.375, 267.1875, 270, 272.8125, 275.625, 278.4375, - 281.25, 284.0625, 286.875, 289.6875, 292.5, 295.3125, 298.125, 300.9375, - 303.75, 306.5625, 309.375, 312.1875, 315, 317.8125, 320.625, 323.4375, - 326.25, 329.0625, 331.875, 334.6875, 337.5, 340.3125, 343.125, 345.9375, - 348.75, 351.5625, 354.375, 357.1875 ; - - lat_T42 = -88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, - -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, - -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, - -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, - -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, - -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, - 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, - 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, - 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, - 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009 ; - - rlev = 1000, 500, 100 ; - - lon = 0, 90, 180, 270 ; - - time = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - lsmlev = 0.05, 0.1, 0.2, 0.5, 1, 3 ; - - wvl = 5e-07, 1e-06 ; - - hyam = {{0.0802583, 0.0438226, 0}, {100, 500, 1000}} ; - - hybm = {{0.0187849, 0.457453, 0.992528}, {100, 500, 1000}} ; - - P0 = 100000 ; - - PS = - {{101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325, 101325}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - fl_dmn = "a", "b", "3" ; - - nbdate = 640312 ; - - date = - {{640312, 640313, 640314, 640315, 640316, 640317, 640318, 640319, 640320, 640321}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - lon_wgt = {{0.347855, 0.652145, 0.652145, 0.347855}, {0, 90, 180, 270}} ; - - msk_prt_mss_prt = {{0.5, 1e+36, 1.5, 1e+36}, {0, 90, 180, 270}} ; - - mss_val = {{73, 1e+36, 73, 1e+36}, {0, 90, 180, 270}} ; - - mss_val_scl = 1e+36 ; - - mss_val_fst = {{-999, 73, -999, 73}, {0, 90, 180, 270}} ; - - fll_val = {{73, -999, 73, -999}, {0, 90, 180, 270}} ; - - no_mss_val = {{73, 1e+36, 73, 1e+36}, {0, 90, 180, 270}} ; - - val_one_mss = {{1, 1e+36}, {-90, 90}} ; - - pck = 1 ; - - pck_arr = {{-32767, 0, 1, 32767}, {0, 90, 180, 270}} ; - - upk = 3 ; - - upk_arr = {{-32767, 0, 1, 32767}, {0, 90, 180, 270}} ; - - val_one_int = 1 ; - - val_one_one_int = {{1, 1}, {-90, 90}} ; - - val_max_max_sht = {{17000, 17000}, {-90, 90}} ; - - val_one_mss_int = {{1, -99}, {-90, 90}} ; - - val_half = 0.5 ; - - val_half_half = {{0.5, 0.5}, {-90, 90}} ; - - wgt_one = {{1, 1}, {-90, 90}} ; - - mss_val_all = {{1e+36, 1e+36, 1e+36, 1e+36}, {0, 90, 180, 270}} ; - - scalar_var = 10 ; - - float_var = 10 ; - - double_var = 10 ; - - double_var2 = 10 ; - - int_var = 10 ; - - short_var = 10 ; - - char_var = "z" ; - - char_var_space = " " ; - - char_var_nul = _ ; - - char_var_multinul = {{"", " -", ""}, {100, 500, 1000}} ; - - fl_nm = "/", "h", "o", "m", "e", "/", "z", "e", "n", "d", "e", "r", "/", - "n", "c", "o", "/", "d", "a", "t", "a", "/", "i", "n", ".", "c", "d", - "l", _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _ ; - - fl_nm_arr = - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "1", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "2", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, - "/", "d", "a", "t", "a", "/", "z", "e", "n", "d", "e", "r", "/", "d", "s", - "t", "c", "c", "m", "0", "4", "/", "d", "s", "t", "c", "c", "m", "0", - "4", "_", "8", "5", "8", "9", "_", "0", "3", ".", "n", "c", _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _, _, _ ; - - non_nul_trm_char_one_dmn = "a", "b", _, _ ; - - non_nul_trm_char_two_dmn = - "a", "b", "c", "d", - "e", "f", "g", "h", - "i", "j", "k", "m" ; - - byte_var = 122 ; - - zero = 0 ; - - one = 1 ; - - two = 2 ; - - e_dbl = 2.71828182846 ; - - e_flt = 2.718282 ; - - three = 3 ; - - four = 4 ; - - negative_one = -1 ; - - lev_var = {{100, 500, 1000}, {100, 500, 1000}} ; - - lev_wgt = {{10, 2, 1}, {100, 500, 1000}} ; - - g = 9.8 ; - - z = {{17000, 5000, 0}, {100, 500, 1000}} ; - - rz = {{0, 5000, 17000}, {1000, 500, 100}} ; - - one_dmn_var = 1, 10 ; - - att_var = 10 ; - - bnd_var = - 1, 2, - 3, 4, - 5, 6 ; - - three_dmn_var = - {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, {-90, 90}, {100, 500, 1000}, {0, 90, 180, 270}} ; - - three_dmn_var_crd = - {{0, 1, 2, 3, 12, 13, 14, 15, 4, 5, 6, 7, 16, 17, 18, 19, 8, 9, 10, 11, 20, 21, 22, 23}, {100, 500, 1000}, {-90, 90}, {0, 90, 180, 270}} ; - - prs_sfc = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - two_dmn_var = - {{1.5, 5.5, 9.5, 13.5, 17.5, 21.5}, {-90, 90}, {100, 500, 1000}} ; - - mask = {{0, 1, 0, 0, 1, 1, 0, 2}, {-90, 90}, {0, 90, 180, 270}} ; - - ORO = {{1, 1, 1, 1, 1, 1, 1, 1}, {-90, 90}, {0, 90, 180, 270}} ; - - weight = {{10, 10}, {-90, 90}} ; - - gw = {{10, 10}, {-90, 90}} ; - - gw_T42 = - {{-87.8638, -85.09653, -82.31291, -79.5256, -76.7369, -73.94752, -71.15775, -68.36776, -65.57761, -62.78735, -59.99702, -57.20663, -54.4162, -51.62573, -48.83524, -46.04473, -43.2542, -40.46365, -37.67309, -34.88252, -32.09195, -29.30136, -26.51077, -23.72017, -20.92957, -18.13897, -15.34836, -12.55776, -9.767146, -6.976534, -4.185921, -1.395307, 1.395307, 4.185921, 6.976534, 9.767146, 12.55776, 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09195, 34.88252, 37.67309, 40.46365, 43.2542, 46.04473, 48.83524, 51.62573, 54.4162, 57.20663, 59.99702, 62.78735, 65.57761, 68.36776, 71.15775, 73.94752, 76.7369, 79.5256, 82.31291, 85.09653, 87.8638}, {-88.24009, -85.09245, -82.31198, -79.52525, -76.73673, -73.94742, -71.1577, -68.36772, -65.57758, -62.78733, -59.99701, -57.20662, -54.41619, -51.62573, -48.83524, -46.04472, -43.25419, -40.46365, -37.67309, -34.88252, -32.09194, -29.30136, -26.51077, -23.72017, -20.92957, -18.13897, -15.34836, -12.55776, -9.767145, -6.976533, -4.185921, -1.395307, 1.395307, 4.185921, 6.976533, 9.767145, 12.55776, 15.34836, 18.13897, 20.92957, 23.72017, 26.51077, 29.30136, 32.09194, 34.88252, 37.67309, 40.46365, 43.25419, 46.04472, 48.83524, 51.62573, 54.41619, 57.20662, 59.99701, 62.78733, 65.57758, 68.36772, 71.1577, 73.94742, 76.73673, 79.52525, 82.31198, 85.09245, 88.24009}} ; - - rec_var_flt = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - one_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - tpt = - {{273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 273.1}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_upk = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_pck = - {{-999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_flt = - {{1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_pck = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_pck = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_dbl = - {{1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_flt_mss_val_int = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_int = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_flt = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_int_mss_val_dbl = - {{-999, 2, 3, 4, 5, 6, 7, 8, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - rec_var_dbl_mss_val_dbl_pck_lng = - {{-999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - one_dmn_rec_var_sng = - {{"H", "e", "l", "l", "o", " ", "W", "o", "r", ""}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - time_lon = - {{0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270, 0, 90, 180, 270}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {0, 90, 180, 270}} ; - - two_dmn_rec_var_sng = - {{"a", "b", "c", "b", "c", "d", "c", "d", "e", "d", "e", "f", "e", "f", "g", "f", "g", "h", "g", "h", "i", "h", "i", "j", "j", "k", "l", "k", "l", "m"}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {100, 500, 1000}} ; - - two_dmn_rec_var = - {{1, 2, 3, 1, 2.1, 3, 1, 2.2, 3, 1, 2.3, 3, 1, 2.4, 3, 1, 2.5, 3, 1, 2.6, 3, 1, 2.7, 3, 1, 2.8, 3, 1, 2.9, 3}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {100, 500, 1000}} ; - - three_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_dbl = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, -99, -99, -99, -99, -99, -99, -99, -99, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, 74, 75, 76, 77, 78, 79, -99}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_int = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -99, -99, -99, -99, -99, -99, -99, -99, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -99, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -99, 58, 59, 60, -99, 62, 63, 64, 65, -99, 67, 68, 69, 70, 71, 72, -99, 74, 75, -99, 77, 78, 79, 80}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - three_dmn_var_sht = - {{1, 2, 3, 4, 5, 6, 7, 8, -99, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -99, 34, 35, -99, 37, 38, 39, 40, 41, 42, 43, 44, -99, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, -99, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, -99, -99, -99, -99, -99, -99, -99, -99}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {0, 90, 180, 270}} ; - - four_dmn_rec_var = - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {-90, 90}, {100, 500, 1000}, {0, 90, 180, 270}} ; - - time_udunits = 876012, 876018, 876024 ; - - u = {{1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; - - v = {{0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_v.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_v.nc.dmp deleted file mode 100644 index d606286abe9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/in_v.nc.dmp +++ /dev/null @@ -1,16 +0,0 @@ -netcdf in_v { -dimensions: - time = 10 ; -variables: - float v(time) ; - string v:long_name = "Meridional wind speed" ; - string v:units = "meter second-1" ; - -// global attributes: - string :Conventions = "NCAR-CSM" ; - string :history = "History global attribute.\\012" ; - :julian_day = 200000.04 ; -data: - - v = 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ingrid.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ingrid.dmp deleted file mode 100644 index 51351d81511..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/ingrid.dmp +++ /dev/null @@ -1,33 +0,0 @@ -netcdf ingrid { -types: - compound v3H_t { - float V3H(35, 44) ; - int ISTA(35) ; - float IZ(44) ; - }; // v3H_t -dimensions: - ISTA = 35 ; - IZ = 44 ; -variables: - int ISTA(ISTA) ; - float IZ(IZ) ; - v3H_t v3H ; -data: - - ISTA = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, - 63488, 65536, 67584, 69632 ; - - IZ = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, - 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, - 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, - 0.4077604, 0.4168708 ; - - v3H = - {{0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708, 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, 0.7578425, 0.764329, 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, 0.9580159, 0.960835, 0.9635582, 0.966185, 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, 0.8201039, 0.8143409, 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, 0.4982616, 0.4895666, 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, 0.09146464, 0.08150215, 0.07153151, 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, -0.3601301, -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, -0.7162456, -0.7231881, -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, -0.9930918, -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, -0.8537708, -0.8485217, -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, -0.5506855, -0.542311, -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, 0.3020236, 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, 0.6793047, 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, 0.9271804, 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, 0.9984314, 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, 0.601021, 0.5929987, 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, 0.2033498, 0.1935487, 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, -0.2330589, -0.2427717, -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, -0.6250706, -0.6328449, -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, -0.8980085, -0.9023633, -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, -0.9071119, -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, -0.6490771, -0.6414375, -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, -0.2632318, -0.2535715, -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, 0.1727583, 0.1825991, 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, 0.5758385, 0.5839852, 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, 0.8692234, 0.8741241, 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, 0.9970241, 0.9977452, 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, 0.6946716, 0.6874437, 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, 0.3221155, 0.3126326}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, 63488, 65536, 67584, 69632}, {0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/nestedDAS.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/nestedDAS.dmp deleted file mode 100644 index 8681434e6e2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/nestedDAS.dmp +++ /dev/null @@ -1,12 +0,0 @@ -netcdf nestedDAS { -variables: - ubyte b31 ; - string b32 ; - string b32:billy = "Bob is my real name" ; - string b32:Robert = "Really wants to be called Billy" ; -data: - - b31 = 0 ; - - b32 = "This is a data test string (pass 0)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/pbug0001b.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/pbug0001b.dmp deleted file mode 100644 index c0f98370fbf..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/pbug0001b.dmp +++ /dev/null @@ -1,38 +0,0 @@ -netcdf pbug0001b { -types: - compound \3H_t { - float \3H(35, 44) ; - int ISTA(35) ; - float IZ(44) ; - }; // \3H_t -dimensions: - ISTA = 35 ; - IZ = 44 ; -variables: - int ISTA(ISTA) ; - float IZ(IZ) ; - \3H_t \3H ; - -// global attributes: - string :bs5 = "foo\\foo\\" ; - string :dsp_ing_tiros_ourid = "NO11****C\\224\\2705>B\\217\\" ; - :bung = 0.f, 1.f, 2.3f, -2.23456f ; -data: - - ISTA = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, - 63488, 65536, 67584, 69632 ; - - IZ = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, - 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, - 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, - 0.4077604, 0.4168708 ; - - \3H = - {{0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708, 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, 0.7578425, 0.764329, 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, 0.9580159, 0.960835, 0.9635582, 0.966185, 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, 0.8201039, 0.8143409, 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, 0.4982616, 0.4895666, 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, 0.09146464, 0.08150215, 0.07153151, 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, -0.3601301, -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, -0.7162456, -0.7231881, -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, -0.9930918, -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, -0.8537708, -0.8485217, -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, -0.5506855, -0.542311, -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, 0.3020236, 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, 0.6793047, 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, 0.9271804, 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, 0.9984314, 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, 0.601021, 0.5929987, 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, 0.2033498, 0.1935487, 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, -0.2330589, -0.2427717, -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, -0.6250706, -0.6328449, -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, -0.8980085, -0.9023633, -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, -0.9071119, -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, -0.6490771, -0.6414375, -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, -0.2632318, -0.2535715, -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, 0.1727583, 0.1825991, 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, 0.5758385, 0.5839852, 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, 0.8692234, 0.8741241, 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, 0.9970241, 0.9977452, 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, 0.6946716, 0.6874437, 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, 0.3221155, 0.3126326}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, 63488, 65536, 67584, 69632}, {0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/saco1.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/saco1.nc.dmp deleted file mode 100644 index e6be73a5214..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/saco1.nc.dmp +++ /dev/null @@ -1,122 +0,0 @@ -netcdf saco1 { -types: - compound time_t { - double time(805) ; - double height(805) ; - }; // time_t - compound river_discharge_t { - double river_discharge(805) ; - double height(805) ; - }; // river_discharge_t -dimensions: - height = 805 ; - lat = 1 ; - lon = 1 ; -variables: - double lat(lat) ; - string lat:longname = "latitude" ; - string lat:units = "degrees_north" ; - double lon(lon) ; - string lon:longname = "longitude" ; - lon:modulo = 360.f ; - string lon:units = "degrees_east" ; - double height(height) ; - string height:longname = "gage height" ; - string height:units = "meters" ; - string height:positive = "up" ; - string height:C_format = "%.2f" ; - height:minimum = 2.41 ; - height:maximum = 3.74 ; - time_t time ; - river_discharge_t river_discharge ; - -// global attributes: - string :Conventions = "GDT 1.3" ; - string :history = "Created Thu Aug 17 11:10:11 2000 by jevans" ; - string :institution = "School of Marine Sciences, University of Maine" ; - string :production = "gage height observation" ; - :starting_julian_day_number = 2451762.67708333 ; - string :starting_julian_day_str = "Sun Aug 6 04:15:00 2000" ; - :ending_julian_day_number = 2451771.05208333 ; - string :ending_julian_day_str = "Mon Aug 14 13:15:00 2000" ; - string :time_zone = "UTC" ; -data: - - lat = 43.8081 ; - - lon = -70.7814 ; - - height = 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.08, 3.08, 3.08, - 3.07, 3.07, 3.06, 3.06, 3.05, 3.05, 3.04, 3.04, 3.04, 3.03, 3.03, 3.02, - 3.02, 3.02, 3.01, 3.01, 3, 3, 2.99, 2.99, 2.98, 2.97, 2.97, 2.95, 2.94, - 2.93, 2.92, 2.91, 2.91, 2.9, 2.9, 2.89, 2.89, 2.88, 2.88, 2.87, 2.86, - 2.84, 2.82, 2.81, 2.8, 2.79, 2.8, 2.8, 2.8, 2.81, 2.81, 2.82, 2.82, 2.83, - 2.83, 2.83, 2.83, 2.83, 2.83, 2.83, 2.84, 2.83, 2.83, 2.84, 2.84, 2.84, - 2.83, 2.84, 2.83, 2.84, 2.84, 2.88, 2.97, 3.1, 3.24, 3.36, 3.47, 3.54, - 3.6, 3.65, 3.68, 3.71, 3.73, 3.69, 3.61, 3.52, 3.42, 3.33, 3.26, 3.19, - 3.13, 3.08, 3.04, 3.02, 2.99, 2.97, 2.95, 2.94, 2.93, 2.92, 2.91, 2.9, - 2.9, 2.9, 2.89, 2.89, 2.89, 2.89, 2.89, 2.89, 2.88, 2.88, 2.88, 2.88, - 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, - 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, - 2.88, 2.88, 2.88, 2.88, 2.88, 2.87, 2.86, 2.86, 2.85, 2.84, 2.86, 2.95, - 3.06, 3.18, 3.29, 3.38, 3.45, 3.5, 3.55, 3.57, 3.59, 3.61, 3.62, 3.63, - 3.64, 3.64, 3.65, 3.65, 3.65, 3.66, 3.66, 3.66, 3.66, 3.65, 3.61, 3.53, - 3.45, 3.36, 3.29, 3.22, 3.16, 3.11, 3.08, 3.04, 3.02, 3, 2.98, 2.97, - 2.96, 2.94, 2.94, 2.93, 2.93, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.92, - 2.91, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.92, - 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.9, 2.89, 2.88, 2.87, - 2.86, 2.84, 2.82, 2.81, 2.79, 2.78, 2.76, 2.75, 2.75, 2.74, 2.72, 2.72, - 2.71, 2.7, 2.7, 2.69, 2.7, 2.7, 2.7, 2.71, 2.71, 2.73, 2.81, 2.95, 3.09, - 3.22, 3.32, 3.4, 3.47, 3.51, 3.55, 3.58, 3.6, 3.62, 3.64, 3.67, 3.69, - 3.68, 3.61, 3.51, 3.41, 3.31, 3.21, 3.13, 3.06, 3.01, 2.97, 2.94, 2.93, - 2.92, 2.91, 2.9, 2.89, 2.89, 2.89, 2.89, 2.88, 2.87, 2.85, 2.82, 2.8, - 2.78, 2.76, 2.74, 2.72, 2.69, 2.66, 2.63, 2.6, 2.57, 2.55, 2.53, 2.52, - 2.5, 2.48, 2.48, 2.47, 2.46, 2.46, 2.45, 2.45, 2.44, 2.44, 2.44, 2.44, - 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.42, 2.42, - 2.42, 2.42, 2.42, 2.42, 2.43, 2.42, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, - 2.44, 2.46, 2.49, 2.53, 2.58, 2.62, 2.65, 2.69, 2.73, 2.82, 2.96, 3.11, - 3.25, 3.38, 3.48, 3.55, 3.6, 3.65, 3.67, 3.7, 3.72, 3.73, 3.74, 3.73, - 3.67, 3.58, 3.48, 3.38, 3.29, 3.21, 3.14, 3.08, 3.03, 2.99, 2.96, 2.93, - 2.91, 2.89, 2.87, 2.86, 2.85, 2.84, 2.83, 2.81, 2.8, 2.79, 2.77, 2.76, - 2.75, 2.74, 2.73, 2.73, 2.72, 2.72, 2.72, 2.71, 2.71, 2.71, 2.7, 2.7, - 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.69, 2.67, 2.65, 2.63, - 2.61, 2.59, 2.58, 2.56, 2.55, 2.55, 2.55, 2.55, 2.55, 2.54, 2.54, 2.56, - 2.59, 2.62, 2.65, 2.68, 2.71, 2.73, 2.74, 2.76, 2.77, 2.78, 2.79, 2.8, - 2.8, 2.8, 2.8, 2.82, 2.88, 2.98, 3.1, 3.22, 3.3, 3.38, 3.44, 3.49, 3.52, - 3.54, 3.56, 3.58, 3.59, 3.59, 3.6, 3.61, 3.61, 3.61, 3.61, 3.58, 3.52, - 3.44, 3.36, 3.29, 3.22, 3.15, 3.08, 3.02, 2.97, 2.92, 2.89, 2.86, 2.83, - 2.81, 2.79, 2.77, 2.76, 2.75, 2.74, 2.74, 2.73, 2.73, 2.72, 2.72, 2.7, - 2.68, 2.65, 2.62, 2.6, 2.57, 2.54, 2.53, 2.5, 2.49, 2.48, 2.46, 2.45, - 2.45, 2.44, 2.44, 2.43, 2.43, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.41, - 2.41, 2.41, 2.41, 2.42, 2.43, 2.45, 2.47, 2.5, 2.52, 2.53, 2.55, 2.56, - 2.57, 2.58, 2.59, 2.59, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.63, 2.71, - 2.85, 3.01, 3.16, 3.28, 3.37, 3.44, 3.5, 3.54, 3.57, 3.59, 3.61, 3.62, - 3.63, 3.64, 3.64, 3.64, 3.64, 3.64, 3.63, 3.63, 3.62, 3.61, 3.55, 3.46, - 3.35, 3.25, 3.16, 3.08, 3.01, 2.95, 2.9, 2.85, 2.82, 2.78, 2.76, 2.73, - 2.71, 2.69, 2.68, 2.67, 2.66, 2.65, 2.64, 2.64, 2.63, 2.63, 2.63, 2.62, - 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.61, 2.61, 2.61, 2.62, 2.61, - 2.61, 2.61, 2.61, 2.62, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, - 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.64, 2.73, - 2.86, 3.01, 3.14, 3.26, 3.34, 3.41, 3.45, 3.49, 3.52, 3.53, 3.55, 3.51, - 3.44, 3.35, 3.25, 3.17, 3.08, 3.01, 2.96, 2.9, 2.86, 2.83, 2.8, 2.78, - 2.76, 2.74, 2.73, 2.72, 2.71, 2.7, 2.7, 2.69, 2.69, 2.69, 2.68, 2.68, - 2.68, 2.68, 2.67, 2.66, 2.64, 2.63, 2.61, 2.6, 2.59, 2.58, 2.57, 2.56, - 2.56, 2.55, 2.55, 2.55, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.53, - 2.54, 2.54, 2.55, 2.56, 2.56, 2.57, 2.57, 2.58, 2.58, 2.59, 2.59, 2.59, - 2.59, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, - 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, - 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, - 2.6, 2.6, 2.61, 2.62, 2.63, 2.63, 2.64, 2.64, 2.64, 2.64, 2.65, 2.65, - 2.64, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, - 2.65, 2.65, 2.65, 2.65, 2.64, 2.64, 2.63, 2.62, 2.62, 2.62, 2.61, 2.61, - 2.61, 2.61, 2.61, 2.61, 2.61, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, - 2.6, 2.6, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.61, 2.62, 2.62, 2.62, 2.62, - 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.63, - 2.63 ; - - time = - {{0, 0.0104166669771075, 0.0208333334885538, 0.03125, 0.0416666669771075, 0.0520833334885538, 0.0625, 0.0729166669771075, 0.0833333334885538, 0.09375, 0.104166666977108, 0.114583333488554, 0.125, 0.135416666977108, 0.145833333488554, 0.15625, 0.166666666977108, 0.177083333488554, 0.1875, 0.197916666977108, 0.208333333488554, 0.21875, 0.229166666977108, 0.239583333488554, 0.25, 0.260416666977108, 0.270833333488554, 0.28125, 0.291666666977108, 0.302083333488554, 0.3125, 0.322916666977108, 0.333333333488554, 0.34375, 0.354166666977108, 0.364583333488554, 0.375, 0.385416666977108, 0.395833333488554, 0.40625, 0.416666666977108, 0.427083333488554, 0.4375, 0.447916666977108, 0.458333333488554, 0.46875, 0.479166666977108, 0.489583333488554, 0.5, 0.510416666977108, 0.520833333488554, 0.53125, 0.541666666977108, 0.552083333488554, 0.5625, 0.572916666977108, 0.583333333488554, 0.59375, 0.604166666977108, 0.614583333488554, 0.625, 0.635416666977108, 0.645833333488554, 0.65625, 0.666666666977108, 0.677083333488554, 0.6875, 0.697916666977108, 0.708333333488554, 0.71875, 0.729166666977108, 0.739583333488554, 0.75, 0.760416666977108, 0.770833333488554, 0.78125, 0.791666666977108, 0.802083333488554, 0.8125, 0.822916666977108, 0.833333333488554, 0.84375, 0.854166666977108, 0.864583333488554, 0.875, 0.885416666977108, 0.895833333488554, 0.90625, 0.916666666977108, 0.927083333488554, 0.9375, 0.947916666977108, 0.958333333488554, 0.96875, 0.979166666977108, 0.989583333488554, 1, 1.01041666697711, 1.02083333348855, 1.03125, 1.04166666697711, 1.05208333348855, 1.0625, 1.07291666697711, 1.08333333348855, 1.09375, 1.10416666697711, 1.11458333348855, 1.125, 1.13541666697711, 1.14583333348855, 1.15625, 1.16666666697711, 1.17708333348855, 1.1875, 1.19791666697711, 1.20833333348855, 1.21875, 1.22916666697711, 1.23958333348855, 1.25, 1.26041666697711, 1.27083333348855, 1.28125, 1.29166666697711, 1.30208333348855, 1.3125, 1.32291666697711, 1.33333333348855, 1.34375, 1.35416666697711, 1.36458333348855, 1.375, 1.38541666697711, 1.39583333348855, 1.40625, 1.41666666697711, 1.42708333348855, 1.4375, 1.44791666697711, 1.45833333348855, 1.46875, 1.47916666697711, 1.48958333348855, 1.5, 1.51041666697711, 1.52083333348855, 1.53125, 1.54166666697711, 1.55208333348855, 1.5625, 1.57291666697711, 1.58333333348855, 1.59375, 1.60416666697711, 1.61458333348855, 1.625, 1.63541666697711, 1.64583333348855, 1.65625, 1.66666666697711, 1.67708333348855, 1.6875, 1.69791666697711, 1.70833333348855, 1.71875, 1.72916666697711, 1.73958333348855, 1.75, 1.76041666697711, 1.77083333348855, 1.78125, 1.79166666697711, 1.80208333348855, 1.8125, 1.82291666697711, 1.83333333348855, 1.84375, 1.85416666697711, 1.86458333348855, 1.875, 1.88541666697711, 1.89583333348855, 1.90625, 1.91666666697711, 1.92708333348855, 1.9375, 1.94791666697711, 1.95833333348855, 1.96875, 1.97916666697711, 1.98958333348855, 2, 2.01041666697711, 2.02083333348855, 2.03125, 2.04166666697711, 2.05208333348855, 2.0625, 2.07291666697711, 2.08333333348855, 2.09375, 2.10416666697711, 2.11458333348855, 2.125, 2.13541666697711, 2.14583333348855, 2.15625, 2.16666666697711, 2.17708333348855, 2.1875, 2.19791666697711, 2.20833333348855, 2.21875, 2.22916666697711, 2.23958333348855, 2.25, 2.26041666697711, 2.27083333348855, 2.28125, 2.29166666697711, 2.30208333348855, 2.3125, 2.32291666697711, 2.33333333348855, 2.34375, 2.35416666697711, 2.36458333348855, 2.375, 2.38541666697711, 2.39583333348855, 2.40625, 2.41666666697711, 2.42708333348855, 2.4375, 2.44791666697711, 2.45833333348855, 2.46875, 2.47916666697711, 2.48958333348855, 2.5, 2.51041666697711, 2.52083333348855, 2.53125, 2.54166666697711, 2.55208333348855, 2.5625, 2.57291666697711, 2.58333333348855, 2.59375, 2.60416666697711, 2.61458333348855, 2.625, 2.63541666697711, 2.64583333348855, 2.65625, 2.66666666697711, 2.67708333348855, 2.6875, 2.69791666697711, 2.70833333348855, 2.71875, 2.72916666697711, 2.73958333348855, 2.75, 2.76041666697711, 2.77083333348855, 2.78125, 2.79166666697711, 2.80208333348855, 2.8125, 2.82291666697711, 2.83333333348855, 2.84375, 2.85416666697711, 2.86458333348855, 2.875, 2.88541666697711, 2.89583333348855, 2.90625, 2.91666666697711, 2.92708333348855, 2.9375, 2.94791666697711, 2.95833333348855, 2.96875, 2.97916666697711, 2.98958333348855, 3, 3.01041666697711, 3.02083333348855, 3.03125, 3.04166666697711, 3.05208333348855, 3.0625, 3.07291666697711, 3.08333333348855, 3.09375, 3.10416666697711, 3.11458333348855, 3.125, 3.13541666697711, 3.14583333348855, 3.15625, 3.16666666697711, 3.17708333348855, 3.1875, 3.19791666697711, 3.20833333348855, 3.21875, 3.22916666697711, 3.23958333348855, 3.25, 3.26041666697711, 3.27083333348855, 3.28125, 3.29166666697711, 3.30208333348855, 3.3125, 3.32291666697711, 3.33333333348855, 3.34375, 3.35416666697711, 3.36458333348855, 3.375, 3.38541666697711, 3.39583333348855, 3.40625, 3.41666666697711, 3.42708333348855, 3.4375, 3.44791666697711, 3.45833333348855, 3.46875, 3.47916666697711, 3.48958333348855, 3.5, 3.51041666697711, 3.52083333348855, 3.53125, 3.54166666697711, 3.55208333348855, 3.5625, 3.57291666697711, 3.58333333348855, 3.59375, 3.60416666697711, 3.61458333348855, 3.625, 3.63541666697711, 3.64583333348855, 3.65625, 3.66666666697711, 3.67708333348855, 3.6875, 3.69791666697711, 3.70833333348855, 3.71875, 3.72916666697711, 3.73958333348855, 3.75, 3.76041666697711, 3.77083333348855, 3.78125, 3.79166666697711, 3.80208333348855, 3.8125, 3.82291666697711, 3.83333333348855, 3.84375, 3.85416666697711, 3.86458333348855, 3.875, 3.88541666697711, 3.89583333348855, 3.90625, 3.91666666697711, 3.92708333348855, 3.9375, 3.94791666697711, 3.95833333348855, 3.96875, 3.97916666697711, 3.98958333348855, 4, 4.01041666697711, 4.02083333348855, 4.03125, 4.04166666697711, 4.05208333348855, 4.0625, 4.07291666697711, 4.08333333348855, 4.09375, 4.10416666697711, 4.11458333348855, 4.125, 4.13541666697711, 4.14583333348855, 4.15625, 4.16666666697711, 4.17708333348855, 4.1875, 4.19791666697711, 4.20833333348855, 4.21875, 4.22916666697711, 4.23958333348855, 4.25, 4.26041666697711, 4.27083333348855, 4.28125, 4.29166666697711, 4.30208333348855, 4.3125, 4.32291666697711, 4.33333333348855, 4.34375, 4.35416666697711, 4.36458333348855, 4.375, 4.38541666697711, 4.39583333348855, 4.40625, 4.41666666697711, 4.42708333348855, 4.4375, 4.44791666697711, 4.45833333348855, 4.46875, 4.47916666697711, 4.48958333348855, 4.5, 4.51041666697711, 4.52083333348855, 4.53125, 4.54166666697711, 4.55208333348855, 4.5625, 4.57291666697711, 4.58333333348855, 4.59375, 4.60416666697711, 4.61458333348855, 4.625, 4.63541666697711, 4.64583333348855, 4.65625, 4.66666666697711, 4.67708333348855, 4.6875, 4.69791666697711, 4.70833333348855, 4.71875, 4.72916666697711, 4.73958333348855, 4.75, 4.76041666697711, 4.77083333348855, 4.78125, 4.79166666697711, 4.80208333348855, 4.8125, 4.82291666697711, 4.83333333348855, 4.84375, 4.85416666697711, 4.86458333348855, 4.875, 4.88541666697711, 4.89583333348855, 4.90625, 4.91666666697711, 4.92708333348855, 4.9375, 4.94791666697711, 4.95833333348855, 4.96875, 4.97916666697711, 4.98958333348855, 5, 5.01041666697711, 5.02083333348855, 5.03125, 5.04166666697711, 5.05208333348855, 5.0625, 5.07291666697711, 5.08333333348855, 5.09375, 5.10416666697711, 5.11458333348855, 5.125, 5.13541666697711, 5.14583333348855, 5.15625, 5.16666666697711, 5.17708333348855, 5.1875, 5.19791666697711, 5.20833333348855, 5.21875, 5.22916666697711, 5.23958333348855, 5.25, 5.26041666697711, 5.27083333348855, 5.28125, 5.29166666697711, 5.30208333348855, 5.3125, 5.32291666697711, 5.33333333348855, 5.34375, 5.35416666697711, 5.36458333348855, 5.375, 5.38541666697711, 5.39583333348855, 5.40625, 5.41666666697711, 5.42708333348855, 5.4375, 5.44791666697711, 5.45833333348855, 5.46875, 5.47916666697711, 5.48958333348855, 5.5, 5.51041666697711, 5.52083333348855, 5.53125, 5.54166666697711, 5.55208333348855, 5.5625, 5.57291666697711, 5.58333333348855, 5.59375, 5.60416666697711, 5.61458333348855, 5.625, 5.63541666697711, 5.64583333348855, 5.65625, 5.66666666697711, 5.67708333348855, 5.6875, 5.69791666697711, 5.70833333348855, 5.71875, 5.72916666697711, 5.73958333348855, 5.75, 5.76041666697711, 5.77083333348855, 5.78125, 5.79166666697711, 5.80208333348855, 5.8125, 5.82291666697711, 5.83333333348855, 5.84375, 5.85416666697711, 5.86458333348855, 5.875, 5.88541666697711, 5.89583333348855, 5.90625, 5.91666666697711, 5.92708333348855, 5.9375, 5.94791666697711, 5.95833333348855, 5.96875, 5.97916666697711, 5.98958333348855, 6, 6.01041666697711, 6.02083333348855, 6.03125, 6.04166666697711, 6.05208333348855, 6.0625, 6.07291666697711, 6.08333333348855, 6.09375, 6.10416666697711, 6.11458333348855, 6.125, 6.13541666697711, 6.14583333348855, 6.15625, 6.16666666697711, 6.17708333348855, 6.1875, 6.19791666697711, 6.20833333348855, 6.21875, 6.22916666697711, 6.23958333348855, 6.25, 6.26041666697711, 6.27083333348855, 6.28125, 6.29166666697711, 6.30208333348855, 6.3125, 6.32291666697711, 6.33333333348855, 6.34375, 6.35416666697711, 6.36458333348855, 6.375, 6.38541666697711, 6.39583333348855, 6.40625, 6.41666666697711, 6.42708333348855, 6.4375, 6.44791666697711, 6.45833333348855, 6.46875, 6.47916666697711, 6.48958333348855, 6.5, 6.51041666697711, 6.52083333348855, 6.53125, 6.54166666697711, 6.55208333348855, 6.5625, 6.57291666697711, 6.58333333348855, 6.59375, 6.60416666697711, 6.61458333348855, 6.625, 6.63541666697711, 6.64583333348855, 6.65625, 6.66666666697711, 6.67708333348855, 6.6875, 6.69791666697711, 6.70833333348855, 6.71875, 6.72916666697711, 6.73958333348855, 6.75, 6.76041666697711, 6.77083333348855, 6.78125, 6.79166666697711, 6.80208333348855, 6.8125, 6.82291666697711, 6.83333333348855, 6.84375, 6.85416666697711, 6.86458333348855, 6.875, 6.88541666697711, 6.89583333348855, 6.90625, 6.91666666697711, 6.92708333348855, 6.9375, 6.94791666697711, 6.95833333348855, 6.96875, 6.97916666697711, 6.98958333348855, 7, 7.01041666697711, 7.02083333348855, 7.03125, 7.04166666697711, 7.05208333348855, 7.0625, 7.07291666697711, 7.08333333348855, 7.09375, 7.10416666697711, 7.11458333348855, 7.125, 7.13541666697711, 7.14583333348855, 7.15625, 7.16666666697711, 7.17708333348855, 7.1875, 7.19791666697711, 7.20833333348855, 7.21875, 7.22916666697711, 7.23958333348855, 7.25, 7.26041666697711, 7.27083333348855, 7.28125, 7.29166666697711, 7.30208333348855, 7.3125, 7.32291666697711, 7.33333333348855, 7.34375, 7.35416666697711, 7.36458333348855, 7.375, 7.38541666697711, 7.39583333348855, 7.40625, 7.41666666697711, 7.42708333348855, 7.4375, 7.44791666697711, 7.45833333348855, 7.46875, 7.47916666697711, 7.48958333348855, 7.5, 7.51041666697711, 7.52083333348855, 7.53125, 7.54166666697711, 7.55208333348855, 7.5625, 7.57291666697711, 7.58333333348855, 7.59375, 7.60416666697711, 7.61458333348855, 7.625, 7.63541666697711, 7.64583333348855, 7.65625, 7.66666666697711, 7.67708333348855, 7.6875, 7.69791666697711, 7.70833333348855, 7.71875, 7.72916666697711, 7.73958333348855, 7.75, 7.76041666697711, 7.77083333348855, 7.78125, 7.79166666697711, 7.80208333348855, 7.8125, 7.82291666697711, 7.83333333348855, 7.84375, 7.85416666697711, 7.86458333348855, 7.875, 7.88541666697711, 7.89583333348855, 7.90625, 7.91666666697711, 7.92708333348855, 7.9375, 7.94791666697711, 7.95833333348855, 7.96875, 7.97916666697711, 7.98958333348855, 8, 8.01041666697711, 8.02083333348855, 8.03125, 8.04166666697711, 8.05208333348855, 8.0625, 8.07291666697711, 8.08333333348855, 8.09375, 8.10416666697711, 8.11458333348855, 8.125, 8.13541666697711, 8.14583333348855, 8.15625, 8.16666666697711, 8.17708333348855, 8.1875, 8.19791666697711, 8.20833333348855, 8.21875, 8.22916666697711, 8.23958333348855, 8.25, 8.26041666697711, 8.27083333348855, 8.28125, 8.29166666697711, 8.30208333348855, 8.3125, 8.32291666697711, 8.33333333348855, 8.34375, 8.35416666697711, 8.36458333348855, 8.375}, {3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.08, 3.08, 3.08, 3.07, 3.07, 3.06, 3.06, 3.05, 3.05, 3.04, 3.04, 3.04, 3.03, 3.03, 3.02, 3.02, 3.02, 3.01, 3.01, 3, 3, 2.99, 2.99, 2.98, 2.97, 2.97, 2.95, 2.94, 2.93, 2.92, 2.91, 2.91, 2.9, 2.9, 2.89, 2.89, 2.88, 2.88, 2.87, 2.86, 2.84, 2.82, 2.81, 2.8, 2.79, 2.8, 2.8, 2.8, 2.81, 2.81, 2.82, 2.82, 2.83, 2.83, 2.83, 2.83, 2.83, 2.83, 2.83, 2.84, 2.83, 2.83, 2.84, 2.84, 2.84, 2.83, 2.84, 2.83, 2.84, 2.84, 2.88, 2.97, 3.1, 3.24, 3.36, 3.47, 3.54, 3.6, 3.65, 3.68, 3.71, 3.73, 3.69, 3.61, 3.52, 3.42, 3.33, 3.26, 3.19, 3.13, 3.08, 3.04, 3.02, 2.99, 2.97, 2.95, 2.94, 2.93, 2.92, 2.91, 2.9, 2.9, 2.9, 2.89, 2.89, 2.89, 2.89, 2.89, 2.89, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.87, 2.86, 2.86, 2.85, 2.84, 2.86, 2.95, 3.06, 3.18, 3.29, 3.38, 3.45, 3.5, 3.55, 3.57, 3.59, 3.61, 3.62, 3.63, 3.64, 3.64, 3.65, 3.65, 3.65, 3.66, 3.66, 3.66, 3.66, 3.65, 3.61, 3.53, 3.45, 3.36, 3.29, 3.22, 3.16, 3.11, 3.08, 3.04, 3.02, 3, 2.98, 2.97, 2.96, 2.94, 2.94, 2.93, 2.93, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.92, 2.91, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.9, 2.89, 2.88, 2.87, 2.86, 2.84, 2.82, 2.81, 2.79, 2.78, 2.76, 2.75, 2.75, 2.74, 2.72, 2.72, 2.71, 2.7, 2.7, 2.69, 2.7, 2.7, 2.7, 2.71, 2.71, 2.73, 2.81, 2.95, 3.09, 3.22, 3.32, 3.4, 3.47, 3.51, 3.55, 3.58, 3.6, 3.62, 3.64, 3.67, 3.69, 3.68, 3.61, 3.51, 3.41, 3.31, 3.21, 3.13, 3.06, 3.01, 2.97, 2.94, 2.93, 2.92, 2.91, 2.9, 2.89, 2.89, 2.89, 2.89, 2.88, 2.87, 2.85, 2.82, 2.8, 2.78, 2.76, 2.74, 2.72, 2.69, 2.66, 2.63, 2.6, 2.57, 2.55, 2.53, 2.52, 2.5, 2.48, 2.48, 2.47, 2.46, 2.46, 2.45, 2.45, 2.44, 2.44, 2.44, 2.44, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.43, 2.42, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.44, 2.46, 2.49, 2.53, 2.58, 2.62, 2.65, 2.69, 2.73, 2.82, 2.96, 3.11, 3.25, 3.38, 3.48, 3.55, 3.6, 3.65, 3.67, 3.7, 3.72, 3.73, 3.74, 3.73, 3.67, 3.58, 3.48, 3.38, 3.29, 3.21, 3.14, 3.08, 3.03, 2.99, 2.96, 2.93, 2.91, 2.89, 2.87, 2.86, 2.85, 2.84, 2.83, 2.81, 2.8, 2.79, 2.77, 2.76, 2.75, 2.74, 2.73, 2.73, 2.72, 2.72, 2.72, 2.71, 2.71, 2.71, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.69, 2.67, 2.65, 2.63, 2.61, 2.59, 2.58, 2.56, 2.55, 2.55, 2.55, 2.55, 2.55, 2.54, 2.54, 2.56, 2.59, 2.62, 2.65, 2.68, 2.71, 2.73, 2.74, 2.76, 2.77, 2.78, 2.79, 2.8, 2.8, 2.8, 2.8, 2.82, 2.88, 2.98, 3.1, 3.22, 3.3, 3.38, 3.44, 3.49, 3.52, 3.54, 3.56, 3.58, 3.59, 3.59, 3.6, 3.61, 3.61, 3.61, 3.61, 3.58, 3.52, 3.44, 3.36, 3.29, 3.22, 3.15, 3.08, 3.02, 2.97, 2.92, 2.89, 2.86, 2.83, 2.81, 2.79, 2.77, 2.76, 2.75, 2.74, 2.74, 2.73, 2.73, 2.72, 2.72, 2.7, 2.68, 2.65, 2.62, 2.6, 2.57, 2.54, 2.53, 2.5, 2.49, 2.48, 2.46, 2.45, 2.45, 2.44, 2.44, 2.43, 2.43, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.41, 2.41, 2.41, 2.41, 2.42, 2.43, 2.45, 2.47, 2.5, 2.52, 2.53, 2.55, 2.56, 2.57, 2.58, 2.59, 2.59, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.63, 2.71, 2.85, 3.01, 3.16, 3.28, 3.37, 3.44, 3.5, 3.54, 3.57, 3.59, 3.61, 3.62, 3.63, 3.64, 3.64, 3.64, 3.64, 3.64, 3.63, 3.63, 3.62, 3.61, 3.55, 3.46, 3.35, 3.25, 3.16, 3.08, 3.01, 2.95, 2.9, 2.85, 2.82, 2.78, 2.76, 2.73, 2.71, 2.69, 2.68, 2.67, 2.66, 2.65, 2.64, 2.64, 2.63, 2.63, 2.63, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.61, 2.61, 2.61, 2.62, 2.61, 2.61, 2.61, 2.61, 2.62, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.64, 2.73, 2.86, 3.01, 3.14, 3.26, 3.34, 3.41, 3.45, 3.49, 3.52, 3.53, 3.55, 3.51, 3.44, 3.35, 3.25, 3.17, 3.08, 3.01, 2.96, 2.9, 2.86, 2.83, 2.8, 2.78, 2.76, 2.74, 2.73, 2.72, 2.71, 2.7, 2.7, 2.69, 2.69, 2.69, 2.68, 2.68, 2.68, 2.68, 2.67, 2.66, 2.64, 2.63, 2.61, 2.6, 2.59, 2.58, 2.57, 2.56, 2.56, 2.55, 2.55, 2.55, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.53, 2.54, 2.54, 2.55, 2.56, 2.56, 2.57, 2.57, 2.58, 2.58, 2.59, 2.59, 2.59, 2.59, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.61, 2.62, 2.63, 2.63, 2.64, 2.64, 2.64, 2.64, 2.65, 2.65, 2.64, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.64, 2.64, 2.63, 2.62, 2.62, 2.62, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.61, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.63, 2.63}} ; - - river_discharge = - {{1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1190, 1190, 1180, 1180, 1170, 1170, 1170, 1170, 1170, 1160, 1160, 1150, 1150, 1150, 1150, 1150, 1140, 1140, 1130, 1130, 1130, 1120, 1120, 1100, 1100, 1090, 1080, 1080, 1080, 1070, 1070, 1060, 1060, 1060, 1060, 1050, 1050, 1030, 1020, 1010, 1010, 1000, 1010, 1010, 1010, 1010, 1010, 1020, 1020, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1060, 1120, 1210, 1310, 1410, 1520, 1580, 1640, 1690, 1720, 1750, 1770, 1730, 1650, 1560, 1470, 1390, 1330, 1280, 1230, 1200, 1170, 1150, 1130, 1120, 1100, 1100, 1090, 1080, 1080, 1070, 1070, 1070, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1050, 1050, 1050, 1040, 1030, 1050, 1100, 1180, 1270, 1350, 1430, 1500, 1540, 1590, 1610, 1630, 1650, 1660, 1670, 1680, 1680, 1690, 1690, 1690, 1700, 1700, 1700, 1700, 1690, 1650, 1570, 1500, 1410, 1350, 1300, 1250, 1220, 1200, 1170, 1150, 1140, 1130, 1120, 1110, 1100, 1100, 1090, 1090, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1070, 1060, 1060, 1050, 1050, 1030, 1020, 1010, 1000, 996, 984, 978, 978, 972, 960, 960, 954, 948, 948, 943, 948, 948, 948, 954, 954, 966, 1010, 1100, 1200, 1300, 1380, 1450, 1520, 1550, 1590, 1620, 1640, 1660, 1680, 1710, 1730, 1720, 1650, 1550, 1460, 1370, 1290, 1230, 1180, 1150, 1120, 1100, 1090, 1080, 1080, 1070, 1060, 1060, 1060, 1060, 1060, 1050, 1040, 1020, 1010, 996, 984, 972, 960, 943, 925, 908, 891, 874, 863, 852, 846, 835, 825, 825, 820, 814, 814, 809, 809, 804, 804, 804, 804, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 794, 794, 794, 794, 794, 794, 799, 794, 799, 799, 799, 799, 799, 799, 804, 814, 830, 852, 880, 902, 919, 943, 966, 1020, 1110, 1220, 1320, 1430, 1520, 1590, 1640, 1690, 1710, 1740, 1760, 1770, 1780, 1770, 1710, 1620, 1520, 1430, 1350, 1290, 1240, 1200, 1160, 1130, 1110, 1090, 1080, 1060, 1050, 1050, 1040, 1030, 1030, 1010, 1010, 1000, 990, 984, 978, 972, 966, 966, 960, 960, 960, 954, 954, 954, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 943, 931, 919, 908, 897, 885, 880, 868, 863, 863, 863, 863, 863, 857, 857, 868, 885, 902, 919, 937, 954, 966, 972, 984, 990, 996, 1000, 1010, 1010, 1010, 1010, 1020, 1060, 1130, 1210, 1300, 1360, 1430, 1490, 1530, 1560, 1580, 1600, 1620, 1630, 1630, 1640, 1650, 1650, 1650, 1650, 1620, 1560, 1490, 1410, 1350, 1300, 1250, 1200, 1150, 1120, 1080, 1060, 1050, 1030, 1010, 1000, 990, 984, 978, 972, 972, 966, 966, 960, 960, 948, 937, 919, 902, 891, 874, 857, 852, 835, 830, 825, 814, 809, 809, 804, 804, 799, 799, 794, 794, 794, 794, 794, 794, 789, 789, 789, 789, 794, 799, 809, 820, 835, 846, 852, 863, 868, 874, 880, 885, 885, 891, 891, 891, 897, 897, 897, 908, 954, 1040, 1150, 1250, 1340, 1420, 1490, 1540, 1580, 1610, 1630, 1650, 1660, 1670, 1680, 1680, 1680, 1680, 1680, 1670, 1670, 1660, 1650, 1590, 1510, 1400, 1320, 1250, 1200, 1150, 1100, 1070, 1040, 1020, 996, 984, 966, 954, 943, 937, 931, 925, 919, 914, 914, 908, 908, 908, 902, 902, 902, 902, 902, 902, 902, 902, 897, 897, 897, 902, 897, 897, 897, 897, 902, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 914, 966, 1050, 1150, 1240, 1330, 1400, 1460, 1500, 1530, 1560, 1570, 1590, 1550, 1490, 1400, 1320, 1260, 1200, 1150, 1110, 1070, 1050, 1030, 1010, 996, 984, 972, 966, 960, 954, 948, 948, 943, 943, 943, 937, 937, 937, 937, 931, 925, 914, 908, 897, 891, 885, 880, 874, 868, 868, 863, 863, 863, 857, 857, 857, 857, 857, 857, 857, 852, 857, 857, 863, 868, 868, 874, 874, 880, 880, 885, 885, 885, 885, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 897, 902, 908, 908, 914, 914, 914, 914, 919, 919, 914, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 914, 914, 908, 902, 902, 902, 897, 897, 897, 897, 897, 897, 897, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 897, 897, 897, 897, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 908, 908}, {3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.09, 3.08, 3.08, 3.08, 3.07, 3.07, 3.06, 3.06, 3.05, 3.05, 3.04, 3.04, 3.04, 3.03, 3.03, 3.02, 3.02, 3.02, 3.01, 3.01, 3, 3, 2.99, 2.99, 2.98, 2.97, 2.97, 2.95, 2.94, 2.93, 2.92, 2.91, 2.91, 2.9, 2.9, 2.89, 2.89, 2.88, 2.88, 2.87, 2.86, 2.84, 2.82, 2.81, 2.8, 2.79, 2.8, 2.8, 2.8, 2.81, 2.81, 2.82, 2.82, 2.83, 2.83, 2.83, 2.83, 2.83, 2.83, 2.83, 2.84, 2.83, 2.83, 2.84, 2.84, 2.84, 2.83, 2.84, 2.83, 2.84, 2.84, 2.88, 2.97, 3.1, 3.24, 3.36, 3.47, 3.54, 3.6, 3.65, 3.68, 3.71, 3.73, 3.69, 3.61, 3.52, 3.42, 3.33, 3.26, 3.19, 3.13, 3.08, 3.04, 3.02, 2.99, 2.97, 2.95, 2.94, 2.93, 2.92, 2.91, 2.9, 2.9, 2.9, 2.89, 2.89, 2.89, 2.89, 2.89, 2.89, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.88, 2.87, 2.86, 2.86, 2.85, 2.84, 2.86, 2.95, 3.06, 3.18, 3.29, 3.38, 3.45, 3.5, 3.55, 3.57, 3.59, 3.61, 3.62, 3.63, 3.64, 3.64, 3.65, 3.65, 3.65, 3.66, 3.66, 3.66, 3.66, 3.65, 3.61, 3.53, 3.45, 3.36, 3.29, 3.22, 3.16, 3.11, 3.08, 3.04, 3.02, 3, 2.98, 2.97, 2.96, 2.94, 2.94, 2.93, 2.93, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.92, 2.91, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.91, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.91, 2.9, 2.89, 2.88, 2.87, 2.86, 2.84, 2.82, 2.81, 2.79, 2.78, 2.76, 2.75, 2.75, 2.74, 2.72, 2.72, 2.71, 2.7, 2.7, 2.69, 2.7, 2.7, 2.7, 2.71, 2.71, 2.73, 2.81, 2.95, 3.09, 3.22, 3.32, 3.4, 3.47, 3.51, 3.55, 3.58, 3.6, 3.62, 3.64, 3.67, 3.69, 3.68, 3.61, 3.51, 3.41, 3.31, 3.21, 3.13, 3.06, 3.01, 2.97, 2.94, 2.93, 2.92, 2.91, 2.9, 2.89, 2.89, 2.89, 2.89, 2.88, 2.87, 2.85, 2.82, 2.8, 2.78, 2.76, 2.74, 2.72, 2.69, 2.66, 2.63, 2.6, 2.57, 2.55, 2.53, 2.52, 2.5, 2.48, 2.48, 2.47, 2.46, 2.46, 2.45, 2.45, 2.44, 2.44, 2.44, 2.44, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.43, 2.42, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.44, 2.46, 2.49, 2.53, 2.58, 2.62, 2.65, 2.69, 2.73, 2.82, 2.96, 3.11, 3.25, 3.38, 3.48, 3.55, 3.6, 3.65, 3.67, 3.7, 3.72, 3.73, 3.74, 3.73, 3.67, 3.58, 3.48, 3.38, 3.29, 3.21, 3.14, 3.08, 3.03, 2.99, 2.96, 2.93, 2.91, 2.89, 2.87, 2.86, 2.85, 2.84, 2.83, 2.81, 2.8, 2.79, 2.77, 2.76, 2.75, 2.74, 2.73, 2.73, 2.72, 2.72, 2.72, 2.71, 2.71, 2.71, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.69, 2.67, 2.65, 2.63, 2.61, 2.59, 2.58, 2.56, 2.55, 2.55, 2.55, 2.55, 2.55, 2.54, 2.54, 2.56, 2.59, 2.62, 2.65, 2.68, 2.71, 2.73, 2.74, 2.76, 2.77, 2.78, 2.79, 2.8, 2.8, 2.8, 2.8, 2.82, 2.88, 2.98, 3.1, 3.22, 3.3, 3.38, 3.44, 3.49, 3.52, 3.54, 3.56, 3.58, 3.59, 3.59, 3.6, 3.61, 3.61, 3.61, 3.61, 3.58, 3.52, 3.44, 3.36, 3.29, 3.22, 3.15, 3.08, 3.02, 2.97, 2.92, 2.89, 2.86, 2.83, 2.81, 2.79, 2.77, 2.76, 2.75, 2.74, 2.74, 2.73, 2.73, 2.72, 2.72, 2.7, 2.68, 2.65, 2.62, 2.6, 2.57, 2.54, 2.53, 2.5, 2.49, 2.48, 2.46, 2.45, 2.45, 2.44, 2.44, 2.43, 2.43, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.41, 2.41, 2.41, 2.41, 2.42, 2.43, 2.45, 2.47, 2.5, 2.52, 2.53, 2.55, 2.56, 2.57, 2.58, 2.59, 2.59, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.63, 2.71, 2.85, 3.01, 3.16, 3.28, 3.37, 3.44, 3.5, 3.54, 3.57, 3.59, 3.61, 3.62, 3.63, 3.64, 3.64, 3.64, 3.64, 3.64, 3.63, 3.63, 3.62, 3.61, 3.55, 3.46, 3.35, 3.25, 3.16, 3.08, 3.01, 2.95, 2.9, 2.85, 2.82, 2.78, 2.76, 2.73, 2.71, 2.69, 2.68, 2.67, 2.66, 2.65, 2.64, 2.64, 2.63, 2.63, 2.63, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.61, 2.61, 2.61, 2.62, 2.61, 2.61, 2.61, 2.61, 2.62, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.64, 2.73, 2.86, 3.01, 3.14, 3.26, 3.34, 3.41, 3.45, 3.49, 3.52, 3.53, 3.55, 3.51, 3.44, 3.35, 3.25, 3.17, 3.08, 3.01, 2.96, 2.9, 2.86, 2.83, 2.8, 2.78, 2.76, 2.74, 2.73, 2.72, 2.71, 2.7, 2.7, 2.69, 2.69, 2.69, 2.68, 2.68, 2.68, 2.68, 2.67, 2.66, 2.64, 2.63, 2.61, 2.6, 2.59, 2.58, 2.57, 2.56, 2.56, 2.55, 2.55, 2.55, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.54, 2.53, 2.54, 2.54, 2.55, 2.56, 2.56, 2.57, 2.57, 2.58, 2.58, 2.59, 2.59, 2.59, 2.59, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.61, 2.62, 2.63, 2.63, 2.64, 2.64, 2.64, 2.64, 2.65, 2.65, 2.64, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.64, 2.64, 2.63, 2.62, 2.62, 2.62, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.61, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.61, 2.61, 2.61, 2.61, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.62, 2.63, 2.63}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth1.dmp deleted file mode 100644 index d8909352ae1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth1.dmp +++ /dev/null @@ -1,11 +0,0 @@ -netcdf synth1 { -types: - compound S1_t { - int v1(3) ; - }; // S1_t -variables: - S1_t S1 ; -data: - - S1 = {{132, 232, 332}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth2.dmp deleted file mode 100644 index c1a49ef95e5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth2.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf synth2 { -types: - compound Q1_record_t { - short v2(4) ; - float v4(2) ; - }; // Q1_record_t - Q1_record_t(*) Q1_t ; -variables: - Q1_t Q1 ; -data: - - Q1 = - {{{116, 216, 316, 416}, {1320, 2320}}, {{516, 616, 716, 816}, {3320, 4320}}, {{916, 1016, 1116, 1216}, {5320, 6320}}, {{1316, 1416, 1516, 1616}, {7320, 8320}}, {{1716, 1816, 1916, 2016}, {9320, 10320}}, {{2116, 2216, 2316, 2416}, {11320, 12320}}, {{2516, 2616, 2716, 2816}, {13320, 14320}}, {{2916, 3016, 3116, 3216}, {15320, 16320}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth3.dmp deleted file mode 100644 index af0632a2061..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth3.dmp +++ /dev/null @@ -1,13 +0,0 @@ -netcdf synth3 { -types: - compound S1_t { - int v1(3) ; - }; // S1_t -dimensions: - S1_0 = 2 ; -variables: - S1_t S1(S1_0) ; -data: - - S1 = {{132, 232, 332}}, {{432, 532, 632}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth4.dmp deleted file mode 100644 index 965274e5f49..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth4.dmp +++ /dev/null @@ -1,23 +0,0 @@ -netcdf synth4 { -types: - compound S1_t { - ubyte v1(4) ; - short v2(4) ; - int v3(2) ; - float v4(2) ; - double v5(2) ; - }; // S1_t -dimensions: - S1_0 = 2 ; -variables: - S1_t S1(S1_0) ; - -// global attributes: - :g1 = 3, 8, 16, 32 ; - string :s1 = "gvalue1" ; -data: - - S1 = - {{97, 98, 99, 100}, {116, 216, 316, 416}, {132, 232}, {1320, 2320}, {1640, 2640}}, - {{101, 102, 103, 104}, {516, 616, 716, 816}, {332, 432}, {3320, 4320}, {3640, 4640}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth5.dmp deleted file mode 100644 index bad3fc8f86d..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth5.dmp +++ /dev/null @@ -1,13 +0,0 @@ -netcdf synth5 { -types: - compound G1_t { - float temp(2, 2) ; - int lat(2) ; - int long(2) ; - }; // G1_t -variables: - G1_t G1 ; -data: - - G1 = {{1320, 2320, 3320, 4320}, {132, 232}, {332, 432}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth6.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth6.dmp deleted file mode 100644 index f1999692d7d..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth6.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf synth6 { -types: - compound S1_t { - ubyte v1(4) ; - int v3(2) ; - double v5(2) ; - }; // S1_t - compound Q1_record_t { - short v2(4) ; - float v4(2) ; - }; // Q1_record_t - Q1_record_t(*) Q1_t ; -dimensions: - S1_0 = 2 ; -variables: - S1_t S1(S1_0) ; - Q1_t Q1 ; -data: - - S1 = {{97, 98, 99, 100}, {132, 232}, {1640, 2640}}, - {{101, 102, 103, 104}, {332, 432}, {3640, 4640}} ; - - Q1 = - {{{116, 216, 316, 416}, {1320, 2320}}, {{516, 616, 716, 816}, {3320, 4320}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth7.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth7.dmp deleted file mode 100644 index 028c07b51df..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth7.dmp +++ /dev/null @@ -1,9 +0,0 @@ -netcdf synth7 { -types: - float(*) Q1_t ; -variables: - Q1_t Q1 ; -data: - - Q1 = {1320, 2320, 3320, 4320, 5320, 6320, 7320, 8320} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth8.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth8.dmp deleted file mode 100644 index 2ed948287a9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/synth8.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf synth8 { -types: - float(*) Q2_t ; - compound Q1_record_t { - Q2_t Q2 ; - }; // Q1_record_t - Q1_record_t(*) Q1_t ; -variables: - Q1_t Q1 ; -data: - - Q1 = - {{{1320, 2320, 3320, 4320}}, {{5320, 6320, 7320, 8320}}, {{9320, 10320, 11320, 12320}}, {{13320, 14320, 15320, 16320}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.01.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.01.dmp deleted file mode 100644 index cadbce66402..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.01.dmp +++ /dev/null @@ -1,35 +0,0 @@ -netcdf test { -variables: - ubyte b ; - string b:Description = "A test byte" ; - string b:units = "unknown" ; - int i32 ; - string i32:Description = "A 32 bit test server int" ; - string i32:units = "unknown" ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; -data: - - b = 0 ; - - i32 = 1 ; - - ui32 = 0 ; - - i16 = 0 ; - - ui16 = 0 ; - - f32 = 0 ; - - f64 = 1000 ; - - s = "This is a data test string (pass 0)." ; - - u = "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.02.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.02.dmp deleted file mode 100644 index 7ab613f3c0f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.02.dmp +++ /dev/null @@ -1,93 +0,0 @@ -netcdf test { -dimensions: - b_0 = 25 ; - f32_0 = 25 ; - f64_0 = 25 ; - i16_0 = 25 ; - i32_0 = 25 ; - s_0 = 25 ; - u_0 = 25 ; - ui16_0 = 25 ; - ui32_0 = 25 ; -variables: - ubyte b(b_0) ; - int i32(i32_0) ; - uint ui32(ui32_0) ; - short i16(i16_0) ; - ushort ui16(ui16_0) ; - float f32(f32_0) ; - double f64(f64_0) ; - string s(s_0) ; - string u(u_0) ; -data: - - b = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24 ; - - i32 = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152 ; - - ui32 = 0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768, 36864, - 40960, 45056, 49152, 53248, 57344, 61440, 65536, 69632, 73728, 77824, - 81920, 86016, 90112, 94208, 98304 ; - - i16 = 0, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, - 3072, 3328, 3584, 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, - 6144 ; - - ui16 = 0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, - 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456, 20480, - 21504, 22528, 23552, 24576 ; - - f32 = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026 ; - - f64 = 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, - 0.991561893714788, 0.990215996212637, 0.988771077936042, - 0.987227283375627, 0.985584766909561, 0.983843692788121, - 0.98200423511727, 0.980066577841242, 0.978030914724148, - 0.975897449330606, 0.973666395005375, 0.97133797485203 ; - - s = "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4).", - "This is a data test string (pass 5).", - "This is a data test string (pass 6).", - "This is a data test string (pass 7).", - "This is a data test string (pass 8).", - "This is a data test string (pass 9).", - "This is a data test string (pass 10).", - "This is a data test string (pass 11).", - "This is a data test string (pass 12).", - "This is a data test string (pass 13).", - "This is a data test string (pass 14).", - "This is a data test string (pass 15).", - "This is a data test string (pass 16).", - "This is a data test string (pass 17).", - "This is a data test string (pass 18).", - "This is a data test string (pass 19).", - "This is a data test string (pass 20).", - "This is a data test string (pass 21).", - "This is a data test string (pass 22).", - "This is a data test string (pass 23).", - "This is a data test string (pass 24)." ; - - u = "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.03.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.03.dmp deleted file mode 100644 index b02194f53f6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.03.dmp +++ /dev/null @@ -1,1694 +0,0 @@ -netcdf test { -dimensions: - b2_0 = 2 ; - b2_1 = 3 ; - b_0 = 2 ; - b_1 = 3 ; - b_2 = 4 ; - f32_0 = 2 ; - f32_1 = 2 ; - f32_2 = 2 ; - f64_0 = 2 ; - f64_1 = 2 ; - f64_2 = 2 ; - i16_0 = 2 ; - i16_1 = 2 ; - i16_2 = 2 ; - i32_0 = 2 ; - i32_1 = 3 ; - i32_2 = 4 ; - s0_0 = 4 ; - s0_1 = 5 ; - s0_2 = 6 ; - s1_0 = 10 ; - s1_1 = 10 ; - s1_2 = 10 ; - u_0 = 10 ; - u_1 = 10 ; - u_2 = 10 ; - ui16_0 = 2 ; - ui16_1 = 2 ; - ui16_2 = 2 ; - ui32_0 = 2 ; - ui32_1 = 3 ; - ui32_2 = 4 ; - ui32_3 = 3 ; - ui32_4 = 2 ; -variables: - ubyte b(b_0, b_1, b_2) ; - ubyte b2(b2_0, b2_1) ; - int i32(i32_0, i32_1, i32_2) ; - uint ui32(ui32_0, ui32_1, ui32_2, ui32_3, ui32_4) ; - short i16(i16_0, i16_1, i16_2) ; - ushort ui16(ui16_0, ui16_1, ui16_2) ; - float f32(f32_0, f32_1, f32_2) ; - double f64(f64_0, f64_1, f64_2) ; - string s0(s0_0, s0_1, s0_2) ; - string s1(s1_0, s1_1, s1_2) ; - string u(u_0, u_1, u_2) ; -data: - - b = - 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 ; - - b2 = - 0, 1, 2, - 3, 4, 5 ; - - i32 = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104 ; - - ui32 = - 0, 4096, - 8192, 12288, - 16384, 20480, - 24576, 28672, - 32768, 36864, - 40960, 45056, - 49152, 53248, - 57344, 61440, - 65536, 69632, - 73728, 77824, - 81920, 86016, - 90112, 94208, - 98304, 102400, - 106496, 110592, - 114688, 118784, - 122880, 126976, - 131072, 135168, - 139264, 143360, - 147456, 151552, - 155648, 159744, - 163840, 167936, - 172032, 176128, - 180224, 184320, - 188416, 192512, - 196608, 200704, - 204800, 208896, - 212992, 217088, - 221184, 225280, - 229376, 233472, - 237568, 241664, - 245760, 249856, - 253952, 258048, - 262144, 266240, - 270336, 274432, - 278528, 282624, - 286720, 290816, - 294912, 299008, - 303104, 307200, - 311296, 315392, - 319488, 323584, - 327680, 331776, - 335872, 339968, - 344064, 348160, - 352256, 356352, - 360448, 364544, - 368640, 372736, - 376832, 380928, - 385024, 389120, - 393216, 397312, - 401408, 405504, - 409600, 413696, - 417792, 421888, - 425984, 430080, - 434176, 438272, - 442368, 446464, - 450560, 454656, - 458752, 462848, - 466944, 471040, - 475136, 479232, - 483328, 487424, - 491520, 495616, - 499712, 503808, - 507904, 512000, - 516096, 520192, - 524288, 528384, - 532480, 536576, - 540672, 544768, - 548864, 552960, - 557056, 561152, - 565248, 569344, - 573440, 577536, - 581632, 585728 ; - - i16 = - 0, 256, - 512, 768, - 1024, 1280, - 1536, 1792 ; - - ui16 = - 0, 1024, - 2048, 3072, - 4096, 5120, - 6144, 7168 ; - - f32 = - 0, 0.009999833, - 0.01999867, 0.0299955, - 0.03998933, 0.04997917, - 0.059964, 0.06994285 ; - - f64 = - 1, 0.999950000416665, - 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, - 0.998200539935204, 0.99755100025328 ; - - s0 = - "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4).", - "This is a data test string (pass 5).", - "This is a data test string (pass 6).", - "This is a data test string (pass 7).", - "This is a data test string (pass 8).", - "This is a data test string (pass 9).", - "This is a data test string (pass 10).", - "This is a data test string (pass 11).", - "This is a data test string (pass 12).", - "This is a data test string (pass 13).", - "This is a data test string (pass 14).", - "This is a data test string (pass 15).", - "This is a data test string (pass 16).", - "This is a data test string (pass 17).", - "This is a data test string (pass 18).", - "This is a data test string (pass 19).", - "This is a data test string (pass 20).", - "This is a data test string (pass 21).", - "This is a data test string (pass 22).", - "This is a data test string (pass 23).", - "This is a data test string (pass 24).", - "This is a data test string (pass 25).", - "This is a data test string (pass 26).", - "This is a data test string (pass 27).", - "This is a data test string (pass 28).", - "This is a data test string (pass 29).", - "This is a data test string (pass 30).", - "This is a data test string (pass 31).", - "This is a data test string (pass 32).", - "This is a data test string (pass 33).", - "This is a data test string (pass 34).", - "This is a data test string (pass 35).", - "This is a data test string (pass 36).", - "This is a data test string (pass 37).", - "This is a data test string (pass 38).", - "This is a data test string (pass 39).", - "This is a data test string (pass 40).", - "This is a data test string (pass 41).", - "This is a data test string (pass 42).", - "This is a data test string (pass 43).", - "This is a data test string (pass 44).", - "This is a data test string (pass 45).", - "This is a data test string (pass 46).", - "This is a data test string (pass 47).", - "This is a data test string (pass 48).", - "This is a data test string (pass 49).", - "This is a data test string (pass 50).", - "This is a data test string (pass 51).", - "This is a data test string (pass 52).", - "This is a data test string (pass 53).", - "This is a data test string (pass 54).", - "This is a data test string (pass 55).", - "This is a data test string (pass 56).", - "This is a data test string (pass 57).", - "This is a data test string (pass 58).", - "This is a data test string (pass 59).", - "This is a data test string (pass 60).", - "This is a data test string (pass 61).", - "This is a data test string (pass 62).", - "This is a data test string (pass 63).", - "This is a data test string (pass 64).", - "This is a data test string (pass 65).", - "This is a data test string (pass 66).", - "This is a data test string (pass 67).", - "This is a data test string (pass 68).", - "This is a data test string (pass 69).", - "This is a data test string (pass 70).", - "This is a data test string (pass 71).", - "This is a data test string (pass 72).", - "This is a data test string (pass 73).", - "This is a data test string (pass 74).", - "This is a data test string (pass 75).", - "This is a data test string (pass 76).", - "This is a data test string (pass 77).", - "This is a data test string (pass 78).", - "This is a data test string (pass 79).", - "This is a data test string (pass 80).", - "This is a data test string (pass 81).", - "This is a data test string (pass 82).", - "This is a data test string (pass 83).", - "This is a data test string (pass 84).", - "This is a data test string (pass 85).", - "This is a data test string (pass 86).", - "This is a data test string (pass 87).", - "This is a data test string (pass 88).", - "This is a data test string (pass 89).", - "This is a data test string (pass 90).", - "This is a data test string (pass 91).", - "This is a data test string (pass 92).", - "This is a data test string (pass 93).", - "This is a data test string (pass 94).", - "This is a data test string (pass 95).", - "This is a data test string (pass 96).", - "This is a data test string (pass 97).", - "This is a data test string (pass 98).", - "This is a data test string (pass 99).", - "This is a data test string (pass 100).", - "This is a data test string (pass 101).", - "This is a data test string (pass 102).", - "This is a data test string (pass 103).", - "This is a data test string (pass 104).", - "This is a data test string (pass 105).", - "This is a data test string (pass 106).", - "This is a data test string (pass 107).", - "This is a data test string (pass 108).", - "This is a data test string (pass 109).", - "This is a data test string (pass 110).", - "This is a data test string (pass 111).", - "This is a data test string (pass 112).", - "This is a data test string (pass 113).", - "This is a data test string (pass 114).", - "This is a data test string (pass 115).", - "This is a data test string (pass 116).", - "This is a data test string (pass 117).", - "This is a data test string (pass 118).", - "This is a data test string (pass 119)." ; - - s1 = - "This is a data test string (pass 120).", - "This is a data test string (pass 121).", - "This is a data test string (pass 122).", - "This is a data test string (pass 123).", - "This is a data test string (pass 124).", - "This is a data test string (pass 125).", - "This is a data test string (pass 126).", - "This is a data test string (pass 127).", - "This is a data test string (pass 128).", - "This is a data test string (pass 129).", - "This is a data test string (pass 130).", - "This is a data test string (pass 131).", - "This is a data test string (pass 132).", - "This is a data test string (pass 133).", - "This is a data test string (pass 134).", - "This is a data test string (pass 135).", - "This is a data test string (pass 136).", - "This is a data test string (pass 137).", - "This is a data test string (pass 138).", - "This is a data test string (pass 139).", - "This is a data test string (pass 140).", - "This is a data test string (pass 141).", - "This is a data test string (pass 142).", - "This is a data test string (pass 143).", - "This is a data test string (pass 144).", - "This is a data test string (pass 145).", - "This is a data test string (pass 146).", - "This is a data test string (pass 147).", - "This is a data test string (pass 148).", - "This is a data test string (pass 149).", - "This is a data test string (pass 150).", - "This is a data test string (pass 151).", - "This is a data test string (pass 152).", - "This is a data test string (pass 153).", - "This is a data test string (pass 154).", - "This is a data test string (pass 155).", - "This is a data test string (pass 156).", - "This is a data test string (pass 157).", - "This is a data test string (pass 158).", - "This is a data test string (pass 159).", - "This is a data test string (pass 160).", - "This is a data test string (pass 161).", - "This is a data test string (pass 162).", - "This is a data test string (pass 163).", - "This is a data test string (pass 164).", - "This is a data test string (pass 165).", - "This is a data test string (pass 166).", - "This is a data test string (pass 167).", - "This is a data test string (pass 168).", - "This is a data test string (pass 169).", - "This is a data test string (pass 170).", - "This is a data test string (pass 171).", - "This is a data test string (pass 172).", - "This is a data test string (pass 173).", - "This is a data test string (pass 174).", - "This is a data test string (pass 175).", - "This is a data test string (pass 176).", - "This is a data test string (pass 177).", - "This is a data test string (pass 178).", - "This is a data test string (pass 179).", - "This is a data test string (pass 180).", - "This is a data test string (pass 181).", - "This is a data test string (pass 182).", - "This is a data test string (pass 183).", - "This is a data test string (pass 184).", - "This is a data test string (pass 185).", - "This is a data test string (pass 186).", - "This is a data test string (pass 187).", - "This is a data test string (pass 188).", - "This is a data test string (pass 189).", - "This is a data test string (pass 190).", - "This is a data test string (pass 191).", - "This is a data test string (pass 192).", - "This is a data test string (pass 193).", - "This is a data test string (pass 194).", - "This is a data test string (pass 195).", - "This is a data test string (pass 196).", - "This is a data test string (pass 197).", - "This is a data test string (pass 198).", - "This is a data test string (pass 199).", - "This is a data test string (pass 200).", - "This is a data test string (pass 201).", - "This is a data test string (pass 202).", - "This is a data test string (pass 203).", - "This is a data test string (pass 204).", - "This is a data test string (pass 205).", - "This is a data test string (pass 206).", - "This is a data test string (pass 207).", - "This is a data test string (pass 208).", - "This is a data test string (pass 209).", - "This is a data test string (pass 210).", - "This is a data test string (pass 211).", - "This is a data test string (pass 212).", - "This is a data test string (pass 213).", - "This is a data test string (pass 214).", - "This is a data test string (pass 215).", - "This is a data test string (pass 216).", - "This is a data test string (pass 217).", - "This is a data test string (pass 218).", - "This is a data test string (pass 219).", - "This is a data test string (pass 220).", - "This is a data test string (pass 221).", - "This is a data test string (pass 222).", - "This is a data test string (pass 223).", - "This is a data test string (pass 224).", - "This is a data test string (pass 225).", - "This is a data test string (pass 226).", - "This is a data test string (pass 227).", - "This is a data test string (pass 228).", - "This is a data test string (pass 229).", - "This is a data test string (pass 230).", - "This is a data test string (pass 231).", - "This is a data test string (pass 232).", - "This is a data test string (pass 233).", - "This is a data test string (pass 234).", - "This is a data test string (pass 235).", - "This is a data test string (pass 236).", - "This is a data test string (pass 237).", - "This is a data test string (pass 238).", - "This is a data test string (pass 239).", - "This is a data test string (pass 240).", - "This is a data test string (pass 241).", - "This is a data test string (pass 242).", - "This is a data test string (pass 243).", - "This is a data test string (pass 244).", - "This is a data test string (pass 245).", - "This is a data test string (pass 246).", - "This is a data test string (pass 247).", - "This is a data test string (pass 248).", - "This is a data test string (pass 249).", - "This is a data test string (pass 250).", - "This is a data test string (pass 251).", - "This is a data test string (pass 252).", - "This is a data test string (pass 253).", - "This is a data test string (pass 254).", - "This is a data test string (pass 255).", - "This is a data test string (pass 256).", - "This is a data test string (pass 257).", - "This is a data test string (pass 258).", - "This is a data test string (pass 259).", - "This is a data test string (pass 260).", - "This is a data test string (pass 261).", - "This is a data test string (pass 262).", - "This is a data test string (pass 263).", - "This is a data test string (pass 264).", - "This is a data test string (pass 265).", - "This is a data test string (pass 266).", - "This is a data test string (pass 267).", - "This is a data test string (pass 268).", - "This is a data test string (pass 269).", - "This is a data test string (pass 270).", - "This is a data test string (pass 271).", - "This is a data test string (pass 272).", - "This is a data test string (pass 273).", - "This is a data test string (pass 274).", - "This is a data test string (pass 275).", - "This is a data test string (pass 276).", - "This is a data test string (pass 277).", - "This is a data test string (pass 278).", - "This is a data test string (pass 279).", - "This is a data test string (pass 280).", - "This is a data test string (pass 281).", - "This is a data test string (pass 282).", - "This is a data test string (pass 283).", - "This is a data test string (pass 284).", - "This is a data test string (pass 285).", - "This is a data test string (pass 286).", - "This is a data test string (pass 287).", - "This is a data test string (pass 288).", - "This is a data test string (pass 289).", - "This is a data test string (pass 290).", - "This is a data test string (pass 291).", - "This is a data test string (pass 292).", - "This is a data test string (pass 293).", - "This is a data test string (pass 294).", - "This is a data test string (pass 295).", - "This is a data test string (pass 296).", - "This is a data test string (pass 297).", - "This is a data test string (pass 298).", - "This is a data test string (pass 299).", - "This is a data test string (pass 300).", - "This is a data test string (pass 301).", - "This is a data test string (pass 302).", - "This is a data test string (pass 303).", - "This is a data test string (pass 304).", - "This is a data test string (pass 305).", - "This is a data test string (pass 306).", - "This is a data test string (pass 307).", - "This is a data test string (pass 308).", - "This is a data test string (pass 309).", - "This is a data test string (pass 310).", - "This is a data test string (pass 311).", - "This is a data test string (pass 312).", - "This is a data test string (pass 313).", - "This is a data test string (pass 314).", - "This is a data test string (pass 315).", - "This is a data test string (pass 316).", - "This is a data test string (pass 317).", - "This is a data test string (pass 318).", - "This is a data test string (pass 319).", - "This is a data test string (pass 320).", - "This is a data test string (pass 321).", - "This is a data test string (pass 322).", - "This is a data test string (pass 323).", - "This is a data test string (pass 324).", - "This is a data test string (pass 325).", - "This is a data test string (pass 326).", - "This is a data test string (pass 327).", - "This is a data test string (pass 328).", - "This is a data test string (pass 329).", - "This is a data test string (pass 330).", - "This is a data test string (pass 331).", - "This is a data test string (pass 332).", - "This is a data test string (pass 333).", - "This is a data test string (pass 334).", - "This is a data test string (pass 335).", - "This is a data test string (pass 336).", - "This is a data test string (pass 337).", - "This is a data test string (pass 338).", - "This is a data test string (pass 339).", - "This is a data test string (pass 340).", - "This is a data test string (pass 341).", - "This is a data test string (pass 342).", - "This is a data test string (pass 343).", - "This is a data test string (pass 344).", - "This is a data test string (pass 345).", - "This is a data test string (pass 346).", - "This is a data test string (pass 347).", - "This is a data test string (pass 348).", - "This is a data test string (pass 349).", - "This is a data test string (pass 350).", - "This is a data test string (pass 351).", - "This is a data test string (pass 352).", - "This is a data test string (pass 353).", - "This is a data test string (pass 354).", - "This is a data test string (pass 355).", - "This is a data test string (pass 356).", - "This is a data test string (pass 357).", - "This is a data test string (pass 358).", - "This is a data test string (pass 359).", - "This is a data test string (pass 360).", - "This is a data test string (pass 361).", - "This is a data test string (pass 362).", - "This is a data test string (pass 363).", - "This is a data test string (pass 364).", - "This is a data test string (pass 365).", - "This is a data test string (pass 366).", - "This is a data test string (pass 367).", - "This is a data test string (pass 368).", - "This is a data test string (pass 369).", - "This is a data test string (pass 370).", - "This is a data test string (pass 371).", - "This is a data test string (pass 372).", - "This is a data test string (pass 373).", - "This is a data test string (pass 374).", - "This is a data test string (pass 375).", - "This is a data test string (pass 376).", - "This is a data test string (pass 377).", - "This is a data test string (pass 378).", - "This is a data test string (pass 379).", - "This is a data test string (pass 380).", - "This is a data test string (pass 381).", - "This is a data test string (pass 382).", - "This is a data test string (pass 383).", - "This is a data test string (pass 384).", - "This is a data test string (pass 385).", - "This is a data test string (pass 386).", - "This is a data test string (pass 387).", - "This is a data test string (pass 388).", - "This is a data test string (pass 389).", - "This is a data test string (pass 390).", - "This is a data test string (pass 391).", - "This is a data test string (pass 392).", - "This is a data test string (pass 393).", - "This is a data test string (pass 394).", - "This is a data test string (pass 395).", - "This is a data test string (pass 396).", - "This is a data test string (pass 397).", - "This is a data test string (pass 398).", - "This is a data test string (pass 399).", - "This is a data test string (pass 400).", - "This is a data test string (pass 401).", - "This is a data test string (pass 402).", - "This is a data test string (pass 403).", - "This is a data test string (pass 404).", - "This is a data test string (pass 405).", - "This is a data test string (pass 406).", - "This is a data test string (pass 407).", - "This is a data test string (pass 408).", - "This is a data test string (pass 409).", - "This is a data test string (pass 410).", - "This is a data test string (pass 411).", - "This is a data test string (pass 412).", - "This is a data test string (pass 413).", - "This is a data test string (pass 414).", - "This is a data test string (pass 415).", - "This is a data test string (pass 416).", - "This is a data test string (pass 417).", - "This is a data test string (pass 418).", - "This is a data test string (pass 419).", - "This is a data test string (pass 420).", - "This is a data test string (pass 421).", - "This is a data test string (pass 422).", - "This is a data test string (pass 423).", - "This is a data test string (pass 424).", - "This is a data test string (pass 425).", - "This is a data test string (pass 426).", - "This is a data test string (pass 427).", - "This is a data test string (pass 428).", - "This is a data test string (pass 429).", - "This is a data test string (pass 430).", - "This is a data test string (pass 431).", - "This is a data test string (pass 432).", - "This is a data test string (pass 433).", - "This is a data test string (pass 434).", - "This is a data test string (pass 435).", - "This is a data test string (pass 436).", - "This is a data test string (pass 437).", - "This is a data test string (pass 438).", - "This is a data test string (pass 439).", - "This is a data test string (pass 440).", - "This is a data test string (pass 441).", - "This is a data test string (pass 442).", - "This is a data test string (pass 443).", - "This is a data test string (pass 444).", - "This is a data test string (pass 445).", - "This is a data test string (pass 446).", - "This is a data test string (pass 447).", - "This is a data test string (pass 448).", - "This is a data test string (pass 449).", - "This is a data test string (pass 450).", - "This is a data test string (pass 451).", - "This is a data test string (pass 452).", - "This is a data test string (pass 453).", - "This is a data test string (pass 454).", - "This is a data test string (pass 455).", - "This is a data test string (pass 456).", - "This is a data test string (pass 457).", - "This is a data test string (pass 458).", - "This is a data test string (pass 459).", - "This is a data test string (pass 460).", - "This is a data test string (pass 461).", - "This is a data test string (pass 462).", - "This is a data test string (pass 463).", - "This is a data test string (pass 464).", - "This is a data test string (pass 465).", - "This is a data test string (pass 466).", - "This is a data test string (pass 467).", - "This is a data test string (pass 468).", - "This is a data test string (pass 469).", - "This is a data test string (pass 470).", - "This is a data test string (pass 471).", - "This is a data test string (pass 472).", - "This is a data test string (pass 473).", - "This is a data test string (pass 474).", - "This is a data test string (pass 475).", - "This is a data test string (pass 476).", - "This is a data test string (pass 477).", - "This is a data test string (pass 478).", - "This is a data test string (pass 479).", - "This is a data test string (pass 480).", - "This is a data test string (pass 481).", - "This is a data test string (pass 482).", - "This is a data test string (pass 483).", - "This is a data test string (pass 484).", - "This is a data test string (pass 485).", - "This is a data test string (pass 486).", - "This is a data test string (pass 487).", - "This is a data test string (pass 488).", - "This is a data test string (pass 489).", - "This is a data test string (pass 490).", - "This is a data test string (pass 491).", - "This is a data test string (pass 492).", - "This is a data test string (pass 493).", - "This is a data test string (pass 494).", - "This is a data test string (pass 495).", - "This is a data test string (pass 496).", - "This is a data test string (pass 497).", - "This is a data test string (pass 498).", - "This is a data test string (pass 499).", - "This is a data test string (pass 500).", - "This is a data test string (pass 501).", - "This is a data test string (pass 502).", - "This is a data test string (pass 503).", - "This is a data test string (pass 504).", - "This is a data test string (pass 505).", - "This is a data test string (pass 506).", - "This is a data test string (pass 507).", - "This is a data test string (pass 508).", - "This is a data test string (pass 509).", - "This is a data test string (pass 510).", - "This is a data test string (pass 511).", - "This is a data test string (pass 512).", - "This is a data test string (pass 513).", - "This is a data test string (pass 514).", - "This is a data test string (pass 515).", - "This is a data test string (pass 516).", - "This is a data test string (pass 517).", - "This is a data test string (pass 518).", - "This is a data test string (pass 519).", - "This is a data test string (pass 520).", - "This is a data test string (pass 521).", - "This is a data test string (pass 522).", - "This is a data test string (pass 523).", - "This is a data test string (pass 524).", - "This is a data test string (pass 525).", - "This is a data test string (pass 526).", - "This is a data test string (pass 527).", - "This is a data test string (pass 528).", - "This is a data test string (pass 529).", - "This is a data test string (pass 530).", - "This is a data test string (pass 531).", - "This is a data test string (pass 532).", - "This is a data test string (pass 533).", - "This is a data test string (pass 534).", - "This is a data test string (pass 535).", - "This is a data test string (pass 536).", - "This is a data test string (pass 537).", - "This is a data test string (pass 538).", - "This is a data test string (pass 539).", - "This is a data test string (pass 540).", - "This is a data test string (pass 541).", - "This is a data test string (pass 542).", - "This is a data test string (pass 543).", - "This is a data test string (pass 544).", - "This is a data test string (pass 545).", - "This is a data test string (pass 546).", - "This is a data test string (pass 547).", - "This is a data test string (pass 548).", - "This is a data test string (pass 549).", - "This is a data test string (pass 550).", - "This is a data test string (pass 551).", - "This is a data test string (pass 552).", - "This is a data test string (pass 553).", - "This is a data test string (pass 554).", - "This is a data test string (pass 555).", - "This is a data test string (pass 556).", - "This is a data test string (pass 557).", - "This is a data test string (pass 558).", - "This is a data test string (pass 559).", - "This is a data test string (pass 560).", - "This is a data test string (pass 561).", - "This is a data test string (pass 562).", - "This is a data test string (pass 563).", - "This is a data test string (pass 564).", - "This is a data test string (pass 565).", - "This is a data test string (pass 566).", - "This is a data test string (pass 567).", - "This is a data test string (pass 568).", - "This is a data test string (pass 569).", - "This is a data test string (pass 570).", - "This is a data test string (pass 571).", - "This is a data test string (pass 572).", - "This is a data test string (pass 573).", - "This is a data test string (pass 574).", - "This is a data test string (pass 575).", - "This is a data test string (pass 576).", - "This is a data test string (pass 577).", - "This is a data test string (pass 578).", - "This is a data test string (pass 579).", - "This is a data test string (pass 580).", - "This is a data test string (pass 581).", - "This is a data test string (pass 582).", - "This is a data test string (pass 583).", - "This is a data test string (pass 584).", - "This is a data test string (pass 585).", - "This is a data test string (pass 586).", - "This is a data test string (pass 587).", - "This is a data test string (pass 588).", - "This is a data test string (pass 589).", - "This is a data test string (pass 590).", - "This is a data test string (pass 591).", - "This is a data test string (pass 592).", - "This is a data test string (pass 593).", - "This is a data test string (pass 594).", - "This is a data test string (pass 595).", - "This is a data test string (pass 596).", - "This is a data test string (pass 597).", - "This is a data test string (pass 598).", - "This is a data test string (pass 599).", - "This is a data test string (pass 600).", - "This is a data test string (pass 601).", - "This is a data test string (pass 602).", - "This is a data test string (pass 603).", - "This is a data test string (pass 604).", - "This is a data test string (pass 605).", - "This is a data test string (pass 606).", - "This is a data test string (pass 607).", - "This is a data test string (pass 608).", - "This is a data test string (pass 609).", - "This is a data test string (pass 610).", - "This is a data test string (pass 611).", - "This is a data test string (pass 612).", - "This is a data test string (pass 613).", - "This is a data test string (pass 614).", - "This is a data test string (pass 615).", - "This is a data test string (pass 616).", - "This is a data test string (pass 617).", - "This is a data test string (pass 618).", - "This is a data test string (pass 619).", - "This is a data test string (pass 620).", - "This is a data test string (pass 621).", - "This is a data test string (pass 622).", - "This is a data test string (pass 623).", - "This is a data test string (pass 624).", - "This is a data test string (pass 625).", - "This is a data test string (pass 626).", - "This is a data test string (pass 627).", - "This is a data test string (pass 628).", - "This is a data test string (pass 629).", - "This is a data test string (pass 630).", - "This is a data test string (pass 631).", - "This is a data test string (pass 632).", - "This is a data test string (pass 633).", - "This is a data test string (pass 634).", - "This is a data test string (pass 635).", - "This is a data test string (pass 636).", - "This is a data test string (pass 637).", - "This is a data test string (pass 638).", - "This is a data test string (pass 639).", - "This is a data test string (pass 640).", - "This is a data test string (pass 641).", - "This is a data test string (pass 642).", - "This is a data test string (pass 643).", - "This is a data test string (pass 644).", - "This is a data test string (pass 645).", - "This is a data test string (pass 646).", - "This is a data test string (pass 647).", - "This is a data test string (pass 648).", - "This is a data test string (pass 649).", - "This is a data test string (pass 650).", - "This is a data test string (pass 651).", - "This is a data test string (pass 652).", - "This is a data test string (pass 653).", - "This is a data test string (pass 654).", - "This is a data test string (pass 655).", - "This is a data test string (pass 656).", - "This is a data test string (pass 657).", - "This is a data test string (pass 658).", - "This is a data test string (pass 659).", - "This is a data test string (pass 660).", - "This is a data test string (pass 661).", - "This is a data test string (pass 662).", - "This is a data test string (pass 663).", - "This is a data test string (pass 664).", - "This is a data test string (pass 665).", - "This is a data test string (pass 666).", - "This is a data test string (pass 667).", - "This is a data test string (pass 668).", - "This is a data test string (pass 669).", - "This is a data test string (pass 670).", - "This is a data test string (pass 671).", - "This is a data test string (pass 672).", - "This is a data test string (pass 673).", - "This is a data test string (pass 674).", - "This is a data test string (pass 675).", - "This is a data test string (pass 676).", - "This is a data test string (pass 677).", - "This is a data test string (pass 678).", - "This is a data test string (pass 679).", - "This is a data test string (pass 680).", - "This is a data test string (pass 681).", - "This is a data test string (pass 682).", - "This is a data test string (pass 683).", - "This is a data test string (pass 684).", - "This is a data test string (pass 685).", - "This is a data test string (pass 686).", - "This is a data test string (pass 687).", - "This is a data test string (pass 688).", - "This is a data test string (pass 689).", - "This is a data test string (pass 690).", - "This is a data test string (pass 691).", - "This is a data test string (pass 692).", - "This is a data test string (pass 693).", - "This is a data test string (pass 694).", - "This is a data test string (pass 695).", - "This is a data test string (pass 696).", - "This is a data test string (pass 697).", - "This is a data test string (pass 698).", - "This is a data test string (pass 699).", - "This is a data test string (pass 700).", - "This is a data test string (pass 701).", - "This is a data test string (pass 702).", - "This is a data test string (pass 703).", - "This is a data test string (pass 704).", - "This is a data test string (pass 705).", - "This is a data test string (pass 706).", - "This is a data test string (pass 707).", - "This is a data test string (pass 708).", - "This is a data test string (pass 709).", - "This is a data test string (pass 710).", - "This is a data test string (pass 711).", - "This is a data test string (pass 712).", - "This is a data test string (pass 713).", - "This is a data test string (pass 714).", - "This is a data test string (pass 715).", - "This is a data test string (pass 716).", - "This is a data test string (pass 717).", - "This is a data test string (pass 718).", - "This is a data test string (pass 719).", - "This is a data test string (pass 720).", - "This is a data test string (pass 721).", - "This is a data test string (pass 722).", - "This is a data test string (pass 723).", - "This is a data test string (pass 724).", - "This is a data test string (pass 725).", - "This is a data test string (pass 726).", - "This is a data test string (pass 727).", - "This is a data test string (pass 728).", - "This is a data test string (pass 729).", - "This is a data test string (pass 730).", - "This is a data test string (pass 731).", - "This is a data test string (pass 732).", - "This is a data test string (pass 733).", - "This is a data test string (pass 734).", - "This is a data test string (pass 735).", - "This is a data test string (pass 736).", - "This is a data test string (pass 737).", - "This is a data test string (pass 738).", - "This is a data test string (pass 739).", - "This is a data test string (pass 740).", - "This is a data test string (pass 741).", - "This is a data test string (pass 742).", - "This is a data test string (pass 743).", - "This is a data test string (pass 744).", - "This is a data test string (pass 745).", - "This is a data test string (pass 746).", - "This is a data test string (pass 747).", - "This is a data test string (pass 748).", - "This is a data test string (pass 749).", - "This is a data test string (pass 750).", - "This is a data test string (pass 751).", - "This is a data test string (pass 752).", - "This is a data test string (pass 753).", - "This is a data test string (pass 754).", - "This is a data test string (pass 755).", - "This is a data test string (pass 756).", - "This is a data test string (pass 757).", - "This is a data test string (pass 758).", - "This is a data test string (pass 759).", - "This is a data test string (pass 760).", - "This is a data test string (pass 761).", - "This is a data test string (pass 762).", - "This is a data test string (pass 763).", - "This is a data test string (pass 764).", - "This is a data test string (pass 765).", - "This is a data test string (pass 766).", - "This is a data test string (pass 767).", - "This is a data test string (pass 768).", - "This is a data test string (pass 769).", - "This is a data test string (pass 770).", - "This is a data test string (pass 771).", - "This is a data test string (pass 772).", - "This is a data test string (pass 773).", - "This is a data test string (pass 774).", - "This is a data test string (pass 775).", - "This is a data test string (pass 776).", - "This is a data test string (pass 777).", - "This is a data test string (pass 778).", - "This is a data test string (pass 779).", - "This is a data test string (pass 780).", - "This is a data test string (pass 781).", - "This is a data test string (pass 782).", - "This is a data test string (pass 783).", - "This is a data test string (pass 784).", - "This is a data test string (pass 785).", - "This is a data test string (pass 786).", - "This is a data test string (pass 787).", - "This is a data test string (pass 788).", - "This is a data test string (pass 789).", - "This is a data test string (pass 790).", - "This is a data test string (pass 791).", - "This is a data test string (pass 792).", - "This is a data test string (pass 793).", - "This is a data test string (pass 794).", - "This is a data test string (pass 795).", - "This is a data test string (pass 796).", - "This is a data test string (pass 797).", - "This is a data test string (pass 798).", - "This is a data test string (pass 799).", - "This is a data test string (pass 800).", - "This is a data test string (pass 801).", - "This is a data test string (pass 802).", - "This is a data test string (pass 803).", - "This is a data test string (pass 804).", - "This is a data test string (pass 805).", - "This is a data test string (pass 806).", - "This is a data test string (pass 807).", - "This is a data test string (pass 808).", - "This is a data test string (pass 809).", - "This is a data test string (pass 810).", - "This is a data test string (pass 811).", - "This is a data test string (pass 812).", - "This is a data test string (pass 813).", - "This is a data test string (pass 814).", - "This is a data test string (pass 815).", - "This is a data test string (pass 816).", - "This is a data test string (pass 817).", - "This is a data test string (pass 818).", - "This is a data test string (pass 819).", - "This is a data test string (pass 820).", - "This is a data test string (pass 821).", - "This is a data test string (pass 822).", - "This is a data test string (pass 823).", - "This is a data test string (pass 824).", - "This is a data test string (pass 825).", - "This is a data test string (pass 826).", - "This is a data test string (pass 827).", - "This is a data test string (pass 828).", - "This is a data test string (pass 829).", - "This is a data test string (pass 830).", - "This is a data test string (pass 831).", - "This is a data test string (pass 832).", - "This is a data test string (pass 833).", - "This is a data test string (pass 834).", - "This is a data test string (pass 835).", - "This is a data test string (pass 836).", - "This is a data test string (pass 837).", - "This is a data test string (pass 838).", - "This is a data test string (pass 839).", - "This is a data test string (pass 840).", - "This is a data test string (pass 841).", - "This is a data test string (pass 842).", - "This is a data test string (pass 843).", - "This is a data test string (pass 844).", - "This is a data test string (pass 845).", - "This is a data test string (pass 846).", - "This is a data test string (pass 847).", - "This is a data test string (pass 848).", - "This is a data test string (pass 849).", - "This is a data test string (pass 850).", - "This is a data test string (pass 851).", - "This is a data test string (pass 852).", - "This is a data test string (pass 853).", - "This is a data test string (pass 854).", - "This is a data test string (pass 855).", - "This is a data test string (pass 856).", - "This is a data test string (pass 857).", - "This is a data test string (pass 858).", - "This is a data test string (pass 859).", - "This is a data test string (pass 860).", - "This is a data test string (pass 861).", - "This is a data test string (pass 862).", - "This is a data test string (pass 863).", - "This is a data test string (pass 864).", - "This is a data test string (pass 865).", - "This is a data test string (pass 866).", - "This is a data test string (pass 867).", - "This is a data test string (pass 868).", - "This is a data test string (pass 869).", - "This is a data test string (pass 870).", - "This is a data test string (pass 871).", - "This is a data test string (pass 872).", - "This is a data test string (pass 873).", - "This is a data test string (pass 874).", - "This is a data test string (pass 875).", - "This is a data test string (pass 876).", - "This is a data test string (pass 877).", - "This is a data test string (pass 878).", - "This is a data test string (pass 879).", - "This is a data test string (pass 880).", - "This is a data test string (pass 881).", - "This is a data test string (pass 882).", - "This is a data test string (pass 883).", - "This is a data test string (pass 884).", - "This is a data test string (pass 885).", - "This is a data test string (pass 886).", - "This is a data test string (pass 887).", - "This is a data test string (pass 888).", - "This is a data test string (pass 889).", - "This is a data test string (pass 890).", - "This is a data test string (pass 891).", - "This is a data test string (pass 892).", - "This is a data test string (pass 893).", - "This is a data test string (pass 894).", - "This is a data test string (pass 895).", - "This is a data test string (pass 896).", - "This is a data test string (pass 897).", - "This is a data test string (pass 898).", - "This is a data test string (pass 899).", - "This is a data test string (pass 900).", - "This is a data test string (pass 901).", - "This is a data test string (pass 902).", - "This is a data test string (pass 903).", - "This is a data test string (pass 904).", - "This is a data test string (pass 905).", - "This is a data test string (pass 906).", - "This is a data test string (pass 907).", - "This is a data test string (pass 908).", - "This is a data test string (pass 909).", - "This is a data test string (pass 910).", - "This is a data test string (pass 911).", - "This is a data test string (pass 912).", - "This is a data test string (pass 913).", - "This is a data test string (pass 914).", - "This is a data test string (pass 915).", - "This is a data test string (pass 916).", - "This is a data test string (pass 917).", - "This is a data test string (pass 918).", - "This is a data test string (pass 919).", - "This is a data test string (pass 920).", - "This is a data test string (pass 921).", - "This is a data test string (pass 922).", - "This is a data test string (pass 923).", - "This is a data test string (pass 924).", - "This is a data test string (pass 925).", - "This is a data test string (pass 926).", - "This is a data test string (pass 927).", - "This is a data test string (pass 928).", - "This is a data test string (pass 929).", - "This is a data test string (pass 930).", - "This is a data test string (pass 931).", - "This is a data test string (pass 932).", - "This is a data test string (pass 933).", - "This is a data test string (pass 934).", - "This is a data test string (pass 935).", - "This is a data test string (pass 936).", - "This is a data test string (pass 937).", - "This is a data test string (pass 938).", - "This is a data test string (pass 939).", - "This is a data test string (pass 940).", - "This is a data test string (pass 941).", - "This is a data test string (pass 942).", - "This is a data test string (pass 943).", - "This is a data test string (pass 944).", - "This is a data test string (pass 945).", - "This is a data test string (pass 946).", - "This is a data test string (pass 947).", - "This is a data test string (pass 948).", - "This is a data test string (pass 949).", - "This is a data test string (pass 950).", - "This is a data test string (pass 951).", - "This is a data test string (pass 952).", - "This is a data test string (pass 953).", - "This is a data test string (pass 954).", - "This is a data test string (pass 955).", - "This is a data test string (pass 956).", - "This is a data test string (pass 957).", - "This is a data test string (pass 958).", - "This is a data test string (pass 959).", - "This is a data test string (pass 960).", - "This is a data test string (pass 961).", - "This is a data test string (pass 962).", - "This is a data test string (pass 963).", - "This is a data test string (pass 964).", - "This is a data test string (pass 965).", - "This is a data test string (pass 966).", - "This is a data test string (pass 967).", - "This is a data test string (pass 968).", - "This is a data test string (pass 969).", - "This is a data test string (pass 970).", - "This is a data test string (pass 971).", - "This is a data test string (pass 972).", - "This is a data test string (pass 973).", - "This is a data test string (pass 974).", - "This is a data test string (pass 975).", - "This is a data test string (pass 976).", - "This is a data test string (pass 977).", - "This is a data test string (pass 978).", - "This is a data test string (pass 979).", - "This is a data test string (pass 980).", - "This is a data test string (pass 981).", - "This is a data test string (pass 982).", - "This is a data test string (pass 983).", - "This is a data test string (pass 984).", - "This is a data test string (pass 985).", - "This is a data test string (pass 986).", - "This is a data test string (pass 987).", - "This is a data test string (pass 988).", - "This is a data test string (pass 989).", - "This is a data test string (pass 990).", - "This is a data test string (pass 991).", - "This is a data test string (pass 992).", - "This is a data test string (pass 993).", - "This is a data test string (pass 994).", - "This is a data test string (pass 995).", - "This is a data test string (pass 996).", - "This is a data test string (pass 997).", - "This is a data test string (pass 998).", - "This is a data test string (pass 999).", - "This is a data test string (pass 1000).", - "This is a data test string (pass 1001).", - "This is a data test string (pass 1002).", - "This is a data test string (pass 1003).", - "This is a data test string (pass 1004).", - "This is a data test string (pass 1005).", - "This is a data test string (pass 1006).", - "This is a data test string (pass 1007).", - "This is a data test string (pass 1008).", - "This is a data test string (pass 1009).", - "This is a data test string (pass 1010).", - "This is a data test string (pass 1011).", - "This is a data test string (pass 1012).", - "This is a data test string (pass 1013).", - "This is a data test string (pass 1014).", - "This is a data test string (pass 1015).", - "This is a data test string (pass 1016).", - "This is a data test string (pass 1017).", - "This is a data test string (pass 1018).", - "This is a data test string (pass 1019).", - "This is a data test string (pass 1020).", - "This is a data test string (pass 1021).", - "This is a data test string (pass 1022).", - "This is a data test string (pass 1023).", - "This is a data test string (pass 1024).", - "This is a data test string (pass 1025).", - "This is a data test string (pass 1026).", - "This is a data test string (pass 1027).", - "This is a data test string (pass 1028).", - "This is a data test string (pass 1029).", - "This is a data test string (pass 1030).", - "This is a data test string (pass 1031).", - "This is a data test string (pass 1032).", - "This is a data test string (pass 1033).", - "This is a data test string (pass 1034).", - "This is a data test string (pass 1035).", - "This is a data test string (pass 1036).", - "This is a data test string (pass 1037).", - "This is a data test string (pass 1038).", - "This is a data test string (pass 1039).", - "This is a data test string (pass 1040).", - "This is a data test string (pass 1041).", - "This is a data test string (pass 1042).", - "This is a data test string (pass 1043).", - "This is a data test string (pass 1044).", - "This is a data test string (pass 1045).", - "This is a data test string (pass 1046).", - "This is a data test string (pass 1047).", - "This is a data test string (pass 1048).", - "This is a data test string (pass 1049).", - "This is a data test string (pass 1050).", - "This is a data test string (pass 1051).", - "This is a data test string (pass 1052).", - "This is a data test string (pass 1053).", - "This is a data test string (pass 1054).", - "This is a data test string (pass 1055).", - "This is a data test string (pass 1056).", - "This is a data test string (pass 1057).", - "This is a data test string (pass 1058).", - "This is a data test string (pass 1059).", - "This is a data test string (pass 1060).", - "This is a data test string (pass 1061).", - "This is a data test string (pass 1062).", - "This is a data test string (pass 1063).", - "This is a data test string (pass 1064).", - "This is a data test string (pass 1065).", - "This is a data test string (pass 1066).", - "This is a data test string (pass 1067).", - "This is a data test string (pass 1068).", - "This is a data test string (pass 1069).", - "This is a data test string (pass 1070).", - "This is a data test string (pass 1071).", - "This is a data test string (pass 1072).", - "This is a data test string (pass 1073).", - "This is a data test string (pass 1074).", - "This is a data test string (pass 1075).", - "This is a data test string (pass 1076).", - "This is a data test string (pass 1077).", - "This is a data test string (pass 1078).", - "This is a data test string (pass 1079).", - "This is a data test string (pass 1080).", - "This is a data test string (pass 1081).", - "This is a data test string (pass 1082).", - "This is a data test string (pass 1083).", - "This is a data test string (pass 1084).", - "This is a data test string (pass 1085).", - "This is a data test string (pass 1086).", - "This is a data test string (pass 1087).", - "This is a data test string (pass 1088).", - "This is a data test string (pass 1089).", - "This is a data test string (pass 1090).", - "This is a data test string (pass 1091).", - "This is a data test string (pass 1092).", - "This is a data test string (pass 1093).", - "This is a data test string (pass 1094).", - "This is a data test string (pass 1095).", - "This is a data test string (pass 1096).", - "This is a data test string (pass 1097).", - "This is a data test string (pass 1098).", - "This is a data test string (pass 1099).", - "This is a data test string (pass 1100).", - "This is a data test string (pass 1101).", - "This is a data test string (pass 1102).", - "This is a data test string (pass 1103).", - "This is a data test string (pass 1104).", - "This is a data test string (pass 1105).", - "This is a data test string (pass 1106).", - "This is a data test string (pass 1107).", - "This is a data test string (pass 1108).", - "This is a data test string (pass 1109).", - "This is a data test string (pass 1110).", - "This is a data test string (pass 1111).", - "This is a data test string (pass 1112).", - "This is a data test string (pass 1113).", - "This is a data test string (pass 1114).", - "This is a data test string (pass 1115).", - "This is a data test string (pass 1116).", - "This is a data test string (pass 1117).", - "This is a data test string (pass 1118).", - "This is a data test string (pass 1119)." ; - - u = - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.04.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.04.dmp deleted file mode 100644 index c5d9c9c395f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.04.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf test { -types: - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_t -variables: - types_t types ; -data: - - types = - {0, 1, 0, 0, 0, 0, 1000, "This is a data test string (pass 0).", "http://www.dods.org"} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.05.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.05.dmp deleted file mode 100644 index 5449e8e0390..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.05.dmp +++ /dev/null @@ -1,29 +0,0 @@ -netcdf test { -types: - compound integers_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - }; // integers_t - compound floats_t { - float f32 ; - double f64 ; - }; // floats_t - compound strings_t { - string s ; - string u ; - }; // strings_t - compound types_t { - integers_t integers ; - floats_t floats ; - strings_t strings ; - }; // types_t -variables: - types_t types ; -data: - - types = - {{0, 1, 0, 0, 0}, {0, 1000}, {"This is a data test string (pass 0).", "http://www.dods.org"}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.06a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.06a.dmp deleted file mode 100644 index a5177b3f85f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.06a.dmp +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test { -types: - compound OneD_t { - double amp(10) ; - double x(10) ; - }; // OneD_t -variables: - OneD_t OneD ; -data: - - OneD = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07.dmp deleted file mode 100644 index 57716490c20..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07.dmp +++ /dev/null @@ -1,36 +0,0 @@ -netcdf test { -types: - compound person_record_t { - string name ; - int age ; - }; // person_record_t - person_record_t(*) person_t ; - compound types_record_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_record_t - types_record_t(*) types_t ; -variables: - person_t person ; - types_t types ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; -data: - - person = - {{"This is a data test string (pass 0).", 1}, {"This is a data test string (pass 1).", 2}, {"This is a data test string (pass 2).", 3}, {"This is a data test string (pass 3).", 5}, {"This is a data test string (pass 4).", 8}} ; - - types = - {{0, 13, 0, 0, 0, 0, 1000, "This is a data test string (pass 5).", "http://www.dods.org"}, {1, 21, 2, 16, 65520, 0.9999833, 999.950000416665, "This is a data test string (pass 6).", "http://www.dods.org"}, {2, 34, 6, 32, 65504, 1.999867, 999.800006666578, "This is a data test string (pass 7).", "http://www.dods.org"}, {3, 55, 12, 48, 65488, 2.99955, 999.550033748988, "This is a data test string (pass 8).", "http://www.dods.org"}, {4, 89, 20, 64, 65472, 3.998933, 999.200106660978, "This is a data test string (pass 9).", "http://www.dods.org"}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07a.dmp deleted file mode 100644 index ccfd6c96337..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.07a.dmp +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test { -types: - compound person1_t { - string name ; - int age ; - }; // person1_t - compound person2_t { - string name ; - int age ; - }; // person2_t -variables: - person1_t person1 ; - person2_t person2 ; -data: - - person1 = {"This is a data test string (pass 0).", 1} ; - - person2 = {"This is a data test string (pass 1).", 2} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.21.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.21.dmp deleted file mode 100644 index 876df504cc4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.21.dmp +++ /dev/null @@ -1,21 +0,0 @@ -netcdf test { -types: - compound exp_t { - int j ; - int i ; - short g(3, 3, 3) ; - short f(2, 2) ; - }; // exp_t -variables: - exp_t exp ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; -data: - - exp = - {1, 2, {0, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, 6144, 6400, 6656}, {0, 256, 512, 768}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.22.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.22.dmp deleted file mode 100644 index 87e35fc4872..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.22.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - data_t data ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.23.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.23.dmp deleted file mode 100644 index 19740d67ab3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.23.dmp +++ /dev/null @@ -1,36 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound profile_t { - double fluor(10) ; - double depth(10) ; - }; // profile_t - compound ComplexSequence_record_t { - data_t data ; - float lat ; - float lng ; - profile_t profile ; - }; // ComplexSequence_record_t - ComplexSequence_record_t(*) ComplexSequence_t ; - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - ComplexSequence_t ComplexSequence ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {{{2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 0, 0.9999833, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{3, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 1.999867, 2.99955, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 3.998933, 4.997917, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{8, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 5.996401, 6.994285, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{13, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 7.991469, 8.987855, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.31.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.31.dmp deleted file mode 100644 index 77c20d3de0e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.31.dmp +++ /dev/null @@ -1,24 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(2, 5) ; - }; // data_t - compound profile_t { - double fluor(10) ; - double depth(10) ; - }; // profile_t - compound CS01_record_t { - data_t data ; - float lat ; - float lng ; - profile_t profile ; - }; // CS01_record_t - CS01_record_t(*) CS01_t ; -variables: - CS01_t CS01 ; -data: - - CS01 = - {{{1, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 0, 0.9999833, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 1.999867, 2.99955, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{3, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 3.998933, 4.997917, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 5.996401, 6.994285, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{8, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 7.991469, 8.987855, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.50.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.50.dmp deleted file mode 100644 index 80e7cc64b04..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.50.dmp +++ /dev/null @@ -1,31 +0,0 @@ -netcdf test { -types: - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_t -dimensions: - types_0 = 10 ; -variables: - types_t types(types_0) ; -data: - - types = - {0, 1, 0, 0, 0, 0, 1000, "This is a data test string (pass 0).", "http://www.dods.org"}, - {1, 2, 2, 16, 65520, 0.9999833, 999.950000416665, "This is a data test string (pass 1).", "http://www.dods.org"}, - {2, 3, 6, 32, 65504, 1.999867, 999.800006666578, "This is a data test string (pass 2).", "http://www.dods.org"}, - {3, 5, 12, 48, 65488, 2.99955, 999.550033748988, "This is a data test string (pass 3).", "http://www.dods.org"}, - {4, 8, 20, 64, 65472, 3.998933, 999.200106660978, "This is a data test string (pass 4).", "http://www.dods.org"}, - {5, 13, 30, 80, 65456, 4.997917, 998.750260394966, "This is a data test string (pass 5).", "http://www.dods.org"}, - {6, 21, 42, 96, 65440, 5.996401, 998.200539935204, "This is a data test string (pass 6).", "http://www.dods.org"}, - {7, 34, 56, 112, 65424, 6.994285, 997.55100025328, "This is a data test string (pass 7).", "http://www.dods.org"}, - {8, 55, 72, 128, 65408, 7.991469, 996.801706302619, "This is a data test string (pass 8).", "http://www.dods.org"}, - {9, 89, 90, 144, 65392, 8.987855, 995.952733011994, "This is a data test string (pass 9).", "http://www.dods.org"} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.53.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.53.dmp deleted file mode 100644 index cc0c9be3ab5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.53.dmp +++ /dev/null @@ -1,34 +0,0 @@ -netcdf test { -types: - compound ss_t { - ushort ui16(10) ; - float f32 ; - double f64 ; - string s ; - string u(5) ; - }; // ss_t - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ss_t ss ; - }; // types_t -dimensions: - types_0 = 10 ; -variables: - types_t types(types_0) ; -data: - - types = - {0, 1, 0, 0, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 0, 1000, "This is a data test string (pass 0).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {1, 2, 2, 16, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 0.9999833, 999.950000416665, "This is a data test string (pass 1).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {2, 3, 6, 32, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 1.999867, 999.800006666578, "This is a data test string (pass 2).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {3, 5, 12, 48, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 2.99955, 999.550033748988, "This is a data test string (pass 3).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {4, 8, 20, 64, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 3.998933, 999.200106660978, "This is a data test string (pass 4).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {5, 13, 30, 80, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 4.997917, 998.750260394966, "This is a data test string (pass 5).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {6, 21, 42, 96, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 5.996401, 998.200539935204, "This is a data test string (pass 6).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {7, 34, 56, 112, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 6.994285, 997.55100025328, "This is a data test string (pass 7).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {8, 55, 72, 128, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 7.991469, 996.801706302619, "This is a data test string (pass 8).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {9, 89, 90, 144, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 8.987855, 995.952733011994, "This is a data test string (pass 9).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.55.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.55.dmp deleted file mode 100644 index 72fb3080fe0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.55.dmp +++ /dev/null @@ -1,23 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound foo_t { - int j ; - int i(3) ; - data_t data ; - }; // foo_t - compound ralph_record_t { - ubyte b ; - foo_t foo ; - }; // ralph_record_t - ralph_record_t(*) ralph_t ; -variables: - ralph_t ralph ; -data: - - ralph = - {{0, {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {1, {3, {0, 2048, 4096}, {5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {2, {8, {0, 2048, 4096}, {13, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {3, {21, {0, 2048, 4096}, {34, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {4, {55, {0, 2048, 4096}, {89, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.56.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.56.dmp deleted file mode 100644 index c674e11de85..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.56.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound foo_record_t { - ubyte b(10) ; - int i(10) ; - }; // foo_record_t - foo_record_t(*) foo_t ; -variables: - foo_t foo ; -data: - - foo = - {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.57.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.57.dmp deleted file mode 100644 index c674e11de85..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.57.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound foo_record_t { - ubyte b(10) ; - int i(10) ; - }; // foo_record_t - foo_record_t(*) foo_t ; -variables: - foo_t foo ; -data: - - foo = - {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.66.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.66.dmp deleted file mode 100644 index 39073a72aec..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.66.dmp +++ /dev/null @@ -1,42 +0,0 @@ -netcdf test { -types: - compound long_names_one_t { - int long_one ; - int long_two ; - int long_three ; - int long_four ; - int long_five ; - int long_six ; - double long_one_float ; - double long_two_float ; - double long_three_float ; - }; // long_names_one_t - compound long_names_one_and_a_half_t { - int long_one_float1 ; - int long_two_float1 ; - int long_three_float3 ; - int long_four ; - int long_five ; - int long_six ; - double long_one_float ; - double long_two_float ; - double long_three_float ; - }; // long_names_one_and_a_half_t - compound long_names_two_t { - int a_very_long_name_given_what_it_accomplishes ; - int another_name_nearly_as_pointless ; - }; // long_names_two_t -variables: - long_names_one_t long_names_one ; - long_names_one_and_a_half_t long_names_one_and_a_half ; - long_names_two_t long_names_two ; -data: - - long_names_one = - {1, 2, 3, 5, 8, 13, 1000, 999.950000416665, 999.800006666578} ; - - long_names_one_and_a_half = - {21, 34, 55, 89, 144, 233, 999.550033748988, 999.200106660978, 998.750260394966} ; - - long_names_two = {377, 610} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.69.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.69.dmp deleted file mode 100644 index 3b61d549295..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.69.dmp +++ /dev/null @@ -1,401 +0,0 @@ -netcdf test { -types: - compound exp_t { - int j ; - int i ; - }; // exp_t -dimensions: - f_0 = 17 ; - f_1 = 121 ; - i_0 = 10 ; - i_1 = 20 ; -variables: - int i(i_0, i_1) ; - float f(f_0, f_1) ; - exp_t exp ; -data: - - i = - 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, 112640, 114688, 116736, 118784, - 120832, - 122880, 124928, 126976, 129024, 131072, 133120, 135168, 137216, 139264, - 141312, 143360, 145408, 147456, 149504, 151552, 153600, 155648, 157696, - 159744, 161792, - 163840, 165888, 167936, 169984, 172032, 174080, 176128, 178176, 180224, - 182272, 184320, 186368, 188416, 190464, 192512, 194560, 196608, 198656, - 200704, 202752, - 204800, 206848, 208896, 210944, 212992, 215040, 217088, 219136, 221184, - 223232, 225280, 227328, 229376, 231424, 233472, 235520, 237568, 239616, - 241664, 243712, - 245760, 247808, 249856, 251904, 253952, 256000, 258048, 260096, 262144, - 264192, 266240, 268288, 270336, 272384, 274432, 276480, 278528, 280576, - 282624, 284672, - 286720, 288768, 290816, 292864, 294912, 296960, 299008, 301056, 303104, - 305152, 307200, 309248, 311296, 313344, 315392, 317440, 319488, 321536, - 323584, 325632, - 327680, 329728, 331776, 333824, 335872, 337920, 339968, 342016, 344064, - 346112, 348160, 350208, 352256, 354304, 356352, 358400, 360448, 362496, - 364544, 366592, - 368640, 370688, 372736, 374784, 376832, 378880, 380928, 382976, 385024, - 387072, 389120, 391168, 393216, 395264, 397312, 399360, 401408, 403456, - 405504, 407552 ; - - f = - 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, - 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, - 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, - 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, - 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, - 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, - 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, - 0.4168708, 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, - 0.4706259, 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, - 0.5226873, 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, - 0.5728675, 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, - 0.620986, 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, - 0.6668696, 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, - 0.7103533, 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, - 0.7512804, 0.7578425, 0.764329, 0.7707389, 0.7770718, 0.7833269, - 0.7895038, 0.7956016, 0.8016199, 0.8075581, 0.8134155, 0.8191916, - 0.8248857, 0.8304974, 0.836026, 0.841471, 0.8468319, 0.852108, 0.857299, - 0.8624042, 0.8674232, 0.8723555, 0.8772005, 0.8819578, 0.8866269, - 0.8912073, 0.8956987, 0.9001005, 0.9044122, 0.9086335, 0.912764, - 0.9168031, 0.9207506, 0.924606, 0.928369, 0.9320391, - 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, - 0.9580159, 0.960835, 0.9635582, 0.966185, 0.9687151, 0.9711484, - 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, 0.9837008, - 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, 0.992713, - 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, 0.9981525, - 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, 0.9999997, - 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, 0.998248, - 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, - 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, - 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, - 0.9691091, 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, - 0.9525762, 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, - 0.932615, 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, - 0.9092974, 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, - 0.8827074, 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, - 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, - 0.8201039, 0.8143409, 0.8084964, 0.8025711, 0.7965655, 0.7904802, - 0.7843159, 0.7780732, 0.7717527, 0.7653549, 0.7588807, 0.7523306, - 0.7457052, 0.7390053, 0.7322314, 0.7253844, 0.7184648, 0.7114733, - 0.7044108, 0.6972777, 0.690075, 0.6828032, 0.6754632, 0.6680556, - 0.6605812, 0.6530408, 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, - 0.6064535, 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, - 0.5576837, 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, - 0.5069069, 0.4982616, 0.4895666, 0.4808226, 0.4720306, 0.4631913, - 0.4543057, 0.4453746, 0.4363991, 0.4273799, 0.4183179, 0.4092142, - 0.4000695, 0.3908848, 0.381661, 0.372399, 0.3630998, 0.3537644, - 0.3443935, 0.3349881, 0.3255493, 0.316078, 0.306575, 0.2970414, 0.287478, - 0.2778859, 0.2682661, 0.2586193, 0.2489468, 0.2392493, 0.229528, - 0.2197836, 0.2100173, 0.20023, 0.1904227, 0.1805963, 0.1707518, - 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, - 0.09146464, 0.08150215, 0.07153151, 0.06155372, 0.05156977, 0.04158066, - 0.0315874, 0.02159098, 0.01159239, 0.001592653, -0.008407247, - -0.01840631, -0.02840353, -0.0383979, -0.04838844, -0.05837414, - -0.068354, -0.07832703, -0.08829223, -0.09824859, -0.1081951, -0.1181309, - -0.1280548, -0.1379659, -0.1478632, -0.1577457, -0.1676124, -0.1774624, - -0.1872947, -0.1971082, -0.206902, -0.2166751, -0.2264265, -0.2361553, - -0.2458605, -0.2555411, -0.2651961, -0.2748247, -0.2844257, -0.2939983, - -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, - -0.3601301, -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, - -0.4154226, -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, - -0.46922, -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, - -0.5213288, -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, - -0.5715613, -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, - -0.6197369, -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, - -0.665682, -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, - -0.7092314, -0.7162456, -0.7231881, -0.7300584, -0.7368556, -0.7435791, - -0.7502283, -0.7568025, -0.763301, -0.7697231, -0.7760683, -0.7823359, - -0.7885253, -0.7946358, -0.8006668, -0.8066177, -0.8124881, -0.8182771, - -0.8239843, -0.8296092, -0.835151, -0.8406094, -0.8459837, -0.8512734, - -0.856478, -0.8615969, -0.8666297, -0.8715758, -0.8764347, -0.881206, - -0.8858892, -0.8904838, -0.8949894, -0.8994054, -0.9037315, -0.9079673, - -0.9121122, -0.9161659, -0.920128, -0.9239982, -0.9277759, -0.9314608, - -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, -0.9516021, - -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, -0.9683186, - -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, -0.9815503, - -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, -0.9912494, - -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, -0.9973811, - -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, -0.9999232, - -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, -0.9988668, - -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, - -0.9930918, - -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, - -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, - -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, - -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, - -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, - -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, - -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, - -0.8537708, -0.8485217, -0.8431877, -0.8377695, -0.8322675, -0.8266822, - -0.8210142, -0.8152642, -0.8094327, -0.8035201, -0.7975273, -0.7914547, - -0.7853029, -0.7790727, -0.7727645, -0.766379, -0.7599169, -0.7533789, - -0.7467654, -0.7400773, -0.7333152, -0.7264798, -0.7195717, -0.7125916, - -0.7055403, -0.6984185, -0.6912268, -0.683966, -0.6766368, -0.6692399, - -0.6617761, -0.6542461, -0.6466507, -0.6389906, -0.6312667, -0.6234795, - -0.6156301, -0.6077191, -0.5997473, -0.5917156, -0.5836247, -0.5754754, - -0.5672686, -0.559005, -0.5506855, -0.542311, -0.5338823, -0.5254001, - -0.5168654, -0.5082791, -0.4996419, -0.4909547, -0.4822185, -0.473434, - -0.4646022, -0.4557239, -0.4468001, -0.4378315, -0.4288192, -0.419764, - -0.4106669, -0.4015286, -0.3923502, -0.3831326, -0.3738767, -0.3645833, - -0.3552535, -0.3458883, -0.3364884, -0.3270548, -0.3175886, -0.3080906, - -0.2985618, -0.2890031, -0.2794155, -0.2698, -0.2601575, -0.250489, - -0.2407954, - -0.2310778, -0.2213371, -0.2115742, -0.2017901, -0.1919859, -0.1821625, - -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, -0.122874, - -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, -0.06314328, - -0.05316024, -0.04317189, -0.03317922, -0.02318323, -0.01318493, - -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, 0.0467976, - 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, 0.1066117, - 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, 0.1660421, - 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, 0.2346074, - 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, - 0.3020236, 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, - 0.3586439, 0.3679605, 0.3772404, 0.3864825, 0.395686, 0.4048499, - 0.4139734, 0.4230554, 0.4320951, 0.4410917, 0.4500441, 0.4589515, - 0.467813, 0.4766277, 0.4853948, 0.4941134, 0.5027825, 0.5114013, - 0.519969, 0.5284848, 0.5369476, 0.5453568, 0.5537114, 0.5620106, - 0.5702537, 0.5784398, 0.5865679, 0.5946375, 0.6026475, 0.6105974, - 0.6184861, 0.626313, 0.6340773, 0.6417782, 0.6494148, 0.6569866, - 0.6644927, 0.6719322, 0.6793047, 0.6866091, 0.693845, 0.7010114, - 0.7081077, 0.7151332, 0.7220873, 0.728969, 0.735778, 0.7425133, - 0.7491744, 0.7557605, 0.7622711, 0.7687054, 0.7750629, 0.7813429, - 0.7875448, 0.7936679, 0.7997116, 0.8056753, 0.8115585, 0.8173606, - 0.8230809, - 0.8287189, 0.834274, 0.8397457, 0.8451334, 0.8504366, 0.8556548, 0.8607874, - 0.8658339, 0.8707939, 0.8756667, 0.880452, 0.8851492, 0.889758, - 0.8942778, 0.8987081, 0.9030486, 0.9072987, 0.9114581, 0.9155264, - 0.9195032, 0.9233879, 0.9271804, 0.9308801, 0.9344868, 0.938, 0.9414194, - 0.9447446, 0.9479754, 0.9511114, 0.9541523, 0.9570977, 0.9599475, - 0.9627013, 0.9653587, 0.9679196, 0.9703838, 0.972751, 0.9750208, - 0.9771932, 0.9792678, 0.9812445, 0.9831231, 0.9849033, 0.9865851, - 0.9881682, 0.9896525, 0.9910379, 0.9923241, 0.9935111, 0.9945988, - 0.995587, 0.9964756, 0.9972646, 0.9979539, 0.9985433, 0.999033, - 0.9994227, 0.9997125, 0.9999022, 0.9999921, 0.9999819, 0.9998717, - 0.9996616, 0.9993514, 0.9989414, 0.9984314, 0.9978216, 0.997112, - 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, 0.9907638, - 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, 0.9808499, - 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, 0.9674059, - 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, 0.9504804, - 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, 0.9301341, - 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, - 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, - 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, - 0.8440429, 0.8386381, 0.8331493, 0.8275773, 0.8219225, - 0.8161855, 0.8103669, 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, - 0.7737743, 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, - 0.7343971, 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, - 0.6923768, 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, - 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, - 0.601021, 0.5929987, 0.5849172, 0.5767772, 0.5685794, 0.5603248, - 0.5520142, 0.5436484, 0.5352283, 0.5267546, 0.5182282, 0.50965, - 0.5010208, 0.4923416, 0.4836131, 0.4748363, 0.4660119, 0.457141, - 0.4482243, 0.4392629, 0.4302575, 0.421209, 0.4121185, 0.4029867, - 0.3938147, 0.3846032, 0.3753533, 0.3660659, 0.3567419, 0.3473822, - 0.3379877, 0.3285595, 0.3190984, 0.3096054, 0.3000814, 0.2905274, - 0.2809443, 0.2713332, 0.261695, 0.2520306, 0.2423409, 0.232627, - 0.2228899, 0.2131305, 0.2033498, 0.1935487, 0.1837283, 0.1738895, - 0.1640333, 0.1541607, 0.1442727, 0.1343703, 0.1244544, 0.1145261, - 0.1045863, 0.09463613, 0.08467644, 0.07470829, 0.06473266, 0.05475057, - 0.044763, 0.03477095, 0.02477542, 0.01477742, 0.004777943, -0.005222016, - -0.01522145, -0.02521937, -0.03521476, -0.04520663, -0.05519398, - -0.06517581, -0.07515112, -0.08511892, -0.09507821, -0.105028, - -0.1149673, -0.124895, -0.1348103, -0.1447121, -0.1545995, -0.1644713, - -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, - -0.2330589, -0.2427717, - -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, - -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, - -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, - -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, - -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, - -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, - -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, - -0.6250706, -0.6328449, -0.640556, -0.6482029, -0.6557851, -0.6633016, - -0.6707519, -0.678135, -0.6854504, -0.6926972, -0.6998747, -0.7069823, - -0.7140191, -0.7209845, -0.7278779, -0.7346984, -0.7414455, -0.7481185, - -0.7547166, -0.7612393, -0.7676858, -0.7740556, -0.7803479, -0.7865623, - -0.792698, -0.7987544, -0.8047309, -0.810627, -0.816442, -0.8221753, - -0.8278264, -0.8333948, -0.8388798, -0.844281, -0.8495977, -0.8548294, - -0.8599757, -0.865036, -0.8700097, -0.8748965, -0.8796958, -0.884407, - -0.8890299, -0.8935639, -0.8980085, -0.9023633, -0.9066279, -0.9108018, - -0.9148846, -0.918876, -0.9227754, -0.9265826, -0.9302971, -0.9339186, - -0.9374467, -0.9408811, -0.9442213, -0.9474672, -0.9506183, -0.9536743, - -0.956635, -0.9595, -0.9622691, -0.9649419, -0.9675183, -0.9699979, - -0.9723805, -0.9746658, -0.9768537, -0.9789439, -0.9809362, -0.9828305, - -0.9846264, -0.9863239, -0.9879227, -0.9894227, -0.9908239, -0.9921259, - -0.9933288, - -0.9944322, -0.9954363, -0.9963408, -0.9971456, -0.9978508, -0.9984561, - -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, -0.9999902, - -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, -0.9979254, - -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, -0.9922691, - -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, -0.9830417, - -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, -0.9702765, - -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, -0.9540192, - -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, -0.9343286, - -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, - -0.9071119, -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, - -0.8802414, -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, - -0.8502029, -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, - -0.8171046, -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, - -0.7810657, -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, - -0.7422158, -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, - -0.7006946, -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, - -0.6566517, -0.6490771, -0.6414375, -0.6337339, -0.6259668, -0.6181371, - -0.6102456, -0.6022931, -0.5942804, -0.5862082, -0.5780774, -0.5698889, - -0.5616433, -0.5533416, -0.5449845, -0.5365729, -0.5281077, -0.5195897, - -0.5110196, -0.5023986, -0.4937272, -0.4850065, -0.4762373, -0.4674205, - -0.4585569, - -0.4496475, -0.4406931, -0.4316946, -0.422653, -0.4135691, -0.4044438, - -0.3952781, -0.3860729, -0.3768291, -0.3675475, -0.3582293, -0.3488752, - -0.3394862, -0.3300633, -0.3206073, -0.3111193, -0.3016002, -0.292051, - -0.2824725, -0.2728658, -0.2632318, -0.2535715, -0.2438858, -0.2341757, - -0.2244422, -0.2146863, -0.2049089, -0.195111, -0.1852936, -0.1754577, - -0.1656042, -0.1557341, -0.1458485, -0.1359483, -0.1260345, -0.1161081, - -0.1061701, -0.09622151, -0.08626327, -0.0762964, -0.06632189, - -0.05634077, -0.046354, -0.0363626, -0.02636756, -0.01636988, - -0.006370571, 0.003629378, 0.01362896, 0.02362719, 0.03362305, - 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, 0.09349265, - 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, - 0.1727583, 0.1825991, 0.1924217, 0.2022251, 0.2120082, 0.2217701, - 0.2315098, 0.2412264, 0.2509189, 0.2605863, 0.2702276, 0.2798419, - 0.2894282, 0.2989855, 0.308513, 0.3180096, 0.3274744, 0.3369065, - 0.3463049, 0.3556686, 0.3649968, 0.3742885, 0.3835427, 0.3927587, - 0.4019353, 0.4110717, 0.420167, 0.4292203, 0.4382307, 0.4471973, - 0.4561191, 0.4649954, 0.4738251, 0.4826075, 0.4913416, 0.5000265, - 0.5086614, 0.5172455, 0.5257779, 0.5342577, 0.5426841, 0.5510561, - 0.5593731, 0.5676342, 0.5758385, 0.5839852, 0.5920735, 0.6001026, - 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, 0.6469893, 0.6545818, - 0.6621089, 0.6695698, - 0.6769636, 0.6842899, 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, - 0.7267848, 0.7336171, 0.7403759, 0.7470607, 0.7536708, 0.7602055, - 0.7666642, 0.7730463, 0.779351, 0.7855778, 0.7917261, 0.7977951, - 0.8037844, 0.8096933, 0.8155213, 0.8212677, 0.826932, 0.8325136, - 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, - 0.8692234, 0.8741241, 0.8789373, 0.8836626, 0.8882996, 0.8928478, - 0.8973066, 0.9016758, 0.9059547, 0.9101431, 0.9142405, 0.9182464, - 0.9221606, 0.9259824, 0.9297118, 0.9333481, 0.9368911, 0.9403404, - 0.9436957, 0.9469566, 0.9501228, 0.953194, 0.9561699, 0.9590501, - 0.9618345, 0.9645227, 0.9671144, 0.9696094, 0.9720075, 0.9743084, - 0.9765118, 0.9786175, 0.9806255, 0.9825354, 0.9843469, 0.9860601, - 0.9876747, 0.9891905, 0.9906074, 0.9919252, 0.9931438, 0.9942631, - 0.995283, 0.9962034, 0.9970241, 0.9977452, 0.9983664, 0.9988878, - 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, 0.9999177, - 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, 0.9973488, - 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, 0.9911907, - 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, 0.9814652, - 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, 0.9682076, - 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, - 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, - 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, - 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, - 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, - 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, - 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, - 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, - 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, - 0.6946716, 0.6874437, 0.6801471, 0.6727825, 0.6653506, 0.6578521, - 0.6502879, 0.6426586, 0.6349651, 0.627208, 0.6193883, 0.6115066, - 0.6035637, 0.5955606, 0.5874978, 0.5793763, 0.5711969, 0.5629603, - 0.5546675, 0.5463191, 0.5379162, 0.5294595, 0.5209498, 0.512388, - 0.503775, 0.4951116, 0.4863987, 0.4776371, 0.4688278, 0.4599716, - 0.4510695, 0.4421222, 0.4331307, 0.4240958, 0.4150186, 0.4058999, - 0.3967406, 0.3875416, 0.3783038, 0.3690283, 0.3597158, 0.3503673, - 0.3409838, 0.3315663, 0.3221155, 0.3126326, 0.3031183, 0.2935738, - 0.2839999, 0.2743977, 0.2647679, 0.2551118, 0.24543, 0.2357238, 0.225994, - 0.2162415, 0.2064675, 0.1966728, 0.1868584, 0.1770254, 0.1671746, - 0.1573072, 0.147424, 0.137526, 0.1276143, 0.1176899, 0.1077536, - 0.09780665, 0.08784988, 0.07788431, 0.06791096, 0.05793082, 0.04794488, - 0.03795415, 0.02795962, 0.0179623, 0.007963183, -0.002036731, -0.01203644, - -0.02203495, -0.03203125, -0.04202435, -0.05201325, -0.06199695, - -0.07197444, -0.08194474, -0.09190685, -0.1018598, -0.1118025, -0.121734, - -0.1316534, -0.1415596, -0.1514517, -0.1613286, -0.1711894, -0.181033, - -0.1908586, -0.2006651, -0.2104515, -0.2202168, -0.2299601, -0.2396805, - -0.2493769, -0.2590483, -0.2686938, -0.2783125, -0.2879033, -0.2974654, - -0.3069977, -0.3164992, -0.3259692, -0.3354065, -0.3448103, -0.3541797, - -0.3635136, -0.3728111, -0.3820714, -0.3912935, -0.4004764, -0.4096193, - -0.4187213, -0.4277813, -0.4367986, -0.4457722, -0.4547012, -0.4635848, - -0.472422, -0.4812119, -0.4899538, -0.4986466, -0.5072896, -0.5158818, - -0.5244225, -0.5329107, -0.5413457, -0.5497264, -0.5580522, -0.5663223, - -0.5745357, -0.5826916, -0.5907893, -0.5988278, -0.6068066, -0.6147246, - -0.6225811, -0.6303754, -0.6381067, -0.6457741, -0.653377, -0.6609145, - -0.668386, -0.6757905, -0.6831276, -0.6903963, -0.697596, -0.7047259, - -0.7117853, -0.7187736, -0.72569, -0.7325338, -0.7393044, -0.746001, - -0.7526231, -0.7591698, -0.7656407, -0.772035, -0.7783521, -0.7845913, - -0.7907521, -0.7968339, -0.8028359, -0.8087577, -0.8145986, -0.820358, - -0.8260354, -0.8316302, -0.8371418, -0.8425697, -0.8479133, -0.8531722, - -0.8583457, -0.8634335, -0.8684348, -0.8733494, -0.8781766, -0.882916, - -0.887567, -0.8921294, -0.8966025, -0.900986, -0.9052793, -0.9094821, - -0.913594, -0.9176146, -0.9215433, -0.9253799, -0.929124, -0.9327752, - -0.9363331, -0.9397973, - -0.9431676, -0.9464436, -0.9496249, -0.9527112, -0.9557023, -0.9585978, - -0.9613975, -0.964101, -0.9667081, -0.9692186, -0.9716321, -0.9739484, - -0.9761674, -0.9782887, -0.9803122, -0.9822378, -0.984065, -0.9857939, - -0.9874241, -0.9889557, -0.9903883, -0.9917219, -0.9929563, -0.9940915, - -0.9951273, -0.9960635, -0.9969001, -0.997637, -0.9982741, -0.9988115, - -0.9992489, -0.9995865, -0.999824, -0.9999616, -0.9999992, -0.9999368, - -0.9997745, -0.9995121, -0.9991497, -0.9986875, -0.9981254, -0.9974635, - -0.9967018, -0.9958405, -0.9948795, -0.9938192, -0.9926594, -0.9914004, - -0.9900422, -0.9885849, -0.9870289, -0.9853742, -0.9836209, -0.9817692, - -0.9798194, -0.9777716, -0.975626, -0.9733829, -0.9710424, -0.9686048, - -0.9660704, -0.9634393, -0.9607119, -0.9578884, -0.9549692, -0.9519544, - -0.9488445, -0.9456397, -0.9423403, -0.9389467, -0.9354591, -0.9318781, - -0.9282038, -0.9244367, -0.9205772, -0.9166257, -0.9125825, -0.908448, - -0.9042226, -0.8999069, -0.8955011, -0.8910058, -0.8864214, -0.8817484, - -0.8769872, -0.8721383, -0.8672022, -0.8621793, -0.8570703, -0.8518755, - -0.8465956, -0.841231, -0.8357822, -0.8302499, -0.8246346, -0.8189368, - -0.8131571, -0.8072961, -0.8013543, -0.7953325, -0.7892311, -0.7830508, - -0.7767922, -0.7704558, -0.7640425, -0.7575527, -0.7509872, -0.7443466, - -0.7376316, -0.7308428, -0.7239809, -0.7170466, -0.7100406, -0.7029637, - -0.6958163, -0.6885995, -0.6813138, -0.6739599, -0.6665387, -0.6590508, - -0.6514969, - -0.643878, -0.6361946, -0.6284477, -0.6206378, -0.612766, -0.6048328, - -0.5968392, -0.5887859, -0.5806737, -0.5725034, -0.5642759, -0.5559919, - -0.5476524, -0.5392581, -0.5308099, -0.5223086, -0.513755, -0.5051501, - -0.4964947, -0.4877896, -0.4790358, -0.470234, -0.4613852, -0.4524903, - -0.4435501, -0.4345656, -0.4255376, -0.4164671, -0.4073549, -0.398202, - -0.3890093, -0.3797776, -0.370508, -0.3612014, -0.3518586, -0.3424806, - -0.3330684, -0.3236229, -0.314145, -0.3046357, -0.2950959, -0.2855267, - -0.2759288, -0.2663034, -0.2566514, -0.2469737, -0.2372712, -0.2275451, - -0.2177962, -0.2080256, -0.1982341, -0.1884228, -0.1785927, -0.1687447, - -0.1588798, -0.148999, -0.1391034, -0.1291938, -0.1192713, -0.1093369, - -0.09939155, -0.08943626, -0.07947203, -0.06949985, -0.05952072, - -0.04953564, -0.03954561, -0.02955162, -0.01955467, -0.009555776, - 0.0004440784, 0.01044389, 0.02044265, 0.03043937, 0.04043305, 0.05042269, - 0.06040728, 0.07038583, 0.08035734, 0.09032082, 0.1002753, 0.1102197, - 0.1201531, 0.1300745, 0.1399828, 0.1498772, 0.1597566, 0.16962, - 0.1794665, 0.189295, 0.1991045, 0.2088942, 0.218663, 0.2284099, 0.238134, - 0.2478342, 0.2575097, 0.2671594, 0.2767824, 0.2863777, 0.2959444, - 0.3054815, 0.3149881, 0.3244631, 0.3339057, 0.3433149, 0.3526898, - 0.3620294, 0.3713328, 0.3805991, 0.3898273, 0.3990166, 0.4081659, - 0.4172744, 0.4263412, 0.4353653, 0.444346, 0.4532822, 0.462173, - 0.4710177, 0.4798152, - 0.4885648, 0.4972655, 0.5059164, 0.5145168, 0.5230657, 0.5315624, - 0.5400059, 0.5483953, 0.55673, 0.5650089, 0.5732314, 0.5813965, - 0.5895035, 0.5975516, 0.6055399, 0.6134676, 0.621334, 0.6291383, - 0.6368796, 0.6445573, 0.6521705, 0.6597185, 0.6672005, 0.6746158, - 0.6819636, 0.6892433, 0.696454, 0.703595, 0.7106658, 0.7176654, - 0.7245933, 0.7314487, 0.738231, 0.7449394, 0.7515734, 0.7581322, - 0.7646152, 0.7710217, 0.7773512, 0.7836029, 0.7897762, 0.7958706, - 0.8018854, 0.80782, 0.8136737, 0.8194461, 0.8251367, 0.8307446, - 0.8362696, 0.8417109, 0.847068, 0.8523403, 0.8575276, 0.8626289, - 0.8676441, 0.8725725, 0.8774136, 0.882167, 0.8868322, 0.8914087, - 0.8958961, 0.9002938, 0.9046016, 0.9088188, 0.9129453, 0.9169804, - 0.9209238, 0.9247751, 0.9285339, 0.9321999, 0.9357727, 0.9392518, - 0.9426371, 0.9459282, 0.9491246, 0.952226, 0.9552323, 0.9581431, - 0.960958, 0.9636769, 0.9662994, 0.9688252, 0.9712542, 0.973586, - 0.9758205, 0.9779574, 0.9799966, 0.9819376, 0.9837806, 0.9855251, - 0.9871711, 0.9887184, 0.9901668, 0.9915162, 0.9927664, 0.9939173, - 0.994969, 0.995921, 0.9967735, 0.9975263, 0.9981794, 0.9987326, 0.999186, - 0.9995394, 0.9997929, 0.9999464, 0.9999999, 0.9999534, 0.999807, - 0.9995605, 0.9992141, 0.9987678, 0.9982216, 0.9975756, 0.9968298, - 0.9959843, 0.9950393, 0.9939947, 0.9928507, 0.9916075, 0.9902651 ; - - exp = {1, 2} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.PointFile.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.PointFile.dmp deleted file mode 100644 index abe655bc158..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.PointFile.dmp +++ /dev/null @@ -1,67 +0,0 @@ -netcdf test { -types: - compound Simple%20Point.LevelWritten.LevelWritten_t { - ubyte LevelWritten__0 ; - }; // Simple%20Point.LevelWritten.LevelWritten_t - compound Simple%20Point.LevelWritten_record_t { - Simple%20Point.LevelWritten.LevelWritten_t LevelWritten ; - }; // Simple%20Point.LevelWritten_record_t - Simple%20Point.LevelWritten_record_t(*) Simple%20Point.LevelWritten_t ; - compound Time_t { - double Time__0 ; - }; // Time_t - compound Concentration_t { - double Concentration__0 ; - double Concentration__1 ; - double Concentration__2 ; - double Concentration__3 ; - }; // Concentration_t - compound Species_t { - string Species__0 ; - }; // Species_t - compound Sensor_record_t { - Time_t Time ; - Concentration_t Concentration ; - Species_t Species ; - }; // Sensor_record_t - Sensor_record_t(*) Sensor_t ; - compound Data%20Vgroup_t { - Sensor_t Sensor ; - }; // Data%20Vgroup_t - compound Simple%20Point_t { - Simple%20Point.LevelWritten_t LevelWritten ; - Data%20Vgroup_t Data%20Vgroup ; - }; // Simple%20Point_t - compound FixedBuoy%20Point.LevelWritten.LevelWritten_t { - ubyte LevelWritten__0 ; - }; // FixedBuoy%20Point.LevelWritten.LevelWritten_t - compound FixedBuoy%20Point.LevelWritten_record_t { - FixedBuoy%20Point.LevelWritten.LevelWritten_t LevelWritten ; - }; // FixedBuoy%20Point.LevelWritten_record_t - FixedBuoy%20Point.LevelWritten_record_t(*) FixedBuoy%20Point.LevelWritten_t ; - compound FixedBuoy%20Point_t { - FixedBuoy%20Point.LevelWritten_t LevelWritten ; - }; // FixedBuoy%20Point_t - compound LevelWritten.LevelWritten_t { - ubyte LevelWritten__0 ; - }; // LevelWritten.LevelWritten_t - compound LevelWritten_record_t { - LevelWritten.LevelWritten_t LevelWritten ; - }; // LevelWritten_record_t - LevelWritten_record_t(*) LevelWritten_t ; - compound FloatBuoy%20Point_t { - LevelWritten_t LevelWritten ; - }; // FloatBuoy%20Point_t -variables: - Simple%20Point_t Simple%20Point ; - FixedBuoy%20Point_t FixedBuoy%20Point ; - FloatBuoy%20Point_t FloatBuoy%20Point ; -data: - - Simple%20Point = - {{{{0}}, {{1}}, {{2}}, {{3}}, {{4}}}, {{{{1000}, {999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978}, {"This is a data test string (pass 0)."}}, {{998.750260394966}, {998.200539935204, 997.55100025328, 996.801706302619, 995.952733011994}, {"This is a data test string (pass 1)."}}, {{995.004165278026}, {993.956097956697, 992.808635853866, 991.561893714788, 990.215996212637}, {"This is a data test string (pass 2)."}}, {{988.771077936042}, {987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727}, {"This is a data test string (pass 3)."}}, {{980.066577841242}, {978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203}, {"This is a data test string (pass 4)."}}}}} ; - - FixedBuoy%20Point = {{{{5}}, {{6}}, {{7}}, {{8}}, {{9}}}} ; - - FloatBuoy%20Point = {{{{10}}, {{11}}, {{12}}, {{13}}, {{14}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr1.dmp deleted file mode 100644 index 586718622ed..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr1.dmp +++ /dev/null @@ -1,40 +0,0 @@ -netcdf test { -dimensions: - Raster%20Image%20%230__X = 5 ; - Raster%20Image%20%230__Y = 6 ; - Raster%20Image%20%231__X = 5 ; - Raster%20Image%20%231__Y = 6 ; - Raster%20Image%20%231__comps = 3 ; -variables: - ubyte Raster%20Image%20%230(Raster%20Image%20%230__Y, Raster%20Image%20%230__X) ; - ubyte Raster%20Image%20%231(Raster%20Image%20%231__comps, Raster%20Image%20%231__Y, Raster%20Image%20%231__X) ; -data: - - Raster%20Image%20%230 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29 ; - - Raster%20Image%20%231 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr2.dmp deleted file mode 100644 index a8fe8ec5764..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr2.dmp +++ /dev/null @@ -1,38 +0,0 @@ -netcdf test { -dimensions: - Raster%20Image%20%230__X = 5 ; - Raster%20Image%20%230__Y = 6 ; - Raster%20Image%20%231__X = 5 ; - Raster%20Image%20%231__Y = 6 ; - Raster%20Image%20%232__X = 5 ; - Raster%20Image%20%232__Y = 6 ; -variables: - ubyte Raster%20Image%20%230(Raster%20Image%20%230__Y, Raster%20Image%20%230__X) ; - ubyte Raster%20Image%20%231(Raster%20Image%20%231__Y, Raster%20Image%20%231__X) ; - ubyte Raster%20Image%20%232(Raster%20Image%20%232__Y, Raster%20Image%20%232__X) ; -data: - - Raster%20Image%20%230 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29 ; - - Raster%20Image%20%231 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29 ; - - Raster%20Image%20%232 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr3.dmp deleted file mode 100644 index e57884b295e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.dfr3.dmp +++ /dev/null @@ -1,29 +0,0 @@ -netcdf test { -dimensions: - Raster%20Image%20%230__X = 5 ; - Raster%20Image%20%230__Y = 6 ; - Raster%20Image%20%230__comps = 3 ; -variables: - ubyte Raster%20Image%20%230(Raster%20Image%20%230__comps, Raster%20Image%20%230__Y, Raster%20Image%20%230__X) ; -data: - - Raster%20Image%20%230 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr1.dmp deleted file mode 100644 index b08f5fbeeaa..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr1.dmp +++ /dev/null @@ -1,177 +0,0 @@ -netcdf test { -dimensions: - GR_DFNT_CHAR8__X = 5 ; - GR_DFNT_CHAR8__Y = 5 ; - GR_DFNT_CHAR8__comps = 3 ; - GR_DFNT_FLOAT32__X = 7 ; - GR_DFNT_FLOAT32__Y = 4 ; - GR_DFNT_FLOAT32__comps = 3 ; - GR_DFNT_FLOAT64__X = 7 ; - GR_DFNT_FLOAT64__Y = 4 ; - GR_DFNT_INT16__X = 5 ; - GR_DFNT_INT16__Y = 5 ; - GR_DFNT_INT16__comps = 2 ; - GR_DFNT_INT32__X = 5 ; - GR_DFNT_INT32__Y = 5 ; - GR_DFNT_INT8__X = 5 ; - GR_DFNT_INT8__Y = 5 ; - GR_DFNT_INT8__comps = 2 ; - GR_DFNT_UCHAR8__X = 3 ; - GR_DFNT_UCHAR8__Y = 5 ; - GR_DFNT_UCHAR8__comps = 3 ; - GR_DFNT_UINT16__X = 3 ; - GR_DFNT_UINT16__Y = 3 ; - GR_DFNT_UINT16__comps = 3 ; - GR_DFNT_UINT32__X = 3 ; - GR_DFNT_UINT32__Y = 3 ; - GR_DFNT_UINT32__comps = 3 ; - GR_DFNT_UINT8__X = 3 ; - GR_DFNT_UINT8__Y = 3 ; - GR_DFNT_UINT8__comps = 3 ; -variables: - int GR_DFNT_INT32(GR_DFNT_INT32__Y, GR_DFNT_INT32__X) ; - uint GR_DFNT_UINT32(GR_DFNT_UINT32__comps, GR_DFNT_UINT32__Y, GR_DFNT_UINT32__X) ; - int GR_DFNT_INT16(GR_DFNT_INT16__comps, GR_DFNT_INT16__Y, GR_DFNT_INT16__X) ; - uint GR_DFNT_UINT16(GR_DFNT_UINT16__comps, GR_DFNT_UINT16__Y, GR_DFNT_UINT16__X) ; - int GR_DFNT_INT8(GR_DFNT_INT8__comps, GR_DFNT_INT8__Y, GR_DFNT_INT8__X) ; - ubyte GR_DFNT_UINT8(GR_DFNT_UINT8__comps, GR_DFNT_UINT8__Y, GR_DFNT_UINT8__X) ; - double GR_DFNT_FLOAT32(GR_DFNT_FLOAT32__comps, GR_DFNT_FLOAT32__Y, GR_DFNT_FLOAT32__X) ; - double GR_DFNT_FLOAT64(GR_DFNT_FLOAT64__Y, GR_DFNT_FLOAT64__X) ; - ubyte GR_DFNT_CHAR8(GR_DFNT_CHAR8__comps, GR_DFNT_CHAR8__Y, GR_DFNT_CHAR8__X) ; - ubyte GR_DFNT_UCHAR8(GR_DFNT_UCHAR8__comps, GR_DFNT_UCHAR8__Y, GR_DFNT_UCHAR8__X) ; -data: - - GR_DFNT_INT32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_DFNT_UINT32 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT16 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26 ; - - GR_DFNT_FLOAT32 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891, - 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, - 0.949235418082441, 0.946042343528387, 0.942754665528346, - 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, - 0.924909059857313, 0.921060994002885, 0.917120822816605, - 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, - 0.896052497525525, 0.891568288195329, 0.886994922779284, - 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, - 0.862807070514761, 0.857708681363824, 0.852524522059506, - 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, - 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, - 0.689498432951747, 0.682221207287614, 0.674875760071267 ; - - GR_DFNT_FLOAT64 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891 ; - - GR_DFNT_CHAR8 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74 ; - - GR_DFNT_UCHAR8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26, - 27, 28, 29, - 30, 31, 32, - 33, 34, 35, - 36, 37, 38, - 39, 40, 41, - 42, 43, 44 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr5.dmp deleted file mode 100644 index b08f5fbeeaa..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.gr5.dmp +++ /dev/null @@ -1,177 +0,0 @@ -netcdf test { -dimensions: - GR_DFNT_CHAR8__X = 5 ; - GR_DFNT_CHAR8__Y = 5 ; - GR_DFNT_CHAR8__comps = 3 ; - GR_DFNT_FLOAT32__X = 7 ; - GR_DFNT_FLOAT32__Y = 4 ; - GR_DFNT_FLOAT32__comps = 3 ; - GR_DFNT_FLOAT64__X = 7 ; - GR_DFNT_FLOAT64__Y = 4 ; - GR_DFNT_INT16__X = 5 ; - GR_DFNT_INT16__Y = 5 ; - GR_DFNT_INT16__comps = 2 ; - GR_DFNT_INT32__X = 5 ; - GR_DFNT_INT32__Y = 5 ; - GR_DFNT_INT8__X = 5 ; - GR_DFNT_INT8__Y = 5 ; - GR_DFNT_INT8__comps = 2 ; - GR_DFNT_UCHAR8__X = 3 ; - GR_DFNT_UCHAR8__Y = 5 ; - GR_DFNT_UCHAR8__comps = 3 ; - GR_DFNT_UINT16__X = 3 ; - GR_DFNT_UINT16__Y = 3 ; - GR_DFNT_UINT16__comps = 3 ; - GR_DFNT_UINT32__X = 3 ; - GR_DFNT_UINT32__Y = 3 ; - GR_DFNT_UINT32__comps = 3 ; - GR_DFNT_UINT8__X = 3 ; - GR_DFNT_UINT8__Y = 3 ; - GR_DFNT_UINT8__comps = 3 ; -variables: - int GR_DFNT_INT32(GR_DFNT_INT32__Y, GR_DFNT_INT32__X) ; - uint GR_DFNT_UINT32(GR_DFNT_UINT32__comps, GR_DFNT_UINT32__Y, GR_DFNT_UINT32__X) ; - int GR_DFNT_INT16(GR_DFNT_INT16__comps, GR_DFNT_INT16__Y, GR_DFNT_INT16__X) ; - uint GR_DFNT_UINT16(GR_DFNT_UINT16__comps, GR_DFNT_UINT16__Y, GR_DFNT_UINT16__X) ; - int GR_DFNT_INT8(GR_DFNT_INT8__comps, GR_DFNT_INT8__Y, GR_DFNT_INT8__X) ; - ubyte GR_DFNT_UINT8(GR_DFNT_UINT8__comps, GR_DFNT_UINT8__Y, GR_DFNT_UINT8__X) ; - double GR_DFNT_FLOAT32(GR_DFNT_FLOAT32__comps, GR_DFNT_FLOAT32__Y, GR_DFNT_FLOAT32__X) ; - double GR_DFNT_FLOAT64(GR_DFNT_FLOAT64__Y, GR_DFNT_FLOAT64__X) ; - ubyte GR_DFNT_CHAR8(GR_DFNT_CHAR8__comps, GR_DFNT_CHAR8__Y, GR_DFNT_CHAR8__X) ; - ubyte GR_DFNT_UCHAR8(GR_DFNT_UCHAR8__comps, GR_DFNT_UCHAR8__Y, GR_DFNT_UCHAR8__X) ; -data: - - GR_DFNT_INT32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_DFNT_UINT32 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT16 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26 ; - - GR_DFNT_FLOAT32 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891, - 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, - 0.949235418082441, 0.946042343528387, 0.942754665528346, - 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, - 0.924909059857313, 0.921060994002885, 0.917120822816605, - 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, - 0.896052497525525, 0.891568288195329, 0.886994922779284, - 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, - 0.862807070514761, 0.857708681363824, 0.852524522059506, - 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, - 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, - 0.689498432951747, 0.682221207287614, 0.674875760071267 ; - - GR_DFNT_FLOAT64 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891 ; - - GR_DFNT_CHAR8 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74 ; - - GR_DFNT_UCHAR8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26, - 27, 28, 29, - 30, 31, 32, - 33, 34, 35, - 36, 37, 38, - 39, 40, 41, - 42, 43, 44 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.nc.dmp deleted file mode 100644 index b0d1f5ad744..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.nc.dmp +++ /dev/null @@ -1,961 +0,0 @@ -netcdf test { -dimensions: - D1 = 1 ; - D2 = 2 ; - D3 = 3 ; - D4 = 4 ; - Dr = 2 ; -variables: - string c ; - ubyte b ; - string b:c = "" ; - short s ; - s:b = 128UB ; - s:s = -32768s, 32767s ; - int i ; - i:i = -2147483648, 2147483647, -2147483648 ; - i:f = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f ; - i:d = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660. ; - float f ; - double d ; - string d:c = "\\200\\177AZ$&" ; - string cr(Dr) ; - ubyte br(Dr) ; - short sr(Dr) ; - int ir(Dr) ; - float fr(Dr) ; - double dr(Dr) ; - string c1(D1) ; - ubyte b1(D1) ; - short s1(D1) ; - int i1(D1) ; - float f1(D1) ; - double d1(D1) ; - string c2(D2) ; - ubyte b2(D2) ; - short s2(D2) ; - int i2(D2) ; - float f2(D2) ; - double d2(D2) ; - string c3(D3) ; - ubyte b3(D3) ; - short s3(D3) ; - int i3(D3) ; - float f3(D3) ; - double d3(D3) ; - string c4(D4) ; - ubyte b4(D4) ; - short s4(D4) ; - int i4(D4) ; - float f4(D4) ; - double d4(D4) ; - string cr1(Dr, D1) ; - ubyte br2(Dr, D2) ; - short sr3(Dr, D3) ; - int ir4(Dr, D4) ; - float f11(D1, D1) ; - double d12(D1, D2) ; - string c13(D1, D3) ; - ubyte b14(D1, D4) ; - short s21(D2, D1) ; - int i22(D2, D2) ; - float f23(D2, D3) ; - double d24(D2, D4) ; - string c31(D3, D1) ; - ubyte b32(D3, D2) ; - short s33(D3, D3) ; - int i34(D3, D4) ; - float f41(D4, D1) ; - double d42(D4, D2) ; - string c43(D4, D3) ; - ubyte b44(D4, D4) ; - short sr11(Dr, D1, D1) ; - int ir12(Dr, D1, D2) ; - float fr13(Dr, D1, D3) ; - double dr14(Dr, D1, D4) ; - string cr21(Dr, D2, D1) ; - ubyte br22(Dr, D2, D2) ; - short sr23(Dr, D2, D3) ; - int ir24(Dr, D2, D4) ; - float fr31(Dr, D3, D1) ; - double dr32(Dr, D3, D2) ; - string cr33(Dr, D3, D3) ; - ubyte br34(Dr, D3, D4) ; - short sr41(Dr, D4, D1) ; - int ir42(Dr, D4, D2) ; - float fr43(Dr, D4, D3) ; - double dr44(Dr, D4, D4) ; - string c111(D1, D1, D1) ; - ubyte b112(D1, D1, D2) ; - short s113(D1, D1, D3) ; - int i114(D1, D1, D4) ; - float f121(D1, D2, D1) ; - double d122(D1, D2, D2) ; - string c123(D1, D2, D3) ; - ubyte b124(D1, D2, D4) ; - short s131(D1, D3, D1) ; - int i132(D1, D3, D2) ; - float f133(D1, D3, D3) ; - double d134(D1, D3, D4) ; - string c141(D1, D4, D1) ; - ubyte b142(D1, D4, D2) ; - short s143(D1, D4, D3) ; - int i144(D1, D4, D4) ; - float f211(D2, D1, D1) ; - double d212(D2, D1, D2) ; - string c213(D2, D1, D3) ; - ubyte b214(D2, D1, D4) ; - short s221(D2, D2, D1) ; - int i222(D2, D2, D2) ; - float f223(D2, D2, D3) ; - double d224(D2, D2, D4) ; - string c231(D2, D3, D1) ; - ubyte b232(D2, D3, D2) ; - short s233(D2, D3, D3) ; - int i234(D2, D3, D4) ; - float f241(D2, D4, D1) ; - double d242(D2, D4, D2) ; - string c243(D2, D4, D3) ; - ubyte b244(D2, D4, D4) ; - short s311(D3, D1, D1) ; - int i312(D3, D1, D2) ; - float f313(D3, D1, D3) ; - double d314(D3, D1, D4) ; - string c321(D3, D2, D1) ; - ubyte b322(D3, D2, D2) ; - short s323(D3, D2, D3) ; - int i324(D3, D2, D4) ; - float f331(D3, D3, D1) ; - double d332(D3, D3, D2) ; - string c333(D3, D3, D3) ; - ubyte b334(D3, D3, D4) ; - short s341(D3, D4, D1) ; - int i342(D3, D4, D2) ; - float f343(D3, D4, D3) ; - double d344(D3, D4, D4) ; - string c411(D4, D1, D1) ; - ubyte b412(D4, D1, D2) ; - short s413(D4, D1, D3) ; - int i414(D4, D1, D4) ; - float f421(D4, D2, D1) ; - double d422(D4, D2, D2) ; - string c423(D4, D2, D3) ; - ubyte b424(D4, D2, D4) ; - short s431(D4, D3, D1) ; - int i432(D4, D3, D2) ; - float f433(D4, D3, D3) ; - double d434(D4, D3, D4) ; - string c441(D4, D4, D1) ; - ubyte b442(D4, D4, D2) ; - short s443(D4, D4, D3) ; - int i444(D4, D4, D4) ; - -// global attributes: - string :Gc = "\\200" ; - :Gb = 128UB, 127UB ; - :Gs = -32768s, 32767s, 32767s ; - :Gi = -2147483648, 2147483647, -2147483648, 2147483647 ; - :Gf = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f, 531.f ; - :Gd = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660., 650. ; -data: - - c = "" ; - - b = 254 ; - - s = -5 ; - - i = -20 ; - - f = -9 ; - - d = -10 ; - - cr = "�", "" ; - - br = 128, 127 ; - - sr = -32768, 32767 ; - - ir = -2147483648, 2147483647 ; - - fr = -3.402823e+38, 3.402823e+38 ; - - dr = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c1 = "�" ; - - b1 = 128 ; - - s1 = -32768 ; - - i1 = -2147483648 ; - - f1 = -3.402823e+38 ; - - d1 = -1.79769313486232e+308 ; - - c2 = "�", "" ; - - b2 = 128, 127 ; - - s2 = -32768, 32767 ; - - i2 = -2147483648, 2147483647 ; - - f2 = -3.402823e+38, 3.402823e+38 ; - - d2 = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c3 = "�", "", "A" ; - - b3 = 128, 127, 127 ; - - s3 = -32768, 32767, 32767 ; - - i3 = -2147483648, 2147483647, -2147483648 ; - - f3 = -3.402823e+38, 3.402823e+38, -3.402823e+38 ; - - d3 = -1.79769313486232e+308, 1.79769313486232e+308, -1 ; - - c4 = "�", "", "A", "Z" ; - - b4 = 128, 127, 127, 128 ; - - s4 = -32768, 32767, 32767, -32768 ; - - i4 = -2147483648, 2147483647, -2147483648, 2147483647 ; - - f4 = -3.402823e+38, 3.402823e+38, -3.402823e+38, 3.402823e+38 ; - - d4 = -1.79769313486232e+308, 1.79769313486232e+308, -1, 1 ; - - cr1 = - "", - "" ; - - br2 = - 232, 230, - 236, 234 ; - - sr3 = - -375, -380, -385, - -350, -355, -360 ; - - ir4 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660 ; - - f11 = - -2187 ; - - d12 = - -3000, -3010 ; - - c13 = - "", "", "" ; - - b14 = - 232, 230, 228, 226 ; - - s21 = - -375, - -350 ; - - i22 = - -24000, -24020, - -23600, -23620 ; - - f23 = - -2187, -2196, -2205, - -2106, -2115, -2124 ; - - d24 = - -3000, -3010, -3020, -3030, - -2900, -2910, -2920, -2930 ; - - c31 = - "", - "", - " " ; - - b32 = - 232, 230, - 236, 234, - 240, 238 ; - - s33 = - -375, -380, -385, - -350, -355, -360, - -325, -330, -335 ; - - i34 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660, - -23200, -23220, -23240, -23260 ; - - f41 = - -2187, - -2106, - -2025, - -1944 ; - - d42 = - -3000, -3010, - -2900, -2910, - -2800, -2810, - -2700, -2710 ; - - c43 = - "", "", "", - "", "", " ", - " ", """, "$", - "$", "&", "(" ; - - b44 = - 232, 230, 228, 226, - 236, 234, 232, 230, - 240, 238, 236, 234, - 244, 242, 240, 238 ; - - sr11 = - 2500, - 2375 ; - - ir12 = - 640000, 639980, - 632000, 631980 ; - - fr13 = - 26244, 26235, 26226, - 25515, 25506, 25497 ; - - dr14 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970 ; - - cr21 = - "@", - "D", - "H", - "L" ; - - br22 = - 64, 62, - 68, 66, - 56, 54, - 60, 58 ; - - sr23 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390 ; - - ir24 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340 ; - - fr31 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677 ; - - dr32 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190 ; - - cr33 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T" ; - - br34 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58 ; - - sr41 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450 ; - - ir42 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180 ; - - fr43 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740 ; - - dr44 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270 ; - - c111 = - "@" ; - - b112 = - 64, 62 ; - - s113 = - 2500, 2495, 2490 ; - - i114 = - 640000, 639980, 639960, 639940 ; - - f121 = - 26244, - 26325 ; - - d122 = - 40000, 39990, - 40100, 40090 ; - - c123 = - "@", "B", "D", - "D", "F", "H" ; - - b124 = - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s131 = - 2500, - 2525, - 2550 ; - - i132 = - 640000, 639980, - 640400, 640380, - 640800, 640780 ; - - f133 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388 ; - - d134 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170 ; - - c141 = - "@", - "D", - "H", - "L" ; - - b142 = - 64, 62, - 68, 66, - 72, 70, - 76, 74 ; - - s143 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565 ; - - i144 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140 ; - - f211 = - 26244, - 25515 ; - - d212 = - 40000, 39990, - 39000, 38990 ; - - c213 = - "@", "B", "D", - "H", "J", "L" ; - - b214 = - 64, 62, 60, 58, - 56, 54, 52, 50 ; - - s221 = - 2500, - 2525, - 2375, - 2400 ; - - i222 = - 640000, 639980, - 640400, 640380, - 632000, 631980, - 632400, 632380 ; - - f223 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 25515, 25506, 25497, - 25596, 25587, 25578 ; - - d224 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070 ; - - c231 = - "@", - "D", - "H", - "H", - "L", - "P" ; - - b232 = - 64, 62, - 68, 66, - 72, 70, - 56, 54, - 60, 58, - 64, 62 ; - - s233 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415 ; - - i234 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740 ; - - f241 = - 26244, - 26325, - 26406, - 26487, - 25515, - 25596, - 25677, - 25758 ; - - d242 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 40300, 40290, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 39300, 39290 ; - - c243 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "L", "N", "P", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "T", "V", "X" ; - - b244 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 76, 74, 72, 70, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s311 = - 2500, - 2375, - 2250 ; - - i312 = - 640000, 639980, - 632000, 631980, - 624000, 623980 ; - - f313 = - 26244, 26235, 26226, - 25515, 25506, 25497, - 24786, 24777, 24768 ; - - d314 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970, - 38000, 37990, 37980, 37970 ; - - c321 = - "@", - "D", - "H", - "L", - "P", - "T" ; - - b322 = - 64, 62, - 68, 66, - 56, 54, - 60, 58, - 48, 46, - 52, 50 ; - - s323 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2250, 2245, 2240, - 2275, 2270, 2265 ; - - i324 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340 ; - - f331 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677, - 24786, - 24867, - 24948 ; - - d332 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 38000, 37990, - 38100, 38090, - 38200, 38190 ; - - c333 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "P", "R", "T", - "T", "V", "X", - "X", "Z", "\" ; - - b334 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 48, 46, 44, 42, - 52, 50, 48, 46, - 56, 54, 52, 50 ; - - s341 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450, - 2250, - 2275, - 2300, - 2325 ; - - i342 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 625200, 625180 ; - - f343 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 25029, 25020, 25011 ; - - d344 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 38300, 38290, 38280, 38270 ; - - c411 = - "@", - "H", - "P", - "X" ; - - b412 = - 64, 62, - 56, 54, - 48, 46, - 40, 38 ; - - s413 = - 2500, 2495, 2490, - 2375, 2370, 2365, - 2250, 2245, 2240, - 2125, 2120, 2115 ; - - i414 = - 640000, 639980, 639960, 639940, - 632000, 631980, 631960, 631940, - 624000, 623980, 623960, 623940, - 616000, 615980, 615960, 615940 ; - - f421 = - 26244, - 26325, - 25515, - 25596, - 24786, - 24867, - 24057, - 24138 ; - - d422 = - 40000, 39990, - 40100, 40090, - 39000, 38990, - 39100, 39090, - 38000, 37990, - 38100, 38090, - 37000, 36990, - 37100, 37090 ; - - c423 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "T", "V", "X", - "X", "Z", "\", - "\", "^", "`" ; - - b424 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 56, 54, 52, 50, - 60, 58, 56, 54, - 48, 46, 44, 42, - 52, 50, 48, 46, - 40, 38, 36, 34, - 44, 42, 40, 38 ; - - s431 = - 2500, - 2525, - 2550, - 2375, - 2400, - 2425, - 2250, - 2275, - 2300, - 2125, - 2150, - 2175 ; - - i432 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 616000, 615980, - 616400, 616380, - 616800, 616780 ; - - f433 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 24057, 24048, 24039, - 24138, 24129, 24120, - 24219, 24210, 24201 ; - - d434 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 37000, 36990, 36980, 36970, - 37100, 37090, 37080, 37070, - 37200, 37190, 37180, 37170 ; - - c441 = - "@", - "D", - "H", - "L", - "H", - "L", - "P", - "T", - "P", - "T", - "X", - "\", - "X", - "\", - "`", - "d" ; - - b442 = - 64, 62, - 68, 66, - 72, 70, - 76, 74, - 56, 54, - 60, 58, - 64, 62, - 68, 66, - 48, 46, - 52, 50, - 56, 54, - 60, 58, - 40, 38, - 44, 42, - 48, 46, - 52, 50 ; - - s443 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415, - 2450, 2445, 2440, - 2250, 2245, 2240, - 2275, 2270, 2265, - 2300, 2295, 2290, - 2325, 2320, 2315, - 2125, 2120, 2115, - 2150, 2145, 2140, - 2175, 2170, 2165, - 2200, 2195, 2190 ; - - i444 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740, - 633200, 633180, 633160, 633140, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340, - 624800, 624780, 624760, 624740, - 625200, 625180, 625160, 625140, - 616000, 615980, 615960, 615940, - 616400, 616380, 616360, 616340, - 616800, 616780, 616760, 616740, - 617200, 617180, 617160, 617140 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds1.dmp deleted file mode 100644 index 75424f462e6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds1.dmp +++ /dev/null @@ -1,47 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 5 ; - fakeDim1 = 3 ; - fakeDim2 = 5 ; - fakeDim3 = 3 ; - fakeDim4 = 5 ; - fakeDim5 = 3 ; - fakeDim6 = 7 ; - fakeDim7 = 7 ; - fakeDim8 = 5 ; - fakeDim9 = 3 ; -variables: - int SDS_DFNT_INT32(fakeDim0) ; - uint SDS_DFNT_UINT32(fakeDim1) ; - int SDS_DFNT_INT16(fakeDim2) ; - uint SDS_DFNT_UINT16(fakeDim3) ; - int SDS_DFNT_INT8(fakeDim4) ; - ubyte SDS_DFNT_UINT8(fakeDim5) ; - double SDS_DFNT_FLOAT32(fakeDim6) ; - double SDS_DFNT_FLOAT64(fakeDim7) ; - ubyte SDS_DFNT_CHAR8(fakeDim8) ; - ubyte SDS_DFNT_UCHAR8(fakeDim9) ; -data: - - SDS_DFNT_INT32 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT32 = 0, 4096, 8192 ; - - SDS_DFNT_INT16 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT16 = 0, 4096, 8192 ; - - SDS_DFNT_INT8 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT8 = 0, 1, 2 ; - - SDS_DFNT_FLOAT32 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_FLOAT64 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_CHAR8 = 0, 1, 2, 3, 4 ; - - SDS_DFNT_UCHAR8 = 0, 1, 2 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds2.dmp deleted file mode 100644 index 75424f462e6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds2.dmp +++ /dev/null @@ -1,47 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 5 ; - fakeDim1 = 3 ; - fakeDim2 = 5 ; - fakeDim3 = 3 ; - fakeDim4 = 5 ; - fakeDim5 = 3 ; - fakeDim6 = 7 ; - fakeDim7 = 7 ; - fakeDim8 = 5 ; - fakeDim9 = 3 ; -variables: - int SDS_DFNT_INT32(fakeDim0) ; - uint SDS_DFNT_UINT32(fakeDim1) ; - int SDS_DFNT_INT16(fakeDim2) ; - uint SDS_DFNT_UINT16(fakeDim3) ; - int SDS_DFNT_INT8(fakeDim4) ; - ubyte SDS_DFNT_UINT8(fakeDim5) ; - double SDS_DFNT_FLOAT32(fakeDim6) ; - double SDS_DFNT_FLOAT64(fakeDim7) ; - ubyte SDS_DFNT_CHAR8(fakeDim8) ; - ubyte SDS_DFNT_UCHAR8(fakeDim9) ; -data: - - SDS_DFNT_INT32 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT32 = 0, 4096, 8192 ; - - SDS_DFNT_INT16 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT16 = 0, 4096, 8192 ; - - SDS_DFNT_INT8 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT8 = 0, 1, 2 ; - - SDS_DFNT_FLOAT32 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_FLOAT64 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_CHAR8 = 0, 1, 2, 3, 4 ; - - SDS_DFNT_UCHAR8 = 0, 1, 2 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds4.dmp deleted file mode 100644 index 04b1523d890..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds4.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound SDS_1_t { - int SDS_1(16, 5) ; - double Y_Axis(16) ; - int X_Axis(5) ; - }; // SDS_1_t -variables: - SDS_1_t SDS_1 ; -data: - - SDS_1 = - {{0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, 63488, 65536, 67584, 69632, 71680, 73728, 75776, 77824, 79872, 81920, 83968, 86016, 88064, 90112, 92160, 94208, 96256, 98304, 100352, 102400, 104448, 106496, 108544, 110592, 112640, 114688, 116736, 118784, 120832, 122880, 124928, 126976, 129024, 131072, 133120, 135168, 137216, 139264, 141312, 143360, 145408, 147456, 149504, 151552, 153600, 155648, 157696, 159744, 161792}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042}, {0, 2048, 4096, 6144, 8192}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds5.dmp deleted file mode 100644 index 9091f7e2020..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds5.dmp +++ /dev/null @@ -1,77 +0,0 @@ -netcdf test { -types: - compound SDS_DFNT_INT32_t { - int SDS_DFNT_INT32(5) ; - int Axis_DFNT_INT32(5) ; - }; // SDS_DFNT_INT32_t - compound SDS_DFNT_UINT32_t { - uint SDS_DFNT_UINT32(3) ; - int Axis_DFNT_UINT32(3) ; - }; // SDS_DFNT_UINT32_t - compound SDS_DFNT_INT16_t { - int SDS_DFNT_INT16(5) ; - int Axis_DFNT_INT16(5) ; - }; // SDS_DFNT_INT16_t - compound SDS_DFNT_UINT16_t { - uint SDS_DFNT_UINT16(3) ; - int Axis_DFNT_UINT16(3) ; - }; // SDS_DFNT_UINT16_t - compound SDS_DFNT_INT8_t { - int SDS_DFNT_INT8(5) ; - int Axis_DFNT_INT8(5) ; - }; // SDS_DFNT_INT8_t - compound SDS_DFNT_UINT8_t { - ubyte SDS_DFNT_UINT8(3) ; - int Axis_DFNT_UINT8(3) ; - }; // SDS_DFNT_UINT8_t - compound SDS_DFNT_FLOAT32_t { - double SDS_DFNT_FLOAT32(7) ; - double Axis_DFNT_FLOAT32(7) ; - }; // SDS_DFNT_FLOAT32_t - compound SDS_DFNT_FLOAT64_t { - double SDS_DFNT_FLOAT64(7) ; - double Axis_DFNT_FLOAT64(7) ; - }; // SDS_DFNT_FLOAT64_t - compound SDS_DFNT_CHAR8_t { - ubyte SDS_DFNT_CHAR8(5) ; - ubyte Axis_DFNT_CHAR8(5) ; - }; // SDS_DFNT_CHAR8_t - compound SDS_DFNT_UCHAR8_t { - ubyte SDS_DFNT_UCHAR8(3) ; - ubyte Axis_DFNT_UCHAR8(3) ; - }; // SDS_DFNT_UCHAR8_t -variables: - SDS_DFNT_INT32_t SDS_DFNT_INT32 ; - SDS_DFNT_UINT32_t SDS_DFNT_UINT32 ; - SDS_DFNT_INT16_t SDS_DFNT_INT16 ; - SDS_DFNT_UINT16_t SDS_DFNT_UINT16 ; - SDS_DFNT_INT8_t SDS_DFNT_INT8 ; - SDS_DFNT_UINT8_t SDS_DFNT_UINT8 ; - SDS_DFNT_FLOAT32_t SDS_DFNT_FLOAT32 ; - SDS_DFNT_FLOAT64_t SDS_DFNT_FLOAT64 ; - SDS_DFNT_CHAR8_t SDS_DFNT_CHAR8 ; - SDS_DFNT_UCHAR8_t SDS_DFNT_UCHAR8 ; -data: - - SDS_DFNT_INT32 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT32 = {{0, 4096, 8192}, {0, 2048, 4096}} ; - - SDS_DFNT_INT16 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT16 = {{0, 4096, 8192}, {0, 2048, 4096}} ; - - SDS_DFNT_INT8 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT8 = {{0, 1, 2}, {0, 2048, 4096}} ; - - SDS_DFNT_FLOAT32 = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}} ; - - SDS_DFNT_FLOAT64 = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}} ; - - SDS_DFNT_CHAR8 = {{0, 1, 2, 3, 4}, {0, 1, 2, 3, 4}} ; - - SDS_DFNT_UCHAR8 = {{0, 1, 2}, {0, 1, 2}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds6.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds6.dmp deleted file mode 100644 index 80a53af8199..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds6.dmp +++ /dev/null @@ -1,89 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 16 ; - fakeDim1 = 5 ; - fakeDim2 = 16 ; - fakeDim3 = 5 ; - fakeDim4 = 16 ; - fakeDim5 = 5 ; - fakeDim6 = 16 ; - fakeDim7 = 5 ; -variables: - int SDS_RLE(fakeDim0, fakeDim1) ; - int SDS_N%2dbit(fakeDim2, fakeDim3) ; - int SDS_Skip_Huffman(fakeDim4, fakeDim5) ; - int SDS_Deflate(fakeDim6, fakeDim7) ; -data: - - SDS_RLE = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792 ; - - SDS_N%2dbit = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792 ; - - SDS_Skip_Huffman = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792 ; - - SDS_Deflate = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds7.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds7.dmp deleted file mode 100644 index 42baa81be47..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.sds7.dmp +++ /dev/null @@ -1,75 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 9 ; - fakeDim1 = 4 ; - fakeDim2 = 9 ; - fakeDim3 = 4 ; - fakeDim4 = 9 ; - fakeDim5 = 4 ; - fakeDim6 = 9 ; - fakeDim7 = 4 ; - fakeDim8 = 9 ; - fakeDim9 = 4 ; -variables: - int SDS_None(fakeDim0, fakeDim1) ; - int SDS_RLE(fakeDim2, fakeDim3) ; - int SDS_N%2dbit(fakeDim4, fakeDim5) ; - int SDS_Skip_Huffman(fakeDim6, fakeDim7) ; - int SDS_Deflate(fakeDim8, fakeDim9) ; -data: - - SDS_None = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488, - 65536, 67584, 69632, 71680 ; - - SDS_RLE = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488, - 65536, 67584, 69632, 71680 ; - - SDS_N%2dbit = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488, - 65536, 67584, 69632, 71680 ; - - SDS_Skip_Huffman = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488, - 65536, 67584, 69632, 71680 ; - - SDS_Deflate = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488, - 65536, 67584, 69632, 71680 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs1.dmp deleted file mode 100644 index 0bf2b9e795e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs1.dmp +++ /dev/null @@ -1,109 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = {{{1}}, {{2}}, {{3}}, {{5}}, {{8}}} ; - - Vdata_DFNT_UINT32 = {{{0}}, {{2}}, {{6}}, {{12}}, {{20}}} ; - - Vdata_DFNT_INT16 = {{{13}}, {{21}}, {{34}}, {{55}}, {{89}}} ; - - Vdata_DFNT_UINT16 = {{{30}}, {{42}}, {{56}}, {{72}}, {{90}}} ; - - Vdata_DFNT_INT8 = {{{144}}, {{233}}, {{377}}, {{610}}, {{987}}} ; - - Vdata_DFNT_UINT8 = {{{0}}, {{1}}, {{2}}, {{3}}, {{4}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000}}, {{999.950000416665}}, {{999.800006666578}}, {{999.550033748988}}, {{999.200106660978}}} ; - - Vdata_DFNT_FLOAT64 = - {{{998.750260394966}}, {{998.200539935204}}, {{997.55100025328}}, {{996.801706302619}}, {{995.952733011994}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs2.dmp deleted file mode 100644 index 2be6870e769..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs2.dmp +++ /dev/null @@ -1,145 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - int Field_DFNT_INT32__1 ; - int Field_DFNT_INT32__2 ; - int Field_DFNT_INT32__3 ; - int Field_DFNT_INT32__4 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - uint Field_DFNT_UINT32__1 ; - uint Field_DFNT_UINT32__2 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - int Field_DFNT_INT16__1 ; - int Field_DFNT_INT16__2 ; - int Field_DFNT_INT16__3 ; - int Field_DFNT_INT16__4 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - uint Field_DFNT_UINT16__1 ; - uint Field_DFNT_UINT16__2 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - int Field_DFNT_INT8__1 ; - int Field_DFNT_INT8__2 ; - int Field_DFNT_INT8__3 ; - int Field_DFNT_INT8__4 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - ubyte Field_DFNT_UINT8__1 ; - ubyte Field_DFNT_UINT8__2 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - double Field_DFNT_FLOAT32__1 ; - double Field_DFNT_FLOAT32__2 ; - double Field_DFNT_FLOAT32__3 ; - double Field_DFNT_FLOAT32__4 ; - double Field_DFNT_FLOAT32__5 ; - double Field_DFNT_FLOAT32__6 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - double Field_DFNT_FLOAT64__1 ; - double Field_DFNT_FLOAT64__2 ; - double Field_DFNT_FLOAT64__3 ; - double Field_DFNT_FLOAT64__4 ; - double Field_DFNT_FLOAT64__5 ; - double Field_DFNT_FLOAT64__6 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = - {{{1, 2, 3, 5, 8}}, {{13, 21, 34, 55, 89}}, {{144, 233, 377, 610, 987}}, {{1597, 2584, 4181, 6765, 10946}}, {{17711, 28657, 46368, 75025, 121393}}} ; - - Vdata_DFNT_UINT32 = - {{{0, 2, 6}}, {{12, 20, 30}}, {{42, 56, 72}}, {{90, 110, 132}}, {{156, 182, 210}}} ; - - Vdata_DFNT_INT16 = - {{{196418, 317811, 514229, 832040, 1346269}}, {{2178309, 3524578, 5702887, 9227465, 14930352}}, {{24157817, 39088169, 63245986, 102334155, 165580141}}, {{267914296, 433494437, 701408733, 1134903170, 1836311903}}, {{-1323752223, 512559680, -811192543, -298632863, -1109825406}}} ; - - Vdata_DFNT_UINT16 = - {{{240, 272, 306}}, {{342, 380, 420}}, {{462, 506, 552}}, {{600, 650, 702}}, {{756, 812, 870}}} ; - - Vdata_DFNT_INT8 = - {{{-1408458269, 1776683621, 368225352, 2144908973, -1781832971}}, {{363076002, -1418756969, -1055680967, 1820529360, 764848393}}, {{-1709589543, -944741150, 1640636603, 695895453, -1958435240}}, {{-1262539787, 1073992269, -188547518, 885444751, 696897233}}, {{1582341984, -2015728079, -433386095, 1845853122, 1412467027}}} ; - - Vdata_DFNT_UINT8 = - {{{0, 1, 2}}, {{3, 4, 5}}, {{6, 7, 8}}, {{9, 10, 11}}, {{12, 13, 14}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, 998.750260394966, 998.200539935204}}, {{997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, 991.561893714788}}, {{990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242}}, {{978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891}}, {{961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346}}} ; - - Vdata_DFNT_FLOAT64 = - {{{939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, 917.120822816605}}, {{913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284}}, {{882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, 852.524522059506}}, {{847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534}}, {{808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs3.dmp deleted file mode 100644 index 12bf119dc8e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs3.dmp +++ /dev/null @@ -1,52 +0,0 @@ -netcdf test { -types: - compound dINT32_t { - int dINT32__0 ; - }; // dINT32_t - compound dUINT32_t { - uint dUINT32__0 ; - }; // dUINT32_t - compound dINT16_t { - int dINT16__0 ; - }; // dINT16_t - compound dUINT16_t { - uint dUINT16__0 ; - }; // dUINT16_t - compound dINT8_t { - int dINT8__0 ; - }; // dINT8_t - compound dUINT8_t { - ubyte dUINT8__0 ; - }; // dUINT8_t - compound dFLOAT32_t { - double dFLOAT32__0 ; - }; // dFLOAT32_t - compound dFLOAT64_t { - double dFLOAT64__0 ; - }; // dFLOAT64_t - compound dCHAR8_t { - string dCHAR8__0 ; - }; // dCHAR8_t - compound dUCHAR8_t { - string dUCHAR8__0 ; - }; // dUCHAR8_t - compound Vdata_record_t { - dINT32_t dINT32 ; - dUINT32_t dUINT32 ; - dINT16_t dINT16 ; - dUINT16_t dUINT16 ; - dINT8_t dINT8 ; - dUINT8_t dUINT8 ; - dFLOAT32_t dFLOAT32 ; - dFLOAT64_t dFLOAT64 ; - dCHAR8_t dCHAR8 ; - dUCHAR8_t dUCHAR8 ; - }; // Vdata_record_t - Vdata_record_t(*) Vdata_t ; -variables: - Vdata_t Vdata ; -data: - - Vdata = - {{{1}, {0}, {2}, {2}, {3}, {0}, {1000}, {999.950000416665}, {"This is a data test string (pass 0)."}, {"This is a data test string (pass 1)."}}, {{5}, {6}, {8}, {12}, {13}, {1}, {999.800006666578}, {999.550033748988}, {"This is a data test string (pass 2)."}, {"This is a data test string (pass 3)."}}, {{21}, {20}, {34}, {30}, {55}, {2}, {999.200106660978}, {998.750260394966}, {"This is a data test string (pass 4)."}, {"This is a data test string (pass 5)."}}, {{89}, {42}, {144}, {56}, {233}, {3}, {998.200539935204}, {997.55100025328}, {"This is a data test string (pass 6)."}, {"This is a data test string (pass 7)."}}, {{377}, {72}, {610}, {90}, {987}, {4}, {996.801706302619}, {995.952733011994}, {"This is a data test string (pass 8)."}, {"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs4.dmp deleted file mode 100644 index 0bf2b9e795e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs4.dmp +++ /dev/null @@ -1,109 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = {{{1}}, {{2}}, {{3}}, {{5}}, {{8}}} ; - - Vdata_DFNT_UINT32 = {{{0}}, {{2}}, {{6}}, {{12}}, {{20}}} ; - - Vdata_DFNT_INT16 = {{{13}}, {{21}}, {{34}}, {{55}}, {{89}}} ; - - Vdata_DFNT_UINT16 = {{{30}}, {{42}}, {{56}}, {{72}}, {{90}}} ; - - Vdata_DFNT_INT8 = {{{144}}, {{233}}, {{377}}, {{610}}, {{987}}} ; - - Vdata_DFNT_UINT8 = {{{0}}, {{1}}, {{2}}, {{3}}, {{4}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000}}, {{999.950000416665}}, {{999.800006666578}}, {{999.550033748988}}, {{999.200106660978}}} ; - - Vdata_DFNT_FLOAT64 = - {{{998.750260394966}}, {{998.200539935204}}, {{997.55100025328}}, {{996.801706302619}}, {{995.952733011994}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs5.dmp deleted file mode 100644 index 6fb24c4f040..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/test.vs5.dmp +++ /dev/null @@ -1,38 +0,0 @@ -netcdf test { -types: - compound Array_Vgroup_t { - int SDS_Array(5) ; - }; // Array_Vgroup_t - compound SDS_Grid_t { - int SDS_Grid(5) ; - int fakeDim1(5) ; - }; // SDS_Grid_t - compound Grid_Vgroup_t { - SDS_Grid_t SDS_Grid ; - }; // Grid_Vgroup_t - compound GR_Vgroup_t { - int GRaster(5, 5) ; - }; // GR_Vgroup_t - compound Field_t { - int Field__0 ; - }; // Field_t - compound Vdata_record_t { - Field_t Field ; - }; // Vdata_record_t - Vdata_record_t(*) Vdata_t ; - compound Vdata_Vgroup_t { - Vdata_t Vdata ; - }; // Vdata_Vgroup_t - compound Main_Vgroup_t { - Array_Vgroup_t Array_Vgroup ; - Grid_Vgroup_t Grid_Vgroup ; - GR_Vgroup_t GR_Vgroup ; - Vdata_Vgroup_t Vdata_Vgroup ; - }; // Main_Vgroup_t -variables: - Main_Vgroup_t Main_Vgroup ; -data: - - Main_Vgroup = - {{{0, 2048, 4096, 6144, 8192}}, {{{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}}}, {{0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152}}, {{{{1}}, {{2}}, {{3}}, {{5}}, {{8}}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/text.nc.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/text.nc.dmp deleted file mode 100644 index 6214898964b..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/text.nc.dmp +++ /dev/null @@ -1,961 +0,0 @@ -netcdf text { -dimensions: - D1 = 1 ; - D2 = 2 ; - D3 = 3 ; - D4 = 4 ; - Dr = 2 ; -variables: - string c ; - ubyte b ; - string b:c = "" ; - short s ; - s:b = 128UB ; - s:s = -32768s, 32767s ; - int i ; - i:i = -2147483648, 2147483647, -2147483648 ; - i:f = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f ; - i:d = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660. ; - float f ; - double d ; - string d:c = "\\200\\177AZ$&" ; - string cr(Dr) ; - ubyte br(Dr) ; - short sr(Dr) ; - int ir(Dr) ; - float fr(Dr) ; - double dr(Dr) ; - string c1(D1) ; - ubyte b1(D1) ; - short s1(D1) ; - int i1(D1) ; - float f1(D1) ; - double d1(D1) ; - string c2(D2) ; - ubyte b2(D2) ; - short s2(D2) ; - int i2(D2) ; - float f2(D2) ; - double d2(D2) ; - string c3(D3) ; - ubyte b3(D3) ; - short s3(D3) ; - int i3(D3) ; - float f3(D3) ; - double d3(D3) ; - string c4(D4) ; - ubyte b4(D4) ; - short s4(D4) ; - int i4(D4) ; - float f4(D4) ; - double d4(D4) ; - string cr1(Dr, D1) ; - ubyte br2(Dr, D2) ; - short sr3(Dr, D3) ; - int ir4(Dr, D4) ; - float f11(D1, D1) ; - double d12(D1, D2) ; - string c13(D1, D3) ; - ubyte b14(D1, D4) ; - short s21(D2, D1) ; - int i22(D2, D2) ; - float f23(D2, D3) ; - double d24(D2, D4) ; - string c31(D3, D1) ; - ubyte b32(D3, D2) ; - short s33(D3, D3) ; - int i34(D3, D4) ; - float f41(D4, D1) ; - double d42(D4, D2) ; - string c43(D4, D3) ; - ubyte b44(D4, D4) ; - short sr11(Dr, D1, D1) ; - int ir12(Dr, D1, D2) ; - float fr13(Dr, D1, D3) ; - double dr14(Dr, D1, D4) ; - string cr21(Dr, D2, D1) ; - ubyte br22(Dr, D2, D2) ; - short sr23(Dr, D2, D3) ; - int ir24(Dr, D2, D4) ; - float fr31(Dr, D3, D1) ; - double dr32(Dr, D3, D2) ; - string cr33(Dr, D3, D3) ; - ubyte br34(Dr, D3, D4) ; - short sr41(Dr, D4, D1) ; - int ir42(Dr, D4, D2) ; - float fr43(Dr, D4, D3) ; - double dr44(Dr, D4, D4) ; - string c111(D1, D1, D1) ; - ubyte b112(D1, D1, D2) ; - short s113(D1, D1, D3) ; - int i114(D1, D1, D4) ; - float f121(D1, D2, D1) ; - double d122(D1, D2, D2) ; - string c123(D1, D2, D3) ; - ubyte b124(D1, D2, D4) ; - short s131(D1, D3, D1) ; - int i132(D1, D3, D2) ; - float f133(D1, D3, D3) ; - double d134(D1, D3, D4) ; - string c141(D1, D4, D1) ; - ubyte b142(D1, D4, D2) ; - short s143(D1, D4, D3) ; - int i144(D1, D4, D4) ; - float f211(D2, D1, D1) ; - double d212(D2, D1, D2) ; - string c213(D2, D1, D3) ; - ubyte b214(D2, D1, D4) ; - short s221(D2, D2, D1) ; - int i222(D2, D2, D2) ; - float f223(D2, D2, D3) ; - double d224(D2, D2, D4) ; - string c231(D2, D3, D1) ; - ubyte b232(D2, D3, D2) ; - short s233(D2, D3, D3) ; - int i234(D2, D3, D4) ; - float f241(D2, D4, D1) ; - double d242(D2, D4, D2) ; - string c243(D2, D4, D3) ; - ubyte b244(D2, D4, D4) ; - short s311(D3, D1, D1) ; - int i312(D3, D1, D2) ; - float f313(D3, D1, D3) ; - double d314(D3, D1, D4) ; - string c321(D3, D2, D1) ; - ubyte b322(D3, D2, D2) ; - short s323(D3, D2, D3) ; - int i324(D3, D2, D4) ; - float f331(D3, D3, D1) ; - double d332(D3, D3, D2) ; - string c333(D3, D3, D3) ; - ubyte b334(D3, D3, D4) ; - short s341(D3, D4, D1) ; - int i342(D3, D4, D2) ; - float f343(D3, D4, D3) ; - double d344(D3, D4, D4) ; - string c411(D4, D1, D1) ; - ubyte b412(D4, D1, D2) ; - short s413(D4, D1, D3) ; - int i414(D4, D1, D4) ; - float f421(D4, D2, D1) ; - double d422(D4, D2, D2) ; - string c423(D4, D2, D3) ; - ubyte b424(D4, D2, D4) ; - short s431(D4, D3, D1) ; - int i432(D4, D3, D2) ; - float f433(D4, D3, D3) ; - double d434(D4, D3, D4) ; - string c441(D4, D4, D1) ; - ubyte b442(D4, D4, D2) ; - short s443(D4, D4, D3) ; - int i444(D4, D4, D4) ; - -// global attributes: - string :Gc = "\\200" ; - :Gb = 128UB, 127UB ; - :Gs = -32768s, 32767s, 32767s ; - :Gi = -2147483648, 2147483647, -2147483648, 2147483647 ; - :Gf = -3.402823e+38f, 3.402823e+38f, -3.402823e+38f, 3.402823e+38f, 531.f ; - :Gd = -1.79769313486232e+308, 1.79769313486232e+308, -1., 1., 660., 650. ; -data: - - c = "" ; - - b = 254 ; - - s = -5 ; - - i = -20 ; - - f = -9 ; - - d = -10 ; - - cr = "�", "" ; - - br = 128, 127 ; - - sr = -32768, 32767 ; - - ir = -2147483648, 2147483647 ; - - fr = -3.402823e+38, 3.402823e+38 ; - - dr = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c1 = "�" ; - - b1 = 128 ; - - s1 = -32768 ; - - i1 = -2147483648 ; - - f1 = -3.402823e+38 ; - - d1 = -1.79769313486232e+308 ; - - c2 = "�", "" ; - - b2 = 128, 127 ; - - s2 = -32768, 32767 ; - - i2 = -2147483648, 2147483647 ; - - f2 = -3.402823e+38, 3.402823e+38 ; - - d2 = -1.79769313486232e+308, 1.79769313486232e+308 ; - - c3 = "�", "", "A" ; - - b3 = 128, 127, 127 ; - - s3 = -32768, 32767, 32767 ; - - i3 = -2147483648, 2147483647, -2147483648 ; - - f3 = -3.402823e+38, 3.402823e+38, -3.402823e+38 ; - - d3 = -1.79769313486232e+308, 1.79769313486232e+308, -1 ; - - c4 = "�", "", "A", "Z" ; - - b4 = 128, 127, 127, 128 ; - - s4 = -32768, 32767, 32767, -32768 ; - - i4 = -2147483648, 2147483647, -2147483648, 2147483647 ; - - f4 = -3.402823e+38, 3.402823e+38, -3.402823e+38, 3.402823e+38 ; - - d4 = -1.79769313486232e+308, 1.79769313486232e+308, -1, 1 ; - - cr1 = - "", - "" ; - - br2 = - 232, 230, - 236, 234 ; - - sr3 = - -375, -380, -385, - -350, -355, -360 ; - - ir4 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660 ; - - f11 = - -2187 ; - - d12 = - -3000, -3010 ; - - c13 = - "", "", "" ; - - b14 = - 232, 230, 228, 226 ; - - s21 = - -375, - -350 ; - - i22 = - -24000, -24020, - -23600, -23620 ; - - f23 = - -2187, -2196, -2205, - -2106, -2115, -2124 ; - - d24 = - -3000, -3010, -3020, -3030, - -2900, -2910, -2920, -2930 ; - - c31 = - "", - "", - " " ; - - b32 = - 232, 230, - 236, 234, - 240, 238 ; - - s33 = - -375, -380, -385, - -350, -355, -360, - -325, -330, -335 ; - - i34 = - -24000, -24020, -24040, -24060, - -23600, -23620, -23640, -23660, - -23200, -23220, -23240, -23260 ; - - f41 = - -2187, - -2106, - -2025, - -1944 ; - - d42 = - -3000, -3010, - -2900, -2910, - -2800, -2810, - -2700, -2710 ; - - c43 = - "", "", "", - "", "", " ", - " ", """, "$", - "$", "&", "(" ; - - b44 = - 232, 230, 228, 226, - 236, 234, 232, 230, - 240, 238, 236, 234, - 244, 242, 240, 238 ; - - sr11 = - 2500, - 2375 ; - - ir12 = - 640000, 639980, - 632000, 631980 ; - - fr13 = - 26244, 26235, 26226, - 25515, 25506, 25497 ; - - dr14 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970 ; - - cr21 = - "@", - "D", - "H", - "L" ; - - br22 = - 64, 62, - 68, 66, - 56, 54, - 60, 58 ; - - sr23 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390 ; - - ir24 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340 ; - - fr31 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677 ; - - dr32 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190 ; - - cr33 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T" ; - - br34 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58 ; - - sr41 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450 ; - - ir42 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180 ; - - fr43 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740 ; - - dr44 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270 ; - - c111 = - "@" ; - - b112 = - 64, 62 ; - - s113 = - 2500, 2495, 2490 ; - - i114 = - 640000, 639980, 639960, 639940 ; - - f121 = - 26244, - 26325 ; - - d122 = - 40000, 39990, - 40100, 40090 ; - - c123 = - "@", "B", "D", - "D", "F", "H" ; - - b124 = - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s131 = - 2500, - 2525, - 2550 ; - - i132 = - 640000, 639980, - 640400, 640380, - 640800, 640780 ; - - f133 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388 ; - - d134 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170 ; - - c141 = - "@", - "D", - "H", - "L" ; - - b142 = - 64, 62, - 68, 66, - 72, 70, - 76, 74 ; - - s143 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565 ; - - i144 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140 ; - - f211 = - 26244, - 25515 ; - - d212 = - 40000, 39990, - 39000, 38990 ; - - c213 = - "@", "B", "D", - "H", "J", "L" ; - - b214 = - 64, 62, 60, 58, - 56, 54, 52, 50 ; - - s221 = - 2500, - 2525, - 2375, - 2400 ; - - i222 = - 640000, 639980, - 640400, 640380, - 632000, 631980, - 632400, 632380 ; - - f223 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 25515, 25506, 25497, - 25596, 25587, 25578 ; - - d224 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070 ; - - c231 = - "@", - "D", - "H", - "H", - "L", - "P" ; - - b232 = - 64, 62, - 68, 66, - 72, 70, - 56, 54, - 60, 58, - 64, 62 ; - - s233 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415 ; - - i234 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740 ; - - f241 = - 26244, - 26325, - 26406, - 26487, - 25515, - 25596, - 25677, - 25758 ; - - d242 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 40300, 40290, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 39300, 39290 ; - - c243 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "L", "N", "P", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "T", "V", "X" ; - - b244 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 76, 74, 72, 70, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 68, 66, 64, 62 ; - - s311 = - 2500, - 2375, - 2250 ; - - i312 = - 640000, 639980, - 632000, 631980, - 624000, 623980 ; - - f313 = - 26244, 26235, 26226, - 25515, 25506, 25497, - 24786, 24777, 24768 ; - - d314 = - 40000, 39990, 39980, 39970, - 39000, 38990, 38980, 38970, - 38000, 37990, 37980, 37970 ; - - c321 = - "@", - "D", - "H", - "L", - "P", - "T" ; - - b322 = - 64, 62, - 68, 66, - 56, 54, - 60, 58, - 48, 46, - 52, 50 ; - - s323 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2250, 2245, 2240, - 2275, 2270, 2265 ; - - i324 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340 ; - - f331 = - 26244, - 26325, - 26406, - 25515, - 25596, - 25677, - 24786, - 24867, - 24948 ; - - d332 = - 40000, 39990, - 40100, 40090, - 40200, 40190, - 39000, 38990, - 39100, 39090, - 39200, 39190, - 38000, 37990, - 38100, 38090, - 38200, 38190 ; - - c333 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "P", "R", "T", - "T", "V", "X", - "X", "Z", "\" ; - - b334 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 72, 70, 68, 66, - 56, 54, 52, 50, - 60, 58, 56, 54, - 64, 62, 60, 58, - 48, 46, 44, 42, - 52, 50, 48, 46, - 56, 54, 52, 50 ; - - s341 = - 2500, - 2525, - 2550, - 2575, - 2375, - 2400, - 2425, - 2450, - 2250, - 2275, - 2300, - 2325 ; - - i342 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 641200, 641180, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 633200, 633180, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 625200, 625180 ; - - f343 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 26487, 26478, 26469, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 25758, 25749, 25740, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 25029, 25020, 25011 ; - - d344 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 40300, 40290, 40280, 40270, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 39300, 39290, 39280, 39270, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 38300, 38290, 38280, 38270 ; - - c411 = - "@", - "H", - "P", - "X" ; - - b412 = - 64, 62, - 56, 54, - 48, 46, - 40, 38 ; - - s413 = - 2500, 2495, 2490, - 2375, 2370, 2365, - 2250, 2245, 2240, - 2125, 2120, 2115 ; - - i414 = - 640000, 639980, 639960, 639940, - 632000, 631980, 631960, 631940, - 624000, 623980, 623960, 623940, - 616000, 615980, 615960, 615940 ; - - f421 = - 26244, - 26325, - 25515, - 25596, - 24786, - 24867, - 24057, - 24138 ; - - d422 = - 40000, 39990, - 40100, 40090, - 39000, 38990, - 39100, 39090, - 38000, 37990, - 38100, 38090, - 37000, 36990, - 37100, 37090 ; - - c423 = - "@", "B", "D", - "D", "F", "H", - "H", "J", "L", - "L", "N", "P", - "P", "R", "T", - "T", "V", "X", - "X", "Z", "\", - "\", "^", "`" ; - - b424 = - 64, 62, 60, 58, - 68, 66, 64, 62, - 56, 54, 52, 50, - 60, 58, 56, 54, - 48, 46, 44, 42, - 52, 50, 48, 46, - 40, 38, 36, 34, - 44, 42, 40, 38 ; - - s431 = - 2500, - 2525, - 2550, - 2375, - 2400, - 2425, - 2250, - 2275, - 2300, - 2125, - 2150, - 2175 ; - - i432 = - 640000, 639980, - 640400, 640380, - 640800, 640780, - 632000, 631980, - 632400, 632380, - 632800, 632780, - 624000, 623980, - 624400, 624380, - 624800, 624780, - 616000, 615980, - 616400, 616380, - 616800, 616780 ; - - f433 = - 26244, 26235, 26226, - 26325, 26316, 26307, - 26406, 26397, 26388, - 25515, 25506, 25497, - 25596, 25587, 25578, - 25677, 25668, 25659, - 24786, 24777, 24768, - 24867, 24858, 24849, - 24948, 24939, 24930, - 24057, 24048, 24039, - 24138, 24129, 24120, - 24219, 24210, 24201 ; - - d434 = - 40000, 39990, 39980, 39970, - 40100, 40090, 40080, 40070, - 40200, 40190, 40180, 40170, - 39000, 38990, 38980, 38970, - 39100, 39090, 39080, 39070, - 39200, 39190, 39180, 39170, - 38000, 37990, 37980, 37970, - 38100, 38090, 38080, 38070, - 38200, 38190, 38180, 38170, - 37000, 36990, 36980, 36970, - 37100, 37090, 37080, 37070, - 37200, 37190, 37180, 37170 ; - - c441 = - "@", - "D", - "H", - "L", - "H", - "L", - "P", - "T", - "P", - "T", - "X", - "\", - "X", - "\", - "`", - "d" ; - - b442 = - 64, 62, - 68, 66, - 72, 70, - 76, 74, - 56, 54, - 60, 58, - 64, 62, - 68, 66, - 48, 46, - 52, 50, - 56, 54, - 60, 58, - 40, 38, - 44, 42, - 48, 46, - 52, 50 ; - - s443 = - 2500, 2495, 2490, - 2525, 2520, 2515, - 2550, 2545, 2540, - 2575, 2570, 2565, - 2375, 2370, 2365, - 2400, 2395, 2390, - 2425, 2420, 2415, - 2450, 2445, 2440, - 2250, 2245, 2240, - 2275, 2270, 2265, - 2300, 2295, 2290, - 2325, 2320, 2315, - 2125, 2120, 2115, - 2150, 2145, 2140, - 2175, 2170, 2165, - 2200, 2195, 2190 ; - - i444 = - 640000, 639980, 639960, 639940, - 640400, 640380, 640360, 640340, - 640800, 640780, 640760, 640740, - 641200, 641180, 641160, 641140, - 632000, 631980, 631960, 631940, - 632400, 632380, 632360, 632340, - 632800, 632780, 632760, 632740, - 633200, 633180, 633160, 633140, - 624000, 623980, 623960, 623940, - 624400, 624380, 624360, 624340, - 624800, 624780, 624760, 624740, - 625200, 625180, 625160, 625140, - 616000, 615980, 615960, 615940, - 616400, 616380, 616360, 616340, - 616800, 616780, 616760, 616740, - 617200, 617180, 617160, 617140 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/whoi.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expected4/whoi.dmp deleted file mode 100644 index baa39770580..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expected4/whoi.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf whoi { -types: - compound emolt_sensor_record_t { - string SITE ; - short SERIAL_NUM ; - short PROBE_SETTING ; - string TIME_LOCAL ; - double YRDAY0_LOCAL ; - double TEMP ; - double SALT ; - double DEPTH_I ; - }; // emolt_sensor_record_t - emolt_sensor_record_t(*) emolt_sensor_t ; -variables: - emolt_sensor_t emolt_sensor ; -data: - - emolt_sensor = - {{"This is a data test string (pass 0).", 0, 16, "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988}, {"This is a data test string (pass 2).", 32, 48, "This is a data test string (pass 3).", 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328}, {"This is a data test string (pass 4).", 64, 80, "This is a data test string (pass 5).", 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697}, {"This is a data test string (pass 6).", 96, 112, "This is a data test string (pass 7).", 992.808635853866, 991.561893714788, 990.215996212637, 988.771077936042}, {"This is a data test string (pass 8).", 128, 144, "This is a data test string (pass 9).", 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/CMakeLists.txt b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/CMakeLists.txt deleted file mode 100644 index d46021ec043..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/Makefile.in deleted file mode 100644 index 86d8d34326f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/Makefile.in +++ /dev/null @@ -1,527 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.7 2009/11/22 06:17:54 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdap_test/expectremote3 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -b31a.dmp b31.dmp D1.dmp \ -Drifters.dmp EOSDB.dmp ingrid.dmp \ -nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \ -OverideExample.dmp SimpleDrdsExample.dmp \ -test.01.1.dmp test.01.dmp test.02.1.dmp \ -test.02.dmp test.03.1.dmp test.03.2.dmp \ -test.03.dmp test.04.1.dmp test.04.dmp \ -test.05.1.dmp test.05.dmp test.06.1.dmp \ -test.06.dmp test.06a.dmp test.07.1.dmp test.07.3.dmp \ -test.07.4.dmp test.07a.dmp test.07.dmp \ -test.21.dmp test.22.dmp test.23.dmp \ -test.31.dmp test.50.dmp test.53.dmp \ -test.55.dmp test.56.dmp test.57.dmp \ -test.66.dmp test.67.dmp test.68.dmp \ -test.69.dmp test.an1.dmp test.dfp1.dmp \ -test.gr1.dmp test.gr2.dmp test.gr3.dmp \ -test.gr4.dmp test.gr5.dmp test.nc.dmp \ -test.sds1.dmp test.sds2.dmp test.sds3.dmp \ -test.sds4.dmp test.sds5.dmp test.vs1.dmp \ -test.vs2.dmp test.vs3.dmp test.vs4.dmp \ -test.vs5.dmp whoi.dmp \ -GLOBEC_cetaceans.1.dmp GLOBEC_cetaceans.2.dmp \ -Surface_METAR_20120101_0000.nc.1.dmp \ -CMakeLists.txt - -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 ncdap_test/expectremote3/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/expectremote3/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/OverideExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/OverideExample.dmp deleted file mode 100644 index 1dc27f36895..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/OverideExample.dmp +++ /dev/null @@ -1,382 +0,0 @@ -netcdf OverideExample { -dimensions: - exp.data.f_0 = 10 ; - exp.i_0 = 3 ; - x = 10 ; - y = 10 ; - z = 10 ; -variables: - double exp.ThreeD(x, y, z) ; - int exp.j ; - int exp.i(exp.i_0) ; - int exp.data.i ; - double exp.data.f(exp.data.f_0) ; -data: - - exp.ThreeD = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, - 0.985584766909561, 0.983843692788121, 0.98200423511727, - 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, - 0.97133797485203, 0.968912421710645, 0.966389978134513, - 0.963770896365891, 0.961055438310771, 0.958243875512697, - 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, - 0.942754665528346, 0.939372712847379, 0.935896823677935, - 0.932327345606034, 0.92866463557651, 0.924909059857313, - 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, - 0.904751663219963, 0.900447102352677, 0.896052497525525, - 0.891568288195329, 0.886994922779284, 0.882332858610121, - 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, - 0.857708681363824, 0.852524522059506, 0.847255111013416, - 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, - 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, - 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, - 0.667462825841308, 0.659983145884982, 0.652437468164052, - 0.644826547240001, 0.63715114419858, 0.629412026573697, - 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, - 0.589788025031098, 0.581683089463883, 0.573519986072457, - 0.565299531160354, 0.557022546766217, 0.548689860581588, - 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, - 0.506220257232778, 0.497571047891727, 0.488872081860527, - 0.480124229028534, 0.47132836417374, 0.462485366875301, - 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, - 0.417594503958358, 0.408487440884157, 0.399339529406273, - 0.39015168430823, 0.380924824366882, 0.371659872260533, - 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, - 0.324796284438776, 0.315322362395269, 0.305816908378289, - 0.296280872925319, 0.286715209631956, 0.277120875056558, - 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, - 0.228752807808459, 0.219006687093041, 0.209238665891419, - 0.199449720997573, 0.189640831297834, 0.179812977673, - 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, - 0.130423708738146, 0.120502769367367, 0.11056977982007, - 0.100625733386932, 0.0906716244643097, 0.0807084484548006, - 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, - 0.040785011241591, 0.0307914590824661, 0.0207948278030924, - 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, - -0.0192024929016926, - -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, - -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, - -0.089085416936459, -0.099041036598728, -0.108986752239871, - -0.118921569296612, - -0.128844494295525, -0.138754534952378, -0.148650700271364, - -0.158532000644198, -0.168397447949077, -0.178246055649492, - -0.18807683889288, -0.197888814609109, -0.207681001608784, - -0.217452420681365, - -0.227202094693087, -0.236929048684675, -0.246632309968834, - -0.256310908227523, -0.26596387560898, -0.275590246824513, - -0.285189059245021, -0.294759352997261, -0.304300171059833, - -0.313810559358882, - -0.323289566863503, -0.332736245680845, -0.342149651150898, - -0.35152884194096, -0.360872880139767, -0.370180831351287, - -0.379451764788155, -0.388684753364752, -0.397878873789916, - -0.407033206659266, - -0.416146836547142, -0.425218852098152, -0.4342483461183, - -0.443234415665709, -0.452176162140912, -0.461072691376713, - -0.469923113727602, -0.47872654415872, -0.487482102334359, - -0.496188912705999, - -0.504846104599858, -0.513452812303959, -0.522008175154707, - -0.530511337622945, -0.538961449399512, -0.547357665480271, - -0.555699146250613, -0.56398505756941, -0.572214570852437, - -0.580386863155222, - -0.588501117255346, -0.59655652173416, -0.60455227105793, - -0.612487565658385, -0.62036161201268, -0.628173622722739, - -0.635922816594002, -0.643608418713541, -0.651229660527546, - -0.658785779918188, - -0.666276021279824, -0.673699635594561, -0.681055880507152, - -0.688344020399238, -0.695563326462902, -0.702713076773554, - -0.70979255636212, -0.716801057286543, -0.723737878702569, - -0.730602326933837, - -0.737393715541245, -0.744111365391593, -0.750754604725491, - -0.757322769224544, -0.763815202077774, -0.770231254047307, - -0.776570283533293, -0.782831656638065, -0.789014747229531, - -0.795118937003784, - -0.801143615546934, -0.807088180396146, -0.81295203709989, - -0.818734599277382, -0.824435288677222, -0.830053535235222, - -0.835588777131408, -0.841040460846201, -0.846408041215776, - -0.851690981486566, - -0.856888753368947, -0.862000837090063, -0.867026721445802, - -0.871965903851917, -0.876817890394281, -0.881582195878286, - -0.886258343877352, -0.890845866780576, -0.895344305839492, - -0.899753211213941, - -0.904072142017061, -0.90830066635937, -0.912438361391958, - -0.916484813348769, -0.920439617587981, -0.924302378632464, - -0.928072710209333, -0.931750235288572, -0.935334586120739, - -0.938825404273736, - -0.942222340668658, -0.945525055614696, -0.948733218843107, - -0.951846509540242, -0.954864616379626, -0.95778723755309, - -0.960614080800952, -0.963344863441243, -0.965979312397975, - -0.968517164228447, - -0.970958165149591, -0.973302071063349, -0.975548647581083, - -0.977697670047013, -0.979748923560684, -0.981702202998454, - -0.983557313034006, -0.985314068157884, -0.986972292696038, - -0.988531820827396, - -0.989992496600445, -0.991354173948826, -0.992616716705937, - -0.993779998618556, -0.994843903359459, -0.995808324539061, - -0.996673165716047, -0.997438340407019, -0.998103772095146, - -0.998669394237814, - -0.999135150273279, -0.999500993626328, -0.999766887712928, - -0.999932805943894, -0.99999873172754, -0.999964658471342, - -0.999830589582598, -0.999596538468086, -0.999262528532721, - -0.998828593177219, - -0.998294775794753, -0.997661129766618, -0.996927718456887, - -0.996094615206081, -0.99516190332383, -0.994129676080546, - -0.992998036698093, -0.991767098339465, -0.990436984097473, - -0.989007826982433, - -0.987479769908865, -0.985852965681203, -0.984127576978514, - -0.982303776338232, -0.980381746138899, -0.978361678581934, - -0.97624377567241, -0.974028249198852, -0.971715320712062, - -0.969305221502961, - -0.966798192579461, -0.964194484642366, -0.961494358060299, - -0.958698082843669, -0.955805938617666, -0.952818214594305, - -0.949735209543496, -0.946557231763177, -0.943284599048476, - -0.939917638659938, - -0.936456687290796, -0.932902091033304, -0.929254205344123, - -0.925513395008784, -0.921680034105203, -0.917754505966276, - -0.913737203141545, -0.909628527357945, -0.90542888947963, - -0.901138709466889, - -0.896758416334147, -0.892288448107068, -0.88772925177875, - -0.883081283265026, -0.878345007358874, -0.873520897683938, - -0.868609436647165, -0.863611115390566, -0.858526433742102, - -0.8533559001657, - -0.848100031710408, -0.842759353958694, -0.83733440097388, - -0.831825715246746, -0.826233847641272, -0.820559357339561, - -0.814802811785913, -0.808964786630086, -0.803045865669731, - -0.797046640792012, - -0.790967711914417, -0.784809686924768, -0.778573181620433, - -0.772258819646744, -0.765867232434637, -0.759399059137508, - -0.752854946567295, -0.746235549129803, -0.739541528759258, - -0.73277355485212, - -0.72593230420014, -0.719018460922681, -0.71203271639831, - -0.704975769195658, -0.697848325003564, -0.690651096560507, - -0.683384803583336, -0.676050172695292, -0.668647937353351, - -0.66117883777488, - -0.653643620863612, -0.646043040134959, -0.63837785564066, - -0.630648833892775, -0.622856747787041, -0.615002376525574, - -0.607086505538955, -0.599109926407685, -0.591073436783031, - -0.582977840307259, - -0.574823946533269, -0.566612570843644, -0.55834453436911, - -0.550020663906425, -0.541641791835699, -0.533208756037154, - -0.524722399807346, -0.516183571774825, -0.507593125815277, - -0.49895192096614, - -0.490260821340699, -0.481520696041674, -0.47273241907431, - -0.46389686925898, -0.455014930143305, -0.446087489913793, - -0.437115441307028, -0.428099681520394, -0.419041112122356, - -0.409940638962306, - -0.400799172079975, -0.391617625614436, -0.38239691771268, - -0.373137970437818, -0.363841709676858, -0.354509065048132, - -0.345140969808323, -0.335738360759151, -0.326302178153684, - -0.316833365602319, - -0.307332869978419, -0.297801641323633, -0.288240632752882, - -0.278650800359055, -0.269033103117399, -0.259388502789626, - -0.249717963827731, -0.24002245327755, -0.230302940682059, - -0.220560397984419, - -0.21079579943078, -0.20101012147286, -0.191204342670302, - -0.181379443592811, -0.171536406722112, -0.161676216353687, - -0.151799858498356, -0.141908320783673, -0.13200259235517, - -0.122083663777433, - -0.112152526935055, -0.102210174933442, -0.0922576019995117, - -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, - -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, - -0.0223871099574771, - -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, - 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, - 0.0475930341377878, 0.057579156123846, 0.0675595202422752, - 0.0775331284649787, - 0.0874989834394464, 0.0974560885884857, 0.10740344820988, - 0.117340067575955, 0.127264953033056, 0.137177112100907, - 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, - 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, - 0.225650805269396, 0.235381442954451, 0.245088542691362, - 0.254771133778243, 0.264428247964056, 0.274058919545427, - 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, - 0.321782029249722, 0.331233920236754, 0.340652688107789, - 0.350037390993891, 0.35938709043259, 0.368700851461733, - 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, - 0.414698113560782, 0.423776817679428, 0.432813144469452, - 0.441806190305705, 0.450755055891099, 0.459658846346532, - 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, - 0.503470671402114, 0.512085477241841, 0.520649074960579, - 0.529160608205695, 0.537619225830956, 0.546024081981648, - 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, - 0.587212716720073, 0.595277547988606, 0.603282851998404, - 0.611227828225735, 0.619111682179599, 0.626933625481169, - 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, - 0.665087526679283, 0.672521802248466, 0.679888826197857, - 0.687187861831201, 0.694418179251016, 0.701579055431586, - 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, - 0.736317001920619, 0.74304644096641, 0.749701575987307, - 0.756281741475356, 0.762786279419489, 0.769214539371333, - 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, - 0.800189441072806, 0.806146805264716, 0.812023555447886, - 0.817819103952194, 0.823532871227622, 0.829164285902202, - 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, - 0.856066651837255, 0.861192417161521, 0.866232063961728, - 0.871185088277397, 0.876050994810224, 0.880829296973609, - 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, - 0.903390327594559, 0.907633279098413, 0.911785468030717, - 0.915846479176035, 0.919815906436639, 0.92369335287311, - 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, - 0.941687625819678, 0.945005369334228, 0.948228613099346, - 0.951357034793342, 0.954390321576654, 0.957328170123131, - 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, - 0.970575892568149, 0.972935278296897, 0.975197371308593, - 0.977361945395819, 0.979428784102971, 0.981397680747901, - 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, - 0.989766485827815, 0.991143939568469, 0.992422279741117, - 0.993601378512806, 0.994681117974643, 0.99566139015358, - 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, - 0.99906765953439, 0.999449418224499, 0.999731232805658, - 0.999913075096642, 0.999994926913375, 0.999976780070743, - 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, - 0.998386479434759, 0.997768728667684, 0.997051201859214, - 0.996233970761431, 0.995317117096764, 0.994300732549815, - 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, - 0.987729751655308, 0.986118663792513, 0.984408964885101, - 0.982600825901538, 0.980694427654217, 0.978689960781373, - 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, - 0.967203954697364, 0.964615627196218, 0.961930838936196, - 0.959149858393887, 0.956272963665028, 0.953300442436693, - 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, - 0.937014175539204, 0.933474470112512, 0.929841418016701, - 0.926115382553955, 0.922296736324713, 0.918385861190416, - 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, - 0.897462060474762, 0.893006344689077, 0.888461329013091, - 0.883827467944587, 0.879105224865808, 0.874295071997128, - 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, - 0.848942801163572, 0.84361559505816, 0.838204028096251, - 0.832708641430035, 0.827129984593597, 0.821468615447972, - 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, - 0.791941186006336, 0.785795717263661, 0.779571669604088, - 0.773269665427194, 0.766890334928147, 0.760434316034681, - 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, - 0.727026756299476, 0.720124428411794, 0.713150088681373, - 0.706104434536373, 0.698988170536338, 0.691802008301737, - 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, - 0.654848115566766, 0.647257894312724, 0.639602947808631, - 0.631884041542758, 0.624101947399299, 0.616257443581182, - 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, - 0.576126448927319, 0.567924173288695, 0.55966510570601, - 0.551350072079141, 0.542979903904521, 0.534555438191992, - 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, - 0.491648317252275, 0.482915941655938, 0.474135274867862, - 0.465307194947413, 0.456432584695223, 0.447512331564922, - 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, - 0.402257798108573, 0.393082573564941, 0.38386804109152, - 0.374615122133879, 0.365324741976202, 0.355997829648764, - 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, - 0.30884805201492, 0.299321654334707, 0.289765324738495, - 0.280180018851278, 0.27056669519566, 0.260926315095994, - 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, - 0.212352398277126, 0.202570012076944, 0.192767369044364, - 0.182945449435517, 0.173105235434182, 0.163247711053556, - 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, - 0.113734989570117, 0.103794357219253, 0.0938433455191623, - 0.0838829495627223, 0.0739141653812273, 0.06393798984479, - 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, - 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, - -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, - -0.0360105786234153, - -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, - -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, - -0.105819871746218, -0.115758268216946, -0.125685088957318, - -0.135599341293531, - -0.145500033808614, -0.155386176441565, -0.16525678058636, - -0.17511085919081, -0.184947426855267, -0.194765499931161, - -0.204564096619365, -0.214342237068377, -0.2240989434723, - -0.233833240168624, - -0.243544153735791, -0.253230713090538, -0.262891949585, - -0.272526897103582, -0.282134592159557, -0.291714073991427, - -0.301264384658992, -0.310784569139144, -0.320273675421368, - -0.329730754602944, - -0.339154860983835, -0.348545052161256, -0.357900389123914, - -0.367219936345908, -0.376502761880283, -0.385747937452222, - -0.394954538551871, -0.404121644526792, -0.413248338674028, - -0.422333708331768, - -0.431376844970621, -0.440376844284454, -0.449332806280839, - -0.458243835371038, -0.467109040459569, -0.47592753503331, - -0.484698437250152, -0.493420870027184, -0.502093961128397, - -0.510716843251906, - -0.519288654116686, -0.527808536548793, -0.536275638567084, - -0.544689113468413, -0.553048119912302, -0.561351822005071, - -0.569599389383433, -0.57778999729752, -0.585922826693367, - -0.593997064294812, - -0.602011902684824, -0.609966540386242, -0.617860181941925, - -0.625692037994295, -0.633461325364275, -0.641167267129602, - -0.648809092702519, -0.656386037906838, -0.663897345054353, - -0.671342263020609, - -0.678720047320012, -0.686029960180282, -0.693271270616224, - -0.700443254502829, -0.707545194647683, -0.714576380862692, - -0.721536110035093, -0.728423686197768, -0.735238420598841, - -0.741979631770551, - -0.748646645597399, -0.755238795383558, -0.76175542191954, - -0.768195873548125, -0.774559506229517, -0.780845683605749, - -0.787053777064324, -0.793183165801068, -0.799233236882215, - -0.8052033853057, - -0.811093014061656, -0.816901534192113, -0.8226283648499, - -0.828272933356724, -0.833834675260437, -0.839313034391484, - -0.844707462918517, -0.850017421403178, -0.855242378854046, - -0.860381812779727, - -0.865435209241112, -0.870402062902767, -0.875281877083464, - -0.880074163805853, -0.884778443845253, -0.889394246777581, - -0.893921111026392, -0.898358583909032, -0.90270622168191, - -0.906963589584872, - -0.911130261884677, -0.915205821917566, -0.919189862130932, - -0.923081984124074, -0.926881798688036, -0.930588925844528, - -0.934202994883924, -0.937723644402332, -0.941150522337732, - -0.944483286005189, - -0.947721602131112, -0.950865146886587, -0.953913605919758, - -0.956866674387264, -0.959724056984716, -0.962485467976237, - -0.965150631223029, -0.967719280210989, -0.970191158077357, - -0.972566017636408, - -0.974843621404164, -0.977023741622146, -0.97910616028015, - -0.981090669138045, -0.982977069746599, -0.984765173467324, - -0.986454801491336, -0.988045784857242, -0.989537964468031, - -0.990931191106986, - -0.992225325452603, -0.993420238092527, -0.994515809536489, - -0.995511930228257, -0.996408500556594, -0.997205430865212, - -0.997902641461745, -0.998500062625715, -0.998997634615504, - -0.999395307674325, - -0.999693042035206, -0.999890807924959, -0.999988585567158, - -0.999986365184122, -0.999884146997886, -0.999681941230185, - -0.999379768101426, -0.998977657828671, -0.998475650622611, - -0.99787379668355, - -0.997172156196378, -0.996370799324562, -0.995469806203119, - -0.994469266930611, -0.993369281560131, -0.992169960089301, - -0.990871422449267, -0.989473798492712, -0.987977227980866, - -0.986381860569534, - -0.984687855794127, -0.982895383053711, -0.981004621594066, - -0.979015760489763, -0.976928998625255, -0.974744544674989, - -0.97246261708254, -0.970083444038766, -0.967607263458988, - -0.965034322959201, - -0.96236487983131, -0.959599201017404, -0.95673756308306, - -0.953780252189686, -0.950727564065908, -0.947579803977993, - -0.944337286699328, -0.941000336478938, -0.937569287009064, - -0.934044481391795, - -0.930426272104753, -0.926715020965855, -0.922911099097119, - -0.919014886887564, -0.915026773955164, -0.910947159107888, - -0.906776450303821, -0.902515064610368, -0.898163428162546, - -0.893721976120377, - -0.889191152625361, -0.884571410756073, -0.879863212482849, - -0.875067028621594, -0.870183338786697, -0.865212631343072, - -0.86015540335732, -0.855012160548026, -0.849783417235186, - -0.844469696288772 ; - - exp.j = 1 ; - - exp.i = 0, 2048, 4096 ; - - exp.data.i = 2 ; - - exp.data.f = 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/SimpleDrdsExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/SimpleDrdsExample.dmp deleted file mode 100644 index a1fef882966..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/SimpleDrdsExample.dmp +++ /dev/null @@ -1,319 +0,0 @@ -netcdf SimpleDrdsExample { -dimensions: - Drifters = 5 ; - maxStrlen64 = 64 ; -variables: - double Drifters.battery(Drifters) ; - Drifters.battery:Description = "Battery Voltage (VBAT)" ; - Drifters.battery:units = "volts" ; - double Drifters.checksum(Drifters) ; - Drifters.checksum:Description = "Low 8 bits of the sum of the specified bytes in ARGOS transmission. (Checksum)" ; - Drifters.checksum:units = "unknown" ; - double Drifters.data_age(Drifters) ; - Drifters.data_age:Description = "Optical Sensor Data Age: Elapsed time between sample time and time of delivery to ARGOS system. (DA)" ; - Drifters.data_age:units = "minutes" ; - double Drifters.ed490(Drifters) ; - Drifters.ed490:Description = "Downwelling Irradiance Sensor at 490nm" ; - Drifters.ed490:Wavelength = 490.f ; - Drifters.ed490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.ed490_stdev(Drifters) ; - Drifters.ed490_stdev:Description = "Standard deviation of Downwelling Irradiance Sensor at 490nm" ; - Drifters.ed490_stdev:Wavelength = 490.f ; - Drifters.ed490_stdev:units = "counts" ; - char Drifters.instrument_id(Drifters, maxStrlen64) ; - Drifters.instrument_id:Description = "String value used to uniquely identify each drifter instrument." ; - double Drifters.flag_argos(Drifters) ; - double Drifters.flag_gps(Drifters) ; - double Drifters.flag_optical(Drifters) ; - double Drifters.flag_sampling(Drifters) ; - double Drifters.flag_tracking(Drifters) ; - double Drifters.gpshour(Drifters) ; - Drifters.gpshour:Description = "GPS Acquisition Time: Hour of day of GPS fix. (GPSHour)" ; - Drifters.gpshour:units = "hour" ; - double Drifters.gpslat(Drifters) ; - Drifters.gpslat:Description = "GPS Latitiude (Lat)" ; - Drifters.gpslat:units = "degrees_north" ; - double Drifters.gpslon(Drifters) ; - Drifters.gpslon:Description = "GPS Longitude (Lon)" ; - Drifters.gpslon:units = "degrees_east" ; - double Drifters.latitude(Drifters) ; - Drifters.latitude:Description = "Latitude as recorded by ARGOS system" ; - Drifters.latitude:units = "degrees_north" ; - char Drifters.location(Drifters, maxStrlen64) ; - Drifters.location:Description = "String describing general location (southern ocean,oregon coast, etc.) of drifter deployment." ; - double Drifters.longitude(Drifters) ; - Drifters.longitude:Description = "Longitude as recorded by ARGOS system" ; - Drifters.longitude:units = "degrees_east" ; - double Drifters.lu412(Drifters) ; - Drifters.lu412:Description = "Upwelling Radiance Sensor at 412nm" ; - Drifters.lu412:Wavelength = 412.f ; - Drifters.lu412:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu412_stdev(Drifters) ; - Drifters.lu412_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 412nm" ; - Drifters.lu412_stdev:Wavelength = 412.f ; - Drifters.lu412_stdev:units = "counts" ; - double Drifters.lu443(Drifters) ; - Drifters.lu443:Description = "Upwelling Radiance Sensor at 443nm" ; - Drifters.lu443:Wavelength = 443.f ; - Drifters.lu443:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu443_stdev(Drifters) ; - Drifters.lu443_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 443nm" ; - Drifters.lu443_stdev:Wavelength = 443.f ; - Drifters.lu443_stdev:units = "counts" ; - double Drifters.lu490(Drifters) ; - Drifters.lu490:Description = "Upwelling Radiance Sensorat at 490nm" ; - Drifters.lu490:Wavelength = 490.f ; - Drifters.lu490:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu490_stdev(Drifters) ; - Drifters.lu490_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 490nm" ; - Drifters.lu490_stdev:Wavelength = 490.f ; - Drifters.lu490_stdev:units = "counts" ; - double Drifters.lu510(Drifters) ; - Drifters.lu510:Description = "Upwelling Radiance Sensor at 510nm" ; - Drifters.lu510:Wavelength = 510.f ; - Drifters.lu510:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu510_stdev(Drifters) ; - Drifters.lu510_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 510nm" ; - Drifters.lu510_stdev:Wavelength = 510.f ; - Drifters.lu510_stdev:units = "counts" ; - double Drifters.lu555(Drifters) ; - Drifters.lu555:Description = "Upwelling Radiance Sensor at 555nm" ; - Drifters.lu555:Wavelength = 555.f ; - Drifters.lu555:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu555_stdev(Drifters) ; - Drifters.lu555_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 555nm" ; - Drifters.lu555_stdev:Wavelength = 555.f ; - Drifters.lu555_stdev:units = "counts" ; - double Drifters.lu670(Drifters) ; - Drifters.lu670:Description = "Upwelling Radiance Sensor at 670nm" ; - Drifters.lu670:Wavelength = 670.f ; - Drifters.lu670:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu670_stdev(Drifters) ; - Drifters.lu670_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 670nm" ; - Drifters.lu670_stdev:Wavelength = 670.f ; - Drifters.lu670_stdev:units = "counts" ; - double Drifters.lu683(Drifters) ; - Drifters.lu683:Description = "Upwelling Radiance Sensor at 683nm" ; - Drifters.lu683:Wavelength = 683.f ; - Drifters.lu683:units = "microwatts per square cm per nanometer per steradian" ; - double Drifters.lu683_stdev(Drifters) ; - Drifters.lu683_stdev:Description = "Standard deviation of Upwelling Radiance Sensor at 683nm" ; - Drifters.lu683_stdev:Wavelength = 683.f ; - Drifters.lu683_stdev:units = "counts" ; - double Drifters.max_depth(Drifters) ; - Drifters.max_depth:Description = "Maximum Depth Voltage reading from the previous 10.5 minute period. (MDV)" ; - Drifters.max_depth:units = "volts" ; - double Drifters.night_len(Drifters) ; - Drifters.night_len:Description = "Length of the previous night (LNL)" ; - Drifters.night_len:units = "minutes" ; - double Drifters.nsamp(Drifters) ; - Drifters.nsamp:Description = "Message ID: Always set to 3 for GPS data Message" ; - Drifters.nsamp:units = "unknown" ; - double Drifters.numaves(Drifters) ; - Drifters.numaves:Description = "Number of samples in OCM data (NAve)" ; - Drifters.numaves:units = "unknown" ; - double Drifters.press_volts(Drifters) ; - Drifters.press_volts:Description = "Pressure sensor voltage at surface as determined by the surface check function. (SV)" ; - Drifters.press_volts:units = "volts" ; - double Drifters.rellat1hr(Drifters) ; - Drifters.rellat1hr:Description = "Relative Latitude: Change in latitude in the last hour as determined by the GPS subsystem (Rlat1)" ; - Drifters.rellat1hr:units = "degrees_north" ; - double Drifters.rellat2hr(Drifters) ; - Drifters.rellat2hr:Description = "Relative Latitude: Change in latitude in the last 2 hours as determined by the GPS subsystem (Rlat2)" ; - Drifters.rellat2hr:units = "degrees_north" ; - double Drifters.rellon1hr(Drifters) ; - Drifters.rellon1hr:Description = "Relative Longitude: Change in longitude in the last hour as determined by the GPS subsystem (Rlon1)" ; - Drifters.rellon1hr:units = "degrees_east" ; - double Drifters.rellon2hr(Drifters) ; - Drifters.rellon2hr:Description = "Relative Longitude: Change in longitude in the last 2 hours as determined by the GPS subsystem (Rlon2)" ; - Drifters.rellon2hr:units = "degrees_east" ; - double Drifters.sst(Drifters) ; - Drifters.sst:Description = "Sea Surface Temperature (SST)" ; - Drifters.sst:units = "Degrees C" ; - double Drifters.sub_wait(Drifters) ; - Drifters.sub_wait:Description = "Average time that bouy software waited for bouy to come to surface before measuring irradiance. (ASW)" ; - Drifters.sub_wait:units = "minutes" ; - double Drifters.surf_volts(Drifters) ; - Drifters.surf_volts:Description = "Averaged amplified pressure sensor voltage as measured during the surface check function. (AV)" ; - Drifters.surf_volts:units = "volts" ; - double Drifters.surface_average(Drifters) ; - Drifters.surface_average:Description = "Average duration of time that the bouy remained on the surface during the surface check function. (AST)" ; - Drifters.surface_average:units = "minutes" ; - double Drifters.surface_percent(Drifters) ; - Drifters.surface_percent:Description = "Percentage of time that the bouy was on the surface during the surface check function. (PTOS)" ; - Drifters.surface_percent:units = "percentage" ; - double Drifters.time(Drifters) ; - Drifters.time:Description = "Time data sample was received by ARGOS system" ; - Drifters.time:units = "Decimal days since Jan 1, 1993 (01/01/1993)" ; - double Drifters.ttff(Drifters) ; - Drifters.ttff:Description = "Time between GPS power on and first fix: Time To First Fix (TTFF)" ; - Drifters.ttff:units = "Decimal days since Jan 1, 1993 (01/01/1993)" ; - double Drifters.maxgps(Drifters) ; - Drifters.maxgps:Description = "Strongest GPS Signal Level (dB0)" ; - Drifters.maxgps:units = "dB" ; - double Drifters.rellat3hr(Drifters) ; - Drifters.rellat3hr:Description = "Relative Latitude: Change in latitude in the last 3 hours as determined by the GPS subsystem (Rlat3)" ; - Drifters.rellat3hr:units = "degrees_north" ; - double Drifters.rellon3hr(Drifters) ; - Drifters.rellon3hr:Description = "Relative Longitude: Change in longitude in the last 3 hours as determined by the GPS subsystem (Rlon3)" ; - Drifters.rellon3hr:units = "degrees_east" ; -data: - - Drifters.battery = 1000, 886.994922779284, 573.519986072456, - 130.423708738144, -342.1496511509 ; - - Drifters.checksum = 999.950000416665, 882.332858610121, 565.299531160354, - 120.502769367366, -351.528841940961 ; - - Drifters.data_age = 999.800006666578, 877.582561890373, 557.022546766217, - 110.569779820068, -360.872880139769 ; - - Drifters.ed490 = 999.550033748988, 872.744507645751, 548.689860581587, - 100.625733386931, -370.180831351288 ; - - Drifters.ed490_stdev = 999.200106660978, 867.81917967765, 540.302305868139, - 90.6716244643086, -379.451764788156 ; - - Drifters.instrument_id = - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0)." ; - - Drifters.flag_argos = 998.750260394966, 862.807070514761, 531.860721374355, - 80.7084484547995, -388.684753364753 ; - - Drifters.flag_gps = 998.200539935204, 857.708681363824, 523.365951251649, - 70.7372016677018, -397.878873789917 ; - - Drifters.flag_optical = 997.55100025328, 852.524522059506, 514.818844969955, - 60.7588812193848, -407.033206659267 ; - - Drifters.flag_sampling = 996.801706302619, 847.255111013416, - 506.220257232778, 50.7744849335781, -416.146836547144 ; - - Drifters.flag_tracking = 995.952733011994, 841.900975162269, - 497.571047891726, 40.7850112415899, -425.218852098153 ; - - Drifters.gpshour = 995.004165278026, 836.462649915187, 488.872081860527, - 30.791459082465, -434.248346118301 ; - - Drifters.gpslat = 993.956097956697, 830.940679100163, 480.124229028533, - 20.7948278030913, -443.23441566571 ; - - Drifters.gpslon = 992.808635853866, 825.335614909678, 471.328364173739, - 10.7961170582663, -452.176162140912 ; - - Drifters.latitude = 991.561893714788, 819.648017845479, 462.4853668753, - 0.796326710732153, -461.072691376713 ; - - Drifters.location = - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0).", - "This is a data test string (pass 0)." ; - - Drifters.longitude = 990.215996212637, 813.878456662534, 453.596121425577, - -9.20354326880945, -469.923113727602 ; - - Drifters.lu412 = 988.771077936042, 808.027508312152, 444.661516741706, - -19.2024929016938, -478.72654415872 ; - - Drifters.lu412_stdev = 987.227283375627, 802.095757884292, 435.682446276712, - -29.1995223012899, -487.482102334359 ; - - Drifters.lu443 = 985.584766909561, 796.083798549056, 426.659807930157, - -39.1936317729888, -496.188912705998 ; - - Drifters.lu443_stdev = 983.843692788121, 789.992231497365, 417.594503958357, - -49.1838219141717, -504.846104599857 ; - - Drifters.lu490 = 982.00423511727, 783.821665880849, 408.487440884157, - -59.1690937141495, -513.452812303959 ; - - Drifters.lu490_stdev = 980.066577841242, 777.572718750928, 399.339529406272, - -69.1484486540633, -522.008175154706 ; - - Drifters.lu510 = 978.030914724148, 771.246014997106, 390.151684308229, - -79.1208888067352, -530.511337622944 ; - - Drifters.lu510_stdev = 975.897449330605, 764.842187284488, 380.924824366881, - -89.0854169364603, -538.96144939951 ; - - Drifters.lu555 = 973.666395005375, 758.361875990508, 371.659872260532, - -99.0410365987293, -547.35766548027 ; - - Drifters.lu555_stdev = 971.33797485203, 751.805729140895, 362.357754476673, - -108.986752239872, -555.699146250611 ; - - Drifters.lu670 = 968.912421710645, 745.17440234487, 353.01940121933, - -118.921569296614, -563.985057569408 ; - - Drifters.lu670_stdev = 966.389978134513, 738.468558729588, 343.645746316046, - -128.844494295526, -572.214570852435 ; - - Drifters.lu683 = 963.770896365891, 731.688868873821, 334.237727124502, - -138.754534952379, -580.38686315522 ; - - Drifters.lu683_stdev = 961.055438310771, 724.836010740905, 324.796284438775, - -148.650700271365, -588.501117255343 ; - - Drifters.max_depth = 958.243875512697, 717.910669610943, 315.322362395268, - -158.532000644199, -596.556521734157 ; - - Drifters.night_len = 955.336489125606, 710.913538012277, 305.816908378288, - -168.397447949078, -604.552271057927 ; - - Drifters.nsamp = 952.333569885713, 703.845315652236, 296.280872925318, - -178.246055649493, -612.487565658382 ; - - Drifters.numaves = 949.235418082441, 696.706709347165, 286.715209631955, - -188.076838892881, -620.361612012677 ; - - Drifters.press_volts = 946.042343528387, 689.498432951747, 277.120875056557, - -197.88881460911, -628.173622722736 ; - - Drifters.rellat1hr = 942.754665528346, 682.221207287613, 267.498828624587, - -207.681001608785, -635.922816593999 ; - - Drifters.rellat2hr = 939.372712847379, 674.875760071267, 257.850032532669, - -217.452420681366, -643.608418713537 ; - - Drifters.rellon1hr = 935.896823677935, 667.462825841308, 248.175451652372, - -227.202094693088, -651.229660527542 ; - - Drifters.rellon2hr = 932.327345606034, 659.983145884982, 238.476053433722, - -236.929048684676, -658.785779918184 ; - - Drifters.sst = 928.66463557651, 652.437468164051, 228.752807808459, - -246.632309968835, -666.27602127982 ; - - Drifters.sub_wait = 924.909059857313, 644.826547240001, 219.006687093041, - -256.310908227524, -673.699635594557 ; - - Drifters.surf_volts = 921.060994002885, 637.15114419858, 209.238665891418, - -265.963875608982, -681.055880507149 ; - - Drifters.surface_average = 917.120822816605, 629.412026573696, - 199.449720997572, -275.590246824514, -688.344020399234 ; - - Drifters.surface_percent = 913.088940312308, 621.609968270664, - 189.640831297833, -285.189059245022, -695.563326462898 ; - - Drifters.time = 908.965749674885, 613.745749488811, 179.812977672998, - -294.759352997262, -702.71307677355 ; - - Drifters.ttff = 904.751663219963, 605.820156643462, 169.96714290024, - -304.300171059835, -709.792556362116 ; - - Drifters.maxgps = 900.447102352677, 597.833982287298, 160.10431155483, - -313.810559358884, -716.801057286538 ; - - Drifters.rellat3hr = 896.052497525525, 589.788025031098, 150.225469911685, - -323.289566863505, -723.737878702564 ; - - Drifters.rellon3hr = 891.568288195329, 581.683089463883, 140.331605846736, - -332.736245680847, -730.602326933832 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/nestedDAS.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/nestedDAS.dmp deleted file mode 100644 index 36995a46a82..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/nestedDAS.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf nestedDAS { -dimensions: - maxStrlen64 = 64 ; -variables: - byte b31 ; - char b32(maxStrlen64) ; - b32:billy = "Bob is my real name" ; - b32:Robert = "Really wants to be called Billy" ; -data: - - b31 = 0 ; - - b32 = "This is a data test string (pass 0)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.01.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.01.1.dmp deleted file mode 100644 index 9caf965cc36..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.01.1.dmp +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test { -variables: - double f64 ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - f64 = 1000 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.1.dmp deleted file mode 100644 index eabeeb5ade5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.1.dmp +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test { -dimensions: - person = 5 ; -variables: - int person.age(person) ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - person.age = 1, 2, 3, 5, 8 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.3.dmp deleted file mode 100644 index df91e0f2dac..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.3.dmp +++ /dev/null @@ -1,28 +0,0 @@ -netcdf test { -dimensions: - maxStrlen64 = 64 ; - person = 5 ; -variables: - char person.name(person, maxStrlen64) ; - int person.age(person) ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - person.name = - "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4)." ; - - person.age = 1, 2, 3, 5, 8 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.4.dmp deleted file mode 100644 index 6b8ba5b2c6e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.07.4.dmp +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test { -dimensions: - types = 5 ; -variables: - float types.f32(types) ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - types.f32 = 0, 0.9999833, 1.999867, 2.99955, 3.998933 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.67.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.67.dmp deleted file mode 100644 index 04f0fc45fb1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.67.dmp +++ /dev/null @@ -1,78 +0,0 @@ -netcdf test { -dimensions: - latitude = 20 ; - longitude = 10 ; -variables: - int i ; - double f(latitude, longitude) ; -data: - - i = 1 ; - - f = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, - 0.985584766909561, 0.983843692788121, 0.98200423511727, - 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, - 0.97133797485203, 0.968912421710645, 0.966389978134513, - 0.963770896365891, 0.961055438310771, 0.958243875512697, - 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, - 0.942754665528346, 0.939372712847379, 0.935896823677935, - 0.932327345606034, 0.92866463557651, 0.924909059857313, - 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, - 0.904751663219963, 0.900447102352677, 0.896052497525525, - 0.891568288195329, 0.886994922779284, 0.882332858610121, - 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, - 0.857708681363824, 0.852524522059506, 0.847255111013416, - 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, - 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, - 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, - 0.667462825841308, 0.659983145884982, 0.652437468164052, - 0.644826547240001, 0.63715114419858, 0.629412026573697, - 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, - 0.589788025031098, 0.581683089463883, 0.573519986072457, - 0.565299531160354, 0.557022546766217, 0.548689860581588, - 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, - 0.506220257232778, 0.497571047891727, 0.488872081860527, - 0.480124229028534, 0.47132836417374, 0.462485366875301, - 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, - 0.417594503958358, 0.408487440884157, 0.399339529406273, - 0.39015168430823, 0.380924824366882, 0.371659872260533, - 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, - 0.324796284438776, 0.315322362395269, 0.305816908378289, - 0.296280872925319, 0.286715209631956, 0.277120875056558, - 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, - 0.228752807808459, 0.219006687093041, 0.209238665891419, - 0.199449720997573, 0.189640831297834, 0.179812977673, - 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, - 0.130423708738146, 0.120502769367367, 0.11056977982007, - 0.100625733386932, 0.0906716244643097, 0.0807084484548006, - 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, - 0.040785011241591, 0.0307914590824661, 0.0207948278030924, - 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, - -0.0192024929016926, - -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, - -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, - -0.089085416936459, -0.099041036598728, -0.108986752239871, - -0.118921569296612, - -0.128844494295525, -0.138754534952378, -0.148650700271364, - -0.158532000644198, -0.168397447949077, -0.178246055649492, - -0.18807683889288, -0.197888814609109, -0.207681001608784, - -0.217452420681365, - -0.227202094693087, -0.236929048684675, -0.246632309968834, - -0.256310908227523, -0.26596387560898, -0.275590246824513, - -0.285189059245021, -0.294759352997261, -0.304300171059833, - -0.313810559358882, - -0.323289566863503, -0.332736245680845, -0.342149651150898, - -0.35152884194096, -0.360872880139767, -0.370180831351287, - -0.379451764788155, -0.388684753364752, -0.397878873789916, - -0.407033206659266 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.68.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.68.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.68.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.an1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.an1.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.an1.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.dfp1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.dfp1.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.dfp1.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr2.dmp deleted file mode 100644 index 025acf7f367..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr2.dmp +++ /dev/null @@ -1,355 +0,0 @@ -netcdf test { -dimensions: - GR_16__X = 5 ; - GR_16__Y = 5 ; - GR_16__comps = 16 ; - GR_1__X = 5 ; - GR_1__Y = 5 ; - GR_2__X = 5 ; - GR_2__Y = 5 ; - GR_2__comps = 2 ; - GR_32__X = 5 ; - GR_32__Y = 5 ; - GR_32__comps = 32 ; - GR_4__X = 5 ; - GR_4__Y = 5 ; - GR_4__comps = 4 ; - GR_8__X = 5 ; - GR_8__Y = 5 ; - GR_8__comps = 8 ; -variables: - int GR_1(GR_1__Y, GR_1__X) ; - int GR_2(GR_2__comps, GR_2__Y, GR_2__X) ; - int GR_4(GR_4__comps, GR_4__Y, GR_4__X) ; - int GR_8(GR_8__comps, GR_8__Y, GR_8__X) ; - int GR_16(GR_16__comps, GR_16__Y, GR_16__X) ; - int GR_32(GR_32__comps, GR_32__Y, GR_32__X) ; -data: - - GR_1 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_2 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_4 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752 ; - - GR_8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552 ; - - GR_16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552, - 409600, 411648, 413696, 415744, 417792, - 419840, 421888, 423936, 425984, 428032, - 430080, 432128, 434176, 436224, 438272, - 440320, 442368, 444416, 446464, 448512, - 450560, 452608, 454656, 456704, 458752, - 460800, 462848, 464896, 466944, 468992, - 471040, 473088, 475136, 477184, 479232, - 481280, 483328, 485376, 487424, 489472, - 491520, 493568, 495616, 497664, 499712, - 501760, 503808, 505856, 507904, 509952, - 512000, 514048, 516096, 518144, 520192, - 522240, 524288, 526336, 528384, 530432, - 532480, 534528, 536576, 538624, 540672, - 542720, 544768, 546816, 548864, 550912, - 552960, 555008, 557056, 559104, 561152, - 563200, 565248, 567296, 569344, 571392, - 573440, 575488, 577536, 579584, 581632, - 583680, 585728, 587776, 589824, 591872, - 593920, 595968, 598016, 600064, 602112, - 604160, 606208, 608256, 610304, 612352, - 614400, 616448, 618496, 620544, 622592, - 624640, 626688, 628736, 630784, 632832, - 634880, 636928, 638976, 641024, 643072, - 645120, 647168, 649216, 651264, 653312, - 655360, 657408, 659456, 661504, 663552, - 665600, 667648, 669696, 671744, 673792, - 675840, 677888, 679936, 681984, 684032, - 686080, 688128, 690176, 692224, 694272, - 696320, 698368, 700416, 702464, 704512, - 706560, 708608, 710656, 712704, 714752, - 716800, 718848, 720896, 722944, 724992, - 727040, 729088, 731136, 733184, 735232, - 737280, 739328, 741376, 743424, 745472, - 747520, 749568, 751616, 753664, 755712, - 757760, 759808, 761856, 763904, 765952, - 768000, 770048, 772096, 774144, 776192, - 778240, 780288, 782336, 784384, 786432, - 788480, 790528, 792576, 794624, 796672, - 798720, 800768, 802816, 804864, 806912, - 808960, 811008, 813056, 815104, 817152 ; - - GR_32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552, - 409600, 411648, 413696, 415744, 417792, - 419840, 421888, 423936, 425984, 428032, - 430080, 432128, 434176, 436224, 438272, - 440320, 442368, 444416, 446464, 448512, - 450560, 452608, 454656, 456704, 458752, - 460800, 462848, 464896, 466944, 468992, - 471040, 473088, 475136, 477184, 479232, - 481280, 483328, 485376, 487424, 489472, - 491520, 493568, 495616, 497664, 499712, - 501760, 503808, 505856, 507904, 509952, - 512000, 514048, 516096, 518144, 520192, - 522240, 524288, 526336, 528384, 530432, - 532480, 534528, 536576, 538624, 540672, - 542720, 544768, 546816, 548864, 550912, - 552960, 555008, 557056, 559104, 561152, - 563200, 565248, 567296, 569344, 571392, - 573440, 575488, 577536, 579584, 581632, - 583680, 585728, 587776, 589824, 591872, - 593920, 595968, 598016, 600064, 602112, - 604160, 606208, 608256, 610304, 612352, - 614400, 616448, 618496, 620544, 622592, - 624640, 626688, 628736, 630784, 632832, - 634880, 636928, 638976, 641024, 643072, - 645120, 647168, 649216, 651264, 653312, - 655360, 657408, 659456, 661504, 663552, - 665600, 667648, 669696, 671744, 673792, - 675840, 677888, 679936, 681984, 684032, - 686080, 688128, 690176, 692224, 694272, - 696320, 698368, 700416, 702464, 704512, - 706560, 708608, 710656, 712704, 714752, - 716800, 718848, 720896, 722944, 724992, - 727040, 729088, 731136, 733184, 735232, - 737280, 739328, 741376, 743424, 745472, - 747520, 749568, 751616, 753664, 755712, - 757760, 759808, 761856, 763904, 765952, - 768000, 770048, 772096, 774144, 776192, - 778240, 780288, 782336, 784384, 786432, - 788480, 790528, 792576, 794624, 796672, - 798720, 800768, 802816, 804864, 806912, - 808960, 811008, 813056, 815104, 817152, - 819200, 821248, 823296, 825344, 827392, - 829440, 831488, 833536, 835584, 837632, - 839680, 841728, 843776, 845824, 847872, - 849920, 851968, 854016, 856064, 858112, - 860160, 862208, 864256, 866304, 868352, - 870400, 872448, 874496, 876544, 878592, - 880640, 882688, 884736, 886784, 888832, - 890880, 892928, 894976, 897024, 899072, - 901120, 903168, 905216, 907264, 909312, - 911360, 913408, 915456, 917504, 919552, - 921600, 923648, 925696, 927744, 929792, - 931840, 933888, 935936, 937984, 940032, - 942080, 944128, 946176, 948224, 950272, - 952320, 954368, 956416, 958464, 960512, - 962560, 964608, 966656, 968704, 970752, - 972800, 974848, 976896, 978944, 980992, - 983040, 985088, 987136, 989184, 991232, - 993280, 995328, 997376, 999424, 1001472, - 1003520, 1005568, 1007616, 1009664, 1011712, - 1013760, 1015808, 1017856, 1019904, 1021952, - 1024000, 1026048, 1028096, 1030144, 1032192, - 1034240, 1036288, 1038336, 1040384, 1042432, - 1044480, 1046528, 1048576, 1050624, 1052672, - 1054720, 1056768, 1058816, 1060864, 1062912, - 1064960, 1067008, 1069056, 1071104, 1073152, - 1075200, 1077248, 1079296, 1081344, 1083392, - 1085440, 1087488, 1089536, 1091584, 1093632, - 1095680, 1097728, 1099776, 1101824, 1103872, - 1105920, 1107968, 1110016, 1112064, 1114112, - 1116160, 1118208, 1120256, 1122304, 1124352, - 1126400, 1128448, 1130496, 1132544, 1134592, - 1136640, 1138688, 1140736, 1142784, 1144832, - 1146880, 1148928, 1150976, 1153024, 1155072, - 1157120, 1159168, 1161216, 1163264, 1165312, - 1167360, 1169408, 1171456, 1173504, 1175552, - 1177600, 1179648, 1181696, 1183744, 1185792, - 1187840, 1189888, 1191936, 1193984, 1196032, - 1198080, 1200128, 1202176, 1204224, 1206272, - 1208320, 1210368, 1212416, 1214464, 1216512, - 1218560, 1220608, 1222656, 1224704, 1226752, - 1228800, 1230848, 1232896, 1234944, 1236992, - 1239040, 1241088, 1243136, 1245184, 1247232, - 1249280, 1251328, 1253376, 1255424, 1257472, - 1259520, 1261568, 1263616, 1265664, 1267712, - 1269760, 1271808, 1273856, 1275904, 1277952, - 1280000, 1282048, 1284096, 1286144, 1288192, - 1290240, 1292288, 1294336, 1296384, 1298432, - 1300480, 1302528, 1304576, 1306624, 1308672, - 1310720, 1312768, 1314816, 1316864, 1318912, - 1320960, 1323008, 1325056, 1327104, 1329152, - 1331200, 1333248, 1335296, 1337344, 1339392, - 1341440, 1343488, 1345536, 1347584, 1349632, - 1351680, 1353728, 1355776, 1357824, 1359872, - 1361920, 1363968, 1366016, 1368064, 1370112, - 1372160, 1374208, 1376256, 1378304, 1380352, - 1382400, 1384448, 1386496, 1388544, 1390592, - 1392640, 1394688, 1396736, 1398784, 1400832, - 1402880, 1404928, 1406976, 1409024, 1411072, - 1413120, 1415168, 1417216, 1419264, 1421312, - 1423360, 1425408, 1427456, 1429504, 1431552, - 1433600, 1435648, 1437696, 1439744, 1441792, - 1443840, 1445888, 1447936, 1449984, 1452032, - 1454080, 1456128, 1458176, 1460224, 1462272, - 1464320, 1466368, 1468416, 1470464, 1472512, - 1474560, 1476608, 1478656, 1480704, 1482752, - 1484800, 1486848, 1488896, 1490944, 1492992, - 1495040, 1497088, 1499136, 1501184, 1503232, - 1505280, 1507328, 1509376, 1511424, 1513472, - 1515520, 1517568, 1519616, 1521664, 1523712, - 1525760, 1527808, 1529856, 1531904, 1533952, - 1536000, 1538048, 1540096, 1542144, 1544192, - 1546240, 1548288, 1550336, 1552384, 1554432, - 1556480, 1558528, 1560576, 1562624, 1564672, - 1566720, 1568768, 1570816, 1572864, 1574912, - 1576960, 1579008, 1581056, 1583104, 1585152, - 1587200, 1589248, 1591296, 1593344, 1595392, - 1597440, 1599488, 1601536, 1603584, 1605632, - 1607680, 1609728, 1611776, 1613824, 1615872, - 1617920, 1619968, 1622016, 1624064, 1626112, - 1628160, 1630208, 1632256, 1634304, 1636352 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr3.dmp deleted file mode 100644 index d2e07054111..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr3.dmp +++ /dev/null @@ -1,68 +0,0 @@ -netcdf test { -dimensions: - GR_Component__X = 5 ; - GR_Component__Y = 5 ; - GR_Component__comps = 3 ; - GR_Line__X = 5 ; - GR_Line__Y = 5 ; - GR_Line__comps = 3 ; - GR_Pixel__X = 5 ; - GR_Pixel__Y = 5 ; - GR_Pixel__comps = 3 ; -variables: - int GR_Pixel(GR_Pixel__comps, GR_Pixel__Y, GR_Pixel__X) ; - int GR_Line(GR_Line__comps, GR_Line__Y, GR_Line__X) ; - int GR_Component(GR_Component__comps, GR_Component__Y, GR_Component__X) ; -data: - - GR_Pixel = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; - - GR_Line = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; - - GR_Component = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr4.dmp deleted file mode 100644 index d86942b9d4c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.gr4.dmp +++ /dev/null @@ -1,26 +0,0 @@ -netcdf test { -dimensions: - GR_Palette__X = 5 ; - GR_Palette__Y = 5 ; - GR_Palette__comps = 3 ; -variables: - int GR_Palette(GR_Palette__comps, GR_Palette__Y, GR_Palette__X) ; -data: - - GR_Palette = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.sds3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.sds3.dmp deleted file mode 100644 index 75e294dfbd8..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote3/test.sds3.dmp +++ /dev/null @@ -1,223 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 8 ; - fakeDim1 = 4 ; - fakeDim10 = 2 ; - fakeDim11 = 2 ; - fakeDim12 = 2 ; - fakeDim13 = 2 ; - fakeDim14 = 2 ; - fakeDim15 = 1 ; - fakeDim16 = 2 ; - fakeDim17 = 1 ; - fakeDim18 = 2 ; - fakeDim19 = 1 ; - fakeDim2 = 4 ; - fakeDim20 = 2 ; - fakeDim21 = 1 ; - fakeDim22 = 2 ; - fakeDim23 = 1 ; - fakeDim24 = 2 ; - fakeDim25 = 1 ; - fakeDim26 = 2 ; - fakeDim27 = 1 ; - fakeDim28 = 2 ; - fakeDim29 = 1 ; - fakeDim3 = 4 ; - fakeDim30 = 2 ; - fakeDim31 = 1 ; - fakeDim32 = 2 ; - fakeDim33 = 1 ; - fakeDim34 = 2 ; - fakeDim35 = 2 ; - fakeDim36 = 1 ; - fakeDim37 = 1 ; - fakeDim38 = 1 ; - fakeDim39 = 2 ; - fakeDim4 = 2 ; - fakeDim40 = 1 ; - fakeDim41 = 1 ; - fakeDim42 = 1 ; - fakeDim43 = 2 ; - fakeDim44 = 1 ; - fakeDim45 = 1 ; - fakeDim46 = 1 ; - fakeDim47 = 2 ; - fakeDim48 = 1 ; - fakeDim49 = 1 ; - fakeDim5 = 2 ; - fakeDim50 = 1 ; - fakeDim51 = 2 ; - fakeDim52 = 1 ; - fakeDim53 = 1 ; - fakeDim54 = 1 ; - fakeDim55 = 2 ; - fakeDim56 = 1 ; - fakeDim57 = 1 ; - fakeDim58 = 1 ; - fakeDim59 = 2 ; - fakeDim6 = 2 ; - fakeDim60 = 1 ; - fakeDim61 = 1 ; - fakeDim62 = 1 ; - fakeDim63 = 2 ; - fakeDim64 = 1 ; - fakeDim65 = 1 ; - fakeDim66 = 1 ; - fakeDim67 = 2 ; - fakeDim68 = 1 ; - fakeDim69 = 1 ; - fakeDim7 = 2 ; - fakeDim70 = 1 ; - fakeDim8 = 2 ; - fakeDim9 = 2 ; -variables: - int SDS_2(fakeDim0, fakeDim1) ; - int SDS_3(fakeDim2, fakeDim3, fakeDim4) ; - int SDS_4(fakeDim5, fakeDim6, fakeDim7, fakeDim8) ; - int SDS_5(fakeDim9, fakeDim10, fakeDim11, fakeDim12, fakeDim13) ; - int SDS_6(fakeDim14, fakeDim15, fakeDim16, fakeDim17, fakeDim18, fakeDim19) ; - int SDS_7(fakeDim20, fakeDim21, fakeDim22, fakeDim23, fakeDim24, fakeDim25, fakeDim26) ; - int SDS_8(fakeDim27, fakeDim28, fakeDim29, fakeDim30, fakeDim31, fakeDim32, fakeDim33, fakeDim34) ; - int SDS_16(fakeDim35, fakeDim36, fakeDim37, fakeDim38, fakeDim39, fakeDim40, fakeDim41, fakeDim42, fakeDim43, fakeDim44, fakeDim45, fakeDim46, fakeDim47, fakeDim48, fakeDim49, fakeDim50) ; - int SDS_20(fakeDim51, fakeDim52, fakeDim53, fakeDim54, fakeDim55, fakeDim56, fakeDim57, fakeDim58, fakeDim59, fakeDim60, fakeDim61, fakeDim62, fakeDim63, fakeDim64, fakeDim65, fakeDim66, fakeDim67, fakeDim68, fakeDim69, fakeDim70) ; -data: - - SDS_2 = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488 ; - - SDS_3 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720, - 32768, 34816, - 36864, 38912, - 40960, 43008, - 45056, 47104, - 49152, 51200, - 53248, 55296, - 57344, 59392, - 61440, 63488 ; - - SDS_4 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_5 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720, - 32768, 34816, - 36864, 38912, - 40960, 43008, - 45056, 47104, - 49152, 51200, - 53248, 55296, - 57344, 59392, - 61440, 63488 ; - - SDS_6 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336 ; - - SDS_7 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_8 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_16 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336, - 16384, - 18432, - 20480, - 22528, - 24576, - 26624, - 28672, - 30720 ; - - SDS_20 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336, - 16384, - 18432, - 20480, - 22528, - 24576, - 26624, - 28672, - 30720, - 32768, - 34816, - 36864, - 38912, - 40960, - 43008, - 45056, - 47104, - 49152, - 51200, - 53248, - 55296, - 57344, - 59392, - 61440, - 63488 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/CMakeLists.txt b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/CMakeLists.txt deleted file mode 100644 index d46021ec043..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) - -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/D1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/D1.dmp deleted file mode 100644 index 22e9891a957..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/D1.dmp +++ /dev/null @@ -1,16 +0,0 @@ -netcdf D1 { -types: - compound Drifters_record_t { - string instrument_id ; - string location ; - double latitude ; - double longitude ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665}, {"This is a data test string (pass 2).", "This is a data test string (pass 3).", 999.800006666578, 999.550033748988}, {"This is a data test string (pass 4).", "This is a data test string (pass 5).", 999.200106660978, 998.750260394966}, {"This is a data test string (pass 6).", "This is a data test string (pass 7).", 998.200539935204, 997.55100025328}, {"This is a data test string (pass 8).", "This is a data test string (pass 9).", 996.801706302619, 995.952733011994}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Drifters.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Drifters.dmp deleted file mode 100644 index 7ccbd1884e9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Drifters.dmp +++ /dev/null @@ -1,31 +0,0 @@ -netcdf Drifters { -types: - compound Drifters_record_t { - string Drifter_ID ; - string Date_Sampled ; - double Latitude ; - double Longitude ; - double SST ; - double Ed_490 ; - double Lu_412 ; - double Lu_443 ; - double Lu_490 ; - double Lu_510 ; - double Lu_555 ; - double Lu_670 ; - double Lu_683 ; - double CHL ; - double FLH ; - string Region ; - double Decimal_Day ; - string Calibration_File ; - string Drifter_Type ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, "This is a data test string (pass 2).", 991.561893714788, "This is a data test string (pass 3).", "This is a data test string (pass 4)."}, {"This is a data test string (pass 5).", "This is a data test string (pass 6).", 990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, "This is a data test string (pass 7).", 963.770896365891, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}, {"This is a data test string (pass 10).", "This is a data test string (pass 11).", 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, "This is a data test string (pass 12).", 917.120822816605, "This is a data test string (pass 13).", "This is a data test string (pass 14)."}, {"This is a data test string (pass 15).", "This is a data test string (pass 16).", 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, "This is a data test string (pass 17).", 852.524522059506, "This is a data test string (pass 18).", "This is a data test string (pass 19)."}, {"This is a data test string (pass 20).", "This is a data test string (pass 21).", 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, "This is a data test string (pass 22).", 771.246014997106, "This is a data test string (pass 23).", "This is a data test string (pass 24)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/EOSDB.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/EOSDB.dmp deleted file mode 100644 index 613414ee6c2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/EOSDB.dmp +++ /dev/null @@ -1,129 +0,0 @@ -netcdf EOSDB { -types: - compound Abbott_Image_Data_record_t { - string Image_Name ; - string Date_Sampled ; - double North_Latitude ; - double South_Latitude ; - double West_Longitude ; - double East_Longitude ; - string Version ; - int Julian_Date ; - string PI ; - string Algorithm_Code ; - string Project ; - string Comments ; - }; // Abbott_Image_Data_record_t - Abbott_Image_Data_record_t(*) Abbott_Image_Data_t ; - compound Sat_Images_record_t { - string Image_Name ; - string Date_Sampled ; - double North_Latitude ; - double South_Latitude ; - double West_Longitude ; - double East_Longintude ; - string Version ; - string Satellite ; - string Instrument ; - string Channel ; - string Resolution ; - int Image_Size ; - string Image_Type ; - int Image_Bits_Per_Pixel ; - int Image_Width ; - int Image_Height ; - ubyte Image(1000) ; - int Raw_Image_Size ; - ubyte Raw_Image_Data(1000) ; - int Year ; - string Month ; - int Day ; - int Hour ; - }; // Sat_Images_record_t - Sat_Images_record_t(*) Sat_Images_t ; - compound Drifters_record_t { - string Instrument_ID ; - double Battery ; - double Checksum ; - double Date_Age ; - double Ed490 ; - double Ed490_stdev ; - double Latitude ; - double Longitude ; - double Lu412 ; - double Lu412_stdev ; - double Lu443 ; - double Lu443_stdev ; - double Lu490 ; - double Lu490_stdev ; - double Lu510 ; - double Lu510_stdev ; - double Lu555 ; - double Lu555_stdev ; - double Lu670 ; - double Lu670_stdev ; - double Lu683 ; - double Lu683_stdev ; - double Max_Depth ; - double Night_Len ; - double Number_Samples ; - double Num_Aves ; - double Press_Volts ; - double Sea_Surface_Temperature ; - double Sub_Wait ; - double Surf_Volts ; - double Surface_Average ; - double Surface_Percent ; - double Julian_Greenwich ; - double Sun_Angle ; - int Optical_Flag ; - int Sampling_Flag ; - int Tracking_Flag ; - int Hand_Checked_Flag ; - double Julian_Local_Time ; - string Date_Greenwich ; - string Date_Local_Time ; - string DateStamp ; - string algo_code ; - int GPS_hour ; - double GPS_lat ; - double GPS_lon ; - double rel1_lat ; - double rel1_lon ; - double rel2_lat ; - double rel2_lon ; - int time_to_1st_fix ; - int message_ID ; - int max_GPS_volt ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; - compound Instrument_record_t { - string Instrument_ID ; - string Instrument_Type ; - string Sensor_Platform_ID ; - string Comment ; - }; // Instrument_record_t - Instrument_record_t(*) Instrument_t ; -variables: - Abbott_Image_Data_t Abbott_Image_Data ; - Sat_Images_t Sat_Images ; - Drifters_t Drifters ; - Instrument_t Instrument ; - -// global attributes: - string :history = "FERRET V4.11 (debug/no GUI) 19-Nov-95FERRET V4.20 (debug/no GUI) 12-Mar-96" ; - string :title = "COADS Surface Marine Observations (1854-1993)" ; -data: - - Abbott_Image_Data = - {{"This is a data test string (pass 0).", "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988, "This is a data test string (pass 2).", 1, "This is a data test string (pass 3).", "This is a data test string (pass 4).", "This is a data test string (pass 5).", "This is a data test string (pass 6)."}, {"This is a data test string (pass 7).", "This is a data test string (pass 8).", 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328, "This is a data test string (pass 9).", 2, "This is a data test string (pass 10).", "This is a data test string (pass 11).", "This is a data test string (pass 12).", "This is a data test string (pass 13)."}, {"This is a data test string (pass 14).", "This is a data test string (pass 15).", 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, "This is a data test string (pass 16).", 3, "This is a data test string (pass 17).", "This is a data test string (pass 18).", "This is a data test string (pass 19).", "This is a data test string (pass 20)."}, {"This is a data test string (pass 21).", "This is a data test string (pass 22).", 992.808635853866, 991.561893714788, 990.215996212637, 988.771077936042, "This is a data test string (pass 23).", 5, "This is a data test string (pass 24).", "This is a data test string (pass 25).", "This is a data test string (pass 26).", "This is a data test string (pass 27)."}, {"This is a data test string (pass 28).", "This is a data test string (pass 29).", 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, "This is a data test string (pass 30).", 8, "This is a data test string (pass 31).", "This is a data test string (pass 32).", "This is a data test string (pass 33).", "This is a data test string (pass 34)."}} ; - - Sat_Images = - {{"This is a data test string (pass 35).", "This is a data test string (pass 36).", 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, "This is a data test string (pass 37).", "This is a data test string (pass 38).", "This is a data test string (pass 39).", "This is a data test string (pass 40).", "This is a data test string (pass 41).", 13, "This is a data test string (pass 42).", 21, 34, 55, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 89, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 144, "This is a data test string (pass 43).", 233, 377}, {"This is a data test string (pass 44).", "This is a data test string (pass 45).", 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891, "This is a data test string (pass 46).", "This is a data test string (pass 47).", "This is a data test string (pass 48).", "This is a data test string (pass 49).", "This is a data test string (pass 50).", 610, "This is a data test string (pass 51).", 987, 1597, 2584, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 4181, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 6765, "This is a data test string (pass 52).", 10946, 17711}, {"This is a data test string (pass 53).", "This is a data test string (pass 54).", 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, "This is a data test string (pass 55).", "This is a data test string (pass 56).", "This is a data test string (pass 57).", "This is a data test string (pass 58).", "This is a data test string (pass 59).", 28657, "This is a data test string (pass 60).", 46368, 75025, 121393, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 196418, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 317811, "This is a data test string (pass 61).", 514229, 832040}, {"This is a data test string (pass 62).", "This is a data test string (pass 63).", 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, "This is a data test string (pass 64).", "This is a data test string (pass 65).", "This is a data test string (pass 66).", "This is a data test string (pass 67).", "This is a data test string (pass 68).", 1346269, "This is a data test string (pass 69).", 2178309, 3524578, 5702887, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 9227465, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 14930352, "This is a data test string (pass 70).", 24157817, 39088169}, {"This is a data test string (pass 71).", "This is a data test string (pass 72).", 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, "This is a data test string (pass 73).", "This is a data test string (pass 74).", "This is a data test string (pass 75).", "This is a data test string (pass 76).", "This is a data test string (pass 77).", 63245986, "This is a data test string (pass 78).", 102334155, 165580141, 267914296, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 433494437, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}, 701408733, "This is a data test string (pass 79).", 1134903170, 1836311903}} ; - - Drifters = - {{"This is a data test string (pass 80).", 921.060994002885, 917.120822816605, 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, 852.524522059506, 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106, 764.842187284488, 758.361875990508, 751.805729140895, -1323752223, 512559680, -811192543, -298632863, 745.17440234487, "This is a data test string (pass 81).", "This is a data test string (pass 82).", "This is a data test string (pass 83).", "This is a data test string (pass 84).", -1109825406, 738.468558729588, 731.688868873821, 724.836010740905, 717.910669610943, 710.913538012277, 703.845315652236, -1408458269, 1776683621, 368225352}, {"This is a data test string (pass 85).", 696.706709347165, 689.498432951747, 682.221207287613, 674.875760071267, 667.462825841308, 659.983145884982, 652.437468164051, 644.826547240001, 637.15114419858, 629.412026573696, 621.609968270664, 613.745749488811, 605.820156643462, 597.833982287298, 589.788025031098, 581.683089463883, 573.519986072456, 565.299531160354, 557.022546766217, 548.689860581587, 540.302305868139, 531.860721374355, 523.365951251649, 514.818844969955, 506.220257232778, 497.571047891726, 488.872081860527, 480.124229028533, 471.328364173739, 462.4853668753, 453.596121425577, 444.661516741706, 435.682446276712, 2144908973, -1781832971, 363076002, -1418756969, 426.659807930157, "This is a data test string (pass 86).", "This is a data test string (pass 87).", "This is a data test string (pass 88).", "This is a data test string (pass 89).", -1055680967, 417.594503958357, 408.487440884157, 399.339529406272, 390.151684308229, 380.924824366881, 371.659872260532, 1820529360, 764848393, -1709589543}, {"This is a data test string (pass 90).", 362.357754476673, 353.01940121933, 343.645746316046, 334.237727124502, 324.796284438775, 315.322362395268, 305.816908378288, 296.280872925318, 286.715209631955, 277.120875056557, 267.498828624587, 257.850032532669, 248.175451652372, 238.476053433722, 228.752807808459, 219.006687093041, 209.238665891418, 199.449720997572, 189.640831297833, 179.812977672998, 169.96714290024, 160.10431155483, 150.225469911685, 140.331605846736, 130.423708738144, 120.502769367366, 110.569779820068, 100.625733386931, 90.6716244643086, 80.7084484547995, 70.7372016677018, 60.7588812193848, 50.7744849335781, -944741150, 1640636603, 695895453, -1958435240, 40.7850112415899, "This is a data test string (pass 91).", "This is a data test string (pass 92).", "This is a data test string (pass 93).", "This is a data test string (pass 94).", -1262539787, 30.791459082465, 20.7948278030913, 10.7961170582663, 0.796326710732153, -9.20354326880945, -19.2024929016938, 1073992269, -188547518, 885444751}, {"This is a data test string (pass 95).", -29.1995223012899, -39.1936317729888, -49.1838219141717, -59.1690937141495, -69.1484486540633, -79.1208888067352, -89.0854169364603, -99.0410365987293, -108.986752239872, -118.921569296614, -128.844494295526, -138.754534952379, -148.650700271365, -158.532000644199, -168.397447949078, -178.246055649493, -188.076838892881, -197.88881460911, -207.681001608785, -217.452420681366, -227.202094693088, -236.929048684676, -246.632309968835, -256.310908227524, -265.963875608982, -275.590246824514, -285.189059245022, -294.759352997262, -304.300171059835, -313.810559358884, -323.289566863505, -332.736245680847, -342.1496511509, 696897233, 1582341984, -2015728079, -433386095, -351.528841940961, "This is a data test string (pass 96).", "This is a data test string (pass 97).", "This is a data test string (pass 98).", "This is a data test string (pass 99).", 1845853122, -360.872880139769, -370.180831351288, -379.451764788156, -388.684753364753, -397.878873789917, -407.033206659267, 1412467027, -1036647147, 375819880}, {"This is a data test string (pass 100).", -416.146836547144, -425.218852098153, -434.248346118301, -443.23441566571, -452.176162140912, -461.072691376713, -469.923113727602, -478.72654415872, -487.482102334359, -496.188912705998, -504.846104599857, -513.452812303959, -522.008175154706, -530.511337622944, -538.96144939951, -547.35766548027, -555.699146250611, -563.985057569408, -572.214570852435, -580.38686315522, -588.501117255343, -596.556521734157, -604.552271057927, -612.487565658382, -620.361612012677, -628.173622722736, -635.922816593999, -643.608418713537, -651.229660527542, -658.785779918184, -666.27602127982, -673.699635594557, -681.055880507149, -660827267, -285007387, -945834654, -1230842041, -688.344020399234, "This is a data test string (pass 101).", "This is a data test string (pass 102).", "This is a data test string (pass 103).", "This is a data test string (pass 104).", 2118290601, -695.563326462898, -702.71307677355, -709.792556362116, -716.801057286538, -723.737878702564, -730.602326933832, 887448560, -1289228135, -401779575}} ; - - Instrument = - {{"This is a data test string (pass 105).", "This is a data test string (pass 106).", "This is a data test string (pass 107).", "This is a data test string (pass 108)."}, {"This is a data test string (pass 109).", "This is a data test string (pass 110).", "This is a data test string (pass 111).", "This is a data test string (pass 112)."}, {"This is a data test string (pass 113).", "This is a data test string (pass 114).", "This is a data test string (pass 115).", "This is a data test string (pass 116)."}, {"This is a data test string (pass 117).", "This is a data test string (pass 118).", "This is a data test string (pass 119).", "This is a data test string (pass 120)."}, {"This is a data test string (pass 121).", "This is a data test string (pass 122).", "This is a data test string (pass 123).", "This is a data test string (pass 124)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.1.dmp deleted file mode 100644 index ea5a69b05d6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.1.dmp +++ /dev/null @@ -1,10 +0,0 @@ -netcdf GLOBEC_cetaceans { -types: - short(*) cetaceans_t ; -variables: - cetaceans_t cetaceans ; -data: - - cetaceans = - {8, 7, 8, 12, 13, 8, 8, 12, 40, 20, 8, 22, 27, 45, 10, 25, 7, 127, 10, 127, 13, 10, 8, 7, 8, 12, 13, 8, 8, 12, 40, 20, 8, 22, 27, 45, 10, 25, 7, 127, 10, 127, 13, 10, 20, 120, 30, 7, 9, 8, 10, 8, 7, 8, 7, 20, 15, 8, 7} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.2.dmp deleted file mode 100644 index 0ba0e9c7a96..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/GLOBEC_cetaceans.2.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf GLOBEC_cetaceans { -types: - compound cetaceans_record_t { - float lat ; - float lon ; - }; // cetaceans_record_t - cetaceans_record_t(*) cetaceans_t ; -variables: - cetaceans_t cetaceans ; -data: - - cetaceans = - {{42.4997, -125.015}, {42.4886, -124.953}, {42.0876, -124.805}, {42.0412, -124.87}, {42.0658, -124.866}, {42.0434, -124.828}, {42.0633, -124.851}, {42.0525, -124.843}, {42.052, -124.863}, {42.0557, -124.883}, {42.0673, -125.057}, {42.0491, -125.072}, {42.2066, -124.98}, {42.1955, -124.903}, {42.2088, -124.852}, {42.1998, -124.843}, {42.2048, -124.817}, {42.4997, -125.015}, {42.4886, -124.953}, {42.0876, -124.805}, {42.0412, -124.87}, {42.0658, -124.866}, {42.0434, -124.828}, {42.0633, -124.851}, {42.0525, -124.843}, {42.052, -124.863}, {42.0557, -124.883}, {42.0673, -125.057}, {42.0491, -125.072}, {42.2066, -124.98}, {42.1955, -124.903}, {42.2088, -124.852}, {42.1998, -124.843}, {42.2048, -124.817}, {42.0633, -124.851}, {42.0673, -125.057}, {42.1939, -124.992}, {42.1954, -124.6}, {42.0669, -124.933}, {42.4912, -124.862}, {42.4823, -124.861}, {42.489, -124.907}, {42.4637, -124.97}, {42.4971, -124.941}, {42.4449, -125.014}, {42.0874, -124.435}, {42.044, -124.351}, {42.4032, -125.152}, {42.4227, -125.151}, {42.4989, -125.001}, {42.4943, -124.952}, {42.4975, -124.67}, {42.4997, -124.879}, {42.4988, -124.901}, {42.2819, -125.115}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.am b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.am deleted file mode 100644 index 2053ff5ba10..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.7 2009/11/22 06:17:54 dmh Exp $ - -EXTRA_DIST=\ -b31a.dmp b31.dmp D1.dmp \ -Drifters.dmp EOSDB.dmp ingrid.dmp \ -nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \ -OverideExample.dmp SimpleDrdsExample.dmp \ -test.01.1.dmp test.01.dmp test.02.1.dmp \ -test.02.dmp test.03.1.dmp test.03.2.dmp \ -test.03.dmp test.04.1.dmp test.04.dmp \ -test.05.1.dmp test.05.dmp test.06.1.dmp \ -test.06a.dmp test.07.1.dmp test.07.3.dmp \ -test.07.4.dmp test.07a.dmp test.07.dmp \ -test.21.dmp test.22.dmp test.23.dmp \ -test.31.dmp test.50.dmp test.53.dmp \ -test.55.dmp test.56.dmp test.57.dmp \ -test.66.dmp test.67.dmp test.68.dmp \ -test.69.dmp test.an1.dmp test.dfp1.dmp \ -test.gr1.dmp test.gr2.dmp test.gr3.dmp \ -test.gr4.dmp test.gr5.dmp test.sds1.dmp \ -test.sds2.dmp test.sds3.dmp test.sds4.dmp \ -test.sds5.dmp test.vs1.dmp test.vs2.dmp \ -test.vs3.dmp test.vs4.dmp test.vs5.dmp \ -whoi.dmp \ -GLOBEC_cetaceans.1.dmp GLOBEC_cetaceans.2.dmp \ -CMakeLists.txt diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.in deleted file mode 100644 index 4671c3b83bc..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/Makefile.in +++ /dev/null @@ -1,526 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.7 2009/11/22 06:17:54 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdap_test/expectremote4 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -b31a.dmp b31.dmp D1.dmp \ -Drifters.dmp EOSDB.dmp ingrid.dmp \ -nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \ -OverideExample.dmp SimpleDrdsExample.dmp \ -test.01.1.dmp test.01.dmp test.02.1.dmp \ -test.02.dmp test.03.1.dmp test.03.2.dmp \ -test.03.dmp test.04.1.dmp test.04.dmp \ -test.05.1.dmp test.05.dmp test.06.1.dmp \ -test.06a.dmp test.07.1.dmp test.07.3.dmp \ -test.07.4.dmp test.07a.dmp test.07.dmp \ -test.21.dmp test.22.dmp test.23.dmp \ -test.31.dmp test.50.dmp test.53.dmp \ -test.55.dmp test.56.dmp test.57.dmp \ -test.66.dmp test.67.dmp test.68.dmp \ -test.69.dmp test.an1.dmp test.dfp1.dmp \ -test.gr1.dmp test.gr2.dmp test.gr3.dmp \ -test.gr4.dmp test.gr5.dmp test.sds1.dmp \ -test.sds2.dmp test.sds3.dmp test.sds4.dmp \ -test.sds5.dmp test.vs1.dmp test.vs2.dmp \ -test.vs3.dmp test.vs4.dmp test.vs5.dmp \ -whoi.dmp \ -GLOBEC_cetaceans.1.dmp GLOBEC_cetaceans.2.dmp \ -CMakeLists.txt - -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 ncdap_test/expectremote4/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/expectremote4/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq.dmp deleted file mode 100644 index 0c8b0ae8f46..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf NestedSeq { -types: - short(*) stuff_t ; - compound person1_record_t { - int age ; - stuff_t stuff ; - }; // person1_record_t - person1_record_t(*) person1_t ; -variables: - person1_t person1 ; -data: - - person1 = - {{1, {0, 16, 32, 48, 64}}, {2, {80, 96, 112, 128, 144}}, {3, {160, 176, 192, 208, 224}}, {5, {240, 256, 272, 288, 304}}, {8, {320, 336, 352, 368, 384}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq2.dmp deleted file mode 100644 index 313984f12e4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/NestedSeq2.dmp +++ /dev/null @@ -1,35 +0,0 @@ -netcdf NestedSeq2 { -types: - compound person1.stuff_record_t { - short foo ; - short bar ; - }; // person1.stuff_record_t - person1.stuff_record_t(*) person1.stuff_t ; - compound person1_record_t { - int age ; - int size ; - person1.stuff_t stuff ; - }; // person1_record_t - person1_record_t(*) person1_t ; - compound stuff_record_t { - short foo ; - short bar ; - }; // stuff_record_t - stuff_record_t(*) stuff_t ; - compound person2_record_t { - int age ; - stuff_t stuff ; - int size ; - }; // person2_record_t - person2_record_t(*) person2_t ; -variables: - person1_t person1 ; - person2_t person2 ; -data: - - person1 = - {{1, 2, {{0, 16}, {32, 48}, {64, 80}, {96, 112}, {128, 144}}}, {3, 5, {{160, 176}, {192, 208}, {224, 240}, {256, 272}, {288, 304}}}, {8, 13, {{320, 336}, {352, 368}, {384, 400}, {416, 432}, {448, 464}}}, {21, 34, {{480, 496}, {512, 528}, {544, 560}, {576, 592}, {608, 624}}}, {55, 89, {{640, 656}, {672, 688}, {704, 720}, {736, 752}, {768, 784}}}} ; - - person2 = - {{144, {{800, 816}, {832, 848}, {864, 880}, {896, 912}, {928, 944}}, 233}, {377, {{960, 976}, {992, 1008}, {1024, 1040}, {1056, 1072}, {1088, 1104}}, 610}, {987, {{1120, 1136}, {1152, 1168}, {1184, 1200}, {1216, 1232}, {1248, 1264}}, 1597}, {2584, {{1280, 1296}, {1312, 1328}, {1344, 1360}, {1376, 1392}, {1408, 1424}}, 4181}, {6765, {{1440, 1456}, {1472, 1488}, {1504, 1520}, {1536, 1552}, {1568, 1584}}, 10946}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/OverideExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/OverideExample.dmp deleted file mode 100644 index 988374bcbf0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/OverideExample.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf OverideExample { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - data_t data ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/SimpleDrdsExample.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/SimpleDrdsExample.dmp deleted file mode 100644 index b5d36863ce3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/SimpleDrdsExample.dmp +++ /dev/null @@ -1,62 +0,0 @@ -netcdf SimpleDrdsExample { -types: - compound Drifters_record_t { - double battery ; - double checksum ; - double data_age ; - double ed490 ; - double ed490_stdev ; - string instrument_id ; - double flag_argos ; - double flag_gps ; - double flag_optical ; - double flag_sampling ; - double flag_tracking ; - double gpshour ; - double gpslat ; - double gpslon ; - double latitude ; - string location ; - double longitude ; - double lu412 ; - double lu412_stdev ; - double lu443 ; - double lu443_stdev ; - double lu490 ; - double lu490_stdev ; - double lu510 ; - double lu510_stdev ; - double lu555 ; - double lu555_stdev ; - double lu670 ; - double lu670_stdev ; - double lu683 ; - double lu683_stdev ; - double max_depth ; - double night_len ; - double nsamp ; - double numaves ; - double press_volts ; - double rellat1hr ; - double rellat2hr ; - double rellon1hr ; - double rellon2hr ; - double sst ; - double sub_wait ; - double surf_volts ; - double surface_average ; - double surface_percent ; - double time ; - double ttff ; - double maxgps ; - double rellat3hr ; - double rellon3hr ; - }; // Drifters_record_t - Drifters_record_t(*) Drifters_t ; -variables: - Drifters_t Drifters ; -data: - - Drifters = - {{1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, "This is a data test string (pass 0).", 998.750260394966, 998.200539935204, 997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, 991.561893714788, "This is a data test string (pass 1).", 990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242, 978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891, 961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346, 939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, 917.120822816605, 913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329}, {886.994922779284, 882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, "This is a data test string (pass 2).", 862.807070514761, 857.708681363824, 852.524522059506, 847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, "This is a data test string (pass 3).", 813.878456662534, 808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106, 764.842187284488, 758.361875990508, 751.805729140895, 745.17440234487, 738.468558729588, 731.688868873821, 724.836010740905, 717.910669610943, 710.913538012277, 703.845315652236, 696.706709347165, 689.498432951747, 682.221207287613, 674.875760071267, 667.462825841308, 659.983145884982, 652.437468164051, 644.826547240001, 637.15114419858, 629.412026573696, 621.609968270664, 613.745749488811, 605.820156643462, 597.833982287298, 589.788025031098, 581.683089463883}, {573.519986072456, 565.299531160354, 557.022546766217, 548.689860581587, 540.302305868139, "This is a data test string (pass 4).", 531.860721374355, 523.365951251649, 514.818844969955, 506.220257232778, 497.571047891726, 488.872081860527, 480.124229028533, 471.328364173739, 462.4853668753, "This is a data test string (pass 5).", 453.596121425577, 444.661516741706, 435.682446276712, 426.659807930157, 417.594503958357, 408.487440884157, 399.339529406272, 390.151684308229, 380.924824366881, 371.659872260532, 362.357754476673, 353.01940121933, 343.645746316046, 334.237727124502, 324.796284438775, 315.322362395268, 305.816908378288, 296.280872925318, 286.715209631955, 277.120875056557, 267.498828624587, 257.850032532669, 248.175451652372, 238.476053433722, 228.752807808459, 219.006687093041, 209.238665891418, 199.449720997572, 189.640831297833, 179.812977672998, 169.96714290024, 160.10431155483, 150.225469911685, 140.331605846736}, {130.423708738144, 120.502769367366, 110.569779820068, 100.625733386931, 90.6716244643086, "This is a data test string (pass 6).", 80.7084484547995, 70.7372016677018, 60.7588812193848, 50.7744849335781, 40.7850112415899, 30.791459082465, 20.7948278030913, 10.7961170582663, 0.796326710732153, "This is a data test string (pass 7).", -9.20354326880945, -19.2024929016938, -29.1995223012899, -39.1936317729888, -49.1838219141717, -59.1690937141495, -69.1484486540633, -79.1208888067352, -89.0854169364603, -99.0410365987293, -108.986752239872, -118.921569296614, -128.844494295526, -138.754534952379, -148.650700271365, -158.532000644199, -168.397447949078, -178.246055649493, -188.076838892881, -197.88881460911, -207.681001608785, -217.452420681366, -227.202094693088, -236.929048684676, -246.632309968835, -256.310908227524, -265.963875608982, -275.590246824514, -285.189059245022, -294.759352997262, -304.300171059835, -313.810559358884, -323.289566863505, -332.736245680847}, {-342.1496511509, -351.528841940961, -360.872880139769, -370.180831351288, -379.451764788156, "This is a data test string (pass 8).", -388.684753364753, -397.878873789917, -407.033206659267, -416.146836547144, -425.218852098153, -434.248346118301, -443.23441566571, -452.176162140912, -461.072691376713, "This is a data test string (pass 9).", -469.923113727602, -478.72654415872, -487.482102334359, -496.188912705998, -504.846104599857, -513.452812303959, -522.008175154706, -530.511337622944, -538.96144939951, -547.35766548027, -555.699146250611, -563.985057569408, -572.214570852435, -580.38686315522, -588.501117255343, -596.556521734157, -604.552271057927, -612.487565658382, -620.361612012677, -628.173622722736, -635.922816593999, -643.608418713537, -651.229660527542, -658.785779918184, -666.27602127982, -673.699635594557, -681.055880507149, -688.344020399234, -695.563326462898, -702.71307677355, -709.792556362116, -716.801057286538, -723.737878702564, -730.602326933832}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31.dmp deleted file mode 100644 index 1d5f1aadb99..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf b31 { -types: - compound b31_record_t { - double id ; - string class ; - string text ; - }; // b31_record_t - b31_record_t(*) b31_t ; -variables: - b31_t b31 ; - int b32 ; - string b32:billy = "Bob is my real name" ; - string b32:Robert = "Really wants to be called Billy" ; -data: - - b31 = - {{1000, "This is a data test string (pass 0).", "This is a data test string (pass 1)."}, {999.950000416665, "This is a data test string (pass 2).", "This is a data test string (pass 3)."}, {999.800006666578, "This is a data test string (pass 4).", "This is a data test string (pass 5)."}, {999.550033748988, "This is a data test string (pass 6).", "This is a data test string (pass 7)."}, {999.200106660978, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}} ; - - b32 = 1 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31a.dmp deleted file mode 100644 index 5e5a5fc8bf1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/b31a.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf b31a { -types: - compound b31_record_t { - double id ; - string class ; - string text ; - }; // b31_record_t - b31_record_t(*) b31_t ; -variables: - b31_t b31 ; -data: - - b31 = - {{1000, "This is a data test string (pass 0).", "This is a data test string (pass 1)."}, {999.950000416665, "This is a data test string (pass 2).", "This is a data test string (pass 3)."}, {999.800006666578, "This is a data test string (pass 4).", "This is a data test string (pass 5)."}, {999.550033748988, "This is a data test string (pass 6).", "This is a data test string (pass 7)."}, {999.200106660978, "This is a data test string (pass 8).", "This is a data test string (pass 9)."}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/ingrid.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/ingrid.dmp deleted file mode 100644 index 6f09333aa7b..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/ingrid.dmp +++ /dev/null @@ -1,33 +0,0 @@ -netcdf ingrid { -types: - compound v3H_t { - float v3H(35, 44) ; - int ISTA(35) ; - float IZ(44) ; - }; // v3H_t -dimensions: - ISTA = 35 ; - IZ = 44 ; -variables: - int ISTA(ISTA) ; - float IZ(IZ) ; - v3H_t v3H ; -data: - - ISTA = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, - 63488, 65536, 67584, 69632 ; - - IZ = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, - 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, - 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, - 0.4077604, 0.4168708 ; - - v3H = - {{0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708, 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, 0.4706259, 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, 0.5226873, 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, 0.5728675, 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, 0.620986, 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, 0.6668696, 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, 0.7103533, 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, 0.7512804, 0.7578425, 0.764329, 0.7707389, 0.7770718, 0.7833269, 0.7895038, 0.7956016, 0.8016199, 0.8075581, 0.8134155, 0.8191916, 0.8248857, 0.8304974, 0.836026, 0.841471, 0.8468319, 0.852108, 0.857299, 0.8624042, 0.8674232, 0.8723555, 0.8772005, 0.8819578, 0.8866269, 0.8912073, 0.8956987, 0.9001005, 0.9044122, 0.9086335, 0.912764, 0.9168031, 0.9207506, 0.924606, 0.928369, 0.9320391, 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, 0.9580159, 0.960835, 0.9635582, 0.966185, 0.9687151, 0.9711484, 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, 0.9837008, 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, 0.992713, 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, 0.9981525, 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, 0.9999997, 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, 0.998248, 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, 0.9691091, 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, 0.9525762, 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, 0.932615, 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, 0.9092974, 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, 0.8827074, 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, 0.8201039, 0.8143409, 0.8084964, 0.8025711, 0.7965655, 0.7904802, 0.7843159, 0.7780732, 0.7717527, 0.7653549, 0.7588807, 0.7523306, 0.7457052, 0.7390053, 0.7322314, 0.7253844, 0.7184648, 0.7114733, 0.7044108, 0.6972777, 0.690075, 0.6828032, 0.6754632, 0.6680556, 0.6605812, 0.6530408, 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, 0.6064535, 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, 0.5576837, 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, 0.5069069, 0.4982616, 0.4895666, 0.4808226, 0.4720306, 0.4631913, 0.4543057, 0.4453746, 0.4363991, 0.4273799, 0.4183179, 0.4092142, 0.4000695, 0.3908848, 0.381661, 0.372399, 0.3630998, 0.3537644, 0.3443935, 0.3349881, 0.3255493, 0.316078, 0.306575, 0.2970414, 0.287478, 0.2778859, 0.2682661, 0.2586193, 0.2489468, 0.2392493, 0.229528, 0.2197836, 0.2100173, 0.20023, 0.1904227, 0.1805963, 0.1707518, 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, 0.09146464, 0.08150215, 0.07153151, 0.06155372, 0.05156977, 0.04158066, 0.0315874, 0.02159098, 0.01159239, 0.001592653, -0.008407247, -0.01840631, -0.02840353, -0.0383979, -0.04838844, -0.05837414, -0.068354, -0.07832703, -0.08829223, -0.09824859, -0.1081951, -0.1181309, -0.1280548, -0.1379659, -0.1478632, -0.1577457, -0.1676124, -0.1774624, -0.1872947, -0.1971082, -0.206902, -0.2166751, -0.2264265, -0.2361553, -0.2458605, -0.2555411, -0.2651961, -0.2748247, -0.2844257, -0.2939983, -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, -0.3601301, -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, -0.4154226, -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, -0.46922, -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, -0.5213288, -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, -0.5715613, -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, -0.6197369, -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, -0.665682, -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, -0.7092314, -0.7162456, -0.7231881, -0.7300584, -0.7368556, -0.7435791, -0.7502283, -0.7568025, -0.763301, -0.7697231, -0.7760683, -0.7823359, -0.7885253, -0.7946358, -0.8006668, -0.8066177, -0.8124881, -0.8182771, -0.8239843, -0.8296092, -0.835151, -0.8406094, -0.8459837, -0.8512734, -0.856478, -0.8615969, -0.8666297, -0.8715758, -0.8764347, -0.881206, -0.8858892, -0.8904838, -0.8949894, -0.8994054, -0.9037315, -0.9079673, -0.9121122, -0.9161659, -0.920128, -0.9239982, -0.9277759, -0.9314608, -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, -0.9516021, -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, -0.9683186, -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, -0.9815503, -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, -0.9912494, -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, -0.9973811, -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, -0.9999232, -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, -0.9988668, -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, -0.9930918, -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, -0.8537708, -0.8485217, -0.8431877, -0.8377695, -0.8322675, -0.8266822, -0.8210142, -0.8152642, -0.8094327, -0.8035201, -0.7975273, -0.7914547, -0.7853029, -0.7790727, -0.7727645, -0.766379, -0.7599169, -0.7533789, -0.7467654, -0.7400773, -0.7333152, -0.7264798, -0.7195717, -0.7125916, -0.7055403, -0.6984185, -0.6912268, -0.683966, -0.6766368, -0.6692399, -0.6617761, -0.6542461, -0.6466507, -0.6389906, -0.6312667, -0.6234795, -0.6156301, -0.6077191, -0.5997473, -0.5917156, -0.5836247, -0.5754754, -0.5672686, -0.559005, -0.5506855, -0.542311, -0.5338823, -0.5254001, -0.5168654, -0.5082791, -0.4996419, -0.4909547, -0.4822185, -0.473434, -0.4646022, -0.4557239, -0.4468001, -0.4378315, -0.4288192, -0.419764, -0.4106669, -0.4015286, -0.3923502, -0.3831326, -0.3738767, -0.3645833, -0.3552535, -0.3458883, -0.3364884, -0.3270548, -0.3175886, -0.3080906, -0.2985618, -0.2890031, -0.2794155, -0.2698, -0.2601575, -0.250489, -0.2407954, -0.2310778, -0.2213371, -0.2115742, -0.2017901, -0.1919859, -0.1821625, -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, -0.122874, -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, -0.06314328, -0.05316024, -0.04317189, -0.03317922, -0.02318323, -0.01318493, -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, 0.0467976, 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, 0.1066117, 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, 0.1660421, 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, 0.2346074, 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, 0.3020236, 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, 0.3586439, 0.3679605, 0.3772404, 0.3864825, 0.395686, 0.4048499, 0.4139734, 0.4230554, 0.4320951, 0.4410917, 0.4500441, 0.4589515, 0.467813, 0.4766277, 0.4853948, 0.4941134, 0.5027825, 0.5114013, 0.519969, 0.5284848, 0.5369476, 0.5453568, 0.5537114, 0.5620106, 0.5702537, 0.5784398, 0.5865679, 0.5946375, 0.6026475, 0.6105974, 0.6184861, 0.626313, 0.6340773, 0.6417782, 0.6494148, 0.6569866, 0.6644927, 0.6719322, 0.6793047, 0.6866091, 0.693845, 0.7010114, 0.7081077, 0.7151332, 0.7220873, 0.728969, 0.735778, 0.7425133, 0.7491744, 0.7557605, 0.7622711, 0.7687054, 0.7750629, 0.7813429, 0.7875448, 0.7936679, 0.7997116, 0.8056753, 0.8115585, 0.8173606, 0.8230809, 0.8287189, 0.834274, 0.8397457, 0.8451334, 0.8504366, 0.8556548, 0.8607874, 0.8658339, 0.8707939, 0.8756667, 0.880452, 0.8851492, 0.889758, 0.8942778, 0.8987081, 0.9030486, 0.9072987, 0.9114581, 0.9155264, 0.9195032, 0.9233879, 0.9271804, 0.9308801, 0.9344868, 0.938, 0.9414194, 0.9447446, 0.9479754, 0.9511114, 0.9541523, 0.9570977, 0.9599475, 0.9627013, 0.9653587, 0.9679196, 0.9703838, 0.972751, 0.9750208, 0.9771932, 0.9792678, 0.9812445, 0.9831231, 0.9849033, 0.9865851, 0.9881682, 0.9896525, 0.9910379, 0.9923241, 0.9935111, 0.9945988, 0.995587, 0.9964756, 0.9972646, 0.9979539, 0.9985433, 0.999033, 0.9994227, 0.9997125, 0.9999022, 0.9999921, 0.9999819, 0.9998717, 0.9996616, 0.9993514, 0.9989414, 0.9984314, 0.9978216, 0.997112, 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, 0.9907638, 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, 0.9808499, 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, 0.9674059, 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, 0.9504804, 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, 0.9301341, 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, 0.8440429, 0.8386381, 0.8331493, 0.8275773, 0.8219225, 0.8161855, 0.8103669, 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, 0.7737743, 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, 0.7343971, 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, 0.6923768, 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, 0.601021, 0.5929987, 0.5849172, 0.5767772, 0.5685794, 0.5603248, 0.5520142, 0.5436484, 0.5352283, 0.5267546, 0.5182282, 0.50965, 0.5010208, 0.4923416, 0.4836131, 0.4748363, 0.4660119, 0.457141, 0.4482243, 0.4392629, 0.4302575, 0.421209, 0.4121185, 0.4029867, 0.3938147, 0.3846032, 0.3753533, 0.3660659, 0.3567419, 0.3473822, 0.3379877, 0.3285595, 0.3190984, 0.3096054, 0.3000814, 0.2905274, 0.2809443, 0.2713332, 0.261695, 0.2520306, 0.2423409, 0.232627, 0.2228899, 0.2131305, 0.2033498, 0.1935487, 0.1837283, 0.1738895, 0.1640333, 0.1541607, 0.1442727, 0.1343703, 0.1244544, 0.1145261, 0.1045863, 0.09463613, 0.08467644, 0.07470829, 0.06473266, 0.05475057, 0.044763, 0.03477095, 0.02477542, 0.01477742, 0.004777943, -0.005222016, -0.01522145, -0.02521937, -0.03521476, -0.04520663, -0.05519398, -0.06517581, -0.07515112, -0.08511892, -0.09507821, -0.105028, -0.1149673, -0.124895, -0.1348103, -0.1447121, -0.1545995, -0.1644713, -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, -0.2330589, -0.2427717, -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, -0.6250706, -0.6328449, -0.640556, -0.6482029, -0.6557851, -0.6633016, -0.6707519, -0.678135, -0.6854504, -0.6926972, -0.6998747, -0.7069823, -0.7140191, -0.7209845, -0.7278779, -0.7346984, -0.7414455, -0.7481185, -0.7547166, -0.7612393, -0.7676858, -0.7740556, -0.7803479, -0.7865623, -0.792698, -0.7987544, -0.8047309, -0.810627, -0.816442, -0.8221753, -0.8278264, -0.8333948, -0.8388798, -0.844281, -0.8495977, -0.8548294, -0.8599757, -0.865036, -0.8700097, -0.8748965, -0.8796958, -0.884407, -0.8890299, -0.8935639, -0.8980085, -0.9023633, -0.9066279, -0.9108018, -0.9148846, -0.918876, -0.9227754, -0.9265826, -0.9302971, -0.9339186, -0.9374467, -0.9408811, -0.9442213, -0.9474672, -0.9506183, -0.9536743, -0.956635, -0.9595, -0.9622691, -0.9649419, -0.9675183, -0.9699979, -0.9723805, -0.9746658, -0.9768537, -0.9789439, -0.9809362, -0.9828305, -0.9846264, -0.9863239, -0.9879227, -0.9894227, -0.9908239, -0.9921259, -0.9933288, -0.9944322, -0.9954363, -0.9963408, -0.9971456, -0.9978508, -0.9984561, -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, -0.9999902, -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, -0.9979254, -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, -0.9922691, -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, -0.9830417, -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, -0.9702765, -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, -0.9540192, -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, -0.9343286, -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, -0.9071119, -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, -0.8802414, -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, -0.8502029, -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, -0.8171046, -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, -0.7810657, -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, -0.7422158, -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, -0.7006946, -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, -0.6566517, -0.6490771, -0.6414375, -0.6337339, -0.6259668, -0.6181371, -0.6102456, -0.6022931, -0.5942804, -0.5862082, -0.5780774, -0.5698889, -0.5616433, -0.5533416, -0.5449845, -0.5365729, -0.5281077, -0.5195897, -0.5110196, -0.5023986, -0.4937272, -0.4850065, -0.4762373, -0.4674205, -0.4585569, -0.4496475, -0.4406931, -0.4316946, -0.422653, -0.4135691, -0.4044438, -0.3952781, -0.3860729, -0.3768291, -0.3675475, -0.3582293, -0.3488752, -0.3394862, -0.3300633, -0.3206073, -0.3111193, -0.3016002, -0.292051, -0.2824725, -0.2728658, -0.2632318, -0.2535715, -0.2438858, -0.2341757, -0.2244422, -0.2146863, -0.2049089, -0.195111, -0.1852936, -0.1754577, -0.1656042, -0.1557341, -0.1458485, -0.1359483, -0.1260345, -0.1161081, -0.1061701, -0.09622151, -0.08626327, -0.0762964, -0.06632189, -0.05634077, -0.046354, -0.0363626, -0.02636756, -0.01636988, -0.006370571, 0.003629378, 0.01362896, 0.02362719, 0.03362305, 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, 0.09349265, 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, 0.1727583, 0.1825991, 0.1924217, 0.2022251, 0.2120082, 0.2217701, 0.2315098, 0.2412264, 0.2509189, 0.2605863, 0.2702276, 0.2798419, 0.2894282, 0.2989855, 0.308513, 0.3180096, 0.3274744, 0.3369065, 0.3463049, 0.3556686, 0.3649968, 0.3742885, 0.3835427, 0.3927587, 0.4019353, 0.4110717, 0.420167, 0.4292203, 0.4382307, 0.4471973, 0.4561191, 0.4649954, 0.4738251, 0.4826075, 0.4913416, 0.5000265, 0.5086614, 0.5172455, 0.5257779, 0.5342577, 0.5426841, 0.5510561, 0.5593731, 0.5676342, 0.5758385, 0.5839852, 0.5920735, 0.6001026, 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, 0.6469893, 0.6545818, 0.6621089, 0.6695698, 0.6769636, 0.6842899, 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, 0.7267848, 0.7336171, 0.7403759, 0.7470607, 0.7536708, 0.7602055, 0.7666642, 0.7730463, 0.779351, 0.7855778, 0.7917261, 0.7977951, 0.8037844, 0.8096933, 0.8155213, 0.8212677, 0.826932, 0.8325136, 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, 0.8692234, 0.8741241, 0.8789373, 0.8836626, 0.8882996, 0.8928478, 0.8973066, 0.9016758, 0.9059547, 0.9101431, 0.9142405, 0.9182464, 0.9221606, 0.9259824, 0.9297118, 0.9333481, 0.9368911, 0.9403404, 0.9436957, 0.9469566, 0.9501228, 0.953194, 0.9561699, 0.9590501, 0.9618345, 0.9645227, 0.9671144, 0.9696094, 0.9720075, 0.9743084, 0.9765118, 0.9786175, 0.9806255, 0.9825354, 0.9843469, 0.9860601, 0.9876747, 0.9891905, 0.9906074, 0.9919252, 0.9931438, 0.9942631, 0.995283, 0.9962034, 0.9970241, 0.9977452, 0.9983664, 0.9988878, 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, 0.9999177, 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, 0.9973488, 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, 0.9911907, 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, 0.9814652, 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, 0.9682076, 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, 0.6946716, 0.6874437, 0.6801471, 0.6727825, 0.6653506, 0.6578521, 0.6502879, 0.6426586, 0.6349651, 0.627208, 0.6193883, 0.6115066, 0.6035637, 0.5955606, 0.5874978, 0.5793763, 0.5711969, 0.5629603, 0.5546675, 0.5463191, 0.5379162, 0.5294595, 0.5209498, 0.512388, 0.503775, 0.4951116, 0.4863987, 0.4776371, 0.4688278, 0.4599716, 0.4510695, 0.4421222, 0.4331307, 0.4240958, 0.4150186, 0.4058999, 0.3967406, 0.3875416, 0.3783038, 0.3690283, 0.3597158, 0.3503673, 0.3409838, 0.3315663, 0.3221155, 0.3126326}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, 63488, 65536, 67584, 69632}, {0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, 0.4168708}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/nestedDAS.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/nestedDAS.dmp deleted file mode 100644 index 8681434e6e2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/nestedDAS.dmp +++ /dev/null @@ -1,12 +0,0 @@ -netcdf nestedDAS { -variables: - ubyte b31 ; - string b32 ; - string b32:billy = "Bob is my real name" ; - string b32:Robert = "Really wants to be called Billy" ; -data: - - b31 = 0 ; - - b32 = "This is a data test string (pass 0)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.1.dmp deleted file mode 100644 index 9caf965cc36..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.1.dmp +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test { -variables: - double f64 ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - f64 = 1000 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.dmp deleted file mode 100644 index 8154eae043e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.01.dmp +++ /dev/null @@ -1,41 +0,0 @@ -netcdf test { -variables: - ubyte b ; - string b:Description = "A test byte" ; - string b:units = "unknown" ; - int i32 ; - string i32:Description = "A 32 bit test server int" ; - string i32:units = "unknown" ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; -data: - - b = 0 ; - - i32 = 1 ; - - ui32 = 0 ; - - i16 = 0 ; - - ui16 = 0 ; - - f32 = 0 ; - - f64 = 1000 ; - - s = "This is a data test string (pass 0)." ; - - u = "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.1.dmp deleted file mode 100644 index 37c38fe47bc..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.1.dmp +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test { -dimensions: - b_0 = 5 ; -variables: - ubyte b(b_0) ; -data: - - b = 1, 3, 5, 7, 9 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.dmp deleted file mode 100644 index 7ab613f3c0f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.02.dmp +++ /dev/null @@ -1,93 +0,0 @@ -netcdf test { -dimensions: - b_0 = 25 ; - f32_0 = 25 ; - f64_0 = 25 ; - i16_0 = 25 ; - i32_0 = 25 ; - s_0 = 25 ; - u_0 = 25 ; - ui16_0 = 25 ; - ui32_0 = 25 ; -variables: - ubyte b(b_0) ; - int i32(i32_0) ; - uint ui32(ui32_0) ; - short i16(i16_0) ; - ushort ui16(ui16_0) ; - float f32(f32_0) ; - double f64(f64_0) ; - string s(s_0) ; - string u(u_0) ; -data: - - b = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24 ; - - i32 = 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, - 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, - 43008, 45056, 47104, 49152 ; - - ui32 = 0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768, 36864, - 40960, 45056, 49152, 53248, 57344, 61440, 65536, 69632, 73728, 77824, - 81920, 86016, 90112, 94208, 98304 ; - - i16 = 0, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, - 3072, 3328, 3584, 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, - 6144 ; - - ui16 = 0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, - 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456, 20480, - 21504, 22528, 23552, 24576 ; - - f32 = 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, - 0.059964, 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, - 0.1197122, 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, - 0.1790296, 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, - 0.2377026 ; - - f64 = 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, - 0.991561893714788, 0.990215996212637, 0.988771077936042, - 0.987227283375627, 0.985584766909561, 0.983843692788121, - 0.98200423511727, 0.980066577841242, 0.978030914724148, - 0.975897449330606, 0.973666395005375, 0.97133797485203 ; - - s = "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4).", - "This is a data test string (pass 5).", - "This is a data test string (pass 6).", - "This is a data test string (pass 7).", - "This is a data test string (pass 8).", - "This is a data test string (pass 9).", - "This is a data test string (pass 10).", - "This is a data test string (pass 11).", - "This is a data test string (pass 12).", - "This is a data test string (pass 13).", - "This is a data test string (pass 14).", - "This is a data test string (pass 15).", - "This is a data test string (pass 16).", - "This is a data test string (pass 17).", - "This is a data test string (pass 18).", - "This is a data test string (pass 19).", - "This is a data test string (pass 20).", - "This is a data test string (pass 21).", - "This is a data test string (pass 22).", - "This is a data test string (pass 23).", - "This is a data test string (pass 24)." ; - - u = "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.1.dmp deleted file mode 100644 index b0eb41bfd7a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.1.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test { -dimensions: - i32_0 = 2 ; - i32_1 = 2 ; - i32_2 = 3 ; -variables: - int i32(i32_0, i32_1, i32_2) ; -data: - - i32 = - 8192, 10240, 12288, - 16384, 18432, 20480, - 32768, 34816, 36864, - 40960, 43008, 45056 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.2.dmp deleted file mode 100644 index b43837d6f00..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.2.dmp +++ /dev/null @@ -1,1011 +0,0 @@ -netcdf test { -dimensions: - s1_0 = 10 ; - s1_1 = 10 ; - s1_2 = 10 ; -variables: - string s1(s1_0, s1_1, s1_2) ; -data: - - s1 = - "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4).", - "This is a data test string (pass 5).", - "This is a data test string (pass 6).", - "This is a data test string (pass 7).", - "This is a data test string (pass 8).", - "This is a data test string (pass 9).", - "This is a data test string (pass 10).", - "This is a data test string (pass 11).", - "This is a data test string (pass 12).", - "This is a data test string (pass 13).", - "This is a data test string (pass 14).", - "This is a data test string (pass 15).", - "This is a data test string (pass 16).", - "This is a data test string (pass 17).", - "This is a data test string (pass 18).", - "This is a data test string (pass 19).", - "This is a data test string (pass 20).", - "This is a data test string (pass 21).", - "This is a data test string (pass 22).", - "This is a data test string (pass 23).", - "This is a data test string (pass 24).", - "This is a data test string (pass 25).", - "This is a data test string (pass 26).", - "This is a data test string (pass 27).", - "This is a data test string (pass 28).", - "This is a data test string (pass 29).", - "This is a data test string (pass 30).", - "This is a data test string (pass 31).", - "This is a data test string (pass 32).", - "This is a data test string (pass 33).", - "This is a data test string (pass 34).", - "This is a data test string (pass 35).", - "This is a data test string (pass 36).", - "This is a data test string (pass 37).", - "This is a data test string (pass 38).", - "This is a data test string (pass 39).", - "This is a data test string (pass 40).", - "This is a data test string (pass 41).", - "This is a data test string (pass 42).", - "This is a data test string (pass 43).", - "This is a data test string (pass 44).", - "This is a data test string (pass 45).", - "This is a data test string (pass 46).", - "This is a data test string (pass 47).", - "This is a data test string (pass 48).", - "This is a data test string (pass 49).", - "This is a data test string (pass 50).", - "This is a data test string (pass 51).", - "This is a data test string (pass 52).", - "This is a data test string (pass 53).", - "This is a data test string (pass 54).", - "This is a data test string (pass 55).", - "This is a data test string (pass 56).", - "This is a data test string (pass 57).", - "This is a data test string (pass 58).", - "This is a data test string (pass 59).", - "This is a data test string (pass 60).", - "This is a data test string (pass 61).", - "This is a data test string (pass 62).", - "This is a data test string (pass 63).", - "This is a data test string (pass 64).", - "This is a data test string (pass 65).", - "This is a data test string (pass 66).", - "This is a data test string (pass 67).", - "This is a data test string (pass 68).", - "This is a data test string (pass 69).", - "This is a data test string (pass 70).", - "This is a data test string (pass 71).", - "This is a data test string (pass 72).", - "This is a data test string (pass 73).", - "This is a data test string (pass 74).", - "This is a data test string (pass 75).", - "This is a data test string (pass 76).", - "This is a data test string (pass 77).", - "This is a data test string (pass 78).", - "This is a data test string (pass 79).", - "This is a data test string (pass 80).", - "This is a data test string (pass 81).", - "This is a data test string (pass 82).", - "This is a data test string (pass 83).", - "This is a data test string (pass 84).", - "This is a data test string (pass 85).", - "This is a data test string (pass 86).", - "This is a data test string (pass 87).", - "This is a data test string (pass 88).", - "This is a data test string (pass 89).", - "This is a data test string (pass 90).", - "This is a data test string (pass 91).", - "This is a data test string (pass 92).", - "This is a data test string (pass 93).", - "This is a data test string (pass 94).", - "This is a data test string (pass 95).", - "This is a data test string (pass 96).", - "This is a data test string (pass 97).", - "This is a data test string (pass 98).", - "This is a data test string (pass 99).", - "This is a data test string (pass 100).", - "This is a data test string (pass 101).", - "This is a data test string (pass 102).", - "This is a data test string (pass 103).", - "This is a data test string (pass 104).", - "This is a data test string (pass 105).", - "This is a data test string (pass 106).", - "This is a data test string (pass 107).", - "This is a data test string (pass 108).", - "This is a data test string (pass 109).", - "This is a data test string (pass 110).", - "This is a data test string (pass 111).", - "This is a data test string (pass 112).", - "This is a data test string (pass 113).", - "This is a data test string (pass 114).", - "This is a data test string (pass 115).", - "This is a data test string (pass 116).", - "This is a data test string (pass 117).", - "This is a data test string (pass 118).", - "This is a data test string (pass 119).", - "This is a data test string (pass 120).", - "This is a data test string (pass 121).", - "This is a data test string (pass 122).", - "This is a data test string (pass 123).", - "This is a data test string (pass 124).", - "This is a data test string (pass 125).", - "This is a data test string (pass 126).", - "This is a data test string (pass 127).", - "This is a data test string (pass 128).", - "This is a data test string (pass 129).", - "This is a data test string (pass 130).", - "This is a data test string (pass 131).", - "This is a data test string (pass 132).", - "This is a data test string (pass 133).", - "This is a data test string (pass 134).", - "This is a data test string (pass 135).", - "This is a data test string (pass 136).", - "This is a data test string (pass 137).", - "This is a data test string (pass 138).", - "This is a data test string (pass 139).", - "This is a data test string (pass 140).", - "This is a data test string (pass 141).", - "This is a data test string (pass 142).", - "This is a data test string (pass 143).", - "This is a data test string (pass 144).", - "This is a data test string (pass 145).", - "This is a data test string (pass 146).", - "This is a data test string (pass 147).", - "This is a data test string (pass 148).", - "This is a data test string (pass 149).", - "This is a data test string (pass 150).", - "This is a data test string (pass 151).", - "This is a data test string (pass 152).", - "This is a data test string (pass 153).", - "This is a data test string (pass 154).", - "This is a data test string (pass 155).", - "This is a data test string (pass 156).", - "This is a data test string (pass 157).", - "This is a data test string (pass 158).", - "This is a data test string (pass 159).", - "This is a data test string (pass 160).", - "This is a data test string (pass 161).", - "This is a data test string (pass 162).", - "This is a data test string (pass 163).", - "This is a data test string (pass 164).", - "This is a data test string (pass 165).", - "This is a data test string (pass 166).", - "This is a data test string (pass 167).", - "This is a data test string (pass 168).", - "This is a data test string (pass 169).", - "This is a data test string (pass 170).", - "This is a data test string (pass 171).", - "This is a data test string (pass 172).", - "This is a data test string (pass 173).", - "This is a data test string (pass 174).", - "This is a data test string (pass 175).", - "This is a data test string (pass 176).", - "This is a data test string (pass 177).", - "This is a data test string (pass 178).", - "This is a data test string (pass 179).", - "This is a data test string (pass 180).", - "This is a data test string (pass 181).", - "This is a data test string (pass 182).", - "This is a data test string (pass 183).", - "This is a data test string (pass 184).", - "This is a data test string (pass 185).", - "This is a data test string (pass 186).", - "This is a data test string (pass 187).", - "This is a data test string (pass 188).", - "This is a data test string (pass 189).", - "This is a data test string (pass 190).", - "This is a data test string (pass 191).", - "This is a data test string (pass 192).", - "This is a data test string (pass 193).", - "This is a data test string (pass 194).", - "This is a data test string (pass 195).", - "This is a data test string (pass 196).", - "This is a data test string (pass 197).", - "This is a data test string (pass 198).", - "This is a data test string (pass 199).", - "This is a data test string (pass 200).", - "This is a data test string (pass 201).", - "This is a data test string (pass 202).", - "This is a data test string (pass 203).", - "This is a data test string (pass 204).", - "This is a data test string (pass 205).", - "This is a data test string (pass 206).", - "This is a data test string (pass 207).", - "This is a data test string (pass 208).", - "This is a data test string (pass 209).", - "This is a data test string (pass 210).", - "This is a data test string (pass 211).", - "This is a data test string (pass 212).", - "This is a data test string (pass 213).", - "This is a data test string (pass 214).", - "This is a data test string (pass 215).", - "This is a data test string (pass 216).", - "This is a data test string (pass 217).", - "This is a data test string (pass 218).", - "This is a data test string (pass 219).", - "This is a data test string (pass 220).", - "This is a data test string (pass 221).", - "This is a data test string (pass 222).", - "This is a data test string (pass 223).", - "This is a data test string (pass 224).", - "This is a data test string (pass 225).", - "This is a data test string (pass 226).", - "This is a data test string (pass 227).", - "This is a data test string (pass 228).", - "This is a data test string (pass 229).", - "This is a data test string (pass 230).", - "This is a data test string (pass 231).", - "This is a data test string (pass 232).", - "This is a data test string (pass 233).", - "This is a data test string (pass 234).", - "This is a data test string (pass 235).", - "This is a data test string (pass 236).", - "This is a data test string (pass 237).", - "This is a data test string (pass 238).", - "This is a data test string (pass 239).", - "This is a data test string (pass 240).", - "This is a data test string (pass 241).", - "This is a data test string (pass 242).", - "This is a data test string (pass 243).", - "This is a data test string (pass 244).", - "This is a data test string (pass 245).", - "This is a data test string (pass 246).", - "This is a data test string (pass 247).", - "This is a data test string (pass 248).", - "This is a data test string (pass 249).", - "This is a data test string (pass 250).", - "This is a data test string (pass 251).", - "This is a data test string (pass 252).", - "This is a data test string (pass 253).", - "This is a data test string (pass 254).", - "This is a data test string (pass 255).", - "This is a data test string (pass 256).", - "This is a data test string (pass 257).", - "This is a data test string (pass 258).", - "This is a data test string (pass 259).", - "This is a data test string (pass 260).", - "This is a data test string (pass 261).", - "This is a data test string (pass 262).", - "This is a data test string (pass 263).", - "This is a data test string (pass 264).", - "This is a data test string (pass 265).", - "This is a data test string (pass 266).", - "This is a data test string (pass 267).", - "This is a data test string (pass 268).", - "This is a data test string (pass 269).", - "This is a data test string (pass 270).", - "This is a data test string (pass 271).", - "This is a data test string (pass 272).", - "This is a data test string (pass 273).", - "This is a data test string (pass 274).", - "This is a data test string (pass 275).", - "This is a data test string (pass 276).", - "This is a data test string (pass 277).", - "This is a data test string (pass 278).", - "This is a data test string (pass 279).", - "This is a data test string (pass 280).", - "This is a data test string (pass 281).", - "This is a data test string (pass 282).", - "This is a data test string (pass 283).", - "This is a data test string (pass 284).", - "This is a data test string (pass 285).", - "This is a data test string (pass 286).", - "This is a data test string (pass 287).", - "This is a data test string (pass 288).", - "This is a data test string (pass 289).", - "This is a data test string (pass 290).", - "This is a data test string (pass 291).", - "This is a data test string (pass 292).", - "This is a data test string (pass 293).", - "This is a data test string (pass 294).", - "This is a data test string (pass 295).", - "This is a data test string (pass 296).", - "This is a data test string (pass 297).", - "This is a data test string (pass 298).", - "This is a data test string (pass 299).", - "This is a data test string (pass 300).", - "This is a data test string (pass 301).", - "This is a data test string (pass 302).", - "This is a data test string (pass 303).", - "This is a data test string (pass 304).", - "This is a data test string (pass 305).", - "This is a data test string (pass 306).", - "This is a data test string (pass 307).", - "This is a data test string (pass 308).", - "This is a data test string (pass 309).", - "This is a data test string (pass 310).", - "This is a data test string (pass 311).", - "This is a data test string (pass 312).", - "This is a data test string (pass 313).", - "This is a data test string (pass 314).", - "This is a data test string (pass 315).", - "This is a data test string (pass 316).", - "This is a data test string (pass 317).", - "This is a data test string (pass 318).", - "This is a data test string (pass 319).", - "This is a data test string (pass 320).", - "This is a data test string (pass 321).", - "This is a data test string (pass 322).", - "This is a data test string (pass 323).", - "This is a data test string (pass 324).", - "This is a data test string (pass 325).", - "This is a data test string (pass 326).", - "This is a data test string (pass 327).", - "This is a data test string (pass 328).", - "This is a data test string (pass 329).", - "This is a data test string (pass 330).", - "This is a data test string (pass 331).", - "This is a data test string (pass 332).", - "This is a data test string (pass 333).", - "This is a data test string (pass 334).", - "This is a data test string (pass 335).", - "This is a data test string (pass 336).", - "This is a data test string (pass 337).", - "This is a data test string (pass 338).", - "This is a data test string (pass 339).", - "This is a data test string (pass 340).", - "This is a data test string (pass 341).", - "This is a data test string (pass 342).", - "This is a data test string (pass 343).", - "This is a data test string (pass 344).", - "This is a data test string (pass 345).", - "This is a data test string (pass 346).", - "This is a data test string (pass 347).", - "This is a data test string (pass 348).", - "This is a data test string (pass 349).", - "This is a data test string (pass 350).", - "This is a data test string (pass 351).", - "This is a data test string (pass 352).", - "This is a data test string (pass 353).", - "This is a data test string (pass 354).", - "This is a data test string (pass 355).", - "This is a data test string (pass 356).", - "This is a data test string (pass 357).", - "This is a data test string (pass 358).", - "This is a data test string (pass 359).", - "This is a data test string (pass 360).", - "This is a data test string (pass 361).", - "This is a data test string (pass 362).", - "This is a data test string (pass 363).", - "This is a data test string (pass 364).", - "This is a data test string (pass 365).", - "This is a data test string (pass 366).", - "This is a data test string (pass 367).", - "This is a data test string (pass 368).", - "This is a data test string (pass 369).", - "This is a data test string (pass 370).", - "This is a data test string (pass 371).", - "This is a data test string (pass 372).", - "This is a data test string (pass 373).", - "This is a data test string (pass 374).", - "This is a data test string (pass 375).", - "This is a data test string (pass 376).", - "This is a data test string (pass 377).", - "This is a data test string (pass 378).", - "This is a data test string (pass 379).", - "This is a data test string (pass 380).", - "This is a data test string (pass 381).", - "This is a data test string (pass 382).", - "This is a data test string (pass 383).", - "This is a data test string (pass 384).", - "This is a data test string (pass 385).", - "This is a data test string (pass 386).", - "This is a data test string (pass 387).", - "This is a data test string (pass 388).", - "This is a data test string (pass 389).", - "This is a data test string (pass 390).", - "This is a data test string (pass 391).", - "This is a data test string (pass 392).", - "This is a data test string (pass 393).", - "This is a data test string (pass 394).", - "This is a data test string (pass 395).", - "This is a data test string (pass 396).", - "This is a data test string (pass 397).", - "This is a data test string (pass 398).", - "This is a data test string (pass 399).", - "This is a data test string (pass 400).", - "This is a data test string (pass 401).", - "This is a data test string (pass 402).", - "This is a data test string (pass 403).", - "This is a data test string (pass 404).", - "This is a data test string (pass 405).", - "This is a data test string (pass 406).", - "This is a data test string (pass 407).", - "This is a data test string (pass 408).", - "This is a data test string (pass 409).", - "This is a data test string (pass 410).", - "This is a data test string (pass 411).", - "This is a data test string (pass 412).", - "This is a data test string (pass 413).", - "This is a data test string (pass 414).", - "This is a data test string (pass 415).", - "This is a data test string (pass 416).", - "This is a data test string (pass 417).", - "This is a data test string (pass 418).", - "This is a data test string (pass 419).", - "This is a data test string (pass 420).", - "This is a data test string (pass 421).", - "This is a data test string (pass 422).", - "This is a data test string (pass 423).", - "This is a data test string (pass 424).", - "This is a data test string (pass 425).", - "This is a data test string (pass 426).", - "This is a data test string (pass 427).", - "This is a data test string (pass 428).", - "This is a data test string (pass 429).", - "This is a data test string (pass 430).", - "This is a data test string (pass 431).", - "This is a data test string (pass 432).", - "This is a data test string (pass 433).", - "This is a data test string (pass 434).", - "This is a data test string (pass 435).", - "This is a data test string (pass 436).", - "This is a data test string (pass 437).", - "This is a data test string (pass 438).", - "This is a data test string (pass 439).", - "This is a data test string (pass 440).", - "This is a data test string (pass 441).", - "This is a data test string (pass 442).", - "This is a data test string (pass 443).", - "This is a data test string (pass 444).", - "This is a data test string (pass 445).", - "This is a data test string (pass 446).", - "This is a data test string (pass 447).", - "This is a data test string (pass 448).", - "This is a data test string (pass 449).", - "This is a data test string (pass 450).", - "This is a data test string (pass 451).", - "This is a data test string (pass 452).", - "This is a data test string (pass 453).", - "This is a data test string (pass 454).", - "This is a data test string (pass 455).", - "This is a data test string (pass 456).", - "This is a data test string (pass 457).", - "This is a data test string (pass 458).", - "This is a data test string (pass 459).", - "This is a data test string (pass 460).", - "This is a data test string (pass 461).", - "This is a data test string (pass 462).", - "This is a data test string (pass 463).", - "This is a data test string (pass 464).", - "This is a data test string (pass 465).", - "This is a data test string (pass 466).", - "This is a data test string (pass 467).", - "This is a data test string (pass 468).", - "This is a data test string (pass 469).", - "This is a data test string (pass 470).", - "This is a data test string (pass 471).", - "This is a data test string (pass 472).", - "This is a data test string (pass 473).", - "This is a data test string (pass 474).", - "This is a data test string (pass 475).", - "This is a data test string (pass 476).", - "This is a data test string (pass 477).", - "This is a data test string (pass 478).", - "This is a data test string (pass 479).", - "This is a data test string (pass 480).", - "This is a data test string (pass 481).", - "This is a data test string (pass 482).", - "This is a data test string (pass 483).", - "This is a data test string (pass 484).", - "This is a data test string (pass 485).", - "This is a data test string (pass 486).", - "This is a data test string (pass 487).", - "This is a data test string (pass 488).", - "This is a data test string (pass 489).", - "This is a data test string (pass 490).", - "This is a data test string (pass 491).", - "This is a data test string (pass 492).", - "This is a data test string (pass 493).", - "This is a data test string (pass 494).", - "This is a data test string (pass 495).", - "This is a data test string (pass 496).", - "This is a data test string (pass 497).", - "This is a data test string (pass 498).", - "This is a data test string (pass 499).", - "This is a data test string (pass 500).", - "This is a data test string (pass 501).", - "This is a data test string (pass 502).", - "This is a data test string (pass 503).", - "This is a data test string (pass 504).", - "This is a data test string (pass 505).", - "This is a data test string (pass 506).", - "This is a data test string (pass 507).", - "This is a data test string (pass 508).", - "This is a data test string (pass 509).", - "This is a data test string (pass 510).", - "This is a data test string (pass 511).", - "This is a data test string (pass 512).", - "This is a data test string (pass 513).", - "This is a data test string (pass 514).", - "This is a data test string (pass 515).", - "This is a data test string (pass 516).", - "This is a data test string (pass 517).", - "This is a data test string (pass 518).", - "This is a data test string (pass 519).", - "This is a data test string (pass 520).", - "This is a data test string (pass 521).", - "This is a data test string (pass 522).", - "This is a data test string (pass 523).", - "This is a data test string (pass 524).", - "This is a data test string (pass 525).", - "This is a data test string (pass 526).", - "This is a data test string (pass 527).", - "This is a data test string (pass 528).", - "This is a data test string (pass 529).", - "This is a data test string (pass 530).", - "This is a data test string (pass 531).", - "This is a data test string (pass 532).", - "This is a data test string (pass 533).", - "This is a data test string (pass 534).", - "This is a data test string (pass 535).", - "This is a data test string (pass 536).", - "This is a data test string (pass 537).", - "This is a data test string (pass 538).", - "This is a data test string (pass 539).", - "This is a data test string (pass 540).", - "This is a data test string (pass 541).", - "This is a data test string (pass 542).", - "This is a data test string (pass 543).", - "This is a data test string (pass 544).", - "This is a data test string (pass 545).", - "This is a data test string (pass 546).", - "This is a data test string (pass 547).", - "This is a data test string (pass 548).", - "This is a data test string (pass 549).", - "This is a data test string (pass 550).", - "This is a data test string (pass 551).", - "This is a data test string (pass 552).", - "This is a data test string (pass 553).", - "This is a data test string (pass 554).", - "This is a data test string (pass 555).", - "This is a data test string (pass 556).", - "This is a data test string (pass 557).", - "This is a data test string (pass 558).", - "This is a data test string (pass 559).", - "This is a data test string (pass 560).", - "This is a data test string (pass 561).", - "This is a data test string (pass 562).", - "This is a data test string (pass 563).", - "This is a data test string (pass 564).", - "This is a data test string (pass 565).", - "This is a data test string (pass 566).", - "This is a data test string (pass 567).", - "This is a data test string (pass 568).", - "This is a data test string (pass 569).", - "This is a data test string (pass 570).", - "This is a data test string (pass 571).", - "This is a data test string (pass 572).", - "This is a data test string (pass 573).", - "This is a data test string (pass 574).", - "This is a data test string (pass 575).", - "This is a data test string (pass 576).", - "This is a data test string (pass 577).", - "This is a data test string (pass 578).", - "This is a data test string (pass 579).", - "This is a data test string (pass 580).", - "This is a data test string (pass 581).", - "This is a data test string (pass 582).", - "This is a data test string (pass 583).", - "This is a data test string (pass 584).", - "This is a data test string (pass 585).", - "This is a data test string (pass 586).", - "This is a data test string (pass 587).", - "This is a data test string (pass 588).", - "This is a data test string (pass 589).", - "This is a data test string (pass 590).", - "This is a data test string (pass 591).", - "This is a data test string (pass 592).", - "This is a data test string (pass 593).", - "This is a data test string (pass 594).", - "This is a data test string (pass 595).", - "This is a data test string (pass 596).", - "This is a data test string (pass 597).", - "This is a data test string (pass 598).", - "This is a data test string (pass 599).", - "This is a data test string (pass 600).", - "This is a data test string (pass 601).", - "This is a data test string (pass 602).", - "This is a data test string (pass 603).", - "This is a data test string (pass 604).", - "This is a data test string (pass 605).", - "This is a data test string (pass 606).", - "This is a data test string (pass 607).", - "This is a data test string (pass 608).", - "This is a data test string (pass 609).", - "This is a data test string (pass 610).", - "This is a data test string (pass 611).", - "This is a data test string (pass 612).", - "This is a data test string (pass 613).", - "This is a data test string (pass 614).", - "This is a data test string (pass 615).", - "This is a data test string (pass 616).", - "This is a data test string (pass 617).", - "This is a data test string (pass 618).", - "This is a data test string (pass 619).", - "This is a data test string (pass 620).", - "This is a data test string (pass 621).", - "This is a data test string (pass 622).", - "This is a data test string (pass 623).", - "This is a data test string (pass 624).", - "This is a data test string (pass 625).", - "This is a data test string (pass 626).", - "This is a data test string (pass 627).", - "This is a data test string (pass 628).", - "This is a data test string (pass 629).", - "This is a data test string (pass 630).", - "This is a data test string (pass 631).", - "This is a data test string (pass 632).", - "This is a data test string (pass 633).", - "This is a data test string (pass 634).", - "This is a data test string (pass 635).", - "This is a data test string (pass 636).", - "This is a data test string (pass 637).", - "This is a data test string (pass 638).", - "This is a data test string (pass 639).", - "This is a data test string (pass 640).", - "This is a data test string (pass 641).", - "This is a data test string (pass 642).", - "This is a data test string (pass 643).", - "This is a data test string (pass 644).", - "This is a data test string (pass 645).", - "This is a data test string (pass 646).", - "This is a data test string (pass 647).", - "This is a data test string (pass 648).", - "This is a data test string (pass 649).", - "This is a data test string (pass 650).", - "This is a data test string (pass 651).", - "This is a data test string (pass 652).", - "This is a data test string (pass 653).", - "This is a data test string (pass 654).", - "This is a data test string (pass 655).", - "This is a data test string (pass 656).", - "This is a data test string (pass 657).", - "This is a data test string (pass 658).", - "This is a data test string (pass 659).", - "This is a data test string (pass 660).", - "This is a data test string (pass 661).", - "This is a data test string (pass 662).", - "This is a data test string (pass 663).", - "This is a data test string (pass 664).", - "This is a data test string (pass 665).", - "This is a data test string (pass 666).", - "This is a data test string (pass 667).", - "This is a data test string (pass 668).", - "This is a data test string (pass 669).", - "This is a data test string (pass 670).", - "This is a data test string (pass 671).", - "This is a data test string (pass 672).", - "This is a data test string (pass 673).", - "This is a data test string (pass 674).", - "This is a data test string (pass 675).", - "This is a data test string (pass 676).", - "This is a data test string (pass 677).", - "This is a data test string (pass 678).", - "This is a data test string (pass 679).", - "This is a data test string (pass 680).", - "This is a data test string (pass 681).", - "This is a data test string (pass 682).", - "This is a data test string (pass 683).", - "This is a data test string (pass 684).", - "This is a data test string (pass 685).", - "This is a data test string (pass 686).", - "This is a data test string (pass 687).", - "This is a data test string (pass 688).", - "This is a data test string (pass 689).", - "This is a data test string (pass 690).", - "This is a data test string (pass 691).", - "This is a data test string (pass 692).", - "This is a data test string (pass 693).", - "This is a data test string (pass 694).", - "This is a data test string (pass 695).", - "This is a data test string (pass 696).", - "This is a data test string (pass 697).", - "This is a data test string (pass 698).", - "This is a data test string (pass 699).", - "This is a data test string (pass 700).", - "This is a data test string (pass 701).", - "This is a data test string (pass 702).", - "This is a data test string (pass 703).", - "This is a data test string (pass 704).", - "This is a data test string (pass 705).", - "This is a data test string (pass 706).", - "This is a data test string (pass 707).", - "This is a data test string (pass 708).", - "This is a data test string (pass 709).", - "This is a data test string (pass 710).", - "This is a data test string (pass 711).", - "This is a data test string (pass 712).", - "This is a data test string (pass 713).", - "This is a data test string (pass 714).", - "This is a data test string (pass 715).", - "This is a data test string (pass 716).", - "This is a data test string (pass 717).", - "This is a data test string (pass 718).", - "This is a data test string (pass 719).", - "This is a data test string (pass 720).", - "This is a data test string (pass 721).", - "This is a data test string (pass 722).", - "This is a data test string (pass 723).", - "This is a data test string (pass 724).", - "This is a data test string (pass 725).", - "This is a data test string (pass 726).", - "This is a data test string (pass 727).", - "This is a data test string (pass 728).", - "This is a data test string (pass 729).", - "This is a data test string (pass 730).", - "This is a data test string (pass 731).", - "This is a data test string (pass 732).", - "This is a data test string (pass 733).", - "This is a data test string (pass 734).", - "This is a data test string (pass 735).", - "This is a data test string (pass 736).", - "This is a data test string (pass 737).", - "This is a data test string (pass 738).", - "This is a data test string (pass 739).", - "This is a data test string (pass 740).", - "This is a data test string (pass 741).", - "This is a data test string (pass 742).", - "This is a data test string (pass 743).", - "This is a data test string (pass 744).", - "This is a data test string (pass 745).", - "This is a data test string (pass 746).", - "This is a data test string (pass 747).", - "This is a data test string (pass 748).", - "This is a data test string (pass 749).", - "This is a data test string (pass 750).", - "This is a data test string (pass 751).", - "This is a data test string (pass 752).", - "This is a data test string (pass 753).", - "This is a data test string (pass 754).", - "This is a data test string (pass 755).", - "This is a data test string (pass 756).", - "This is a data test string (pass 757).", - "This is a data test string (pass 758).", - "This is a data test string (pass 759).", - "This is a data test string (pass 760).", - "This is a data test string (pass 761).", - "This is a data test string (pass 762).", - "This is a data test string (pass 763).", - "This is a data test string (pass 764).", - "This is a data test string (pass 765).", - "This is a data test string (pass 766).", - "This is a data test string (pass 767).", - "This is a data test string (pass 768).", - "This is a data test string (pass 769).", - "This is a data test string (pass 770).", - "This is a data test string (pass 771).", - "This is a data test string (pass 772).", - "This is a data test string (pass 773).", - "This is a data test string (pass 774).", - "This is a data test string (pass 775).", - "This is a data test string (pass 776).", - "This is a data test string (pass 777).", - "This is a data test string (pass 778).", - "This is a data test string (pass 779).", - "This is a data test string (pass 780).", - "This is a data test string (pass 781).", - "This is a data test string (pass 782).", - "This is a data test string (pass 783).", - "This is a data test string (pass 784).", - "This is a data test string (pass 785).", - "This is a data test string (pass 786).", - "This is a data test string (pass 787).", - "This is a data test string (pass 788).", - "This is a data test string (pass 789).", - "This is a data test string (pass 790).", - "This is a data test string (pass 791).", - "This is a data test string (pass 792).", - "This is a data test string (pass 793).", - "This is a data test string (pass 794).", - "This is a data test string (pass 795).", - "This is a data test string (pass 796).", - "This is a data test string (pass 797).", - "This is a data test string (pass 798).", - "This is a data test string (pass 799).", - "This is a data test string (pass 800).", - "This is a data test string (pass 801).", - "This is a data test string (pass 802).", - "This is a data test string (pass 803).", - "This is a data test string (pass 804).", - "This is a data test string (pass 805).", - "This is a data test string (pass 806).", - "This is a data test string (pass 807).", - "This is a data test string (pass 808).", - "This is a data test string (pass 809).", - "This is a data test string (pass 810).", - "This is a data test string (pass 811).", - "This is a data test string (pass 812).", - "This is a data test string (pass 813).", - "This is a data test string (pass 814).", - "This is a data test string (pass 815).", - "This is a data test string (pass 816).", - "This is a data test string (pass 817).", - "This is a data test string (pass 818).", - "This is a data test string (pass 819).", - "This is a data test string (pass 820).", - "This is a data test string (pass 821).", - "This is a data test string (pass 822).", - "This is a data test string (pass 823).", - "This is a data test string (pass 824).", - "This is a data test string (pass 825).", - "This is a data test string (pass 826).", - "This is a data test string (pass 827).", - "This is a data test string (pass 828).", - "This is a data test string (pass 829).", - "This is a data test string (pass 830).", - "This is a data test string (pass 831).", - "This is a data test string (pass 832).", - "This is a data test string (pass 833).", - "This is a data test string (pass 834).", - "This is a data test string (pass 835).", - "This is a data test string (pass 836).", - "This is a data test string (pass 837).", - "This is a data test string (pass 838).", - "This is a data test string (pass 839).", - "This is a data test string (pass 840).", - "This is a data test string (pass 841).", - "This is a data test string (pass 842).", - "This is a data test string (pass 843).", - "This is a data test string (pass 844).", - "This is a data test string (pass 845).", - "This is a data test string (pass 846).", - "This is a data test string (pass 847).", - "This is a data test string (pass 848).", - "This is a data test string (pass 849).", - "This is a data test string (pass 850).", - "This is a data test string (pass 851).", - "This is a data test string (pass 852).", - "This is a data test string (pass 853).", - "This is a data test string (pass 854).", - "This is a data test string (pass 855).", - "This is a data test string (pass 856).", - "This is a data test string (pass 857).", - "This is a data test string (pass 858).", - "This is a data test string (pass 859).", - "This is a data test string (pass 860).", - "This is a data test string (pass 861).", - "This is a data test string (pass 862).", - "This is a data test string (pass 863).", - "This is a data test string (pass 864).", - "This is a data test string (pass 865).", - "This is a data test string (pass 866).", - "This is a data test string (pass 867).", - "This is a data test string (pass 868).", - "This is a data test string (pass 869).", - "This is a data test string (pass 870).", - "This is a data test string (pass 871).", - "This is a data test string (pass 872).", - "This is a data test string (pass 873).", - "This is a data test string (pass 874).", - "This is a data test string (pass 875).", - "This is a data test string (pass 876).", - "This is a data test string (pass 877).", - "This is a data test string (pass 878).", - "This is a data test string (pass 879).", - "This is a data test string (pass 880).", - "This is a data test string (pass 881).", - "This is a data test string (pass 882).", - "This is a data test string (pass 883).", - "This is a data test string (pass 884).", - "This is a data test string (pass 885).", - "This is a data test string (pass 886).", - "This is a data test string (pass 887).", - "This is a data test string (pass 888).", - "This is a data test string (pass 889).", - "This is a data test string (pass 890).", - "This is a data test string (pass 891).", - "This is a data test string (pass 892).", - "This is a data test string (pass 893).", - "This is a data test string (pass 894).", - "This is a data test string (pass 895).", - "This is a data test string (pass 896).", - "This is a data test string (pass 897).", - "This is a data test string (pass 898).", - "This is a data test string (pass 899).", - "This is a data test string (pass 900).", - "This is a data test string (pass 901).", - "This is a data test string (pass 902).", - "This is a data test string (pass 903).", - "This is a data test string (pass 904).", - "This is a data test string (pass 905).", - "This is a data test string (pass 906).", - "This is a data test string (pass 907).", - "This is a data test string (pass 908).", - "This is a data test string (pass 909).", - "This is a data test string (pass 910).", - "This is a data test string (pass 911).", - "This is a data test string (pass 912).", - "This is a data test string (pass 913).", - "This is a data test string (pass 914).", - "This is a data test string (pass 915).", - "This is a data test string (pass 916).", - "This is a data test string (pass 917).", - "This is a data test string (pass 918).", - "This is a data test string (pass 919).", - "This is a data test string (pass 920).", - "This is a data test string (pass 921).", - "This is a data test string (pass 922).", - "This is a data test string (pass 923).", - "This is a data test string (pass 924).", - "This is a data test string (pass 925).", - "This is a data test string (pass 926).", - "This is a data test string (pass 927).", - "This is a data test string (pass 928).", - "This is a data test string (pass 929).", - "This is a data test string (pass 930).", - "This is a data test string (pass 931).", - "This is a data test string (pass 932).", - "This is a data test string (pass 933).", - "This is a data test string (pass 934).", - "This is a data test string (pass 935).", - "This is a data test string (pass 936).", - "This is a data test string (pass 937).", - "This is a data test string (pass 938).", - "This is a data test string (pass 939).", - "This is a data test string (pass 940).", - "This is a data test string (pass 941).", - "This is a data test string (pass 942).", - "This is a data test string (pass 943).", - "This is a data test string (pass 944).", - "This is a data test string (pass 945).", - "This is a data test string (pass 946).", - "This is a data test string (pass 947).", - "This is a data test string (pass 948).", - "This is a data test string (pass 949).", - "This is a data test string (pass 950).", - "This is a data test string (pass 951).", - "This is a data test string (pass 952).", - "This is a data test string (pass 953).", - "This is a data test string (pass 954).", - "This is a data test string (pass 955).", - "This is a data test string (pass 956).", - "This is a data test string (pass 957).", - "This is a data test string (pass 958).", - "This is a data test string (pass 959).", - "This is a data test string (pass 960).", - "This is a data test string (pass 961).", - "This is a data test string (pass 962).", - "This is a data test string (pass 963).", - "This is a data test string (pass 964).", - "This is a data test string (pass 965).", - "This is a data test string (pass 966).", - "This is a data test string (pass 967).", - "This is a data test string (pass 968).", - "This is a data test string (pass 969).", - "This is a data test string (pass 970).", - "This is a data test string (pass 971).", - "This is a data test string (pass 972).", - "This is a data test string (pass 973).", - "This is a data test string (pass 974).", - "This is a data test string (pass 975).", - "This is a data test string (pass 976).", - "This is a data test string (pass 977).", - "This is a data test string (pass 978).", - "This is a data test string (pass 979).", - "This is a data test string (pass 980).", - "This is a data test string (pass 981).", - "This is a data test string (pass 982).", - "This is a data test string (pass 983).", - "This is a data test string (pass 984).", - "This is a data test string (pass 985).", - "This is a data test string (pass 986).", - "This is a data test string (pass 987).", - "This is a data test string (pass 988).", - "This is a data test string (pass 989).", - "This is a data test string (pass 990).", - "This is a data test string (pass 991).", - "This is a data test string (pass 992).", - "This is a data test string (pass 993).", - "This is a data test string (pass 994).", - "This is a data test string (pass 995).", - "This is a data test string (pass 996).", - "This is a data test string (pass 997).", - "This is a data test string (pass 998).", - "This is a data test string (pass 999)." ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.dmp deleted file mode 100644 index b02194f53f6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.03.dmp +++ /dev/null @@ -1,1694 +0,0 @@ -netcdf test { -dimensions: - b2_0 = 2 ; - b2_1 = 3 ; - b_0 = 2 ; - b_1 = 3 ; - b_2 = 4 ; - f32_0 = 2 ; - f32_1 = 2 ; - f32_2 = 2 ; - f64_0 = 2 ; - f64_1 = 2 ; - f64_2 = 2 ; - i16_0 = 2 ; - i16_1 = 2 ; - i16_2 = 2 ; - i32_0 = 2 ; - i32_1 = 3 ; - i32_2 = 4 ; - s0_0 = 4 ; - s0_1 = 5 ; - s0_2 = 6 ; - s1_0 = 10 ; - s1_1 = 10 ; - s1_2 = 10 ; - u_0 = 10 ; - u_1 = 10 ; - u_2 = 10 ; - ui16_0 = 2 ; - ui16_1 = 2 ; - ui16_2 = 2 ; - ui32_0 = 2 ; - ui32_1 = 3 ; - ui32_2 = 4 ; - ui32_3 = 3 ; - ui32_4 = 2 ; -variables: - ubyte b(b_0, b_1, b_2) ; - ubyte b2(b2_0, b2_1) ; - int i32(i32_0, i32_1, i32_2) ; - uint ui32(ui32_0, ui32_1, ui32_2, ui32_3, ui32_4) ; - short i16(i16_0, i16_1, i16_2) ; - ushort ui16(ui16_0, ui16_1, ui16_2) ; - float f32(f32_0, f32_1, f32_2) ; - double f64(f64_0, f64_1, f64_2) ; - string s0(s0_0, s0_1, s0_2) ; - string s1(s1_0, s1_1, s1_2) ; - string u(u_0, u_1, u_2) ; -data: - - b = - 0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15, - 16, 17, 18, 19, - 20, 21, 22, 23 ; - - b2 = - 0, 1, 2, - 3, 4, 5 ; - - i32 = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104 ; - - ui32 = - 0, 4096, - 8192, 12288, - 16384, 20480, - 24576, 28672, - 32768, 36864, - 40960, 45056, - 49152, 53248, - 57344, 61440, - 65536, 69632, - 73728, 77824, - 81920, 86016, - 90112, 94208, - 98304, 102400, - 106496, 110592, - 114688, 118784, - 122880, 126976, - 131072, 135168, - 139264, 143360, - 147456, 151552, - 155648, 159744, - 163840, 167936, - 172032, 176128, - 180224, 184320, - 188416, 192512, - 196608, 200704, - 204800, 208896, - 212992, 217088, - 221184, 225280, - 229376, 233472, - 237568, 241664, - 245760, 249856, - 253952, 258048, - 262144, 266240, - 270336, 274432, - 278528, 282624, - 286720, 290816, - 294912, 299008, - 303104, 307200, - 311296, 315392, - 319488, 323584, - 327680, 331776, - 335872, 339968, - 344064, 348160, - 352256, 356352, - 360448, 364544, - 368640, 372736, - 376832, 380928, - 385024, 389120, - 393216, 397312, - 401408, 405504, - 409600, 413696, - 417792, 421888, - 425984, 430080, - 434176, 438272, - 442368, 446464, - 450560, 454656, - 458752, 462848, - 466944, 471040, - 475136, 479232, - 483328, 487424, - 491520, 495616, - 499712, 503808, - 507904, 512000, - 516096, 520192, - 524288, 528384, - 532480, 536576, - 540672, 544768, - 548864, 552960, - 557056, 561152, - 565248, 569344, - 573440, 577536, - 581632, 585728 ; - - i16 = - 0, 256, - 512, 768, - 1024, 1280, - 1536, 1792 ; - - ui16 = - 0, 1024, - 2048, 3072, - 4096, 5120, - 6144, 7168 ; - - f32 = - 0, 0.009999833, - 0.01999867, 0.0299955, - 0.03998933, 0.04997917, - 0.059964, 0.06994285 ; - - f64 = - 1, 0.999950000416665, - 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, - 0.998200539935204, 0.99755100025328 ; - - s0 = - "This is a data test string (pass 0).", - "This is a data test string (pass 1).", - "This is a data test string (pass 2).", - "This is a data test string (pass 3).", - "This is a data test string (pass 4).", - "This is a data test string (pass 5).", - "This is a data test string (pass 6).", - "This is a data test string (pass 7).", - "This is a data test string (pass 8).", - "This is a data test string (pass 9).", - "This is a data test string (pass 10).", - "This is a data test string (pass 11).", - "This is a data test string (pass 12).", - "This is a data test string (pass 13).", - "This is a data test string (pass 14).", - "This is a data test string (pass 15).", - "This is a data test string (pass 16).", - "This is a data test string (pass 17).", - "This is a data test string (pass 18).", - "This is a data test string (pass 19).", - "This is a data test string (pass 20).", - "This is a data test string (pass 21).", - "This is a data test string (pass 22).", - "This is a data test string (pass 23).", - "This is a data test string (pass 24).", - "This is a data test string (pass 25).", - "This is a data test string (pass 26).", - "This is a data test string (pass 27).", - "This is a data test string (pass 28).", - "This is a data test string (pass 29).", - "This is a data test string (pass 30).", - "This is a data test string (pass 31).", - "This is a data test string (pass 32).", - "This is a data test string (pass 33).", - "This is a data test string (pass 34).", - "This is a data test string (pass 35).", - "This is a data test string (pass 36).", - "This is a data test string (pass 37).", - "This is a data test string (pass 38).", - "This is a data test string (pass 39).", - "This is a data test string (pass 40).", - "This is a data test string (pass 41).", - "This is a data test string (pass 42).", - "This is a data test string (pass 43).", - "This is a data test string (pass 44).", - "This is a data test string (pass 45).", - "This is a data test string (pass 46).", - "This is a data test string (pass 47).", - "This is a data test string (pass 48).", - "This is a data test string (pass 49).", - "This is a data test string (pass 50).", - "This is a data test string (pass 51).", - "This is a data test string (pass 52).", - "This is a data test string (pass 53).", - "This is a data test string (pass 54).", - "This is a data test string (pass 55).", - "This is a data test string (pass 56).", - "This is a data test string (pass 57).", - "This is a data test string (pass 58).", - "This is a data test string (pass 59).", - "This is a data test string (pass 60).", - "This is a data test string (pass 61).", - "This is a data test string (pass 62).", - "This is a data test string (pass 63).", - "This is a data test string (pass 64).", - "This is a data test string (pass 65).", - "This is a data test string (pass 66).", - "This is a data test string (pass 67).", - "This is a data test string (pass 68).", - "This is a data test string (pass 69).", - "This is a data test string (pass 70).", - "This is a data test string (pass 71).", - "This is a data test string (pass 72).", - "This is a data test string (pass 73).", - "This is a data test string (pass 74).", - "This is a data test string (pass 75).", - "This is a data test string (pass 76).", - "This is a data test string (pass 77).", - "This is a data test string (pass 78).", - "This is a data test string (pass 79).", - "This is a data test string (pass 80).", - "This is a data test string (pass 81).", - "This is a data test string (pass 82).", - "This is a data test string (pass 83).", - "This is a data test string (pass 84).", - "This is a data test string (pass 85).", - "This is a data test string (pass 86).", - "This is a data test string (pass 87).", - "This is a data test string (pass 88).", - "This is a data test string (pass 89).", - "This is a data test string (pass 90).", - "This is a data test string (pass 91).", - "This is a data test string (pass 92).", - "This is a data test string (pass 93).", - "This is a data test string (pass 94).", - "This is a data test string (pass 95).", - "This is a data test string (pass 96).", - "This is a data test string (pass 97).", - "This is a data test string (pass 98).", - "This is a data test string (pass 99).", - "This is a data test string (pass 100).", - "This is a data test string (pass 101).", - "This is a data test string (pass 102).", - "This is a data test string (pass 103).", - "This is a data test string (pass 104).", - "This is a data test string (pass 105).", - "This is a data test string (pass 106).", - "This is a data test string (pass 107).", - "This is a data test string (pass 108).", - "This is a data test string (pass 109).", - "This is a data test string (pass 110).", - "This is a data test string (pass 111).", - "This is a data test string (pass 112).", - "This is a data test string (pass 113).", - "This is a data test string (pass 114).", - "This is a data test string (pass 115).", - "This is a data test string (pass 116).", - "This is a data test string (pass 117).", - "This is a data test string (pass 118).", - "This is a data test string (pass 119)." ; - - s1 = - "This is a data test string (pass 120).", - "This is a data test string (pass 121).", - "This is a data test string (pass 122).", - "This is a data test string (pass 123).", - "This is a data test string (pass 124).", - "This is a data test string (pass 125).", - "This is a data test string (pass 126).", - "This is a data test string (pass 127).", - "This is a data test string (pass 128).", - "This is a data test string (pass 129).", - "This is a data test string (pass 130).", - "This is a data test string (pass 131).", - "This is a data test string (pass 132).", - "This is a data test string (pass 133).", - "This is a data test string (pass 134).", - "This is a data test string (pass 135).", - "This is a data test string (pass 136).", - "This is a data test string (pass 137).", - "This is a data test string (pass 138).", - "This is a data test string (pass 139).", - "This is a data test string (pass 140).", - "This is a data test string (pass 141).", - "This is a data test string (pass 142).", - "This is a data test string (pass 143).", - "This is a data test string (pass 144).", - "This is a data test string (pass 145).", - "This is a data test string (pass 146).", - "This is a data test string (pass 147).", - "This is a data test string (pass 148).", - "This is a data test string (pass 149).", - "This is a data test string (pass 150).", - "This is a data test string (pass 151).", - "This is a data test string (pass 152).", - "This is a data test string (pass 153).", - "This is a data test string (pass 154).", - "This is a data test string (pass 155).", - "This is a data test string (pass 156).", - "This is a data test string (pass 157).", - "This is a data test string (pass 158).", - "This is a data test string (pass 159).", - "This is a data test string (pass 160).", - "This is a data test string (pass 161).", - "This is a data test string (pass 162).", - "This is a data test string (pass 163).", - "This is a data test string (pass 164).", - "This is a data test string (pass 165).", - "This is a data test string (pass 166).", - "This is a data test string (pass 167).", - "This is a data test string (pass 168).", - "This is a data test string (pass 169).", - "This is a data test string (pass 170).", - "This is a data test string (pass 171).", - "This is a data test string (pass 172).", - "This is a data test string (pass 173).", - "This is a data test string (pass 174).", - "This is a data test string (pass 175).", - "This is a data test string (pass 176).", - "This is a data test string (pass 177).", - "This is a data test string (pass 178).", - "This is a data test string (pass 179).", - "This is a data test string (pass 180).", - "This is a data test string (pass 181).", - "This is a data test string (pass 182).", - "This is a data test string (pass 183).", - "This is a data test string (pass 184).", - "This is a data test string (pass 185).", - "This is a data test string (pass 186).", - "This is a data test string (pass 187).", - "This is a data test string (pass 188).", - "This is a data test string (pass 189).", - "This is a data test string (pass 190).", - "This is a data test string (pass 191).", - "This is a data test string (pass 192).", - "This is a data test string (pass 193).", - "This is a data test string (pass 194).", - "This is a data test string (pass 195).", - "This is a data test string (pass 196).", - "This is a data test string (pass 197).", - "This is a data test string (pass 198).", - "This is a data test string (pass 199).", - "This is a data test string (pass 200).", - "This is a data test string (pass 201).", - "This is a data test string (pass 202).", - "This is a data test string (pass 203).", - "This is a data test string (pass 204).", - "This is a data test string (pass 205).", - "This is a data test string (pass 206).", - "This is a data test string (pass 207).", - "This is a data test string (pass 208).", - "This is a data test string (pass 209).", - "This is a data test string (pass 210).", - "This is a data test string (pass 211).", - "This is a data test string (pass 212).", - "This is a data test string (pass 213).", - "This is a data test string (pass 214).", - "This is a data test string (pass 215).", - "This is a data test string (pass 216).", - "This is a data test string (pass 217).", - "This is a data test string (pass 218).", - "This is a data test string (pass 219).", - "This is a data test string (pass 220).", - "This is a data test string (pass 221).", - "This is a data test string (pass 222).", - "This is a data test string (pass 223).", - "This is a data test string (pass 224).", - "This is a data test string (pass 225).", - "This is a data test string (pass 226).", - "This is a data test string (pass 227).", - "This is a data test string (pass 228).", - "This is a data test string (pass 229).", - "This is a data test string (pass 230).", - "This is a data test string (pass 231).", - "This is a data test string (pass 232).", - "This is a data test string (pass 233).", - "This is a data test string (pass 234).", - "This is a data test string (pass 235).", - "This is a data test string (pass 236).", - "This is a data test string (pass 237).", - "This is a data test string (pass 238).", - "This is a data test string (pass 239).", - "This is a data test string (pass 240).", - "This is a data test string (pass 241).", - "This is a data test string (pass 242).", - "This is a data test string (pass 243).", - "This is a data test string (pass 244).", - "This is a data test string (pass 245).", - "This is a data test string (pass 246).", - "This is a data test string (pass 247).", - "This is a data test string (pass 248).", - "This is a data test string (pass 249).", - "This is a data test string (pass 250).", - "This is a data test string (pass 251).", - "This is a data test string (pass 252).", - "This is a data test string (pass 253).", - "This is a data test string (pass 254).", - "This is a data test string (pass 255).", - "This is a data test string (pass 256).", - "This is a data test string (pass 257).", - "This is a data test string (pass 258).", - "This is a data test string (pass 259).", - "This is a data test string (pass 260).", - "This is a data test string (pass 261).", - "This is a data test string (pass 262).", - "This is a data test string (pass 263).", - "This is a data test string (pass 264).", - "This is a data test string (pass 265).", - "This is a data test string (pass 266).", - "This is a data test string (pass 267).", - "This is a data test string (pass 268).", - "This is a data test string (pass 269).", - "This is a data test string (pass 270).", - "This is a data test string (pass 271).", - "This is a data test string (pass 272).", - "This is a data test string (pass 273).", - "This is a data test string (pass 274).", - "This is a data test string (pass 275).", - "This is a data test string (pass 276).", - "This is a data test string (pass 277).", - "This is a data test string (pass 278).", - "This is a data test string (pass 279).", - "This is a data test string (pass 280).", - "This is a data test string (pass 281).", - "This is a data test string (pass 282).", - "This is a data test string (pass 283).", - "This is a data test string (pass 284).", - "This is a data test string (pass 285).", - "This is a data test string (pass 286).", - "This is a data test string (pass 287).", - "This is a data test string (pass 288).", - "This is a data test string (pass 289).", - "This is a data test string (pass 290).", - "This is a data test string (pass 291).", - "This is a data test string (pass 292).", - "This is a data test string (pass 293).", - "This is a data test string (pass 294).", - "This is a data test string (pass 295).", - "This is a data test string (pass 296).", - "This is a data test string (pass 297).", - "This is a data test string (pass 298).", - "This is a data test string (pass 299).", - "This is a data test string (pass 300).", - "This is a data test string (pass 301).", - "This is a data test string (pass 302).", - "This is a data test string (pass 303).", - "This is a data test string (pass 304).", - "This is a data test string (pass 305).", - "This is a data test string (pass 306).", - "This is a data test string (pass 307).", - "This is a data test string (pass 308).", - "This is a data test string (pass 309).", - "This is a data test string (pass 310).", - "This is a data test string (pass 311).", - "This is a data test string (pass 312).", - "This is a data test string (pass 313).", - "This is a data test string (pass 314).", - "This is a data test string (pass 315).", - "This is a data test string (pass 316).", - "This is a data test string (pass 317).", - "This is a data test string (pass 318).", - "This is a data test string (pass 319).", - "This is a data test string (pass 320).", - "This is a data test string (pass 321).", - "This is a data test string (pass 322).", - "This is a data test string (pass 323).", - "This is a data test string (pass 324).", - "This is a data test string (pass 325).", - "This is a data test string (pass 326).", - "This is a data test string (pass 327).", - "This is a data test string (pass 328).", - "This is a data test string (pass 329).", - "This is a data test string (pass 330).", - "This is a data test string (pass 331).", - "This is a data test string (pass 332).", - "This is a data test string (pass 333).", - "This is a data test string (pass 334).", - "This is a data test string (pass 335).", - "This is a data test string (pass 336).", - "This is a data test string (pass 337).", - "This is a data test string (pass 338).", - "This is a data test string (pass 339).", - "This is a data test string (pass 340).", - "This is a data test string (pass 341).", - "This is a data test string (pass 342).", - "This is a data test string (pass 343).", - "This is a data test string (pass 344).", - "This is a data test string (pass 345).", - "This is a data test string (pass 346).", - "This is a data test string (pass 347).", - "This is a data test string (pass 348).", - "This is a data test string (pass 349).", - "This is a data test string (pass 350).", - "This is a data test string (pass 351).", - "This is a data test string (pass 352).", - "This is a data test string (pass 353).", - "This is a data test string (pass 354).", - "This is a data test string (pass 355).", - "This is a data test string (pass 356).", - "This is a data test string (pass 357).", - "This is a data test string (pass 358).", - "This is a data test string (pass 359).", - "This is a data test string (pass 360).", - "This is a data test string (pass 361).", - "This is a data test string (pass 362).", - "This is a data test string (pass 363).", - "This is a data test string (pass 364).", - "This is a data test string (pass 365).", - "This is a data test string (pass 366).", - "This is a data test string (pass 367).", - "This is a data test string (pass 368).", - "This is a data test string (pass 369).", - "This is a data test string (pass 370).", - "This is a data test string (pass 371).", - "This is a data test string (pass 372).", - "This is a data test string (pass 373).", - "This is a data test string (pass 374).", - "This is a data test string (pass 375).", - "This is a data test string (pass 376).", - "This is a data test string (pass 377).", - "This is a data test string (pass 378).", - "This is a data test string (pass 379).", - "This is a data test string (pass 380).", - "This is a data test string (pass 381).", - "This is a data test string (pass 382).", - "This is a data test string (pass 383).", - "This is a data test string (pass 384).", - "This is a data test string (pass 385).", - "This is a data test string (pass 386).", - "This is a data test string (pass 387).", - "This is a data test string (pass 388).", - "This is a data test string (pass 389).", - "This is a data test string (pass 390).", - "This is a data test string (pass 391).", - "This is a data test string (pass 392).", - "This is a data test string (pass 393).", - "This is a data test string (pass 394).", - "This is a data test string (pass 395).", - "This is a data test string (pass 396).", - "This is a data test string (pass 397).", - "This is a data test string (pass 398).", - "This is a data test string (pass 399).", - "This is a data test string (pass 400).", - "This is a data test string (pass 401).", - "This is a data test string (pass 402).", - "This is a data test string (pass 403).", - "This is a data test string (pass 404).", - "This is a data test string (pass 405).", - "This is a data test string (pass 406).", - "This is a data test string (pass 407).", - "This is a data test string (pass 408).", - "This is a data test string (pass 409).", - "This is a data test string (pass 410).", - "This is a data test string (pass 411).", - "This is a data test string (pass 412).", - "This is a data test string (pass 413).", - "This is a data test string (pass 414).", - "This is a data test string (pass 415).", - "This is a data test string (pass 416).", - "This is a data test string (pass 417).", - "This is a data test string (pass 418).", - "This is a data test string (pass 419).", - "This is a data test string (pass 420).", - "This is a data test string (pass 421).", - "This is a data test string (pass 422).", - "This is a data test string (pass 423).", - "This is a data test string (pass 424).", - "This is a data test string (pass 425).", - "This is a data test string (pass 426).", - "This is a data test string (pass 427).", - "This is a data test string (pass 428).", - "This is a data test string (pass 429).", - "This is a data test string (pass 430).", - "This is a data test string (pass 431).", - "This is a data test string (pass 432).", - "This is a data test string (pass 433).", - "This is a data test string (pass 434).", - "This is a data test string (pass 435).", - "This is a data test string (pass 436).", - "This is a data test string (pass 437).", - "This is a data test string (pass 438).", - "This is a data test string (pass 439).", - "This is a data test string (pass 440).", - "This is a data test string (pass 441).", - "This is a data test string (pass 442).", - "This is a data test string (pass 443).", - "This is a data test string (pass 444).", - "This is a data test string (pass 445).", - "This is a data test string (pass 446).", - "This is a data test string (pass 447).", - "This is a data test string (pass 448).", - "This is a data test string (pass 449).", - "This is a data test string (pass 450).", - "This is a data test string (pass 451).", - "This is a data test string (pass 452).", - "This is a data test string (pass 453).", - "This is a data test string (pass 454).", - "This is a data test string (pass 455).", - "This is a data test string (pass 456).", - "This is a data test string (pass 457).", - "This is a data test string (pass 458).", - "This is a data test string (pass 459).", - "This is a data test string (pass 460).", - "This is a data test string (pass 461).", - "This is a data test string (pass 462).", - "This is a data test string (pass 463).", - "This is a data test string (pass 464).", - "This is a data test string (pass 465).", - "This is a data test string (pass 466).", - "This is a data test string (pass 467).", - "This is a data test string (pass 468).", - "This is a data test string (pass 469).", - "This is a data test string (pass 470).", - "This is a data test string (pass 471).", - "This is a data test string (pass 472).", - "This is a data test string (pass 473).", - "This is a data test string (pass 474).", - "This is a data test string (pass 475).", - "This is a data test string (pass 476).", - "This is a data test string (pass 477).", - "This is a data test string (pass 478).", - "This is a data test string (pass 479).", - "This is a data test string (pass 480).", - "This is a data test string (pass 481).", - "This is a data test string (pass 482).", - "This is a data test string (pass 483).", - "This is a data test string (pass 484).", - "This is a data test string (pass 485).", - "This is a data test string (pass 486).", - "This is a data test string (pass 487).", - "This is a data test string (pass 488).", - "This is a data test string (pass 489).", - "This is a data test string (pass 490).", - "This is a data test string (pass 491).", - "This is a data test string (pass 492).", - "This is a data test string (pass 493).", - "This is a data test string (pass 494).", - "This is a data test string (pass 495).", - "This is a data test string (pass 496).", - "This is a data test string (pass 497).", - "This is a data test string (pass 498).", - "This is a data test string (pass 499).", - "This is a data test string (pass 500).", - "This is a data test string (pass 501).", - "This is a data test string (pass 502).", - "This is a data test string (pass 503).", - "This is a data test string (pass 504).", - "This is a data test string (pass 505).", - "This is a data test string (pass 506).", - "This is a data test string (pass 507).", - "This is a data test string (pass 508).", - "This is a data test string (pass 509).", - "This is a data test string (pass 510).", - "This is a data test string (pass 511).", - "This is a data test string (pass 512).", - "This is a data test string (pass 513).", - "This is a data test string (pass 514).", - "This is a data test string (pass 515).", - "This is a data test string (pass 516).", - "This is a data test string (pass 517).", - "This is a data test string (pass 518).", - "This is a data test string (pass 519).", - "This is a data test string (pass 520).", - "This is a data test string (pass 521).", - "This is a data test string (pass 522).", - "This is a data test string (pass 523).", - "This is a data test string (pass 524).", - "This is a data test string (pass 525).", - "This is a data test string (pass 526).", - "This is a data test string (pass 527).", - "This is a data test string (pass 528).", - "This is a data test string (pass 529).", - "This is a data test string (pass 530).", - "This is a data test string (pass 531).", - "This is a data test string (pass 532).", - "This is a data test string (pass 533).", - "This is a data test string (pass 534).", - "This is a data test string (pass 535).", - "This is a data test string (pass 536).", - "This is a data test string (pass 537).", - "This is a data test string (pass 538).", - "This is a data test string (pass 539).", - "This is a data test string (pass 540).", - "This is a data test string (pass 541).", - "This is a data test string (pass 542).", - "This is a data test string (pass 543).", - "This is a data test string (pass 544).", - "This is a data test string (pass 545).", - "This is a data test string (pass 546).", - "This is a data test string (pass 547).", - "This is a data test string (pass 548).", - "This is a data test string (pass 549).", - "This is a data test string (pass 550).", - "This is a data test string (pass 551).", - "This is a data test string (pass 552).", - "This is a data test string (pass 553).", - "This is a data test string (pass 554).", - "This is a data test string (pass 555).", - "This is a data test string (pass 556).", - "This is a data test string (pass 557).", - "This is a data test string (pass 558).", - "This is a data test string (pass 559).", - "This is a data test string (pass 560).", - "This is a data test string (pass 561).", - "This is a data test string (pass 562).", - "This is a data test string (pass 563).", - "This is a data test string (pass 564).", - "This is a data test string (pass 565).", - "This is a data test string (pass 566).", - "This is a data test string (pass 567).", - "This is a data test string (pass 568).", - "This is a data test string (pass 569).", - "This is a data test string (pass 570).", - "This is a data test string (pass 571).", - "This is a data test string (pass 572).", - "This is a data test string (pass 573).", - "This is a data test string (pass 574).", - "This is a data test string (pass 575).", - "This is a data test string (pass 576).", - "This is a data test string (pass 577).", - "This is a data test string (pass 578).", - "This is a data test string (pass 579).", - "This is a data test string (pass 580).", - "This is a data test string (pass 581).", - "This is a data test string (pass 582).", - "This is a data test string (pass 583).", - "This is a data test string (pass 584).", - "This is a data test string (pass 585).", - "This is a data test string (pass 586).", - "This is a data test string (pass 587).", - "This is a data test string (pass 588).", - "This is a data test string (pass 589).", - "This is a data test string (pass 590).", - "This is a data test string (pass 591).", - "This is a data test string (pass 592).", - "This is a data test string (pass 593).", - "This is a data test string (pass 594).", - "This is a data test string (pass 595).", - "This is a data test string (pass 596).", - "This is a data test string (pass 597).", - "This is a data test string (pass 598).", - "This is a data test string (pass 599).", - "This is a data test string (pass 600).", - "This is a data test string (pass 601).", - "This is a data test string (pass 602).", - "This is a data test string (pass 603).", - "This is a data test string (pass 604).", - "This is a data test string (pass 605).", - "This is a data test string (pass 606).", - "This is a data test string (pass 607).", - "This is a data test string (pass 608).", - "This is a data test string (pass 609).", - "This is a data test string (pass 610).", - "This is a data test string (pass 611).", - "This is a data test string (pass 612).", - "This is a data test string (pass 613).", - "This is a data test string (pass 614).", - "This is a data test string (pass 615).", - "This is a data test string (pass 616).", - "This is a data test string (pass 617).", - "This is a data test string (pass 618).", - "This is a data test string (pass 619).", - "This is a data test string (pass 620).", - "This is a data test string (pass 621).", - "This is a data test string (pass 622).", - "This is a data test string (pass 623).", - "This is a data test string (pass 624).", - "This is a data test string (pass 625).", - "This is a data test string (pass 626).", - "This is a data test string (pass 627).", - "This is a data test string (pass 628).", - "This is a data test string (pass 629).", - "This is a data test string (pass 630).", - "This is a data test string (pass 631).", - "This is a data test string (pass 632).", - "This is a data test string (pass 633).", - "This is a data test string (pass 634).", - "This is a data test string (pass 635).", - "This is a data test string (pass 636).", - "This is a data test string (pass 637).", - "This is a data test string (pass 638).", - "This is a data test string (pass 639).", - "This is a data test string (pass 640).", - "This is a data test string (pass 641).", - "This is a data test string (pass 642).", - "This is a data test string (pass 643).", - "This is a data test string (pass 644).", - "This is a data test string (pass 645).", - "This is a data test string (pass 646).", - "This is a data test string (pass 647).", - "This is a data test string (pass 648).", - "This is a data test string (pass 649).", - "This is a data test string (pass 650).", - "This is a data test string (pass 651).", - "This is a data test string (pass 652).", - "This is a data test string (pass 653).", - "This is a data test string (pass 654).", - "This is a data test string (pass 655).", - "This is a data test string (pass 656).", - "This is a data test string (pass 657).", - "This is a data test string (pass 658).", - "This is a data test string (pass 659).", - "This is a data test string (pass 660).", - "This is a data test string (pass 661).", - "This is a data test string (pass 662).", - "This is a data test string (pass 663).", - "This is a data test string (pass 664).", - "This is a data test string (pass 665).", - "This is a data test string (pass 666).", - "This is a data test string (pass 667).", - "This is a data test string (pass 668).", - "This is a data test string (pass 669).", - "This is a data test string (pass 670).", - "This is a data test string (pass 671).", - "This is a data test string (pass 672).", - "This is a data test string (pass 673).", - "This is a data test string (pass 674).", - "This is a data test string (pass 675).", - "This is a data test string (pass 676).", - "This is a data test string (pass 677).", - "This is a data test string (pass 678).", - "This is a data test string (pass 679).", - "This is a data test string (pass 680).", - "This is a data test string (pass 681).", - "This is a data test string (pass 682).", - "This is a data test string (pass 683).", - "This is a data test string (pass 684).", - "This is a data test string (pass 685).", - "This is a data test string (pass 686).", - "This is a data test string (pass 687).", - "This is a data test string (pass 688).", - "This is a data test string (pass 689).", - "This is a data test string (pass 690).", - "This is a data test string (pass 691).", - "This is a data test string (pass 692).", - "This is a data test string (pass 693).", - "This is a data test string (pass 694).", - "This is a data test string (pass 695).", - "This is a data test string (pass 696).", - "This is a data test string (pass 697).", - "This is a data test string (pass 698).", - "This is a data test string (pass 699).", - "This is a data test string (pass 700).", - "This is a data test string (pass 701).", - "This is a data test string (pass 702).", - "This is a data test string (pass 703).", - "This is a data test string (pass 704).", - "This is a data test string (pass 705).", - "This is a data test string (pass 706).", - "This is a data test string (pass 707).", - "This is a data test string (pass 708).", - "This is a data test string (pass 709).", - "This is a data test string (pass 710).", - "This is a data test string (pass 711).", - "This is a data test string (pass 712).", - "This is a data test string (pass 713).", - "This is a data test string (pass 714).", - "This is a data test string (pass 715).", - "This is a data test string (pass 716).", - "This is a data test string (pass 717).", - "This is a data test string (pass 718).", - "This is a data test string (pass 719).", - "This is a data test string (pass 720).", - "This is a data test string (pass 721).", - "This is a data test string (pass 722).", - "This is a data test string (pass 723).", - "This is a data test string (pass 724).", - "This is a data test string (pass 725).", - "This is a data test string (pass 726).", - "This is a data test string (pass 727).", - "This is a data test string (pass 728).", - "This is a data test string (pass 729).", - "This is a data test string (pass 730).", - "This is a data test string (pass 731).", - "This is a data test string (pass 732).", - "This is a data test string (pass 733).", - "This is a data test string (pass 734).", - "This is a data test string (pass 735).", - "This is a data test string (pass 736).", - "This is a data test string (pass 737).", - "This is a data test string (pass 738).", - "This is a data test string (pass 739).", - "This is a data test string (pass 740).", - "This is a data test string (pass 741).", - "This is a data test string (pass 742).", - "This is a data test string (pass 743).", - "This is a data test string (pass 744).", - "This is a data test string (pass 745).", - "This is a data test string (pass 746).", - "This is a data test string (pass 747).", - "This is a data test string (pass 748).", - "This is a data test string (pass 749).", - "This is a data test string (pass 750).", - "This is a data test string (pass 751).", - "This is a data test string (pass 752).", - "This is a data test string (pass 753).", - "This is a data test string (pass 754).", - "This is a data test string (pass 755).", - "This is a data test string (pass 756).", - "This is a data test string (pass 757).", - "This is a data test string (pass 758).", - "This is a data test string (pass 759).", - "This is a data test string (pass 760).", - "This is a data test string (pass 761).", - "This is a data test string (pass 762).", - "This is a data test string (pass 763).", - "This is a data test string (pass 764).", - "This is a data test string (pass 765).", - "This is a data test string (pass 766).", - "This is a data test string (pass 767).", - "This is a data test string (pass 768).", - "This is a data test string (pass 769).", - "This is a data test string (pass 770).", - "This is a data test string (pass 771).", - "This is a data test string (pass 772).", - "This is a data test string (pass 773).", - "This is a data test string (pass 774).", - "This is a data test string (pass 775).", - "This is a data test string (pass 776).", - "This is a data test string (pass 777).", - "This is a data test string (pass 778).", - "This is a data test string (pass 779).", - "This is a data test string (pass 780).", - "This is a data test string (pass 781).", - "This is a data test string (pass 782).", - "This is a data test string (pass 783).", - "This is a data test string (pass 784).", - "This is a data test string (pass 785).", - "This is a data test string (pass 786).", - "This is a data test string (pass 787).", - "This is a data test string (pass 788).", - "This is a data test string (pass 789).", - "This is a data test string (pass 790).", - "This is a data test string (pass 791).", - "This is a data test string (pass 792).", - "This is a data test string (pass 793).", - "This is a data test string (pass 794).", - "This is a data test string (pass 795).", - "This is a data test string (pass 796).", - "This is a data test string (pass 797).", - "This is a data test string (pass 798).", - "This is a data test string (pass 799).", - "This is a data test string (pass 800).", - "This is a data test string (pass 801).", - "This is a data test string (pass 802).", - "This is a data test string (pass 803).", - "This is a data test string (pass 804).", - "This is a data test string (pass 805).", - "This is a data test string (pass 806).", - "This is a data test string (pass 807).", - "This is a data test string (pass 808).", - "This is a data test string (pass 809).", - "This is a data test string (pass 810).", - "This is a data test string (pass 811).", - "This is a data test string (pass 812).", - "This is a data test string (pass 813).", - "This is a data test string (pass 814).", - "This is a data test string (pass 815).", - "This is a data test string (pass 816).", - "This is a data test string (pass 817).", - "This is a data test string (pass 818).", - "This is a data test string (pass 819).", - "This is a data test string (pass 820).", - "This is a data test string (pass 821).", - "This is a data test string (pass 822).", - "This is a data test string (pass 823).", - "This is a data test string (pass 824).", - "This is a data test string (pass 825).", - "This is a data test string (pass 826).", - "This is a data test string (pass 827).", - "This is a data test string (pass 828).", - "This is a data test string (pass 829).", - "This is a data test string (pass 830).", - "This is a data test string (pass 831).", - "This is a data test string (pass 832).", - "This is a data test string (pass 833).", - "This is a data test string (pass 834).", - "This is a data test string (pass 835).", - "This is a data test string (pass 836).", - "This is a data test string (pass 837).", - "This is a data test string (pass 838).", - "This is a data test string (pass 839).", - "This is a data test string (pass 840).", - "This is a data test string (pass 841).", - "This is a data test string (pass 842).", - "This is a data test string (pass 843).", - "This is a data test string (pass 844).", - "This is a data test string (pass 845).", - "This is a data test string (pass 846).", - "This is a data test string (pass 847).", - "This is a data test string (pass 848).", - "This is a data test string (pass 849).", - "This is a data test string (pass 850).", - "This is a data test string (pass 851).", - "This is a data test string (pass 852).", - "This is a data test string (pass 853).", - "This is a data test string (pass 854).", - "This is a data test string (pass 855).", - "This is a data test string (pass 856).", - "This is a data test string (pass 857).", - "This is a data test string (pass 858).", - "This is a data test string (pass 859).", - "This is a data test string (pass 860).", - "This is a data test string (pass 861).", - "This is a data test string (pass 862).", - "This is a data test string (pass 863).", - "This is a data test string (pass 864).", - "This is a data test string (pass 865).", - "This is a data test string (pass 866).", - "This is a data test string (pass 867).", - "This is a data test string (pass 868).", - "This is a data test string (pass 869).", - "This is a data test string (pass 870).", - "This is a data test string (pass 871).", - "This is a data test string (pass 872).", - "This is a data test string (pass 873).", - "This is a data test string (pass 874).", - "This is a data test string (pass 875).", - "This is a data test string (pass 876).", - "This is a data test string (pass 877).", - "This is a data test string (pass 878).", - "This is a data test string (pass 879).", - "This is a data test string (pass 880).", - "This is a data test string (pass 881).", - "This is a data test string (pass 882).", - "This is a data test string (pass 883).", - "This is a data test string (pass 884).", - "This is a data test string (pass 885).", - "This is a data test string (pass 886).", - "This is a data test string (pass 887).", - "This is a data test string (pass 888).", - "This is a data test string (pass 889).", - "This is a data test string (pass 890).", - "This is a data test string (pass 891).", - "This is a data test string (pass 892).", - "This is a data test string (pass 893).", - "This is a data test string (pass 894).", - "This is a data test string (pass 895).", - "This is a data test string (pass 896).", - "This is a data test string (pass 897).", - "This is a data test string (pass 898).", - "This is a data test string (pass 899).", - "This is a data test string (pass 900).", - "This is a data test string (pass 901).", - "This is a data test string (pass 902).", - "This is a data test string (pass 903).", - "This is a data test string (pass 904).", - "This is a data test string (pass 905).", - "This is a data test string (pass 906).", - "This is a data test string (pass 907).", - "This is a data test string (pass 908).", - "This is a data test string (pass 909).", - "This is a data test string (pass 910).", - "This is a data test string (pass 911).", - "This is a data test string (pass 912).", - "This is a data test string (pass 913).", - "This is a data test string (pass 914).", - "This is a data test string (pass 915).", - "This is a data test string (pass 916).", - "This is a data test string (pass 917).", - "This is a data test string (pass 918).", - "This is a data test string (pass 919).", - "This is a data test string (pass 920).", - "This is a data test string (pass 921).", - "This is a data test string (pass 922).", - "This is a data test string (pass 923).", - "This is a data test string (pass 924).", - "This is a data test string (pass 925).", - "This is a data test string (pass 926).", - "This is a data test string (pass 927).", - "This is a data test string (pass 928).", - "This is a data test string (pass 929).", - "This is a data test string (pass 930).", - "This is a data test string (pass 931).", - "This is a data test string (pass 932).", - "This is a data test string (pass 933).", - "This is a data test string (pass 934).", - "This is a data test string (pass 935).", - "This is a data test string (pass 936).", - "This is a data test string (pass 937).", - "This is a data test string (pass 938).", - "This is a data test string (pass 939).", - "This is a data test string (pass 940).", - "This is a data test string (pass 941).", - "This is a data test string (pass 942).", - "This is a data test string (pass 943).", - "This is a data test string (pass 944).", - "This is a data test string (pass 945).", - "This is a data test string (pass 946).", - "This is a data test string (pass 947).", - "This is a data test string (pass 948).", - "This is a data test string (pass 949).", - "This is a data test string (pass 950).", - "This is a data test string (pass 951).", - "This is a data test string (pass 952).", - "This is a data test string (pass 953).", - "This is a data test string (pass 954).", - "This is a data test string (pass 955).", - "This is a data test string (pass 956).", - "This is a data test string (pass 957).", - "This is a data test string (pass 958).", - "This is a data test string (pass 959).", - "This is a data test string (pass 960).", - "This is a data test string (pass 961).", - "This is a data test string (pass 962).", - "This is a data test string (pass 963).", - "This is a data test string (pass 964).", - "This is a data test string (pass 965).", - "This is a data test string (pass 966).", - "This is a data test string (pass 967).", - "This is a data test string (pass 968).", - "This is a data test string (pass 969).", - "This is a data test string (pass 970).", - "This is a data test string (pass 971).", - "This is a data test string (pass 972).", - "This is a data test string (pass 973).", - "This is a data test string (pass 974).", - "This is a data test string (pass 975).", - "This is a data test string (pass 976).", - "This is a data test string (pass 977).", - "This is a data test string (pass 978).", - "This is a data test string (pass 979).", - "This is a data test string (pass 980).", - "This is a data test string (pass 981).", - "This is a data test string (pass 982).", - "This is a data test string (pass 983).", - "This is a data test string (pass 984).", - "This is a data test string (pass 985).", - "This is a data test string (pass 986).", - "This is a data test string (pass 987).", - "This is a data test string (pass 988).", - "This is a data test string (pass 989).", - "This is a data test string (pass 990).", - "This is a data test string (pass 991).", - "This is a data test string (pass 992).", - "This is a data test string (pass 993).", - "This is a data test string (pass 994).", - "This is a data test string (pass 995).", - "This is a data test string (pass 996).", - "This is a data test string (pass 997).", - "This is a data test string (pass 998).", - "This is a data test string (pass 999).", - "This is a data test string (pass 1000).", - "This is a data test string (pass 1001).", - "This is a data test string (pass 1002).", - "This is a data test string (pass 1003).", - "This is a data test string (pass 1004).", - "This is a data test string (pass 1005).", - "This is a data test string (pass 1006).", - "This is a data test string (pass 1007).", - "This is a data test string (pass 1008).", - "This is a data test string (pass 1009).", - "This is a data test string (pass 1010).", - "This is a data test string (pass 1011).", - "This is a data test string (pass 1012).", - "This is a data test string (pass 1013).", - "This is a data test string (pass 1014).", - "This is a data test string (pass 1015).", - "This is a data test string (pass 1016).", - "This is a data test string (pass 1017).", - "This is a data test string (pass 1018).", - "This is a data test string (pass 1019).", - "This is a data test string (pass 1020).", - "This is a data test string (pass 1021).", - "This is a data test string (pass 1022).", - "This is a data test string (pass 1023).", - "This is a data test string (pass 1024).", - "This is a data test string (pass 1025).", - "This is a data test string (pass 1026).", - "This is a data test string (pass 1027).", - "This is a data test string (pass 1028).", - "This is a data test string (pass 1029).", - "This is a data test string (pass 1030).", - "This is a data test string (pass 1031).", - "This is a data test string (pass 1032).", - "This is a data test string (pass 1033).", - "This is a data test string (pass 1034).", - "This is a data test string (pass 1035).", - "This is a data test string (pass 1036).", - "This is a data test string (pass 1037).", - "This is a data test string (pass 1038).", - "This is a data test string (pass 1039).", - "This is a data test string (pass 1040).", - "This is a data test string (pass 1041).", - "This is a data test string (pass 1042).", - "This is a data test string (pass 1043).", - "This is a data test string (pass 1044).", - "This is a data test string (pass 1045).", - "This is a data test string (pass 1046).", - "This is a data test string (pass 1047).", - "This is a data test string (pass 1048).", - "This is a data test string (pass 1049).", - "This is a data test string (pass 1050).", - "This is a data test string (pass 1051).", - "This is a data test string (pass 1052).", - "This is a data test string (pass 1053).", - "This is a data test string (pass 1054).", - "This is a data test string (pass 1055).", - "This is a data test string (pass 1056).", - "This is a data test string (pass 1057).", - "This is a data test string (pass 1058).", - "This is a data test string (pass 1059).", - "This is a data test string (pass 1060).", - "This is a data test string (pass 1061).", - "This is a data test string (pass 1062).", - "This is a data test string (pass 1063).", - "This is a data test string (pass 1064).", - "This is a data test string (pass 1065).", - "This is a data test string (pass 1066).", - "This is a data test string (pass 1067).", - "This is a data test string (pass 1068).", - "This is a data test string (pass 1069).", - "This is a data test string (pass 1070).", - "This is a data test string (pass 1071).", - "This is a data test string (pass 1072).", - "This is a data test string (pass 1073).", - "This is a data test string (pass 1074).", - "This is a data test string (pass 1075).", - "This is a data test string (pass 1076).", - "This is a data test string (pass 1077).", - "This is a data test string (pass 1078).", - "This is a data test string (pass 1079).", - "This is a data test string (pass 1080).", - "This is a data test string (pass 1081).", - "This is a data test string (pass 1082).", - "This is a data test string (pass 1083).", - "This is a data test string (pass 1084).", - "This is a data test string (pass 1085).", - "This is a data test string (pass 1086).", - "This is a data test string (pass 1087).", - "This is a data test string (pass 1088).", - "This is a data test string (pass 1089).", - "This is a data test string (pass 1090).", - "This is a data test string (pass 1091).", - "This is a data test string (pass 1092).", - "This is a data test string (pass 1093).", - "This is a data test string (pass 1094).", - "This is a data test string (pass 1095).", - "This is a data test string (pass 1096).", - "This is a data test string (pass 1097).", - "This is a data test string (pass 1098).", - "This is a data test string (pass 1099).", - "This is a data test string (pass 1100).", - "This is a data test string (pass 1101).", - "This is a data test string (pass 1102).", - "This is a data test string (pass 1103).", - "This is a data test string (pass 1104).", - "This is a data test string (pass 1105).", - "This is a data test string (pass 1106).", - "This is a data test string (pass 1107).", - "This is a data test string (pass 1108).", - "This is a data test string (pass 1109).", - "This is a data test string (pass 1110).", - "This is a data test string (pass 1111).", - "This is a data test string (pass 1112).", - "This is a data test string (pass 1113).", - "This is a data test string (pass 1114).", - "This is a data test string (pass 1115).", - "This is a data test string (pass 1116).", - "This is a data test string (pass 1117).", - "This is a data test string (pass 1118).", - "This is a data test string (pass 1119)." ; - - u = - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", - "http://www.dods.org" ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.1.dmp deleted file mode 100644 index 81702b72cf8..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.1.dmp +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test { -types: - compound types_t { - int i32 ; - }; // types_t -variables: - types_t types ; -data: - - types = {1} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.dmp deleted file mode 100644 index c5d9c9c395f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.04.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf test { -types: - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_t -variables: - types_t types ; -data: - - types = - {0, 1, 0, 0, 0, 0, 1000, "This is a data test string (pass 0).", "http://www.dods.org"} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.1.dmp deleted file mode 100644 index 7fdb8dfba73..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.1.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound floats_t { - float f32 ; - }; // floats_t - compound types_t { - floats_t floats ; - }; // types_t -variables: - types_t types ; -data: - - types = {{0}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.dmp deleted file mode 100644 index 5449e8e0390..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.05.dmp +++ /dev/null @@ -1,29 +0,0 @@ -netcdf test { -types: - compound integers_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - }; // integers_t - compound floats_t { - float f32 ; - double f64 ; - }; // floats_t - compound strings_t { - string s ; - string u ; - }; // strings_t - compound types_t { - integers_t integers ; - floats_t floats ; - strings_t strings ; - }; // types_t -variables: - types_t types ; -data: - - types = - {{0, 1, 0, 0, 0}, {0, 1000}, {"This is a data test string (pass 0).", "http://www.dods.org"}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06.1.dmp deleted file mode 100644 index ba5ac602310..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06.1.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test { -types: - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t -variables: - ThreeD_t ThreeD ; -data: - - ThreeD = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06a.dmp deleted file mode 100644 index a5177b3f85f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.06a.dmp +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test { -types: - compound OneD_t { - double amp(10) ; - double x(10) ; - }; // OneD_t -variables: - OneD_t OneD ; -data: - - OneD = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.1.dmp deleted file mode 100644 index f7ec167bb89..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.1.dmp +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test { -types: - int(*) person_t ; -variables: - person_t person ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; - :b.Description = "A test byte" ; - :b.units = "unknown" ; - :i32.Description = "A 32 bit test server int" ; - :i32.units = "unknown" ; -data: - - person = {1, 2, 3, 5, 8} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.3.dmp deleted file mode 100644 index 5511e576daa..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.3.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound person_record_t { - string name ; - int age ; - }; // person_record_t - person_record_t(*) person_t ; -variables: - person_t person ; -data: - - person = - {{"This is a data test string (pass 0).", 1}, {"This is a data test string (pass 1).", 2}, {"This is a data test string (pass 2).", 3}, {"This is a data test string (pass 3).", 5}, {"This is a data test string (pass 4).", 8}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.4.dmp deleted file mode 100644 index 6b14958d0c5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.4.dmp +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test { -types: - float(*) types_t ; -variables: - types_t types ; -data: - - types = {0, 0.9999833, 1.999867, 2.99955, 3.998933} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.dmp deleted file mode 100644 index 97fe85f4e10..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07.dmp +++ /dev/null @@ -1,36 +0,0 @@ -netcdf test { -types: - compound person_record_t { - string name ; - int age ; - }; // person_record_t - person_record_t(*) person_t ; - compound types_record_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_record_t - types_record_t(*) types_t ; -variables: - person_t person ; - types_t types ; - -// global attributes: - :Facility.PrincipleInvestigator = "Mark Abbott\n", - "Ph.D" ; - :Facility.DataCenter = "COAS Environmental Computer Facility" ; - :Facility.DrifterType = "MetOcean WOCE/OCM" ; -data: - - person = - {{"This is a data test string (pass 0).", 1}, {"This is a data test string (pass 1).", 2}, {"This is a data test string (pass 2).", 3}, {"This is a data test string (pass 3).", 5}, {"This is a data test string (pass 4).", 8}} ; - - types = - {{0, 1, 0, 0, 0, 0, 1000, "This is a data test string (pass 0).", "http://www.dods.org"}, {1, 2, 2, 16, 65520, 0.9999833, 999.950000416665, "This is a data test string (pass 1).", "http://www.dods.org"}, {2, 3, 6, 32, 65504, 1.999867, 999.800006666578, "This is a data test string (pass 2).", "http://www.dods.org"}, {3, 5, 12, 48, 65488, 2.99955, 999.550033748988, "This is a data test string (pass 3).", "http://www.dods.org"}, {4, 8, 20, 64, 65472, 3.998933, 999.200106660978, "This is a data test string (pass 4).", "http://www.dods.org"}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07a.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07a.dmp deleted file mode 100644 index ccfd6c96337..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.07a.dmp +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test { -types: - compound person1_t { - string name ; - int age ; - }; // person1_t - compound person2_t { - string name ; - int age ; - }; // person2_t -variables: - person1_t person1 ; - person2_t person2 ; -data: - - person1 = {"This is a data test string (pass 0).", 1} ; - - person2 = {"This is a data test string (pass 1).", 2} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.21.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.21.dmp deleted file mode 100644 index ffa508d0e05..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.21.dmp +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test { -types: - compound exp_t { - int j ; - int i ; - short g(3, 3, 3) ; - short f(2, 2) ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, 2, {0, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, 6144, 6400, 6656}, {0, 256, 512, 768}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.22.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.22.dmp deleted file mode 100644 index 87e35fc4872..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.22.dmp +++ /dev/null @@ -1,25 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - data_t data ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.23.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.23.dmp deleted file mode 100644 index 19740d67ab3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.23.dmp +++ /dev/null @@ -1,36 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound profile_t { - double fluor(10) ; - double depth(10) ; - }; // profile_t - compound ComplexSequence_record_t { - data_t data ; - float lat ; - float lng ; - profile_t profile ; - }; // ComplexSequence_record_t - ComplexSequence_record_t(*) ComplexSequence_t ; - compound ThreeD_t { - double amp(10, 10, 10) ; - double x(10) ; - double y(10) ; - double z(10) ; - }; // ThreeD_t - compound exp_t { - int j ; - int i(3) ; - ComplexSequence_t ComplexSequence ; - ThreeD_t ThreeD ; - }; // exp_t -variables: - exp_t exp ; -data: - - exp = - {1, {0, 2048, 4096}, {{{2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 0, 0.9999833, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{3, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 1.999867, 2.99955, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 3.998933, 4.997917, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{8, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 5.996401, 6.994285, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{13, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 7.991469, 8.987855, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, 0.983843692788121, 0.98200423511727, 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, 0.968912421710645, 0.966389978134513, 0.963770896365891, 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, 0.942754665528346, 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, 0.924909059857313, 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, 0.896052497525525, 0.891568288195329, 0.886994922779284, 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, 0.857708681363824, 0.852524522059506, 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, 0.783821665880849, 0.777572718750928, 0.771246014997107, 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, 0.738468558729588, 0.731688868873821, 0.724836010740905, 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, 0.667462825841308, 0.659983145884982, 0.652437468164052, 0.644826547240001, 0.63715114419858, 0.629412026573697, 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, 0.589788025031098, 0.581683089463883, 0.573519986072457, 0.565299531160354, 0.557022546766217, 0.548689860581588, 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, 0.506220257232778, 0.497571047891727, 0.488872081860527, 0.480124229028534, 0.47132836417374, 0.462485366875301, 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, 0.417594503958358, 0.408487440884157, 0.399339529406273, 0.39015168430823, 0.380924824366882, 0.371659872260533, 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, 0.324796284438776, 0.315322362395269, 0.305816908378289, 0.296280872925319, 0.286715209631956, 0.277120875056558, 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, 0.228752807808459, 0.219006687093041, 0.209238665891419, 0.199449720997573, 0.189640831297834, 0.179812977673, 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, 0.130423708738146, 0.120502769367367, 0.11056977982007, 0.100625733386932, 0.0906716244643097, 0.0807084484548006, 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, 0.040785011241591, 0.0307914590824661, 0.0207948278030924, 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, -0.0192024929016926, -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, -0.089085416936459, -0.099041036598728, -0.108986752239871, -0.118921569296612, -0.128844494295525, -0.138754534952378, -0.148650700271364, -0.158532000644198, -0.168397447949077, -0.178246055649492, -0.18807683889288, -0.197888814609109, -0.207681001608784, -0.217452420681365, -0.227202094693087, -0.236929048684675, -0.246632309968834, -0.256310908227523, -0.26596387560898, -0.275590246824513, -0.285189059245021, -0.294759352997261, -0.304300171059833, -0.313810559358882, -0.323289566863503, -0.332736245680845, -0.342149651150898, -0.35152884194096, -0.360872880139767, -0.370180831351287, -0.379451764788155, -0.388684753364752, -0.397878873789916, -0.407033206659266, -0.416146836547142, -0.425218852098152, -0.4342483461183, -0.443234415665709, -0.452176162140912, -0.461072691376713, -0.469923113727602, -0.47872654415872, -0.487482102334359, -0.496188912705999, -0.504846104599858, -0.513452812303959, -0.522008175154707, -0.530511337622945, -0.538961449399512, -0.547357665480271, -0.555699146250613, -0.56398505756941, -0.572214570852437, -0.580386863155222, -0.588501117255346, -0.59655652173416, -0.60455227105793, -0.612487565658385, -0.62036161201268, -0.628173622722739, -0.635922816594002, -0.643608418713541, -0.651229660527546, -0.658785779918188, -0.666276021279824, -0.673699635594561, -0.681055880507152, -0.688344020399238, -0.695563326462902, -0.702713076773554, -0.70979255636212, -0.716801057286543, -0.723737878702569, -0.730602326933837, -0.737393715541245, -0.744111365391593, -0.750754604725491, -0.757322769224544, -0.763815202077774, -0.770231254047307, -0.776570283533293, -0.782831656638065, -0.789014747229531, -0.795118937003784, -0.801143615546934, -0.807088180396146, -0.81295203709989, -0.818734599277382, -0.824435288677222, -0.830053535235222, -0.835588777131408, -0.841040460846201, -0.846408041215776, -0.851690981486566, -0.856888753368947, -0.862000837090063, -0.867026721445802, -0.871965903851917, -0.876817890394281, -0.881582195878286, -0.886258343877352, -0.890845866780576, -0.895344305839492, -0.899753211213941, -0.904072142017061, -0.90830066635937, -0.912438361391958, -0.916484813348769, -0.920439617587981, -0.924302378632464, -0.928072710209333, -0.931750235288572, -0.935334586120739, -0.938825404273736, -0.942222340668658, -0.945525055614696, -0.948733218843107, -0.951846509540242, -0.954864616379626, -0.95778723755309, -0.960614080800952, -0.963344863441243, -0.965979312397975, -0.968517164228447, -0.970958165149591, -0.973302071063349, -0.975548647581083, -0.977697670047013, -0.979748923560684, -0.981702202998454, -0.983557313034006, -0.985314068157884, -0.986972292696038, -0.988531820827396, -0.989992496600445, -0.991354173948826, -0.992616716705937, -0.993779998618556, -0.994843903359459, -0.995808324539061, -0.996673165716047, -0.997438340407019, -0.998103772095146, -0.998669394237814, -0.999135150273279, -0.999500993626328, -0.999766887712928, -0.999932805943894, -0.99999873172754, -0.999964658471342, -0.999830589582598, -0.999596538468086, -0.999262528532721, -0.998828593177219, -0.998294775794753, -0.997661129766618, -0.996927718456887, -0.996094615206081, -0.99516190332383, -0.994129676080546, -0.992998036698093, -0.991767098339465, -0.990436984097473, -0.989007826982433, -0.987479769908865, -0.985852965681203, -0.984127576978514, -0.982303776338232, -0.980381746138899, -0.978361678581934, -0.97624377567241, -0.974028249198852, -0.971715320712062, -0.969305221502961, -0.966798192579461, -0.964194484642366, -0.961494358060299, -0.958698082843669, -0.955805938617666, -0.952818214594305, -0.949735209543496, -0.946557231763177, -0.943284599048476, -0.939917638659938, -0.936456687290796, -0.932902091033304, -0.929254205344123, -0.925513395008784, -0.921680034105203, -0.917754505966276, -0.913737203141545, -0.909628527357945, -0.90542888947963, -0.901138709466889, -0.896758416334147, -0.892288448107068, -0.88772925177875, -0.883081283265026, -0.878345007358874, -0.873520897683938, -0.868609436647165, -0.863611115390566, -0.858526433742102, -0.8533559001657, -0.848100031710408, -0.842759353958694, -0.83733440097388, -0.831825715246746, -0.826233847641272, -0.820559357339561, -0.814802811785913, -0.808964786630086, -0.803045865669731, -0.797046640792012, -0.790967711914417, -0.784809686924768, -0.778573181620433, -0.772258819646744, -0.765867232434637, -0.759399059137508, -0.752854946567295, -0.746235549129803, -0.739541528759258, -0.73277355485212, -0.72593230420014, -0.719018460922681, -0.71203271639831, -0.704975769195658, -0.697848325003564, -0.690651096560507, -0.683384803583336, -0.676050172695292, -0.668647937353351, -0.66117883777488, -0.653643620863612, -0.646043040134959, -0.63837785564066, -0.630648833892775, -0.622856747787041, -0.615002376525574, -0.607086505538955, -0.599109926407685, -0.591073436783031, -0.582977840307259, -0.574823946533269, -0.566612570843644, -0.55834453436911, -0.550020663906425, -0.541641791835699, -0.533208756037154, -0.524722399807346, -0.516183571774825, -0.507593125815277, -0.49895192096614, -0.490260821340699, -0.481520696041674, -0.47273241907431, -0.46389686925898, -0.455014930143305, -0.446087489913793, -0.437115441307028, -0.428099681520394, -0.419041112122356, -0.409940638962306, -0.400799172079975, -0.391617625614436, -0.38239691771268, -0.373137970437818, -0.363841709676858, -0.354509065048132, -0.345140969808323, -0.335738360759151, -0.326302178153684, -0.316833365602319, -0.307332869978419, -0.297801641323633, -0.288240632752882, -0.278650800359055, -0.269033103117399, -0.259388502789626, -0.249717963827731, -0.24002245327755, -0.230302940682059, -0.220560397984419, -0.21079579943078, -0.20101012147286, -0.191204342670302, -0.181379443592811, -0.171536406722112, -0.161676216353687, -0.151799858498356, -0.141908320783673, -0.13200259235517, -0.122083663777433, -0.112152526935055, -0.102210174933442, -0.0922576019995117, -0.0822958033822624, -0.0723257752532545, -0.0623485146069917, -0.0523650191612259, -0.0423762872571815, -0.0323833177597247, -0.0223871099574771, -0.0123886634628906, -0.00238897811228154, 0.0076109461341479, 0.0176101092923073, 0.0276075114542115, 0.0376021528879766, 0.0475930341377878, 0.057579156123846, 0.0675595202422752, 0.0775331284649787, 0.0874989834394464, 0.0974560885884857, 0.10740344820988, 0.117340067575955, 0.127264953033056, 0.137177112100907, 0.147075553571863, 0.156959287610023, 0.166827325850222, 0.176678681496857, 0.186512369422576, 0.196327406266778, 0.206122810533958, 0.215897602691854, 0.225650805269396, 0.235381442954451, 0.245088542691362, 0.254771133778243, 0.264428247964056, 0.274058919545427, 0.283662185463226, 0.293237085398863, 0.302782661870324, 0.312297960327916, 0.321782029249722, 0.331233920236754, 0.340652688107789, 0.350037390993891, 0.35938709043259, 0.368700851461733, 0.37797774271298, 0.387216836504937, 0.396417208935922, 0.405577939976361, 0.414698113560782, 0.423776817679428, 0.432813144469452, 0.441806190305705, 0.450755055891099, 0.459658846346532, 0.468516671300377, 0.477327644977522, 0.48609088628794, 0.494805518914805, 0.503470671402114, 0.512085477241841, 0.520649074960579, 0.529160608205695, 0.537619225830956, 0.546024081981648, 0.554374336179161, 0.562669153405032, 0.570907704184454, 0.57908916466921, 0.587212716720073, 0.595277547988606, 0.603282851998404, 0.611227828225735, 0.619111682179599, 0.626933625481169, 0.634692875942635, 0.642388657645414, 0.650020201017752, 0.657586742911669, 0.665087526679283, 0.672521802248466, 0.679888826197857, 0.687187861831201, 0.694418179251016, 0.701579055431586, 0.70866977429126, 0.715689626764061, 0.722637910870592, 0.729513931788232, 0.736317001920619, 0.74304644096641, 0.749701575987307, 0.756281741475356, 0.762786279419489, 0.769214539371333, 0.77556587851025, 0.781839661707619, 0.788035261590348, 0.794152058603611, 0.800189441072806, 0.806146805264716, 0.812023555447886, 0.817819103952194, 0.823532871227622, 0.829164285902202, 0.83471278483916, 0.840177813193225, 0.845558824466117, 0.850855280561193, 0.856066651837255, 0.861192417161521, 0.866232063961728, 0.871185088277397, 0.876050994810224, 0.880829296973609, 0.885519516941319, 0.890121185695265, 0.894633843072407, 0.899057037810768, 0.903390327594559, 0.907633279098413, 0.911785468030717, 0.915846479176035, 0.919815906436639, 0.92369335287311, 0.927478430744036, 0.931170761544783, 0.934769976045349, 0.938275714327283, 0.941687625819678, 0.945005369334228, 0.948228613099346, 0.951357034793342, 0.954390321576654, 0.957328170123131, 0.960170286650366, 0.962916386949075, 0.965566196411518, 0.968119450058955, 0.970575892568149, 0.972935278296897, 0.975197371308593, 0.977361945395819, 0.979428784102971, 0.981397680747901, 0.983268438442584, 0.985040870112812, 0.986714798516892, 0.98829005626338, 0.989766485827815, 0.991143939568469, 0.992422279741117, 0.993601378512806, 0.994681117974643, 0.99566139015358, 0.996542097023217, 0.997323150513601, 0.998004472520033, 0.998585994910881, 0.99906765953439, 0.999449418224499, 0.999731232805658, 0.999913075096642, 0.999994926913375, 0.999976780070743, 0.999858636383415, 0.999640507665662, 0.999322415730172, 0.998904392385876, 0.998386479434759, 0.997768728667684, 0.997051201859214, 0.996233970761431, 0.995317117096764, 0.994300732549815, 0.993184918758193, 0.991969787302346, 0.990655459694407, 0.989242067366043, 0.987729751655308, 0.986118663792513, 0.984408964885101, 0.982600825901538, 0.980694427654217, 0.978689960781373, 0.976587625728023, 0.974387632725921, 0.972090201772533, 0.96969556260904, 0.967203954697364, 0.964615627196218, 0.961930838936196, 0.959149858393887, 0.956272963665028, 0.953300442436693, 0.95023259195853, 0.947069719013028, 0.943812139884847, 0.940460180329185, 0.937014175539204, 0.933474470112512, 0.929841418016701, 0.926115382553955, 0.922296736324713, 0.918385861190416, 0.914383148235319, 0.910288997727383, 0.906103819078245, 0.901828030802283, 0.897462060474762, 0.893006344689077, 0.888461329013091, 0.883827467944587, 0.879105224865808, 0.874295071997128, 0.869397490349825, 0.864412969677983, 0.859342008429514, 0.854185113696319, 0.848942801163572, 0.84361559505816, 0.838204028096251, 0.832708641430035, 0.827129984593597, 0.821468615447972, 0.815725100125357, 0.809900012972498, 0.803993936493257, 0.798007461290359, 0.791941186006336, 0.785795717263661, 0.779571669604088, 0.773269665427194, 0.766890334928147, 0.760434316034681, 0.753902254343305, 0.747294803054744, 0.740612622908621, 0.733856382117381, 0.727026756299476, 0.720124428411794, 0.713150088681373, 0.706104434536373, 0.698988170536338, 0.691802008301737, 0.684546666442807, 0.677222870487685, 0.669831352809865, 0.662372852554955, 0.654848115566766, 0.647257894312724, 0.639602947808631, 0.631884041542758, 0.624101947399299, 0.616257443581182, 0.608351314532255, 0.600384350858831, 0.592357349250641, 0.584271112401154, 0.576126448927319, 0.567924173288695, 0.55966510570601, 0.551350072079141, 0.542979903904521, 0.534555438191992, 0.526077517381105, 0.517546989256877, 0.50896470686501, 0.500331528426593, 0.491648317252275, 0.482915941655938, 0.474135274867862, 0.465307194947413, 0.456432584695223, 0.447512331564922, 0.43854732757439, 0.429538469216557, 0.420486657369749, 0.411392797207609, 0.402257798108573, 0.393082573564941, 0.38386804109152, 0.374615122133879, 0.365324741976202, 0.355997829648764, 0.346635317835026, 0.337238142778366, 0.327807244188458, 0.318343565147303, 0.30884805201492, 0.299321654334707, 0.289765324738495, 0.280180018851278, 0.27056669519566, 0.260926315095994, 0.251259842582256, 0.241568244293641, 0.231852489381904, 0.222113549414439, 0.212352398277126, 0.202570012076944, 0.192767369044364, 0.182945449435517, 0.173105235434182, 0.163247711053556, 0.153373862037864, 0.14348467576378, 0.13358114114169, 0.123664248516802, 0.113734989570117, 0.103794357219253, 0.0938433455191623, 0.0838829495627223, 0.0739141653812273, 0.06393798984479, 0.0539554205626498, 0.0439674557834159, 0.0339750942952423, 0.0239793353259525, 0.0139811784431128, 0.00398162345407974, -0.0060183296939816, -0.0160176810140879, -0.0260154305794408, -0.0360105786234153, -0.0460021256395369, -0.0559890724814288, -0.0659704204627299, -0.0759451714569599, -0.0859123279973325, -0.0958708933764978, -0.105819871746218, -0.115758268216946, -0.125685088957318, -0.135599341293531, -0.145500033808614, -0.155386176441565, -0.16525678058636, -0.17511085919081, -0.184947426855267, -0.194765499931161, -0.204564096619365, -0.214342237068377, -0.2240989434723, -0.233833240168624, -0.243544153735791, -0.253230713090538, -0.262891949585, -0.272526897103582, -0.282134592159557, -0.291714073991427, -0.301264384658992, -0.310784569139144, -0.320273675421368, -0.329730754602944, -0.339154860983835, -0.348545052161256, -0.357900389123914, -0.367219936345908, -0.376502761880283, -0.385747937452222, -0.394954538551871, -0.404121644526792, -0.413248338674028, -0.422333708331768, -0.431376844970621, -0.440376844284454, -0.449332806280839, -0.458243835371038, -0.467109040459569, -0.47592753503331, -0.484698437250152, -0.493420870027184, -0.502093961128397, -0.510716843251906, -0.519288654116686, -0.527808536548793, -0.536275638567084, -0.544689113468413, -0.553048119912302, -0.561351822005071, -0.569599389383433, -0.57778999729752, -0.585922826693367, -0.593997064294812, -0.602011902684824, -0.609966540386242, -0.617860181941925, -0.625692037994295, -0.633461325364275, -0.641167267129602, -0.648809092702519, -0.656386037906838, -0.663897345054353, -0.671342263020609, -0.678720047320012, -0.686029960180282, -0.693271270616224, -0.700443254502829, -0.707545194647683, -0.714576380862692, -0.721536110035093, -0.728423686197768, -0.735238420598841, -0.741979631770551, -0.748646645597399, -0.755238795383558, -0.76175542191954, -0.768195873548125, -0.774559506229517, -0.780845683605749, -0.787053777064324, -0.793183165801068, -0.799233236882215, -0.8052033853057, -0.811093014061656, -0.816901534192113, -0.8226283648499, -0.828272933356724, -0.833834675260437, -0.839313034391484, -0.844707462918517, -0.850017421403178, -0.855242378854046, -0.860381812779727, -0.865435209241112, -0.870402062902767, -0.875281877083464, -0.880074163805853, -0.884778443845253, -0.889394246777581, -0.893921111026392, -0.898358583909032, -0.90270622168191, -0.906963589584872, -0.911130261884677, -0.915205821917566, -0.919189862130932, -0.923081984124074, -0.926881798688036, -0.930588925844528, -0.934202994883924, -0.937723644402332, -0.941150522337732, -0.944483286005189, -0.947721602131112, -0.950865146886587, -0.953913605919758, -0.956866674387264, -0.959724056984716, -0.962485467976237, -0.965150631223029, -0.967719280210989, -0.970191158077357, -0.972566017636408, -0.974843621404164, -0.977023741622146, -0.97910616028015, -0.981090669138045, -0.982977069746599, -0.984765173467324, -0.986454801491336, -0.988045784857242, -0.989537964468031, -0.990931191106986, -0.992225325452603, -0.993420238092527, -0.994515809536489, -0.995511930228257, -0.996408500556594, -0.997205430865212, -0.997902641461745, -0.998500062625715, -0.998997634615504, -0.999395307674325, -0.999693042035206, -0.999890807924959, -0.999988585567158, -0.999986365184122, -0.999884146997886, -0.999681941230185, -0.999379768101426, -0.998977657828671, -0.998475650622611, -0.99787379668355, -0.997172156196378, -0.996370799324562, -0.995469806203119, -0.994469266930611, -0.993369281560131, -0.992169960089301, -0.990871422449267, -0.989473798492712, -0.987977227980866, -0.986381860569534, -0.984687855794127, -0.982895383053711, -0.981004621594066, -0.979015760489763, -0.976928998625255, -0.974744544674989, -0.97246261708254, -0.970083444038766, -0.967607263458988, -0.965034322959201, -0.96236487983131, -0.959599201017404, -0.95673756308306, -0.953780252189686, -0.950727564065908, -0.947579803977993, -0.944337286699328, -0.941000336478938, -0.937569287009064, -0.934044481391795, -0.930426272104753, -0.926715020965855, -0.922911099097119, -0.919014886887564, -0.915026773955164, -0.910947159107888, -0.906776450303821, -0.902515064610368, -0.898163428162546, -0.893721976120377, -0.889191152625361, -0.884571410756073, -0.879863212482849, -0.875067028621594, -0.870183338786697, -0.865212631343072, -0.86015540335732, -0.855012160548026, -0.849783417235186, -0.844469696288772}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.31.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.31.dmp deleted file mode 100644 index 77c20d3de0e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.31.dmp +++ /dev/null @@ -1,24 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(2, 5) ; - }; // data_t - compound profile_t { - double fluor(10) ; - double depth(10) ; - }; // profile_t - compound CS01_record_t { - data_t data ; - float lat ; - float lng ; - profile_t profile ; - }; // CS01_record_t - CS01_record_t(*) CS01_t ; -variables: - CS01_t CS01 ; -data: - - CS01 = - {{{1, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 0, 0.9999833, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 1.999867, 2.99955, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{3, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 3.998933, 4.997917, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 5.996401, 6.994285, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}, {{8, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}, 7.991469, 8.987855, {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.50.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.50.dmp deleted file mode 100644 index 80e7cc64b04..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.50.dmp +++ /dev/null @@ -1,31 +0,0 @@ -netcdf test { -types: - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ushort ui16 ; - float f32 ; - double f64 ; - string s ; - string u ; - }; // types_t -dimensions: - types_0 = 10 ; -variables: - types_t types(types_0) ; -data: - - types = - {0, 1, 0, 0, 0, 0, 1000, "This is a data test string (pass 0).", "http://www.dods.org"}, - {1, 2, 2, 16, 65520, 0.9999833, 999.950000416665, "This is a data test string (pass 1).", "http://www.dods.org"}, - {2, 3, 6, 32, 65504, 1.999867, 999.800006666578, "This is a data test string (pass 2).", "http://www.dods.org"}, - {3, 5, 12, 48, 65488, 2.99955, 999.550033748988, "This is a data test string (pass 3).", "http://www.dods.org"}, - {4, 8, 20, 64, 65472, 3.998933, 999.200106660978, "This is a data test string (pass 4).", "http://www.dods.org"}, - {5, 13, 30, 80, 65456, 4.997917, 998.750260394966, "This is a data test string (pass 5).", "http://www.dods.org"}, - {6, 21, 42, 96, 65440, 5.996401, 998.200539935204, "This is a data test string (pass 6).", "http://www.dods.org"}, - {7, 34, 56, 112, 65424, 6.994285, 997.55100025328, "This is a data test string (pass 7).", "http://www.dods.org"}, - {8, 55, 72, 128, 65408, 7.991469, 996.801706302619, "This is a data test string (pass 8).", "http://www.dods.org"}, - {9, 89, 90, 144, 65392, 8.987855, 995.952733011994, "This is a data test string (pass 9).", "http://www.dods.org"} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.53.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.53.dmp deleted file mode 100644 index cc0c9be3ab5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.53.dmp +++ /dev/null @@ -1,34 +0,0 @@ -netcdf test { -types: - compound ss_t { - ushort ui16(10) ; - float f32 ; - double f64 ; - string s ; - string u(5) ; - }; // ss_t - compound types_t { - ubyte b ; - int i32 ; - uint ui32 ; - short i16 ; - ss_t ss ; - }; // types_t -dimensions: - types_0 = 10 ; -variables: - types_t types(types_0) ; -data: - - types = - {0, 1, 0, 0, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 0, 1000, "This is a data test string (pass 0).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {1, 2, 2, 16, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 0.9999833, 999.950000416665, "This is a data test string (pass 1).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {2, 3, 6, 32, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 1.999867, 999.800006666578, "This is a data test string (pass 2).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {3, 5, 12, 48, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 2.99955, 999.550033748988, "This is a data test string (pass 3).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {4, 8, 20, 64, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 3.998933, 999.200106660978, "This is a data test string (pass 4).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {5, 13, 30, 80, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 4.997917, 998.750260394966, "This is a data test string (pass 5).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {6, 21, 42, 96, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 5.996401, 998.200539935204, "This is a data test string (pass 6).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {7, 34, 56, 112, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 6.994285, 997.55100025328, "This is a data test string (pass 7).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {8, 55, 72, 128, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 7.991469, 996.801706302619, "This is a data test string (pass 8).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}}, - {9, 89, 90, 144, {{0, 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216}, 8.987855, 995.952733011994, "This is a data test string (pass 9).", {"http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org", "http://www.dods.org"}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.55.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.55.dmp deleted file mode 100644 index 72fb3080fe0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.55.dmp +++ /dev/null @@ -1,23 +0,0 @@ -netcdf test { -types: - compound data_t { - int i ; - double f(10) ; - }; // data_t - compound foo_t { - int j ; - int i(3) ; - data_t data ; - }; // foo_t - compound ralph_record_t { - ubyte b ; - foo_t foo ; - }; // ralph_record_t - ralph_record_t(*) ralph_t ; -variables: - ralph_t ralph ; -data: - - ralph = - {{0, {1, {0, 2048, 4096}, {2, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {1, {3, {0, 2048, 4096}, {5, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {2, {8, {0, 2048, 4096}, {13, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {3, {21, {0, 2048, 4096}, {34, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}, {4, {55, {0, 2048, 4096}, {89, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994}}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.56.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.56.dmp deleted file mode 100644 index c674e11de85..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.56.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound foo_record_t { - ubyte b(10) ; - int i(10) ; - }; // foo_record_t - foo_record_t(*) foo_t ; -variables: - foo_t foo ; -data: - - foo = - {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.57.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.57.dmp deleted file mode 100644 index c674e11de85..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.57.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound foo_record_t { - ubyte b(10) ; - int i(10) ; - }; // foo_record_t - foo_record_t(*) foo_t ; -variables: - foo_t foo ; -data: - - foo = - {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}, {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.66.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.66.dmp deleted file mode 100644 index 39073a72aec..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.66.dmp +++ /dev/null @@ -1,42 +0,0 @@ -netcdf test { -types: - compound long_names_one_t { - int long_one ; - int long_two ; - int long_three ; - int long_four ; - int long_five ; - int long_six ; - double long_one_float ; - double long_two_float ; - double long_three_float ; - }; // long_names_one_t - compound long_names_one_and_a_half_t { - int long_one_float1 ; - int long_two_float1 ; - int long_three_float3 ; - int long_four ; - int long_five ; - int long_six ; - double long_one_float ; - double long_two_float ; - double long_three_float ; - }; // long_names_one_and_a_half_t - compound long_names_two_t { - int a_very_long_name_given_what_it_accomplishes ; - int another_name_nearly_as_pointless ; - }; // long_names_two_t -variables: - long_names_one_t long_names_one ; - long_names_one_and_a_half_t long_names_one_and_a_half ; - long_names_two_t long_names_two ; -data: - - long_names_one = - {1, 2, 3, 5, 8, 13, 1000, 999.950000416665, 999.800006666578} ; - - long_names_one_and_a_half = - {21, 34, 55, 89, 144, 233, 999.550033748988, 999.200106660978, 998.750260394966} ; - - long_names_two = {377, 610} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.67.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.67.dmp deleted file mode 100644 index 04f0fc45fb1..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.67.dmp +++ /dev/null @@ -1,78 +0,0 @@ -netcdf test { -dimensions: - latitude = 20 ; - longitude = 10 ; -variables: - int i ; - double f(latitude, longitude) ; -data: - - i = 1 ; - - f = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, - 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, - 0.985584766909561, 0.983843692788121, 0.98200423511727, - 0.980066577841242, 0.978030914724148, 0.975897449330606, 0.973666395005375, - 0.97133797485203, 0.968912421710645, 0.966389978134513, - 0.963770896365891, 0.961055438310771, 0.958243875512697, - 0.955336489125606, 0.952333569885713, 0.949235418082441, 0.946042343528387, - 0.942754665528346, 0.939372712847379, 0.935896823677935, - 0.932327345606034, 0.92866463557651, 0.924909059857313, - 0.921060994002885, 0.917120822816605, 0.913088940312308, 0.908965749674885, - 0.904751663219963, 0.900447102352677, 0.896052497525525, - 0.891568288195329, 0.886994922779284, 0.882332858610121, - 0.877582561890373, 0.872744507645751, 0.86781917967765, 0.862807070514761, - 0.857708681363824, 0.852524522059506, 0.847255111013416, - 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, 0.808027508312152, - 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, - 0.696706709347165, 0.689498432951747, 0.682221207287614, 0.674875760071267, - 0.667462825841308, 0.659983145884982, 0.652437468164052, - 0.644826547240001, 0.63715114419858, 0.629412026573697, - 0.621609968270664, 0.613745749488812, 0.605820156643463, 0.597833982287298, - 0.589788025031098, 0.581683089463883, 0.573519986072457, - 0.565299531160354, 0.557022546766217, 0.548689860581588, - 0.54030230586814, 0.531860721374355, 0.52336595125165, 0.514818844969955, - 0.506220257232778, 0.497571047891727, 0.488872081860527, - 0.480124229028534, 0.47132836417374, 0.462485366875301, - 0.453596121425577, 0.444661516741707, 0.435682446276712, 0.426659807930157, - 0.417594503958358, 0.408487440884157, 0.399339529406273, - 0.39015168430823, 0.380924824366882, 0.371659872260533, - 0.362357754476674, 0.35301940121933, 0.343645746316047, 0.334237727124503, - 0.324796284438776, 0.315322362395269, 0.305816908378289, - 0.296280872925319, 0.286715209631956, 0.277120875056558, - 0.267498828624587, 0.25785003253267, 0.248175451652373, 0.238476053433723, - 0.228752807808459, 0.219006687093041, 0.209238665891419, - 0.199449720997573, 0.189640831297834, 0.179812977673, - 0.169967142900241, 0.160104311554831, 0.150225469911686, 0.140331605846737, - 0.130423708738146, 0.120502769367367, 0.11056977982007, - 0.100625733386932, 0.0906716244643097, 0.0807084484548006, - 0.0707372016677029, 0.0607588812193859, 0.0507744849335792, - 0.040785011241591, 0.0307914590824661, 0.0207948278030924, - 0.0107961170582674, 0.000796326710733263, -0.00920354326880834, - -0.0192024929016926, - -0.0291995223012888, -0.0391936317729877, -0.0491838219141706, - -0.0591690937141481, -0.0691484486540619, -0.0791208888067339, - -0.089085416936459, -0.099041036598728, -0.108986752239871, - -0.118921569296612, - -0.128844494295525, -0.138754534952378, -0.148650700271364, - -0.158532000644198, -0.168397447949077, -0.178246055649492, - -0.18807683889288, -0.197888814609109, -0.207681001608784, - -0.217452420681365, - -0.227202094693087, -0.236929048684675, -0.246632309968834, - -0.256310908227523, -0.26596387560898, -0.275590246824513, - -0.285189059245021, -0.294759352997261, -0.304300171059833, - -0.313810559358882, - -0.323289566863503, -0.332736245680845, -0.342149651150898, - -0.35152884194096, -0.360872880139767, -0.370180831351287, - -0.379451764788155, -0.388684753364752, -0.397878873789916, - -0.407033206659266 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.68.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.68.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.68.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.69.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.69.dmp deleted file mode 100644 index 3b61d549295..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.69.dmp +++ /dev/null @@ -1,401 +0,0 @@ -netcdf test { -types: - compound exp_t { - int j ; - int i ; - }; // exp_t -dimensions: - f_0 = 17 ; - f_1 = 121 ; - i_0 = 10 ; - i_1 = 20 ; -variables: - int i(i_0, i_1) ; - float f(f_0, f_1) ; - exp_t exp ; -data: - - i = - 0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, 112640, 114688, 116736, 118784, - 120832, - 122880, 124928, 126976, 129024, 131072, 133120, 135168, 137216, 139264, - 141312, 143360, 145408, 147456, 149504, 151552, 153600, 155648, 157696, - 159744, 161792, - 163840, 165888, 167936, 169984, 172032, 174080, 176128, 178176, 180224, - 182272, 184320, 186368, 188416, 190464, 192512, 194560, 196608, 198656, - 200704, 202752, - 204800, 206848, 208896, 210944, 212992, 215040, 217088, 219136, 221184, - 223232, 225280, 227328, 229376, 231424, 233472, 235520, 237568, 239616, - 241664, 243712, - 245760, 247808, 249856, 251904, 253952, 256000, 258048, 260096, 262144, - 264192, 266240, 268288, 270336, 272384, 274432, 276480, 278528, 280576, - 282624, 284672, - 286720, 288768, 290816, 292864, 294912, 296960, 299008, 301056, 303104, - 305152, 307200, 309248, 311296, 313344, 315392, 317440, 319488, 321536, - 323584, 325632, - 327680, 329728, 331776, 333824, 335872, 337920, 339968, 342016, 344064, - 346112, 348160, 350208, 352256, 354304, 356352, 358400, 360448, 362496, - 364544, 366592, - 368640, 370688, 372736, 374784, 376832, 378880, 380928, 382976, 385024, - 387072, 389120, 391168, 393216, 395264, 397312, 399360, 401408, 403456, - 405504, 407552 ; - - f = - 0, 0.009999833, 0.01999867, 0.0299955, 0.03998933, 0.04997917, 0.059964, - 0.06994285, 0.0799147, 0.08987855, 0.09983341, 0.1097783, 0.1197122, - 0.1296341, 0.1395431, 0.1494381, 0.1593182, 0.1691823, 0.1790296, - 0.1888589, 0.1986693, 0.2084599, 0.2182296, 0.2279775, 0.2377026, - 0.247404, 0.2570806, 0.2667314, 0.2763557, 0.2859522, 0.2955202, - 0.3050586, 0.3145666, 0.324043, 0.3334871, 0.3428978, 0.3522742, - 0.3616154, 0.3709205, 0.3801884, 0.3894183, 0.3986093, 0.4077604, - 0.4168708, 0.4259395, 0.4349655, 0.4439481, 0.4528863, 0.4617792, - 0.4706259, 0.4794255, 0.4881772, 0.4968801, 0.5055333, 0.514136, - 0.5226873, 0.5311862, 0.539632, 0.5480239, 0.556361, 0.5646425, - 0.5728675, 0.5810351, 0.5891448, 0.5971954, 0.6051864, 0.6131169, - 0.620986, 0.628793, 0.6365372, 0.6442177, 0.6518338, 0.6593847, - 0.6668696, 0.6742879, 0.6816388, 0.6889215, 0.6961352, 0.7032794, - 0.7103533, 0.7173561, 0.7242872, 0.7311459, 0.7379314, 0.7446431, - 0.7512804, 0.7578425, 0.764329, 0.7707389, 0.7770718, 0.7833269, - 0.7895038, 0.7956016, 0.8016199, 0.8075581, 0.8134155, 0.8191916, - 0.8248857, 0.8304974, 0.836026, 0.841471, 0.8468319, 0.852108, 0.857299, - 0.8624042, 0.8674232, 0.8723555, 0.8772005, 0.8819578, 0.8866269, - 0.8912073, 0.8956987, 0.9001005, 0.9044122, 0.9086335, 0.912764, - 0.9168031, 0.9207506, 0.924606, 0.928369, 0.9320391, - 0.935616, 0.9390994, 0.9424888, 0.945784, 0.9489846, 0.9520903, 0.9551008, - 0.9580159, 0.960835, 0.9635582, 0.966185, 0.9687151, 0.9711484, - 0.9734845, 0.9757234, 0.9778646, 0.979908, 0.9818535, 0.9837008, - 0.9854497, 0.9871001, 0.9886518, 0.9901046, 0.9914584, 0.992713, - 0.9938684, 0.9949244, 0.9958808, 0.9967378, 0.997495, 0.9981525, - 0.9987102, 0.9991679, 0.9995258, 0.9997838, 0.9999417, 0.9999997, - 0.9999576, 0.9998156, 0.9995736, 0.9992316, 0.9987897, 0.998248, - 0.9976064, 0.996865, 0.996024, 0.9950833, 0.9940432, 0.9929036, - 0.9916648, 0.9903268, 0.9888898, 0.9873539, 0.9857192, 0.983986, - 0.9821543, 0.9802245, 0.9781966, 0.9760709, 0.9738476, 0.971527, - 0.9691091, 0.9665944, 0.963983, 0.9612752, 0.9584713, 0.9555715, - 0.9525762, 0.9494856, 0.9463001, 0.9430199, 0.9396455, 0.9361771, - 0.932615, 0.9289597, 0.9252115, 0.9213708, 0.917438, 0.9134133, - 0.9092974, 0.9050906, 0.9007932, 0.8964058, 0.8919287, 0.8873624, - 0.8827074, 0.8779641, 0.873133, 0.8682146, 0.8632094, 0.8581178, - 0.8529405, 0.8476778, 0.8423305, 0.8368988, 0.8313835, 0.825785, - 0.8201039, 0.8143409, 0.8084964, 0.8025711, 0.7965655, 0.7904802, - 0.7843159, 0.7780732, 0.7717527, 0.7653549, 0.7588807, 0.7523306, - 0.7457052, 0.7390053, 0.7322314, 0.7253844, 0.7184648, 0.7114733, - 0.7044108, 0.6972777, 0.690075, 0.6828032, 0.6754632, 0.6680556, - 0.6605812, 0.6530408, 0.645435, 0.6377647, 0.6300306, 0.6222336, 0.6143743, - 0.6064535, 0.5984721, 0.5904309, 0.5823306, 0.5741721, 0.5659562, - 0.5576837, 0.5493554, 0.5409722, 0.5325349, 0.5240443, 0.5155014, - 0.5069069, 0.4982616, 0.4895666, 0.4808226, 0.4720306, 0.4631913, - 0.4543057, 0.4453746, 0.4363991, 0.4273799, 0.4183179, 0.4092142, - 0.4000695, 0.3908848, 0.381661, 0.372399, 0.3630998, 0.3537644, - 0.3443935, 0.3349881, 0.3255493, 0.316078, 0.306575, 0.2970414, 0.287478, - 0.2778859, 0.2682661, 0.2586193, 0.2489468, 0.2392493, 0.229528, - 0.2197836, 0.2100173, 0.20023, 0.1904227, 0.1805963, 0.1707518, - 0.1608903, 0.1510127, 0.14112, 0.1312132, 0.1212933, 0.1113612, 0.101418, - 0.09146464, 0.08150215, 0.07153151, 0.06155372, 0.05156977, 0.04158066, - 0.0315874, 0.02159098, 0.01159239, 0.001592653, -0.008407247, - -0.01840631, -0.02840353, -0.0383979, -0.04838844, -0.05837414, - -0.068354, -0.07832703, -0.08829223, -0.09824859, -0.1081951, -0.1181309, - -0.1280548, -0.1379659, -0.1478632, -0.1577457, -0.1676124, -0.1774624, - -0.1872947, -0.1971082, -0.206902, -0.2166751, -0.2264265, -0.2361553, - -0.2458605, -0.2555411, -0.2651961, -0.2748247, -0.2844257, -0.2939983, - -0.3035415, -0.3130544, -0.3225359, -0.3319852, -0.3414013, -0.3507832, - -0.3601301, -0.369441, -0.3787149, -0.3879509, -0.3971482, -0.4063057, - -0.4154226, -0.424498, -0.4335309, -0.4425204, -0.4514658, -0.4603659, - -0.46922, -0.4780273, -0.4867867, -0.4954974, -0.5041586, -0.5127693, - -0.5213288, -0.5298361, -0.5382905, -0.5466911, -0.5550369, -0.5633273, - -0.5715613, -0.5797382, -0.5878571, -0.5959172, -0.6039178, -0.6118579, - -0.6197369, -0.6275538, -0.635308, -0.6429988, -0.6506251, -0.6581865, - -0.665682, -0.673111, -0.6804726, -0.6877661, -0.694991, -0.7021463, - -0.7092314, -0.7162456, -0.7231881, -0.7300584, -0.7368556, -0.7435791, - -0.7502283, -0.7568025, -0.763301, -0.7697231, -0.7760683, -0.7823359, - -0.7885253, -0.7946358, -0.8006668, -0.8066177, -0.8124881, -0.8182771, - -0.8239843, -0.8296092, -0.835151, -0.8406094, -0.8459837, -0.8512734, - -0.856478, -0.8615969, -0.8666297, -0.8715758, -0.8764347, -0.881206, - -0.8858892, -0.8904838, -0.8949894, -0.8994054, -0.9037315, -0.9079673, - -0.9121122, -0.9161659, -0.920128, -0.9239982, -0.9277759, -0.9314608, - -0.9350526, -0.9385508, -0.9419553, -0.9452655, -0.9484812, -0.9516021, - -0.9546278, -0.957558, -0.9603925, -0.963131, -0.965773, -0.9683186, - -0.9707673, -0.973119, -0.9753733, -0.9775301, -0.9795892, -0.9815503, - -0.9834132, -0.9851778, -0.9868439, -0.9884112, -0.9898798, -0.9912494, - -0.9925198, -0.993691, -0.9947628, -0.9957352, -0.996608, -0.9973811, - -0.9980544, -0.998628, -0.9991017, -0.9994755, -0.9997494, -0.9999232, - -0.9999971, -0.999971, -0.9998449, -0.9996188, -0.9992928, -0.9988668, - -0.998341, -0.9977152, -0.9969898, -0.9961646, -0.9952399, -0.9942155, - -0.9930918, - -0.9918687, -0.9905465, -0.9891253, -0.9876051, -0.9859861, -0.9842686, - -0.9824526, -0.9805384, -0.9785261, -0.976416, -0.9742082, -0.9719031, - -0.9695007, -0.9670014, -0.9644054, -0.9617129, -0.9589243, -0.9560397, - -0.9530596, -0.9499842, -0.9468138, -0.9435487, -0.9401892, -0.9367357, - -0.9331886, -0.9295481, -0.9258147, -0.9219887, -0.9180705, -0.9140605, - -0.9099591, -0.9057667, -0.9014837, -0.8971105, -0.8926477, -0.8880956, - -0.8834547, -0.8787254, -0.8739083, -0.8690037, -0.8640123, -0.8589345, - -0.8537708, -0.8485217, -0.8431877, -0.8377695, -0.8322675, -0.8266822, - -0.8210142, -0.8152642, -0.8094327, -0.8035201, -0.7975273, -0.7914547, - -0.7853029, -0.7790727, -0.7727645, -0.766379, -0.7599169, -0.7533789, - -0.7467654, -0.7400773, -0.7333152, -0.7264798, -0.7195717, -0.7125916, - -0.7055403, -0.6984185, -0.6912268, -0.683966, -0.6766368, -0.6692399, - -0.6617761, -0.6542461, -0.6466507, -0.6389906, -0.6312667, -0.6234795, - -0.6156301, -0.6077191, -0.5997473, -0.5917156, -0.5836247, -0.5754754, - -0.5672686, -0.559005, -0.5506855, -0.542311, -0.5338823, -0.5254001, - -0.5168654, -0.5082791, -0.4996419, -0.4909547, -0.4822185, -0.473434, - -0.4646022, -0.4557239, -0.4468001, -0.4378315, -0.4288192, -0.419764, - -0.4106669, -0.4015286, -0.3923502, -0.3831326, -0.3738767, -0.3645833, - -0.3552535, -0.3458883, -0.3364884, -0.3270548, -0.3175886, -0.3080906, - -0.2985618, -0.2890031, -0.2794155, -0.2698, -0.2601575, -0.250489, - -0.2407954, - -0.2310778, -0.2213371, -0.2115742, -0.2017901, -0.1919859, -0.1821625, - -0.1723209, -0.162462, -0.1525869, -0.1426965, -0.1327919, -0.122874, - -0.1129438, -0.1030023, -0.0930505, -0.0830894, -0.07311999, -0.06314328, - -0.05316024, -0.04317189, -0.03317922, -0.02318323, -0.01318493, - -0.003185302, 0.00681464, 0.0168139, 0.02681148, 0.03680638, 0.0467976, - 0.05678413, 0.06676499, 0.07673918, 0.08670568, 0.09666352, 0.1066117, - 0.1165492, 0.1264751, 0.1363883, 0.1462878, 0.1561728, 0.1660421, - 0.1758948, 0.18573, 0.1955465, 0.2053435, 0.21512, 0.2248749, 0.2346074, - 0.2443164, 0.254001, 0.2636602, 0.273293, 0.2828985, 0.2924757, - 0.3020236, 0.3115413, 0.321028, 0.3304825, 0.3399039, 0.3492913, - 0.3586439, 0.3679605, 0.3772404, 0.3864825, 0.395686, 0.4048499, - 0.4139734, 0.4230554, 0.4320951, 0.4410917, 0.4500441, 0.4589515, - 0.467813, 0.4766277, 0.4853948, 0.4941134, 0.5027825, 0.5114013, - 0.519969, 0.5284848, 0.5369476, 0.5453568, 0.5537114, 0.5620106, - 0.5702537, 0.5784398, 0.5865679, 0.5946375, 0.6026475, 0.6105974, - 0.6184861, 0.626313, 0.6340773, 0.6417782, 0.6494148, 0.6569866, - 0.6644927, 0.6719322, 0.6793047, 0.6866091, 0.693845, 0.7010114, - 0.7081077, 0.7151332, 0.7220873, 0.728969, 0.735778, 0.7425133, - 0.7491744, 0.7557605, 0.7622711, 0.7687054, 0.7750629, 0.7813429, - 0.7875448, 0.7936679, 0.7997116, 0.8056753, 0.8115585, 0.8173606, - 0.8230809, - 0.8287189, 0.834274, 0.8397457, 0.8451334, 0.8504366, 0.8556548, 0.8607874, - 0.8658339, 0.8707939, 0.8756667, 0.880452, 0.8851492, 0.889758, - 0.8942778, 0.8987081, 0.9030486, 0.9072987, 0.9114581, 0.9155264, - 0.9195032, 0.9233879, 0.9271804, 0.9308801, 0.9344868, 0.938, 0.9414194, - 0.9447446, 0.9479754, 0.9511114, 0.9541523, 0.9570977, 0.9599475, - 0.9627013, 0.9653587, 0.9679196, 0.9703838, 0.972751, 0.9750208, - 0.9771932, 0.9792678, 0.9812445, 0.9831231, 0.9849033, 0.9865851, - 0.9881682, 0.9896525, 0.9910379, 0.9923241, 0.9935111, 0.9945988, - 0.995587, 0.9964756, 0.9972646, 0.9979539, 0.9985433, 0.999033, - 0.9994227, 0.9997125, 0.9999022, 0.9999921, 0.9999819, 0.9998717, - 0.9996616, 0.9993514, 0.9989414, 0.9984314, 0.9978216, 0.997112, - 0.9963027, 0.9953938, 0.9943853, 0.9932774, 0.9920702, 0.9907638, - 0.9893582, 0.9878538, 0.9862506, 0.9845487, 0.9827484, 0.9808499, - 0.9788532, 0.9767586, 0.9745664, 0.9722767, 0.9698898, 0.9674059, - 0.9648253, 0.9621482, 0.9593748, 0.9565055, 0.9535406, 0.9504804, - 0.9473251, 0.944075, 0.9407306, 0.937292, 0.9337597, 0.9301341, - 0.9264155, 0.9226042, 0.9187007, 0.9147053, 0.9106184, 0.9064404, - 0.9021719, 0.897813, 0.8933644, 0.8888265, 0.8841997, 0.8794845, - 0.8746814, 0.8697907, 0.8648131, 0.859749, 0.8545989, 0.8493634, - 0.8440429, 0.8386381, 0.8331493, 0.8275773, 0.8219225, - 0.8161855, 0.8103669, 0.8044672, 0.7984871, 0.7924272, 0.786288, 0.7800702, - 0.7737743, 0.7674012, 0.7609512, 0.7544252, 0.7478237, 0.7411475, - 0.7343971, 0.7275733, 0.7206767, 0.7137081, 0.7066681, 0.6995574, - 0.6923768, 0.685127, 0.6778086, 0.6704224, 0.6629692, 0.6554497, - 0.6478647, 0.6402149, 0.6325011, 0.624724, 0.6168844, 0.6089832, - 0.601021, 0.5929987, 0.5849172, 0.5767772, 0.5685794, 0.5603248, - 0.5520142, 0.5436484, 0.5352283, 0.5267546, 0.5182282, 0.50965, - 0.5010208, 0.4923416, 0.4836131, 0.4748363, 0.4660119, 0.457141, - 0.4482243, 0.4392629, 0.4302575, 0.421209, 0.4121185, 0.4029867, - 0.3938147, 0.3846032, 0.3753533, 0.3660659, 0.3567419, 0.3473822, - 0.3379877, 0.3285595, 0.3190984, 0.3096054, 0.3000814, 0.2905274, - 0.2809443, 0.2713332, 0.261695, 0.2520306, 0.2423409, 0.232627, - 0.2228899, 0.2131305, 0.2033498, 0.1935487, 0.1837283, 0.1738895, - 0.1640333, 0.1541607, 0.1442727, 0.1343703, 0.1244544, 0.1145261, - 0.1045863, 0.09463613, 0.08467644, 0.07470829, 0.06473266, 0.05475057, - 0.044763, 0.03477095, 0.02477542, 0.01477742, 0.004777943, -0.005222016, - -0.01522145, -0.02521937, -0.03521476, -0.04520663, -0.05519398, - -0.06517581, -0.07515112, -0.08511892, -0.09507821, -0.105028, - -0.1149673, -0.124895, -0.1348103, -0.1447121, -0.1545995, -0.1644713, - -0.1743268, -0.1841648, -0.1939844, -0.2037845, -0.2135644, -0.2233228, - -0.2330589, -0.2427717, - -0.2524603, -0.2621236, -0.2717606, -0.2813705, -0.2909523, -0.300505, - -0.3100276, -0.3195192, -0.3289789, -0.3384056, -0.3477986, -0.3571567, - -0.3664791, -0.3757649, -0.3850131, -0.3942228, -0.4033931, -0.4125231, - -0.4216118, -0.4306583, -0.4396617, -0.4486212, -0.4575359, -0.4664048, - -0.475227, -0.4840018, -0.4927281, -0.5014051, -0.5100321, -0.518608, - -0.527132, -0.5356033, -0.5440211, -0.5523845, -0.5606926, -0.5689447, - -0.5771399, -0.5852773, -0.5933563, -0.6013759, -0.6093353, -0.6172339, - -0.6250706, -0.6328449, -0.640556, -0.6482029, -0.6557851, -0.6633016, - -0.6707519, -0.678135, -0.6854504, -0.6926972, -0.6998747, -0.7069823, - -0.7140191, -0.7209845, -0.7278779, -0.7346984, -0.7414455, -0.7481185, - -0.7547166, -0.7612393, -0.7676858, -0.7740556, -0.7803479, -0.7865623, - -0.792698, -0.7987544, -0.8047309, -0.810627, -0.816442, -0.8221753, - -0.8278264, -0.8333948, -0.8388798, -0.844281, -0.8495977, -0.8548294, - -0.8599757, -0.865036, -0.8700097, -0.8748965, -0.8796958, -0.884407, - -0.8890299, -0.8935639, -0.8980085, -0.9023633, -0.9066279, -0.9108018, - -0.9148846, -0.918876, -0.9227754, -0.9265826, -0.9302971, -0.9339186, - -0.9374467, -0.9408811, -0.9442213, -0.9474672, -0.9506183, -0.9536743, - -0.956635, -0.9595, -0.9622691, -0.9649419, -0.9675183, -0.9699979, - -0.9723805, -0.9746658, -0.9768537, -0.9789439, -0.9809362, -0.9828305, - -0.9846264, -0.9863239, -0.9879227, -0.9894227, -0.9908239, -0.9921259, - -0.9933288, - -0.9944322, -0.9954363, -0.9963408, -0.9971456, -0.9978508, -0.9984561, - -0.9989617, -0.9993673, -0.999673, -0.9998787, -0.9999844, -0.9999902, - -0.9998959, -0.9997017, -0.9994075, -0.9990134, -0.9985193, -0.9979254, - -0.9972317, -0.9964383, -0.9955452, -0.9945526, -0.9934605, -0.9922691, - -0.9909785, -0.9895887, -0.9881001, -0.9865125, -0.9848264, -0.9830417, - -0.9811588, -0.9791777, -0.9770988, -0.9749221, -0.9726479, -0.9702765, - -0.967808, -0.9652427, -0.962581, -0.959823, -0.956969, -0.9540192, - -0.9509742, -0.947834, -0.944599, -0.9412695, -0.9378459, -0.9343286, - -0.9307178, -0.9270139, -0.9232174, -0.9193285, -0.9153477, -0.9112754, - -0.9071119, -0.9028577, -0.8985133, -0.894079, -0.8895552, -0.8849425, - -0.8802414, -0.8754522, -0.8705754, -0.8656116, -0.8605613, -0.8554249, - -0.8502029, -0.844896, -0.8395045, -0.8340291, -0.8284702, -0.8228286, - -0.8171046, -0.811299, -0.8054122, -0.7994449, -0.7933976, -0.787271, - -0.7810657, -0.7747822, -0.7684214, -0.7619836, -0.7554696, -0.7488801, - -0.7422158, -0.7354771, -0.728665, -0.7217799, -0.7148228, -0.7077941, - -0.7006946, -0.6935251, -0.6862862, -0.6789787, -0.6716033, -0.6641607, - -0.6566517, -0.6490771, -0.6414375, -0.6337339, -0.6259668, -0.6181371, - -0.6102456, -0.6022931, -0.5942804, -0.5862082, -0.5780774, -0.5698889, - -0.5616433, -0.5533416, -0.5449845, -0.5365729, -0.5281077, -0.5195897, - -0.5110196, -0.5023986, -0.4937272, -0.4850065, -0.4762373, -0.4674205, - -0.4585569, - -0.4496475, -0.4406931, -0.4316946, -0.422653, -0.4135691, -0.4044438, - -0.3952781, -0.3860729, -0.3768291, -0.3675475, -0.3582293, -0.3488752, - -0.3394862, -0.3300633, -0.3206073, -0.3111193, -0.3016002, -0.292051, - -0.2824725, -0.2728658, -0.2632318, -0.2535715, -0.2438858, -0.2341757, - -0.2244422, -0.2146863, -0.2049089, -0.195111, -0.1852936, -0.1754577, - -0.1656042, -0.1557341, -0.1458485, -0.1359483, -0.1260345, -0.1161081, - -0.1061701, -0.09622151, -0.08626327, -0.0762964, -0.06632189, - -0.05634077, -0.046354, -0.0363626, -0.02636756, -0.01636988, - -0.006370571, 0.003629378, 0.01362896, 0.02362719, 0.03362305, - 0.04361555, 0.05360368, 0.06358646, 0.07356288, 0.08353194, 0.09349265, - 0.103444, 0.113385, 0.1233147, 0.133232, 0.1431361, 0.1530258, 0.1629002, - 0.1727583, 0.1825991, 0.1924217, 0.2022251, 0.2120082, 0.2217701, - 0.2315098, 0.2412264, 0.2509189, 0.2605863, 0.2702276, 0.2798419, - 0.2894282, 0.2989855, 0.308513, 0.3180096, 0.3274744, 0.3369065, - 0.3463049, 0.3556686, 0.3649968, 0.3742885, 0.3835427, 0.3927587, - 0.4019353, 0.4110717, 0.420167, 0.4292203, 0.4382307, 0.4471973, - 0.4561191, 0.4649954, 0.4738251, 0.4826075, 0.4913416, 0.5000265, - 0.5086614, 0.5172455, 0.5257779, 0.5342577, 0.5426841, 0.5510561, - 0.5593731, 0.5676342, 0.5758385, 0.5839852, 0.5920735, 0.6001026, - 0.6080717, 0.61598, 0.6238267, 0.631611, 0.6393321, 0.6469893, 0.6545818, - 0.6621089, 0.6695698, - 0.6769636, 0.6842899, 0.6915476, 0.6987363, 0.705855, 0.7129031, 0.71988, - 0.7267848, 0.7336171, 0.7403759, 0.7470607, 0.7536708, 0.7602055, - 0.7666642, 0.7730463, 0.779351, 0.7855778, 0.7917261, 0.7977951, - 0.8037844, 0.8096933, 0.8155213, 0.8212677, 0.826932, 0.8325136, - 0.8380119, 0.8434264, 0.8487566, 0.8540019, 0.8591618, 0.8642358, - 0.8692234, 0.8741241, 0.8789373, 0.8836626, 0.8882996, 0.8928478, - 0.8973066, 0.9016758, 0.9059547, 0.9101431, 0.9142405, 0.9182464, - 0.9221606, 0.9259824, 0.9297118, 0.9333481, 0.9368911, 0.9403404, - 0.9436957, 0.9469566, 0.9501228, 0.953194, 0.9561699, 0.9590501, - 0.9618345, 0.9645227, 0.9671144, 0.9696094, 0.9720075, 0.9743084, - 0.9765118, 0.9786175, 0.9806255, 0.9825354, 0.9843469, 0.9860601, - 0.9876747, 0.9891905, 0.9906074, 0.9919252, 0.9931438, 0.9942631, - 0.995283, 0.9962034, 0.9970241, 0.9977452, 0.9983664, 0.9988878, - 0.9993094, 0.999631, 0.9998527, 0.9999743, 0.999996, 0.9999177, - 0.9997393, 0.9994611, 0.9990828, 0.9986047, 0.9980267, 0.9973488, - 0.9965713, 0.9956941, 0.9947174, 0.9936411, 0.9924655, 0.9911907, - 0.9898167, 0.9883437, 0.9867719, 0.9851015, 0.9833325, 0.9814652, - 0.9794998, 0.9774364, 0.9752753, 0.9730166, 0.9706606, 0.9682076, - 0.9656578, 0.9630114, 0.9602687, 0.9574299, 0.9544954, 0.9514655, - 0.9483404, 0.9451205, 0.9418061, 0.9383975, 0.934895, 0.9312991, - 0.9276101, 0.9238282, 0.9199541, 0.9159878, 0.9119301, 0.9077811, - 0.9035413, 0.8992112, 0.8947912, 0.8902817, 0.8856831, 0.880996, - 0.8762208, 0.871358, 0.866408, 0.8613714, 0.8562487, 0.8510403, - 0.8457468, 0.8403688, 0.8349067, 0.8293611, 0.8237326, 0.8180218, - 0.8122291, 0.8063552, 0.8004007, 0.7943661, 0.7882521, 0.7820593, - 0.7757882, 0.7694396, 0.763014, 0.7565122, 0.7499346, 0.7432821, - 0.7365553, 0.7297548, 0.7228814, 0.7159356, 0.7089183, 0.70183, - 0.6946716, 0.6874437, 0.6801471, 0.6727825, 0.6653506, 0.6578521, - 0.6502879, 0.6426586, 0.6349651, 0.627208, 0.6193883, 0.6115066, - 0.6035637, 0.5955606, 0.5874978, 0.5793763, 0.5711969, 0.5629603, - 0.5546675, 0.5463191, 0.5379162, 0.5294595, 0.5209498, 0.512388, - 0.503775, 0.4951116, 0.4863987, 0.4776371, 0.4688278, 0.4599716, - 0.4510695, 0.4421222, 0.4331307, 0.4240958, 0.4150186, 0.4058999, - 0.3967406, 0.3875416, 0.3783038, 0.3690283, 0.3597158, 0.3503673, - 0.3409838, 0.3315663, 0.3221155, 0.3126326, 0.3031183, 0.2935738, - 0.2839999, 0.2743977, 0.2647679, 0.2551118, 0.24543, 0.2357238, 0.225994, - 0.2162415, 0.2064675, 0.1966728, 0.1868584, 0.1770254, 0.1671746, - 0.1573072, 0.147424, 0.137526, 0.1276143, 0.1176899, 0.1077536, - 0.09780665, 0.08784988, 0.07788431, 0.06791096, 0.05793082, 0.04794488, - 0.03795415, 0.02795962, 0.0179623, 0.007963183, -0.002036731, -0.01203644, - -0.02203495, -0.03203125, -0.04202435, -0.05201325, -0.06199695, - -0.07197444, -0.08194474, -0.09190685, -0.1018598, -0.1118025, -0.121734, - -0.1316534, -0.1415596, -0.1514517, -0.1613286, -0.1711894, -0.181033, - -0.1908586, -0.2006651, -0.2104515, -0.2202168, -0.2299601, -0.2396805, - -0.2493769, -0.2590483, -0.2686938, -0.2783125, -0.2879033, -0.2974654, - -0.3069977, -0.3164992, -0.3259692, -0.3354065, -0.3448103, -0.3541797, - -0.3635136, -0.3728111, -0.3820714, -0.3912935, -0.4004764, -0.4096193, - -0.4187213, -0.4277813, -0.4367986, -0.4457722, -0.4547012, -0.4635848, - -0.472422, -0.4812119, -0.4899538, -0.4986466, -0.5072896, -0.5158818, - -0.5244225, -0.5329107, -0.5413457, -0.5497264, -0.5580522, -0.5663223, - -0.5745357, -0.5826916, -0.5907893, -0.5988278, -0.6068066, -0.6147246, - -0.6225811, -0.6303754, -0.6381067, -0.6457741, -0.653377, -0.6609145, - -0.668386, -0.6757905, -0.6831276, -0.6903963, -0.697596, -0.7047259, - -0.7117853, -0.7187736, -0.72569, -0.7325338, -0.7393044, -0.746001, - -0.7526231, -0.7591698, -0.7656407, -0.772035, -0.7783521, -0.7845913, - -0.7907521, -0.7968339, -0.8028359, -0.8087577, -0.8145986, -0.820358, - -0.8260354, -0.8316302, -0.8371418, -0.8425697, -0.8479133, -0.8531722, - -0.8583457, -0.8634335, -0.8684348, -0.8733494, -0.8781766, -0.882916, - -0.887567, -0.8921294, -0.8966025, -0.900986, -0.9052793, -0.9094821, - -0.913594, -0.9176146, -0.9215433, -0.9253799, -0.929124, -0.9327752, - -0.9363331, -0.9397973, - -0.9431676, -0.9464436, -0.9496249, -0.9527112, -0.9557023, -0.9585978, - -0.9613975, -0.964101, -0.9667081, -0.9692186, -0.9716321, -0.9739484, - -0.9761674, -0.9782887, -0.9803122, -0.9822378, -0.984065, -0.9857939, - -0.9874241, -0.9889557, -0.9903883, -0.9917219, -0.9929563, -0.9940915, - -0.9951273, -0.9960635, -0.9969001, -0.997637, -0.9982741, -0.9988115, - -0.9992489, -0.9995865, -0.999824, -0.9999616, -0.9999992, -0.9999368, - -0.9997745, -0.9995121, -0.9991497, -0.9986875, -0.9981254, -0.9974635, - -0.9967018, -0.9958405, -0.9948795, -0.9938192, -0.9926594, -0.9914004, - -0.9900422, -0.9885849, -0.9870289, -0.9853742, -0.9836209, -0.9817692, - -0.9798194, -0.9777716, -0.975626, -0.9733829, -0.9710424, -0.9686048, - -0.9660704, -0.9634393, -0.9607119, -0.9578884, -0.9549692, -0.9519544, - -0.9488445, -0.9456397, -0.9423403, -0.9389467, -0.9354591, -0.9318781, - -0.9282038, -0.9244367, -0.9205772, -0.9166257, -0.9125825, -0.908448, - -0.9042226, -0.8999069, -0.8955011, -0.8910058, -0.8864214, -0.8817484, - -0.8769872, -0.8721383, -0.8672022, -0.8621793, -0.8570703, -0.8518755, - -0.8465956, -0.841231, -0.8357822, -0.8302499, -0.8246346, -0.8189368, - -0.8131571, -0.8072961, -0.8013543, -0.7953325, -0.7892311, -0.7830508, - -0.7767922, -0.7704558, -0.7640425, -0.7575527, -0.7509872, -0.7443466, - -0.7376316, -0.7308428, -0.7239809, -0.7170466, -0.7100406, -0.7029637, - -0.6958163, -0.6885995, -0.6813138, -0.6739599, -0.6665387, -0.6590508, - -0.6514969, - -0.643878, -0.6361946, -0.6284477, -0.6206378, -0.612766, -0.6048328, - -0.5968392, -0.5887859, -0.5806737, -0.5725034, -0.5642759, -0.5559919, - -0.5476524, -0.5392581, -0.5308099, -0.5223086, -0.513755, -0.5051501, - -0.4964947, -0.4877896, -0.4790358, -0.470234, -0.4613852, -0.4524903, - -0.4435501, -0.4345656, -0.4255376, -0.4164671, -0.4073549, -0.398202, - -0.3890093, -0.3797776, -0.370508, -0.3612014, -0.3518586, -0.3424806, - -0.3330684, -0.3236229, -0.314145, -0.3046357, -0.2950959, -0.2855267, - -0.2759288, -0.2663034, -0.2566514, -0.2469737, -0.2372712, -0.2275451, - -0.2177962, -0.2080256, -0.1982341, -0.1884228, -0.1785927, -0.1687447, - -0.1588798, -0.148999, -0.1391034, -0.1291938, -0.1192713, -0.1093369, - -0.09939155, -0.08943626, -0.07947203, -0.06949985, -0.05952072, - -0.04953564, -0.03954561, -0.02955162, -0.01955467, -0.009555776, - 0.0004440784, 0.01044389, 0.02044265, 0.03043937, 0.04043305, 0.05042269, - 0.06040728, 0.07038583, 0.08035734, 0.09032082, 0.1002753, 0.1102197, - 0.1201531, 0.1300745, 0.1399828, 0.1498772, 0.1597566, 0.16962, - 0.1794665, 0.189295, 0.1991045, 0.2088942, 0.218663, 0.2284099, 0.238134, - 0.2478342, 0.2575097, 0.2671594, 0.2767824, 0.2863777, 0.2959444, - 0.3054815, 0.3149881, 0.3244631, 0.3339057, 0.3433149, 0.3526898, - 0.3620294, 0.3713328, 0.3805991, 0.3898273, 0.3990166, 0.4081659, - 0.4172744, 0.4263412, 0.4353653, 0.444346, 0.4532822, 0.462173, - 0.4710177, 0.4798152, - 0.4885648, 0.4972655, 0.5059164, 0.5145168, 0.5230657, 0.5315624, - 0.5400059, 0.5483953, 0.55673, 0.5650089, 0.5732314, 0.5813965, - 0.5895035, 0.5975516, 0.6055399, 0.6134676, 0.621334, 0.6291383, - 0.6368796, 0.6445573, 0.6521705, 0.6597185, 0.6672005, 0.6746158, - 0.6819636, 0.6892433, 0.696454, 0.703595, 0.7106658, 0.7176654, - 0.7245933, 0.7314487, 0.738231, 0.7449394, 0.7515734, 0.7581322, - 0.7646152, 0.7710217, 0.7773512, 0.7836029, 0.7897762, 0.7958706, - 0.8018854, 0.80782, 0.8136737, 0.8194461, 0.8251367, 0.8307446, - 0.8362696, 0.8417109, 0.847068, 0.8523403, 0.8575276, 0.8626289, - 0.8676441, 0.8725725, 0.8774136, 0.882167, 0.8868322, 0.8914087, - 0.8958961, 0.9002938, 0.9046016, 0.9088188, 0.9129453, 0.9169804, - 0.9209238, 0.9247751, 0.9285339, 0.9321999, 0.9357727, 0.9392518, - 0.9426371, 0.9459282, 0.9491246, 0.952226, 0.9552323, 0.9581431, - 0.960958, 0.9636769, 0.9662994, 0.9688252, 0.9712542, 0.973586, - 0.9758205, 0.9779574, 0.9799966, 0.9819376, 0.9837806, 0.9855251, - 0.9871711, 0.9887184, 0.9901668, 0.9915162, 0.9927664, 0.9939173, - 0.994969, 0.995921, 0.9967735, 0.9975263, 0.9981794, 0.9987326, 0.999186, - 0.9995394, 0.9997929, 0.9999464, 0.9999999, 0.9999534, 0.999807, - 0.9995605, 0.9992141, 0.9987678, 0.9982216, 0.9975756, 0.9968298, - 0.9959843, 0.9950393, 0.9939947, 0.9928507, 0.9916075, 0.9902651 ; - - exp = {1, 2} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.an1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.an1.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.an1.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.dfp1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.dfp1.dmp deleted file mode 100644 index a6e053660d3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.dfp1.dmp +++ /dev/null @@ -1,2 +0,0 @@ -netcdf test { -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr1.dmp deleted file mode 100644 index b08f5fbeeaa..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr1.dmp +++ /dev/null @@ -1,177 +0,0 @@ -netcdf test { -dimensions: - GR_DFNT_CHAR8__X = 5 ; - GR_DFNT_CHAR8__Y = 5 ; - GR_DFNT_CHAR8__comps = 3 ; - GR_DFNT_FLOAT32__X = 7 ; - GR_DFNT_FLOAT32__Y = 4 ; - GR_DFNT_FLOAT32__comps = 3 ; - GR_DFNT_FLOAT64__X = 7 ; - GR_DFNT_FLOAT64__Y = 4 ; - GR_DFNT_INT16__X = 5 ; - GR_DFNT_INT16__Y = 5 ; - GR_DFNT_INT16__comps = 2 ; - GR_DFNT_INT32__X = 5 ; - GR_DFNT_INT32__Y = 5 ; - GR_DFNT_INT8__X = 5 ; - GR_DFNT_INT8__Y = 5 ; - GR_DFNT_INT8__comps = 2 ; - GR_DFNT_UCHAR8__X = 3 ; - GR_DFNT_UCHAR8__Y = 5 ; - GR_DFNT_UCHAR8__comps = 3 ; - GR_DFNT_UINT16__X = 3 ; - GR_DFNT_UINT16__Y = 3 ; - GR_DFNT_UINT16__comps = 3 ; - GR_DFNT_UINT32__X = 3 ; - GR_DFNT_UINT32__Y = 3 ; - GR_DFNT_UINT32__comps = 3 ; - GR_DFNT_UINT8__X = 3 ; - GR_DFNT_UINT8__Y = 3 ; - GR_DFNT_UINT8__comps = 3 ; -variables: - int GR_DFNT_INT32(GR_DFNT_INT32__Y, GR_DFNT_INT32__X) ; - uint GR_DFNT_UINT32(GR_DFNT_UINT32__comps, GR_DFNT_UINT32__Y, GR_DFNT_UINT32__X) ; - int GR_DFNT_INT16(GR_DFNT_INT16__comps, GR_DFNT_INT16__Y, GR_DFNT_INT16__X) ; - uint GR_DFNT_UINT16(GR_DFNT_UINT16__comps, GR_DFNT_UINT16__Y, GR_DFNT_UINT16__X) ; - int GR_DFNT_INT8(GR_DFNT_INT8__comps, GR_DFNT_INT8__Y, GR_DFNT_INT8__X) ; - ubyte GR_DFNT_UINT8(GR_DFNT_UINT8__comps, GR_DFNT_UINT8__Y, GR_DFNT_UINT8__X) ; - double GR_DFNT_FLOAT32(GR_DFNT_FLOAT32__comps, GR_DFNT_FLOAT32__Y, GR_DFNT_FLOAT32__X) ; - double GR_DFNT_FLOAT64(GR_DFNT_FLOAT64__Y, GR_DFNT_FLOAT64__X) ; - ubyte GR_DFNT_CHAR8(GR_DFNT_CHAR8__comps, GR_DFNT_CHAR8__Y, GR_DFNT_CHAR8__X) ; - ubyte GR_DFNT_UCHAR8(GR_DFNT_UCHAR8__comps, GR_DFNT_UCHAR8__Y, GR_DFNT_UCHAR8__X) ; -data: - - GR_DFNT_INT32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_DFNT_UINT32 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT16 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26 ; - - GR_DFNT_FLOAT32 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891, - 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, - 0.949235418082441, 0.946042343528387, 0.942754665528346, - 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, - 0.924909059857313, 0.921060994002885, 0.917120822816605, - 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, - 0.896052497525525, 0.891568288195329, 0.886994922779284, - 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, - 0.862807070514761, 0.857708681363824, 0.852524522059506, - 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, - 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, - 0.689498432951747, 0.682221207287614, 0.674875760071267 ; - - GR_DFNT_FLOAT64 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891 ; - - GR_DFNT_CHAR8 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74 ; - - GR_DFNT_UCHAR8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26, - 27, 28, 29, - 30, 31, 32, - 33, 34, 35, - 36, 37, 38, - 39, 40, 41, - 42, 43, 44 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr2.dmp deleted file mode 100644 index 025acf7f367..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr2.dmp +++ /dev/null @@ -1,355 +0,0 @@ -netcdf test { -dimensions: - GR_16__X = 5 ; - GR_16__Y = 5 ; - GR_16__comps = 16 ; - GR_1__X = 5 ; - GR_1__Y = 5 ; - GR_2__X = 5 ; - GR_2__Y = 5 ; - GR_2__comps = 2 ; - GR_32__X = 5 ; - GR_32__Y = 5 ; - GR_32__comps = 32 ; - GR_4__X = 5 ; - GR_4__Y = 5 ; - GR_4__comps = 4 ; - GR_8__X = 5 ; - GR_8__Y = 5 ; - GR_8__comps = 8 ; -variables: - int GR_1(GR_1__Y, GR_1__X) ; - int GR_2(GR_2__comps, GR_2__Y, GR_2__X) ; - int GR_4(GR_4__comps, GR_4__Y, GR_4__X) ; - int GR_8(GR_8__comps, GR_8__Y, GR_8__X) ; - int GR_16(GR_16__comps, GR_16__Y, GR_16__X) ; - int GR_32(GR_32__comps, GR_32__Y, GR_32__X) ; -data: - - GR_1 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_2 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_4 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752 ; - - GR_8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552 ; - - GR_16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552, - 409600, 411648, 413696, 415744, 417792, - 419840, 421888, 423936, 425984, 428032, - 430080, 432128, 434176, 436224, 438272, - 440320, 442368, 444416, 446464, 448512, - 450560, 452608, 454656, 456704, 458752, - 460800, 462848, 464896, 466944, 468992, - 471040, 473088, 475136, 477184, 479232, - 481280, 483328, 485376, 487424, 489472, - 491520, 493568, 495616, 497664, 499712, - 501760, 503808, 505856, 507904, 509952, - 512000, 514048, 516096, 518144, 520192, - 522240, 524288, 526336, 528384, 530432, - 532480, 534528, 536576, 538624, 540672, - 542720, 544768, 546816, 548864, 550912, - 552960, 555008, 557056, 559104, 561152, - 563200, 565248, 567296, 569344, 571392, - 573440, 575488, 577536, 579584, 581632, - 583680, 585728, 587776, 589824, 591872, - 593920, 595968, 598016, 600064, 602112, - 604160, 606208, 608256, 610304, 612352, - 614400, 616448, 618496, 620544, 622592, - 624640, 626688, 628736, 630784, 632832, - 634880, 636928, 638976, 641024, 643072, - 645120, 647168, 649216, 651264, 653312, - 655360, 657408, 659456, 661504, 663552, - 665600, 667648, 669696, 671744, 673792, - 675840, 677888, 679936, 681984, 684032, - 686080, 688128, 690176, 692224, 694272, - 696320, 698368, 700416, 702464, 704512, - 706560, 708608, 710656, 712704, 714752, - 716800, 718848, 720896, 722944, 724992, - 727040, 729088, 731136, 733184, 735232, - 737280, 739328, 741376, 743424, 745472, - 747520, 749568, 751616, 753664, 755712, - 757760, 759808, 761856, 763904, 765952, - 768000, 770048, 772096, 774144, 776192, - 778240, 780288, 782336, 784384, 786432, - 788480, 790528, 792576, 794624, 796672, - 798720, 800768, 802816, 804864, 806912, - 808960, 811008, 813056, 815104, 817152 ; - - GR_32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552, - 153600, 155648, 157696, 159744, 161792, - 163840, 165888, 167936, 169984, 172032, - 174080, 176128, 178176, 180224, 182272, - 184320, 186368, 188416, 190464, 192512, - 194560, 196608, 198656, 200704, 202752, - 204800, 206848, 208896, 210944, 212992, - 215040, 217088, 219136, 221184, 223232, - 225280, 227328, 229376, 231424, 233472, - 235520, 237568, 239616, 241664, 243712, - 245760, 247808, 249856, 251904, 253952, - 256000, 258048, 260096, 262144, 264192, - 266240, 268288, 270336, 272384, 274432, - 276480, 278528, 280576, 282624, 284672, - 286720, 288768, 290816, 292864, 294912, - 296960, 299008, 301056, 303104, 305152, - 307200, 309248, 311296, 313344, 315392, - 317440, 319488, 321536, 323584, 325632, - 327680, 329728, 331776, 333824, 335872, - 337920, 339968, 342016, 344064, 346112, - 348160, 350208, 352256, 354304, 356352, - 358400, 360448, 362496, 364544, 366592, - 368640, 370688, 372736, 374784, 376832, - 378880, 380928, 382976, 385024, 387072, - 389120, 391168, 393216, 395264, 397312, - 399360, 401408, 403456, 405504, 407552, - 409600, 411648, 413696, 415744, 417792, - 419840, 421888, 423936, 425984, 428032, - 430080, 432128, 434176, 436224, 438272, - 440320, 442368, 444416, 446464, 448512, - 450560, 452608, 454656, 456704, 458752, - 460800, 462848, 464896, 466944, 468992, - 471040, 473088, 475136, 477184, 479232, - 481280, 483328, 485376, 487424, 489472, - 491520, 493568, 495616, 497664, 499712, - 501760, 503808, 505856, 507904, 509952, - 512000, 514048, 516096, 518144, 520192, - 522240, 524288, 526336, 528384, 530432, - 532480, 534528, 536576, 538624, 540672, - 542720, 544768, 546816, 548864, 550912, - 552960, 555008, 557056, 559104, 561152, - 563200, 565248, 567296, 569344, 571392, - 573440, 575488, 577536, 579584, 581632, - 583680, 585728, 587776, 589824, 591872, - 593920, 595968, 598016, 600064, 602112, - 604160, 606208, 608256, 610304, 612352, - 614400, 616448, 618496, 620544, 622592, - 624640, 626688, 628736, 630784, 632832, - 634880, 636928, 638976, 641024, 643072, - 645120, 647168, 649216, 651264, 653312, - 655360, 657408, 659456, 661504, 663552, - 665600, 667648, 669696, 671744, 673792, - 675840, 677888, 679936, 681984, 684032, - 686080, 688128, 690176, 692224, 694272, - 696320, 698368, 700416, 702464, 704512, - 706560, 708608, 710656, 712704, 714752, - 716800, 718848, 720896, 722944, 724992, - 727040, 729088, 731136, 733184, 735232, - 737280, 739328, 741376, 743424, 745472, - 747520, 749568, 751616, 753664, 755712, - 757760, 759808, 761856, 763904, 765952, - 768000, 770048, 772096, 774144, 776192, - 778240, 780288, 782336, 784384, 786432, - 788480, 790528, 792576, 794624, 796672, - 798720, 800768, 802816, 804864, 806912, - 808960, 811008, 813056, 815104, 817152, - 819200, 821248, 823296, 825344, 827392, - 829440, 831488, 833536, 835584, 837632, - 839680, 841728, 843776, 845824, 847872, - 849920, 851968, 854016, 856064, 858112, - 860160, 862208, 864256, 866304, 868352, - 870400, 872448, 874496, 876544, 878592, - 880640, 882688, 884736, 886784, 888832, - 890880, 892928, 894976, 897024, 899072, - 901120, 903168, 905216, 907264, 909312, - 911360, 913408, 915456, 917504, 919552, - 921600, 923648, 925696, 927744, 929792, - 931840, 933888, 935936, 937984, 940032, - 942080, 944128, 946176, 948224, 950272, - 952320, 954368, 956416, 958464, 960512, - 962560, 964608, 966656, 968704, 970752, - 972800, 974848, 976896, 978944, 980992, - 983040, 985088, 987136, 989184, 991232, - 993280, 995328, 997376, 999424, 1001472, - 1003520, 1005568, 1007616, 1009664, 1011712, - 1013760, 1015808, 1017856, 1019904, 1021952, - 1024000, 1026048, 1028096, 1030144, 1032192, - 1034240, 1036288, 1038336, 1040384, 1042432, - 1044480, 1046528, 1048576, 1050624, 1052672, - 1054720, 1056768, 1058816, 1060864, 1062912, - 1064960, 1067008, 1069056, 1071104, 1073152, - 1075200, 1077248, 1079296, 1081344, 1083392, - 1085440, 1087488, 1089536, 1091584, 1093632, - 1095680, 1097728, 1099776, 1101824, 1103872, - 1105920, 1107968, 1110016, 1112064, 1114112, - 1116160, 1118208, 1120256, 1122304, 1124352, - 1126400, 1128448, 1130496, 1132544, 1134592, - 1136640, 1138688, 1140736, 1142784, 1144832, - 1146880, 1148928, 1150976, 1153024, 1155072, - 1157120, 1159168, 1161216, 1163264, 1165312, - 1167360, 1169408, 1171456, 1173504, 1175552, - 1177600, 1179648, 1181696, 1183744, 1185792, - 1187840, 1189888, 1191936, 1193984, 1196032, - 1198080, 1200128, 1202176, 1204224, 1206272, - 1208320, 1210368, 1212416, 1214464, 1216512, - 1218560, 1220608, 1222656, 1224704, 1226752, - 1228800, 1230848, 1232896, 1234944, 1236992, - 1239040, 1241088, 1243136, 1245184, 1247232, - 1249280, 1251328, 1253376, 1255424, 1257472, - 1259520, 1261568, 1263616, 1265664, 1267712, - 1269760, 1271808, 1273856, 1275904, 1277952, - 1280000, 1282048, 1284096, 1286144, 1288192, - 1290240, 1292288, 1294336, 1296384, 1298432, - 1300480, 1302528, 1304576, 1306624, 1308672, - 1310720, 1312768, 1314816, 1316864, 1318912, - 1320960, 1323008, 1325056, 1327104, 1329152, - 1331200, 1333248, 1335296, 1337344, 1339392, - 1341440, 1343488, 1345536, 1347584, 1349632, - 1351680, 1353728, 1355776, 1357824, 1359872, - 1361920, 1363968, 1366016, 1368064, 1370112, - 1372160, 1374208, 1376256, 1378304, 1380352, - 1382400, 1384448, 1386496, 1388544, 1390592, - 1392640, 1394688, 1396736, 1398784, 1400832, - 1402880, 1404928, 1406976, 1409024, 1411072, - 1413120, 1415168, 1417216, 1419264, 1421312, - 1423360, 1425408, 1427456, 1429504, 1431552, - 1433600, 1435648, 1437696, 1439744, 1441792, - 1443840, 1445888, 1447936, 1449984, 1452032, - 1454080, 1456128, 1458176, 1460224, 1462272, - 1464320, 1466368, 1468416, 1470464, 1472512, - 1474560, 1476608, 1478656, 1480704, 1482752, - 1484800, 1486848, 1488896, 1490944, 1492992, - 1495040, 1497088, 1499136, 1501184, 1503232, - 1505280, 1507328, 1509376, 1511424, 1513472, - 1515520, 1517568, 1519616, 1521664, 1523712, - 1525760, 1527808, 1529856, 1531904, 1533952, - 1536000, 1538048, 1540096, 1542144, 1544192, - 1546240, 1548288, 1550336, 1552384, 1554432, - 1556480, 1558528, 1560576, 1562624, 1564672, - 1566720, 1568768, 1570816, 1572864, 1574912, - 1576960, 1579008, 1581056, 1583104, 1585152, - 1587200, 1589248, 1591296, 1593344, 1595392, - 1597440, 1599488, 1601536, 1603584, 1605632, - 1607680, 1609728, 1611776, 1613824, 1615872, - 1617920, 1619968, 1622016, 1624064, 1626112, - 1628160, 1630208, 1632256, 1634304, 1636352 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr3.dmp deleted file mode 100644 index d2e07054111..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr3.dmp +++ /dev/null @@ -1,68 +0,0 @@ -netcdf test { -dimensions: - GR_Component__X = 5 ; - GR_Component__Y = 5 ; - GR_Component__comps = 3 ; - GR_Line__X = 5 ; - GR_Line__Y = 5 ; - GR_Line__comps = 3 ; - GR_Pixel__X = 5 ; - GR_Pixel__Y = 5 ; - GR_Pixel__comps = 3 ; -variables: - int GR_Pixel(GR_Pixel__comps, GR_Pixel__Y, GR_Pixel__X) ; - int GR_Line(GR_Line__comps, GR_Line__Y, GR_Line__X) ; - int GR_Component(GR_Component__comps, GR_Component__Y, GR_Component__X) ; -data: - - GR_Pixel = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; - - GR_Line = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; - - GR_Component = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr4.dmp deleted file mode 100644 index d86942b9d4c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr4.dmp +++ /dev/null @@ -1,26 +0,0 @@ -netcdf test { -dimensions: - GR_Palette__X = 5 ; - GR_Palette__Y = 5 ; - GR_Palette__comps = 3 ; -variables: - int GR_Palette(GR_Palette__comps, GR_Palette__Y, GR_Palette__X) ; -data: - - GR_Palette = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352, - 102400, 104448, 106496, 108544, 110592, - 112640, 114688, 116736, 118784, 120832, - 122880, 124928, 126976, 129024, 131072, - 133120, 135168, 137216, 139264, 141312, - 143360, 145408, 147456, 149504, 151552 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr5.dmp deleted file mode 100644 index b08f5fbeeaa..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.gr5.dmp +++ /dev/null @@ -1,177 +0,0 @@ -netcdf test { -dimensions: - GR_DFNT_CHAR8__X = 5 ; - GR_DFNT_CHAR8__Y = 5 ; - GR_DFNT_CHAR8__comps = 3 ; - GR_DFNT_FLOAT32__X = 7 ; - GR_DFNT_FLOAT32__Y = 4 ; - GR_DFNT_FLOAT32__comps = 3 ; - GR_DFNT_FLOAT64__X = 7 ; - GR_DFNT_FLOAT64__Y = 4 ; - GR_DFNT_INT16__X = 5 ; - GR_DFNT_INT16__Y = 5 ; - GR_DFNT_INT16__comps = 2 ; - GR_DFNT_INT32__X = 5 ; - GR_DFNT_INT32__Y = 5 ; - GR_DFNT_INT8__X = 5 ; - GR_DFNT_INT8__Y = 5 ; - GR_DFNT_INT8__comps = 2 ; - GR_DFNT_UCHAR8__X = 3 ; - GR_DFNT_UCHAR8__Y = 5 ; - GR_DFNT_UCHAR8__comps = 3 ; - GR_DFNT_UINT16__X = 3 ; - GR_DFNT_UINT16__Y = 3 ; - GR_DFNT_UINT16__comps = 3 ; - GR_DFNT_UINT32__X = 3 ; - GR_DFNT_UINT32__Y = 3 ; - GR_DFNT_UINT32__comps = 3 ; - GR_DFNT_UINT8__X = 3 ; - GR_DFNT_UINT8__Y = 3 ; - GR_DFNT_UINT8__comps = 3 ; -variables: - int GR_DFNT_INT32(GR_DFNT_INT32__Y, GR_DFNT_INT32__X) ; - uint GR_DFNT_UINT32(GR_DFNT_UINT32__comps, GR_DFNT_UINT32__Y, GR_DFNT_UINT32__X) ; - int GR_DFNT_INT16(GR_DFNT_INT16__comps, GR_DFNT_INT16__Y, GR_DFNT_INT16__X) ; - uint GR_DFNT_UINT16(GR_DFNT_UINT16__comps, GR_DFNT_UINT16__Y, GR_DFNT_UINT16__X) ; - int GR_DFNT_INT8(GR_DFNT_INT8__comps, GR_DFNT_INT8__Y, GR_DFNT_INT8__X) ; - ubyte GR_DFNT_UINT8(GR_DFNT_UINT8__comps, GR_DFNT_UINT8__Y, GR_DFNT_UINT8__X) ; - double GR_DFNT_FLOAT32(GR_DFNT_FLOAT32__comps, GR_DFNT_FLOAT32__Y, GR_DFNT_FLOAT32__X) ; - double GR_DFNT_FLOAT64(GR_DFNT_FLOAT64__Y, GR_DFNT_FLOAT64__X) ; - ubyte GR_DFNT_CHAR8(GR_DFNT_CHAR8__comps, GR_DFNT_CHAR8__Y, GR_DFNT_CHAR8__X) ; - ubyte GR_DFNT_UCHAR8(GR_DFNT_UCHAR8__comps, GR_DFNT_UCHAR8__Y, GR_DFNT_UCHAR8__X) ; -data: - - GR_DFNT_INT32 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152 ; - - GR_DFNT_UINT32 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT16 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT16 = - 0, 4096, 8192, - 12288, 16384, 20480, - 24576, 28672, 32768, - 36864, 40960, 45056, - 49152, 53248, 57344, - 61440, 65536, 69632, - 73728, 77824, 81920, - 86016, 90112, 94208, - 98304, 102400, 106496 ; - - GR_DFNT_INT8 = - 0, 2048, 4096, 6144, 8192, - 10240, 12288, 14336, 16384, 18432, - 20480, 22528, 24576, 26624, 28672, - 30720, 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, 49152, - 51200, 53248, 55296, 57344, 59392, - 61440, 63488, 65536, 67584, 69632, - 71680, 73728, 75776, 77824, 79872, - 81920, 83968, 86016, 88064, 90112, - 92160, 94208, 96256, 98304, 100352 ; - - GR_DFNT_UINT8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26 ; - - GR_DFNT_FLOAT32 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891, - 0.961055438310771, 0.958243875512697, 0.955336489125606, 0.952333569885713, - 0.949235418082441, 0.946042343528387, 0.942754665528346, - 0.939372712847379, 0.935896823677935, 0.932327345606034, 0.92866463557651, - 0.924909059857313, 0.921060994002885, 0.917120822816605, - 0.913088940312308, 0.908965749674885, 0.904751663219963, 0.900447102352677, - 0.896052497525525, 0.891568288195329, 0.886994922779284, - 0.882332858610121, 0.877582561890373, 0.872744507645751, 0.86781917967765, - 0.862807070514761, 0.857708681363824, 0.852524522059506, - 0.847255111013416, 0.841900975162269, 0.836462649915187, 0.830940679100164, - 0.825335614909678, 0.819648017845479, 0.813878456662534, - 0.808027508312152, 0.802095757884293, 0.796083798549056, 0.789992231497365, - 0.783821665880849, 0.777572718750928, 0.771246014997107, - 0.764842187284488, 0.758361875990508, 0.751805729140895, 0.74517440234487, - 0.738468558729588, 0.731688868873821, 0.724836010740905, - 0.717910669610943, 0.710913538012277, 0.703845315652236, 0.696706709347165, - 0.689498432951747, 0.682221207287614, 0.674875760071267 ; - - GR_DFNT_FLOAT64 = - 1, 0.999950000416665, 0.999800006666578, 0.999550033748988, - 0.999200106660978, 0.998750260394966, 0.998200539935204, - 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, - 0.993956097956697, 0.992808635853866, 0.991561893714788, - 0.990215996212637, 0.988771077936042, 0.987227283375627, 0.985584766909561, - 0.983843692788121, 0.98200423511727, 0.980066577841242, - 0.978030914724148, 0.975897449330606, 0.973666395005375, 0.97133797485203, - 0.968912421710645, 0.966389978134513, 0.963770896365891 ; - - GR_DFNT_CHAR8 = - 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74 ; - - GR_DFNT_UCHAR8 = - 0, 1, 2, - 3, 4, 5, - 6, 7, 8, - 9, 10, 11, - 12, 13, 14, - 15, 16, 17, - 18, 19, 20, - 21, 22, 23, - 24, 25, 26, - 27, 28, 29, - 30, 31, 32, - 33, 34, 35, - 36, 37, 38, - 39, 40, 41, - 42, 43, 44 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds1.dmp deleted file mode 100644 index 75424f462e6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds1.dmp +++ /dev/null @@ -1,47 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 5 ; - fakeDim1 = 3 ; - fakeDim2 = 5 ; - fakeDim3 = 3 ; - fakeDim4 = 5 ; - fakeDim5 = 3 ; - fakeDim6 = 7 ; - fakeDim7 = 7 ; - fakeDim8 = 5 ; - fakeDim9 = 3 ; -variables: - int SDS_DFNT_INT32(fakeDim0) ; - uint SDS_DFNT_UINT32(fakeDim1) ; - int SDS_DFNT_INT16(fakeDim2) ; - uint SDS_DFNT_UINT16(fakeDim3) ; - int SDS_DFNT_INT8(fakeDim4) ; - ubyte SDS_DFNT_UINT8(fakeDim5) ; - double SDS_DFNT_FLOAT32(fakeDim6) ; - double SDS_DFNT_FLOAT64(fakeDim7) ; - ubyte SDS_DFNT_CHAR8(fakeDim8) ; - ubyte SDS_DFNT_UCHAR8(fakeDim9) ; -data: - - SDS_DFNT_INT32 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT32 = 0, 4096, 8192 ; - - SDS_DFNT_INT16 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT16 = 0, 4096, 8192 ; - - SDS_DFNT_INT8 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT8 = 0, 1, 2 ; - - SDS_DFNT_FLOAT32 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_FLOAT64 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_CHAR8 = 0, 1, 2, 3, 4 ; - - SDS_DFNT_UCHAR8 = 0, 1, 2 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds2.dmp deleted file mode 100644 index 75424f462e6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds2.dmp +++ /dev/null @@ -1,47 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 5 ; - fakeDim1 = 3 ; - fakeDim2 = 5 ; - fakeDim3 = 3 ; - fakeDim4 = 5 ; - fakeDim5 = 3 ; - fakeDim6 = 7 ; - fakeDim7 = 7 ; - fakeDim8 = 5 ; - fakeDim9 = 3 ; -variables: - int SDS_DFNT_INT32(fakeDim0) ; - uint SDS_DFNT_UINT32(fakeDim1) ; - int SDS_DFNT_INT16(fakeDim2) ; - uint SDS_DFNT_UINT16(fakeDim3) ; - int SDS_DFNT_INT8(fakeDim4) ; - ubyte SDS_DFNT_UINT8(fakeDim5) ; - double SDS_DFNT_FLOAT32(fakeDim6) ; - double SDS_DFNT_FLOAT64(fakeDim7) ; - ubyte SDS_DFNT_CHAR8(fakeDim8) ; - ubyte SDS_DFNT_UCHAR8(fakeDim9) ; -data: - - SDS_DFNT_INT32 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT32 = 0, 4096, 8192 ; - - SDS_DFNT_INT16 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT16 = 0, 4096, 8192 ; - - SDS_DFNT_INT8 = 0, 2048, 4096, 6144, 8192 ; - - SDS_DFNT_UINT8 = 0, 1, 2 ; - - SDS_DFNT_FLOAT32 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_FLOAT64 = 1, 0.999950000416665, 0.999800006666578, - 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204 ; - - SDS_DFNT_CHAR8 = 0, 1, 2, 3, 4 ; - - SDS_DFNT_UCHAR8 = 0, 1, 2 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds3.dmp deleted file mode 100644 index 75e294dfbd8..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds3.dmp +++ /dev/null @@ -1,223 +0,0 @@ -netcdf test { -dimensions: - fakeDim0 = 8 ; - fakeDim1 = 4 ; - fakeDim10 = 2 ; - fakeDim11 = 2 ; - fakeDim12 = 2 ; - fakeDim13 = 2 ; - fakeDim14 = 2 ; - fakeDim15 = 1 ; - fakeDim16 = 2 ; - fakeDim17 = 1 ; - fakeDim18 = 2 ; - fakeDim19 = 1 ; - fakeDim2 = 4 ; - fakeDim20 = 2 ; - fakeDim21 = 1 ; - fakeDim22 = 2 ; - fakeDim23 = 1 ; - fakeDim24 = 2 ; - fakeDim25 = 1 ; - fakeDim26 = 2 ; - fakeDim27 = 1 ; - fakeDim28 = 2 ; - fakeDim29 = 1 ; - fakeDim3 = 4 ; - fakeDim30 = 2 ; - fakeDim31 = 1 ; - fakeDim32 = 2 ; - fakeDim33 = 1 ; - fakeDim34 = 2 ; - fakeDim35 = 2 ; - fakeDim36 = 1 ; - fakeDim37 = 1 ; - fakeDim38 = 1 ; - fakeDim39 = 2 ; - fakeDim4 = 2 ; - fakeDim40 = 1 ; - fakeDim41 = 1 ; - fakeDim42 = 1 ; - fakeDim43 = 2 ; - fakeDim44 = 1 ; - fakeDim45 = 1 ; - fakeDim46 = 1 ; - fakeDim47 = 2 ; - fakeDim48 = 1 ; - fakeDim49 = 1 ; - fakeDim5 = 2 ; - fakeDim50 = 1 ; - fakeDim51 = 2 ; - fakeDim52 = 1 ; - fakeDim53 = 1 ; - fakeDim54 = 1 ; - fakeDim55 = 2 ; - fakeDim56 = 1 ; - fakeDim57 = 1 ; - fakeDim58 = 1 ; - fakeDim59 = 2 ; - fakeDim6 = 2 ; - fakeDim60 = 1 ; - fakeDim61 = 1 ; - fakeDim62 = 1 ; - fakeDim63 = 2 ; - fakeDim64 = 1 ; - fakeDim65 = 1 ; - fakeDim66 = 1 ; - fakeDim67 = 2 ; - fakeDim68 = 1 ; - fakeDim69 = 1 ; - fakeDim7 = 2 ; - fakeDim70 = 1 ; - fakeDim8 = 2 ; - fakeDim9 = 2 ; -variables: - int SDS_2(fakeDim0, fakeDim1) ; - int SDS_3(fakeDim2, fakeDim3, fakeDim4) ; - int SDS_4(fakeDim5, fakeDim6, fakeDim7, fakeDim8) ; - int SDS_5(fakeDim9, fakeDim10, fakeDim11, fakeDim12, fakeDim13) ; - int SDS_6(fakeDim14, fakeDim15, fakeDim16, fakeDim17, fakeDim18, fakeDim19) ; - int SDS_7(fakeDim20, fakeDim21, fakeDim22, fakeDim23, fakeDim24, fakeDim25, fakeDim26) ; - int SDS_8(fakeDim27, fakeDim28, fakeDim29, fakeDim30, fakeDim31, fakeDim32, fakeDim33, fakeDim34) ; - int SDS_16(fakeDim35, fakeDim36, fakeDim37, fakeDim38, fakeDim39, fakeDim40, fakeDim41, fakeDim42, fakeDim43, fakeDim44, fakeDim45, fakeDim46, fakeDim47, fakeDim48, fakeDim49, fakeDim50) ; - int SDS_20(fakeDim51, fakeDim52, fakeDim53, fakeDim54, fakeDim55, fakeDim56, fakeDim57, fakeDim58, fakeDim59, fakeDim60, fakeDim61, fakeDim62, fakeDim63, fakeDim64, fakeDim65, fakeDim66, fakeDim67, fakeDim68, fakeDim69, fakeDim70) ; -data: - - SDS_2 = - 0, 2048, 4096, 6144, - 8192, 10240, 12288, 14336, - 16384, 18432, 20480, 22528, - 24576, 26624, 28672, 30720, - 32768, 34816, 36864, 38912, - 40960, 43008, 45056, 47104, - 49152, 51200, 53248, 55296, - 57344, 59392, 61440, 63488 ; - - SDS_3 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720, - 32768, 34816, - 36864, 38912, - 40960, 43008, - 45056, 47104, - 49152, 51200, - 53248, 55296, - 57344, 59392, - 61440, 63488 ; - - SDS_4 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_5 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720, - 32768, 34816, - 36864, 38912, - 40960, 43008, - 45056, 47104, - 49152, 51200, - 53248, 55296, - 57344, 59392, - 61440, 63488 ; - - SDS_6 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336 ; - - SDS_7 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_8 = - 0, 2048, - 4096, 6144, - 8192, 10240, - 12288, 14336, - 16384, 18432, - 20480, 22528, - 24576, 26624, - 28672, 30720 ; - - SDS_16 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336, - 16384, - 18432, - 20480, - 22528, - 24576, - 26624, - 28672, - 30720 ; - - SDS_20 = - 0, - 2048, - 4096, - 6144, - 8192, - 10240, - 12288, - 14336, - 16384, - 18432, - 20480, - 22528, - 24576, - 26624, - 28672, - 30720, - 32768, - 34816, - 36864, - 38912, - 40960, - 43008, - 45056, - 47104, - 49152, - 51200, - 53248, - 55296, - 57344, - 59392, - 61440, - 63488 ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds4.dmp deleted file mode 100644 index 04b1523d890..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds4.dmp +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test { -types: - compound SDS_1_t { - int SDS_1(16, 5) ; - double Y_Axis(16) ; - int X_Axis(5) ; - }; // SDS_1_t -variables: - SDS_1_t SDS_1 ; -data: - - SDS_1 = - {{0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152, 51200, 53248, 55296, 57344, 59392, 61440, 63488, 65536, 67584, 69632, 71680, 73728, 75776, 77824, 79872, 81920, 83968, 86016, 88064, 90112, 92160, 94208, 96256, 98304, 100352, 102400, 104448, 106496, 108544, 110592, 112640, 114688, 116736, 118784, 120832, 122880, 124928, 126976, 129024, 131072, 133120, 135168, 137216, 139264, 141312, 143360, 145408, 147456, 149504, 151552, 153600, 155648, 157696, 159744, 161792}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204, 0.99755100025328, 0.996801706302619, 0.995952733011994, 0.995004165278026, 0.993956097956697, 0.992808635853866, 0.991561893714788, 0.990215996212637, 0.988771077936042}, {0, 2048, 4096, 6144, 8192}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds5.dmp deleted file mode 100644 index 9091f7e2020..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.sds5.dmp +++ /dev/null @@ -1,77 +0,0 @@ -netcdf test { -types: - compound SDS_DFNT_INT32_t { - int SDS_DFNT_INT32(5) ; - int Axis_DFNT_INT32(5) ; - }; // SDS_DFNT_INT32_t - compound SDS_DFNT_UINT32_t { - uint SDS_DFNT_UINT32(3) ; - int Axis_DFNT_UINT32(3) ; - }; // SDS_DFNT_UINT32_t - compound SDS_DFNT_INT16_t { - int SDS_DFNT_INT16(5) ; - int Axis_DFNT_INT16(5) ; - }; // SDS_DFNT_INT16_t - compound SDS_DFNT_UINT16_t { - uint SDS_DFNT_UINT16(3) ; - int Axis_DFNT_UINT16(3) ; - }; // SDS_DFNT_UINT16_t - compound SDS_DFNT_INT8_t { - int SDS_DFNT_INT8(5) ; - int Axis_DFNT_INT8(5) ; - }; // SDS_DFNT_INT8_t - compound SDS_DFNT_UINT8_t { - ubyte SDS_DFNT_UINT8(3) ; - int Axis_DFNT_UINT8(3) ; - }; // SDS_DFNT_UINT8_t - compound SDS_DFNT_FLOAT32_t { - double SDS_DFNT_FLOAT32(7) ; - double Axis_DFNT_FLOAT32(7) ; - }; // SDS_DFNT_FLOAT32_t - compound SDS_DFNT_FLOAT64_t { - double SDS_DFNT_FLOAT64(7) ; - double Axis_DFNT_FLOAT64(7) ; - }; // SDS_DFNT_FLOAT64_t - compound SDS_DFNT_CHAR8_t { - ubyte SDS_DFNT_CHAR8(5) ; - ubyte Axis_DFNT_CHAR8(5) ; - }; // SDS_DFNT_CHAR8_t - compound SDS_DFNT_UCHAR8_t { - ubyte SDS_DFNT_UCHAR8(3) ; - ubyte Axis_DFNT_UCHAR8(3) ; - }; // SDS_DFNT_UCHAR8_t -variables: - SDS_DFNT_INT32_t SDS_DFNT_INT32 ; - SDS_DFNT_UINT32_t SDS_DFNT_UINT32 ; - SDS_DFNT_INT16_t SDS_DFNT_INT16 ; - SDS_DFNT_UINT16_t SDS_DFNT_UINT16 ; - SDS_DFNT_INT8_t SDS_DFNT_INT8 ; - SDS_DFNT_UINT8_t SDS_DFNT_UINT8 ; - SDS_DFNT_FLOAT32_t SDS_DFNT_FLOAT32 ; - SDS_DFNT_FLOAT64_t SDS_DFNT_FLOAT64 ; - SDS_DFNT_CHAR8_t SDS_DFNT_CHAR8 ; - SDS_DFNT_UCHAR8_t SDS_DFNT_UCHAR8 ; -data: - - SDS_DFNT_INT32 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT32 = {{0, 4096, 8192}, {0, 2048, 4096}} ; - - SDS_DFNT_INT16 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT16 = {{0, 4096, 8192}, {0, 2048, 4096}} ; - - SDS_DFNT_INT8 = {{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}} ; - - SDS_DFNT_UINT8 = {{0, 1, 2}, {0, 2048, 4096}} ; - - SDS_DFNT_FLOAT32 = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}} ; - - SDS_DFNT_FLOAT64 = - {{1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}, {1, 0.999950000416665, 0.999800006666578, 0.999550033748988, 0.999200106660978, 0.998750260394966, 0.998200539935204}} ; - - SDS_DFNT_CHAR8 = {{0, 1, 2, 3, 4}, {0, 1, 2, 3, 4}} ; - - SDS_DFNT_UCHAR8 = {{0, 1, 2}, {0, 1, 2}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs1.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs1.dmp deleted file mode 100644 index 0bf2b9e795e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs1.dmp +++ /dev/null @@ -1,109 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = {{{1}}, {{2}}, {{3}}, {{5}}, {{8}}} ; - - Vdata_DFNT_UINT32 = {{{0}}, {{2}}, {{6}}, {{12}}, {{20}}} ; - - Vdata_DFNT_INT16 = {{{13}}, {{21}}, {{34}}, {{55}}, {{89}}} ; - - Vdata_DFNT_UINT16 = {{{30}}, {{42}}, {{56}}, {{72}}, {{90}}} ; - - Vdata_DFNT_INT8 = {{{144}}, {{233}}, {{377}}, {{610}}, {{987}}} ; - - Vdata_DFNT_UINT8 = {{{0}}, {{1}}, {{2}}, {{3}}, {{4}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000}}, {{999.950000416665}}, {{999.800006666578}}, {{999.550033748988}}, {{999.200106660978}}} ; - - Vdata_DFNT_FLOAT64 = - {{{998.750260394966}}, {{998.200539935204}}, {{997.55100025328}}, {{996.801706302619}}, {{995.952733011994}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs2.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs2.dmp deleted file mode 100644 index 2be6870e769..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs2.dmp +++ /dev/null @@ -1,145 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - int Field_DFNT_INT32__1 ; - int Field_DFNT_INT32__2 ; - int Field_DFNT_INT32__3 ; - int Field_DFNT_INT32__4 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - uint Field_DFNT_UINT32__1 ; - uint Field_DFNT_UINT32__2 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - int Field_DFNT_INT16__1 ; - int Field_DFNT_INT16__2 ; - int Field_DFNT_INT16__3 ; - int Field_DFNT_INT16__4 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - uint Field_DFNT_UINT16__1 ; - uint Field_DFNT_UINT16__2 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - int Field_DFNT_INT8__1 ; - int Field_DFNT_INT8__2 ; - int Field_DFNT_INT8__3 ; - int Field_DFNT_INT8__4 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - ubyte Field_DFNT_UINT8__1 ; - ubyte Field_DFNT_UINT8__2 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - double Field_DFNT_FLOAT32__1 ; - double Field_DFNT_FLOAT32__2 ; - double Field_DFNT_FLOAT32__3 ; - double Field_DFNT_FLOAT32__4 ; - double Field_DFNT_FLOAT32__5 ; - double Field_DFNT_FLOAT32__6 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - double Field_DFNT_FLOAT64__1 ; - double Field_DFNT_FLOAT64__2 ; - double Field_DFNT_FLOAT64__3 ; - double Field_DFNT_FLOAT64__4 ; - double Field_DFNT_FLOAT64__5 ; - double Field_DFNT_FLOAT64__6 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = - {{{1, 2, 3, 5, 8}}, {{13, 21, 34, 55, 89}}, {{144, 233, 377, 610, 987}}, {{1597, 2584, 4181, 6765, 10946}}, {{17711, 28657, 46368, 75025, 121393}}} ; - - Vdata_DFNT_UINT32 = - {{{0, 2, 6}}, {{12, 20, 30}}, {{42, 56, 72}}, {{90, 110, 132}}, {{156, 182, 210}}} ; - - Vdata_DFNT_INT16 = - {{{196418, 317811, 514229, 832040, 1346269}}, {{2178309, 3524578, 5702887, 9227465, 14930352}}, {{24157817, 39088169, 63245986, 102334155, 165580141}}, {{267914296, 433494437, 701408733, 1134903170, 1836311903}}, {{-1323752223, 512559680, -811192543, -298632863, -1109825406}}} ; - - Vdata_DFNT_UINT16 = - {{{240, 272, 306}}, {{342, 380, 420}}, {{462, 506, 552}}, {{600, 650, 702}}, {{756, 812, 870}}} ; - - Vdata_DFNT_INT8 = - {{{-1408458269, 1776683621, 368225352, 2144908973, -1781832971}}, {{363076002, -1418756969, -1055680967, 1820529360, 764848393}}, {{-1709589543, -944741150, 1640636603, 695895453, -1958435240}}, {{-1262539787, 1073992269, -188547518, 885444751, 696897233}}, {{1582341984, -2015728079, -433386095, 1845853122, 1412467027}}} ; - - Vdata_DFNT_UINT8 = - {{{0, 1, 2}}, {{3, 4, 5}}, {{6, 7, 8}}, {{9, 10, 11}}, {{12, 13, 14}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000, 999.950000416665, 999.800006666578, 999.550033748988, 999.200106660978, 998.750260394966, 998.200539935204}}, {{997.55100025328, 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697, 992.808635853866, 991.561893714788}}, {{990.215996212637, 988.771077936042, 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727, 980.066577841242}}, {{978.030914724148, 975.897449330605, 973.666395005375, 971.33797485203, 968.912421710645, 966.389978134513, 963.770896365891}}, {{961.055438310771, 958.243875512697, 955.336489125606, 952.333569885713, 949.235418082441, 946.042343528387, 942.754665528346}}} ; - - Vdata_DFNT_FLOAT64 = - {{{939.372712847379, 935.896823677935, 932.327345606034, 928.66463557651, 924.909059857313, 921.060994002885, 917.120822816605}}, {{913.088940312308, 908.965749674885, 904.751663219963, 900.447102352677, 896.052497525525, 891.568288195329, 886.994922779284}}, {{882.332858610121, 877.582561890373, 872.744507645751, 867.81917967765, 862.807070514761, 857.708681363824, 852.524522059506}}, {{847.255111013416, 841.900975162269, 836.462649915187, 830.940679100163, 825.335614909678, 819.648017845479, 813.878456662534}}, {{808.027508312152, 802.095757884292, 796.083798549056, 789.992231497365, 783.821665880849, 777.572718750928, 771.246014997106}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs3.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs3.dmp deleted file mode 100644 index 12bf119dc8e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs3.dmp +++ /dev/null @@ -1,52 +0,0 @@ -netcdf test { -types: - compound dINT32_t { - int dINT32__0 ; - }; // dINT32_t - compound dUINT32_t { - uint dUINT32__0 ; - }; // dUINT32_t - compound dINT16_t { - int dINT16__0 ; - }; // dINT16_t - compound dUINT16_t { - uint dUINT16__0 ; - }; // dUINT16_t - compound dINT8_t { - int dINT8__0 ; - }; // dINT8_t - compound dUINT8_t { - ubyte dUINT8__0 ; - }; // dUINT8_t - compound dFLOAT32_t { - double dFLOAT32__0 ; - }; // dFLOAT32_t - compound dFLOAT64_t { - double dFLOAT64__0 ; - }; // dFLOAT64_t - compound dCHAR8_t { - string dCHAR8__0 ; - }; // dCHAR8_t - compound dUCHAR8_t { - string dUCHAR8__0 ; - }; // dUCHAR8_t - compound Vdata_record_t { - dINT32_t dINT32 ; - dUINT32_t dUINT32 ; - dINT16_t dINT16 ; - dUINT16_t dUINT16 ; - dINT8_t dINT8 ; - dUINT8_t dUINT8 ; - dFLOAT32_t dFLOAT32 ; - dFLOAT64_t dFLOAT64 ; - dCHAR8_t dCHAR8 ; - dUCHAR8_t dUCHAR8 ; - }; // Vdata_record_t - Vdata_record_t(*) Vdata_t ; -variables: - Vdata_t Vdata ; -data: - - Vdata = - {{{1}, {0}, {2}, {2}, {3}, {0}, {1000}, {999.950000416665}, {"This is a data test string (pass 0)."}, {"This is a data test string (pass 1)."}}, {{5}, {6}, {8}, {12}, {13}, {1}, {999.800006666578}, {999.550033748988}, {"This is a data test string (pass 2)."}, {"This is a data test string (pass 3)."}}, {{21}, {20}, {34}, {30}, {55}, {2}, {999.200106660978}, {998.750260394966}, {"This is a data test string (pass 4)."}, {"This is a data test string (pass 5)."}}, {{89}, {42}, {144}, {56}, {233}, {3}, {998.200539935204}, {997.55100025328}, {"This is a data test string (pass 6)."}, {"This is a data test string (pass 7)."}}, {{377}, {72}, {610}, {90}, {987}, {4}, {996.801706302619}, {995.952733011994}, {"This is a data test string (pass 8)."}, {"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs4.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs4.dmp deleted file mode 100644 index 0bf2b9e795e..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs4.dmp +++ /dev/null @@ -1,109 +0,0 @@ -netcdf test { -types: - compound Field_DFNT_INT32_t { - int Field_DFNT_INT32__0 ; - }; // Field_DFNT_INT32_t - compound Vdata_DFNT_INT32_record_t { - Field_DFNT_INT32_t Field_DFNT_INT32 ; - }; // Vdata_DFNT_INT32_record_t - Vdata_DFNT_INT32_record_t(*) Vdata_DFNT_INT32_t ; - compound Field_DFNT_UINT32_t { - uint Field_DFNT_UINT32__0 ; - }; // Field_DFNT_UINT32_t - compound Vdata_DFNT_UINT32_record_t { - Field_DFNT_UINT32_t Field_DFNT_UINT32 ; - }; // Vdata_DFNT_UINT32_record_t - Vdata_DFNT_UINT32_record_t(*) Vdata_DFNT_UINT32_t ; - compound Field_DFNT_INT16_t { - int Field_DFNT_INT16__0 ; - }; // Field_DFNT_INT16_t - compound Vdata_DFNT_INT16_record_t { - Field_DFNT_INT16_t Field_DFNT_INT16 ; - }; // Vdata_DFNT_INT16_record_t - Vdata_DFNT_INT16_record_t(*) Vdata_DFNT_INT16_t ; - compound Field_DFNT_UINT16_t { - uint Field_DFNT_UINT16__0 ; - }; // Field_DFNT_UINT16_t - compound Vdata_DFNT_UINT16_record_t { - Field_DFNT_UINT16_t Field_DFNT_UINT16 ; - }; // Vdata_DFNT_UINT16_record_t - Vdata_DFNT_UINT16_record_t(*) Vdata_DFNT_UINT16_t ; - compound Field_DFNT_INT8_t { - int Field_DFNT_INT8__0 ; - }; // Field_DFNT_INT8_t - compound Vdata_DFNT_INT8_record_t { - Field_DFNT_INT8_t Field_DFNT_INT8 ; - }; // Vdata_DFNT_INT8_record_t - Vdata_DFNT_INT8_record_t(*) Vdata_DFNT_INT8_t ; - compound Field_DFNT_UINT8_t { - ubyte Field_DFNT_UINT8__0 ; - }; // Field_DFNT_UINT8_t - compound Vdata_DFNT_UINT8_record_t { - Field_DFNT_UINT8_t Field_DFNT_UINT8 ; - }; // Vdata_DFNT_UINT8_record_t - Vdata_DFNT_UINT8_record_t(*) Vdata_DFNT_UINT8_t ; - compound Field_DFNT_FLOAT32_t { - double Field_DFNT_FLOAT32__0 ; - }; // Field_DFNT_FLOAT32_t - compound Vdata_DFNT_FLOAT32_record_t { - Field_DFNT_FLOAT32_t Field_DFNT_FLOAT32 ; - }; // Vdata_DFNT_FLOAT32_record_t - Vdata_DFNT_FLOAT32_record_t(*) Vdata_DFNT_FLOAT32_t ; - compound Field_DFNT_FLOAT64_t { - double Field_DFNT_FLOAT64__0 ; - }; // Field_DFNT_FLOAT64_t - compound Vdata_DFNT_FLOAT64_record_t { - Field_DFNT_FLOAT64_t Field_DFNT_FLOAT64 ; - }; // Vdata_DFNT_FLOAT64_record_t - Vdata_DFNT_FLOAT64_record_t(*) Vdata_DFNT_FLOAT64_t ; - compound Field_DFNT_CHAR8_t { - string Field_DFNT_CHAR8__0 ; - }; // Field_DFNT_CHAR8_t - compound Vdata_DFNT_CHAR8_record_t { - Field_DFNT_CHAR8_t Field_DFNT_CHAR8 ; - }; // Vdata_DFNT_CHAR8_record_t - Vdata_DFNT_CHAR8_record_t(*) Vdata_DFNT_CHAR8_t ; - compound Field_DFNT_UCHAR8_t { - string Field_DFNT_UCHAR8__0 ; - }; // Field_DFNT_UCHAR8_t - compound Vdata_DFNT_UCHAR8_record_t { - Field_DFNT_UCHAR8_t Field_DFNT_UCHAR8 ; - }; // Vdata_DFNT_UCHAR8_record_t - Vdata_DFNT_UCHAR8_record_t(*) Vdata_DFNT_UCHAR8_t ; -variables: - Vdata_DFNT_INT32_t Vdata_DFNT_INT32 ; - Vdata_DFNT_UINT32_t Vdata_DFNT_UINT32 ; - Vdata_DFNT_INT16_t Vdata_DFNT_INT16 ; - Vdata_DFNT_UINT16_t Vdata_DFNT_UINT16 ; - Vdata_DFNT_INT8_t Vdata_DFNT_INT8 ; - Vdata_DFNT_UINT8_t Vdata_DFNT_UINT8 ; - Vdata_DFNT_FLOAT32_t Vdata_DFNT_FLOAT32 ; - Vdata_DFNT_FLOAT64_t Vdata_DFNT_FLOAT64 ; - Vdata_DFNT_CHAR8_t Vdata_DFNT_CHAR8 ; - Vdata_DFNT_UCHAR8_t Vdata_DFNT_UCHAR8 ; -data: - - Vdata_DFNT_INT32 = {{{1}}, {{2}}, {{3}}, {{5}}, {{8}}} ; - - Vdata_DFNT_UINT32 = {{{0}}, {{2}}, {{6}}, {{12}}, {{20}}} ; - - Vdata_DFNT_INT16 = {{{13}}, {{21}}, {{34}}, {{55}}, {{89}}} ; - - Vdata_DFNT_UINT16 = {{{30}}, {{42}}, {{56}}, {{72}}, {{90}}} ; - - Vdata_DFNT_INT8 = {{{144}}, {{233}}, {{377}}, {{610}}, {{987}}} ; - - Vdata_DFNT_UINT8 = {{{0}}, {{1}}, {{2}}, {{3}}, {{4}}} ; - - Vdata_DFNT_FLOAT32 = - {{{1000}}, {{999.950000416665}}, {{999.800006666578}}, {{999.550033748988}}, {{999.200106660978}}} ; - - Vdata_DFNT_FLOAT64 = - {{{998.750260394966}}, {{998.200539935204}}, {{997.55100025328}}, {{996.801706302619}}, {{995.952733011994}}} ; - - Vdata_DFNT_CHAR8 = - {{{"This is a data test string (pass 0)."}}, {{"This is a data test string (pass 1)."}}, {{"This is a data test string (pass 2)."}}, {{"This is a data test string (pass 3)."}}, {{"This is a data test string (pass 4)."}}} ; - - Vdata_DFNT_UCHAR8 = - {{{"This is a data test string (pass 5)."}}, {{"This is a data test string (pass 6)."}}, {{"This is a data test string (pass 7)."}}, {{"This is a data test string (pass 8)."}}, {{"This is a data test string (pass 9)."}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs5.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs5.dmp deleted file mode 100644 index 6fb24c4f040..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/test.vs5.dmp +++ /dev/null @@ -1,38 +0,0 @@ -netcdf test { -types: - compound Array_Vgroup_t { - int SDS_Array(5) ; - }; // Array_Vgroup_t - compound SDS_Grid_t { - int SDS_Grid(5) ; - int fakeDim1(5) ; - }; // SDS_Grid_t - compound Grid_Vgroup_t { - SDS_Grid_t SDS_Grid ; - }; // Grid_Vgroup_t - compound GR_Vgroup_t { - int GRaster(5, 5) ; - }; // GR_Vgroup_t - compound Field_t { - int Field__0 ; - }; // Field_t - compound Vdata_record_t { - Field_t Field ; - }; // Vdata_record_t - Vdata_record_t(*) Vdata_t ; - compound Vdata_Vgroup_t { - Vdata_t Vdata ; - }; // Vdata_Vgroup_t - compound Main_Vgroup_t { - Array_Vgroup_t Array_Vgroup ; - Grid_Vgroup_t Grid_Vgroup ; - GR_Vgroup_t GR_Vgroup ; - Vdata_Vgroup_t Vdata_Vgroup ; - }; // Main_Vgroup_t -variables: - Main_Vgroup_t Main_Vgroup ; -data: - - Main_Vgroup = - {{{0, 2048, 4096, 6144, 8192}}, {{{0, 2048, 4096, 6144, 8192}, {0, 2048, 4096, 6144, 8192}}}, {{0, 2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720, 32768, 34816, 36864, 38912, 40960, 43008, 45056, 47104, 49152}}, {{{{1}}, {{2}}, {{3}}, {{5}}, {{8}}}}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/whoi.dmp b/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/whoi.dmp deleted file mode 100644 index baa39770580..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/expectremote4/whoi.dmp +++ /dev/null @@ -1,20 +0,0 @@ -netcdf whoi { -types: - compound emolt_sensor_record_t { - string SITE ; - short SERIAL_NUM ; - short PROBE_SETTING ; - string TIME_LOCAL ; - double YRDAY0_LOCAL ; - double TEMP ; - double SALT ; - double DEPTH_I ; - }; // emolt_sensor_record_t - emolt_sensor_record_t(*) emolt_sensor_t ; -variables: - emolt_sensor_t emolt_sensor ; -data: - - emolt_sensor = - {{"This is a data test string (pass 0).", 0, 16, "This is a data test string (pass 1).", 1000, 999.950000416665, 999.800006666578, 999.550033748988}, {"This is a data test string (pass 2).", 32, 48, "This is a data test string (pass 3).", 999.200106660978, 998.750260394966, 998.200539935204, 997.55100025328}, {"This is a data test string (pass 4).", 64, 80, "This is a data test string (pass 5).", 996.801706302619, 995.952733011994, 995.004165278026, 993.956097956697}, {"This is a data test string (pass 6).", 96, 112, "This is a data test string (pass 7).", 992.808635853866, 991.561893714788, 990.215996212637, 988.771077936042}, {"This is a data test string (pass 8).", 128, 144, "This is a data test string (pass 9).", 987.227283375627, 985.584766909561, 983.843692788121, 982.00423511727}} ; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/nctestserver.c b/contrib/netcdf/4.4.1.1/ncdap_test/nctestserver.c deleted file mode 100644 index e2f87df562d..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/nctestserver.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include -#include -#include "netcdf.h" -#include "ncdispatch.h" - -/** -Given a partial suffix path, -try to find a server for which -a request to that server + path -returns some kind of result. -This indicates that the server is up -and running. -Return the complete url for the server -plus the path. -*/ - -int -main(int argc, char** argv) -{ - const char* url = NULL; - const char* path = NULL; - char* serverlist[64]; - int nservers = 0; - - if(argc == 1) - path = ""; - else if(argc >= 2) - path = argv[1]; - if(argc >= 3) { - int i; - for(i=2;i -#include -#include -#include - - -#define URL1 "http://%s" /* test that no trailing / is ok */ -static char url1[1024]; - -#ifdef DEBUG -static void -CHECK(int e, const char* msg) -{ - if(e == NC_NOERR) return; - if(msg == NULL) msg = "Error"; - printf("%s: %s\n", msg, nc_strerror(e)); - exit(1); -} -#endif - -static void -XFAIL(int e, const char* msg) -{ - if(e == NC_NOERR) return; - if(msg == NULL) msg = "XFAIL"; - printf("%s: %s\n", msg, nc_strerror(e)); -} - -int -main() -{ - int ncid,retval; - - { - char* evv = getenv("DTSTESTSERVER"); - if(evv == NULL) - evv = "remotetest.unidata.ucar.edu"; - snprintf(url1,sizeof(url1),URL1,evv); - } - - printf("Testing: Misc. Tests \n"); - retval = nc_open(url1, 0, &ncid); - XFAIL(retval,"*** XFail : No trailing slash in url"); - retval = nc_close(ncid); - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.am b/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.am deleted file mode 100755 index e3578bb6dcc..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.am +++ /dev/null @@ -1,101 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.7 2009/05/30 21:28:53 dmh Exp $ - -EXTRA_DIST = \ -synth1.das synth1.dds synth1.dods \ -synth2.das synth2.dds synth2.dods \ -synth3.das synth3.dds synth3.dods \ -synth4.das synth4.dds synth4.dods \ -synth5.das synth5.dds synth5.dods \ -synth6.das synth6.dds synth6.dods \ -synth7.das synth7.dds synth7.dods \ -synth10.das synth10.dds synth10.dods \ -123bears.nc.das 123bears.nc.dds 123bears.nc.dods \ -123.nc.das 123.nc.dds 123.nc.dods \ -1990-S1700101.HDF.WVC_Lat.das 1990-S1700101.HDF.WVC_Lat.dds 1990-S1700101.HDF.WVC_Lat.dods \ -1998-6-avhrr.dat.das 1998-6-avhrr.dat.dds 1998-6-avhrr.dat.dods \ -b31.das b31.dds b31.dods \ -b31a.das b31a.dds b31a.dods \ -bears.nc.das bears.nc.dds bears.nc.dods \ -ber-2002-10-01.nc.das ber-2002-10-01.nc.dds ber-2002-10-01.nc.dods \ -ceopL2AIRS2-2.nc.das ceopL2AIRS2-2.nc.dds ceopL2AIRS2-2.nc.dods \ -ceopL2AIRS2.nc.das ceopL2AIRS2.nc.dds ceopL2AIRS2.nc.dods \ -D1.das D1.dds D1.dods \ -data.nc.das data.nc.dds data.nc.dods \ -Drifters.das Drifters.dds Drifters.dods \ -EOSDB.das EOSDB.dds EOSDB.dods \ -fnoc1.nc.das fnoc1.nc.dds fnoc1.nc.dods \ -in1.nc.das in1.nc.dds in1.nc.dods \ -in_2.nc.das in_2.nc.dds in_2.nc.dods \ -ingrid.das ingrid.dds ingrid.dods \ -in.nc.das in.nc.dds in.nc.dods \ -in_no_three_double_dmn.nc.das in_no_three_double_dmn.nc.dds in_no_three_double_dmn.nc.dods \ -in_v.nc.das in_v.nc.dds in_v.nc.dods \ -nestedDAS.das nestedDAS.dds nestedDAS.dods \ -NestedSeq.das NestedSeq.dds NestedSeq.dods \ -NestedSeq2.das NestedSeq2.dds NestedSeq2.dods \ -OverideExample.das OverideExample.dds OverideExample.dods \ -pbug0001b.das pbug0001b.dds pbug0001b.dods \ -saco1.nc.das saco1.nc.dds saco1.nc.dods \ -SimpleDrdsExample.das SimpleDrdsExample.dds SimpleDrdsExample.dods \ -test.01.das test.01.dds test.01.dods \ -test.02.das test.02.dds test.02.dods \ -test.03.das test.03.dds test.03.dods \ -test.04.das test.04.dds test.04.dods \ -test.05.das test.05.dds test.05.dods \ -test.06.das test.06.dds test.06.dods \ -test.06a.das test.06a.dds test.06a.dods \ -test.07.das test.07.dds test.07.dods \ -test.07a.das test.07a.dds test.07a.dods \ -test.21.das test.21.dds test.21.dods \ -test.22.das test.22.dds test.22.dods \ -test.23.das test.23.dds test.23.dods \ -test.31.das test.31.dds test.31.dods \ -test.32.das test.32.dds test.32.dods \ -test.50.das test.50.dds test.50.dods \ -test.53.das test.53.dds test.53.dods \ -test.55.das test.55.dds test.55.dods \ -test.56.das test.56.dds test.56.dods \ -test.57.das test.57.dds test.57.dods \ -test.66.das test.66.dds test.66.dods \ -test.67.das test.67.dds test.67.dods \ -test.68.das test.68.dds test.68.dods \ -test.69.das test.69.dds test.69.dods \ -test.an1.das test.an1.dds test.an1.dods \ -test.dfp1.das test.dfp1.dds test.dfp1.dods \ -test.dfr1.das test.dfr1.dds test.dfr1.dods \ -test.dfr2.das test.dfr2.dds test.dfr2.dods \ -test.dfr3.das test.dfr3.dds test.dfr3.dods \ -testfile.nc.das testfile.nc.dds testfile.nc.dods \ -test.gr1.das test.gr1.dds test.gr1.dods \ -test.gr2.das test.gr2.dds test.gr2.dods \ -test.gr3.das test.gr3.dds test.gr3.dods \ -test.gr4.das test.gr4.dds test.gr4.dods \ -test.gr5.das test.gr5.dds test.gr5.dods \ -test.nc.das test.nc.dds test.nc.dods \ -test.PointFile.das test.PointFile.dds test.PointFile.dods \ -test.sds1.das test.sds1.dds test.sds1.dods \ -test.sds2.das test.sds2.dds test.sds2.dods \ -test.sds3.das test.sds3.dds test.sds3.dods \ -test.sds4.das test.sds4.dds test.sds4.dods \ -test.sds5.das test.sds5.dds test.sds5.dods \ -test.sds6.das test.sds6.dds test.sds6.dods \ -test.sds7.das test.sds7.dds test.sds7.dods \ -test.SwathFile.das test.SwathFile.dds test.SwathFile.dods \ -test.vs1.das test.vs1.dds test.vs1.dods \ -test.vs2.das test.vs2.dds test.vs2.dods \ -test.vs3.das test.vs3.dds test.vs3.dods \ -test.vs4.das test.vs4.dds test.vs4.dods \ -test.vs5.das test.vs5.dds test.vs5.dods \ -text.nc.das text.nc.dds text.nc.dods \ -whoi.das whoi.dds whoi.dods \ -CMakeLists.txt - -# following are not legally convertible to dap2 -#synth8.das synth8.dds synth8.dods -#synth9.das synth9.dds synth9.dods - diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.in b/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.in deleted file mode 100644 index 314278dcf43..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/testdata3/Makefile.in +++ /dev/null @@ -1,595 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.7 2009/05/30 21:28:53 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdap_test/testdata3 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -synth1.das synth1.dds synth1.dods \ -synth2.das synth2.dds synth2.dods \ -synth3.das synth3.dds synth3.dods \ -synth4.das synth4.dds synth4.dods \ -synth5.das synth5.dds synth5.dods \ -synth6.das synth6.dds synth6.dods \ -synth7.das synth7.dds synth7.dods \ -synth10.das synth10.dds synth10.dods \ -123bears.nc.das 123bears.nc.dds 123bears.nc.dods \ -123.nc.das 123.nc.dds 123.nc.dods \ -1990-S1700101.HDF.WVC_Lat.das 1990-S1700101.HDF.WVC_Lat.dds 1990-S1700101.HDF.WVC_Lat.dods \ -1998-6-avhrr.dat.das 1998-6-avhrr.dat.dds 1998-6-avhrr.dat.dods \ -b31.das b31.dds b31.dods \ -b31a.das b31a.dds b31a.dods \ -bears.nc.das bears.nc.dds bears.nc.dods \ -ber-2002-10-01.nc.das ber-2002-10-01.nc.dds ber-2002-10-01.nc.dods \ -ceopL2AIRS2-2.nc.das ceopL2AIRS2-2.nc.dds ceopL2AIRS2-2.nc.dods \ -ceopL2AIRS2.nc.das ceopL2AIRS2.nc.dds ceopL2AIRS2.nc.dods \ -D1.das D1.dds D1.dods \ -data.nc.das data.nc.dds data.nc.dods \ -Drifters.das Drifters.dds Drifters.dods \ -EOSDB.das EOSDB.dds EOSDB.dods \ -fnoc1.nc.das fnoc1.nc.dds fnoc1.nc.dods \ -in1.nc.das in1.nc.dds in1.nc.dods \ -in_2.nc.das in_2.nc.dds in_2.nc.dods \ -ingrid.das ingrid.dds ingrid.dods \ -in.nc.das in.nc.dds in.nc.dods \ -in_no_three_double_dmn.nc.das in_no_three_double_dmn.nc.dds in_no_three_double_dmn.nc.dods \ -in_v.nc.das in_v.nc.dds in_v.nc.dods \ -nestedDAS.das nestedDAS.dds nestedDAS.dods \ -NestedSeq.das NestedSeq.dds NestedSeq.dods \ -NestedSeq2.das NestedSeq2.dds NestedSeq2.dods \ -OverideExample.das OverideExample.dds OverideExample.dods \ -pbug0001b.das pbug0001b.dds pbug0001b.dods \ -saco1.nc.das saco1.nc.dds saco1.nc.dods \ -SimpleDrdsExample.das SimpleDrdsExample.dds SimpleDrdsExample.dods \ -test.01.das test.01.dds test.01.dods \ -test.02.das test.02.dds test.02.dods \ -test.03.das test.03.dds test.03.dods \ -test.04.das test.04.dds test.04.dods \ -test.05.das test.05.dds test.05.dods \ -test.06.das test.06.dds test.06.dods \ -test.06a.das test.06a.dds test.06a.dods \ -test.07.das test.07.dds test.07.dods \ -test.07a.das test.07a.dds test.07a.dods \ -test.21.das test.21.dds test.21.dods \ -test.22.das test.22.dds test.22.dods \ -test.23.das test.23.dds test.23.dods \ -test.31.das test.31.dds test.31.dods \ -test.32.das test.32.dds test.32.dods \ -test.50.das test.50.dds test.50.dods \ -test.53.das test.53.dds test.53.dods \ -test.55.das test.55.dds test.55.dods \ -test.56.das test.56.dds test.56.dods \ -test.57.das test.57.dds test.57.dods \ -test.66.das test.66.dds test.66.dods \ -test.67.das test.67.dds test.67.dods \ -test.68.das test.68.dds test.68.dods \ -test.69.das test.69.dds test.69.dods \ -test.an1.das test.an1.dds test.an1.dods \ -test.dfp1.das test.dfp1.dds test.dfp1.dods \ -test.dfr1.das test.dfr1.dds test.dfr1.dods \ -test.dfr2.das test.dfr2.dds test.dfr2.dods \ -test.dfr3.das test.dfr3.dds test.dfr3.dods \ -testfile.nc.das testfile.nc.dds testfile.nc.dods \ -test.gr1.das test.gr1.dds test.gr1.dods \ -test.gr2.das test.gr2.dds test.gr2.dods \ -test.gr3.das test.gr3.dds test.gr3.dods \ -test.gr4.das test.gr4.dds test.gr4.dods \ -test.gr5.das test.gr5.dds test.gr5.dods \ -test.nc.das test.nc.dds test.nc.dods \ -test.PointFile.das test.PointFile.dds test.PointFile.dods \ -test.sds1.das test.sds1.dds test.sds1.dods \ -test.sds2.das test.sds2.dds test.sds2.dods \ -test.sds3.das test.sds3.dds test.sds3.dods \ -test.sds4.das test.sds4.dds test.sds4.dods \ -test.sds5.das test.sds5.dds test.sds5.dods \ -test.sds6.das test.sds6.dds test.sds6.dods \ -test.sds7.das test.sds7.dds test.sds7.dods \ -test.SwathFile.das test.SwathFile.dds test.SwathFile.dods \ -test.vs1.das test.vs1.dds test.vs1.dods \ -test.vs2.das test.vs2.dds test.vs2.dods \ -test.vs3.das test.vs3.dds test.vs3.dods \ -test.vs4.das test.vs4.dds test.vs4.dods \ -test.vs5.das test.vs5.dds test.vs5.dods \ -text.nc.das text.nc.dds text.nc.dods \ -whoi.das whoi.dds whoi.dods \ -CMakeLists.txt - -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 ncdap_test/testdata3/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdap_test/testdata3/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# following are not legally convertible to dap2 -#synth8.das synth8.dds synth8.dods -#synth9.das synth9.dds synth9.dods - -# 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/contrib/netcdf/4.4.1.1/ncdap_test/testurl.sh b/contrib/netcdf/4.4.1.1/ncdap_test/testurl.sh deleted file mode 100755 index c9f88f70897..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/testurl.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh -#set -x - -#NOP=1 -#NOS=1 -#NOB=1 - -#SHOW=1 -#DBG=1 -#GDB=1 - -# if this is part of a distcheck action, then this script -# will be executed in a different directory -# than the one containing it; so capture the path to this script -# as the location of the source directory. - -# capture the build directory -# Do a hack to remove e.g. c: for CYGWIN -builddir=`pwd`/.. -if test "x$TOPSRCDIR" != x ; then -srcdir="$TOPSRCDIR/ncdap_test" -else -srcdir=`dirname $0` -fi -# canonical -cd $srcdir -srcdir=`pwd` - -# Hack for CYGWIN -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - srcdir=`echo $srcdir | sed 's/\/c\//c:\//g'` - builddir=`echo $builddir | sed 's/\/c\//c:\//g'` -fi -cd ${builddir}/ncdap_test - -OCLOGFILE=stderr -if test "x$DBG" = x1 ; then -SHOW=1 -fi - -NCDUMP=$builddir/ncdump/ncdump - -URL="http://remotetest.unidata.ucar.edu/dts/test.03" - -PREFIX="[log][show=fetch]" -SUFFIX="log&show=fetch" -BOTHP="[log][show=fetch]" -BOTHS="noprefetch&fetch=disk" - -locreset () { - rm -f ./tmp ./errtmp -} - -buildurl () { - front="$1" - back="$2" - url="${front}${URL}" - if test "x$back" != x ; then - url="${url}#${back}" - fi -} - -pass=1 - -if test "x$GDB" = x1 ; then -NCDUMP="gdb --args $NCDUMP" -fi - -# Initialize -locreset - -if test "x$NOP" != x1 ; then -echo "***Testing url prefix parameters" -buildurl $PREFIX "" -# Invoke ncdump to extract the URL -echo "command: ${NCDUMP} -h $url" -${NCDUMP} -h "$url" >./tmp 2> ./errtmp -if test "x${SHOW}" = x1 ; then cat ./tmp ; fi -fi - -locreset -if test "x$NOS" != x1 ; then -echo "***Testing url suffix parameters" -buildurl "" $SUFFIX -# Invoke ncdump to extract the URL -echo "command: ${NCDUMP} -h $url" -${NCDUMP} -h "$url" >./tmp 2> ./errtmp -if test "x${SHOW}" = x1 ; then cat ./tmp ; fi -fi - -locreset -if test "x$NOB" != x1 ; then -echo "***Testing url prefix+suffix parameters" -buildurl $BOTHP $BOTHS -# Invoke ncdump to extract the URL -echo "command: ${NCDUMP} -h $url" -${NCDUMP} -h "$url" >./tmp 2> ./errtmp -if test "x${SHOW}" = x1 ; then cat ./tmp ; fi -fi - -locreset - -if test "x$pass" = x0 ; then - echo "***FAIL" - exit 1 -fi -echo "***PASS" -exit 0 - - diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_formatx.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_formatx.sh deleted file mode 100755 index 1e26047d314..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_formatx.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# This shell script tests the output several previous tests. -# $Id: tst_output.sh,v 1.17 2010/05/14 16:21:15 ed Exp $ - - -echo "" -echo "*** Testing extended file format output." -set -e - -# Figure our dst server -DTS=`./nctestserver dts ${DTSTESTSERVER}` -if test "x$DTS" = "x" ; then -echo "cannot locate test server for dts" -exit -fi -URL="$DTS/test.03" - -ECODE=0 -echo "Test extended format output for a DAP2 file" -rm -f tmp -../ncdump/ncdump -K $URL >tmp -if ! grep 'DAP2 mode=00000000' ${x}.dmp ; then ok=$ok; else ok=0; fi - # compare with expected - if diff -w ${EXPECTED}/${x}.dmp ${x}.dmp ; then ok=$ok; else ok=0; fi - if test "$ok" = 1 ; then - status=0 # succeed - elif test "x$isxfail" = "x0" ; then - status=1 # fail - else - status=2 # xfail - fi - - case "$status" in - 0) - passcount=`expr $passcount + 1` - if test "x$quiet" = "x" ; then echo "*** SUCCEED: ${x}"; fi - ;; - 1) - failcount=`expr $failcount + 1` - echo "*** FAIL: ${x}" - ;; - 2) - xfailcount=`expr $xfailcount + 1` - echo "*** XFAIL : ${x}" - ;; - esac - -done - -rm -f ./.dodsrc ./.ocrc ./.daprc - -cd .. -echo "pwd=" `pwd` - -totalcount=`expr $passcount + $failcount + $xfailcount` -okcount=`expr $passcount + $xfailcount` - - -echo "*** PASSED: ${okcount}/${totalcount} ; ${xfailcount} expected failures ; ${failcount} unexpected failures" - -#failcount=0 -if test "$failcount" -gt 0 -then - exit 1 -else - exit 0 -fi diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap3.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap3.sh deleted file mode 100755 index 3b0f3b19f2d..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap3.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -set -e - -#X="-x" -#grind="checkleaks" - -# if this is part of a distcheck action, then this script -# will be executed in a different directory -# than the one containing it; so capture the path to this script -# as the location of the source directory. - -srcdir=`dirname $0` -#set -x -# compute the build directory -# Do a hack to remove e.g. c: for MSYS -cd `pwd` -builddir=`pwd`/.. - -# Hack for MSYS -cd $srcdir -srcdir=`pwd` -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - srcdir=`pwd | sed 's/\/c\//c:\//g'` - builddir=`echo $builddir | sed 's/\/c\//c:\//g'` - - srcdir=`pwd | sed 's/\/g\//g:\//g'` - builddir=`echo $builddir | sed 's/\/g\//g:\//g'` -fi - - - -cd ${builddir}/ncdap_test - - -#exec sh $X ${srcdir}/tst_ncdap.sh "$srcdir" "$builddir" "file3" $grind -exec sh $X ${srcdir}/tst_ncdap.sh "$srcdir" "$builddir" "dds3" $grind - diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap4.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap4.sh deleted file mode 100755 index c421e3ab373..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap4.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -set -e - -#X="-x" -#grind="checkleaks" - -# if this is part of a distcheck action, then this script -# will be executed in a different directory -# than the one containing it; so capture the path to this script -# as the location of the source directory. -srcdir=`dirname $0` -cd $srcdir -srcdir=`pwd` - -# compute the build directory -# Do a hack to remove e.g. c: for CYGWIN -builddir=`pwd`/.. -# Hack for CYGWIN -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - srcdir=`pwd | sed 's/\/c\//c:\//g'` - builddir="$srcdir"/.. -fi -cd ${builddir}/ncdap_test - -exec $X ${srcdir}/tst_ncdap.sh "$srcdir" "$builddir" "file4" $grind diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap_shared.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap_shared.sh deleted file mode 100755 index 8fbbe7e4111..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_ncdap_shared.sh +++ /dev/null @@ -1,55 +0,0 @@ -# $Id: tst_ncdap_shared.sh,v 1.9 2009/12/03 03:42:39 dmh Exp $ - -################################################## -# Local test info -################################################## - -# Define the complete URLS - -FILEURL="file://${testdata3}" - -# Synth8 and Synth9 still fail - -SYNTHETICDATA="synth1 synth2 synth3 synth4 synth5 synth6 synth7 synth10" - -ACTUALDATA1=\ -"1990-S1700101.HDF.WVC_Lat 1998-6-avhrr.dat \ -b31a b31 D1 Drifters \ -EOSDB ingrid nestedDAS NestedSeq2 \ -NestedSeq OverideExample pbug0001b SimpleDrdsExample \ -test.01 test.02 test.03 test.04 \ -test.05 test.06a test.07a \ -test.07 test.21 test.22 \ -test.23 test.31 \ -test.50 test.53 test.55 \ -test.56 test.57 \ -test.66 test.67 test.68 test.69 \ -test.an1 \ -test.dfp1 test.dfr1 test.dfr2 test.dfr3 \ -test.gr1 test.gr2 test.gr3 test.gr4 \ -test.gr5 test.PointFile test.sds1 \ -test.sds2 test.sds3 test.sds4 test.sds5 \ -test.sds6 test.sds7 test.vs1 \ -test.vs2 test.vs3 test.vs4 test.vs5 whoi" - -ACTUALDATA2=\ -"123bears.nc 123.nc bears.nc \ -ber-2002-10-01.nc ceopL2AIRS2-2.nc \ -data.nc fnoc1.nc \ -in1.nc in_2.nc in.nc \ -in_no_three_double_dmn.nc in_v.nc saco1.nc \ -test.nc text.nc" - -# XFAIL tests should be a subset of the other tests; this is used -# only to detect which are considered XFAIL tests. -XFAILTESTS="" - -# For now, remove some tests from windows platform. -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - XFAILTESTS="$XFAILTESTS EOSDB OverideExample SimpleDrdsExample test.67 test.gr5 123bears.nc 123.nc bears.nc ber-2002-10-01 data.nc in1.nc in_2.nc in_no_three_double_dmn.nc test.nc text.nc test.22 test.23 test.gr1 in.nc ber-2002-10-01.nc" -fi - -FILETESTS="${SYNTHETICDATA} ${ACTUALDATA1} ${ACTUALDATA2}" -#DDSTESTS intersect FILETESTS should empty -DDSTESTS= - diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote.sh deleted file mode 100755 index 3c240ce2cf7..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote.sh +++ /dev/null @@ -1,357 +0,0 @@ -#!/bin/sh -set -x -set -e - -quiet=0 -leakcheck=0 -timing=0 - -# Figure our dst server -DTS=`./nctestserver dts ${DTSTESTSERVER}` -if test "x$DTS" = "x" ; then -echo "cannot locate test server for dts" -exit -fi - -PARAMS="[log]" -#PARAMS="${PARAMS}[show=fetch]" - - -# Determine If we're on OSX or Linux - -myplatform=`uname -a | cut -d" " -f 1` - - -#OCLOGFILE=/dev/null -OCLOGFILE="" ; export OCLOGFILE - -# Capture arguments -srcdir="$1" -builddir="$2" -mode="$3" -if test "x$4" = "x" ; then cache=1 ; else cache=0; fi -longtests="$5" - -if test "x$timing" = "x1" ; then leakcheck=0; fi - -# get the list of test files -# Currently C2 fails because server is not responding -#WHICHTESTS="S1 C1 C2 CB" -WHICHTESTS="S1 C1 CB" - -if test -n "$longtests"; then -WHICHTESTS="${WHICHTESTS} L1 LC1 LC2" -fi - -#locate the testdata and expected directory -if test "$cache" = 0 ; then -# No cache means no cache, including prefetch -CACHE="[noprefetch]" -expected3="${srcdir}/nocacheremote3" -expected4="${srcdir}/nocacheremote4" -else -CACHE="[cache][prefetch]" -expected3="${srcdir}/expectremote3" -expected4="${srcdir}/expectremote4" -fi - -PARAMS="${PARAMS}${CACHE}" - -################################################## -# Remote test info -################################################## - -# For special testing -REMOTEURLX="$DTS" -REMOTETESTSX="test.03" - -REMOTEURLXC="$DTS" -REMOTETESTSXC="test.03;1;s0,s1" - -# These shorter tests are always run -REMOTEURLS1="$DTS" -REMOTETESTSS1="\ -test.01 test.02 test.04 test.05 test.07a test.07 \ -test.21 \ -test.50 test.53 test.55 test.56 test.57 \ -test.66 test.67 test.68 test.69" - -# Server is failing on some tests ; investigate why -S1FAIL="test.06a test.22 test.23 test.31" -# This fails because of the duplicate name problem and the way thredds dap handles grids" -S2FAIL="test.06" - -# These longer tests are optional -REMOTEURLL1="$REMOTEURLS1" -REMOTETESTSL1="\ -test.03 \ -b31 b31a D1 Drifters EOSDB \ -ingrid nestedDAS NestedSeq NestedSeq2 OverideExample \ -SimpleDrdsExample test.an1 \ -test.dfp1 test.gr1 \ -test.gr2 test.gr3 test.gr4 test.gr5 \ -test.sds1 test.sds2 test.sds3 \ -test.sds4 test.sds5 \ -test.vs1 test.vs2 test.vs3 test.vs4 test.vs5 \ -whoi" - -# Anything larger than about 100k will not be in the distribution -TOOBIGL1="parserBug0001 test.satimage Sat_Images test.32" - -# Following contain %XX escapes which I cannot handle yet -ESCAPEDFAIL="test.dfr1 test.dfr2 test.dfr3 test.GridFile test.PointFile test.SwathFile test.sds6 test.sds7" - -# Following tests are to check constraint handling -REMOTEURLC1="$DTS" -REMOTETESTSC1="\ -test.01;1;f64 \ -test.02;1;b[1:2:10] \ -test.03;1;i32[0:1][1:2][0:2] \ -test.04;1;types.i32 \ -test.05;1;types.floats.f32 \ -test.07;1;person.age \ -test.07;3;person \ -test.07;4;types.f32" - -# See S2FAIL above -SR1FAIL="test.06;1;ThreeD" - -# Following tests are to check selection handling -REMOTEURLC2="http://oceanwatch.pfeg.noaa.gov/opendap/GLOBEC" -REMOTETESTSC2="\ -GLOBEC_cetaceans;1;number&number>6 \ -GLOBEC_cetaceans;2;lat,lon&lat>42.0&lat<=42.5\ -" - -# C3 is too slow for testing. It has nested sequences. -#We need to think about better optimizations -REMOTEURLC3="http://dapper.pmel.noaa.gov/dapper/argo" -REMOTETESTSC3="\ -argo_all.cdp;1;&location.LATITUDE<1&location.LATITUDE>-1\ -" - -# Constrained long tests -REMOTEURLLC1="$DTS" -REMOTETESTSLC1="\ -test.03;2;s1" - -REMOTEURLLC2="http://ferret.pmel.noaa.gov/geoide/dodsC/PSDgriddedData/ncep.reanalysis.dailyavgs/surface" -REMOTETESTSLC2="slp_aggregated;1;slp.slp[23255:23316][29:29][88:88]" - -# Unknown problem: test.07;2;&age>2 -IGNORE="test.07.2" - -# Columbia hack test -REMOTEURLCB="http://iridl.ldeo.columbia.edu/SOURCES/.Models/.NMME/.NASA-GMAO/.MONTHLY/.sst" -REMOTETESTSCB="dods" - -# Known to fail - -XFAILTESTS3="" -# For now, remove some tests from windows platform. -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - XFAILTESTS3="$XFAILTESTS3 test.67" -fi - -XFAILTESTS4="$XFAILTESTS3" - -# Server is down at the moment -SVCFAILTESTS3="GLOBEC_cetaceans.1 GLOBEC_cetaceans.2" -SVCFAILTESTS4="$SVCFAILTESTS3" - -# Misc tests not currently used -REMOTEURL0="http://test.opendap.org/opendap/netcdf/examples" -REMOTETESTS0="\ -cami_0000-09-01_64x128_L26_c030918.nc \ -ECMWF_ERA-40_subset.nc \ -sresa1b_ncar_ccsm3_0_run1_200001.nc \ -tos_O1_2001-2002.nc -123bears.nc \ -ber-2002-10-01.nc \ -ceopL2AIRS2-2.nc \ -ceopL2AIRS2.nc \ -data.nc \ -fnoc1.nc \ -in1.nc \ -in_2.nc \ -in.nc \ -in_no_three_double_dmn.nc \ -in_v.nc \ -saco1.nc \ -testfile.nc \ -text.nc \ -" - -case "$mode" in -3) - EXPECTED="$expected3" - TITLE="DAP to netCDF-3 translation" - PARAMS="${PARAMS}[netcdf3]" - XFAILTESTS="$XFAILTESTS3" - SVCFAILTESTS="$SVCFAILTESTS3" - ;; -4) - EXPECTED="$expected4" - TITLE="DAP to netCDF-4 translation" - PARAMS="${PARAMS}[netcdf4]" - XFAILTESTS="$XFAILTESTS4" - SVCFAILTESTS="$SVCFAILTESTS4" - ;; -esac - -RESULTSDIR="./results" -# Locate some tools -NCDUMP="${builddir}/ncdump/ncdump" -if test "x$leakcheck" = x1 ; then -VALGRIND="valgrind -q --error-exitcode=2 --leak-check=full" -else -VALGRIND= -fi -if test "x$timing" = "x1" ; then TIMECMD="time"; else TIMECMD=""; fi - -rm -fr ${RESULTSDIR} -mkdir "${RESULTSDIR}" - -passcount=0 -xfailcount=0 -svcfailcount=0 -failcount=0 - -echo "*** Testing $TITLE " -echo " Client Parameters: ${PARAMS}" -if test "$cache" = 0; then -echo " Caching: off" -else -echo " Caching: on" -fi -echo " Note: The remote tests may be slow or even fail if the server is overloaded" - -status=0 - -for i in $WHICHTESTS ; do - constrained=0 - case "$i" in - S1) TESTURL="$REMOTEURLS1" ; TESTSET="$REMOTETESTSS1" ;; - S2) TESTURL="$REMOTEURLS2" ; TESTSET="$REMOTETESTSS2" ;; - L1) TESTURL="$REMOTEURLL1" ; TESTSET="$REMOTETESTSL1" ;; - L2) TESTURL="$REMOTEURLL2" ; TESTSET="$REMOTETESTSL2" ;; - C1) TESTURL="$REMOTEURLC1" ; TESTSET="$REMOTETESTSC1" ; constrained=1 ;; - C2) TESTURL="$REMOTEURLC2" ; TESTSET="$REMOTETESTSC2" ; constrained=1 ;ncconstrained=0 ;; - C3) TESTURL="$REMOTEURLC3" ; TESTSET="$REMOTETESTSC3" ; constrained=1 ;ncconstrained=0 ;; - LC1) TESTURL="$REMOTEURLLC1" ; TESTSET="$REMOTETESTSLC1" ; constrained=1 ;; - LC2) TESTURL="$REMOTEURLLC2" ; TESTSET="$REMOTETESTSLC2" ; constrained=1 ;; - X) TESTURL="$REMOTEURLX" ; TESTSET="$REMOTETESTSX" ; constrained=0 ;; - XC) TESTURL="$REMOTEURLXC" ; TESTSET="$REMOTETESTSXC" ; constrained=1 ;; - *) echo "Unknown which test: $i" ;; - esac - -rm -f ./.dodsrc ./.ocrc ./.daprc -cd ${RESULTSDIR} - -for t in ${TESTSET} ; do - - # see if we are using constraints - #index=`expr index "${t}" ";"` - - #echo index: $index - if [ "$myplatform" = "Darwin" ]; then - index=`echo "${t}" | sed -n "s/;.*//p" | wc -c` - if (( $index == 0 )) ; then - constrained=0 - else - constrained=1 - fi - else - if index=`expr index "${t}" ";"` ; then ignore=1; fi # avoid set -e - if test "x$index" = "x0" ; then - constrained=0 - else - constrained=1 - fi - fi - - if test "x$constrained" = "x0" ; then # No constraint - testname=$t - ce= - else # Constrained - - testname=`echo $t | cut -d ';' -f1` - testno=`echo $t | cut -d ';' -f2` - ce=`echo $t | cut -d ';' -f3-` - fi - if test "x$constrained" = "x0" ; then - name="${testname}" - url="${PARAMS}${TESTURL}/$testname" - else - name="${testname}.${testno}" - url="${PARAMS}${TESTURL}/$testname?${ce}" - fi - if test "x$quiet" = "x0" ; then echo "*** Testing: ${name}"; fi - if test "x$quiet" = "x0" ; then echo "*** URL: ${url}"; fi - - # determine if this is an xfailtest - isxfail=0 - for x in ${XFAILTESTS} ; do - if test "x${name}" = "x${x}" ; then isxfail=1; fi - done - - # determine if this is a down server test - issvcfail=0 - for x in ${SVCFAILTESTS} ; do - if test "x${name}" = "x${x}" ; then issvcfail=1; fi - done - - status=0 - - echo "command = ${TIMECMD} ${VALGRIND} ${NCDUMP} ${url} \> ${name}.dmp" - if ${TIMECMD} ${VALGRIND} ${NCDUMP} "${url}" > ${name}.dmp ; then status=$status; else status=1; fi - # compare with expected - if diff -w ${EXPECTED}/${name}.dmp ${name}.dmp - then status=$status; else status=1; fi - if test "x$status" = "x1" ; then - if test "x$isxfail" = "x1" ; then status=2; fi # xfail - if test "x$issvcfail" = "x1" ; then status=3; fi # svcfail - fi - - case "$status" in - 0) - passcount=`expr $passcount + 1` - if test "x$quiet" = "x" ; then echo "*** SUCCEED: ${name}"; fi - ;; - 1) - failcount=`expr $failcount + 1` - echo "*** FAIL: ${name}" - ;; - 2) - xfailcount=`expr $xfailcount + 1` - echo "*** XFAIL : ${name}" - ;; - 3) - svcfailcount=`expr $svcfailcount + 1` - echo "*** SVCFAIL : ${name}" - ;; - esac - -done - -rm -f ./.dodsrc - -cd .. - -done - -totalcount=`expr $passcount + $failcount + $xfailcount + $svcfailcount` -okcount=`expr $passcount + $xfailcount + $svcfailcount` - -echo "*** PASSED: ${okcount}/${totalcount} ; ${xfailcount} expected failures ; ${failcount} unexpected failures" -if test "$svcfailcount" -gt 0 ; then -echo " ${svcfailcount} failures from unavailable server" -fi - -# Ignore failures for now -#failcount=0 -if test "$failcount" -gt 0 ; then - exit 1 -else - exit 0 -fi diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote3.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote3.sh deleted file mode 100755 index 2ad26937355..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote3.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -# if this is part of a distcheck action, then this script -# will be executed in a different directory -# than the one containing it; so capture the path to this script -# as the location of the source directory. -srcdir=`dirname $0` - -# compute the build directory -builddir=`pwd`/.. -# Hack for CYGWIN -cd $srcdir -srcdir=`pwd` -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - srcdir=`pwd | sed 's/\/c\//c:\//g'` - builddir="$srcdir"/.. -fi -cd ${builddir}/ncdap_test - -sh ${srcdir}/tst_remote.sh "$srcdir" "$builddir" "3" "" "" -exit diff --git a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote4.sh b/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote4.sh deleted file mode 100755 index 6aba70b3310..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdap_test/tst_remote4.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -# if this is part of a distcheck action, then this script -# will be executed in a different directory -# than the one containing it; so capture the path to this script -# as the location of the source directory. -srcdir=`dirname $0` -cd $srcdir -srcdir=`pwd` -# compute the build directory -# Do a hack to remove e.g. c: for CYGWIN -builddir=`pwd`/.. -# Hack for CYGWIN -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then - srcdir=`pwd | sed 's/\/c\//c:\//g'` - builddir="$srcdir"/.. -fi -cd ${builddir}/ncdap_test - -sh ${srcdir}/tst_remote.sh "$srcdir" "$builddir" "4" "" "" -exit diff --git a/contrib/netcdf/4.4.1.1/ncdump/CMakeLists.txt b/contrib/netcdf/4.4.1.1/ncdump/CMakeLists.txt deleted file mode 100644 index 8d888a18839..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/CMakeLists.txt +++ /dev/null @@ -1,230 +0,0 @@ -IF(BUILD_SHARED_LIBS AND WIN32) - remove_definitions(-DDLL_EXPORT) - remove_definitions(-DDLL_NETCDF) -ENDIF() - -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ctest.c - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/ref_ctest.c" - "${CMAKE_CURRENT_BINARY_DIR}/ctest.c" - ) -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ctest64.c - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/ref_ctest64.c" - "${CMAKE_CURRENT_BINARY_DIR}/ctest64.c" - ) - -SET(ncdump_FILES ncdump.c vardata.c dumplib.c indent.c nctime0.c utils.c nciter.c) -SET(nccopy_FILES nccopy.c nciter.c chunkspec.c utils.c dimmap.c) - -IF(USE_X_GETOPT) - SET(ncdump_FILES ${ncdump_FILES} XGetopt.c) - SET(nccopy_FILES ${nccopy_FILES} XGetopt.c) -ENDIF() - -ADD_EXECUTABLE(ncdump ${ncdump_FILES}) -ADD_EXECUTABLE(nccopy ${nccopy_FILES}) - -TARGET_LINK_LIBRARIES(ncdump netcdf ${ALL_TLL_LIBS}) -TARGET_LINK_LIBRARIES(nccopy netcdf ${ALL_TLL_LIBS}) - -#### -# We have to do a little tweaking -# to remove the Release/ and Debug/ directories -# in MSVC builds. This is required to get -# test scripts to work. -#### -IF(MSVC) - SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - - SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) -ENDIF() - - -IF(ENABLE_TESTS) - ADD_EXECUTABLE(rewrite-scalar rewrite-scalar.c) - ADD_EXECUTABLE(bom bom.c) - ADD_EXECUTABLE(tst_dimsizes tst_dimsizes.c) - TARGET_LINK_LIBRARIES(rewrite-scalar netcdf) - TARGET_LINK_LIBRARIES(bom netcdf) - TARGET_LINK_LIBRARIES(tst_dimsizes netcdf) - -IF(USE_NETCDF4) - ADD_EXECUTABLE(tst_fileinfo tst_fileinfo.c) - TARGET_LINK_LIBRARIES(tst_fileinfo netcdf) - add_sh_test(ncdump tst_fileinfo) -ENDIF() - -IF(MSVC) - SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - - SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - - SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(tst_fileinfo PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) -ENDIF() - - # Base tests - # The tests are set up as a combination of shell scripts and executables that - # must be run in a particular order. It is painful but will use macros to help - # keep it from being too bad. - - ## Start adding tests in the appropriate order - add_sh_test(ncdump run_tests) - add_sh_test(ncdump tst_64bit) - add_bin_test(ncdump ctest) - add_bin_test(ncdump ctest64) - add_sh_test(ncdump tst_output) - add_sh_test(ncdump tst_lengths) - add_sh_test(ncdump tst_calendars) - add_bin_test(ncdump tst_utf8) - add_sh_test(ncdump run_utf8_tests) - IF(USE_NETCDF4) - add_sh_test(ncdump run_utf8_nc4_tests) - ENDIF(USE_NETCDF4) - - add_sh_test(ncdump tst_nccopy3) - add_sh_test(ncdump tst_charfill) - - add_sh_test(ncdump tst_formatx3) - add_sh_test(ncdump tst_bom) - add_sh_test(ncdump tst_dimsizes) - - # The following test script invokes - # gcc directly. - IF(CMAKE_COMPILER_IS_GNUCC OR APPLE) - IF(ENABLE_LARGE_FILE_TESTS) - add_sh_test(ncdump tst_iter) - ENDIF(ENABLE_LARGE_FILE_TESTS) - ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE) - - IF(BUILD_DISKLESS) - add_sh_test(ncdump tst_inmemory_nc3) - IF(USE_NETCDF4) - add_sh_test(ncdump tst_inmemory_nc4) - ENDIF(USE_NETCDF4) - ENDIF(BUILD_DISKLESS) - - IF(USE_NETCDF4) - add_bin_test(ncdump tst_create_files) - add_bin_test(ncdump tst_group_data) - add_bin_test(ncdump tst_enum_data) - add_bin_test(ncdump tst_opaque_data) - add_bin_test(ncdump tst_string_data) - add_bin_test(ncdump tst_vlen_data) - add_bin_test(ncdump tst_comp) - add_bin_test(ncdump tst_comp2) - add_bin_test(ncdump tst_nans) - add_bin_test(ncdump tst_h_scalar) - add_bin_test(ncdump tst_bug324) - add_sh_test(ncdump tst_formatx4) - # Add this test by hand, as it is also called from a script. - # Editing the script would break autotools compatibility. - add_bin_test_no_prefix(tst_special_atts) - add_bin_test_no_prefix(tst_compress) - add_bin_test_no_prefix(tst_chunking) - - - ### - # This test fails on Visual Studio builds with bash. - # It passes, but technically fails because the scientific - # formatting omits a 0. - ### - IF(EXTRA_TESTS AND NOT MSVC) - add_sh_test(ncdump run_back_comp_tests) - ENDIF() - - # Known failure on MSVC; the number of 0's padding - # is different, but the result is actually correct. - #IF(NOT MSVC) - add_sh_test(ncdump tst_netcdf4) - add_bin_test(ncdump tst_h_rdc0) - #ENDIF() - - add_bin_test(ncdump tst_unicode) - - add_bin_test(ncdump tst_fillbug) - add_sh_test(ncdump_sh tst_fillbug) - - IF(NOT MSVC) - add_sh_test(ncdump tst_netcdf4_4) - ENDIF() - - - - IF(NOT MSVC) - add_sh_test(ncdump tst_nccopy4) - ENDIF() - - add_sh_test(ncdump tst_grp_spec) - add_sh_test(ncdump tst_mud) - add_sh_test(ncdump_shell tst_h_scalar) - - ENDIF() - - add_sh_test(ncdump tst_ncgen4_classic) - IF(USE_NETCDF4) - add_sh_test(ncdump tst_ncgen4) - ENDIF() - - add_sh_test(ncdump tst_inttags) - IF(USE_NETCDF4) - add_sh_test(ncdump tst_inttags4) - ENDIF() - - -ENDIF() - -IF(MSVC) - SET_TARGET_PROPERTIES(ncdump - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - SET_TARGET_PROPERTIES(nccopy - PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" - ) - -ENDIF() - - -INSTALL(TARGETS ncdump RUNTIME DESTINATION bin COMPONENT utilities) -INSTALL(TARGETS nccopy RUNTIME DESTINATION bin COMPONENT utilities) -SET(MAN_FILES nccopy.1 ncdump.1) - - -FILE(GLOB COPY_FILES ${CMAKE_BINARY_DIR}/ncgen/*.nc ${CMAKE_BINARY_DIR}/nc_test4/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.ncml ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.1) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) - -ADD_SUBDIRECTORY(cdl) -ADD_SUBDIRECTORY(expected) - -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") - -IF(NOT MSVC) - INSTALL(FILES ${MAN_FILES} DESTINATION "share/man/man1" COMPONENT documentation) -ENDIF() diff --git a/contrib/netcdf/4.4.1.1/ncdump/Makefile.am b/contrib/netcdf/4.4.1.1/ncdump/Makefile.am deleted file mode 100644 index 4cc53ff8841..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/Makefile.am +++ /dev/null @@ -1,167 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncdump program. - -# $Id: Makefile.am,v 1.147 2010/05/29 00:50:39 dmh Exp $ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am -LDADD = ${top_builddir}/liblib/libnetcdf.la - -TESTS_ENVIRONMENT=CC=${CC} - -# This is the program we're building, and it's sources. -bin_PROGRAMS = ncdump -ncdump_SOURCES = ncdump.c vardata.c dumplib.c indent.c nctime0.c \ -ncdump.h vardata.h dumplib.h indent.h isnan.h nctime0.h cdl.h \ -utils.h utils.c nciter.h nciter.c nccomps.h - -# Another utility program that copies any netCDF file using only the -# netCDF API -bin_PROGRAMS += nccopy -nccopy_SOURCES = nccopy.c nciter.c nciter.h chunkspec.h chunkspec.c \ -utils.h utils.c dimmap.h dimmap.c - -# This is the man page. -man_MANS = ncdump.1 nccopy.1 - -if BUILD_TESTSETS -#if !BUILD_DLL -# These tests are run for both netCDF-4 and non-netCDF-4 builds. -check_PROGRAMS = rewrite-scalar ctest ctest64 ncdump tst_utf8 bom tst_dimsizes - -TESTS = tst_inttags.sh run_tests.sh tst_64bit.sh ctest ctest64 tst_output.sh \ -tst_lengths.sh tst_calendars.sh tst_utf8 run_utf8_tests.sh \ -tst_nccopy3.sh tst_charfill.sh tst_iter.sh tst_formatx3.sh tst_bom.sh \ -tst_dimsizes.sh - -if USE_NETCDF4 -check_PROGRAMS += tst_fileinfo -TESTS += tst_fileinfo.sh -endif - -if LARGE_FILE_TESTS -TESTS += tst_iter.sh -endif - -if BUILD_DISKLESS -TESTS += tst_inmemory_nc3.sh -if USE_NETCDF4 -TESTS += tst_inmemory_nc4.sh -endif -endif - -if USE_NETCDF4 -# NetCDF-4 has some extra tests. -check_PROGRAMS += tst_create_files tst_h_rdc0 tst_group_data \ -tst_enum_data tst_opaque_data tst_string_data tst_vlen_data tst_comp \ -tst_comp2 tst_nans tst_special_atts tst_unicode tst_fillbug tst_compress \ -tst_chunking tst_h_scalar tst_bug324 - -TESTS += tst_inttags4.sh tst_create_files tst_group_data tst_enum_data tst_opaque_data \ -tst_string_data tst_vlen_data tst_comp tst_comp2 tst_nans \ -tst_special_atts tst_netcdf4.sh tst_h_rdc0 tst_unicode tst_fillbug \ -tst_fillbug.sh tst_netcdf4_4.sh tst_compress tst_nccopy4.sh \ -tst_grp_spec.sh tst_mud.sh tst_h_scalar tst_h_scalar.sh tst_formatx4.sh \ -tst_bug324 run_utf8_nc4_tests.sh - -if EXTRA_TESTS -TESTS += run_back_comp_tests.sh -endif # EXTRA_TESTS - -tst_h_rdc0_CPPFLAGS = -I${top_srcdir}/nc_test ${AM_CPPFLAGS} - -endif #!USE_NETCDF4 -#endif #!BUILD_DLL - -# Can't run ncgen to generate ctest.c and ctest64.c on cross-compiles. -BUILT_SOURCES = ctest.c ctest64.c -if EXTRA_TESTS -ctest.c: - $(top_builddir)/ncgen/ncgen -lc -o ctest0.nc $(top_srcdir)/ncgen/c0.cdl > $(top_builddir)/ncdump/ctest.c - -ctest64.c: - $(top_builddir)/ncgen/ncgen -k2 -lc -o ctest0_64.nc $(top_srcdir)/ncgen/c0.cdl > $(srcdir)/ctest64.c -else -ctest.c: - cp $(top_srcdir)/ncdump/ref_ctest.c $(top_builddir)/ncdump/ctest.c - -ctest64.c: - cp $(top_srcdir)/ncdump/ref_ctest64.c $(top_builddir)/ncdump/ctest64.c -endif - -#if !BUILD_DLL -TESTS += tst_ncgen4_classic.sh -if USE_NETCDF4 -TESTS += tst_ncgen4.sh -endif -#endif - -else # BSK - when BUILD_TESTSETS is false, we still need this rule -ctest.c: - cp $(top_srcdir)/ncdump/ref_ctest.c $(top_srcdir)/ncdump/ctest.c - -ctest64.c: - cp $(top_srcdir)/ncdump/ref_ctest64.c $(top_srcdir)/ncdump/ctest64.c - -endif BUILD_TESTSETS_FALSE - -CLEANFILES = test0.nc test1.cdl test1.nc test2.cdl ctest1.cdl \ -ctest0.nc ctest0_64.nc c1.cdl c1_4.cdl ctest1_64.cdl c0.nc c0_4.nc small.nc \ -small2.nc c0tmp.nc c1.ncml utf8.cdl utf8_64.cdl utf8.nc utf8_64.nc \ -tmp.cdl tst_vlen_data.nc tst_utf8.nc tst_special_atts.nc \ -tst_unicode.nc tst_solar_2.nc tst_string_data.nc tst_calendars.nc \ -tst_nans.nc tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc \ -tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_bug321.nc tst_comp2.nc tst_ncml.nc \ -tst_fillbug.nc tst_group_data.nc tst_small.nc tst_comp.nc \ -tst_unicode.cdl tst_group_data.cdl tst_compounds2.cdl tst_comp.cdl \ -tst_enum_data.cdl tst_small.cdl tst_times.cdl tst_solar_2.cdl \ -tst_string_data.cdl tst_fillbug.cdl tst_opaque_data.cdl \ -tst_compounds4.cdl tst_utf8.cdl tst_compounds3.cdl \ -tst_special_atts.cdl tst_nans.cdl tst_format_att_64.cdl \ -tst_vlen_data.cdl tst_solar_1.cdl tst_format_att.cdl tst_inflated.nc \ -tmp_subset.cdl tst_inflated4.nc tst_deflated.nc tst_chunking.nc tmp*.nc \ -tst_charfill.nc tmp_tst_charfill.cdl \ -iter.* \ -tst_nc_test_netcdf4_4_0.cdl tst_mud4.nc tst_mud4.cdl tst_mud4-bc.cdl \ -tst_ncf213.cdl tst_ncf213.nc tst_h_scalar.cdl tst_h_scalar.nc \ -tst_mud4_chars.cdl tst_mud4_chars.nc \ -inttags.nc inttags4.nc tst_inttags.cdl tst_inttags4.cdl \ -tst_dimsize_classic.nc tst_dimsize_64offset.nc tst_dimsize_64data.nc \ -nc4_fileinfo.nc hdf5_fileinfo.hdf - -# These files all have to be included with the distribution. -EXTRA_DIST = run_tests.sh tst_64bit.sh tst_output.sh test0.cdl \ -ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_tst_solar_1.cdl \ -ref_tst_solar_2.cdl tst_netcdf4.sh tst_netcdf4_4.sh ref_tst_small.cdl \ -tst_lengths.sh tst_ncml.cdl ref1.ncml ref_tst_group_data.cdl \ -ref_tst_enum_data.cdl ref_tst_opaque_data.cdl ref_tst_string_data.cdl \ -ref_tst_vlen_data.cdl ref_tst_comp.cdl ref_tst_unicode.cdl \ -ref_tst_nans.cdl small.cdl small2.cdl $(man_MANS) run_utf8_tests.sh \ -ref_tst_utf8.cdl ref_tst_fillbug.cdl tst_fillbug.sh tst_calendars.cdl \ -tst_calendars.sh ref_times.cdl ref_tst_special_atts.cdl \ -ref_tst_noncoord.cdl ref_tst_compounds2.nc ref_tst_compounds2.cdl \ -ref_tst_compounds3.nc ref_tst_compounds3.cdl ref_tst_compounds4.nc \ -ref_tst_compounds4.cdl ref_tst_group_data_v23.cdl tst_mslp.cdl tst_bug321.cdl \ -ref_tst_format_att.cdl ref_tst_format_att_64.cdl tst_nccopy3.sh \ -tst_nccopy4.sh ref_nc_test_netcdf4_4_0.nc run_back_comp_tests.sh \ -ref_nc_test_netcdf4.cdl ref_tst_special_atts3.cdl tst_brecs.cdl \ -ref_tst_grp_spec0.cdl ref_tst_grp_spec.cdl tst_grp_spec.sh \ -ref_tst_charfill.cdl tst_charfill.cdl tst_charfill.sh \ -tst_iter.sh tst_mud.sh ref_tst_mud4.cdl ref_tst_mud4-bc.cdl \ -ref_tst_mud4_chars.cdl \ -inttags.cdl inttags4.cdl ref_inttags.cdl ref_inttags4.cdl \ -ref_tst_ncf213.cdl tst_h_scalar.sh \ -run_utf8_nc4_tests.sh \ -tst_formatx3.sh tst_formatx4.sh ref_tst_utf8_4.cdl \ -tst_inttags.sh tst_inttags4.sh \ -CMakeLists.txt XGetopt.c tst_bom.sh tst_inmemory_nc3.sh \ -tst_dimsizes.sh tst_inmemory_nc4.sh tst_fileinfo.sh - -# CDL files and Expected results -SUBDIRS=cdl expected -EXTRA_DIST += tst_ncgen_shared.sh tst_ncgen4.sh tst_ncgen4_classic.sh \ -tst_ncgen4_diff.sh tst_ncgen4_cycle.sh ref_ctest.c ref_ctest64.c - -CLEANFILES += results/*.nc results/*.dmp results/*.dmp2 tmp*.cdl tst_bug324.nc -DISTCLEANFILES = results diff --git a/contrib/netcdf/4.4.1.1/ncdump/Makefile.in b/contrib/netcdf/4.4.1.1/ncdump/Makefile.in deleted file mode 100644 index 9f16b9f9740..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/Makefile.in +++ /dev/null @@ -1,1576 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncdump program. - -# $Id: Makefile.am,v 1.147 2010/05/29 00:50:39 dmh Exp $ - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -bin_PROGRAMS = ncdump$(EXEEXT) nccopy$(EXEEXT) -@BUILD_TESTSETS_TRUE@check_PROGRAMS = rewrite-scalar$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ ctest$(EXEEXT) ctest64$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ ncdump$(EXEEXT) tst_utf8$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ bom$(EXEEXT) tst_dimsizes$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ $(am__EXEEXT_1) -@BUILD_TESTSETS_TRUE@TESTS = tst_inttags.sh run_tests.sh tst_64bit.sh \ -@BUILD_TESTSETS_TRUE@ ctest$(EXEEXT) ctest64$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ tst_output.sh tst_lengths.sh \ -@BUILD_TESTSETS_TRUE@ tst_calendars.sh tst_utf8$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@ run_utf8_tests.sh tst_nccopy3.sh \ -@BUILD_TESTSETS_TRUE@ tst_charfill.sh tst_iter.sh \ -@BUILD_TESTSETS_TRUE@ tst_formatx3.sh tst_bom.sh \ -@BUILD_TESTSETS_TRUE@ tst_dimsizes.sh $(am__append_4) \ -@BUILD_TESTSETS_TRUE@ $(am__append_5) $(am__append_6) \ -@BUILD_TESTSETS_TRUE@ $(am__append_7) $(am__EXEEXT_2) \ -@BUILD_TESTSETS_TRUE@ $(am__append_9) tst_ncgen4_classic.sh \ -@BUILD_TESTSETS_TRUE@ $(am__append_10) - -# NetCDF-4 has some extra tests. -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__append_3 = tst_fileinfo \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_create_files \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_rdc0 \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_group_data \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_enum_data \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_opaque_data \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_string_data \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_vlen_data tst_comp \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp2 tst_nans \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_special_atts \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_unicode tst_fillbug \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_compress \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_chunking \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar tst_bug324 -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__append_4 = tst_fileinfo.sh -@BUILD_TESTSETS_TRUE@@LARGE_FILE_TESTS_TRUE@am__append_5 = tst_iter.sh -@BUILD_DISKLESS_TRUE@@BUILD_TESTSETS_TRUE@am__append_6 = tst_inmemory_nc3.sh -@BUILD_DISKLESS_TRUE@@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__append_7 = tst_inmemory_nc4.sh -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__append_8 = tst_inttags4.sh tst_create_files tst_group_data tst_enum_data tst_opaque_data \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_string_data tst_vlen_data tst_comp tst_comp2 tst_nans \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_special_atts tst_netcdf4.sh tst_h_rdc0 tst_unicode tst_fillbug \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_fillbug.sh tst_netcdf4_4.sh tst_compress tst_nccopy4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_grp_spec.sh tst_mud.sh tst_h_scalar tst_h_scalar.sh tst_formatx4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_bug324 run_utf8_nc4_tests.sh - -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@@USE_NETCDF4_TRUE@am__append_9 = run_back_comp_tests.sh -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__append_10 = tst_ncgen4.sh -subdir = ncdump -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__EXEEXT_1 = \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fileinfo$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_create_files$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_rdc0$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_group_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_enum_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_opaque_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_string_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_vlen_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp2$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nans$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_special_atts$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_unicode$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_compress$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_chunking$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_bug324$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) -bom_SOURCES = bom.c -bom_OBJECTS = bom.$(OBJEXT) -bom_LDADD = $(LDADD) -bom_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -ctest_SOURCES = ctest.c -ctest_OBJECTS = ctest.$(OBJEXT) -ctest_LDADD = $(LDADD) -ctest_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -ctest64_SOURCES = ctest64.c -ctest64_OBJECTS = ctest64.$(OBJEXT) -ctest64_LDADD = $(LDADD) -ctest64_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am_nccopy_OBJECTS = nccopy.$(OBJEXT) nciter.$(OBJEXT) \ - chunkspec.$(OBJEXT) utils.$(OBJEXT) dimmap.$(OBJEXT) -nccopy_OBJECTS = $(am_nccopy_OBJECTS) -nccopy_LDADD = $(LDADD) -nccopy_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -am_ncdump_OBJECTS = ncdump.$(OBJEXT) vardata.$(OBJEXT) \ - dumplib.$(OBJEXT) indent.$(OBJEXT) nctime0.$(OBJEXT) \ - utils.$(OBJEXT) nciter.$(OBJEXT) -ncdump_OBJECTS = $(am_ncdump_OBJECTS) -ncdump_LDADD = $(LDADD) -ncdump_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -rewrite_scalar_SOURCES = rewrite-scalar.c -rewrite_scalar_OBJECTS = rewrite-scalar.$(OBJEXT) -rewrite_scalar_LDADD = $(LDADD) -rewrite_scalar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_bug324_SOURCES = tst_bug324.c -tst_bug324_OBJECTS = tst_bug324.$(OBJEXT) -tst_bug324_LDADD = $(LDADD) -tst_bug324_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_chunking_SOURCES = tst_chunking.c -tst_chunking_OBJECTS = tst_chunking.$(OBJEXT) -tst_chunking_LDADD = $(LDADD) -tst_chunking_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_comp_SOURCES = tst_comp.c -tst_comp_OBJECTS = tst_comp.$(OBJEXT) -tst_comp_LDADD = $(LDADD) -tst_comp_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_comp2_SOURCES = tst_comp2.c -tst_comp2_OBJECTS = tst_comp2.$(OBJEXT) -tst_comp2_LDADD = $(LDADD) -tst_comp2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_compress_SOURCES = tst_compress.c -tst_compress_OBJECTS = tst_compress.$(OBJEXT) -tst_compress_LDADD = $(LDADD) -tst_compress_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_create_files_SOURCES = tst_create_files.c -tst_create_files_OBJECTS = tst_create_files.$(OBJEXT) -tst_create_files_LDADD = $(LDADD) -tst_create_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_dimsizes_SOURCES = tst_dimsizes.c -tst_dimsizes_OBJECTS = tst_dimsizes.$(OBJEXT) -tst_dimsizes_LDADD = $(LDADD) -tst_dimsizes_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_enum_data_SOURCES = tst_enum_data.c -tst_enum_data_OBJECTS = tst_enum_data.$(OBJEXT) -tst_enum_data_LDADD = $(LDADD) -tst_enum_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_fileinfo_SOURCES = tst_fileinfo.c -tst_fileinfo_OBJECTS = tst_fileinfo.$(OBJEXT) -tst_fileinfo_LDADD = $(LDADD) -tst_fileinfo_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_fillbug_SOURCES = tst_fillbug.c -tst_fillbug_OBJECTS = tst_fillbug.$(OBJEXT) -tst_fillbug_LDADD = $(LDADD) -tst_fillbug_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_group_data_SOURCES = tst_group_data.c -tst_group_data_OBJECTS = tst_group_data.$(OBJEXT) -tst_group_data_LDADD = $(LDADD) -tst_group_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_h_rdc0_SOURCES = tst_h_rdc0.c -tst_h_rdc0_OBJECTS = tst_h_rdc0-tst_h_rdc0.$(OBJEXT) -tst_h_rdc0_LDADD = $(LDADD) -tst_h_rdc0_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_h_scalar_SOURCES = tst_h_scalar.c -tst_h_scalar_OBJECTS = tst_h_scalar.$(OBJEXT) -tst_h_scalar_LDADD = $(LDADD) -tst_h_scalar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_nans_SOURCES = tst_nans.c -tst_nans_OBJECTS = tst_nans.$(OBJEXT) -tst_nans_LDADD = $(LDADD) -tst_nans_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_opaque_data_SOURCES = tst_opaque_data.c -tst_opaque_data_OBJECTS = tst_opaque_data.$(OBJEXT) -tst_opaque_data_LDADD = $(LDADD) -tst_opaque_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_special_atts_SOURCES = tst_special_atts.c -tst_special_atts_OBJECTS = tst_special_atts.$(OBJEXT) -tst_special_atts_LDADD = $(LDADD) -tst_special_atts_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_string_data_SOURCES = tst_string_data.c -tst_string_data_OBJECTS = tst_string_data.$(OBJEXT) -tst_string_data_LDADD = $(LDADD) -tst_string_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_unicode_SOURCES = tst_unicode.c -tst_unicode_OBJECTS = tst_unicode.$(OBJEXT) -tst_unicode_LDADD = $(LDADD) -tst_unicode_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_utf8_SOURCES = tst_utf8.c -tst_utf8_OBJECTS = tst_utf8.$(OBJEXT) -tst_utf8_LDADD = $(LDADD) -tst_utf8_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -tst_vlen_data_SOURCES = tst_vlen_data.c -tst_vlen_data_OBJECTS = tst_vlen_data.$(OBJEXT) -tst_vlen_data_LDADD = $(LDADD) -tst_vlen_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/bom.Po ./$(DEPDIR)/chunkspec.Po \ - ./$(DEPDIR)/ctest.Po ./$(DEPDIR)/ctest64.Po \ - ./$(DEPDIR)/dimmap.Po ./$(DEPDIR)/dumplib.Po \ - ./$(DEPDIR)/indent.Po ./$(DEPDIR)/nccopy.Po \ - ./$(DEPDIR)/ncdump.Po ./$(DEPDIR)/nciter.Po \ - ./$(DEPDIR)/nctime0.Po ./$(DEPDIR)/rewrite-scalar.Po \ - ./$(DEPDIR)/tst_bug324.Po ./$(DEPDIR)/tst_chunking.Po \ - ./$(DEPDIR)/tst_comp.Po ./$(DEPDIR)/tst_comp2.Po \ - ./$(DEPDIR)/tst_compress.Po ./$(DEPDIR)/tst_create_files.Po \ - ./$(DEPDIR)/tst_dimsizes.Po ./$(DEPDIR)/tst_enum_data.Po \ - ./$(DEPDIR)/tst_fileinfo.Po ./$(DEPDIR)/tst_fillbug.Po \ - ./$(DEPDIR)/tst_group_data.Po \ - ./$(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po \ - ./$(DEPDIR)/tst_h_scalar.Po ./$(DEPDIR)/tst_nans.Po \ - ./$(DEPDIR)/tst_opaque_data.Po ./$(DEPDIR)/tst_special_atts.Po \ - ./$(DEPDIR)/tst_string_data.Po ./$(DEPDIR)/tst_unicode.Po \ - ./$(DEPDIR)/tst_utf8.Po ./$(DEPDIR)/tst_vlen_data.Po \ - ./$(DEPDIR)/utils.Po ./$(DEPDIR)/vardata.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = bom.c ctest.c ctest64.c $(nccopy_SOURCES) $(ncdump_SOURCES) \ - rewrite-scalar.c tst_bug324.c tst_chunking.c tst_comp.c \ - tst_comp2.c tst_compress.c tst_create_files.c tst_dimsizes.c \ - tst_enum_data.c tst_fileinfo.c tst_fillbug.c tst_group_data.c \ - tst_h_rdc0.c tst_h_scalar.c tst_nans.c tst_opaque_data.c \ - tst_special_atts.c tst_string_data.c tst_unicode.c tst_utf8.c \ - tst_vlen_data.c -DIST_SOURCES = bom.c ctest.c ctest64.c $(nccopy_SOURCES) \ - $(ncdump_SOURCES) rewrite-scalar.c tst_bug324.c tst_chunking.c \ - tst_comp.c tst_comp2.c tst_compress.c tst_create_files.c \ - tst_dimsizes.c tst_enum_data.c tst_fileinfo.c tst_fillbug.c \ - tst_group_data.c tst_h_rdc0.c tst_h_scalar.c tst_nans.c \ - tst_opaque_data.c tst_special_atts.c tst_string_data.c \ - tst_unicode.c tst_utf8.c tst_vlen_data.c -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir distdir-am -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@am__EXEEXT_2 = tst_inttags4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_create_files$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_group_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_enum_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_opaque_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_string_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_vlen_data$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp2$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nans$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_special_atts$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_netcdf4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_rdc0$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_unicode$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_netcdf4_4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_compress$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nccopy4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_grp_spec.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_mud.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_formatx4.sh \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_bug324$(EXEEXT) \ -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ run_utf8_nc4_tests.sh -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -LDADD = ${top_builddir}/liblib/libnetcdf.la -TESTS_ENVIRONMENT = CC=${CC} -ncdump_SOURCES = ncdump.c vardata.c dumplib.c indent.c nctime0.c \ -ncdump.h vardata.h dumplib.h indent.h isnan.h nctime0.h cdl.h \ -utils.h utils.c nciter.h nciter.c nccomps.h - -nccopy_SOURCES = nccopy.c nciter.c nciter.h chunkspec.h chunkspec.c \ -utils.h utils.c dimmap.h dimmap.c - - -# This is the man page. -man_MANS = ncdump.1 nccopy.1 -@BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@tst_h_rdc0_CPPFLAGS = -I${top_srcdir}/nc_test ${AM_CPPFLAGS} - -#endif #!BUILD_DLL - -# Can't run ncgen to generate ctest.c and ctest64.c on cross-compiles. -@BUILD_TESTSETS_TRUE@BUILT_SOURCES = ctest.c ctest64.c -CLEANFILES = test0.nc test1.cdl test1.nc test2.cdl ctest1.cdl \ - ctest0.nc ctest0_64.nc c1.cdl c1_4.cdl ctest1_64.cdl c0.nc \ - c0_4.nc small.nc small2.nc c0tmp.nc c1.ncml utf8.cdl \ - utf8_64.cdl utf8.nc utf8_64.nc tmp.cdl tst_vlen_data.nc \ - tst_utf8.nc tst_special_atts.nc tst_unicode.nc tst_solar_2.nc \ - tst_string_data.nc tst_calendars.nc tst_nans.nc \ - tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc \ - tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_bug321.nc \ - tst_comp2.nc tst_ncml.nc tst_fillbug.nc tst_group_data.nc \ - tst_small.nc tst_comp.nc tst_unicode.cdl tst_group_data.cdl \ - tst_compounds2.cdl tst_comp.cdl tst_enum_data.cdl \ - tst_small.cdl tst_times.cdl tst_solar_2.cdl \ - tst_string_data.cdl tst_fillbug.cdl tst_opaque_data.cdl \ - tst_compounds4.cdl tst_utf8.cdl tst_compounds3.cdl \ - tst_special_atts.cdl tst_nans.cdl tst_format_att_64.cdl \ - tst_vlen_data.cdl tst_solar_1.cdl tst_format_att.cdl \ - tst_inflated.nc tmp_subset.cdl tst_inflated4.nc \ - tst_deflated.nc tst_chunking.nc tmp*.nc tst_charfill.nc \ - tmp_tst_charfill.cdl iter.* tst_nc_test_netcdf4_4_0.cdl \ - tst_mud4.nc tst_mud4.cdl tst_mud4-bc.cdl tst_ncf213.cdl \ - tst_ncf213.nc tst_h_scalar.cdl tst_h_scalar.nc \ - tst_mud4_chars.cdl tst_mud4_chars.nc inttags.nc inttags4.nc \ - tst_inttags.cdl tst_inttags4.cdl tst_dimsize_classic.nc \ - tst_dimsize_64offset.nc tst_dimsize_64data.nc nc4_fileinfo.nc \ - hdf5_fileinfo.hdf results/*.nc results/*.dmp results/*.dmp2 \ - tmp*.cdl tst_bug324.nc - -# These files all have to be included with the distribution. -EXTRA_DIST = run_tests.sh tst_64bit.sh tst_output.sh test0.cdl \ - ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_tst_solar_1.cdl \ - ref_tst_solar_2.cdl tst_netcdf4.sh tst_netcdf4_4.sh \ - ref_tst_small.cdl tst_lengths.sh tst_ncml.cdl ref1.ncml \ - ref_tst_group_data.cdl ref_tst_enum_data.cdl \ - ref_tst_opaque_data.cdl ref_tst_string_data.cdl \ - ref_tst_vlen_data.cdl ref_tst_comp.cdl ref_tst_unicode.cdl \ - ref_tst_nans.cdl small.cdl small2.cdl $(man_MANS) \ - run_utf8_tests.sh ref_tst_utf8.cdl ref_tst_fillbug.cdl \ - tst_fillbug.sh tst_calendars.cdl tst_calendars.sh \ - ref_times.cdl ref_tst_special_atts.cdl ref_tst_noncoord.cdl \ - ref_tst_compounds2.nc ref_tst_compounds2.cdl \ - ref_tst_compounds3.nc ref_tst_compounds3.cdl \ - ref_tst_compounds4.nc ref_tst_compounds4.cdl \ - ref_tst_group_data_v23.cdl tst_mslp.cdl tst_bug321.cdl \ - ref_tst_format_att.cdl ref_tst_format_att_64.cdl \ - tst_nccopy3.sh tst_nccopy4.sh ref_nc_test_netcdf4_4_0.nc \ - run_back_comp_tests.sh ref_nc_test_netcdf4.cdl \ - ref_tst_special_atts3.cdl tst_brecs.cdl ref_tst_grp_spec0.cdl \ - ref_tst_grp_spec.cdl tst_grp_spec.sh ref_tst_charfill.cdl \ - tst_charfill.cdl tst_charfill.sh tst_iter.sh tst_mud.sh \ - ref_tst_mud4.cdl ref_tst_mud4-bc.cdl ref_tst_mud4_chars.cdl \ - inttags.cdl inttags4.cdl ref_inttags.cdl ref_inttags4.cdl \ - ref_tst_ncf213.cdl tst_h_scalar.sh run_utf8_nc4_tests.sh \ - tst_formatx3.sh tst_formatx4.sh ref_tst_utf8_4.cdl \ - tst_inttags.sh tst_inttags4.sh CMakeLists.txt XGetopt.c \ - tst_bom.sh tst_inmemory_nc3.sh tst_dimsizes.sh \ - tst_inmemory_nc4.sh tst_fileinfo.sh tst_ncgen_shared.sh \ - tst_ncgen4.sh tst_ncgen4_classic.sh tst_ncgen4_diff.sh \ - tst_ncgen4_cycle.sh ref_ctest.c ref_ctest64.c - -# CDL files and Expected results -SUBDIRS = cdl expected -DISTCLEANFILES = results -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 ncdump/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdump/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -bom$(EXEEXT): $(bom_OBJECTS) $(bom_DEPENDENCIES) $(EXTRA_bom_DEPENDENCIES) - @rm -f bom$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bom_OBJECTS) $(bom_LDADD) $(LIBS) - -ctest$(EXEEXT): $(ctest_OBJECTS) $(ctest_DEPENDENCIES) $(EXTRA_ctest_DEPENDENCIES) - @rm -f ctest$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ctest_OBJECTS) $(ctest_LDADD) $(LIBS) - -ctest64$(EXEEXT): $(ctest64_OBJECTS) $(ctest64_DEPENDENCIES) $(EXTRA_ctest64_DEPENDENCIES) - @rm -f ctest64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ctest64_OBJECTS) $(ctest64_LDADD) $(LIBS) - -nccopy$(EXEEXT): $(nccopy_OBJECTS) $(nccopy_DEPENDENCIES) $(EXTRA_nccopy_DEPENDENCIES) - @rm -f nccopy$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(nccopy_OBJECTS) $(nccopy_LDADD) $(LIBS) - -ncdump$(EXEEXT): $(ncdump_OBJECTS) $(ncdump_DEPENDENCIES) $(EXTRA_ncdump_DEPENDENCIES) - @rm -f ncdump$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ncdump_OBJECTS) $(ncdump_LDADD) $(LIBS) - -rewrite-scalar$(EXEEXT): $(rewrite_scalar_OBJECTS) $(rewrite_scalar_DEPENDENCIES) $(EXTRA_rewrite_scalar_DEPENDENCIES) - @rm -f rewrite-scalar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rewrite_scalar_OBJECTS) $(rewrite_scalar_LDADD) $(LIBS) - -tst_bug324$(EXEEXT): $(tst_bug324_OBJECTS) $(tst_bug324_DEPENDENCIES) $(EXTRA_tst_bug324_DEPENDENCIES) - @rm -f tst_bug324$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_bug324_OBJECTS) $(tst_bug324_LDADD) $(LIBS) - -tst_chunking$(EXEEXT): $(tst_chunking_OBJECTS) $(tst_chunking_DEPENDENCIES) $(EXTRA_tst_chunking_DEPENDENCIES) - @rm -f tst_chunking$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_chunking_OBJECTS) $(tst_chunking_LDADD) $(LIBS) - -tst_comp$(EXEEXT): $(tst_comp_OBJECTS) $(tst_comp_DEPENDENCIES) $(EXTRA_tst_comp_DEPENDENCIES) - @rm -f tst_comp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_comp_OBJECTS) $(tst_comp_LDADD) $(LIBS) - -tst_comp2$(EXEEXT): $(tst_comp2_OBJECTS) $(tst_comp2_DEPENDENCIES) $(EXTRA_tst_comp2_DEPENDENCIES) - @rm -f tst_comp2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_comp2_OBJECTS) $(tst_comp2_LDADD) $(LIBS) - -tst_compress$(EXEEXT): $(tst_compress_OBJECTS) $(tst_compress_DEPENDENCIES) $(EXTRA_tst_compress_DEPENDENCIES) - @rm -f tst_compress$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_compress_OBJECTS) $(tst_compress_LDADD) $(LIBS) - -tst_create_files$(EXEEXT): $(tst_create_files_OBJECTS) $(tst_create_files_DEPENDENCIES) $(EXTRA_tst_create_files_DEPENDENCIES) - @rm -f tst_create_files$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_create_files_OBJECTS) $(tst_create_files_LDADD) $(LIBS) - -tst_dimsizes$(EXEEXT): $(tst_dimsizes_OBJECTS) $(tst_dimsizes_DEPENDENCIES) $(EXTRA_tst_dimsizes_DEPENDENCIES) - @rm -f tst_dimsizes$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_dimsizes_OBJECTS) $(tst_dimsizes_LDADD) $(LIBS) - -tst_enum_data$(EXEEXT): $(tst_enum_data_OBJECTS) $(tst_enum_data_DEPENDENCIES) $(EXTRA_tst_enum_data_DEPENDENCIES) - @rm -f tst_enum_data$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_enum_data_OBJECTS) $(tst_enum_data_LDADD) $(LIBS) - -tst_fileinfo$(EXEEXT): $(tst_fileinfo_OBJECTS) $(tst_fileinfo_DEPENDENCIES) $(EXTRA_tst_fileinfo_DEPENDENCIES) - @rm -f tst_fileinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fileinfo_OBJECTS) $(tst_fileinfo_LDADD) $(LIBS) - -tst_fillbug$(EXEEXT): $(tst_fillbug_OBJECTS) $(tst_fillbug_DEPENDENCIES) $(EXTRA_tst_fillbug_DEPENDENCIES) - @rm -f tst_fillbug$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_fillbug_OBJECTS) $(tst_fillbug_LDADD) $(LIBS) - -tst_group_data$(EXEEXT): $(tst_group_data_OBJECTS) $(tst_group_data_DEPENDENCIES) $(EXTRA_tst_group_data_DEPENDENCIES) - @rm -f tst_group_data$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_group_data_OBJECTS) $(tst_group_data_LDADD) $(LIBS) - -tst_h_rdc0$(EXEEXT): $(tst_h_rdc0_OBJECTS) $(tst_h_rdc0_DEPENDENCIES) $(EXTRA_tst_h_rdc0_DEPENDENCIES) - @rm -f tst_h_rdc0$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_rdc0_OBJECTS) $(tst_h_rdc0_LDADD) $(LIBS) - -tst_h_scalar$(EXEEXT): $(tst_h_scalar_OBJECTS) $(tst_h_scalar_DEPENDENCIES) $(EXTRA_tst_h_scalar_DEPENDENCIES) - @rm -f tst_h_scalar$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_h_scalar_OBJECTS) $(tst_h_scalar_LDADD) $(LIBS) - -tst_nans$(EXEEXT): $(tst_nans_OBJECTS) $(tst_nans_DEPENDENCIES) $(EXTRA_tst_nans_DEPENDENCIES) - @rm -f tst_nans$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_nans_OBJECTS) $(tst_nans_LDADD) $(LIBS) - -tst_opaque_data$(EXEEXT): $(tst_opaque_data_OBJECTS) $(tst_opaque_data_DEPENDENCIES) $(EXTRA_tst_opaque_data_DEPENDENCIES) - @rm -f tst_opaque_data$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_opaque_data_OBJECTS) $(tst_opaque_data_LDADD) $(LIBS) - -tst_special_atts$(EXEEXT): $(tst_special_atts_OBJECTS) $(tst_special_atts_DEPENDENCIES) $(EXTRA_tst_special_atts_DEPENDENCIES) - @rm -f tst_special_atts$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_special_atts_OBJECTS) $(tst_special_atts_LDADD) $(LIBS) - -tst_string_data$(EXEEXT): $(tst_string_data_OBJECTS) $(tst_string_data_DEPENDENCIES) $(EXTRA_tst_string_data_DEPENDENCIES) - @rm -f tst_string_data$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_string_data_OBJECTS) $(tst_string_data_LDADD) $(LIBS) - -tst_unicode$(EXEEXT): $(tst_unicode_OBJECTS) $(tst_unicode_DEPENDENCIES) $(EXTRA_tst_unicode_DEPENDENCIES) - @rm -f tst_unicode$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_unicode_OBJECTS) $(tst_unicode_LDADD) $(LIBS) - -tst_utf8$(EXEEXT): $(tst_utf8_OBJECTS) $(tst_utf8_DEPENDENCIES) $(EXTRA_tst_utf8_DEPENDENCIES) - @rm -f tst_utf8$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_utf8_OBJECTS) $(tst_utf8_LDADD) $(LIBS) - -tst_vlen_data$(EXEEXT): $(tst_vlen_data_OBJECTS) $(tst_vlen_data_DEPENDENCIES) $(EXTRA_tst_vlen_data_DEPENDENCIES) - @rm -f tst_vlen_data$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_vlen_data_OBJECTS) $(tst_vlen_data_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bom.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chunkspec.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctest.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctest64.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dimmap.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dumplib.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indent.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nccopy.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncdump.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nciter.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nctime0.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rewrite-scalar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_bug324.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_chunking.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_comp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_comp2.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_compress.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_create_files.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_dimsizes.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_enum_data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fileinfo.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_fillbug.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_group_data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_h_scalar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nans.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_opaque_data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_special_atts.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_string_data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_unicode.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_utf8.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_vlen_data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vardata.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -tst_h_rdc0-tst_h_rdc0.o: tst_h_rdc0.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tst_h_rdc0-tst_h_rdc0.o -MD -MP -MF $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo -c -o tst_h_rdc0-tst_h_rdc0.o `test -f 'tst_h_rdc0.c' || echo '$(srcdir)/'`tst_h_rdc0.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tst_h_rdc0.c' object='tst_h_rdc0-tst_h_rdc0.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tst_h_rdc0-tst_h_rdc0.o `test -f 'tst_h_rdc0.c' || echo '$(srcdir)/'`tst_h_rdc0.c - -tst_h_rdc0-tst_h_rdc0.obj: tst_h_rdc0.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tst_h_rdc0-tst_h_rdc0.obj -MD -MP -MF $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo -c -o tst_h_rdc0-tst_h_rdc0.obj `if test -f 'tst_h_rdc0.c'; then $(CYGPATH_W) 'tst_h_rdc0.c'; else $(CYGPATH_W) '$(srcdir)/tst_h_rdc0.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tst_h_rdc0.c' object='tst_h_rdc0-tst_h_rdc0.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tst_h_rdc0-tst_h_rdc0.obj `if test -f 'tst_h_rdc0.c'; then $(CYGPATH_W) 'tst_h_rdc0.c'; else $(CYGPATH_W) '$(srcdir)/tst_h_rdc0.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-recursive -all-am: Makefile $(PROGRAMS) $(MANS) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-recursive - -clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f ./$(DEPDIR)/bom.Po - -rm -f ./$(DEPDIR)/chunkspec.Po - -rm -f ./$(DEPDIR)/ctest.Po - -rm -f ./$(DEPDIR)/ctest64.Po - -rm -f ./$(DEPDIR)/dimmap.Po - -rm -f ./$(DEPDIR)/dumplib.Po - -rm -f ./$(DEPDIR)/indent.Po - -rm -f ./$(DEPDIR)/nccopy.Po - -rm -f ./$(DEPDIR)/ncdump.Po - -rm -f ./$(DEPDIR)/nciter.Po - -rm -f ./$(DEPDIR)/nctime0.Po - -rm -f ./$(DEPDIR)/rewrite-scalar.Po - -rm -f ./$(DEPDIR)/tst_bug324.Po - -rm -f ./$(DEPDIR)/tst_chunking.Po - -rm -f ./$(DEPDIR)/tst_comp.Po - -rm -f ./$(DEPDIR)/tst_comp2.Po - -rm -f ./$(DEPDIR)/tst_compress.Po - -rm -f ./$(DEPDIR)/tst_create_files.Po - -rm -f ./$(DEPDIR)/tst_dimsizes.Po - -rm -f ./$(DEPDIR)/tst_enum_data.Po - -rm -f ./$(DEPDIR)/tst_fileinfo.Po - -rm -f ./$(DEPDIR)/tst_fillbug.Po - -rm -f ./$(DEPDIR)/tst_group_data.Po - -rm -f ./$(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po - -rm -f ./$(DEPDIR)/tst_h_scalar.Po - -rm -f ./$(DEPDIR)/tst_nans.Po - -rm -f ./$(DEPDIR)/tst_opaque_data.Po - -rm -f ./$(DEPDIR)/tst_special_atts.Po - -rm -f ./$(DEPDIR)/tst_string_data.Po - -rm -f ./$(DEPDIR)/tst_unicode.Po - -rm -f ./$(DEPDIR)/tst_utf8.Po - -rm -f ./$(DEPDIR)/tst_vlen_data.Po - -rm -f ./$(DEPDIR)/utils.Po - -rm -f ./$(DEPDIR)/vardata.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: install-man1 - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f ./$(DEPDIR)/bom.Po - -rm -f ./$(DEPDIR)/chunkspec.Po - -rm -f ./$(DEPDIR)/ctest.Po - -rm -f ./$(DEPDIR)/ctest64.Po - -rm -f ./$(DEPDIR)/dimmap.Po - -rm -f ./$(DEPDIR)/dumplib.Po - -rm -f ./$(DEPDIR)/indent.Po - -rm -f ./$(DEPDIR)/nccopy.Po - -rm -f ./$(DEPDIR)/ncdump.Po - -rm -f ./$(DEPDIR)/nciter.Po - -rm -f ./$(DEPDIR)/nctime0.Po - -rm -f ./$(DEPDIR)/rewrite-scalar.Po - -rm -f ./$(DEPDIR)/tst_bug324.Po - -rm -f ./$(DEPDIR)/tst_chunking.Po - -rm -f ./$(DEPDIR)/tst_comp.Po - -rm -f ./$(DEPDIR)/tst_comp2.Po - -rm -f ./$(DEPDIR)/tst_compress.Po - -rm -f ./$(DEPDIR)/tst_create_files.Po - -rm -f ./$(DEPDIR)/tst_dimsizes.Po - -rm -f ./$(DEPDIR)/tst_enum_data.Po - -rm -f ./$(DEPDIR)/tst_fileinfo.Po - -rm -f ./$(DEPDIR)/tst_fillbug.Po - -rm -f ./$(DEPDIR)/tst_group_data.Po - -rm -f ./$(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po - -rm -f ./$(DEPDIR)/tst_h_scalar.Po - -rm -f ./$(DEPDIR)/tst_nans.Po - -rm -f ./$(DEPDIR)/tst_opaque_data.Po - -rm -f ./$(DEPDIR)/tst_special_atts.Po - -rm -f ./$(DEPDIR)/tst_string_data.Po - -rm -f ./$(DEPDIR)/tst_unicode.Po - -rm -f ./$(DEPDIR)/tst_utf8.Po - -rm -f ./$(DEPDIR)/tst_vlen_data.Po - -rm -f ./$(DEPDIR)/utils.Po - -rm -f ./$(DEPDIR)/vardata.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: $(am__recursive_targets) all check check-am install install-am \ - install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--depfiles check check-TESTS check-am clean \ - clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libtool cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-man1 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-man uninstall-man1 - -.PRECIOUS: Makefile - -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ctest.c: -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ $(top_builddir)/ncgen/ncgen -lc -o ctest0.nc $(top_srcdir)/ncgen/c0.cdl > $(top_builddir)/ncdump/ctest.c - -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ctest64.c: -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ $(top_builddir)/ncgen/ncgen -k2 -lc -o ctest0_64.nc $(top_srcdir)/ncgen/c0.cdl > $(srcdir)/ctest64.c -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ctest.c: -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest.c $(top_builddir)/ncdump/ctest.c - -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ctest64.c: -@BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest64.c $(top_builddir)/ncdump/ctest64.c -#endif - -@BUILD_TESTSETS_FALSE@ctest.c: -@BUILD_TESTSETS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest.c $(top_srcdir)/ncdump/ctest.c - -@BUILD_TESTSETS_FALSE@ctest64.c: -@BUILD_TESTSETS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest64.c $(top_srcdir)/ncdump/ctest64.c - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/ncdump/cdl/Makefile.in b/contrib/netcdf/4.4.1.1/ncdump/cdl/Makefile.in deleted file mode 100644 index ca8f2a9a947..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/cdl/Makefile.in +++ /dev/null @@ -1,523 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the libnc-dap test comparison files - -# $Id: Makefile.am,v 1.5 2010/04/27 18:50:44 dmh Exp $ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdump/cdl -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -c0.cdl example_good.cdl fills.cdl nc_enddef.cdl nc_sync.cdl pres_temp_4D.cdl \ -ref_const_test.cdl ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_dimscope.cdl \ -ref_nctst.cdl ref_nctst_64bit_offset.cdl ref_nctst_netcdf4.cdl \ -ref_nctst_netcdf4_classic.cdl \ -ref_tst_comp.cdl ref_tst_comp2.cdl ref_tst_comp3.cdl \ -ref_tst_enum_data.cdl ref_tst_group_data.cdl \ -ref_tst_nans.cdl ref_tst_opaque_data.cdl ref_tst_small.cdl \ -ref_tst_solar_1.cdl ref_tst_solar_2.cdl ref_tst_special_atts.cdl \ -ref_tst_string_data.cdl ref_tst_unicode.cdl ref_tst_utf8.cdl \ -ref_typescope.cdl sfc_pres_temp.cdl \ -simple_xy.cdl small.cdl small2.cdl test0.cdl tst_ncml.cdl \ -bigf1.cdl bigf2.cdl bigf3.cdl bigr1.cdl bigr2.cdl bigr3.cdl \ -n3time.cdl ref_tst_special_atts3.cdl ref_tst_unlim2.cdl ref_tst_chardata.cdl \ -ref_solar.cdl unlimtest1.cdl unlimtest2.cdl \ -ref_tst_opaque_data.cdl \ -ref_tst_vlen_data.cdl ref_tst_vlen_data2.cdl \ -ref_niltest.cdl ref_tst_h_scalar.cdl ref_tst_econst.cdl \ -ref_tst_nul3.cdl ref_tst_nul4.cdl ref_tst_names.cdl \ -ref_tst_long_charconst.cdl tst_chararray.cdl ref_keyword.cdl \ -CMakeLists.txt - -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 ncdump/cdl/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdump/cdl/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/ncdump/chunkspec.c b/contrib/netcdf/4.4.1.1/ncdump/chunkspec.c deleted file mode 100644 index c92dc48fb29..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/chunkspec.c +++ /dev/null @@ -1,163 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id $ - *********************************************************************/ - -#include -#include -#include -#include -#include "utils.h" -#include "chunkspec.h" - -/* Structure mapping dimension IDs to corresponding chunksizes. */ -static struct { - size_t ndims; /* number of dimensions in chunkspec string */ - int *dimids; /* ids for dimensions in chunkspec string */ - size_t *chunksizes; /* corresponding chunk sizes */ - bool_t omit; /* true if chunking to be turned off */ -} chunkspecs; - -/* - * Parse chunkspec string and convert into chunkspec_t structure. - * ncid: location ID of open netCDF file or group in an open file - * spec: string of form - * dim1/n1,dim2/n2,...,dimk/nk - * - * specifying chunk size (ni) to be used for dimension named - * dimi. Dimension names may be absolute, - * e.g. "/grp_a/grp_a1/dim". The "ni" part of the spec may be - * omitted, in which case it is assumed to be the entire - * dimension size. That is also the default for dimensions - * not mentioned in the string. - * If the chunkspec string is "/", specifying no dimensions or - * chunk sizes, it indicates chunking to be turned off on output. - * - * Returns NC_NOERR if no error, NC_EINVAL if spec has consecutive - * unescaped commas or no chunksize specified for dimension. - */ -int -chunkspec_parse(int ncid, const char *spec) { - const char *cp; /* character cursor */ - const char *pp = spec; /* previous char cursor for detecting escapes */ - const char *np; /* beginning of current dimension name */ - size_t ndims = 0; - int idim; - int ret; - int comma_seen = 0; - - chunkspecs.ndims = 0; - chunkspecs.omit = false; - if (!spec || *spec == '\0') /* default chunking */ - return NC_NOERR; - if (spec[0] == '/' && spec[1] == '\0') { /* no chunking */ - chunkspecs.omit = true; - return NC_NOERR; - } - /* Count unescaped commas, handle consecutive unescaped commas as error */ - for(cp = spec; *cp; cp++) { - if(*cp == ',' && *pp != '\\') { - if(comma_seen) { /* consecutive commas detected */ - return(NC_EINVAL); - } - comma_seen = 1; - ndims++; - } else { - comma_seen = 0; - } - pp = cp; - } - ndims++; - chunkspecs.ndims = ndims; - chunkspecs.dimids = (int *) emalloc(ndims * sizeof(int)); - chunkspecs.chunksizes = (size_t *) emalloc(ndims * sizeof(size_t)); - /* Look up dimension ids and assign chunksizes */ - pp = spec; - np = spec; - idim = 0; - for(cp = spec; ; cp++) { - if(*cp == '\0' || (*cp == ',' && *pp != '\\')) { /* found end of "dim/nn" part */ - char* dimname = 0; - char *dp; - int dimid; - size_t chunksize; - - for(; pp > np && *pp != '/'; pp--) { /* look backwards for "/" */ - continue; - } - if(*pp != '/') { /* no '/' found, no chunksize specified for dimension */ - return(NC_EINVAL); - } - /* extract dimension name */ - dimname = (char *) emalloc(pp - np + 1); - dp = dimname; - while(np < pp) { - *dp++ = *np++; - } - *dp = '\0'; - /* look up dimension id from dimension pathname */ - ret = nc_inq_dimid2(ncid, dimname, &dimid); - if(ret != NC_NOERR) - break; - chunkspecs.dimids[idim] = dimid; - /* parse and assign corresponding chunksize */ - pp++; /* now points to first digit of chunksize, ',', or '\0' */ - if(*pp == ',' || *pp == '\0') { /* no size specified, use dim len */ - size_t dimlen; - ret = nc_inq_dimlen(ncid, dimid, &dimlen); - if(ret != NC_NOERR) - return(ret); - chunksize = dimlen; - } else { /* convert nnn string to long long integer */ - char *ep; -#ifdef HAVE_STRTOLL - long long val = strtoll(pp, &ep, 0); -#else - long long val = strtol(pp, &ep, 0); -#endif - if(ep == pp || errno == ERANGE || val < 1) /* allow chunksize bigger than dimlen */ - return (NC_EINVAL); - chunksize = (size_t)val; - } - chunkspecs.chunksizes[idim] = chunksize; - idim++; - free(dimname); - if(*cp == '\0') - break; - /* set np to point to first char after comma */ - np = cp + 1; - } - pp = cp; - }; - return NC_NOERR; -} - -/* Return size in chunkspec string specified for dimension corresponding to dimid, 0 if not found */ -size_t -chunkspec_size(int dimid) { - int idim; - for(idim = 0; idim < chunkspecs.ndims; idim++) { - if(dimid == chunkspecs.dimids[idim]) { - return chunkspecs.chunksizes[idim]; - } - } - return 0; -} - -/* Return number of dimensions for which chunking was specified in - * chunkspec string on command line, 0 if no chunkspec string was - * specified. */ -int -chunkspec_ndims(void) { - return chunkspecs.ndims; -} - -/* Return whether chunking should be omitted, due to explicit - * command-line specification. */ -bool_t -chunkspec_omit(void) { - return chunkspecs.omit; -} - - diff --git a/contrib/netcdf/4.4.1.1/ncdump/chunkspec.h b/contrib/netcdf/4.4.1.1/ncdump/chunkspec.h deleted file mode 100644 index e0885dc33e2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/chunkspec.h +++ /dev/null @@ -1,31 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id $ - *********************************************************************/ -#ifndef _CHUNKSPEC_H_ -#define _CHUNKSPEC_H_ - -/* Parse chunkspec string and convert into internal data structure, - * associating dimids from open file or group specified by ncid with - * corresponding chunk sizes */ -extern int -chunkspec_parse(int ncid, const char *spec); - -/* Return chunk size in chunkspec string specified for dimension - * corresponding to dimid, 0 if not found */ -extern size_t -chunkspec_size(int dimid); - -/* Return number of dimensions for which chunking was specified in - * chunkspec string on command line, 0 if no chunkspec string was - * specified. */ -extern int -chunkspec_ndims(void); - -/* Return whether chunking should be omitted, due to explicit - * command-line specification. */ -extern bool_t -chunkspec_omit(void); - -#endif /* _CHUNKSPEC_H_ */ diff --git a/contrib/netcdf/4.4.1.1/ncdump/expected/Makefile.in b/contrib/netcdf/4.4.1.1/ncdump/expected/Makefile.in deleted file mode 100644 index 80e89c121e6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/expected/Makefile.in +++ /dev/null @@ -1,522 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2007, see the COPYRIGHT file for more information. - -# This is to include the test comparison files -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = ncdump/expected -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_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) -am__DIST_COMMON = $(srcdir)/Makefile.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = @AM_CPPFLAGS@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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 = \ -c0.dmp example_good.dmp fills.dmp nc_enddef.dmp nc_sync.dmp pres_temp_4D.dmp \ -ref_const_test.dmp ref_ctest1_nc4.dmp ref_ctest1_nc4c.dmp ref_dimscope.dmp \ -ref_nctst.dmp ref_nctst_64bit_offset.dmp ref_nctst_netcdf4.dmp \ -ref_nctst_netcdf4_classic.dmp \ -ref_tst_comp.dmp ref_tst_comp2.dmp ref_tst_comp3.dmp \ -ref_tst_enum_data.dmp ref_tst_group_data.dmp \ -ref_tst_nans.dmp ref_tst_opaque_data.dmp ref_tst_small.dmp \ -ref_tst_solar_1.dmp ref_tst_solar_2.dmp ref_tst_special_atts.dmp \ -ref_tst_string_data.dmp ref_tst_unicode.dmp ref_tst_utf8.dmp \ -ref_typescope.dmp sfc_pres_temp.dmp \ -simple_xy.dmp small.dmp small2.dmp test0.dmp tst_ncml.dmp \ -n3time.dmp ref_tst_special_atts3.dmp ref_tst_chardata.dmp ref_tst_unlim2.dmp \ -ref_solar.dmp unlimtest1.dmp unlimtest2.dmp \ -ref_tst_vlen_data.dmp ref_tst_vlen_data2.dmp \ -ref_niltest.dmp ref_tst_h_scalar.dmp ref_tst_econst.dmp \ -ref_tst_nul3.dmp ref_tst_nul4.dmp ref_tst_names.dmp \ -ref_tst_long_charconst.dmp tst_chararray.dmp ref_keyword.dmp \ -CMakeLists.txt - -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 ncdump/expected/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncdump/expected/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - 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 - -.PRECIOUS: Makefile - - -# These do not exist because they are not run as usual tests -# bigf1.dmp bigf2.dmp bigf3.dmp bigr1.dmp bigr2.dmp bigr3.dmp gfs1.dmp - -# 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/contrib/netcdf/4.4.1.1/ncdump/nccopy.c b/contrib/netcdf/4.4.1.1/ncdump/nccopy.c deleted file mode 100644 index ed56eb061a8..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/nccopy.c +++ /dev/null @@ -1,1748 +0,0 @@ -/********************************************************************* - * Copyright 2010, University Corporation for Atmospheric Research - * See netcdf/README file for copying and redistribution conditions. - * Thanks to Philippe Poilbarbe and Antonio S. Cofiño for - * compression additions. - * $Id: nccopy.c 400 2010-08-27 21:02:52Z russ $ - *********************************************************************/ - -#include "config.h" /* for USE_NETCDF4 macro */ -#include -#ifdef HAVE_GETOPT_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include "nciter.h" -#include "utils.h" -#include "chunkspec.h" -#include "dimmap.h" -#include "nccomps.h" - -#ifdef _MSC_VER -#include "XGetopt.h" -#define snprintf _snprintf -int opterr; -int optind; -#endif - -/* default bytes of memory we are willing to allocate for variable - * values during copy */ -#define COPY_BUFFER_SIZE (5000000) -#define COPY_CHUNKCACHE_PREEMPTION (1.0f) /* for copying, can eject fully read chunks */ -#define SAME_AS_INPUT (-1) /* default, if kind not specified */ -#define CHUNK_THRESHOLD (8192) /* non-record variables with fewer bytes don't get chunked */ - -#ifndef USE_NETCDF4 -#define NC_CLASSIC_MODEL 0x0100 /* Enforce classic model if netCDF-4 not available. */ -#endif - -/* Global variables for command-line requests */ -char *progname; /* for error messages */ -static int option_kind = SAME_AS_INPUT; -static int option_deflate_level = -1; /* default, compress output only if input compressed */ -static int option_shuffle_vars = NC_NOSHUFFLE; /* default, no shuffling on compression */ -static int option_fix_unlimdims = 0; /* default, preserve unlimited dimensions */ -static char* option_chunkspec = 0; /* default, no chunk specification */ -static size_t option_copy_buffer_size = COPY_BUFFER_SIZE; -static size_t option_chunk_cache_size = CHUNK_CACHE_SIZE; /* default from config.h */ -static size_t option_chunk_cache_nelems = CHUNK_CACHE_NELEMS; /* default from config.h */ -static int option_read_diskless = 0; /* default, don't read input into memory on open */ -static int option_write_diskless = 0; /* default, don't write output to diskless file */ -static int option_min_chunk_bytes = CHUNK_THRESHOLD; /* default, don't chunk variable if prod of - * chunksizes of its dimensions is smaller - * than this */ -static int option_nlgrps = 0; /* Number of groups specified with -g - * option on command line */ -static char** option_lgrps = 0; /* list of group names specified with -g - * option on command line */ -static idnode_t* option_grpids = 0; /* list of grpids matching list specified with -g option */ -static bool_t option_grpstruct = false; /* if -g set, copy structure for non-selected groups */ -static int option_nlvars = 0; /* Number of variables specified with -v * option on command line */ -static char** option_lvars = 0; /* list of variable names specified with -v - * option on command line */ -static bool_t option_varstruct = false; /* if -v set, copy structure for non-selected vars */ -static int option_compute_chunkcaches = 0; /* default, don't try still flaky estimate of - * chunk cache for each variable */ - -/* get group id in output corresponding to group igrp in input, - * given parent group id (or root group id) parid in output. */ -static int -get_grpid(int igrp, int parid, int *ogrpp) { - int stat = NC_NOERR; - int ogid = parid; /* like igrp but in output file */ -#ifdef USE_NETCDF4 - int inparid; - - /* if not root group, get corresponding output groupid from group name */ - stat = nc_inq_grp_parent(igrp, &inparid); - if(stat == NC_NOERR) { /* not root group */ - char grpname[NC_MAX_NAME + 1]; - NC_CHECK(nc_inq_grpname(igrp, grpname)); - NC_CHECK(nc_inq_grp_ncid(parid, grpname, &ogid)); - } else if(stat == NC_ENOGRP) { /* root group */ - stat = NC_NOERR; - } else { - NC_CHECK(stat); - } -#endif /* USE_NETCDF4 */ - *ogrpp = ogid; - return stat; -} - -/* Return size in bytes of a variable value */ -static size_t -val_size(int grpid, int varid) { - nc_type vartype; - size_t value_size; - NC_CHECK(nc_inq_vartype(grpid, varid, &vartype)); - NC_CHECK(nc_inq_type(grpid, vartype, NULL, &value_size)); - return value_size; -} - -#ifdef USE_NETCDF4 -/* Get parent id needed to define a new group from its full name in an - * open file identified by ncid. Assumes all intermediate groups are - * already defined. */ -static int -nc_inq_parid(int ncid, const char *fullname, int *locidp) { - char *parent = strdup(fullname); - char *slash = "/"; /* groupname separator */ - char *last_slash; - if(parent == NULL) { - return NC_ENOMEM; /* exits */ - } - last_slash = strrchr(parent, '/'); - if(last_slash == parent || last_slash == NULL) { /* parent is root */ - free(parent); - parent = strdup(slash); - } else { - *last_slash = '\0'; /* truncate to get parent name */ - } - NC_CHECK(nc_inq_grp_full_ncid(ncid, parent, locidp)); - free(parent); - return NC_NOERR; -} - -/* Return size of chunk in bytes for a variable varid in a group igrp, or 0 if - * layout is contiguous */ -static int -inq_var_chunksize(int igrp, int varid, size_t* chunksizep) { - int stat = NC_NOERR; - int ndims; - size_t *chunksizes; - int dim; - int contig = 1; - nc_type vartype; - size_t value_size; - size_t prod; - - NC_CHECK(nc_inq_vartype(igrp, varid, &vartype)); - /* from type, get size in memory needed for each value */ - NC_CHECK(nc_inq_type(igrp, vartype, NULL, &value_size)); - prod = value_size; - NC_CHECK(nc_inq_varndims(igrp, varid, &ndims)); - chunksizes = (size_t *) emalloc((ndims + 1) * sizeof(size_t)); - if(ndims > 0) { - NC_CHECK(nc_inq_var_chunking(igrp, varid, &contig, NULL)); - } - if(contig == 1) { - *chunksizep = 0; - } else { - NC_CHECK(nc_inq_var_chunking(igrp, varid, &contig, chunksizes)); - for(dim = 0; dim < ndims; dim++) { - prod *= chunksizes[dim]; - } - *chunksizep = prod; - } - free(chunksizes); - return stat; -} - -/* Return estimated number of elems required in chunk cache and - * estimated size of chunk cache adequate to efficiently copy input - * variable ivarid to output variable ovarid, which may have different - * chunk size and shape */ -static int -inq_var_chunking_params(int igrp, int ivarid, int ogrp, int ovarid, - size_t* chunkcache_sizep, - size_t *chunkcache_nelemsp, - float * chunkcache_preemptionp) -{ - int stat = NC_NOERR; - int ndims; - size_t *ichunksizes, *ochunksizes; - int dim; - int icontig = 1, ocontig = 1; - nc_type vartype; - size_t value_size; - size_t prod, iprod, oprod; - size_t nelems; - *chunkcache_nelemsp = CHUNK_CACHE_NELEMS; - *chunkcache_sizep = CHUNK_CACHE_SIZE; - *chunkcache_preemptionp = COPY_CHUNKCACHE_PREEMPTION; - - NC_CHECK(nc_inq_varndims(igrp, ivarid, &ndims)); - if(ndims > 0) { - NC_CHECK(nc_inq_var_chunking(igrp, ivarid, &icontig, NULL)); - NC_CHECK(nc_inq_var_chunking(ogrp, ovarid, &ocontig, NULL)); - } - if(icontig == 1 && ocontig == 1) { /* no chunking in input or output */ - *chunkcache_nelemsp = 0; - *chunkcache_sizep = 0; - *chunkcache_preemptionp = 0; - return stat; - } - - NC_CHECK(nc_inq_vartype(igrp, ivarid, &vartype)); - NC_CHECK(nc_inq_type(igrp, vartype, NULL, &value_size)); - iprod = value_size; - - if(icontig == 0 && ocontig == 1) { /* chunking only in input */ - *chunkcache_nelemsp = 1; /* read one input chunk at a time */ - *chunkcache_sizep = iprod; - *chunkcache_preemptionp = 1.0f; - return stat; - } - - ichunksizes = (size_t *) emalloc((ndims + 1) * sizeof(size_t)); - if(icontig == 1) { /* if input contiguous, treat as if chunked on - * first dimension */ - ichunksizes[0] = 1; - for(dim = 1; dim < ndims; dim++) { - ichunksizes[dim] = dim; - } - } else { - NC_CHECK(nc_inq_var_chunking(igrp, ivarid, &icontig, ichunksizes)); - } - - /* now can assume chunking in both input and output */ - ochunksizes = (size_t *) emalloc((ndims + 1) * sizeof(size_t)); - NC_CHECK(nc_inq_var_chunking(ogrp, ovarid, &ocontig, ochunksizes)); - - nelems = 1; - oprod = value_size; - for(dim = 0; dim < ndims; dim++) { - nelems += 1 + (ichunksizes[dim] - 1) / ochunksizes[dim]; - iprod *= ichunksizes[dim]; - oprod *= ochunksizes[dim]; - } - prod = iprod + oprod * (nelems - 1); - *chunkcache_nelemsp = nelems; - *chunkcache_sizep = prod; - free(ichunksizes); - free(ochunksizes); - return stat; -} - -/* Forward declaration, because copy_type, copy_vlen_type call each other */ -static int copy_type(int igrp, nc_type typeid, int ogrp); - -/* - * copy a user-defined variable length type in the group igrp to the - * group ogrp - */ -static int -copy_vlen_type(int igrp, nc_type itype, int ogrp) -{ - int stat = NC_NOERR; - nc_type ibasetype; - nc_type obasetype; /* base type in target group */ - char name[NC_MAX_NAME]; - size_t size; - char basename[NC_MAX_NAME]; - size_t basesize; - nc_type vlen_type; - - NC_CHECK(nc_inq_vlen(igrp, itype, name, &size, &ibasetype)); - /* to get base type id in target group, use name of base type in - * source group */ - NC_CHECK(nc_inq_type(igrp, ibasetype, basename, &basesize)); - stat = nc_inq_typeid(ogrp, basename, &obasetype); - /* if no such type, create it now */ - if(stat == NC_EBADTYPE) { - NC_CHECK(copy_type(igrp, ibasetype, ogrp)); - stat = nc_inq_typeid(ogrp, basename, &obasetype); - } - NC_CHECK(stat); - - /* Now we know base type exists in output and we know its type id */ - NC_CHECK(nc_def_vlen(ogrp, name, obasetype, &vlen_type)); - - return stat; -} - -/* - * copy a user-defined opaque type in the group igrp to the group ogrp - */ -static int -copy_opaque_type(int igrp, nc_type itype, int ogrp) -{ - int stat = NC_NOERR; - nc_type otype; - char name[NC_MAX_NAME]; - size_t size; - - NC_CHECK(nc_inq_opaque(igrp, itype, name, &size)); - NC_CHECK(nc_def_opaque(ogrp, size, name, &otype)); - - return stat; -} - -/* - * copy a user-defined enum type in the group igrp to the group ogrp - */ -static int -copy_enum_type(int igrp, nc_type itype, int ogrp) -{ - int stat = NC_NOERR; - nc_type otype; - nc_type basetype; - size_t basesize; - size_t nmembers; - char name[NC_MAX_NAME]; - int i; - - NC_CHECK(nc_inq_enum(igrp, itype, name, &basetype, &basesize, &nmembers)); - NC_CHECK(nc_def_enum(ogrp, basetype, name, &otype)); - for(i = 0; i < nmembers; i++) { /* insert enum members */ - char ename[NC_MAX_NAME]; - long long val; /* large enough to hold any integer type */ - NC_CHECK(nc_inq_enum_member(igrp, itype, i, ename, &val)); - NC_CHECK(nc_insert_enum(ogrp, otype, ename, &val)); - } - return stat; -} - -/* - * copy a user-defined compound type in the group igrp to the group ogrp - */ -static int -copy_compound_type(int igrp, nc_type itype, int ogrp) -{ - int stat = NC_NOERR; - char name[NC_MAX_NAME]; - size_t size; - size_t nfields; - nc_type otype; - int fid; - - NC_CHECK(nc_inq_compound(igrp, itype, name, &size, &nfields)); - NC_CHECK(nc_def_compound(ogrp, size, name, &otype)); - - for (fid = 0; fid < nfields; fid++) { - char fname[NC_MAX_NAME]; - char ftypename[NC_MAX_NAME]; - size_t foff; - nc_type iftype, oftype; - int fndims; - - NC_CHECK(nc_inq_compound_field(igrp, itype, fid, fname, &foff, &iftype, &fndims, NULL)); - /* type ids in source don't necessarily correspond to same - * typeids in destination, so look up destination typeid by using - * field type name */ - NC_CHECK(nc_inq_type(igrp, iftype, ftypename, NULL)); - NC_CHECK(nc_inq_typeid(ogrp, ftypename, &oftype)); - if(fndims == 0) { - NC_CHECK(nc_insert_compound(ogrp, otype, fname, foff, oftype)); - } else { /* field is array type */ - int *fdimsizes; - fdimsizes = (int *) emalloc((fndims + 1) * sizeof(int)); - stat = nc_inq_compound_field(igrp, itype, fid, NULL, NULL, NULL, - NULL, fdimsizes); - NC_CHECK(nc_insert_array_compound(ogrp, otype, fname, foff, oftype, fndims, fdimsizes)); - free(fdimsizes); - } - } - return stat; -} - - -/* - * copy a user-defined type in the group igrp to the group ogrp - */ -static int -copy_type(int igrp, nc_type typeid, int ogrp) -{ - int stat = NC_NOERR; - nc_type type_class; - - NC_CHECK(nc_inq_user_type(igrp, typeid, NULL, NULL, NULL, NULL, &type_class)); - - switch(type_class) { - case NC_VLEN: - NC_CHECK(copy_vlen_type(igrp, typeid, ogrp)); - break; - case NC_OPAQUE: - NC_CHECK(copy_opaque_type(igrp, typeid, ogrp)); - break; - case NC_ENUM: - NC_CHECK(copy_enum_type(igrp, typeid, ogrp)); - break; - case NC_COMPOUND: - NC_CHECK(copy_compound_type(igrp, typeid, ogrp)); - break; - default: - NC_CHECK(NC_EBADTYPE); - } - return stat; -} - -/* Copy a group and all its subgroups, recursively, from iroot to - * oroot, the ncids of input file and output file. This just creates - * all the groups in the destination, but doesn't copy anything that's - * in the groups yet. */ -static int -copy_groups(int iroot, int oroot) -{ - int stat = NC_NOERR; - int numgrps; - int *grpids; - int i; - - /* get total number of groups and their ids, including all descendants */ - NC_CHECK(nc_inq_grps_full(iroot, &numgrps, NULL)); - if(numgrps > 1) { /* there's always 1 root group */ - grpids = emalloc(numgrps * sizeof(int)); - NC_CHECK(nc_inq_grps_full(iroot, NULL, grpids)); - /* create corresponding new groups in ogrp, except for root group */ - for(i = 1; i < numgrps; i++) { - char *grpname_full; - char grpname[NC_MAX_NAME]; - size_t len_name; - int ogid = 0, oparid = 0, iparid = 0; - /* get full group name of input group */ - NC_CHECK(nc_inq_grpname(grpids[i], grpname)); - if (option_grpstruct || group_wanted(grpids[i], option_nlgrps, option_grpids)) { - NC_CHECK(nc_inq_grpname_full(grpids[i], &len_name, NULL)); - grpname_full = emalloc(len_name + 1); - NC_CHECK(nc_inq_grpname_full(grpids[i], &len_name, grpname_full)); - /* Make sure, the parent group is also wanted (root group is always wanted) */ - NC_CHECK(nc_inq_parid(iroot, grpname_full, &iparid)); - if (!option_grpstruct && !group_wanted(iparid, option_nlgrps, option_grpids) - && iparid != iroot) { - error("ERROR: trying to copy a group but not the parent: %s", grpname_full); - } - /* get id of parent group of corresponding group in output. - * Note that this exists, because nc_inq_groups returned - * grpids in preorder, so parents are always copied before - * their subgroups */ - NC_CHECK(nc_inq_parid(oroot, grpname_full, &oparid)); - NC_CHECK(nc_inq_grpname(grpids[i], grpname)); - /* define corresponding group in output */ - NC_CHECK(nc_def_grp(oparid, grpname, &ogid)); - free(grpname_full); - } - } - free(grpids); - } - return stat; -} - -/* - * Copy the user-defined types in this group (igrp) and all its - * subgroups, recursively, to corresponding group in output (ogrp) - */ -static int -copy_types(int igrp, int ogrp) -{ - int stat = NC_NOERR; - int ntypes; - nc_type *types = NULL; - int numgrps; - int *grpids = NULL; - int i; - - NC_CHECK(nc_inq_typeids(igrp, &ntypes, NULL)); - - if(ntypes > 0) { - types = (nc_type *) emalloc(ntypes * sizeof(nc_type)); - NC_CHECK(nc_inq_typeids(igrp, &ntypes, types)); - for (i = 0; i < ntypes; i++) { - NC_CHECK(copy_type(igrp, types[i], ogrp)); - } - free(types); - } - - /* Copy types from subgroups */ - NC_CHECK(nc_inq_grps(igrp, &numgrps, NULL)); - if(numgrps > 0) { - grpids = (int *)emalloc(sizeof(int) * numgrps); - NC_CHECK(nc_inq_grps(igrp, &numgrps, grpids)); - for(i = 0; i < numgrps; i++) { - if (option_grpstruct || group_wanted(grpids[i], option_nlgrps, option_grpids)) { - int ogid; - /* get groupid in output corresponding to grpids[i] in - * input, given parent group (or root group) ogrp in - * output */ - NC_CHECK(get_grpid(grpids[i], ogrp, &ogid)); - NC_CHECK(copy_types(grpids[i], ogid)); - } - } - free(grpids); - } - return stat; -} - -/* Copy all netCDF-4 specific variable properties such as chunking, - * endianness, deflation, checksumming, fill, etc. */ -static int -copy_var_specials(int igrp, int varid, int ogrp, int o_varid) -{ - int stat = NC_NOERR; - { /* handle chunking parameters */ - int ndims; - NC_CHECK(nc_inq_varndims(igrp, varid, &ndims)); - if (ndims > 0) { /* no chunking for scalar variables */ - int contig = 0; - size_t *chunkp = (size_t *) emalloc(ndims * sizeof(size_t)); - int *dimids = (int *) emalloc(ndims * sizeof(int)); - int idim; - /* size of a chunk: product of dimension chunksizes and size of value */ - size_t csprod = val_size(ogrp, o_varid); - int is_unlimited = 0; - NC_CHECK(nc_inq_var_chunking(igrp, varid, &contig, chunkp)); - NC_CHECK(nc_inq_vardimid(igrp, varid, dimids)); - - for(idim = 0; idim < ndims; idim++) { - int idimid = dimids[idim]; - int odimid = dimmap_odimid(idimid); - size_t chunksize = chunkspec_size(idimid); - if(chunksize > 0) { /* found in chunkspec */ - chunkp[idim] = chunksize; - } - csprod *= chunkp[idim]; - if(dimmap_ounlim(odimid)) - is_unlimited = 1; - } - /* Explicitly set chunking, even if default */ - /* If product of chunksizes is too small and no unlimited - * dimensions used, don't chunk. Also if chunking - * explicitly turned off with chunk spec, don't chunk. */ - if ((csprod < option_min_chunk_bytes && !is_unlimited) || contig == 1 - || chunkspec_omit() == true) { - NC_CHECK(nc_def_var_chunking(ogrp, o_varid, NC_CONTIGUOUS, NULL)); - } else { - NC_CHECK(nc_def_var_chunking(ogrp, o_varid, NC_CHUNKED, chunkp)); - } - free(dimids); - free(chunkp); - } - } - { /* handle compression parameters, copying from input, overriding - * with command-line options */ - int shuffle_in=0, deflate_in=0, deflate_level_in=0; - int shuffle_out=0, deflate_out=0, deflate_level_out=0; - if(option_deflate_level != 0) { - NC_CHECK(nc_inq_var_deflate(igrp, varid, &shuffle_in, &deflate_in, &deflate_level_in)); - if(option_deflate_level == -1) { /* not specified, copy input compression and shuffling */ - shuffle_out = shuffle_in; - deflate_out = deflate_in; - deflate_level_out = deflate_level_in; - } else if(option_deflate_level > 0) { /* change to specified compression, shuffling */ - shuffle_out = option_shuffle_vars; - deflate_out=1; - deflate_level_out = option_deflate_level; - } - NC_CHECK(nc_def_var_deflate(ogrp, o_varid, shuffle_out, deflate_out, deflate_level_out)); - } - } - { /* handle checksum parameters */ - int fletcher32 = 0; - NC_CHECK(nc_inq_var_fletcher32(igrp, varid, &fletcher32)); - if(fletcher32 != 0) { - NC_CHECK(nc_def_var_fletcher32(ogrp, o_varid, fletcher32)); - } - } - { /* handle endianness */ - int endianness = 0; - NC_CHECK(nc_inq_var_endian(igrp, varid, &endianness)); - if(endianness != NC_ENDIAN_NATIVE) { /* native is the default */ - NC_CHECK(nc_def_var_endian(ogrp, o_varid, endianness)); - } - } - return stat; -} - -/* Set output variable o_varid (in group ogrp) to use chunking - * specified on command line, only called for classic format input and - * netCDF-4 format output, so no existing chunk lengths to override. */ -static int -set_var_chunked(int ogrp, int o_varid) -{ - int stat = NC_NOERR; - int ndims; - int odim; - size_t chunk_threshold = CHUNK_THRESHOLD; - - if(chunkspec_ndims() == 0) /* no chunking specified on command line */ - return stat; - NC_CHECK(nc_inq_varndims(ogrp, o_varid, &ndims)); - - if (ndims > 0) { /* no chunking for scalar variables */ - int chunked = 0; - int *dimids = (int *) emalloc(ndims * sizeof(int)); - size_t varsize; - nc_type vartype; - size_t value_size; - int is_unlimited = 0; - - NC_CHECK(nc_inq_vardimid (ogrp, o_varid, dimids)); - NC_CHECK(nc_inq_vartype(ogrp, o_varid, &vartype)); - /* from type, get size in memory needed for each value */ - NC_CHECK(nc_inq_type(ogrp, vartype, NULL, &value_size)); - varsize = value_size; - - /* Determine if this variable should be chunked. A variable - * should be chunked if any of its dims are in command-line - * chunk spec. It will also be chunked if any of its - * dims are unlimited. */ - for(odim = 0; odim < ndims; odim++) { - int odimid = dimids[odim]; - int idimid = dimmap_idimid(odimid); /* corresponding dimid in input file */ - if(dimmap_ounlim(odimid)) - is_unlimited = 1; /* whether vriable is unlimited */ - if(idimid != -1) { - size_t chunksize = chunkspec_size(idimid); /* from chunkspec */ - size_t dimlen; - NC_CHECK(nc_inq_dimlen(ogrp, odimid, &dimlen)); - if( (chunksize > 0) || dimmap_ounlim(odimid)) { - chunked = 1; - } - if(dimlen > 0) { /* dimlen for unlimited dims is still 0 before copying data */ - varsize *= dimlen; - } - } - } - /* Don't chunk small variables that don't use an unlimited - * dimension. */ - if(varsize < chunk_threshold && !is_unlimited) - chunked = 0; - - if(chunked) { - /* Allocate chunksizes and set defaults to dimsize for any - * dimensions not mentioned in chunkspec, except use 1 for unlimited dims. */ - size_t *chunkp = (size_t *) emalloc(ndims * sizeof(size_t)); - for(odim = 0; odim < ndims; odim++) { - int odimid = dimids[odim]; - int idimid = dimmap_idimid(odimid); - size_t chunksize = chunkspec_size(idimid); - if(chunksize > 0) { - chunkp[odim] = chunksize; - } else { - if(dimmap_ounlim(odimid)){ - chunkp[odim] = 1; - } else { - NC_CHECK(nc_inq_dimlen(ogrp, odimid, &chunkp[odim])); - } - } - } - NC_CHECK(nc_def_var_chunking(ogrp, o_varid, NC_CHUNKED, chunkp)); - free(chunkp); - } - free(dimids); - } - return stat; -} - -/* Set variable to compression specified on command line */ -static int -set_var_compressed(int ogrp, int o_varid) -{ - int stat = NC_NOERR; - if (option_deflate_level > 0) { - int deflate = 1; - NC_CHECK(nc_def_var_deflate(ogrp, o_varid, option_shuffle_vars, deflate, option_deflate_level)); - } - return stat; -} - -/* Release the variable chunk cache allocated for variable varid in - * group grp. This is not necessary, but will save some memory when - * processing one variable at a time. */ -#ifdef UNUSED -static int -free_var_chunk_cache(int grp, int varid) -{ - int stat = NC_NOERR; - size_t chunk_cache_size = 1; - size_t cache_nelems = 1; - float cache_preemp = 0; - int kind; - NC_CHECK(nc_inq_format(grp, &kind)); - if(kind == NC_FORMAT_NETCDF4 || kind == NC_FORMAT_NETCDF4_CLASSIC) { - int contig = 1; - NC_CHECK(nc_inq_var_chunking(grp, varid, &contig, NULL)); - if(contig == 0) { /* chunked */ - NC_CHECK(nc_set_var_chunk_cache(grp, varid, chunk_cache_size, cache_nelems, cache_preemp)); - } - } - return stat; -} -#endif - -#endif /* USE_NETCDF4 */ - -/* Copy dimensions from group igrp to group ogrp, also associate input - * dimids with output dimids (they need not match, because the input - * dimensions may have been defined in a different order than we define - * the output dimensions here. */ -static int -copy_dims(int igrp, int ogrp) -{ - int stat = NC_NOERR; - int ndims; - int dgrp; -#ifdef USE_NETCDF4 - int nunlims; - int *dimids; - int *unlimids; -#else - int unlimid; -#endif /* USE_NETCDF4 */ - - NC_CHECK(nc_inq_ndims(igrp, &ndims)); - -#ifdef USE_NETCDF4 - /* In netCDF-4 files, dimids may not be sequential because they - * may be defined in various groups, and we are only looking at one - * group at a time. */ - /* Find the dimension ids in this group, don't include parents. */ - dimids = (int *) emalloc((ndims + 1) * sizeof(int)); - NC_CHECK(nc_inq_dimids(igrp, NULL, dimids, 0)); - /* Find the number of unlimited dimensions and get their IDs */ - NC_CHECK(nc_inq_unlimdims(igrp, &nunlims, NULL)); - unlimids = (int *) emalloc((nunlims + 1) * sizeof(int)); - NC_CHECK(nc_inq_unlimdims(igrp, NULL, unlimids)); -#else - NC_CHECK(nc_inq_unlimdim(igrp, &unlimid)); -#endif /* USE_NETCDF4 */ - - /* Copy each dimension to output, including unlimited dimension(s) */ - for (dgrp = 0; dgrp < ndims; dgrp++) { - char name[NC_MAX_NAME]; - size_t length; - int i_is_unlim; - int o_is_unlim; - int idimid, odimid; -#ifdef USE_NETCDF4 - int uld; -#endif - - i_is_unlim = 0; -#ifdef USE_NETCDF4 - idimid = dimids[dgrp]; - for (uld = 0; uld < nunlims; uld++) { - if(idimid == unlimids[uld]) { - i_is_unlim = 1; - break; - } - } -#else - idimid = dgrp; - if(unlimid != -1 && (idimid == unlimid)) { - i_is_unlim = 1; - } -#endif /* USE_NETCDF4 */ - - stat = nc_inq_dim(igrp, idimid, name, &length); - if (stat == NC_EDIMSIZE && sizeof(size_t) < 8) { - error("dimension \"%s\" requires 64-bit platform", name); - } - NC_CHECK(stat); - o_is_unlim = i_is_unlim; - if(i_is_unlim && !option_fix_unlimdims) { - NC_CHECK(nc_def_dim(ogrp, name, NC_UNLIMITED, &odimid)); - } else { - NC_CHECK(nc_def_dim(ogrp, name, length, &odimid)); - o_is_unlim = 0; - } - /* Store (idimid, odimid) mapping for later use, also whether unlimited */ - dimmap_store(idimid, odimid, i_is_unlim, o_is_unlim); - } -#ifdef USE_NETCDF4 - free(dimids); - free(unlimids); -#endif /* USE_NETCDF4 */ - return stat; -} - -/* Copy the attributes for variable ivar in group igrp to variable - * ovar in group ogrp. Global (group) attributes are specified by - * using the varid NC_GLOBAL */ -static int -copy_atts(int igrp, int ivar, int ogrp, int ovar) -{ - int natts; - int iatt; - int stat = NC_NOERR; - - NC_CHECK(nc_inq_varnatts(igrp, ivar, &natts)); - - for(iatt = 0; iatt < natts; iatt++) { - char name[NC_MAX_NAME]; - NC_CHECK(nc_inq_attname(igrp, ivar, iatt, name)); - NC_CHECK(nc_copy_att(igrp, ivar, name, ogrp, ovar)); - } - return stat; -} - -/* copy the schema for a single variable in group igrp to group ogrp */ -static int -copy_var(int igrp, int varid, int ogrp) -{ - int stat = NC_NOERR; - int ndims; - int *idimids; /* ids of dims for input variable */ - int *odimids; /* ids of dims for output variable */ - char name[NC_MAX_NAME]; - nc_type typeid, o_typeid; - int natts; - int i; - int o_varid; - - NC_CHECK(nc_inq_varndims(igrp, varid, &ndims)); - idimids = (int *) emalloc((ndims + 1) * sizeof(int)); - NC_CHECK(nc_inq_var(igrp, varid, name, &typeid, NULL, idimids, &natts)); - o_typeid = typeid; -#ifdef USE_NETCDF4 - if (typeid > NC_STRING) { /* user-defined type */ - /* type ids in source don't necessarily correspond to same - * typeids in destination, so look up destination typeid by - * using type name */ - char type_name[NC_MAX_NAME]; - NC_CHECK(nc_inq_type(igrp, typeid, type_name, NULL)); - NC_CHECK(nc_inq_typeid(ogrp, type_name, &o_typeid)); - } -#endif /* USE_NETCDF4 */ - - /* get the corresponding dimids in the output file */ - odimids = (int *) emalloc((ndims + 1) * sizeof(int)); - for(i = 0; i < ndims; i++) { - odimids[i] = dimmap_odimid(idimids[i]); - if(odimids[i] == -1) { - error("Oops, no dimension in output associated with input dimid %d", idimids[i]); - } - } - - /* define the output variable */ - NC_CHECK(nc_def_var(ogrp, name, o_typeid, ndims, odimids, &o_varid)); - /* attach the variable attributes to the output variable */ - NC_CHECK(copy_atts(igrp, varid, ogrp, o_varid)); -#ifdef USE_NETCDF4 - { - int inkind; - int outkind; - NC_CHECK(nc_inq_format(igrp, &inkind)); - NC_CHECK(nc_inq_format(ogrp, &outkind)); - if(outkind == NC_FORMAT_NETCDF4 || outkind == NC_FORMAT_NETCDF4_CLASSIC) { - if((inkind == NC_FORMAT_NETCDF4 || inkind == NC_FORMAT_NETCDF4_CLASSIC)) { - /* Copy all netCDF-4 specific variable properties such as - * chunking, endianness, deflation, checksumming, fill, etc. */ - NC_CHECK(copy_var_specials(igrp, varid, ogrp, o_varid)); - } else { - /* Set chunking if specified in command line option */ - NC_CHECK(set_var_chunked(ogrp, o_varid)); - /* Set compression if specified in command line option */ - NC_CHECK(set_var_compressed(ogrp, o_varid)); - } - } - } -#endif /* USE_NETCDF4 */ - free(idimids); - free(odimids); - return stat; -} - -/* copy the schema for all the variables in group igrp to group ogrp */ -static int -copy_vars(int igrp, int ogrp) -{ - int stat = NC_NOERR; - int nvars; - int varid; - - int iv; /* variable number */ - idnode_t* vlist = 0; /* list for vars specified with -v option */ - - /* - * If any vars were specified with -v option, get list of - * associated variable ids relative to this group. Assume vars - * specified with syntax like "grp1/grp2/varname" or - * "/grp1/grp2/varname" if they are in groups. - */ - vlist = newidlist(); /* list for vars specified with -v option */ - for (iv=0; iv < option_nlvars; iv++) { - if(nc_inq_gvarid(igrp, option_lvars[iv], &varid) == NC_NOERR) - idadd(vlist, varid); - } - - NC_CHECK(nc_inq_nvars(igrp, &nvars)); - for (varid = 0; varid < nvars; varid++) { - if (!option_varstruct && option_nlvars > 0 && ! idmember(vlist, varid)) - continue; - NC_CHECK(copy_var(igrp, varid, ogrp)); - } - freeidlist(vlist); - return stat; -} - -/* Copy the schema in a group and all its subgroups, recursively, from - * group igrp in input to parent group ogrp in destination. Use - * dimmap array to map input dimids to output dimids. */ -static int -copy_schema(int igrp, int ogrp) -{ - int stat = NC_NOERR; - int ogid; /* like igrp but in output file */ - - /* get groupid in output corresponding to group igrp in input, - * given parent group (or root group) ogrp in output */ - NC_CHECK(get_grpid(igrp, ogrp, &ogid)); - - NC_CHECK(copy_dims(igrp, ogid)); - NC_CHECK(copy_atts(igrp, NC_GLOBAL, ogid, NC_GLOBAL)); - NC_CHECK(copy_vars(igrp, ogid)); -#ifdef USE_NETCDF4 - { - int numgrps; - int *grpids; - int i; - /* Copy schema from subgroups */ - stat = nc_inq_grps(igrp, &numgrps, NULL); - grpids = (int *)emalloc((numgrps + 1) * sizeof(int)); - NC_CHECK(nc_inq_grps(igrp, &numgrps, grpids)); - - for(i = 0; i < numgrps; i++) { - if (option_grpstruct || group_wanted(grpids[i], option_nlgrps, option_grpids)) { - NC_CHECK(copy_schema(grpids[i], ogid)); - } - } - free(grpids); - } -#endif /* USE_NETCDF4 */ - return stat; -} - -/* Return number of values for a variable varid in a group igrp */ -static int -inq_nvals(int igrp, int varid, long long *nvalsp) { - int stat = NC_NOERR; - int ndims; - int *dimids; - int dim; - long long nvals = 1; - - NC_CHECK(nc_inq_varndims(igrp, varid, &ndims)); - dimids = (int *) emalloc((ndims + 1) * sizeof(int)); - NC_CHECK(nc_inq_vardimid (igrp, varid, dimids)); - for(dim = 0; dim < ndims; dim++) { - size_t len; - NC_CHECK(nc_inq_dimlen(igrp, dimids[dim], &len)); - nvals *= len; - } - if(nvalsp) - *nvalsp = nvals; - free(dimids); - return stat; -} - -/* Copy data from variable varid in group igrp to corresponding group - * ogrp. */ -static int -copy_var_data(int igrp, int varid, int ogrp) { - int stat = NC_NOERR; - nc_type vartype; - long long nvalues; /* number of values for this variable */ - size_t ntoget; /* number of values to access this iteration */ - size_t value_size; /* size of a single value of this variable */ - static void *buf = 0; /* buffer for the variable values */ - char varname[NC_MAX_NAME]; - int ovarid; - size_t *start; - size_t *count; - nciter_t *iterp; /* opaque structure for iteration status */ - int do_realloc = 0; -#ifdef USE_NETCDF4 - int okind; - size_t chunksize; -#endif - - NC_CHECK(inq_nvals(igrp, varid, &nvalues)); - if(nvalues == 0) - return stat; - /* get corresponding output variable */ - NC_CHECK(nc_inq_varname(igrp, varid, varname)); - NC_CHECK(nc_inq_varid(ogrp, varname, &ovarid)); - NC_CHECK(nc_inq_vartype(igrp, varid, &vartype)); - value_size = val_size(igrp, varid); - if(value_size > option_copy_buffer_size) { - option_copy_buffer_size = value_size; - do_realloc = 1; - } -#ifdef USE_NETCDF4 - NC_CHECK(nc_inq_format(ogrp, &okind)); - if(okind == NC_FORMAT_NETCDF4 || okind == NC_FORMAT_NETCDF4_CLASSIC) { - /* if this variable chunked, set variable chunk cache size */ - int contig = 1; - NC_CHECK(nc_inq_var_chunking(ogrp, ovarid, &contig, NULL)); - if(contig == 0) { /* chunked */ - if(option_compute_chunkcaches) { - /* Try to estimate variable-specific chunk cache, - * depending on specific size and shape of this - * variable's chunks. This doesn't work yet. */ - size_t chunkcache_size, chunkcache_nelems; - float chunkcache_preemption; - NC_CHECK(inq_var_chunking_params(igrp, varid, ogrp, ovarid, - &chunkcache_size, - &chunkcache_nelems, - &chunkcache_preemption)); - NC_CHECK(nc_set_var_chunk_cache(ogrp, ovarid, - chunkcache_size, - chunkcache_nelems, - chunkcache_preemption)); - } else { - /* by default, use same chunk cache for all chunked variables */ - NC_CHECK(nc_set_var_chunk_cache(ogrp, ovarid, - option_chunk_cache_size, - option_chunk_cache_nelems, - COPY_CHUNKCACHE_PREEMPTION)); - } - } - } - /* For chunked variables, option_copy_buffer_size must also be at least as large as - * size of a chunk in input, otherwise resize it. */ - { - NC_CHECK(inq_var_chunksize(igrp, varid, &chunksize)); - if(chunksize > option_copy_buffer_size) { - option_copy_buffer_size = chunksize; - do_realloc = 1; - } - } -#endif /* USE_NETCDF4 */ - if(buf && do_realloc) { - free(buf); - buf = 0; - } - if(buf == 0) { /* first time or needs to grow */ - buf = emalloc(option_copy_buffer_size); - memset((void*)buf,0,option_copy_buffer_size); - } - - /* initialize variable iteration */ - NC_CHECK(nc_get_iter(igrp, varid, option_copy_buffer_size, &iterp)); - - start = (size_t *) emalloc((iterp->rank + 1) * sizeof(size_t)); - count = (size_t *) emalloc((iterp->rank + 1) * sizeof(size_t)); - /* nc_next_iter() initializes start and count on first call, - * changes start and count to iterate through whole variable on - * subsequent calls. */ - while((ntoget = nc_next_iter(iterp, start, count)) > 0) { - NC_CHECK(nc_get_vara(igrp, varid, start, count, buf)); - NC_CHECK(nc_put_vara(ogrp, ovarid, start, count, buf)); -#ifdef USE_NETCDF4 - /* we have to explicitly free values for strings and vlens */ - if(vartype == NC_STRING) { - NC_CHECK(nc_free_string(ntoget, (char **)buf)); - } else if(vartype > NC_STRING) { /* user-defined type */ - nc_type vclass; - NC_CHECK(nc_inq_user_type(igrp, vartype, NULL, NULL, NULL, NULL, &vclass)); - if(vclass == NC_VLEN) { - NC_CHECK(nc_free_vlens(ntoget, (nc_vlen_t *)buf)); - } - } -#endif /* USE_NETCDF4 */ - } /* end main iteration loop */ -#ifdef USE_NETCDF4 - /* We're all done with this input and output variable, so if - * either variable is chunked, free up its variable chunk cache */ - /* NC_CHECK(free_var_chunk_cache(igrp, varid)); */ - /* NC_CHECK(free_var_chunk_cache(ogrp, ovarid)); */ -#endif /* USE_NETCDF4 */ - free(start); - free(count); - NC_CHECK(nc_free_iter(iterp)); - return stat; -} - -/* Copy data from variables in group igrp to variables in - * corresponding group with parent ogrp, and all subgroups - * recursively */ -static int -copy_data(int igrp, int ogrp) -{ - int stat = NC_NOERR; - int ogid; - int nvars; - int varid; -#ifdef USE_NETCDF4 - int numgrps; - int *grpids; - int i; -#endif - - int iv; /* variable number */ - idnode_t* vlist = NULL; /* list for vars specified with -v option */ - - /* - * If any vars were specified with -v option, get list of - * associated variable ids relative to this group. Assume vars - * specified with syntax like "grp1/grp2/varname" or - * "/grp1/grp2/varname" if they are in groups. - */ - vlist = newidlist(); /* list for vars specified with -v option */ - for (iv=0; iv < option_nlvars; iv++) { - if(nc_inq_gvarid(igrp, option_lvars[iv], &varid) == NC_NOERR) - idadd(vlist, varid); - } - - /* get groupid in output corresponding to group igrp in input, - * given parent group (or root group) ogrp in output */ - NC_CHECK(get_grpid(igrp, ogrp, &ogid)); - - /* Copy data from this group */ - NC_CHECK(nc_inq_nvars(igrp, &nvars)); - - for (varid = 0; varid < nvars; varid++) { - if (option_nlvars > 0 && ! idmember(vlist, varid)) - continue; - if (!group_wanted(igrp, option_nlgrps, option_grpids)) - continue; - NC_CHECK(copy_var_data(igrp, varid, ogid)); - } -#ifdef USE_NETCDF4 - /* Copy data from subgroups */ - stat = nc_inq_grps(igrp, &numgrps, NULL); - grpids = (int *)emalloc((numgrps + 1) * sizeof(int)); - NC_CHECK(nc_inq_grps(igrp, &numgrps, grpids)); - - for(i = 0; i < numgrps; i++) { - if (!option_grpstruct && !group_wanted(grpids[i], option_nlgrps, option_grpids)) - continue; - NC_CHECK(copy_data(grpids[i], ogid)); - } - free(grpids); -#endif /* USE_NETCDF4 */ - freeidlist(vlist); - return stat; -} - -/* Count total number of dimensions in ncid and all its descendant subgroups */ -int -count_dims(int ncid) { - int numgrps; - int ndims; - NC_CHECK(nc_inq_ndims(ncid, &ndims)); -#ifdef USE_NETCDF4 - NC_CHECK(nc_inq_grps(ncid, &numgrps, NULL)); - if(numgrps > 0) { - int igrp; - int *grpids = emalloc(numgrps * sizeof(int)); - NC_CHECK(nc_inq_grps(ncid, &numgrps, grpids)); - for(igrp = 0; igrp < numgrps; igrp++) { - ndims += count_dims(grpids[igrp]); - } - free(grpids); - } -#endif /* USE_NETCDF4 */ - return ndims; -} - -/* Test if special case: netCDF-3 file with more than one record - * variable. Performance can be very slow for this case when the disk - * block size is large, there are many record variables, and a - * record's worth of data for some variables is smaller than the disk - * block size. In this case, copying the record variables a variable - * at a time causes much rereading of record data, so instead we want - * to copy data a record at a time. */ -static int -nc3_special_case(int ncid, int kind) { - if (kind == NC_FORMAT_CLASSIC || kind == NC_FORMAT_64BIT_OFFSET - || kind == NC_FORMAT_CDF5) { - int recdimid = 0; - NC_CHECK(nc_inq_unlimdim(ncid, &recdimid)); - if (recdimid != -1) { /* we have a record dimension */ - int nvars; - int varid; - NC_CHECK(nc_inq_nvars(ncid, &nvars)); - for (varid = 0; varid < nvars; varid++) { - int *dimids = 0; - int ndims; - NC_CHECK( nc_inq_varndims(ncid, varid, &ndims) ); - if (ndims > 0) { - int dimids0; - dimids = (int *) emalloc((ndims + 1) * sizeof(int)); - NC_CHECK( nc_inq_vardimid(ncid, varid, dimids) ); - dimids0 = dimids[0]; - free(dimids); - if(dimids0 == recdimid) { - return 1; /* found a record variable */ - } - } - } - } - } - return 0; -} - -/* Classify variables in ncid as either fixed-size variables (with no - * unlimited dimension) or as record variables (with an unlimited - * dimension) */ -static int -classify_vars( - int ncid, /* netCDF ID */ - size_t *nf, /* for returning number of fixed-size variables */ - int **fvars, /* the array of fixed_size variable IDS, caller should free */ - size_t *nr, /* for returning number of record variables */ - int **rvars) /* the array of record variable IDs, caller should free */ -{ - int varid; - int nvars; - NC_CHECK(nc_inq_nvars(ncid, &nvars)); - *nf = 0; - *fvars = (int *) emalloc(nvars * sizeof(int)); - *nr = 0; - *rvars = (int *) emalloc(nvars * sizeof(int)); - for (varid = 0; varid < nvars; varid++) { - if (isrecvar(ncid, varid)) { - (*rvars)[*nr] = varid; - (*nr)++; - } else { - (*fvars)[*nf] = varid; - (*nf)++; - } - } - return NC_NOERR; -} - -/* Only called for classic format or 64-bit offset format files, to speed up special case */ -static int -copy_fixed_size_data(int igrp, int ogrp, size_t nfixed_vars, int *fixed_varids) { - size_t ivar; - /* for each fixed-size variable, copy data */ - for (ivar = 0; ivar < nfixed_vars; ivar++) { - int varid = fixed_varids[ivar]; - NC_CHECK(copy_var_data(igrp, varid, ogrp)); - } - if (fixed_varids) - free(fixed_varids); - return NC_NOERR; -} - -/* copy a record's worth of data for a variable from input to output */ -static int -copy_rec_var_data(int ncid, /* input */ - int ogrp, /* output */ - int irec, /* record number */ - int varid, /* input variable id */ - int ovarid, /* output variable id */ - size_t *start, /* start indices for record data */ - size_t *count, /* edge lengths for record data */ - void *buf /* buffer large enough to hold data */ - ) -{ - NC_CHECK(nc_get_vara(ncid, varid, start, count, buf)); - NC_CHECK(nc_put_vara(ogrp, ovarid, start, count, buf)); - return NC_NOERR; -} - -/* Only called for classic format or 64-bit offset format files, to speed up special case */ -static int -copy_record_data(int ncid, int ogrp, size_t nrec_vars, int *rec_varids) { - int unlimid; - size_t nrecs = 0; /* how many records? */ - size_t irec; - size_t ivar; - void **buf; /* space for reading in data for each variable */ - int *rec_ovarids; /* corresponding varids in output */ - size_t **start; - size_t **count; - NC_CHECK(nc_inq_unlimdim(ncid, &unlimid)); - NC_CHECK(nc_inq_dimlen(ncid, unlimid, &nrecs)); - buf = (void **) emalloc(nrec_vars * sizeof(void *)); - rec_ovarids = (int *) emalloc(nrec_vars * sizeof(int)); - start = (size_t **) emalloc(nrec_vars * sizeof(size_t*)); - count = (size_t **) emalloc(nrec_vars * sizeof(size_t*)); - /* get space to hold one record's worth of data for each record variable */ - for (ivar = 0; ivar < nrec_vars; ivar++) { - int varid; - int ndims; - int *dimids; - size_t value_size; - int dimid; - int ii; - size_t nvals; - char varname[NC_MAX_NAME]; - varid = rec_varids[ivar]; - NC_CHECK(nc_inq_varndims(ncid, varid, &ndims)); - dimids = (int *) emalloc((1 + ndims) * sizeof(int)); - start[ivar] = (size_t *) emalloc(ndims * sizeof(size_t)); - count[ivar] = (size_t *) emalloc(ndims * sizeof(size_t)); - NC_CHECK(nc_inq_vardimid (ncid, varid, dimids)); - value_size = val_size(ncid, varid); - nvals = 1; - for(ii = 1; ii < ndims; ii++) { /* for rec size, don't include first record dimension */ - size_t dimlen; - dimid = dimids[ii]; - NC_CHECK(nc_inq_dimlen(ncid, dimid, &dimlen)); - nvals *= dimlen; - start[ivar][ii] = 0; - count[ivar][ii] = dimlen; - } - start[ivar][0] = 0; - count[ivar][0] = 1; /* 1 record */ - buf[ivar] = (void *) emalloc(nvals * value_size); - NC_CHECK(nc_inq_varname(ncid, varid, varname)); - NC_CHECK(nc_inq_varid(ogrp, varname, &rec_ovarids[ivar])); - if(dimids) - free(dimids); - } - - /* for each record, copy all variable data */ - for(irec = 0; irec < nrecs; irec++) { - for (ivar = 0; ivar < nrec_vars; ivar++) { - int varid, ovarid; - varid = rec_varids[ivar]; - ovarid = rec_ovarids[ivar]; - start[ivar][0] = irec; - NC_CHECK(copy_rec_var_data(ncid, ogrp, irec, varid, ovarid, - start[ivar], count[ivar], buf[ivar])); - } - } - for (ivar = 0; ivar < nrec_vars; ivar++) { - if(start[ivar]) - free(start[ivar]); - if(count[ivar]) - free(count[ivar]); - } - if(start) - free(start); - if(count) - free(count); - for (ivar = 0; ivar < nrec_vars; ivar++) { - if(buf[ivar]) { - free(buf[ivar]); - } - } - if (rec_varids) - free(rec_varids); - if(buf) - free(buf); - if(rec_ovarids) - free(rec_ovarids); - return NC_NOERR; -} - -/* copy infile to outfile using netCDF API - */ -static int -copy(char* infile, char* outfile) -{ - int stat = NC_NOERR; - int igrp, ogrp; - int inkind, outkind; - int open_mode = NC_NOWRITE; - int create_mode = NC_CLOBBER; - size_t ndims; - - if(option_read_diskless) { - open_mode |= NC_DISKLESS; - } - - NC_CHECK(nc_open(infile, open_mode, &igrp)); - - NC_CHECK(nc_inq_format(igrp, &inkind)); - -/* option_kind specifies which netCDF format for output, one of - * - * SAME_AS_INPUT, NC_FORMAT_CLASSIC, NC_FORMAT_64BIT, - * NC_FORMAT_NETCDF4, NC_FORMAT_NETCDF4_CLASSIC - * - * However, if compression or shuffling was specified and kind was SAME_AS_INPUT, - * option_kind is changed to NC_FORMAT_NETCDF4_CLASSIC, if input format is - * NC_FORMAT_CLASSIC or NC_FORMAT_64BIT . - */ - outkind = option_kind; - if (option_kind == SAME_AS_INPUT) { /* default, kind not specified */ - outkind = inkind; - /* Deduce output kind if netCDF-4 features requested */ - if (inkind == NC_FORMAT_CLASSIC || inkind == NC_FORMAT_64BIT_OFFSET - || inkind == NC_FORMAT_CDF5) { - if (option_deflate_level > 0 || - option_shuffle_vars == NC_SHUFFLE || - option_chunkspec) - { - outkind = NC_FORMAT_NETCDF4_CLASSIC; - } - } - } - -#ifdef USE_NETCDF4 - if(option_chunkspec) { - /* Now that input is open, can parse option_chunkspec into binary - * structure. */ - NC_CHECK(chunkspec_parse(igrp, option_chunkspec)); - } -#endif /* USE_NETCDF4 */ - - /* Check if any vars in -v don't exist */ - if(missing_vars(igrp, option_nlvars, option_lvars)) - exit(EXIT_FAILURE); - - if(option_nlgrps > 0) { - if(inkind != NC_FORMAT_NETCDF4) { - error("Group list (-g ...) only permitted for netCDF-4 file"); - exit(EXIT_FAILURE); - } - /* Check if any grps in -g don't exist */ - if(grp_matches(igrp, option_nlgrps, option_lgrps, option_grpids) == 0) - exit(EXIT_FAILURE); - } - - if(option_write_diskless) - create_mode |= NC_WRITE | NC_DISKLESS; /* NC_WRITE persists diskless file on close */ - switch(outkind) { - case NC_FORMAT_CLASSIC: - /* nothing to do */ - break; - case NC_FORMAT_64BIT_OFFSET: - create_mode |= NC_64BIT_OFFSET; - break; - case NC_FORMAT_CDF5: - create_mode |= NC_64BIT_DATA; - break; -#ifdef USE_NETCDF4 - case NC_FORMAT_NETCDF4: - create_mode |= NC_NETCDF4; - break; - case NC_FORMAT_NETCDF4_CLASSIC: - create_mode |= NC_NETCDF4 | NC_CLASSIC_MODEL; - break; -#else - case NC_FORMAT_NETCDF4: - case NC_FORMAT_NETCDF4_CLASSIC: - error("netCDF library built with --disable-netcdf4, can't create netCDF-4 files"); - break; -#endif /* USE_NETCDF4 */ - default: - error("bad value for option specifying desired output format, see usage\n"); - break; - } - NC_CHECK(nc_create(outfile, create_mode, &ogrp)); - NC_CHECK(nc_set_fill(ogrp, NC_NOFILL, NULL)); - -#ifdef USE_NETCDF4 - /* Because types in one group may depend on types in a different - * group, need to create all groups before defining types */ - if(inkind == NC_FORMAT_NETCDF4) { - NC_CHECK(copy_groups(igrp, ogrp)); - NC_CHECK(copy_types(igrp, ogrp)); - } -#endif /* USE_NETCDF4 */ - - ndims = count_dims(igrp); - NC_CHECK(dimmap_init(ndims)); - NC_CHECK(copy_schema(igrp, ogrp)); - NC_CHECK(nc_enddef(ogrp)); - - /* For performance, special case netCDF-3 input or output file with record - * variables, to copy a record-at-a-time instead of a - * variable-at-a-time. */ - /* TODO: check that these special cases work with -v option */ - if(nc3_special_case(igrp, inkind)) { - size_t nfixed_vars, nrec_vars; - int *fixed_varids; - int *rec_varids; - NC_CHECK(classify_vars(igrp, &nfixed_vars, &fixed_varids, &nrec_vars, &rec_varids)); - NC_CHECK(copy_fixed_size_data(igrp, ogrp, nfixed_vars, fixed_varids)); - NC_CHECK(copy_record_data(igrp, ogrp, nrec_vars, rec_varids)); - } else if (nc3_special_case(ogrp, outkind)) { - size_t nfixed_vars, nrec_vars; - int *fixed_varids; - int *rec_varids; - /* classifies output vars, but returns input varids */ - NC_CHECK(classify_vars(ogrp, &nfixed_vars, &fixed_varids, &nrec_vars, &rec_varids)); - NC_CHECK(copy_fixed_size_data(igrp, ogrp, nfixed_vars, fixed_varids)); - NC_CHECK(copy_record_data(igrp, ogrp, nrec_vars, rec_varids)); - } else { - NC_CHECK(copy_data(igrp, ogrp)); /* recursive, to handle nested groups */ - } - - NC_CHECK(nc_close(igrp)); - NC_CHECK(nc_close(ogrp)); - return stat; -} - -/* - * For non-negative numeric string with multiplier suffix K, M, G, T, - * or P (or lower-case equivalent), return corresponding value - * incorporating multiplier 1000, 1000000, 1.0d9, ... 1.0d15, or -1.0 - * for error. - */ -static double -double_with_suffix(char *str) { - double dval; - char *suffix = 0; - errno = 0; - dval = strtod(str, &suffix); - if(dval < 0 || errno != 0) - return -1.0; - if(*suffix) { - switch (*suffix) { - case 'k': case 'K': - dval *= 1000; - break; - case 'm': case 'M': - dval *= 1000000; - break; - case 'g': case 'G': - dval *= 1000000000; - break; - case 't': case 'T': - dval *= 1.0e12; - break; - case 'p': case 'P': - dval *= 1.0e15; - break; - default: - dval = -1.0; /* error, suffix multiplier must be K, M, G, or T */ - } - } - return dval; -} - -static void -usage(void) -{ -#define USAGE "\ - [-k kind] specify kind of netCDF format for output file, default same as input\n\ - kind strings: 'classic', '64-bit offset', 'cdf5',\n\ - 'netCDF-4', 'netCDF-4 classic model'\n\ - [-3] netCDF classic output (same as -k 'classic')\n\ - [-6] 64-bit-offset output (same as -k '64-bit offset')\n\ - [-4] netCDF-4 output (same as -k 'netCDF-4')\n\ - [-7] netCDF-4-classic output (same as -k 'netCDF-4 classic model')\n\ - [-5] CDF5 output (same as -k 'cdf5)\n\ - [-d n] set output deflation compression level, default same as input (0=none 9=max)\n\ - [-s] add shuffle option to deflation compression\n\ - [-c chunkspec] specify chunking for dimensions, e.g. \"dim1/N1,dim2/N2,...\"\n\ - [-u] convert unlimited dimensions to fixed-size dimensions in output copy\n\ - [-w] write whole output file from diskless netCDF on close\n\ - [-v var1,...] include data for only listed variables, but definitions for all variables\n\ - [-V var1,...] include definitions and data for only listed variables\n\ - [-g grp1,...] include data for only variables in listed groups, but all definitions\n\ - [-G grp1,...] include definitions and data only for variables in listed groups\n\ - [-m n] set size in bytes of copy buffer, default is 5000000 bytes\n\ - [-h n] set size in bytes of chunk_cache for chunked variables\n\ - [-e n] set number of elements that chunk_cache can hold\n\ - [-r] read whole input file into diskless file on open (classic or 64-bit offset or cdf5 formats only)\n\ - infile name of netCDF input file\n\ - outfile name for netCDF output file\n" - - /* Don't document this flaky option until it works better */ - /* [-x] use experimental computed estimates for variable-specific chunk caches\n\ */ - - error("%s [-k kind] [-[3|4|6|7]] [-d n] [-s] [-c chunkspec] [-u] [-w] [-[v|V] varlist] [-[g|G] grplist] [-m n] [-h n] [-e n] [-r] infile outfile\n%s\nnetCDF library version %s", - progname, USAGE, nc_inq_libvers()); -} - -int -main(int argc, char**argv) -{ - char* inputfile = NULL; - char* outputfile = NULL; - int c; - -/* table of formats for legal -k values */ - struct Kvalues { - char* name; - int kind; - } legalkinds[] = { - /* NetCDF-3 classic format (32-bit offsets) */ - {"classic", NC_FORMAT_CLASSIC}, /* canonical format name */ - {"nc3", NC_FORMAT_CLASSIC}, /* short format name */ - {"1", NC_FORMAT_CLASSIC}, /* deprecated, use "-3" or "-k nc3" instead */ - - /* NetCDF-3 64-bit offset format */ - {"64-bit offset", NC_FORMAT_64BIT_OFFSET}, /* canonical format name */ - {"nc6", NC_FORMAT_64BIT_OFFSET}, /* short format name */ - {"2", NC_FORMAT_64BIT_OFFSET}, /* deprecated, use "-6" or "-k nc6" instead */ - {"64-bit-offset", NC_FORMAT_64BIT_OFFSET}, /* deprecated alias */ - - /* NetCDF-4 HDF5-based format */ - {"netCDF-4", NC_FORMAT_NETCDF4}, /* canonical format name */ - {"nc4", NC_FORMAT_NETCDF4}, /* short format name */ - {"3", NC_FORMAT_NETCDF4}, /* deprecated, use "-4" or "-k nc4" instead */ - {"netCDF4", NC_FORMAT_NETCDF4}, /* deprecated aliases */ - {"hdf5", NC_FORMAT_NETCDF4}, - {"enhanced", NC_FORMAT_NETCDF4}, - - /* NetCDF-4 HDF5-based format, restricted to classic data model */ - {"netCDF-4 classic model", NC_FORMAT_NETCDF4_CLASSIC}, /* canonical format name */ - {"nc7", NC_FORMAT_NETCDF4_CLASSIC}, /* short format name */ - {"4", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated, use "-7" or -k nc7" */ - {"netCDF-4-classic", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated aliases */ - {"netCDF-4_classic", NC_FORMAT_NETCDF4_CLASSIC}, - {"netCDF4_classic", NC_FORMAT_NETCDF4_CLASSIC}, - {"hdf5-nc3", NC_FORMAT_NETCDF4_CLASSIC}, - {"enhanced-nc3", NC_FORMAT_NETCDF4_CLASSIC}, - - /* The 64-bit data (CDF5) kind (5) */ - {"5", NC_FORMAT_CDF5}, - {"64-bit-data", NC_FORMAT_CDF5}, - {"64-bit data", NC_FORMAT_CDF5}, - {"nc5", NC_FORMAT_CDF5}, - {"cdf5", NC_FORMAT_CDF5}, - - /* null terminate*/ - {NULL,0} - }; - - opterr = 1; - progname = argv[0]; - - if (argc <= 1) - { - usage(); - } - - while ((c = getopt(argc, argv, "k:3467d:sum:c:h:e:rwxg:G:v:V:")) != -1) { - switch(c) { - case 'k': /* for specifying variant of netCDF format to be generated - Format names: - "classic" or "nc3" - "64-bit offset" or "nc6" - "netCDF-4" or "nc4" - "netCDF-4 classic model" or "nc7" - "64-bit-data" | "64-bit data" | "cdf5" | "nc5" - Format version numbers (deprecated): - 1 (=> classic) - 2 (=> 64-bit offset) - 3 (=> netCDF-4) - 4 (=> netCDF-4 classic model) - 5 (=> classic 64 bit data, CDF-5) - */ - { - struct Kvalues* kvalue; - char *kind_name = (char *) emalloc(strlen(optarg)+1); - (void)strcpy(kind_name, optarg); - for(kvalue=legalkinds;kvalue->name;kvalue++) { - if(strcmp(kind_name,kvalue->name) == 0) { - option_kind = kvalue->kind; - break; - } - } - if(kvalue->name == NULL) { - error("invalid output format: %s", kind_name); - } - } - break; - case '3': /* output format is classic (netCDF-3) */ - option_kind = NC_FORMAT_CLASSIC; - break; - case '5': /* output format is cdf5 */ - option_kind = NC_FORMAT_CDF5; - break; - case '6': /* output format is 64-bit-offset (netCDF-3 version 2) */ - option_kind = NC_FORMAT_64BIT_OFFSET; - break; - case '4': /* output format is netCDF-4 (variant of HDF5) */ - option_kind = NC_FORMAT_NETCDF4; - break; - case '7': /* output format is netCDF-4 (restricted to classic model)*/ - option_kind = NC_FORMAT_NETCDF4_CLASSIC; - break; - case 'd': /* non-default compression level specified */ - option_deflate_level = strtol(optarg, NULL, 10); - if(option_deflate_level < 0 || option_deflate_level > 9) { - error("invalid deflation level: %d", option_deflate_level); - } - break; - case 's': /* shuffling, may improve compression */ - option_shuffle_vars = NC_SHUFFLE; - break; - case 'u': /* convert unlimited dimensions to fixed size */ - option_fix_unlimdims = 1; - break; - case 'm': /* non-default size of data copy buffer */ - { - double dval = double_with_suffix(optarg); /* "K" for kilobytes. "M" for megabytes, ... */ - if(dval < 0) - error("Suffix used for '-m' option value must be K, M, G, T, or P"); - option_copy_buffer_size = dval; - break; - } - case 'h': /* non-default size of chunk cache */ - { - double dval = double_with_suffix(optarg); /* "K" for kilobytes. "M" for megabytes, ... */ - if(dval < 0) - error("Suffix used for '-h' option value must be K, M, G, T, or P"); - option_chunk_cache_size = dval; - break; - } - case 'e': /* number of elements chunk cache can hold */ - { - double dval = double_with_suffix(optarg); /* "K" for kilobytes. "M" for megabytes, ... */ - if(dval < 0 ) - error("Suffix used for '-e' option value must be K, M, G, T, or P"); - option_chunk_cache_nelems = (long)dval; - break; - } - case 'r': - option_read_diskless = 1; /* read into memory on open */ - break; - case 'w': - option_write_diskless = 1; /* write to memory, persist on close */ - break; - case 'x': /* use experimental variable-specific chunk caches */ - option_compute_chunkcaches = 1; - break; - case 'c': /* optional chunking spec for each dimension in list */ - /* save chunkspec string for parsing later, once we know input ncid */ - option_chunkspec = strdup(optarg); - break; - case 'g': /* group names */ - /* make list of names of groups specified */ - make_lgrps (optarg, &option_nlgrps, &option_lgrps, &option_grpids); - option_grpstruct = true; - break; - case 'G': /* group names */ - /* make list of names of groups specified */ - make_lgrps (optarg, &option_nlgrps, &option_lgrps, &option_grpids); - option_grpstruct = false; - break; - case 'v': /* variable names */ - /* make list of names of variables specified */ - make_lvars (optarg, &option_nlvars, &option_lvars); - option_varstruct = true; - break; - case 'V': /* variable names */ - /* make list of names of variables specified */ - make_lvars (optarg, &option_nlvars, &option_lvars); - option_varstruct = false; - break; - default: - usage(); - } - } - argc -= optind; - argv += optind; - - if (argc != 2) { - error("one input file and one output file required"); - } - inputfile = argv[0]; - outputfile = argv[1]; - - if(strcmp(inputfile, outputfile) == 0) { - error("output would overwrite input"); - } - - if(copy(inputfile, outputfile) != NC_NOERR) - exit(EXIT_FAILURE); - exit(EXIT_SUCCESS); -} -END_OF_MAIN() diff --git a/contrib/netcdf/4.4.1.1/ncdump/ref_ctest.c b/contrib/netcdf/4.4.1.1/ncdump/ref_ctest.c deleted file mode 100644 index 753c8804d25..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/ref_ctest.c +++ /dev/null @@ -1,1333 +0,0 @@ -#include -#include -#include - -void -check_err(const int stat, const int line, const char *file) { - if (stat != NC_NOERR) { - (void) fprintf(stderr, "line %d of %s: %s\n", line, file, nc_strerror(stat)); - exit(1); - } -} - -int -main() { /* create ctest0.nc */ - - int stat; /* return status */ - int ncid; /* netCDF id */ - - /* dimension ids */ - int Dr_dim; - int D1_dim; - int D2_dim; - int D3_dim; - int dim_MINUS_name_MINUS_dashes_dim; - int dim_PERIOD_name_PERIOD_dots_dim; - int dim_PLUS_name_PLUS_plusses_dim; - int dim_ATSIGN_name_ATSIGN_ats_dim; - - /* dimension lengths */ - size_t Dr_len = NC_UNLIMITED; - size_t D1_len = 1; - size_t D2_len = 2; - size_t D3_len = 3; - size_t dim_MINUS_name_MINUS_dashes_len = 4; - size_t dim_PERIOD_name_PERIOD_dots_len = 5; - size_t dim_PLUS_name_PLUS_plusses_len = 6; - size_t dim_ATSIGN_name_ATSIGN_ats_len = 7; - - /* variable ids */ - int c_id; - int b_id; - int s_id; - int i_id; - int f_id; - int d_id; - int cr_id; - int br_id; - int sr_id; - int ir_id; - int fr_id; - int dr_id; - int c1_id; - int b1_id; - int s1_id; - int i1_id; - int f1_id; - int d1_id; - int c2_id; - int b2_id; - int s2_id; - int i2_id; - int f2_id; - int d2_id; - int c3_id; - int b3_id; - int s3_id; - int i3_id; - int f3_id; - int d3_id; - int cr1_id; - int br2_id; - int sr3_id; - int f11_id; - int d12_id; - int c13_id; - int s21_id; - int i22_id; - int f23_id; - int c31_id; - int b32_id; - int s33_id; - int sr11_id; - int ir12_id; - int fr13_id; - int cr21_id; - int br22_id; - int sr23_id; - int fr31_id; - int dr32_id; - int cr33_id; - int c111_id; - int b112_id; - int s113_id; - int f121_id; - int d122_id; - int c123_id; - int s131_id; - int i132_id; - int f133_id; - int f211_id; - int d212_id; - int c213_id; - int s221_id; - int i222_id; - int f223_id; - int c231_id; - int b232_id; - int s233_id; - int s311_id; - int i312_id; - int f313_id; - int var_MINUS_name_MINUS_dashes_id; - int var_PERIOD_name_PERIOD_dots_id; - int var_PLUS_name_PLUS_plusses_id; - int var_ATSIGN_name_ATSIGN_ats_id; - - /* rank (number of dimensions) for each variable */ -# define RANK_c 0 -# define RANK_b 0 -# define RANK_s 0 -# define RANK_i 0 -# define RANK_f 0 -# define RANK_d 0 -# define RANK_cr 1 -# define RANK_br 1 -# define RANK_sr 1 -# define RANK_ir 1 -# define RANK_fr 1 -# define RANK_dr 1 -# define RANK_c1 1 -# define RANK_b1 1 -# define RANK_s1 1 -# define RANK_i1 1 -# define RANK_f1 1 -# define RANK_d1 1 -# define RANK_c2 1 -# define RANK_b2 1 -# define RANK_s2 1 -# define RANK_i2 1 -# define RANK_f2 1 -# define RANK_d2 1 -# define RANK_c3 1 -# define RANK_b3 1 -# define RANK_s3 1 -# define RANK_i3 1 -# define RANK_f3 1 -# define RANK_d3 1 -# define RANK_cr1 2 -# define RANK_br2 2 -# define RANK_sr3 2 -# define RANK_f11 2 -# define RANK_d12 2 -# define RANK_c13 2 -# define RANK_s21 2 -# define RANK_i22 2 -# define RANK_f23 2 -# define RANK_c31 2 -# define RANK_b32 2 -# define RANK_s33 2 -# define RANK_sr11 3 -# define RANK_ir12 3 -# define RANK_fr13 3 -# define RANK_cr21 3 -# define RANK_br22 3 -# define RANK_sr23 3 -# define RANK_fr31 3 -# define RANK_dr32 3 -# define RANK_cr33 3 -# define RANK_c111 3 -# define RANK_b112 3 -# define RANK_s113 3 -# define RANK_f121 3 -# define RANK_d122 3 -# define RANK_c123 3 -# define RANK_s131 3 -# define RANK_i132 3 -# define RANK_f133 3 -# define RANK_f211 3 -# define RANK_d212 3 -# define RANK_c213 3 -# define RANK_s221 3 -# define RANK_i222 3 -# define RANK_f223 3 -# define RANK_c231 3 -# define RANK_b232 3 -# define RANK_s233 3 -# define RANK_s311 3 -# define RANK_i312 3 -# define RANK_f313 3 -# define RANK_var_MINUS_name_MINUS_dashes 0 -# define RANK_var_PERIOD_name_PERIOD_dots 0 -# define RANK_var_PLUS_name_PLUS_plusses 0 -# define RANK_var_ATSIGN_name_ATSIGN_ats 0 - - /* variable shapes */ - int cr_dims[RANK_cr]; - int br_dims[RANK_br]; - int sr_dims[RANK_sr]; - int ir_dims[RANK_ir]; - int fr_dims[RANK_fr]; - int dr_dims[RANK_dr]; - int c1_dims[RANK_c1]; - int b1_dims[RANK_b1]; - int s1_dims[RANK_s1]; - int i1_dims[RANK_i1]; - int f1_dims[RANK_f1]; - int d1_dims[RANK_d1]; - int c2_dims[RANK_c2]; - int b2_dims[RANK_b2]; - int s2_dims[RANK_s2]; - int i2_dims[RANK_i2]; - int f2_dims[RANK_f2]; - int d2_dims[RANK_d2]; - int c3_dims[RANK_c3]; - int b3_dims[RANK_b3]; - int s3_dims[RANK_s3]; - int i3_dims[RANK_i3]; - int f3_dims[RANK_f3]; - int d3_dims[RANK_d3]; - int cr1_dims[RANK_cr1]; - int br2_dims[RANK_br2]; - int sr3_dims[RANK_sr3]; - int f11_dims[RANK_f11]; - int d12_dims[RANK_d12]; - int c13_dims[RANK_c13]; - int s21_dims[RANK_s21]; - int i22_dims[RANK_i22]; - int f23_dims[RANK_f23]; - int c31_dims[RANK_c31]; - int b32_dims[RANK_b32]; - int s33_dims[RANK_s33]; - int sr11_dims[RANK_sr11]; - int ir12_dims[RANK_ir12]; - int fr13_dims[RANK_fr13]; - int cr21_dims[RANK_cr21]; - int br22_dims[RANK_br22]; - int sr23_dims[RANK_sr23]; - int fr31_dims[RANK_fr31]; - int dr32_dims[RANK_dr32]; - int cr33_dims[RANK_cr33]; - int c111_dims[RANK_c111]; - int b112_dims[RANK_b112]; - int s113_dims[RANK_s113]; - int f121_dims[RANK_f121]; - int d122_dims[RANK_d122]; - int c123_dims[RANK_c123]; - int s131_dims[RANK_s131]; - int i132_dims[RANK_i132]; - int f133_dims[RANK_f133]; - int f211_dims[RANK_f211]; - int d212_dims[RANK_d212]; - int c213_dims[RANK_c213]; - int s221_dims[RANK_s221]; - int i222_dims[RANK_i222]; - int f223_dims[RANK_f223]; - int c231_dims[RANK_c231]; - int b232_dims[RANK_b232]; - int s233_dims[RANK_s233]; - int s311_dims[RANK_s311]; - int i312_dims[RANK_i312]; - int f313_dims[RANK_f313]; - - /* attribute vectors */ - int c_att_MINUS_name_MINUS_dashes[1]; - int c_att_PERIOD_name_PERIOD_dots[1]; - int c_att_PLUS_name_PLUS_plusses[1]; - int c_att_ATSIGN_name_ATSIGN_ats[1]; - int s_b[4]; - short s_s[3]; - int i_i[3]; - float i_f[3]; - double i_d[3]; - int cdf_Gb[2]; - short cdf_Gs[3]; - int cdf_Gi[3]; - float cdf_Gf[3]; - double cdf_Gd[3]; - int cdf_Gatt_MINUS_name_MINUS_dashes[1]; - int cdf_Gatt_PERIOD_name_PERIOD_dots[1]; - int cdf_Gatt_PLUS_name_PLUS_plusses[1]; - int cdf_Gatt_ATSIGN_name_ATSIGN_ats[1]; - - /* enter define mode */ - stat = nc_create("ctest0.nc", NC_CLOBBER, &ncid); - check_err(stat,__LINE__,__FILE__); - - /* define dimensions */ - stat = nc_def_dim(ncid, "Dr", Dr_len, &Dr_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D1", D1_len, &D1_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D2", D2_len, &D2_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D3", D3_len, &D3_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim-name-dashes", dim_MINUS_name_MINUS_dashes_len, &dim_MINUS_name_MINUS_dashes_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim.name.dots", dim_PERIOD_name_PERIOD_dots_len, &dim_PERIOD_name_PERIOD_dots_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim+name+plusses", dim_PLUS_name_PLUS_plusses_len, &dim_PLUS_name_PLUS_plusses_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim@name@ats", dim_ATSIGN_name_ATSIGN_ats_len, &dim_ATSIGN_name_ATSIGN_ats_dim); - check_err(stat,__LINE__,__FILE__); - - /* define variables */ - - stat = nc_def_var(ncid, "c", NC_CHAR, RANK_c, 0, &c_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "b", NC_BYTE, RANK_b, 0, &b_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "s", NC_SHORT, RANK_s, 0, &s_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "i", NC_INT, RANK_i, 0, &i_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "f", NC_FLOAT, RANK_f, 0, &f_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "d", NC_DOUBLE, RANK_d, 0, &d_id); - check_err(stat,__LINE__,__FILE__); - - cr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "cr", NC_CHAR, RANK_cr, cr_dims, &cr_id); - check_err(stat,__LINE__,__FILE__); - - br_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "br", NC_BYTE, RANK_br, br_dims, &br_id); - check_err(stat,__LINE__,__FILE__); - - sr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "sr", NC_SHORT, RANK_sr, sr_dims, &sr_id); - check_err(stat,__LINE__,__FILE__); - - ir_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "ir", NC_INT, RANK_ir, ir_dims, &ir_id); - check_err(stat,__LINE__,__FILE__); - - fr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "fr", NC_FLOAT, RANK_fr, fr_dims, &fr_id); - check_err(stat,__LINE__,__FILE__); - - dr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "dr", NC_DOUBLE, RANK_dr, dr_dims, &dr_id); - check_err(stat,__LINE__,__FILE__); - - c1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "c1", NC_CHAR, RANK_c1, c1_dims, &c1_id); - check_err(stat,__LINE__,__FILE__); - - b1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "b1", NC_BYTE, RANK_b1, b1_dims, &b1_id); - check_err(stat,__LINE__,__FILE__); - - s1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "s1", NC_SHORT, RANK_s1, s1_dims, &s1_id); - check_err(stat,__LINE__,__FILE__); - - i1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "i1", NC_INT, RANK_i1, i1_dims, &i1_id); - check_err(stat,__LINE__,__FILE__); - - f1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "f1", NC_FLOAT, RANK_f1, f1_dims, &f1_id); - check_err(stat,__LINE__,__FILE__); - - d1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "d1", NC_DOUBLE, RANK_d1, d1_dims, &d1_id); - check_err(stat,__LINE__,__FILE__); - - c2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "c2", NC_CHAR, RANK_c2, c2_dims, &c2_id); - check_err(stat,__LINE__,__FILE__); - - b2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "b2", NC_BYTE, RANK_b2, b2_dims, &b2_id); - check_err(stat,__LINE__,__FILE__); - - s2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "s2", NC_SHORT, RANK_s2, s2_dims, &s2_id); - check_err(stat,__LINE__,__FILE__); - - i2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "i2", NC_INT, RANK_i2, i2_dims, &i2_id); - check_err(stat,__LINE__,__FILE__); - - f2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "f2", NC_FLOAT, RANK_f2, f2_dims, &f2_id); - check_err(stat,__LINE__,__FILE__); - - d2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "d2", NC_DOUBLE, RANK_d2, d2_dims, &d2_id); - check_err(stat,__LINE__,__FILE__); - - c3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "c3", NC_CHAR, RANK_c3, c3_dims, &c3_id); - check_err(stat,__LINE__,__FILE__); - - b3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "b3", NC_BYTE, RANK_b3, b3_dims, &b3_id); - check_err(stat,__LINE__,__FILE__); - - s3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "s3", NC_SHORT, RANK_s3, s3_dims, &s3_id); - check_err(stat,__LINE__,__FILE__); - - i3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "i3", NC_INT, RANK_i3, i3_dims, &i3_id); - check_err(stat,__LINE__,__FILE__); - - f3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "f3", NC_FLOAT, RANK_f3, f3_dims, &f3_id); - check_err(stat,__LINE__,__FILE__); - - d3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "d3", NC_DOUBLE, RANK_d3, d3_dims, &d3_id); - check_err(stat,__LINE__,__FILE__); - - cr1_dims[0] = Dr_dim; - cr1_dims[1] = D1_dim; - stat = nc_def_var(ncid, "cr1", NC_CHAR, RANK_cr1, cr1_dims, &cr1_id); - check_err(stat,__LINE__,__FILE__); - - br2_dims[0] = Dr_dim; - br2_dims[1] = D2_dim; - stat = nc_def_var(ncid, "br2", NC_BYTE, RANK_br2, br2_dims, &br2_id); - check_err(stat,__LINE__,__FILE__); - - sr3_dims[0] = Dr_dim; - sr3_dims[1] = D3_dim; - stat = nc_def_var(ncid, "sr3", NC_SHORT, RANK_sr3, sr3_dims, &sr3_id); - check_err(stat,__LINE__,__FILE__); - - f11_dims[0] = D1_dim; - f11_dims[1] = D1_dim; - stat = nc_def_var(ncid, "f11", NC_FLOAT, RANK_f11, f11_dims, &f11_id); - check_err(stat,__LINE__,__FILE__); - - d12_dims[0] = D1_dim; - d12_dims[1] = D2_dim; - stat = nc_def_var(ncid, "d12", NC_DOUBLE, RANK_d12, d12_dims, &d12_id); - check_err(stat,__LINE__,__FILE__); - - c13_dims[0] = D1_dim; - c13_dims[1] = D3_dim; - stat = nc_def_var(ncid, "c13", NC_CHAR, RANK_c13, c13_dims, &c13_id); - check_err(stat,__LINE__,__FILE__); - - s21_dims[0] = D2_dim; - s21_dims[1] = D1_dim; - stat = nc_def_var(ncid, "s21", NC_SHORT, RANK_s21, s21_dims, &s21_id); - check_err(stat,__LINE__,__FILE__); - - i22_dims[0] = D2_dim; - i22_dims[1] = D2_dim; - stat = nc_def_var(ncid, "i22", NC_INT, RANK_i22, i22_dims, &i22_id); - check_err(stat,__LINE__,__FILE__); - - f23_dims[0] = D2_dim; - f23_dims[1] = D3_dim; - stat = nc_def_var(ncid, "f23", NC_FLOAT, RANK_f23, f23_dims, &f23_id); - check_err(stat,__LINE__,__FILE__); - - c31_dims[0] = D3_dim; - c31_dims[1] = D1_dim; - stat = nc_def_var(ncid, "c31", NC_CHAR, RANK_c31, c31_dims, &c31_id); - check_err(stat,__LINE__,__FILE__); - - b32_dims[0] = D3_dim; - b32_dims[1] = D2_dim; - stat = nc_def_var(ncid, "b32", NC_BYTE, RANK_b32, b32_dims, &b32_id); - check_err(stat,__LINE__,__FILE__); - - s33_dims[0] = D3_dim; - s33_dims[1] = D3_dim; - stat = nc_def_var(ncid, "s33", NC_SHORT, RANK_s33, s33_dims, &s33_id); - check_err(stat,__LINE__,__FILE__); - - sr11_dims[0] = Dr_dim; - sr11_dims[1] = D1_dim; - sr11_dims[2] = D1_dim; - stat = nc_def_var(ncid, "sr11", NC_SHORT, RANK_sr11, sr11_dims, &sr11_id); - check_err(stat,__LINE__,__FILE__); - - ir12_dims[0] = Dr_dim; - ir12_dims[1] = D1_dim; - ir12_dims[2] = D2_dim; - stat = nc_def_var(ncid, "ir12", NC_INT, RANK_ir12, ir12_dims, &ir12_id); - check_err(stat,__LINE__,__FILE__); - - fr13_dims[0] = Dr_dim; - fr13_dims[1] = D1_dim; - fr13_dims[2] = D3_dim; - stat = nc_def_var(ncid, "fr13", NC_FLOAT, RANK_fr13, fr13_dims, &fr13_id); - check_err(stat,__LINE__,__FILE__); - - cr21_dims[0] = Dr_dim; - cr21_dims[1] = D2_dim; - cr21_dims[2] = D1_dim; - stat = nc_def_var(ncid, "cr21", NC_CHAR, RANK_cr21, cr21_dims, &cr21_id); - check_err(stat,__LINE__,__FILE__); - - br22_dims[0] = Dr_dim; - br22_dims[1] = D2_dim; - br22_dims[2] = D2_dim; - stat = nc_def_var(ncid, "br22", NC_BYTE, RANK_br22, br22_dims, &br22_id); - check_err(stat,__LINE__,__FILE__); - - sr23_dims[0] = Dr_dim; - sr23_dims[1] = D2_dim; - sr23_dims[2] = D3_dim; - stat = nc_def_var(ncid, "sr23", NC_SHORT, RANK_sr23, sr23_dims, &sr23_id); - check_err(stat,__LINE__,__FILE__); - - fr31_dims[0] = Dr_dim; - fr31_dims[1] = D3_dim; - fr31_dims[2] = D1_dim; - stat = nc_def_var(ncid, "fr31", NC_FLOAT, RANK_fr31, fr31_dims, &fr31_id); - check_err(stat,__LINE__,__FILE__); - - dr32_dims[0] = Dr_dim; - dr32_dims[1] = D3_dim; - dr32_dims[2] = D2_dim; - stat = nc_def_var(ncid, "dr32", NC_DOUBLE, RANK_dr32, dr32_dims, &dr32_id); - check_err(stat,__LINE__,__FILE__); - - cr33_dims[0] = Dr_dim; - cr33_dims[1] = D3_dim; - cr33_dims[2] = D3_dim; - stat = nc_def_var(ncid, "cr33", NC_CHAR, RANK_cr33, cr33_dims, &cr33_id); - check_err(stat,__LINE__,__FILE__); - - c111_dims[0] = D1_dim; - c111_dims[1] = D1_dim; - c111_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c111", NC_CHAR, RANK_c111, c111_dims, &c111_id); - check_err(stat,__LINE__,__FILE__); - - b112_dims[0] = D1_dim; - b112_dims[1] = D1_dim; - b112_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b112", NC_BYTE, RANK_b112, b112_dims, &b112_id); - check_err(stat,__LINE__,__FILE__); - - s113_dims[0] = D1_dim; - s113_dims[1] = D1_dim; - s113_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s113", NC_SHORT, RANK_s113, s113_dims, &s113_id); - check_err(stat,__LINE__,__FILE__); - - f121_dims[0] = D1_dim; - f121_dims[1] = D2_dim; - f121_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f121", NC_FLOAT, RANK_f121, f121_dims, &f121_id); - check_err(stat,__LINE__,__FILE__); - - d122_dims[0] = D1_dim; - d122_dims[1] = D2_dim; - d122_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d122", NC_DOUBLE, RANK_d122, d122_dims, &d122_id); - check_err(stat,__LINE__,__FILE__); - - c123_dims[0] = D1_dim; - c123_dims[1] = D2_dim; - c123_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c123", NC_CHAR, RANK_c123, c123_dims, &c123_id); - check_err(stat,__LINE__,__FILE__); - - s131_dims[0] = D1_dim; - s131_dims[1] = D3_dim; - s131_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s131", NC_SHORT, RANK_s131, s131_dims, &s131_id); - check_err(stat,__LINE__,__FILE__); - - i132_dims[0] = D1_dim; - i132_dims[1] = D3_dim; - i132_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i132", NC_INT, RANK_i132, i132_dims, &i132_id); - check_err(stat,__LINE__,__FILE__); - - f133_dims[0] = D1_dim; - f133_dims[1] = D3_dim; - f133_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f133", NC_FLOAT, RANK_f133, f133_dims, &f133_id); - check_err(stat,__LINE__,__FILE__); - - f211_dims[0] = D2_dim; - f211_dims[1] = D1_dim; - f211_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f211", NC_FLOAT, RANK_f211, f211_dims, &f211_id); - check_err(stat,__LINE__,__FILE__); - - d212_dims[0] = D2_dim; - d212_dims[1] = D1_dim; - d212_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d212", NC_DOUBLE, RANK_d212, d212_dims, &d212_id); - check_err(stat,__LINE__,__FILE__); - - c213_dims[0] = D2_dim; - c213_dims[1] = D1_dim; - c213_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c213", NC_CHAR, RANK_c213, c213_dims, &c213_id); - check_err(stat,__LINE__,__FILE__); - - s221_dims[0] = D2_dim; - s221_dims[1] = D2_dim; - s221_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s221", NC_SHORT, RANK_s221, s221_dims, &s221_id); - check_err(stat,__LINE__,__FILE__); - - i222_dims[0] = D2_dim; - i222_dims[1] = D2_dim; - i222_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i222", NC_INT, RANK_i222, i222_dims, &i222_id); - check_err(stat,__LINE__,__FILE__); - - f223_dims[0] = D2_dim; - f223_dims[1] = D2_dim; - f223_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f223", NC_FLOAT, RANK_f223, f223_dims, &f223_id); - check_err(stat,__LINE__,__FILE__); - - c231_dims[0] = D2_dim; - c231_dims[1] = D3_dim; - c231_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c231", NC_CHAR, RANK_c231, c231_dims, &c231_id); - check_err(stat,__LINE__,__FILE__); - - b232_dims[0] = D2_dim; - b232_dims[1] = D3_dim; - b232_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b232", NC_BYTE, RANK_b232, b232_dims, &b232_id); - check_err(stat,__LINE__,__FILE__); - - s233_dims[0] = D2_dim; - s233_dims[1] = D3_dim; - s233_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s233", NC_SHORT, RANK_s233, s233_dims, &s233_id); - check_err(stat,__LINE__,__FILE__); - - s311_dims[0] = D3_dim; - s311_dims[1] = D1_dim; - s311_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s311", NC_SHORT, RANK_s311, s311_dims, &s311_id); - check_err(stat,__LINE__,__FILE__); - - i312_dims[0] = D3_dim; - i312_dims[1] = D1_dim; - i312_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i312", NC_INT, RANK_i312, i312_dims, &i312_id); - check_err(stat,__LINE__,__FILE__); - - f313_dims[0] = D3_dim; - f313_dims[1] = D1_dim; - f313_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f313", NC_FLOAT, RANK_f313, f313_dims, &f313_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var-name-dashes", NC_DOUBLE, RANK_var_MINUS_name_MINUS_dashes, 0, &var_MINUS_name_MINUS_dashes_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var.name.dots", NC_DOUBLE, RANK_var_PERIOD_name_PERIOD_dots, 0, &var_PERIOD_name_PERIOD_dots_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var+name+plusses", NC_DOUBLE, RANK_var_PLUS_name_PLUS_plusses, 0, &var_PLUS_name_PLUS_plusses_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var@name@ats", NC_DOUBLE, RANK_var_ATSIGN_name_ATSIGN_ats, 0, &var_ATSIGN_name_ATSIGN_ats_id); - check_err(stat,__LINE__,__FILE__); - - /* assign attributes */ - c_att_MINUS_name_MINUS_dashes[0] = 4; - stat = nc_put_att_int(ncid, c_id, "att-name-dashes", NC_INT, 1, c_att_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - c_att_PERIOD_name_PERIOD_dots[0] = 5; - stat = nc_put_att_int(ncid, c_id, "att.name.dots", NC_INT, 1, c_att_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - c_att_PLUS_name_PLUS_plusses[0] = 6; - stat = nc_put_att_int(ncid, c_id, "att+name+plusses", NC_INT, 1, c_att_PLUS_name_PLUS_plusses); - check_err(stat,__LINE__,__FILE__); - c_att_ATSIGN_name_ATSIGN_ats[0] = 7; - stat = nc_put_att_int(ncid, c_id, "att@name@ats", NC_INT, 1, c_att_ATSIGN_name_ATSIGN_ats); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, b_id, "c", 1, ""); - check_err(stat,__LINE__,__FILE__); - s_b[0] = 0; - s_b[1] = 127; - s_b[2] = -128; - s_b[3] = -1; - stat = nc_put_att_int(ncid, s_id, "b", NC_BYTE, 4, s_b); - check_err(stat,__LINE__,__FILE__); - s_s[0] = -32768; - s_s[1] = 0; - s_s[2] = 32767; - stat = nc_put_att_short(ncid, s_id, "s", NC_SHORT, 3, s_s); - check_err(stat,__LINE__,__FILE__); - i_i[0] = -2147483647; - i_i[1] = 0; - i_i[2] = 2147483647; - stat = nc_put_att_int(ncid, i_id, "i", NC_INT, 3, i_i); - check_err(stat,__LINE__,__FILE__); - i_f[0] = -9.9999996e+35; - i_f[1] = 0; - i_f[2] = 9.9999996e+35; - stat = nc_put_att_float(ncid, i_id, "f", NC_FLOAT, 3, i_f); - check_err(stat,__LINE__,__FILE__); - i_d[0] = -1e+308; - i_d[1] = 0; - i_d[2] = 1e+308; - stat = nc_put_att_double(ncid, i_id, "d", NC_DOUBLE, 3, i_d); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, f_id, "c", 1, "x"); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, d_id, "c", 8, "abcd\tZ$&"); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, NC_GLOBAL, "Gc", 1, ""); - check_err(stat,__LINE__,__FILE__); - cdf_Gb[0] = -128; - cdf_Gb[1] = 127; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gb", NC_BYTE, 2, cdf_Gb); - check_err(stat,__LINE__,__FILE__); - cdf_Gs[0] = -32768; - cdf_Gs[1] = 0; - cdf_Gs[2] = 32767; - stat = nc_put_att_short(ncid, NC_GLOBAL, "Gs", NC_SHORT, 3, cdf_Gs); - check_err(stat,__LINE__,__FILE__); - cdf_Gi[0] = -2147483647; - cdf_Gi[1] = 0; - cdf_Gi[2] = 2147483647; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gi", NC_INT, 3, cdf_Gi); - check_err(stat,__LINE__,__FILE__); - cdf_Gf[0] = -9.9999996e+35; - cdf_Gf[1] = 0; - cdf_Gf[2] = 9.9999996e+35; - stat = nc_put_att_float(ncid, NC_GLOBAL, "Gf", NC_FLOAT, 3, cdf_Gf); - check_err(stat,__LINE__,__FILE__); - cdf_Gd[0] = -1e+308; - cdf_Gd[1] = 0; - cdf_Gd[2] = 1e+308; - stat = nc_put_att_double(ncid, NC_GLOBAL, "Gd", NC_DOUBLE, 3, cdf_Gd); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_MINUS_name_MINUS_dashes[0] = -1; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt-name-dashes", NC_INT, 1, cdf_Gatt_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_PERIOD_name_PERIOD_dots[0] = -2; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt.name.dots", NC_INT, 1, cdf_Gatt_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_PLUS_name_PLUS_plusses[0] = -3; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt+name+plusses", NC_INT, 1, cdf_Gatt_PLUS_name_PLUS_plusses); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_ATSIGN_name_ATSIGN_ats[0] = -4; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt@name@ats", NC_INT, 1, cdf_Gatt_ATSIGN_name_ATSIGN_ats); - check_err(stat,__LINE__,__FILE__); - - /* leave define mode */ - stat = nc_enddef (ncid); - check_err(stat,__LINE__,__FILE__); - - { /* store c */ - static char c = '2'; - stat = nc_put_var_text(ncid, c_id, &c); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b */ - static signed char b = -2; - stat = nc_put_var_schar(ncid, b_id, &b); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s */ - static short s = -5; - stat = nc_put_var_short(ncid, s_id, &s); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i */ - static int i = -20; - stat = nc_put_var_int(ncid, i_id, &i); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f */ - static float f = -9; - stat = nc_put_var_float(ncid, f_id, &f); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d */ - static double d = -10.; - stat = nc_put_var_double(ncid, d_id, &d); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr */ - static size_t cr_start[RANK_cr]; - static size_t cr_count[RANK_cr]; - static char cr[] = {"ab"}; - Dr_len = 2; /* number of records of cr data */ - cr_start[0] = 0; - cr_count[0] = Dr_len; - stat = nc_put_vara_text(ncid, cr_id, cr_start, cr_count, cr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br */ - static size_t br_start[RANK_br]; - static size_t br_count[RANK_br]; - static signed char br[] = {-128, 127}; - Dr_len = 2; /* number of records of br data */ - br_start[0] = 0; - br_count[0] = Dr_len; - stat = nc_put_vara_schar(ncid, br_id, br_start, br_count, br); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr */ - static size_t sr_start[RANK_sr]; - static size_t sr_count[RANK_sr]; - static short sr[] = {-32768, 32767}; - Dr_len = 2; /* number of records of sr data */ - sr_start[0] = 0; - sr_count[0] = Dr_len; - stat = nc_put_vara_short(ncid, sr_id, sr_start, sr_count, sr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store ir */ - static size_t ir_start[RANK_ir]; - static size_t ir_count[RANK_ir]; - static int ir[] = {-2147483646, 2147483647}; - Dr_len = 2; /* number of records of ir data */ - ir_start[0] = 0; - ir_count[0] = Dr_len; - stat = nc_put_vara_int(ncid, ir_id, ir_start, ir_count, ir); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr */ - static size_t fr_start[RANK_fr]; - static size_t fr_count[RANK_fr]; - static float fr[] = {-9.9999996e+35, 9.9999996e+35}; - Dr_len = 2; /* number of records of fr data */ - fr_start[0] = 0; - fr_count[0] = Dr_len; - stat = nc_put_vara_float(ncid, fr_id, fr_start, fr_count, fr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store dr */ - static size_t dr_start[RANK_dr]; - static size_t dr_count[RANK_dr]; - static double dr[] = {-1.e+308, 1.e+308}; - Dr_len = 2; /* number of records of dr data */ - dr_start[0] = 0; - dr_count[0] = Dr_len; - stat = nc_put_vara_double(ncid, dr_id, dr_start, dr_count, dr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c1 */ - static char c1[] = {""}; - stat = nc_put_var_text(ncid, c1_id, c1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b1 */ - static signed char b1[] = {-128}; - stat = nc_put_var_schar(ncid, b1_id, b1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s1 */ - static short s1[] = {-32768}; - stat = nc_put_var_short(ncid, s1_id, s1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i1 */ - static int i1[] = {-2147483646}; - stat = nc_put_var_int(ncid, i1_id, i1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f1 */ - static float f1[] = {-9.9999996e+35}; - stat = nc_put_var_float(ncid, f1_id, f1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d1 */ - static double d1[] = {-1.e+308}; - stat = nc_put_var_double(ncid, d1_id, d1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c2 */ - static char c2[] = {"ab"}; - stat = nc_put_var_text(ncid, c2_id, c2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b2 */ - static signed char b2[] = {-128, 127}; - stat = nc_put_var_schar(ncid, b2_id, b2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s2 */ - static short s2[] = {-32768, 32767}; - stat = nc_put_var_short(ncid, s2_id, s2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i2 */ - static int i2[] = {-2147483646, 2147483647}; - stat = nc_put_var_int(ncid, i2_id, i2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f2 */ - static float f2[] = {-9.9999996e+35, 9.9999996e+35}; - stat = nc_put_var_float(ncid, f2_id, f2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d2 */ - static double d2[] = {-1.e+308, 1.e+308}; - stat = nc_put_var_double(ncid, d2_id, d2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c3 */ - static char c3[] = {"\001\177."}; - stat = nc_put_var_text(ncid, c3_id, c3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b3 */ - static signed char b3[] = {-128, 127, -1}; - stat = nc_put_var_schar(ncid, b3_id, b3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s3 */ - static short s3[] = {-32768, 0, 32767}; - stat = nc_put_var_short(ncid, s3_id, s3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i3 */ - static int i3[] = {-2147483646, 0, 2147483647}; - stat = nc_put_var_int(ncid, i3_id, i3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f3 */ - static float f3[] = {-9.9999996e+35, 0, 9.9999996e+35}; - stat = nc_put_var_float(ncid, f3_id, f3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d3 */ - static double d3[] = {-1.e+308, 0., 1.e+308}; - stat = nc_put_var_double(ncid, d3_id, d3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr1 */ - static size_t cr1_start[RANK_cr1]; - static size_t cr1_count[RANK_cr1]; - static char cr1[] = {"xy"}; - Dr_len = 2; /* number of records of cr1 data */ - cr1_start[0] = 0; - cr1_start[1] = 0; - cr1_count[0] = Dr_len; - cr1_count[1] = D1_len; - stat = nc_put_vara_text(ncid, cr1_id, cr1_start, cr1_count, cr1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br2 */ - static size_t br2_start[RANK_br2]; - static size_t br2_count[RANK_br2]; - static signed char br2[] = {-24, -26, -20, -22}; - Dr_len = 2; /* number of records of br2 data */ - br2_start[0] = 0; - br2_start[1] = 0; - br2_count[0] = Dr_len; - br2_count[1] = D2_len; - stat = nc_put_vara_schar(ncid, br2_id, br2_start, br2_count, br2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr3 */ - static size_t sr3_start[RANK_sr3]; - static size_t sr3_count[RANK_sr3]; - static short sr3[] = {-375, -380, -385, -350, -355, -360}; - Dr_len = 2; /* number of records of sr3 data */ - sr3_start[0] = 0; - sr3_start[1] = 0; - sr3_count[0] = Dr_len; - sr3_count[1] = D3_len; - stat = nc_put_vara_short(ncid, sr3_id, sr3_start, sr3_count, sr3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f11 */ - static float f11[] = {-2187}; - stat = nc_put_var_float(ncid, f11_id, f11); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d12 */ - static double d12[] = {-3000., -3010.}; - stat = nc_put_var_double(ncid, d12_id, d12); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c13 */ - static char c13[] = {"\tb\177"}; - stat = nc_put_var_text(ncid, c13_id, c13); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s21 */ - static short s21[] = {-375, -350}; - stat = nc_put_var_short(ncid, s21_id, s21); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i22 */ - static int i22[] = {-24000, -24020, -23600, -23620}; - stat = nc_put_var_int(ncid, i22_id, i22); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f23 */ - static float f23[] = {-2187, -2196, -2205, -2106, -2115, -2124}; - stat = nc_put_var_float(ncid, f23_id, f23); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c31 */ - static char c31[] = {"+- "}; - stat = nc_put_var_text(ncid, c31_id, c31); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b32 */ - static signed char b32[] = {-24, -26, -20, -22, -16, -18}; - stat = nc_put_var_schar(ncid, b32_id, b32); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s33 */ - static short s33[] = {-375, -380, -385, -350, -355, -360, -325, -330, -335}; - stat = nc_put_var_short(ncid, s33_id, s33); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr11 */ - static size_t sr11_start[RANK_sr11]; - static size_t sr11_count[RANK_sr11]; - static short sr11[] = {2500, 2375}; - Dr_len = 2; /* number of records of sr11 data */ - sr11_start[0] = 0; - sr11_start[1] = 0; - sr11_start[2] = 0; - sr11_count[0] = Dr_len; - sr11_count[1] = D1_len; - sr11_count[2] = D1_len; - stat = nc_put_vara_short(ncid, sr11_id, sr11_start, sr11_count, sr11); - check_err(stat,__LINE__,__FILE__); - } - - { /* store ir12 */ - static size_t ir12_start[RANK_ir12]; - static size_t ir12_count[RANK_ir12]; - static int ir12[] = {640000, 639980, 632000, 631980}; - Dr_len = 2; /* number of records of ir12 data */ - ir12_start[0] = 0; - ir12_start[1] = 0; - ir12_start[2] = 0; - ir12_count[0] = Dr_len; - ir12_count[1] = D1_len; - ir12_count[2] = D2_len; - stat = nc_put_vara_int(ncid, ir12_id, ir12_start, ir12_count, ir12); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr13 */ - static size_t fr13_start[RANK_fr13]; - static size_t fr13_count[RANK_fr13]; - static float fr13[] = {26244, 26235, 26226, 25515, 25506, 25497}; - Dr_len = 2; /* number of records of fr13 data */ - fr13_start[0] = 0; - fr13_start[1] = 0; - fr13_start[2] = 0; - fr13_count[0] = Dr_len; - fr13_count[1] = D1_len; - fr13_count[2] = D3_len; - stat = nc_put_vara_float(ncid, fr13_id, fr13_start, fr13_count, fr13); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr21 */ - static size_t cr21_start[RANK_cr21]; - static size_t cr21_count[RANK_cr21]; - static char cr21[] = {"@DHL"}; - Dr_len = 2; /* number of records of cr21 data */ - cr21_start[0] = 0; - cr21_start[1] = 0; - cr21_start[2] = 0; - cr21_count[0] = Dr_len; - cr21_count[1] = D2_len; - cr21_count[2] = D1_len; - stat = nc_put_vara_text(ncid, cr21_id, cr21_start, cr21_count, cr21); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br22 */ - static size_t br22_start[RANK_br22]; - static size_t br22_count[RANK_br22]; - static signed char br22[] = {64, 62, 68, 66, 56, 54, 60, 58}; - Dr_len = 2; /* number of records of br22 data */ - br22_start[0] = 0; - br22_start[1] = 0; - br22_start[2] = 0; - br22_count[0] = Dr_len; - br22_count[1] = D2_len; - br22_count[2] = D2_len; - stat = nc_put_vara_schar(ncid, br22_id, br22_start, br22_count, br22); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr23 */ - static size_t sr23_start[RANK_sr23]; - static size_t sr23_count[RANK_sr23]; - static short sr23[] = {2500, 2495, 2490, 2525, 2520, 2515, 2375, 2370, 2365, 2400, 2395, 2390}; - Dr_len = 2; /* number of records of sr23 data */ - sr23_start[0] = 0; - sr23_start[1] = 0; - sr23_start[2] = 0; - sr23_count[0] = Dr_len; - sr23_count[1] = D2_len; - sr23_count[2] = D3_len; - stat = nc_put_vara_short(ncid, sr23_id, sr23_start, sr23_count, sr23); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr31 */ - static size_t fr31_start[RANK_fr31]; - static size_t fr31_count[RANK_fr31]; - static float fr31[] = {26244, 26325, 26406, 25515, 25596, 25677}; - Dr_len = 2; /* number of records of fr31 data */ - fr31_start[0] = 0; - fr31_start[1] = 0; - fr31_start[2] = 0; - fr31_count[0] = Dr_len; - fr31_count[1] = D3_len; - fr31_count[2] = D1_len; - stat = nc_put_vara_float(ncid, fr31_id, fr31_start, fr31_count, fr31); - check_err(stat,__LINE__,__FILE__); - } - - { /* store dr32 */ - static size_t dr32_start[RANK_dr32]; - static size_t dr32_count[RANK_dr32]; - static double dr32[] = {40000., 39990., 40100., 40090., 40200., 40190., 39000., 38990., 39100., 39090., 39200., 39190.}; - Dr_len = 2; /* number of records of dr32 data */ - dr32_start[0] = 0; - dr32_start[1] = 0; - dr32_start[2] = 0; - dr32_count[0] = Dr_len; - dr32_count[1] = D3_len; - dr32_count[2] = D2_len; - stat = nc_put_vara_double(ncid, dr32_id, dr32_start, dr32_count, dr32); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr33 */ - static size_t cr33_start[RANK_cr33]; - static size_t cr33_count[RANK_cr33]; - static char cr33[] = {"1\000\000two3\000\0004\000\0005\000\000six"}; - Dr_len = 2; /* number of records of cr33 data */ - cr33_start[0] = 0; - cr33_start[1] = 0; - cr33_start[2] = 0; - cr33_count[0] = Dr_len; - cr33_count[1] = D3_len; - cr33_count[2] = D3_len; - stat = nc_put_vara_text(ncid, cr33_id, cr33_start, cr33_count, cr33); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c111 */ - static char c111[] = {"@"}; - stat = nc_put_var_text(ncid, c111_id, c111); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b112 */ - static signed char b112[] = {64, 62}; - stat = nc_put_var_schar(ncid, b112_id, b112); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s113 */ - static short s113[] = {2500, 2495, 2490}; - stat = nc_put_var_short(ncid, s113_id, s113); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f121 */ - static float f121[] = {26244, 26325}; - stat = nc_put_var_float(ncid, f121_id, f121); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d122 */ - static double d122[] = {40000., 39990., 40100., 40090.}; - stat = nc_put_var_double(ncid, d122_id, d122); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c123 */ - static char c123[] = {"one2\000\000"}; - stat = nc_put_var_text(ncid, c123_id, c123); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s131 */ - static short s131[] = {2500, 2525, 2550}; - stat = nc_put_var_short(ncid, s131_id, s131); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i132 */ - static int i132[] = {640000, 639980, 640400, 640380, 640800, 640780}; - stat = nc_put_var_int(ncid, i132_id, i132); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f133 */ - static float f133[] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388}; - stat = nc_put_var_float(ncid, f133_id, f133); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f211 */ - static float f211[] = {26244, 25515}; - stat = nc_put_var_float(ncid, f211_id, f211); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d212 */ - static double d212[] = {40000., 39990., 39000., 38990.}; - stat = nc_put_var_double(ncid, d212_id, d212); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s221 */ - static short s221[] = {2500, 2525, 2375, 2400}; - stat = nc_put_var_short(ncid, s221_id, s221); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i222 */ - static int i222[] = {640000, 639980, 640400, 640380, 632000, 631980, 632400, 632380}; - stat = nc_put_var_int(ncid, i222_id, i222); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f223 */ - static float f223[] = {26244, 26235, 26226, 26325, 26316, 26307, 25515, 25506, 25497, 25596, 25587, 25578}; - stat = nc_put_var_float(ncid, f223_id, f223); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c231 */ - static char c231[] = {"@DHHLP"}; - stat = nc_put_var_text(ncid, c231_id, c231); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b232 */ - static signed char b232[] = {64, 62, 68, 66, 72, 70, 56, 54, 60, 58, 64, 62}; - stat = nc_put_var_schar(ncid, b232_id, b232); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s233 */ - static short s233[] = {2500, 2495, 2490, 2525, 2520, 2515, 2550, 2545, 2540, 2375, 2370, 2365, 2400, 2395, 2390, 2425, 2420, 2415}; - stat = nc_put_var_short(ncid, s233_id, s233); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s311 */ - static short s311[] = {2500, 2375, 2250}; - stat = nc_put_var_short(ncid, s311_id, s311); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i312 */ - static int i312[] = {640000, 639980, 632000, 631980, 624000, 623980}; - stat = nc_put_var_int(ncid, i312_id, i312); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f313 */ - static float f313[] = {26244, 26235, 26226, 25515, 25506, 25497, 24786, 24777, 24768}; - stat = nc_put_var_float(ncid, f313_id, f313); - check_err(stat,__LINE__,__FILE__); - } - - { /* store var-name-dashes */ - static double var_MINUS_name_MINUS_dashes = -1.; - stat = nc_put_var_double(ncid, var_MINUS_name_MINUS_dashes_id, &var_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - } - - { /* store var.name.dots */ - static double var_PERIOD_name_PERIOD_dots = -2.; - stat = nc_put_var_double(ncid, var_PERIOD_name_PERIOD_dots_id, &var_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - } - stat = nc_close(ncid); - check_err(stat,__LINE__,__FILE__); - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/ncdump/ref_ctest64.c b/contrib/netcdf/4.4.1.1/ncdump/ref_ctest64.c deleted file mode 100644 index ea896149836..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/ref_ctest64.c +++ /dev/null @@ -1,1333 +0,0 @@ -#include -#include -#include - -void -check_err(const int stat, const int line, const char *file) { - if (stat != NC_NOERR) { - (void) fprintf(stderr, "line %d of %s: %s\n", line, file, nc_strerror(stat)); - exit(1); - } -} - -int -main() { /* create ctest0_64.nc */ - - int stat; /* return status */ - int ncid; /* netCDF id */ - - /* dimension ids */ - int Dr_dim; - int D1_dim; - int D2_dim; - int D3_dim; - int dim_MINUS_name_MINUS_dashes_dim; - int dim_PERIOD_name_PERIOD_dots_dim; - int dim_PLUS_name_PLUS_plusses_dim; - int dim_ATSIGN_name_ATSIGN_ats_dim; - - /* dimension lengths */ - size_t Dr_len = NC_UNLIMITED; - size_t D1_len = 1; - size_t D2_len = 2; - size_t D3_len = 3; - size_t dim_MINUS_name_MINUS_dashes_len = 4; - size_t dim_PERIOD_name_PERIOD_dots_len = 5; - size_t dim_PLUS_name_PLUS_plusses_len = 6; - size_t dim_ATSIGN_name_ATSIGN_ats_len = 7; - - /* variable ids */ - int c_id; - int b_id; - int s_id; - int i_id; - int f_id; - int d_id; - int cr_id; - int br_id; - int sr_id; - int ir_id; - int fr_id; - int dr_id; - int c1_id; - int b1_id; - int s1_id; - int i1_id; - int f1_id; - int d1_id; - int c2_id; - int b2_id; - int s2_id; - int i2_id; - int f2_id; - int d2_id; - int c3_id; - int b3_id; - int s3_id; - int i3_id; - int f3_id; - int d3_id; - int cr1_id; - int br2_id; - int sr3_id; - int f11_id; - int d12_id; - int c13_id; - int s21_id; - int i22_id; - int f23_id; - int c31_id; - int b32_id; - int s33_id; - int sr11_id; - int ir12_id; - int fr13_id; - int cr21_id; - int br22_id; - int sr23_id; - int fr31_id; - int dr32_id; - int cr33_id; - int c111_id; - int b112_id; - int s113_id; - int f121_id; - int d122_id; - int c123_id; - int s131_id; - int i132_id; - int f133_id; - int f211_id; - int d212_id; - int c213_id; - int s221_id; - int i222_id; - int f223_id; - int c231_id; - int b232_id; - int s233_id; - int s311_id; - int i312_id; - int f313_id; - int var_MINUS_name_MINUS_dashes_id; - int var_PERIOD_name_PERIOD_dots_id; - int var_PLUS_name_PLUS_plusses_id; - int var_ATSIGN_name_ATSIGN_ats_id; - - /* rank (number of dimensions) for each variable */ -# define RANK_c 0 -# define RANK_b 0 -# define RANK_s 0 -# define RANK_i 0 -# define RANK_f 0 -# define RANK_d 0 -# define RANK_cr 1 -# define RANK_br 1 -# define RANK_sr 1 -# define RANK_ir 1 -# define RANK_fr 1 -# define RANK_dr 1 -# define RANK_c1 1 -# define RANK_b1 1 -# define RANK_s1 1 -# define RANK_i1 1 -# define RANK_f1 1 -# define RANK_d1 1 -# define RANK_c2 1 -# define RANK_b2 1 -# define RANK_s2 1 -# define RANK_i2 1 -# define RANK_f2 1 -# define RANK_d2 1 -# define RANK_c3 1 -# define RANK_b3 1 -# define RANK_s3 1 -# define RANK_i3 1 -# define RANK_f3 1 -# define RANK_d3 1 -# define RANK_cr1 2 -# define RANK_br2 2 -# define RANK_sr3 2 -# define RANK_f11 2 -# define RANK_d12 2 -# define RANK_c13 2 -# define RANK_s21 2 -# define RANK_i22 2 -# define RANK_f23 2 -# define RANK_c31 2 -# define RANK_b32 2 -# define RANK_s33 2 -# define RANK_sr11 3 -# define RANK_ir12 3 -# define RANK_fr13 3 -# define RANK_cr21 3 -# define RANK_br22 3 -# define RANK_sr23 3 -# define RANK_fr31 3 -# define RANK_dr32 3 -# define RANK_cr33 3 -# define RANK_c111 3 -# define RANK_b112 3 -# define RANK_s113 3 -# define RANK_f121 3 -# define RANK_d122 3 -# define RANK_c123 3 -# define RANK_s131 3 -# define RANK_i132 3 -# define RANK_f133 3 -# define RANK_f211 3 -# define RANK_d212 3 -# define RANK_c213 3 -# define RANK_s221 3 -# define RANK_i222 3 -# define RANK_f223 3 -# define RANK_c231 3 -# define RANK_b232 3 -# define RANK_s233 3 -# define RANK_s311 3 -# define RANK_i312 3 -# define RANK_f313 3 -# define RANK_var_MINUS_name_MINUS_dashes 0 -# define RANK_var_PERIOD_name_PERIOD_dots 0 -# define RANK_var_PLUS_name_PLUS_plusses 0 -# define RANK_var_ATSIGN_name_ATSIGN_ats 0 - - /* variable shapes */ - int cr_dims[RANK_cr]; - int br_dims[RANK_br]; - int sr_dims[RANK_sr]; - int ir_dims[RANK_ir]; - int fr_dims[RANK_fr]; - int dr_dims[RANK_dr]; - int c1_dims[RANK_c1]; - int b1_dims[RANK_b1]; - int s1_dims[RANK_s1]; - int i1_dims[RANK_i1]; - int f1_dims[RANK_f1]; - int d1_dims[RANK_d1]; - int c2_dims[RANK_c2]; - int b2_dims[RANK_b2]; - int s2_dims[RANK_s2]; - int i2_dims[RANK_i2]; - int f2_dims[RANK_f2]; - int d2_dims[RANK_d2]; - int c3_dims[RANK_c3]; - int b3_dims[RANK_b3]; - int s3_dims[RANK_s3]; - int i3_dims[RANK_i3]; - int f3_dims[RANK_f3]; - int d3_dims[RANK_d3]; - int cr1_dims[RANK_cr1]; - int br2_dims[RANK_br2]; - int sr3_dims[RANK_sr3]; - int f11_dims[RANK_f11]; - int d12_dims[RANK_d12]; - int c13_dims[RANK_c13]; - int s21_dims[RANK_s21]; - int i22_dims[RANK_i22]; - int f23_dims[RANK_f23]; - int c31_dims[RANK_c31]; - int b32_dims[RANK_b32]; - int s33_dims[RANK_s33]; - int sr11_dims[RANK_sr11]; - int ir12_dims[RANK_ir12]; - int fr13_dims[RANK_fr13]; - int cr21_dims[RANK_cr21]; - int br22_dims[RANK_br22]; - int sr23_dims[RANK_sr23]; - int fr31_dims[RANK_fr31]; - int dr32_dims[RANK_dr32]; - int cr33_dims[RANK_cr33]; - int c111_dims[RANK_c111]; - int b112_dims[RANK_b112]; - int s113_dims[RANK_s113]; - int f121_dims[RANK_f121]; - int d122_dims[RANK_d122]; - int c123_dims[RANK_c123]; - int s131_dims[RANK_s131]; - int i132_dims[RANK_i132]; - int f133_dims[RANK_f133]; - int f211_dims[RANK_f211]; - int d212_dims[RANK_d212]; - int c213_dims[RANK_c213]; - int s221_dims[RANK_s221]; - int i222_dims[RANK_i222]; - int f223_dims[RANK_f223]; - int c231_dims[RANK_c231]; - int b232_dims[RANK_b232]; - int s233_dims[RANK_s233]; - int s311_dims[RANK_s311]; - int i312_dims[RANK_i312]; - int f313_dims[RANK_f313]; - - /* attribute vectors */ - int c_att_MINUS_name_MINUS_dashes[1]; - int c_att_PERIOD_name_PERIOD_dots[1]; - int c_att_PLUS_name_PLUS_plusses[1]; - int c_att_ATSIGN_name_ATSIGN_ats[1]; - int s_b[4]; - short s_s[3]; - int i_i[3]; - float i_f[3]; - double i_d[3]; - int cdf_Gb[2]; - short cdf_Gs[3]; - int cdf_Gi[3]; - float cdf_Gf[3]; - double cdf_Gd[3]; - int cdf_Gatt_MINUS_name_MINUS_dashes[1]; - int cdf_Gatt_PERIOD_name_PERIOD_dots[1]; - int cdf_Gatt_PLUS_name_PLUS_plusses[1]; - int cdf_Gatt_ATSIGN_name_ATSIGN_ats[1]; - - /* enter define mode */ - stat = nc_create("ctest0_64.nc", NC_CLOBBER|NC_64BIT_OFFSET, &ncid); - check_err(stat,__LINE__,__FILE__); - - /* define dimensions */ - stat = nc_def_dim(ncid, "Dr", Dr_len, &Dr_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D1", D1_len, &D1_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D2", D2_len, &D2_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "D3", D3_len, &D3_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim-name-dashes", dim_MINUS_name_MINUS_dashes_len, &dim_MINUS_name_MINUS_dashes_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim.name.dots", dim_PERIOD_name_PERIOD_dots_len, &dim_PERIOD_name_PERIOD_dots_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim+name+plusses", dim_PLUS_name_PLUS_plusses_len, &dim_PLUS_name_PLUS_plusses_dim); - check_err(stat,__LINE__,__FILE__); - stat = nc_def_dim(ncid, "dim@name@ats", dim_ATSIGN_name_ATSIGN_ats_len, &dim_ATSIGN_name_ATSIGN_ats_dim); - check_err(stat,__LINE__,__FILE__); - - /* define variables */ - - stat = nc_def_var(ncid, "c", NC_CHAR, RANK_c, 0, &c_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "b", NC_BYTE, RANK_b, 0, &b_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "s", NC_SHORT, RANK_s, 0, &s_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "i", NC_INT, RANK_i, 0, &i_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "f", NC_FLOAT, RANK_f, 0, &f_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "d", NC_DOUBLE, RANK_d, 0, &d_id); - check_err(stat,__LINE__,__FILE__); - - cr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "cr", NC_CHAR, RANK_cr, cr_dims, &cr_id); - check_err(stat,__LINE__,__FILE__); - - br_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "br", NC_BYTE, RANK_br, br_dims, &br_id); - check_err(stat,__LINE__,__FILE__); - - sr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "sr", NC_SHORT, RANK_sr, sr_dims, &sr_id); - check_err(stat,__LINE__,__FILE__); - - ir_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "ir", NC_INT, RANK_ir, ir_dims, &ir_id); - check_err(stat,__LINE__,__FILE__); - - fr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "fr", NC_FLOAT, RANK_fr, fr_dims, &fr_id); - check_err(stat,__LINE__,__FILE__); - - dr_dims[0] = Dr_dim; - stat = nc_def_var(ncid, "dr", NC_DOUBLE, RANK_dr, dr_dims, &dr_id); - check_err(stat,__LINE__,__FILE__); - - c1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "c1", NC_CHAR, RANK_c1, c1_dims, &c1_id); - check_err(stat,__LINE__,__FILE__); - - b1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "b1", NC_BYTE, RANK_b1, b1_dims, &b1_id); - check_err(stat,__LINE__,__FILE__); - - s1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "s1", NC_SHORT, RANK_s1, s1_dims, &s1_id); - check_err(stat,__LINE__,__FILE__); - - i1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "i1", NC_INT, RANK_i1, i1_dims, &i1_id); - check_err(stat,__LINE__,__FILE__); - - f1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "f1", NC_FLOAT, RANK_f1, f1_dims, &f1_id); - check_err(stat,__LINE__,__FILE__); - - d1_dims[0] = D1_dim; - stat = nc_def_var(ncid, "d1", NC_DOUBLE, RANK_d1, d1_dims, &d1_id); - check_err(stat,__LINE__,__FILE__); - - c2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "c2", NC_CHAR, RANK_c2, c2_dims, &c2_id); - check_err(stat,__LINE__,__FILE__); - - b2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "b2", NC_BYTE, RANK_b2, b2_dims, &b2_id); - check_err(stat,__LINE__,__FILE__); - - s2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "s2", NC_SHORT, RANK_s2, s2_dims, &s2_id); - check_err(stat,__LINE__,__FILE__); - - i2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "i2", NC_INT, RANK_i2, i2_dims, &i2_id); - check_err(stat,__LINE__,__FILE__); - - f2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "f2", NC_FLOAT, RANK_f2, f2_dims, &f2_id); - check_err(stat,__LINE__,__FILE__); - - d2_dims[0] = D2_dim; - stat = nc_def_var(ncid, "d2", NC_DOUBLE, RANK_d2, d2_dims, &d2_id); - check_err(stat,__LINE__,__FILE__); - - c3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "c3", NC_CHAR, RANK_c3, c3_dims, &c3_id); - check_err(stat,__LINE__,__FILE__); - - b3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "b3", NC_BYTE, RANK_b3, b3_dims, &b3_id); - check_err(stat,__LINE__,__FILE__); - - s3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "s3", NC_SHORT, RANK_s3, s3_dims, &s3_id); - check_err(stat,__LINE__,__FILE__); - - i3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "i3", NC_INT, RANK_i3, i3_dims, &i3_id); - check_err(stat,__LINE__,__FILE__); - - f3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "f3", NC_FLOAT, RANK_f3, f3_dims, &f3_id); - check_err(stat,__LINE__,__FILE__); - - d3_dims[0] = D3_dim; - stat = nc_def_var(ncid, "d3", NC_DOUBLE, RANK_d3, d3_dims, &d3_id); - check_err(stat,__LINE__,__FILE__); - - cr1_dims[0] = Dr_dim; - cr1_dims[1] = D1_dim; - stat = nc_def_var(ncid, "cr1", NC_CHAR, RANK_cr1, cr1_dims, &cr1_id); - check_err(stat,__LINE__,__FILE__); - - br2_dims[0] = Dr_dim; - br2_dims[1] = D2_dim; - stat = nc_def_var(ncid, "br2", NC_BYTE, RANK_br2, br2_dims, &br2_id); - check_err(stat,__LINE__,__FILE__); - - sr3_dims[0] = Dr_dim; - sr3_dims[1] = D3_dim; - stat = nc_def_var(ncid, "sr3", NC_SHORT, RANK_sr3, sr3_dims, &sr3_id); - check_err(stat,__LINE__,__FILE__); - - f11_dims[0] = D1_dim; - f11_dims[1] = D1_dim; - stat = nc_def_var(ncid, "f11", NC_FLOAT, RANK_f11, f11_dims, &f11_id); - check_err(stat,__LINE__,__FILE__); - - d12_dims[0] = D1_dim; - d12_dims[1] = D2_dim; - stat = nc_def_var(ncid, "d12", NC_DOUBLE, RANK_d12, d12_dims, &d12_id); - check_err(stat,__LINE__,__FILE__); - - c13_dims[0] = D1_dim; - c13_dims[1] = D3_dim; - stat = nc_def_var(ncid, "c13", NC_CHAR, RANK_c13, c13_dims, &c13_id); - check_err(stat,__LINE__,__FILE__); - - s21_dims[0] = D2_dim; - s21_dims[1] = D1_dim; - stat = nc_def_var(ncid, "s21", NC_SHORT, RANK_s21, s21_dims, &s21_id); - check_err(stat,__LINE__,__FILE__); - - i22_dims[0] = D2_dim; - i22_dims[1] = D2_dim; - stat = nc_def_var(ncid, "i22", NC_INT, RANK_i22, i22_dims, &i22_id); - check_err(stat,__LINE__,__FILE__); - - f23_dims[0] = D2_dim; - f23_dims[1] = D3_dim; - stat = nc_def_var(ncid, "f23", NC_FLOAT, RANK_f23, f23_dims, &f23_id); - check_err(stat,__LINE__,__FILE__); - - c31_dims[0] = D3_dim; - c31_dims[1] = D1_dim; - stat = nc_def_var(ncid, "c31", NC_CHAR, RANK_c31, c31_dims, &c31_id); - check_err(stat,__LINE__,__FILE__); - - b32_dims[0] = D3_dim; - b32_dims[1] = D2_dim; - stat = nc_def_var(ncid, "b32", NC_BYTE, RANK_b32, b32_dims, &b32_id); - check_err(stat,__LINE__,__FILE__); - - s33_dims[0] = D3_dim; - s33_dims[1] = D3_dim; - stat = nc_def_var(ncid, "s33", NC_SHORT, RANK_s33, s33_dims, &s33_id); - check_err(stat,__LINE__,__FILE__); - - sr11_dims[0] = Dr_dim; - sr11_dims[1] = D1_dim; - sr11_dims[2] = D1_dim; - stat = nc_def_var(ncid, "sr11", NC_SHORT, RANK_sr11, sr11_dims, &sr11_id); - check_err(stat,__LINE__,__FILE__); - - ir12_dims[0] = Dr_dim; - ir12_dims[1] = D1_dim; - ir12_dims[2] = D2_dim; - stat = nc_def_var(ncid, "ir12", NC_INT, RANK_ir12, ir12_dims, &ir12_id); - check_err(stat,__LINE__,__FILE__); - - fr13_dims[0] = Dr_dim; - fr13_dims[1] = D1_dim; - fr13_dims[2] = D3_dim; - stat = nc_def_var(ncid, "fr13", NC_FLOAT, RANK_fr13, fr13_dims, &fr13_id); - check_err(stat,__LINE__,__FILE__); - - cr21_dims[0] = Dr_dim; - cr21_dims[1] = D2_dim; - cr21_dims[2] = D1_dim; - stat = nc_def_var(ncid, "cr21", NC_CHAR, RANK_cr21, cr21_dims, &cr21_id); - check_err(stat,__LINE__,__FILE__); - - br22_dims[0] = Dr_dim; - br22_dims[1] = D2_dim; - br22_dims[2] = D2_dim; - stat = nc_def_var(ncid, "br22", NC_BYTE, RANK_br22, br22_dims, &br22_id); - check_err(stat,__LINE__,__FILE__); - - sr23_dims[0] = Dr_dim; - sr23_dims[1] = D2_dim; - sr23_dims[2] = D3_dim; - stat = nc_def_var(ncid, "sr23", NC_SHORT, RANK_sr23, sr23_dims, &sr23_id); - check_err(stat,__LINE__,__FILE__); - - fr31_dims[0] = Dr_dim; - fr31_dims[1] = D3_dim; - fr31_dims[2] = D1_dim; - stat = nc_def_var(ncid, "fr31", NC_FLOAT, RANK_fr31, fr31_dims, &fr31_id); - check_err(stat,__LINE__,__FILE__); - - dr32_dims[0] = Dr_dim; - dr32_dims[1] = D3_dim; - dr32_dims[2] = D2_dim; - stat = nc_def_var(ncid, "dr32", NC_DOUBLE, RANK_dr32, dr32_dims, &dr32_id); - check_err(stat,__LINE__,__FILE__); - - cr33_dims[0] = Dr_dim; - cr33_dims[1] = D3_dim; - cr33_dims[2] = D3_dim; - stat = nc_def_var(ncid, "cr33", NC_CHAR, RANK_cr33, cr33_dims, &cr33_id); - check_err(stat,__LINE__,__FILE__); - - c111_dims[0] = D1_dim; - c111_dims[1] = D1_dim; - c111_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c111", NC_CHAR, RANK_c111, c111_dims, &c111_id); - check_err(stat,__LINE__,__FILE__); - - b112_dims[0] = D1_dim; - b112_dims[1] = D1_dim; - b112_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b112", NC_BYTE, RANK_b112, b112_dims, &b112_id); - check_err(stat,__LINE__,__FILE__); - - s113_dims[0] = D1_dim; - s113_dims[1] = D1_dim; - s113_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s113", NC_SHORT, RANK_s113, s113_dims, &s113_id); - check_err(stat,__LINE__,__FILE__); - - f121_dims[0] = D1_dim; - f121_dims[1] = D2_dim; - f121_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f121", NC_FLOAT, RANK_f121, f121_dims, &f121_id); - check_err(stat,__LINE__,__FILE__); - - d122_dims[0] = D1_dim; - d122_dims[1] = D2_dim; - d122_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d122", NC_DOUBLE, RANK_d122, d122_dims, &d122_id); - check_err(stat,__LINE__,__FILE__); - - c123_dims[0] = D1_dim; - c123_dims[1] = D2_dim; - c123_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c123", NC_CHAR, RANK_c123, c123_dims, &c123_id); - check_err(stat,__LINE__,__FILE__); - - s131_dims[0] = D1_dim; - s131_dims[1] = D3_dim; - s131_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s131", NC_SHORT, RANK_s131, s131_dims, &s131_id); - check_err(stat,__LINE__,__FILE__); - - i132_dims[0] = D1_dim; - i132_dims[1] = D3_dim; - i132_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i132", NC_INT, RANK_i132, i132_dims, &i132_id); - check_err(stat,__LINE__,__FILE__); - - f133_dims[0] = D1_dim; - f133_dims[1] = D3_dim; - f133_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f133", NC_FLOAT, RANK_f133, f133_dims, &f133_id); - check_err(stat,__LINE__,__FILE__); - - f211_dims[0] = D2_dim; - f211_dims[1] = D1_dim; - f211_dims[2] = D1_dim; - stat = nc_def_var(ncid, "f211", NC_FLOAT, RANK_f211, f211_dims, &f211_id); - check_err(stat,__LINE__,__FILE__); - - d212_dims[0] = D2_dim; - d212_dims[1] = D1_dim; - d212_dims[2] = D2_dim; - stat = nc_def_var(ncid, "d212", NC_DOUBLE, RANK_d212, d212_dims, &d212_id); - check_err(stat,__LINE__,__FILE__); - - c213_dims[0] = D2_dim; - c213_dims[1] = D1_dim; - c213_dims[2] = D3_dim; - stat = nc_def_var(ncid, "c213", NC_CHAR, RANK_c213, c213_dims, &c213_id); - check_err(stat,__LINE__,__FILE__); - - s221_dims[0] = D2_dim; - s221_dims[1] = D2_dim; - s221_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s221", NC_SHORT, RANK_s221, s221_dims, &s221_id); - check_err(stat,__LINE__,__FILE__); - - i222_dims[0] = D2_dim; - i222_dims[1] = D2_dim; - i222_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i222", NC_INT, RANK_i222, i222_dims, &i222_id); - check_err(stat,__LINE__,__FILE__); - - f223_dims[0] = D2_dim; - f223_dims[1] = D2_dim; - f223_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f223", NC_FLOAT, RANK_f223, f223_dims, &f223_id); - check_err(stat,__LINE__,__FILE__); - - c231_dims[0] = D2_dim; - c231_dims[1] = D3_dim; - c231_dims[2] = D1_dim; - stat = nc_def_var(ncid, "c231", NC_CHAR, RANK_c231, c231_dims, &c231_id); - check_err(stat,__LINE__,__FILE__); - - b232_dims[0] = D2_dim; - b232_dims[1] = D3_dim; - b232_dims[2] = D2_dim; - stat = nc_def_var(ncid, "b232", NC_BYTE, RANK_b232, b232_dims, &b232_id); - check_err(stat,__LINE__,__FILE__); - - s233_dims[0] = D2_dim; - s233_dims[1] = D3_dim; - s233_dims[2] = D3_dim; - stat = nc_def_var(ncid, "s233", NC_SHORT, RANK_s233, s233_dims, &s233_id); - check_err(stat,__LINE__,__FILE__); - - s311_dims[0] = D3_dim; - s311_dims[1] = D1_dim; - s311_dims[2] = D1_dim; - stat = nc_def_var(ncid, "s311", NC_SHORT, RANK_s311, s311_dims, &s311_id); - check_err(stat,__LINE__,__FILE__); - - i312_dims[0] = D3_dim; - i312_dims[1] = D1_dim; - i312_dims[2] = D2_dim; - stat = nc_def_var(ncid, "i312", NC_INT, RANK_i312, i312_dims, &i312_id); - check_err(stat,__LINE__,__FILE__); - - f313_dims[0] = D3_dim; - f313_dims[1] = D1_dim; - f313_dims[2] = D3_dim; - stat = nc_def_var(ncid, "f313", NC_FLOAT, RANK_f313, f313_dims, &f313_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var-name-dashes", NC_DOUBLE, RANK_var_MINUS_name_MINUS_dashes, 0, &var_MINUS_name_MINUS_dashes_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var.name.dots", NC_DOUBLE, RANK_var_PERIOD_name_PERIOD_dots, 0, &var_PERIOD_name_PERIOD_dots_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var+name+plusses", NC_DOUBLE, RANK_var_PLUS_name_PLUS_plusses, 0, &var_PLUS_name_PLUS_plusses_id); - check_err(stat,__LINE__,__FILE__); - - stat = nc_def_var(ncid, "var@name@ats", NC_DOUBLE, RANK_var_ATSIGN_name_ATSIGN_ats, 0, &var_ATSIGN_name_ATSIGN_ats_id); - check_err(stat,__LINE__,__FILE__); - - /* assign attributes */ - c_att_MINUS_name_MINUS_dashes[0] = 4; - stat = nc_put_att_int(ncid, c_id, "att-name-dashes", NC_INT, 1, c_att_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - c_att_PERIOD_name_PERIOD_dots[0] = 5; - stat = nc_put_att_int(ncid, c_id, "att.name.dots", NC_INT, 1, c_att_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - c_att_PLUS_name_PLUS_plusses[0] = 6; - stat = nc_put_att_int(ncid, c_id, "att+name+plusses", NC_INT, 1, c_att_PLUS_name_PLUS_plusses); - check_err(stat,__LINE__,__FILE__); - c_att_ATSIGN_name_ATSIGN_ats[0] = 7; - stat = nc_put_att_int(ncid, c_id, "att@name@ats", NC_INT, 1, c_att_ATSIGN_name_ATSIGN_ats); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, b_id, "c", 1, ""); - check_err(stat,__LINE__,__FILE__); - s_b[0] = 0; - s_b[1] = 127; - s_b[2] = -128; - s_b[3] = -1; - stat = nc_put_att_int(ncid, s_id, "b", NC_BYTE, 4, s_b); - check_err(stat,__LINE__,__FILE__); - s_s[0] = -32768; - s_s[1] = 0; - s_s[2] = 32767; - stat = nc_put_att_short(ncid, s_id, "s", NC_SHORT, 3, s_s); - check_err(stat,__LINE__,__FILE__); - i_i[0] = -2147483647; - i_i[1] = 0; - i_i[2] = 2147483647; - stat = nc_put_att_int(ncid, i_id, "i", NC_INT, 3, i_i); - check_err(stat,__LINE__,__FILE__); - i_f[0] = -9.9999996e+35; - i_f[1] = 0; - i_f[2] = 9.9999996e+35; - stat = nc_put_att_float(ncid, i_id, "f", NC_FLOAT, 3, i_f); - check_err(stat,__LINE__,__FILE__); - i_d[0] = -1e+308; - i_d[1] = 0; - i_d[2] = 1e+308; - stat = nc_put_att_double(ncid, i_id, "d", NC_DOUBLE, 3, i_d); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, f_id, "c", 1, "x"); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, d_id, "c", 8, "abcd\tZ$&"); - check_err(stat,__LINE__,__FILE__); - stat = nc_put_att_text(ncid, NC_GLOBAL, "Gc", 1, ""); - check_err(stat,__LINE__,__FILE__); - cdf_Gb[0] = -128; - cdf_Gb[1] = 127; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gb", NC_BYTE, 2, cdf_Gb); - check_err(stat,__LINE__,__FILE__); - cdf_Gs[0] = -32768; - cdf_Gs[1] = 0; - cdf_Gs[2] = 32767; - stat = nc_put_att_short(ncid, NC_GLOBAL, "Gs", NC_SHORT, 3, cdf_Gs); - check_err(stat,__LINE__,__FILE__); - cdf_Gi[0] = -2147483647; - cdf_Gi[1] = 0; - cdf_Gi[2] = 2147483647; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gi", NC_INT, 3, cdf_Gi); - check_err(stat,__LINE__,__FILE__); - cdf_Gf[0] = -9.9999996e+35; - cdf_Gf[1] = 0; - cdf_Gf[2] = 9.9999996e+35; - stat = nc_put_att_float(ncid, NC_GLOBAL, "Gf", NC_FLOAT, 3, cdf_Gf); - check_err(stat,__LINE__,__FILE__); - cdf_Gd[0] = -1e+308; - cdf_Gd[1] = 0; - cdf_Gd[2] = 1e+308; - stat = nc_put_att_double(ncid, NC_GLOBAL, "Gd", NC_DOUBLE, 3, cdf_Gd); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_MINUS_name_MINUS_dashes[0] = -1; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt-name-dashes", NC_INT, 1, cdf_Gatt_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_PERIOD_name_PERIOD_dots[0] = -2; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt.name.dots", NC_INT, 1, cdf_Gatt_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_PLUS_name_PLUS_plusses[0] = -3; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt+name+plusses", NC_INT, 1, cdf_Gatt_PLUS_name_PLUS_plusses); - check_err(stat,__LINE__,__FILE__); - cdf_Gatt_ATSIGN_name_ATSIGN_ats[0] = -4; - stat = nc_put_att_int(ncid, NC_GLOBAL, "Gatt@name@ats", NC_INT, 1, cdf_Gatt_ATSIGN_name_ATSIGN_ats); - check_err(stat,__LINE__,__FILE__); - - /* leave define mode */ - stat = nc_enddef (ncid); - check_err(stat,__LINE__,__FILE__); - - { /* store c */ - static char c = '2'; - stat = nc_put_var_text(ncid, c_id, &c); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b */ - static signed char b = -2; - stat = nc_put_var_schar(ncid, b_id, &b); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s */ - static short s = -5; - stat = nc_put_var_short(ncid, s_id, &s); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i */ - static int i = -20; - stat = nc_put_var_int(ncid, i_id, &i); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f */ - static float f = -9; - stat = nc_put_var_float(ncid, f_id, &f); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d */ - static double d = -10.; - stat = nc_put_var_double(ncid, d_id, &d); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr */ - static size_t cr_start[RANK_cr]; - static size_t cr_count[RANK_cr]; - static char cr[] = {"ab"}; - Dr_len = 2; /* number of records of cr data */ - cr_start[0] = 0; - cr_count[0] = Dr_len; - stat = nc_put_vara_text(ncid, cr_id, cr_start, cr_count, cr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br */ - static size_t br_start[RANK_br]; - static size_t br_count[RANK_br]; - static signed char br[] = {-128, 127}; - Dr_len = 2; /* number of records of br data */ - br_start[0] = 0; - br_count[0] = Dr_len; - stat = nc_put_vara_schar(ncid, br_id, br_start, br_count, br); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr */ - static size_t sr_start[RANK_sr]; - static size_t sr_count[RANK_sr]; - static short sr[] = {-32768, 32767}; - Dr_len = 2; /* number of records of sr data */ - sr_start[0] = 0; - sr_count[0] = Dr_len; - stat = nc_put_vara_short(ncid, sr_id, sr_start, sr_count, sr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store ir */ - static size_t ir_start[RANK_ir]; - static size_t ir_count[RANK_ir]; - static int ir[] = {-2147483646, 2147483647}; - Dr_len = 2; /* number of records of ir data */ - ir_start[0] = 0; - ir_count[0] = Dr_len; - stat = nc_put_vara_int(ncid, ir_id, ir_start, ir_count, ir); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr */ - static size_t fr_start[RANK_fr]; - static size_t fr_count[RANK_fr]; - static float fr[] = {-9.9999996e+35, 9.9999996e+35}; - Dr_len = 2; /* number of records of fr data */ - fr_start[0] = 0; - fr_count[0] = Dr_len; - stat = nc_put_vara_float(ncid, fr_id, fr_start, fr_count, fr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store dr */ - static size_t dr_start[RANK_dr]; - static size_t dr_count[RANK_dr]; - static double dr[] = {-1.e+308, 1.e+308}; - Dr_len = 2; /* number of records of dr data */ - dr_start[0] = 0; - dr_count[0] = Dr_len; - stat = nc_put_vara_double(ncid, dr_id, dr_start, dr_count, dr); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c1 */ - static char c1[] = {""}; - stat = nc_put_var_text(ncid, c1_id, c1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b1 */ - static signed char b1[] = {-128}; - stat = nc_put_var_schar(ncid, b1_id, b1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s1 */ - static short s1[] = {-32768}; - stat = nc_put_var_short(ncid, s1_id, s1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i1 */ - static int i1[] = {-2147483646}; - stat = nc_put_var_int(ncid, i1_id, i1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f1 */ - static float f1[] = {-9.9999996e+35}; - stat = nc_put_var_float(ncid, f1_id, f1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d1 */ - static double d1[] = {-1.e+308}; - stat = nc_put_var_double(ncid, d1_id, d1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c2 */ - static char c2[] = {"ab"}; - stat = nc_put_var_text(ncid, c2_id, c2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b2 */ - static signed char b2[] = {-128, 127}; - stat = nc_put_var_schar(ncid, b2_id, b2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s2 */ - static short s2[] = {-32768, 32767}; - stat = nc_put_var_short(ncid, s2_id, s2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i2 */ - static int i2[] = {-2147483646, 2147483647}; - stat = nc_put_var_int(ncid, i2_id, i2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f2 */ - static float f2[] = {-9.9999996e+35, 9.9999996e+35}; - stat = nc_put_var_float(ncid, f2_id, f2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d2 */ - static double d2[] = {-1.e+308, 1.e+308}; - stat = nc_put_var_double(ncid, d2_id, d2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c3 */ - static char c3[] = {"\001\177."}; - stat = nc_put_var_text(ncid, c3_id, c3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b3 */ - static signed char b3[] = {-128, 127, -1}; - stat = nc_put_var_schar(ncid, b3_id, b3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s3 */ - static short s3[] = {-32768, 0, 32767}; - stat = nc_put_var_short(ncid, s3_id, s3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i3 */ - static int i3[] = {-2147483646, 0, 2147483647}; - stat = nc_put_var_int(ncid, i3_id, i3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f3 */ - static float f3[] = {-9.9999996e+35, 0, 9.9999996e+35}; - stat = nc_put_var_float(ncid, f3_id, f3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d3 */ - static double d3[] = {-1.e+308, 0., 1.e+308}; - stat = nc_put_var_double(ncid, d3_id, d3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr1 */ - static size_t cr1_start[RANK_cr1]; - static size_t cr1_count[RANK_cr1]; - static char cr1[] = {"xy"}; - Dr_len = 2; /* number of records of cr1 data */ - cr1_start[0] = 0; - cr1_start[1] = 0; - cr1_count[0] = Dr_len; - cr1_count[1] = D1_len; - stat = nc_put_vara_text(ncid, cr1_id, cr1_start, cr1_count, cr1); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br2 */ - static size_t br2_start[RANK_br2]; - static size_t br2_count[RANK_br2]; - static signed char br2[] = {-24, -26, -20, -22}; - Dr_len = 2; /* number of records of br2 data */ - br2_start[0] = 0; - br2_start[1] = 0; - br2_count[0] = Dr_len; - br2_count[1] = D2_len; - stat = nc_put_vara_schar(ncid, br2_id, br2_start, br2_count, br2); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr3 */ - static size_t sr3_start[RANK_sr3]; - static size_t sr3_count[RANK_sr3]; - static short sr3[] = {-375, -380, -385, -350, -355, -360}; - Dr_len = 2; /* number of records of sr3 data */ - sr3_start[0] = 0; - sr3_start[1] = 0; - sr3_count[0] = Dr_len; - sr3_count[1] = D3_len; - stat = nc_put_vara_short(ncid, sr3_id, sr3_start, sr3_count, sr3); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f11 */ - static float f11[] = {-2187}; - stat = nc_put_var_float(ncid, f11_id, f11); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d12 */ - static double d12[] = {-3000., -3010.}; - stat = nc_put_var_double(ncid, d12_id, d12); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c13 */ - static char c13[] = {"\tb\177"}; - stat = nc_put_var_text(ncid, c13_id, c13); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s21 */ - static short s21[] = {-375, -350}; - stat = nc_put_var_short(ncid, s21_id, s21); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i22 */ - static int i22[] = {-24000, -24020, -23600, -23620}; - stat = nc_put_var_int(ncid, i22_id, i22); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f23 */ - static float f23[] = {-2187, -2196, -2205, -2106, -2115, -2124}; - stat = nc_put_var_float(ncid, f23_id, f23); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c31 */ - static char c31[] = {"+- "}; - stat = nc_put_var_text(ncid, c31_id, c31); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b32 */ - static signed char b32[] = {-24, -26, -20, -22, -16, -18}; - stat = nc_put_var_schar(ncid, b32_id, b32); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s33 */ - static short s33[] = {-375, -380, -385, -350, -355, -360, -325, -330, -335}; - stat = nc_put_var_short(ncid, s33_id, s33); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr11 */ - static size_t sr11_start[RANK_sr11]; - static size_t sr11_count[RANK_sr11]; - static short sr11[] = {2500, 2375}; - Dr_len = 2; /* number of records of sr11 data */ - sr11_start[0] = 0; - sr11_start[1] = 0; - sr11_start[2] = 0; - sr11_count[0] = Dr_len; - sr11_count[1] = D1_len; - sr11_count[2] = D1_len; - stat = nc_put_vara_short(ncid, sr11_id, sr11_start, sr11_count, sr11); - check_err(stat,__LINE__,__FILE__); - } - - { /* store ir12 */ - static size_t ir12_start[RANK_ir12]; - static size_t ir12_count[RANK_ir12]; - static int ir12[] = {640000, 639980, 632000, 631980}; - Dr_len = 2; /* number of records of ir12 data */ - ir12_start[0] = 0; - ir12_start[1] = 0; - ir12_start[2] = 0; - ir12_count[0] = Dr_len; - ir12_count[1] = D1_len; - ir12_count[2] = D2_len; - stat = nc_put_vara_int(ncid, ir12_id, ir12_start, ir12_count, ir12); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr13 */ - static size_t fr13_start[RANK_fr13]; - static size_t fr13_count[RANK_fr13]; - static float fr13[] = {26244, 26235, 26226, 25515, 25506, 25497}; - Dr_len = 2; /* number of records of fr13 data */ - fr13_start[0] = 0; - fr13_start[1] = 0; - fr13_start[2] = 0; - fr13_count[0] = Dr_len; - fr13_count[1] = D1_len; - fr13_count[2] = D3_len; - stat = nc_put_vara_float(ncid, fr13_id, fr13_start, fr13_count, fr13); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr21 */ - static size_t cr21_start[RANK_cr21]; - static size_t cr21_count[RANK_cr21]; - static char cr21[] = {"@DHL"}; - Dr_len = 2; /* number of records of cr21 data */ - cr21_start[0] = 0; - cr21_start[1] = 0; - cr21_start[2] = 0; - cr21_count[0] = Dr_len; - cr21_count[1] = D2_len; - cr21_count[2] = D1_len; - stat = nc_put_vara_text(ncid, cr21_id, cr21_start, cr21_count, cr21); - check_err(stat,__LINE__,__FILE__); - } - - { /* store br22 */ - static size_t br22_start[RANK_br22]; - static size_t br22_count[RANK_br22]; - static signed char br22[] = {64, 62, 68, 66, 56, 54, 60, 58}; - Dr_len = 2; /* number of records of br22 data */ - br22_start[0] = 0; - br22_start[1] = 0; - br22_start[2] = 0; - br22_count[0] = Dr_len; - br22_count[1] = D2_len; - br22_count[2] = D2_len; - stat = nc_put_vara_schar(ncid, br22_id, br22_start, br22_count, br22); - check_err(stat,__LINE__,__FILE__); - } - - { /* store sr23 */ - static size_t sr23_start[RANK_sr23]; - static size_t sr23_count[RANK_sr23]; - static short sr23[] = {2500, 2495, 2490, 2525, 2520, 2515, 2375, 2370, 2365, 2400, 2395, 2390}; - Dr_len = 2; /* number of records of sr23 data */ - sr23_start[0] = 0; - sr23_start[1] = 0; - sr23_start[2] = 0; - sr23_count[0] = Dr_len; - sr23_count[1] = D2_len; - sr23_count[2] = D3_len; - stat = nc_put_vara_short(ncid, sr23_id, sr23_start, sr23_count, sr23); - check_err(stat,__LINE__,__FILE__); - } - - { /* store fr31 */ - static size_t fr31_start[RANK_fr31]; - static size_t fr31_count[RANK_fr31]; - static float fr31[] = {26244, 26325, 26406, 25515, 25596, 25677}; - Dr_len = 2; /* number of records of fr31 data */ - fr31_start[0] = 0; - fr31_start[1] = 0; - fr31_start[2] = 0; - fr31_count[0] = Dr_len; - fr31_count[1] = D3_len; - fr31_count[2] = D1_len; - stat = nc_put_vara_float(ncid, fr31_id, fr31_start, fr31_count, fr31); - check_err(stat,__LINE__,__FILE__); - } - - { /* store dr32 */ - static size_t dr32_start[RANK_dr32]; - static size_t dr32_count[RANK_dr32]; - static double dr32[] = {40000., 39990., 40100., 40090., 40200., 40190., 39000., 38990., 39100., 39090., 39200., 39190.}; - Dr_len = 2; /* number of records of dr32 data */ - dr32_start[0] = 0; - dr32_start[1] = 0; - dr32_start[2] = 0; - dr32_count[0] = Dr_len; - dr32_count[1] = D3_len; - dr32_count[2] = D2_len; - stat = nc_put_vara_double(ncid, dr32_id, dr32_start, dr32_count, dr32); - check_err(stat,__LINE__,__FILE__); - } - - { /* store cr33 */ - static size_t cr33_start[RANK_cr33]; - static size_t cr33_count[RANK_cr33]; - static char cr33[] = {"1\000\000two3\000\0004\000\0005\000\000six"}; - Dr_len = 2; /* number of records of cr33 data */ - cr33_start[0] = 0; - cr33_start[1] = 0; - cr33_start[2] = 0; - cr33_count[0] = Dr_len; - cr33_count[1] = D3_len; - cr33_count[2] = D3_len; - stat = nc_put_vara_text(ncid, cr33_id, cr33_start, cr33_count, cr33); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c111 */ - static char c111[] = {"@"}; - stat = nc_put_var_text(ncid, c111_id, c111); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b112 */ - static signed char b112[] = {64, 62}; - stat = nc_put_var_schar(ncid, b112_id, b112); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s113 */ - static short s113[] = {2500, 2495, 2490}; - stat = nc_put_var_short(ncid, s113_id, s113); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f121 */ - static float f121[] = {26244, 26325}; - stat = nc_put_var_float(ncid, f121_id, f121); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d122 */ - static double d122[] = {40000., 39990., 40100., 40090.}; - stat = nc_put_var_double(ncid, d122_id, d122); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c123 */ - static char c123[] = {"one2\000\000"}; - stat = nc_put_var_text(ncid, c123_id, c123); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s131 */ - static short s131[] = {2500, 2525, 2550}; - stat = nc_put_var_short(ncid, s131_id, s131); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i132 */ - static int i132[] = {640000, 639980, 640400, 640380, 640800, 640780}; - stat = nc_put_var_int(ncid, i132_id, i132); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f133 */ - static float f133[] = {26244, 26235, 26226, 26325, 26316, 26307, 26406, 26397, 26388}; - stat = nc_put_var_float(ncid, f133_id, f133); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f211 */ - static float f211[] = {26244, 25515}; - stat = nc_put_var_float(ncid, f211_id, f211); - check_err(stat,__LINE__,__FILE__); - } - - { /* store d212 */ - static double d212[] = {40000., 39990., 39000., 38990.}; - stat = nc_put_var_double(ncid, d212_id, d212); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s221 */ - static short s221[] = {2500, 2525, 2375, 2400}; - stat = nc_put_var_short(ncid, s221_id, s221); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i222 */ - static int i222[] = {640000, 639980, 640400, 640380, 632000, 631980, 632400, 632380}; - stat = nc_put_var_int(ncid, i222_id, i222); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f223 */ - static float f223[] = {26244, 26235, 26226, 26325, 26316, 26307, 25515, 25506, 25497, 25596, 25587, 25578}; - stat = nc_put_var_float(ncid, f223_id, f223); - check_err(stat,__LINE__,__FILE__); - } - - { /* store c231 */ - static char c231[] = {"@DHHLP"}; - stat = nc_put_var_text(ncid, c231_id, c231); - check_err(stat,__LINE__,__FILE__); - } - - { /* store b232 */ - static signed char b232[] = {64, 62, 68, 66, 72, 70, 56, 54, 60, 58, 64, 62}; - stat = nc_put_var_schar(ncid, b232_id, b232); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s233 */ - static short s233[] = {2500, 2495, 2490, 2525, 2520, 2515, 2550, 2545, 2540, 2375, 2370, 2365, 2400, 2395, 2390, 2425, 2420, 2415}; - stat = nc_put_var_short(ncid, s233_id, s233); - check_err(stat,__LINE__,__FILE__); - } - - { /* store s311 */ - static short s311[] = {2500, 2375, 2250}; - stat = nc_put_var_short(ncid, s311_id, s311); - check_err(stat,__LINE__,__FILE__); - } - - { /* store i312 */ - static int i312[] = {640000, 639980, 632000, 631980, 624000, 623980}; - stat = nc_put_var_int(ncid, i312_id, i312); - check_err(stat,__LINE__,__FILE__); - } - - { /* store f313 */ - static float f313[] = {26244, 26235, 26226, 25515, 25506, 25497, 24786, 24777, 24768}; - stat = nc_put_var_float(ncid, f313_id, f313); - check_err(stat,__LINE__,__FILE__); - } - - { /* store var-name-dashes */ - static double var_MINUS_name_MINUS_dashes = -1.; - stat = nc_put_var_double(ncid, var_MINUS_name_MINUS_dashes_id, &var_MINUS_name_MINUS_dashes); - check_err(stat,__LINE__,__FILE__); - } - - { /* store var.name.dots */ - static double var_PERIOD_name_PERIOD_dots = -2.; - stat = nc_put_var_double(ncid, var_PERIOD_name_PERIOD_dots_id, &var_PERIOD_name_PERIOD_dots); - check_err(stat,__LINE__,__FILE__); - } - stat = nc_close(ncid); - check_err(stat,__LINE__,__FILE__); - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/ncdump/run_tests.sh b/contrib/netcdf/4.4.1.1/ncdump/run_tests.sh deleted file mode 100755 index cbf9c0aeeba..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/run_tests.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs the ncdump tests. -# $Id: run_tests.sh,v 1.18 2010/05/19 13:43:39 ed Exp $ - -set -e - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "" -echo "*** Testing ncgen and ncdump using some test CDL files." -echo "*** creating tst_small.nc from ref_tst_small.cdl..." -../ncgen/ncgen -b -o tst_small.nc $srcdir/ref_tst_small.cdl -echo "*** creating tst_small.cdl from tst_small.nc..." -./ncdump tst_small.nc > tst_small.cdl -diff -b -w tst_small.cdl $srcdir/ref_tst_small.cdl - -echo "*** creating test0.nc from test0.cdl..." -../ncgen/ncgen -b $srcdir/test0.cdl -echo "*** creating test1.cdl from test0.nc..." -./ncdump -n test1 test0.nc > test1.cdl -echo "*** creating test1.nc from test1.cdl..." -../ncgen/ncgen -b test1.cdl -echo "*** creating test2.cdl from test1.nc..." -./ncdump test1.nc > test2.cdl -echo "*** checking that test1.cdl and test2.cdl are the same..." -diff -b -w test1.cdl test2.cdl - -echo "*** All tests of ncgen and ncdump using test0.cdl passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/run_utf8_nc4_tests.sh b/contrib/netcdf/4.4.1.1/ncdump/run_utf8_nc4_tests.sh deleted file mode 100755 index 000d808c6c5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/run_utf8_nc4_tests.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# -# Moving some netcdf-4 only tests here, out of tst_nccopy and run_utf8_tests. -# Without this, the tests fail when netcdf-4 is disabled. - -set -e -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -export srcdir -echo "" - -rm -f utf8.nc utf8.cdl -echo "*** creating enhanced file with utf8 characters..." -../ncgen/ncgen -4 -b -o utf8.nc ${srcdir}/ref_tst_utf8_4.cdl -echo "*** dump and compare utf8 output..." -./ncdump utf8.nc > utf8.cdl -diff -b -w utf8.cdl ${srcdir}/ref_tst_utf8_4.cdl diff --git a/contrib/netcdf/4.4.1.1/ncdump/run_utf8_tests.sh b/contrib/netcdf/4.4.1.1/ncdump/run_utf8_tests.sh deleted file mode 100755 index a40951355a0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/run_utf8_tests.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs ncdump tests relating to the new UTF8 name stuff. -# $Id:$ - -set -e -echo "" -echo "*** Testing ncgen and ncdump for UTF8 support..." - -if test "x$builddir" = x ; then -builddir="." -fi -if test "x$srcdir" = x ; then -srcdir="." -fi - -rm -f utf8.nc utf8.cdl -echo "*** creating classic offset file with utf8 characters..." -../ncgen/ncgen -b -o utf8.nc ${srcdir}/ref_tst_utf8.cdl -echo "*** dump and compare utf8 output..." -./ncdump utf8.nc > utf8.cdl -diff -b -w utf8.cdl ${srcdir}/ref_tst_utf8.cdl - -rm -f utf8.nc utf8.cdl -echo "*** creating 64-bit offset file with utf8 characters..." -../ncgen/ncgen -k 64-bit-offset -b -o utf8.nc ${srcdir}/ref_tst_utf8.cdl -echo "*** (64 bit) dump and compare utf8 output..." -./ncdump utf8.nc > utf8.cdl -diff -b -w utf8.cdl ${srcdir}/ref_tst_utf8.cdl - -echo "*** dumping tst_utf8.nc to tst_utf8.cdl..." -rm -f tst8.cdl -sed -e 's/^netcdf tst_unicode/netcdf tst_utf8/' <${srcdir}/ref_tst_unicode.cdl >tst8.cdl -./ncdump tst_utf8.nc > tst_utf8.cdl -echo "*** comparing tst_utf8.cdl with tst8.cdl..." -diff -b -w tst_utf8.cdl tst8.cdl -rm -f tst8.cdl result -echo "*** All utf8 tests of ncgen and ncdump passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_64bit.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_64bit.sh deleted file mode 100755 index b8e871ebe04..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_64bit.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs the ncdump tests. -# $Id: tst_64bit.sh,v 1.9 2006/03/04 18:50:15 ed Exp $ - -echo "" -echo "*** Testing ncgen and ncdump with 64-bit offset format." -set -e -echo "*** creating test0.nc from test0.cdl..." -../ncgen/ncgen -b -k2 $srcdir/test0.cdl -echo "*** creating test1.cdl from test0.nc..." -./ncdump -n test1 test0.nc > test1.cdl -echo "*** creating test1.nc from test1.cdl..." -../ncgen/ncgen -b -k2 test1.cdl -echo "*** creating test2.cdl from test1.nc..." -./ncdump test1.nc > test2.cdl -cmp test1.cdl test2.cdl -echo "*** All ncgen and ncdump with 64-bit offset format tests passed!" - -echo "" -echo "*** Testing ncgen and ncdump with CDF5 format." -set -e -echo "*** creating test0.nc from test0.cdl..." -../ncgen/ncgen -b -k5 $srcdir/test0.cdl -echo "*** creating test1.cdl from test0.nc..." -./ncdump -n test1 test0.nc > test1.cdl -echo "*** creating test1.nc from test1.cdl..." -../ncgen/ncgen -b -k5 test1.cdl -echo "*** creating test2.cdl from test1.nc..." -./ncdump test1.nc > test2.cdl -cmp test1.cdl test2.cdl -echo "*** All ncgen and ncdump with CDF5 format tests passed!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_bom.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_bom.sh deleted file mode 100755 index 53d2f89b116..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_bom.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests BOM support in ncgen - -set -e - -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -# add hack for sunos -export srcdir; - -echo "" - -rm -f tst_bom.cdl tmp.cdl tst_bom8.* tst_bom16.* - -cat <>tst_bom.cdl -netcdf tst_bom { -variables: - float f; -data: - - f = 1; -} -EOF - -echo "*** Generate a cdl file with leading UTF-8 BOM." -./bom 8 >tst_bom8.cdl -cat tst_bom.cdl >> tst_bom8.cdl - -echo "*** Verify .nc file" -../ncgen/ncgen -k nc3 -o tst_bom8.nc tst_bom8.cdl -../ncdump/ncdump -n tst_bom tst_bom8.nc > tmp.cdl -diff -w tst_bom.cdl tmp.cdl - -# Do it again but with Big-Endian 16; should fail - -rm -f tmp.cdl tst_bom8.* tst_bom16.* - -echo "*** Generate a cdl file with leading UTF-16 BOM." -./bom 16 >tst_bom16.cdl -cat tst_bom.cdl >> tst_bom16.cdl - -echo "*** Verify UTF-16 file fails" -if ../ncgen/ncgen -k nc3 -o tst_bom16.nc tst_bom16.cdl ; then -echo 'BOM Big Endian 16 succeeded, but should not' -exit 1 -else -echo '***XFAIL : BOM Big Endian 16' -fi - -# Cleanup -rm -f tst_bom.cdl tmp.cdl tst_bom8.* tst_bom16.* - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_calendars.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_calendars.sh deleted file mode 100755 index 8d2313f117a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_calendars.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests ncdump -t option for CF calendar attributes -# $Id $ - -set -e -echo "" -echo "*** Testing ncdump -t output for times with CF calendar attribute" -echo "*** creating netcdf file tst_calendars.nc from tst_calendars.cdl..." -../ncgen/ncgen -b -o tst_calendars.nc $srcdir/tst_calendars.cdl -echo "*** creating tst_times.cdl from tst_calendars.nc with ncdump -t ..." -./ncdump -n tst_times -t tst_calendars.nc > tst_times.cdl -echo "*** comparing tst_times.cdl with ref_times.cdl..." -diff -b tst_times.cdl $srcdir/ref_times.cdl -echo "*** All ncdump test output for -t option with CF calendar atts passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_charfill.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_charfill.sh deleted file mode 100755 index 96b790965e3..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_charfill.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs an ncgen buf in handling character _Fillvalue. -set -e -echo "" -echo "*** Testing char _Fillvalue bug fix." - -# echo "*** Create tst_charfill.nc from tst_charfill.cdl..." -rm -f tst_charfill.nc tmp_tst_charfill.cdl -../ncgen/ncgen -b -o tst_charfill.nc $srcdir/tst_charfill.cdl -# echo "*** dumping tst_charfill.nc to tmp_tst_charfill.cdl..." -./ncdump tst_charfill.nc > tmp_tst_charfill.cdl -# echo "*** comparing tmp_tst_charfill.cdl with ref_tst_charfill.cdl..." -diff -b tmp_tst_charfill.cdl $srcdir/ref_tst_charfill.cdl - -echo "*** All char _Fillvalue bug test for netCDF-4 format passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_chunking.c b/contrib/netcdf/4.4.1.1/ncdump/tst_chunking.c deleted file mode 100644 index 17e59100c72..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_chunking.c +++ /dev/null @@ -1,51 +0,0 @@ -/* This is part of the netCDF package. Copyright 2010 University - Corporation for Atmospheric Research/Unidata. See COPYRIGHT file for - conditions of use. See www.unidata.ucar.edu for more info. - - Create a chunkable test file for nccopy to test chunking. - - $Id$ -*/ - -#include -#include -#include "err_macros.h" - -#define FILE_NAME "tst_chunking.nc" -#define VAR_RANK 7 -#define IVAR_NAME "ivar" -#define FVAR_NAME "fvar" -#define NVALS 45360 /* 7 * 4 * 2 * 3 * 5 * 6 * 9 */ - -int -main(int argc, char **argv) { - int ncid; - int ivarid, fvarid; - char *dim_names[VAR_RANK] = {"dim0", "dim1", "dim2", "dim3", "dim4", "dim5", "dim6"}; - size_t dim_lens[VAR_RANK] = {7, 4, 2, 3, 5, 6, 9}; - int ivar_dims[VAR_RANK]; - int fvar_dims[VAR_RANK]; - int ivar_data[NVALS]; - float fvar_data[NVALS]; - int r, i; - - printf("*** Creating chunkable test file %s...", FILE_NAME); - - if (nc_create(FILE_NAME, NC_CLOBBER, &ncid)) ERR; - for(r = 0; r < VAR_RANK; r++) { - if (nc_def_dim(ncid, dim_names[r], dim_lens[r], &ivar_dims[r])) ERR; - fvar_dims[VAR_RANK - 1 - r] = ivar_dims[r]; - } - if (nc_def_var(ncid, IVAR_NAME, NC_INT, VAR_RANK, ivar_dims, &ivarid)) ERR; - if (nc_def_var(ncid, FVAR_NAME, NC_FLOAT, VAR_RANK, fvar_dims, &fvarid)) ERR; - if (nc_enddef (ncid)) ERR; - for(i=0; i < NVALS; i++) { - ivar_data[i] = i; - fvar_data[i] = NVALS - i; - } - if (nc_put_var(ncid, ivarid, ivar_data)) ERR; - if (nc_put_var(ncid, fvarid, fvar_data)) ERR; - if (nc_close(ncid)) ERR; - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_dimsizes.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_dimsizes.sh deleted file mode 100755 index 521a707a03c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_dimsizes.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -echo "*** Test Maximum dimension sizes X mode" - -set -x - -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests max dimension sizes X mode - -RETURN=0 - -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -# add hack for sunos -export srcdir; - -echo "" - -rm -f tst_dimsize_classic.nc tst_dimsize_64offset.nc tst_dimsize_64data.nc - -echo "*** Generate: tst_dimsize_classic.nc tst_dimsize_64offset.nc tst_dimsize_64data.nc" -./tst_dimsizes - -echo "*** Verify that ncdump can read dimsizes" - -rm -fr ./tmp -if ../ncdump/ncdump -h tst_dimsize_classic.nc > ./tmp ; then -echo "*** PASS: ncdump tst_dimsize_classic.nc" -else -echo "*** FAIL: ncdump tst_dimsize_classic.nc" -RETURN=1 -fi - -rm -fr ./tmp -if ../ncdump/ncdump -h tst_dimsize_64offset.nc > ./tmp ; then -echo "*** PASS: ncdump tst_dimsize_64offset.nc" -else -echo "*** FAIL: ncdump tst_dimsize_64offset.nc" -RETURN=1 -fi - -if test -f tst_dimsize_64data.nc ; then - rm -fr ./tmp - if ../ncdump/ncdump -h tst_dimsize_64data.nc > ./tmp ; then - echo "*** PASS: ncdump tst_dimsize_64data.nc" - else - echo "*** FAIL: ncdump tst_dimsize_64data.nc" - RETURN=1 - fi -fi - -# Cleanup -rm -f tmp tst_dimsize_classic.nc tst_dimsize_64offset.nc tst_dimsize_64data.nc - -exit $RETURN - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_fileinfo.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_fileinfo.sh deleted file mode 100755 index f1f2254f293..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_fileinfo.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -set -e -echo "" - -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -# Make srcdir be absolute -cd $srcdir -srcdir=`pwd` - -cd $builddir - -export verbose -export srcdir -export builddir - -EXIT=0 - -NCF=$srcdir/nc4_fileinfo.nc -HDF=$srcdir/hdf5_fileinfo.hdf -NF=ref_tst_compounds4.nc - -# Do a false negative test -rm -f ./tmp -if $builddir/ncdump -s $builddir/$NF | fgrep '_IsNetcdf4 = 0' > ./tmp ; then - echo "Pass: False negative for file: $NF" -else - echo "FAIL: False negative for file: $NF" -fi -rm -f ./tmp - -if ./tst_fileinfo > /dev/null ; then - # look at the _IsNetcdf4 flag - N_IS=`${builddir}/ncdump -s $NCF | fgrep '_IsNetcdf4' | tr -d ' ;'` - N_IS=`echo $N_IS | cut -d= -f2` - H_IS=`${builddir}/ncdump -s $HDF | fgrep '_IsNetcdf4' | tr -d ' ;'` - H_IS=`echo $H_IS | cut -d= -f2` - if test "x$N_IS" = 'x0' ;then - echo "FAIL: $NCF is marked as not netcdf-4" - fi - if test "x$H_IS" = 'x1' ;then - echo "FAIL: $HDF is marked as netcdf-4" - fi -else -echo "FAIL: tst_fileinfo" -EXIT=1 -fi - -rm -f $NCF -rm -f $HDF - -exit $EXIT - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_fillbug.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_fillbug.sh deleted file mode 100755 index 90361a02e63..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_fillbug.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs an ncdump bug test for netcdf-4 -# $Id: tst_fillbug.sh,v 1.1 2008/10/02 19:49:52 russ Exp $ - -set -e -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -export srcdir - - - -echo "" -echo "*** Running ncdump bug test." - -# echo "*** dumping tst_fillbug.nc to tst_fillbug.cdl..." -./ncdump tst_fillbug.nc > tst_fillbug.cdl -# echo "*** comparing tst_fillbug.cdl with ref_tst_fillbug.cdl..." -diff -b tst_fillbug.cdl $srcdir/ref_tst_fillbug.cdl - -echo "*** All ncdump bug test output for netCDF-4 format passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_formatx3.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_formatx3.sh deleted file mode 100755 index 8105ec6f8dd..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_formatx3.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests the output several previous tests. -# $Id: tst_output.sh,v 1.17 2010/05/14 16:21:15 ed Exp $ - - -if test "x$srcdir" = x ; then -srcdir="." -fi - -ECODE=0 - -echo "" -echo "*** Testing extended file format output." -set -e -echo "Test extended format output for a netcdf-3 file" -rm -f tmp -../ncgen/ncgen -k nc3 -b -o ./test.nc $srcdir/ref_tst_small.cdl -./ncdump -K test.nc >tmp -if ! grep 'classic mode=00000000' tmp -if ! grep '64-bit offset mode=00000200' tmp -if ! grep -F '64-bit data mode=00000020' tmp -if ! grep 'HDF5 mode=00001000' tmp -if ! grep 'HDF5 mode=00001000' tmp_subset.cdl -echo "*** comparing tmp_subset.cdl with ref_tst_grp_spec.cdl..." -diff -b tmp_subset.cdl $srcdir/ref_tst_grp_spec.cdl - -echo "*** All ncdump test output for -g option passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.c b/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.c deleted file mode 100644 index 950e090cfd2..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.c +++ /dev/null @@ -1,223 +0,0 @@ -/* This is part of the netCDF package. Copyright 2013 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. - - This program sets up HDF5 files that contain scalar attributes and - variables, of both string and numeric datatypes. ncdump should handle - all of these. -*/ - -#include -#include "err_macros.h" -#include - -#define FILE_NAME "tst_h_scalar.nc" -#define VSTR_ATT1_NAME "vstratt1" -#define VSTR_ATT2_NAME "vstratt2" -#define VSTR_ATT3_NAME "vstratt3" -#define VSTR_ATT4_NAME "vstratt4" -#define VSTR_VAR1_NAME "vstrvar1" -#define VSTR_VAR2_NAME "vstrvar2" -#define VSTR_VAR3_NAME "vstrvar3" -#define VSTR_VAR4_NAME "vstrvar4" -#define FSTR_ATT_NAME "fstratt" -#define FSTR_VAR_NAME "fstrvar" -#define INT_ATT_NAME "intatt" -#define INT_VAR_NAME "intvar" - -int -add_attrs(hid_t objid) -{ - hid_t scalar_spaceid = -1; - hid_t vlstr_typeid = -1, fixstr_typeid = -1; - char *vlstr; - hid_t attid = -1; - - /* Create scalar dataspace */ - if ((scalar_spaceid = H5Screate(H5S_SCALAR)) < 0) ERR_GOTO; - - /* Create string datatypes */ - if ((vlstr_typeid = H5Tcreate(H5T_STRING, (size_t)H5T_VARIABLE)) < 0) ERR_GOTO; - if ((fixstr_typeid = H5Tcreate(H5T_STRING, (size_t)10)) < 0) ERR_GOTO; - - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT1_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - /* No write, use fill value */ - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT2_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - vlstr = NULL; - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT3_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - vlstr = malloc(10); - *vlstr = '\0'; - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with VL string datatype on object */ - if ((attid = H5Acreate2(objid, VSTR_ATT4_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - strcpy(vlstr, "foo"); - if (H5Awrite(attid, vlstr_typeid, &vlstr) < 0) ERR_GOTO; - free(vlstr); - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with fixed-length string datatype on object */ - if ((attid = H5Acreate2(objid, FSTR_ATT_NAME, fixstr_typeid, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - /* Create attribute with native integer datatype on object */ - if ((attid = H5Acreate2(objid, INT_ATT_NAME, H5T_NATIVE_INT, scalar_spaceid, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR_GOTO; - if (H5Aclose(attid) < 0) ERR_GOTO; - - - /* Clean up objects created */ - if (H5Sclose(scalar_spaceid) < 0) ERR_GOTO; - if (H5Tclose(vlstr_typeid) < 0) ERR_GOTO; - if (H5Tclose(fixstr_typeid) < 0) ERR_GOTO; - - return(0); - -error: - H5E_BEGIN_TRY { - H5Aclose(attid); - H5Sclose(scalar_spaceid); - H5Tclose(vlstr_typeid); - H5Tclose(fixstr_typeid); - } H5E_END_TRY; - return(-1); -} - -int -main() -{ - printf("\n*** Create file with datasets & attributes that have scalar dataspaces..."); - { - hid_t fileid; - hid_t fcplid; - hid_t dsetid; - hid_t dcplid; - hid_t scalar_spaceid; - hid_t vlstr_typeid, fixstr_typeid; - hid_t attid; - - /* Create scalar dataspace */ - if ((scalar_spaceid = H5Screate(H5S_SCALAR)) < 0) ERR; - - /* Set creation ordering for file, so we can revise its contents later */ - if ((fcplid = H5Pcreate(H5P_FILE_CREATE)) < 0) ERR; - if (H5Pset_link_creation_order(fcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - if (H5Pset_attr_creation_order(fcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - - /* Create new file, using default properties */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, fcplid, H5P_DEFAULT)) < 0) ERR; - - /* Close file creation property list */ - if (H5Pclose(fcplid) < 0) ERR; - - - /* Create variable-length string datatype */ - if ((vlstr_typeid = H5Tcreate(H5T_STRING, (size_t)H5T_VARIABLE)) < 0) ERR; - - /* Create fixed-length string datatype */ - if ((fixstr_typeid = H5Tcreate(H5T_STRING, (size_t)10)) < 0) ERR; - - - /* Set creation ordering for dataset, so we can revise its contents later */ - if ((dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) ERR; - if (H5Pset_attr_creation_order(dcplid, H5P_CRT_ORDER_TRACKED) < 0) ERR; - - - /* Create scalar dataset with VL string datatype */ - if ((dsetid = H5Dcreate2(fileid, VSTR_VAR1_NAME, vlstr_typeid, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close VL string dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Create scalar dataset with fixed-length string datatype */ - if ((dsetid = H5Dcreate2(fileid, FSTR_VAR_NAME, fixstr_typeid, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close fixed-length string dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Create scalar dataset with native integer datatype */ - if ((dsetid = H5Dcreate2(fileid, INT_VAR_NAME, H5T_NATIVE_INT, scalar_spaceid, H5P_DEFAULT, dcplid, H5P_DEFAULT)) < 0) ERR; - - /* Add attributes to dataset */ - if (add_attrs(dsetid) < 0) ERR; - - /* Close native integer dataset */ - if (H5Dclose(dsetid) < 0) ERR; - - - /* Add attributes to root group */ - if (add_attrs(fileid) < 0) ERR; - - - /* Close dataset creation property list */ - if (H5Pclose(dcplid) < 0) ERR; - - /* Close string datatypes */ - if (H5Tclose(vlstr_typeid) < 0) ERR; - if (H5Tclose(fixstr_typeid) < 0) ERR; - - - /* Close rest */ - if (H5Sclose(scalar_spaceid) < 0) ERR; - if (H5Fclose(fileid) < 0) ERR; - } - SUMMARIZE_ERR; - - printf("*** Revise file through netCDF-4 API..."); - { - int ncid, varid; - int ret; - char *vlstr; - - if (nc_open(FILE_NAME, NC_WRITE, &ncid)) ERR; - - - /* Define new VL string variable */ - if (nc_def_var(ncid, VSTR_VAR2_NAME , NC_STRING, 0, NULL, &varid)) ERR; - - /* Write to the variable */ - vlstr = NULL; - if (nc_put_var(ncid, varid, &vlstr)) ERR; - - - /* Define new VL string variable */ - if (nc_def_var(ncid, VSTR_VAR3_NAME , NC_STRING, 0, NULL, &varid)) ERR; - - /* Write to the variable */ - vlstr = malloc(10); - *vlstr = '\0'; - if (nc_put_var(ncid, varid, &vlstr)) ERR; - - - /* Define new VL string variable */ - if (nc_def_var(ncid, VSTR_VAR4_NAME , NC_STRING, 0, NULL, &varid)) ERR; - - /* Write to the variable */ - strcpy(vlstr, "foo"); - if (nc_put_var(ncid, varid, &vlstr)) ERR; - free(vlstr); - - - if (nc_close(ncid)) ERR; - } - SUMMARIZE_ERR; - - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.sh deleted file mode 100755 index 896ee64f3cd..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_h_scalar.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs ncdump to verify scalar attribute and variable output - -set -e -echo "" -echo "*** Running ncdump scalar test." - -# echo "*** dumping tst_h_scalar.nc to tst_h_scalar.cdl..." -./ncdump tst_h_scalar.nc > tst_h_scalar.cdl -# echo "*** comparing tst_h_scalar.cdl with ref_tst_h_scalar.cdl..." -diff -b tst_h_scalar.cdl $srcdir/cdl/ref_tst_h_scalar.cdl - -echo "*** All ncdump scalar test output for netCDF-4 format passed!" -exit 0 - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc3.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc3.sh deleted file mode 100755 index 569f9427ff7..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc3.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -verbose=1 -set -e -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -# Make srcdir be absolute -cd $srcdir -srcdir=`pwd` -cd $builddir - -# Setup -PASS=1 - -# Define the .cdl files to test -CLASSIC="small ref_tst_nans ref_tst_utf8" -EXTENDED="ref_nc_test_netcdf4 ref_tst_comp ref_tst_opaque_data" - -rm -fr ./results -mkdir ./results - -# Dump classic files two ways and compare -dotest() { -K=$1 -for f in $2 ; do - echo "Testing ${f}" - ${builddir}/../ncgen/ncgen -$K -o ./results/${f}.nc ${srcdir}/${f}.cdl - ./ncdump ./results/${f}.nc > ./results/${f}.cdl - ./ncdump -Xm ./results/${f}.nc > ./results/${f}.cdx - diff -w ./results/${f}.cdl ./results/${f}.cdx &> ./results/${f}.diff - if test -s ./results/${f}.diff ; then - echo "***FAIL: $f" - PASS=0 - fi -done -} - -dotest "3" "$CLASSIC" - -# Cleanup -rm -fr results - -if test "x$PASS" = x1 ; then - echo "*** PASS all tests" - CODE=0 -else - CODE=1 -fi -exit $CODE diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc4.sh deleted file mode 100755 index 5e467616b93..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_inmemory_nc4.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -verbose=1 -set -e -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -# Make srcdir be absolute -cd $srcdir -srcdir=`pwd` -cd $builddir - -# Setup -PASS=1 - -# Define the .cdl files to test -CLASSIC="small ref_tst_nans ref_tst_utf8" -EXTENDED="ref_nc_test_netcdf4 ref_tst_comp ref_tst_opaque_data" - -rm -fr ./results -mkdir ./results - -# Dump classic files two ways and compare -dotest() { -K=$1 -for f in $2 ; do - echo "Testing ${f}" - ${builddir}/../ncgen/ncgen -$K -o ./results/${f}.nc ${srcdir}/${f}.cdl - ./ncdump ./results/${f}.nc > ./results/${f}.cdl - ./ncdump -Xm ./results/${f}.nc > ./results/${f}.cdx - diff -w ./results/${f}.cdl ./results/${f}.cdx &> ./results/${f}.diff - if test -s ./results/${f}.diff ; then - echo "***FAIL: $f" - PASS=0 - fi -done -} - -dotest "3" "$CLASSIC" -dotest "5" "$EXTENDED5" - -if test -f ${builddir}/../config.h ; then - if fgrep -e '#define USE_NETCDF4 1' ${builddir}/../config.h >/dev/null ; then - dotest "4" "$EXTENDED4" - fi -fi - -# Cleanup -rm -fr results - -if test "x$PASS" = x1 ; then - echo "*** PASS all tests" - CODE=0 -else - CODE=1 -fi -exit $CODE diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_inttags.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_inttags.sh deleted file mode 100755 index e8d53bc2336..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_inttags.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi - -set -e - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "*** Test integer constant suffixes" -echo "*** creating inttags.nc from inttags.cdl..." -../ncgen/ncgen -lb -o inttags.nc $srcdir/inttags.cdl -echo "*** creating tst_inttags.cdl from inttags.nc..." -./ncdump inttags.nc > tst_inttags.cdl -echo "*** comparing tst_inttags.cdl to ref_inttags.nc..." -diff -b -w tst_inttags.cdl $srcdir/ref_inttags.cdl - -rm inttags.nc tst_inttags.cdl - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_inttags4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_inttags4.sh deleted file mode 100755 index 8fa40e72637..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_inttags4.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi - -set -e - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "*** Test netcdf-4 integer constant suffixes" - -echo "*** creating inttags4.nc from inttags4.cdl..." -../ncgen/ncgen -lb -o inttags4.nc $srcdir/inttags4.cdl -echo "*** creating tst_inttags4.cdl from inttags4.nc..." -./ncdump inttags4.nc > tst_inttags4.cdl -echo "*** comparing tst_inttags4.cdl to ref_inttags4.nc..." -diff -b -w tst_inttags4.cdl $srcdir/ref_inttags4.cdl - -rm inttags4.nc tst_inttags4.cdl - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_lengths.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_lengths.sh deleted file mode 100755 index d61fa1f8d1d..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_lengths.sh +++ /dev/null @@ -1,187 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -# It is unreasonable to test actual lengths of files -# (even netcdf-3 files). -#However, the files created in this script are used in later ones - -../ncgen/ncgen -b ${srcdir}/small.cdl -../ncgen/ncgen -b ${srcdir}/small2.cdl - -exit - - - -# This shell script tests lengths of small netcdf files and tests -# that rewriting a numeric value doesn't change file length -# $Id: tst_lengths.sh,v 1.10 2008/08/07 00:07:52 ed Exp $ - -# cat > rewrite-scalar.c << EOF -# #include -# #include -# #define ERR do {fflush(stdout); fprintf(stderr, "Error, %s, line: %d\n", __FILE__, __LINE__); return(1);} while (0) - -# int -# main(int ac, char *av[]) { -# int ncid, varid, data[] = {42}; -# if (nc_open(av[1], NC_WRITE, &ncid)) ERR; -# if (nc_inq_varid(ncid, av[2], &varid)) ERR; -# if (nc_put_var_int(ncid, varid, data)) ERR; -# if (nc_close(ncid)) ERR; -# return 0; -# } -# EOF -# cat > test-len.sh << 'EOF' -# # test that length of file $1 is $2 -# len=`ls -l $1|awk '{print $5}'` -# if [ $len = $2 ]; then -# exit 0 -# else -# echo "### Failure: file $1 has length $len instead of expected $2" -# exit 1 -# fi -# EOF -# chmod +x ./test-len.sh -# cc -g -o rewrite-scalar -I../libsrc rewrite-scalar.c -L../libsrc -lnetcdf -# echo "netcdf small {variables: byte t; data: t = 1;}" > small.cdl -set -e - - -echo "" -echo "*** testing length of classic file" -../ncgen/ncgen -b ${srcdir}/small.cdl -if test `wc -c < small.nc` != 68; then - exit 1 -fi - -#echo "*** testing length of classic file written with NOFILL" -#../ncgen/ncgen -b -x ${srcdir}/small.cdl -#if test `wc -c < small.nc` != 68; then -# exit 1 -#fi - -echo "*** testing length of rewritten classic file" -../ncgen/ncgen -b ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -#if test `wc -c < small.nc` != 68; then -# exit 1 -#fi - -echo "*** testing length of rewritten classic file written with NOFILL" -../ncgen/ncgen -b -x ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -#if test `wc -c < small.nc` != 68; then -# exit 1 -#fi - -echo "*** testing length of 64-bit offset file" -../ncgen/ncgen -b -k64-bit-offset ${srcdir}/small.cdl -#if test `wc -c < small.nc` != 72; then -# exit 1 -#fi - -echo "*** testing length of 64-bit offset file written with NOFILL" -../ncgen/ncgen -b -k64-bit-offset -x ${srcdir}/small.cdl -#if test `wc -c < small.nc` != 72; then -# exit 1 -#fi - -echo "*** testing length of rewritten 64-bit offset file" -../ncgen/ncgen -b -k64-bit-offset ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -#if test `wc -c < small.nc` != 72; then -# exit 1 -#fi - -echo "*** testing length of rewritten 64-bit offset file written with NOFILL" -../ncgen/ncgen -b -k64-bit-offset -x ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -#if test `wc -c < small.nc` != 72; then -# exit 1 -#fi - -echo "*** testing length of 64-bit data file" -../ncgen/ncgen -b -k64-bit-data ${srcdir}/small.cdl -if test `wc -c < small.nc` != 104; then - exit 1 -fi - -echo "*** testing length of 64-bit data file" -../ncgen/ncgen -b -5 ${srcdir}/small.cdl -if test `wc -c < small.nc` != 104; then - exit 1 -fi -echo "*** testing length of 64-bit data file written with NOFILL" -../ncgen/ncgen -b -5 -x ${srcdir}/small.cdl -#if test `wc -c < small.nc` != 104; then -# exit 1 -#fi - -echo "*** testing length of rewritten 64-bit data file" -../ncgen/ncgen -b -5 ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -if test `wc -c < small.nc` != 104; then - exit 1 -fi - -echo "*** testing length of rewritten 64-bit data file written with NOFILL" -../ncgen/ncgen -b -5 -x ${srcdir}/small.cdl && ./rewrite-scalar small.nc t -#if test `wc -c < small.nc` != 104; then -# exit 1 -#fi - - -# test with only one record variable of type byte or short, which need -# not be 4-byte aligned -echo "*** testing length of one-record-variable classic file" -../ncgen/ncgen -b ${srcdir}/small2.cdl -#if test `wc -c < small2.nc` != 101; then -# exit 1 -#fi - -echo "*** testing length of one-record-variable 64-bit data file" -../ncgen/ncgen -b -5 ${srcdir}/small2.cdl -if test `wc -c < small2.nc` != 161; then - exit 1 -fi - -echo "*** testing length of one-record-variable 64-bit data file" -../ncgen/ncgen -b -5 ${srcdir}/small2.cdl -if test `wc -c < small2.nc` != 161; then - exit 1 -fi - -echo "*** testing length of one-record-variable 64-bit data file written with NOFILL" -../ncgen/ncgen -b -5 -x ${srcdir}/small2.cdl -if test `wc -c < small2.nc` != 161; then - exit 1 -fi - -echo "*** testing length of one-record-variable classic file written with NOFILL" -../ncgen/ncgen -b -x ${srcdir}/small2.cdl -if test `wc -c < small2.nc` != 101; then - exit 1 -fi - -echo "*** testing length of one-record-variable classic file written with NOFILL" -../ncgen/ncgen -b -x ${srcdir}/small2.cdl -if test `wc -c < small2.nc` != 101; then - exit 1 -fi - -echo "*** testing length of one-record-variable classic file written with NOFILL" -../ncgen/ncgen -b -x ${srcdir}/small2.cdl -#if test `wc -c < small2.nc` != 101; then -# exit 1 -#fi - -echo "*** testing length of one-record-variable 64-bit offset file" -../ncgen/ncgen -b -k64-bit-offset ${srcdir}/small2.cdl -#if test `wc -c < small2.nc` != 105; then -# exit 1 -#fi - -echo "*** testing length of one-record-variable 64-bit offset file written with NOFILL" -../ncgen/ncgen -b -k64-bit-offset -x ${srcdir}/small2.cdl -#if test `wc -c < small2.nc` != 105; then -# exit 1 -#fi diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_mud.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_mud.sh deleted file mode 100755 index 83bbaa02883..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_mud.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests ncdump and ncgen on netCDF-4 variables with multiple -# unlimited dimensions. -# $Id $ - -set -e - -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -# add hack for sunos -export srcdir; - -echo "" -echo "*** Testing ncdump output for multiple unlimited dimensions" -echo "*** creating netcdf file tst_mud4.nc from ref_tst_mud4.cdl ..." -../ncgen/ncgen -4 -b -o tst_mud4.nc $srcdir/ref_tst_mud4.cdl -echo "*** creating tst_mud4.cdl from tst_mud4.nc ..." -./ncdump tst_mud4.nc > tst_mud4.cdl -# echo "*** comparing tst_mud4.cdl with ref_tst_mud4.cdl..." -diff -b tst_mud4.cdl $srcdir/ref_tst_mud4.cdl -# echo "*** comparing annotation from ncdump -bc tst_mud4.nc with expected output..." -./ncdump -bc tst_mud4.nc > tst_mud4-bc.cdl -diff -b tst_mud4-bc.cdl $srcdir/ref_tst_mud4-bc.cdl -# Now test with char arrays instead of ints -echo "*** creating netcdf file tst_mud4_chars.nc from ref_tst_mud4_chars.cdl ..." -../ncgen/ncgen -4 -b -o tst_mud4_chars.nc $srcdir/ref_tst_mud4_chars.cdl -echo "*** creating tst_mud4_chars.cdl from tst_mud4_chars.nc ..." -./ncdump tst_mud4_chars.nc > tst_mud4_chars.cdl -# echo "*** comparing tst_mud4_chars.cdl with ref_tst_mud4_chars.cdl..." -diff -b tst_mud4_chars.cdl $srcdir/ref_tst_mud4_chars.cdl -# echo "*** comparing annotation from ncdump -bc tst_mud4_chars.nc with expected output..." -# ./ncdump -bc tst_mud4_chars.nc > tst_mud4_chars-bc.cdl -# diff -b tst_mud4_chars-bc.cdl $srcdir/ref_tst_mud4_chars-bc.cdl -echo "*** All ncdump test output for multiple unlimited dimensions passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy3.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy3.sh deleted file mode 100755 index 1482891c844..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy3.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# For a netCDF-3 build, test nccopy on netCDF files in this directory - -set -e -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -export srcdir -echo "" - -TESTFILES='c0 c0tmp ctest0 ctest0_64 small small2 test0 test1 - tst_calendars tst_mslp tst_mslp_64 tst_ncml tst_small tst_utf8 utf8' - -echo "*** Testing netCDF-3 features of nccopy on ncdump/*.nc files" -for i in $TESTFILES ; do - echo "*** Testing nccopy $i.nc copy_of_$i.nc ..." - ./nccopy $i.nc copy_of_$i.nc - ./ncdump -n copy_of_$i $i.nc > tmp.cdl - ./ncdump copy_of_$i.nc > copy_of_$i.cdl - diff copy_of_$i.cdl tmp.cdl - rm copy_of_$i.nc copy_of_$i.cdl tmp.cdl -done -echo "*** Testing nccopy -u" -../ncgen/ncgen -b $srcdir/tst_brecs.cdl -# convert record dimension to fixed-size dimension -./nccopy -u tst_brecs.nc copy_of_tst_brecs.nc -./ncdump -n copy_of_tst_brecs tst_brecs.nc | sed '/ = UNLIMITED ;/s/\(.*\) = UNLIMITED ; \/\/ (\(.*\) currently)/\1 = \2 ;/' > tmp.cdl -./ncdump copy_of_tst_brecs.nc > copy_of_tst_brecs.cdl -diff -b copy_of_tst_brecs.cdl tmp.cdl -rm copy_of_tst_brecs.cdl tmp.cdl tst_brecs.nc copy_of_tst_brecs.nc - -echo "*** All nccopy tests passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy4.sh deleted file mode 100755 index 6b738ff8205..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_nccopy4.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# For a netCDF-4 build, test nccopy on netCDF files in this directory - -set -e -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -export srcdir -echo "" - -# These files are actually in $srcdir in distcheck builds, so they -# need to be handled differently. -# ref_tst_compounds2 ref_tst_compounds3 ref_tst_compounds4 -TESTFILES='tst_comp tst_comp2 tst_enum_data tst_fillbug - tst_group_data tst_nans tst_opaque_data tst_solar_1 tst_solar_2 - tst_solar_cmp tst_special_atts tst_string_data tst_unicode - tst_vlen_data' - -echo "*** Testing netCDF-4 features of nccopy on ncdump/*.nc files" -for i in $TESTFILES ; do - echo "*** Test nccopy $i.nc copy_of_$i.nc ..." - ./nccopy $i.nc copy_of_$i.nc - ./ncdump -n copy_of_$i $i.nc > tmp.cdl - ./ncdump copy_of_$i.nc > copy_of_$i.cdl -# echo "*** compare " with copy_of_$i.cdl - diff copy_of_$i.cdl tmp.cdl - rm copy_of_$i.nc copy_of_$i.cdl tmp.cdl -done -# echo "*** Testing compression of deflatable files ..." -./tst_compress -echo "*** Test nccopy -d1 can compress a classic format file ..." -./nccopy -d1 tst_inflated.nc tst_deflated.nc -if test `wc -c < tst_deflated.nc` -ge `wc -c < tst_inflated.nc`; then - exit 1 -fi -echo "*** Test nccopy -d1 can compress a netCDF-4 format file ..." -./nccopy -d1 tst_inflated4.nc tst_deflated.nc -if test `wc -c < tst_deflated.nc` -ge `wc -c < tst_inflated4.nc`; then - exit 1 -fi -echo "*** Test nccopy -d1 -s can compress a classic model netCDF-4 file even more ..." -./nccopy -d1 -s tst_inflated.nc tmp.nc -if test `wc -c < tmp.nc` -ge `wc -c < tst_inflated.nc`; then - exit 1 -fi -echo "*** Test nccopy -d1 -s can compress a netCDF-4 file even more ..." -./nccopy -d1 -s tst_inflated4.nc tmp.nc -if test `wc -c < tmp.nc` -ge `wc -c < tst_inflated4.nc`; then - exit 1 -fi -echo "*** Test nccopy -d0 turns off compression, shuffling of compressed, shuffled file ..." -./nccopy -d0 tst_inflated4.nc tmp.nc -./ncdump -sh tmp.nc > tmp.cdl -if fgrep '_DeflateLevel' < tmp.cdl ; then - exit 1 -fi -if fgrep '_Shuffle' < tmp.cdl ; then - exit 1 -fi -rm tst_deflated.nc tst_inflated.nc tst_inflated4.nc tmp.nc tmp.cdl - -echo "*** Testing nccopy -d1 -s on ncdump/*.nc files" -for i in $TESTFILES ; do - echo "*** Test nccopy -d1 -s $i.nc copy_of_$i.nc ..." - ./nccopy -d1 -s $i.nc copy_of_$i.nc - ./ncdump -n copy_of_$i $i.nc > tmp.cdl - ./ncdump copy_of_$i.nc > copy_of_$i.cdl -# echo "*** compare " with copy_of_$i.cdl - diff copy_of_$i.cdl tmp.cdl - rm copy_of_$i.nc copy_of_$i.cdl tmp.cdl -done -./tst_chunking -echo "*** Test that nccopy -c can chunk and unchunk files" -./nccopy tst_chunking.nc tmp.nc -./ncdump tmp.nc > tmp.cdl -./nccopy -c dim0/,dim1/1,dim2/,dim3/1,dim4/,dim5/1,dim6/ tst_chunking.nc tmp-chunked.nc -./ncdump -n tmp tmp-chunked.nc > tmp-chunked.cdl -diff tmp.cdl tmp-chunked.cdl -./nccopy -c dim0/,dim1/,dim2/,dim3/,dim4/,dim5/,dim6/ tmp-chunked.nc tmp-unchunked.nc -./ncdump -n tmp tmp-unchunked.nc > tmp-unchunked.cdl -diff tmp.cdl tmp-unchunked.cdl -./nccopy -c / tmp-chunked.nc tmp-unchunked.nc -./ncdump -n tmp tmp-unchunked.nc > tmp-unchunked.cdl -diff tmp.cdl tmp-unchunked.cdl -echo "*** Test that nccopy -c works as intended for record dimension default (1)" -../ncgen/ncgen -b -o tst_bug321.nc $srcdir/tst_bug321.cdl -./nccopy -k nc7 -c"lat/2,lon/2" tst_bug321.nc tmp.nc -./ncdump -n tst_bug321 tmp.nc > tmp.cdl -diff $srcdir/tst_bug321.cdl tmp.cdl -# echo "*** Test that nccopy compression with chunking can improve compression" -rm tst_chunking.nc tmp.nc tmp.cdl tmp-chunked.nc tmp-chunked.cdl tmp-unchunked.nc tmp-unchunked.cdl - -echo "*** All nccopy tests passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4.sh deleted file mode 100755 index 39d74f45e5f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -verbose=1 -set -e - -# To add a new test, -# 1. put the .cdl file in the 'cdl4' directory -# 2. put the result of running ncgen then ncdump -# into the directory 'expected4' as .dmp -# 3. Modify the file tst_ncgen_shared.sh to add -# the test to the end of the TESTS4 variable -# 4. Add the new files into cdl4/Makefile.am -# and expected4/Makefile.am - -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -# Make srcdir be absolute -cd $srcdir -srcdir=`pwd` -cd $builddir - -export verbose -export srcdir -export builddir - -KFLAG=1 ; export KFLAG -echo "*** Performing diff tests: k=1" -sh ${srcdir}/tst_ncgen4_diff.sh -echo "*** Performing cycle tests: k=1" -sh ${srcdir}/tst_ncgen4_cycle.sh -KFLAG=3 ; export KFLAG -echo "*** Performing diff tests: k=3" -sh ${srcdir}/tst_ncgen4_diff.sh -echo "*** Performing cycle tests: k=3" -sh ${srcdir}/tst_ncgen4_cycle.sh -KFLAG=4 ; export KFLAG -echo "*** Performing diff tests: k=4" -sh ${srcdir}/tst_ncgen4_diff.sh -echo "*** Performing cycle tests: k=4" -sh ${srcdir}/tst_ncgen4_cycle.sh -exit - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4_classic.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4_classic.sh deleted file mode 100755 index e483f190a2a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_ncgen4_classic.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi - -set -e -echo "" -verbose=0 - -if test "x$builddir" = "x"; then builddir=`pwd`; fi -if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi - -# Make buildir absolute -cd $builddir -builddir=`pwd` - -# Make srcdir be absolute -cd $srcdir -srcdir=`pwd` -cd $builddir - -export verbose -export srcdir -export builddir - -KFLAG=1 ; export KFLAG -sh ${srcdir}/tst_ncgen4_diff.sh -sh ${srcdir}/tst_ncgen4_cycle.sh -exit 0 - - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4.sh deleted file mode 100755 index 5c7dafed37a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests ncdump for netcdf-4 -# $Id: tst_netcdf4.sh,v 1.34 2009/09/25 18:22:10 dmh Exp $ - -set -e - -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -# add hack for sunos -export srcdir; - -echo "" -echo "*** Testing ncgen and ncdump test output for netCDF-4 format." -# echo "*** creating netcdf-4 file c0_4.nc from c0_4.cdl..." -../ncgen/ncgen -k nc4 -b -o c0_4.nc $srcdir/../ncgen/c0_4.cdl - -# echo "*** creating c1_4.cdl from c0_4.nc..." -./ncdump -n c1 c0_4.nc | sed 's/e+0/e+/g' > c1_4.cdl -# echo "*** comparing c1_4.cdl with ref_ctest1_nc4.cdl..." -diff -b c1_4.cdl $srcdir/ref_ctest1_nc4.cdl - -echo "*** Testing ncgen and ncdump test output for netCDF-4 classic format." -# echo "*** creating netcdf-4 classic file c0.nc from c0.cdl..." -../ncgen/ncgen -k nc7 -b -o c0.nc $srcdir/../ncgen/c0.cdl -# echo "*** creating c1.cdl from c0.nc..." - -# echo "*** comparing c1.cdl with ref_ctest1_nc4c.cdl..." -diff -b c1.cdl $srcdir/ref_ctest1_nc4c.cdl - -echo "*** Testing ncdump output for netCDF-4 features." -./ncdump tst_solar_1.nc | sed 's/e+0/e+/g' > tst_solar_1.cdl -# echo "*** comparing tst_solar_1.cdl with ref_tst_solar_1.cdl..." -diff -b tst_solar_1.cdl $srcdir/ref_tst_solar_1.cdl -./ncdump tst_solar_2.nc | sed 's/e+0/e+/g' > tst_solar_2.cdl -# echo "*** comparing tst_solar_2.cdl with ref_tst_solar_2.cdl..." -diff -b tst_solar_2.cdl $srcdir/ref_tst_solar_2.cdl -./ncdump tst_group_data.nc | sed 's/e+0/e+/g' > tst_group_data.cdl -# echo "*** comparing tst_group_data.cdl with ref_tst_group_data.cdl..." -diff -b tst_group_data.cdl $srcdir/ref_tst_group_data.cdl - -# Temporary hack to skip a couple tests that won't work in windows -# without changing the format of the string. See: -# -# http://www.mingw.org/wiki/Posix_path_conversion - -if [[ "$OSTYPE" != 'msys' ]]; then -echo "*** Testing -v option with absolute name and groups..." -./ncdump -v /g2/g3/var tst_group_data.nc | sed 's/e+0/e+/g' > tst_group_data.cdl -# echo "*** comparing tst_group_data.cdl with ref_tst_group_data_v23.cdl..." -diff -b tst_group_data.cdl $srcdir/ref_tst_group_data_v23.cdl -fi - - -echo "*** Testing -v option with relative name and groups..." -./ncdump -v var,var2 tst_group_data.nc | sed 's/e+0/e+/g' > tst_group_data.cdl -# echo "*** comparing tst_group_data.cdl with ref_tst_group_data.cdl..." -diff -b tst_group_data.cdl $srcdir/ref_tst_group_data.cdl -./ncdump tst_enum_data.nc | sed 's/e+0/e+/g' > tst_enum_data.cdl -# echo "*** comparing tst_enum_data.cdl with ref_tst_enum_data.cdl..." -diff -b tst_enum_data.cdl $srcdir/ref_tst_enum_data.cdl -./ncdump tst_opaque_data.nc | sed 's/e+0/e+/g' > tst_opaque_data.cdl -# echo "*** comparing tst_opaque_data.cdl with ref_tst_opaque_data.cdl..." -diff -b tst_opaque_data.cdl $srcdir/ref_tst_opaque_data.cdl -./ncdump tst_vlen_data.nc | sed 's/e+0/e+/g' > tst_vlen_data.cdl -# echo "*** comparing tst_vlen_data.cdl with ref_tst_vlen_data.cdl..." -diff -b tst_vlen_data.cdl $srcdir/ref_tst_vlen_data.cdl -./ncdump tst_comp.nc | sed 's/e+0/e+/g' > tst_comp.cdl -# echo "*** comparing tst_comp.cdl with ref_tst_comp.cdl..." -diff -b tst_comp.cdl $srcdir/ref_tst_comp.cdl -# echo "*** creating tst_nans.cdl from tst_nans.nc" -./ncdump tst_nans.nc | sed 's/e+0/e+/g' > tst_nans.cdl -# echo "*** comparing ncdump of generated file with ref_tst_nans.cdl ..." -diff -b tst_nans.cdl $srcdir/ref_tst_nans.cdl -# Do unicode test only if it exists => BUILD_UTF8 is true -if test -f ./tst_unicode -o -f ./tst_unicode.exe ; then - echo "*** dumping tst_unicode.nc to tst_unicode.cdl..." - ./tst_unicode - ./ncdump tst_unicode.nc | sed 's/e+0/e+/g' > tst_unicode.cdl - #echo "*** comparing tst_unicode.cdl with ref_tst_unicode.cdl..." - #diff -b tst_unicode.cdl $srcdir/ref_tst_unicode.cdl -fi -./tst_special_atts -./ncdump -c -s tst_special_atts.nc \ - | sed 's/e+0/e+/g' \ - | sed -e 's/netcdflibversion=.*[|]/netcdflibversion=0.0.0|/' \ - | sed -e 's/hdf5libversion=.*"/hdf5libversion=0.0.0"/' \ - | sed -e 's|_SuperblockVersion = [0-9]|_SuperblockVersion = 0|' \ - | cat > tst_special_atts.cdl -echo "*** comparing tst_special_atts.cdl with ref_tst_special_atts.cdl..." -diff -b tst_special_atts.cdl $srcdir/ref_tst_special_atts.cdl - -echo "*** All ncgen and ncdump test output for netCDF-4 format passed!" -exit 0 - - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4_4.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4_4.sh deleted file mode 100755 index 82cfad6b3c7..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_netcdf4_4.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script runs extra tests ncdump for netcdf-4 -# $Id: tst_netcdf4_4.sh,v 1.13 2009/05/06 14:51:52 ed Exp $ - -set -e -if test "x$srcdir" = "x"; then - srcdir=`dirname $0`; -fi -export srcdir - -echo "" -echo "*** Running extra netcdf-4 tests." - -# -# In windows, these tests fail because srcdir is prepended. -# e.g., Instead of 'ncdump ref_tst_compounds2' the file would -# contain: -# 'ncdump ./ref_tst_compounds2'. This causes the test to fail. -# But, 'srcdir' is necessary for make distcheck. -# -# Short term solution, use sed when on windows/MSYS to -# remove the './','../../ncdump'. -# - -if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then # MINGW Platforms - - echo "*** dumping tst_string_data.nc to tst_string_data.cdl..." - - ./ncdump tst_string_data.nc > tst_string_data.cdl - TMPNAME=`head -n 1 tst_string_data.cdl | cut -d" " -f 2` - NEWNAME=`basename $TMPNAME` - sed "s,$TMPNAME,$NEWNAME,g" tst_string_data.cdl > tmp.cdl - mv tmp.cdl tst_string_data.cdl - echo "*** comparing tst_string_data.cdl with ref_tst_string_data.cdl..." - diff -b tst_string_data.cdl $srcdir/ref_tst_string_data.cdl - - echo '*** testing reference file ref_tst_compounds2.nc...' - ./ncdump $srcdir/ref_tst_compounds2.nc > tst_compounds2.cdl - TMPNAME=`head -n 1 tst_compounds2.cdl | cut -d" " -f 2` - NEWNAME=`basename $TMPNAME` - sed "s,$TMPNAME,$NEWNAME,g" tst_compounds2.cdl > tmp.cdl - mv tmp.cdl tst_compounds2.cdl - diff -b tst_compounds2.cdl $srcdir/ref_tst_compounds2.cdl - - echo '*** testing reference file ref_tst_compounds3.nc...' - ./ncdump $srcdir/ref_tst_compounds3.nc > tst_compounds3.cdl - TMPNAME=`head -n 1 tst_compounds3.cdl | cut -d" " -f 2` - NEWNAME=`basename $TMPNAME` - sed "s,$TMPNAME,$NEWNAME,g" tst_compounds3.cdl > tmp.cdl - mv tmp.cdl tst_compounds3.cdl - diff -b tst_compounds3.cdl $srcdir/ref_tst_compounds3.cdl - - echo '*** testing reference file ref_tst_compounds4.nc...' - ./ncdump $srcdir/ref_tst_compounds4.nc > tst_compounds4.cdl - TMPNAME=`head -n 1 tst_compounds4.cdl | cut -d" " -f 2` - NEWNAME=`basename $TMPNAME` - sed "s,$TMPNAME,$NEWNAME,g" tst_compounds4.cdl > tmp.cdl - mv tmp.cdl tst_compounds4.cdl - diff -b tst_compounds4.cdl $srcdir/ref_tst_compounds4.cdl - -else # Non-MINGW Platforms - - echo "*** dumping tst_string_data.nc to tst_string_data.cdl..." - ./ncdump tst_string_data.nc > tst_string_data.cdl - echo "*** comparing tst_string_data.cdl with ref_tst_string_data.cdl..." - diff -b tst_string_data.cdl $srcdir/ref_tst_string_data.cdl - -#echo '*** testing non-coordinate variable of same name as dimension...' -#../ncgen/ncgen -v4 -b -o tst_noncoord.nc $srcdir/ref_tst_noncoord.cdl - - echo '*** testing reference file ref_tst_compounds2.nc...' - ./ncdump $srcdir/ref_tst_compounds2.nc > tst_compounds2.cdl - diff -b tst_compounds2.cdl $srcdir/ref_tst_compounds2.cdl - - echo '*** testing reference file ref_tst_compounds3.nc...' - ./ncdump $srcdir/ref_tst_compounds3.nc > tst_compounds3.cdl - diff -b tst_compounds3.cdl $srcdir/ref_tst_compounds3.cdl - - echo '*** testing reference file ref_tst_compounds4.nc...' - ./ncdump $srcdir/ref_tst_compounds4.nc > tst_compounds4.cdl - diff -b tst_compounds4.cdl $srcdir/ref_tst_compounds4.cdl - - # Exercise Jira NCF-213 bug fix -# rm -f tst_ncf213.cdl tst_ncf213.nc - ../ncgen/ncgen -b -o tst_ncf213.nc $srcdir/ref_tst_ncf213.cdl - ./ncdump -s -h tst_ncf213.nc \ - | sed -e 's/netcdflibversion=.*[|]/netcdflibversion=0.0.0|/' \ - | sed -e 's/hdf5libversion=.*"/hdf5libversion=0.0.0"/' \ - | sed -e 's|_SuperblockVersion = [0-9]|_SuperblockVersion = 0|' \ - | cat >tst_ncf213.cdl - # Now compare - ok=1; - if diff -b $srcdir/ref_tst_ncf213.cdl tst_ncf213.cdl ; then ok=1; else ok=0; fi - # cleanup -# rm -f tst_ncf213.cdl tst_ncf213.nc - if test $ok = 0 ; then - echo "*** FAIL: NCF-213 Bug Fix test" - exit 1 - fi -fi - -echo "*** All ncgen and ncdump extra test output for netCDF-4 format passed!" -exit 0 - diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_output.sh b/contrib/netcdf/4.4.1.1/ncdump/tst_output.sh deleted file mode 100755 index 641d40e5249..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_output.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -if test "x$SETX" = x1 ; then echo "file=$0"; set -x ; fi -# This shell script tests the output from several previous tests. - -set -e - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "" -echo "*** Testing ncgen and ncdump test output for classic format." -echo "*** creating ctest1.cdl from ctest0.nc..." -./ncdump -n c1 ctest0.nc | sed 's/e+0/e+/g' > ctest1.cdl -echo "*** creating c0.nc from c0.cdl..." -../ncgen/ncgen -b -o c0.nc $srcdir/../ncgen/c0.cdl -echo "*** creating c1.cdl from c0.nc..." -./ncdump -n c1 c0.nc | sed 's/e+0/e+/g' > c1.cdl -echo "*** comparing ncdump of C program output (ctest1.cdl) with c1.cdl..." -diff -b c1.cdl ctest1.cdl -echo "*** test output for ncdump -k" -test `./ncdump -k c0.nc` = "classic"; -../ncgen/ncgen -k `./ncdump -k c0.nc` -b -o c0tmp.nc $srcdir/../ncgen/c0.cdl -cmp c0tmp.nc c0.nc - -echo "*** test output for ncdump -x" -echo "*** creating tst_ncml.nc from tst_ncml.cdl" -../ncgen/ncgen -b -o tst_ncml.nc $srcdir/tst_ncml.cdl -echo "*** creating c1.ncml from tst_ncml.nc" -./ncdump -x tst_ncml.nc | sed 's/e-00/e-0/g' > c1.ncml -echo "*** comparing ncdump -x of generated file with ref1.ncml ..." -diff -b c1.ncml $srcdir/ref1.ncml - -echo "*** test output for ncdump -s" -echo "*** creating tst_mslp.nc from tst_mslp.cdl" -../ncgen/ncgen -b -o tst_mslp.nc $srcdir/tst_mslp.cdl -echo "*** creating tst_format_att.cdl from tst_mslp.nc" -./ncdump -s tst_mslp.nc > tst_format_att.cdl -echo "*** comparing ncdump -s of generated file with ref_tst_format_att.cdl ..." -diff -b tst_format_att.cdl $srcdir/ref_tst_format_att.cdl - -echo "*** All ncgen and ncdump test output for classic format passed!" - -echo "*** Testing ncgen and ncdump test output for 64-bit offset format." -echo "*** creating ctest1.cdl from test0_64.nc..." -./ncdump -n c1 ctest0_64.nc | sed 's/e+0/e+/g' > ctest1_64.cdl -echo "*** creating c0.nc from c0.cdl..." -../ncgen/ncgen -k nc6 -b -o c0.nc $srcdir/../ncgen/c0.cdl -echo "*** creating c1.cdl from c0.nc..." -./ncdump -n c1 c0.nc | sed 's/e+0/e+/g' > c1.cdl -echo "*** comparing ncdump of C program output (ctest1_64.cdl) with c1.cdl..." -diff -b c1.cdl ctest1_64.cdl -echo "*** test output for ncdump -k" -test "`./ncdump -k c0.nc`" = "64-bit offset"; -../ncgen/ncgen -k nc6 -b -o c0tmp.nc $srcdir/../ncgen/c0.cdl -cmp c0tmp.nc c0.nc - -echo "*** test output for ncdump -s" -echo "*** creating tst_mslp_64.nc from tst_mslp.cdl" -../ncgen/ncgen -k nc6 -b -o tst_mslp_64.nc $srcdir/tst_mslp.cdl -echo "*** creating tst_format_att_64.cdl from tst_mslp_64.nc" -./ncdump -s tst_mslp_64.nc | sed 's/e+0/e+/g' > tst_format_att_64.cdl -echo "*** comparing ncdump -s of generated file with ref_tst_format_att_64.cdl ..." -diff -b tst_format_att_64.cdl $srcdir/ref_tst_format_att_64.cdl - -echo "*** All ncgen and ncdump test output for 64-bit offset format passed!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncdump/tst_utf8.c b/contrib/netcdf/4.4.1.1/ncdump/tst_utf8.c deleted file mode 100644 index 0d8c0d4a156..00000000000 --- a/contrib/netcdf/4.4.1.1/ncdump/tst_utf8.c +++ /dev/null @@ -1,128 +0,0 @@ -/* This is part of the netCDF package. - Copyright 2006 University Corporation for Atmospheric Research/Unidata. - See COPYRIGHT file for conditions of use. - - This is a very simple example which writes a netCDF file with - Unicode names encoded with UTF-8. It is the NETCDF3 equivalent - of tst_unicode.c - - $Id: tst_utf8.c,v 1.10 2008/10/20 01:48:07 ed Exp $ -*/ - -#include -#include -#include -#include -#include -#include - -/* The data file we will create. */ -#define FILE7_NAME "tst_utf8.nc" -#define UNITS "units" -#define NDIMS 1 -#define NX 18 - -int -main(int argc, char **argv) -{ - int ncid, dimid, varid; - int dimids[NDIMS]; - - /* (unnormalized) UTF-8 encoding for Unicode 8-character "Hello" in Greek */ - unsigned char name_utf8[] = { - 0xCE, 0x9A, /* GREEK CAPITAL LETTER KAPPA : 2-bytes utf8 */ - 0xCE, 0xB1, /* GREEK SMALL LETTER LAMBDA : 2-bytes utf8 */ - 0xCE, 0xBB, /* GREEK SMALL LETTER ALPHA : 2-bytes utf8 */ - 0xCE, 0xB7, /* GREEK SMALL LETTER ETA : 2-bytes utf8 */ - 0xCE, 0xBC, /* GREEK SMALL LETTER MU : 2-bytes utf8 */ - 0xE1, 0xBD, 0xB3, /* GREEK SMALL LETTER EPSILON - WITH TONOS : 3-bytes utf8 */ - 0xCF, 0x81, /* GREEK SMALL LETTER RHO : 2-bytes utf8 */ - 0xCE, 0xB1, /* GREEK SMALL LETTER ALPHA : 2-bytes utf8 */ - 0x00 - }; - -/* Name used for dimension, variable, and attribute value */ -#define UNAME ((char *) name_utf8) -#define UNAMELEN (sizeof name_utf8) - - char name_in[UNAMELEN + 1], strings_in[UNAMELEN + 1]; - nc_type att_type; - size_t att_len; - - printf("\n*** Testing UTF-8.\n"); - printf("*** creating UTF-8 test file %s...", FILE7_NAME); - if (nc_create(FILE7_NAME, NC_CLOBBER, &ncid)) - ERR; - - /* Define dimension with Unicode UTF-8 encoded name */ - if (nc_def_dim(ncid, UNAME, NX, &dimid)) - ERR; - dimids[0] = dimid; - - /* Define variable with same name */ - if (nc_def_var(ncid, UNAME, NC_CHAR, NDIMS, dimids, &varid)) - ERR; - - /* Create string attribute with same value */ - if (nc_put_att_text(ncid, varid, UNITS, UNAMELEN, UNAME)) - ERR; - - if (nc_enddef(ncid)) - ERR; - - /* Write string data, UTF-8 encoded, to the file */ - if (nc_put_var_text(ncid, varid, UNAME)) - ERR; - - if (nc_close(ncid)) - ERR; - - /* Check it out. */ - - /* Reopen the file. */ - if (nc_open(FILE7_NAME, NC_NOWRITE, &ncid)) - ERR; - if (nc_inq_varid(ncid, UNAME, &varid)) - ERR; - if (nc_inq_varname(ncid, varid, name_in)) - ERR; - { - /* Note, name was normalized before storing, so retrieved name - won't match original unnormalized name. Check that we get - normalized version, instead. */ - - /* NFC normalized UTF-8 for Unicode 8-character "Hello" in Greek */ - unsigned char norm_utf8[] = { - 0xCE, 0x9A, /* GREEK CAPITAL LETTER KAPPA : 2-bytes utf8 */ - 0xCE, 0xB1, /* GREEK SMALL LETTER LAMBDA : 2-bytes utf8 */ - 0xCE, 0xBB, /* GREEK SMALL LETTER ALPHA : 2-bytes utf8 */ - 0xCE, 0xB7, /* GREEK SMALL LETTER ETA : 2-bytes utf8 */ - 0xCE, 0xBC, /* GREEK SMALL LETTER MU : 2-bytes utf8 */ - 0xCE, 0xAD, /* GREEK SMALL LETTER EPSILON WITH TONOS - : 2-bytes utf8 */ - 0xCF, 0x81, /* GREEK SMALL LETTER RHO : 2-bytes utf8 */ - 0xCE, 0xB1, /* GREEK SMALL LETTER ALPHA : 2-bytes utf8 */ - 0x00 - }; -#define NNAME ((char *) norm_utf8) -#define NNAMELEN (sizeof norm_utf8) - if (strncmp(NNAME, name_in, NNAMELEN)) - ERR; - } - if (nc_inq_att(ncid, varid, UNITS, &att_type, &att_len)) - ERR; - if (att_type != NC_CHAR || att_len != UNAMELEN) - ERR; - /* We don't normalize data or attribute values, so get exactly what was put */ - if (nc_get_att_text(ncid, varid, UNITS, strings_in)) - ERR; - strings_in[att_len] = '\0'; - if (strncmp(UNAME, strings_in, UNAMELEN)) - ERR; - if (nc_close(ncid)) - ERR; - - SUMMARIZE_ERR; - FINAL_RESULTS; -} diff --git a/contrib/netcdf/4.4.1.1/ncgen/CMakeLists.txt b/contrib/netcdf/4.4.1.1/ncgen/CMakeLists.txt deleted file mode 100644 index 1e1556031d4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -SET(ncgen_FILES generate.c main.c cdata.c bindata.c genchar.c cvt.c data.c debug.c escapes.c genc.c genbin.c generr.c genlib.c getfill.c odom.c offsets.c semantics.c ncgeny.c dump.c util.c bytebuffer.c list.c genf77.c f77data.c genj.c jdata.c nc_iter.c ConvertUTF.c ncgen.h ) - -IF(USE_X_GETOPT) - SET(ncgen_FILES ${ncgen_FILES} XGetopt.c) -ENDIF() - -ADD_EXECUTABLE(ncgen ${ncgen_FILES}) -TARGET_LINK_LIBRARIES(ncgen netcdf ${ALL_TLL_LIBS}) - -#### -# We have to do a little tweaking -# to remove the Release/ and Debug/ directories -# in MSVC builds. This is required to get -# test scripts to work. -#### -IF(MSVC) - SET_TARGET_PROPERTIES(ncgen PROPERTIES RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(ncgen PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG - ${CMAKE_CURRENT_BINARY_DIR}) - SET_TARGET_PROPERTIES(ncgen PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE - ${CMAKE_CURRENT_BINARY_DIR}) -ENDIF() - -INSTALL(TARGETS ncgen DESTINATION bin COMPONENT utilities) - -# Copy the input for the flex file (ncgen.l) -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.l ${CMAKE_CURRENT_SOURCE_DIR}/*.y) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) - -# Stuff to build if tests are enabled. -IF(ENABLE_TESTS) - FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) - FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) - add_sh_test(ncgen run_tests) - IF(USE_NETCDF4) - add_sh_test(ncgen run_nc4_tests) - ENDIF() -ENDIF() - -SET(MAN_FILES ncgen.1) -IF(NOT MSVC) - INSTALL(FILES ${MAN_FILES} DESTINATION "share/man/man1" - COMPONENT documentation) -ENDIF() -SET(CLEANFILES c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c) -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") - -# These rules are used if someone wants to rebuild ncgeny.c or ncgenl.c -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -ADD_CUSTOM_COMMAND( - OUTPUT ncgentab.h - COMMAND flex -Pncg -8 ncgen.l - COMMAND rm -f ncgenl.c - COMMAND mv lex.ncg.c ncgenl.c - - COMMAND bison -pncg -t -d ncgen.y - COMMAND rm -f ncgeny.c ncgeny.h - COMMAND mv ncgen.tab.c ncgeny.c - COMMAND mv ncgen.tab.h ncgeny.h - COMMAND mv ncgeny.h ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND mv ncgeny.c ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND mv ncgenl.c ${CMAKE_CURRENT_SOURCE_DIR} - - ) -ADD_CUSTOM_TARGET(makeparser DEPENDS ncgentab.h) - -## Specify files to be distributed by 'make dist' -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} ncgen.y ncgenl.c ncgen.l internals.html c0.cdl c0_4.cdl ref_camrun.cdl ncf199.cdl CMakeLists.txt Makefile.am ncgen.1) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.c b/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.c deleted file mode 100644 index 0be73c363b7..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.c +++ /dev/null @@ -1,539 +0,0 @@ -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* --------------------------------------------------------------------- - - Conversions between UTF32, UTF-16, and UTF-8. Source code file. - Author: Mark E. Davis, 1994. - Rev History: Rick McGowan, fixes & updates May 2001. - Sept 2001: fixed const & error conditions per - mods suggested by S. Parent & A. Lillich. - June 2002: Tim Dodd added detection and handling of incomplete - source sequences, enhanced error detection, added casts - to eliminate compiler warnings. - July 2003: slight mods to back out aggressive FFFE detection. - Jan 2004: updated switches in from-UTF8 conversions. - Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions. - - See the header file "ConvertUTF.h" for complete documentation. - ------------------------------------------------------------------------- */ - -#include "config.h" -#include "ConvertUTF.h" -#ifdef CVTUTF_DEBUG -#include -#endif - -static const int halfShift = 10; /* used for shifting by 10 bits */ - -static const UTF32 halfBase = 0x0010000UL; -static const UTF32 halfMask = 0x3FFUL; - -#define UNI_SUR_HIGH_START (UTF32)0xD800 -#define UNI_SUR_HIGH_END (UTF32)0xDBFF -#define UNI_SUR_LOW_START (UTF32)0xDC00 -#define UNI_SUR_LOW_END (UTF32)0xDFFF -#define false 0 -#define true 1 - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF32toUTF16 ( - const UTF32** sourceStart, const UTF32* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF32* source = *sourceStart; - UTF16* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - if (target >= targetEnd) { - result = targetExhausted; break; - } - ch = *source++; - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = (UTF16)ch; /* normal case */ - } - } else if (ch > UNI_MAX_LEGAL_UTF32) { - if (flags == strictConversion) { - result = sourceIllegal; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - if (target + 1 >= targetEnd) { - --source; /* Back up source pointer! */ - result = targetExhausted; break; - } - ch -= halfBase; - *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); - *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); - } - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF16toUTF32 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF16* source = *sourceStart; - UTF32* target = *targetStart; - UTF32 ch, ch2; - while (source < sourceEnd) { - const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ - ch = *source++; - /* If we have a surrogate pair, convert to UTF32 first. */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { - /* If the 16 bits following the high surrogate are in the source buffer... */ - if (source < sourceEnd) { - ch2 = *source; - /* If it's a low surrogate, convert to UTF32. */ - if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { - ch = ((ch - UNI_SUR_HIGH_START) << halfShift) - + (ch2 - UNI_SUR_LOW_START) + halfBase; - ++source; - } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } else { /* We don't have the 16 bits following the high surrogate. */ - --source; /* return to the high surrogate */ - result = sourceExhausted; - break; - } - } else if (flags == strictConversion) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - if (target >= targetEnd) { - source = oldSource; /* Back up source pointer! */ - result = targetExhausted; break; - } - *target++ = ch; - } - *sourceStart = source; - *targetStart = target; -#ifdef CVTUTF_DEBUG -if (result == sourceIllegal) { - fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2); - fflush(stderr); -} -#endif - return result; -} - -/* --------------------------------------------------------------------- */ - -/* - * Index into the table below with the first byte of a UTF-8 sequence to - * get the number of trailing bytes that are supposed to follow it. - * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is - * left as-is for anyone who may want to do such conversion, which was - * allowed in earlier algorithms. - */ -static const char trailingBytesForUTF8[256] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 -}; - -/* - * Magic values subtracted from a buffer value during UTF8 conversion. - * This table contains as many values as there might be trailing bytes - * in a UTF-8 sequence. - */ -static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, - 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; - -/* - * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed - * into the first byte, depending on how many bytes follow. There are - * as many entries in this table as there are UTF-8 sequence types. - * (I.e., one byte sequence, two byte... etc.). Remember that sequencs - * for *legal* UTF-8 will be 4 or fewer bytes total. - */ -static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - -/* --------------------------------------------------------------------- */ - -/* The interface converts a whole buffer to avoid function-call overhead. - * Constants have been gathered. Loops & conditionals have been removed as - * much as possible for efficiency, in favor of drop-through switches. - * (See "Note A" at the bottom of the file for equivalent code.) - * If your compiler supports it, the "isLegalUTF8" call can be turned - * into an inline function. - */ - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF16toUTF8 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF16* source = *sourceStart; - UTF8* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - unsigned short bytesToWrite = 0; - const UTF32 byteMask = 0xBF; - const UTF32 byteMark = 0x80; - const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ - ch = *source++; - /* If we have a surrogate pair, convert to UTF32 first. */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { - /* If the 16 bits following the high surrogate are in the source buffer... */ - if (source < sourceEnd) { - UTF32 ch2 = *source; - /* If it's a low surrogate, convert to UTF32. */ - if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { - ch = ((ch - UNI_SUR_HIGH_START) << halfShift) - + (ch2 - UNI_SUR_LOW_START) + halfBase; - ++source; - } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } else { /* We don't have the 16 bits following the high surrogate. */ - --source; /* return to the high surrogate */ - result = sourceExhausted; - break; - } - } else if (flags == strictConversion) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - /* Figure out how many bytes the result will require */ - if (ch < (UTF32)0x80) { bytesToWrite = 1; - } else if (ch < (UTF32)0x800) { bytesToWrite = 2; - } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; - } else if (ch < (UTF32)0x110000) { bytesToWrite = 4; - } else { bytesToWrite = 3; - ch = UNI_REPLACEMENT_CHAR; - } - - target += bytesToWrite; - if (target > targetEnd) { - source = oldSource; /* Back up source pointer! */ - target -= bytesToWrite; result = targetExhausted; break; - } - switch (bytesToWrite) { /* note: everything falls through. */ - case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]); - } - target += bytesToWrite; - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- */ - -/* - * Utility routine to tell whether a sequence of bytes is legal UTF-8. - * This must be called with the length pre-determined by the first byte. - * If not calling this from ConvertUTF8to*, then the length can be set by: - * length = trailingBytesForUTF8[*source]+1; - * and the sequence is illegal right away if there aren't that many bytes - * available. - * If presented with a length > 4, this returns false. The Unicode - * definition of UTF-8 goes up to 4-byte sequences. - */ - -static Boolean isLegalUTF8(const UTF8 *source, int length) { - UTF8 a; - const UTF8 *srcptr = source+length; - switch (length) { - default: return false; - /* Everything else falls through when "true"... */ - case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 2: if ((a = (*--srcptr)) > 0xBF) return false; - - switch (*source) { - /* no fall-through in this inner switch */ - case 0xE0: if (a < 0xA0) return false; break; - case 0xED: if (a > 0x9F) return false; break; - case 0xF0: if (a < 0x90) return false; break; - case 0xF4: if (a > 0x8F) return false; break; - default: if (a < 0x80) return false; - } - - case 1: if (*source >= 0x80 && *source < 0xC2) return false; - } - if (*source > 0xF4) return false; - return true; -} - -/* --------------------------------------------------------------------- */ - -/* - * Exported function to return whether a UTF-8 sequence is legal or not. - * This is not used here; it's just exported. - */ -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) { - int length = trailingBytesForUTF8[*source]+1; - if (source+length > sourceEnd) { - return false; - } - return isLegalUTF8(source, length); -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF8toUTF16 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF8* source = *sourceStart; - UTF16* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - result = sourceExhausted; break; - } - /* Do this check whether lenient or strict */ - if (! isLegalUTF8(source, extraBytesToRead+1)) { - result = sourceIllegal; - break; - } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; - } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (target >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = (UTF16)ch; /* normal case */ - } - } else if (ch > UNI_MAX_UTF16) { - if (flags == strictConversion) { - result = sourceIllegal; - source -= (extraBytesToRead+1); /* return to the start */ - break; /* Bail out; shouldn't continue */ - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - if (target + 1 >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - ch -= halfBase; - *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); - *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); - } - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF32toUTF8 ( - const UTF32** sourceStart, const UTF32* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF32* source = *sourceStart; - UTF8* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - unsigned short bytesToWrite = 0; - const UTF32 byteMask = 0xBF; - const UTF32 byteMark = 0x80; - ch = *source++; - if (flags == strictConversion ) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - /* - * Figure out how many bytes the result will require. Turn any - * illegally large UTF32 things (> Plane 17) into replacement chars. - */ - if (ch < (UTF32)0x80) { bytesToWrite = 1; - } else if (ch < (UTF32)0x800) { bytesToWrite = 2; - } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; - } else if (ch <= UNI_MAX_LEGAL_UTF32) { bytesToWrite = 4; - } else { bytesToWrite = 3; - ch = UNI_REPLACEMENT_CHAR; - result = sourceIllegal; - } - - target += bytesToWrite; - if (target > targetEnd) { - --source; /* Back up source pointer! */ - target -= bytesToWrite; result = targetExhausted; break; - } - switch (bytesToWrite) { /* note: everything falls through. */ - case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]); - } - target += bytesToWrite; - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF8toUTF32 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF8* source = *sourceStart; - UTF32* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - result = sourceExhausted; break; - } - /* Do this check whether lenient or strict */ - if (! isLegalUTF8(source, extraBytesToRead+1)) { - result = sourceIllegal; - break; - } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 5: ch += *source++; ch <<= 6; - case 4: ch += *source++; ch <<= 6; - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; - } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (target >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up the source pointer! */ - result = targetExhausted; break; - } - if (ch <= UNI_MAX_LEGAL_UTF32) { - /* - * UTF-16 surrogate values are illegal in UTF-32, and anything - * over Plane 17 (> 0x10FFFF) is illegal. - */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = ch; - } - } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */ - result = sourceIllegal; - *target++ = UNI_REPLACEMENT_CHAR; - } - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- - - Note A. - The fall-through switches in UTF-8 reading code save a - temp variable, some decrements & conditionals. The switches - are equivalent to the following loop: - { - int tmpBytesToRead = extraBytesToRead+1; - do { - ch += *source++; - --tmpBytesToRead; - if (tmpBytesToRead) ch <<= 6; - } while (tmpBytesToRead > 0); - } - In UTF-8 writing code, the switches on "bytesToWrite" are - similarly unrolled loops. - - --------------------------------------------------------------------- */ diff --git a/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.h b/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.h deleted file mode 100644 index e26e7c97890..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ConvertUTF.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* --------------------------------------------------------------------- - - Conversions between UTF32, UTF-16, and UTF-8. Header file. - - Several functions are included here, forming a complete set of - conversions between the three formats. UTF-7 is not included - here, but is handled in a separate source file. - - Each of these routines takes pointers to input buffers and output - buffers. The input buffers are const. - - Each routine converts the text between *sourceStart and sourceEnd, - putting the result into the buffer between *targetStart and - targetEnd. Note: the end pointers are *after* the last item: e.g. - *(sourceEnd - 1) is the last item. - - The return result indicates whether the conversion was successful, - and if not, whether the problem was in the source or target buffers. - (Only the first encountered problem is indicated.) - - After the conversion, *sourceStart and *targetStart are both - updated to point to the end of last text successfully converted in - the respective buffers. - - Input parameters: - sourceStart - pointer to a pointer to the source buffer. - The contents of this are modified on return so that - it points at the next thing to be converted. - targetStart - similarly, pointer to pointer to the target buffer. - sourceEnd, targetEnd - respectively pointers to the ends of the - two buffers, for overflow checking only. - - These conversion functions take a ConversionFlags argument. When this - flag is set to strict, both irregular sequences and isolated surrogates - will cause an error. When the flag is set to lenient, both irregular - sequences and isolated surrogates are converted. - - Whether the flag is strict or lenient, all illegal sequences will cause - an error return. This includes sequences such as: , , - or in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code - must check for illegal sequences. - - When the flag is set to lenient, characters over 0x10FFFF are converted - to the replacement character; otherwise (when the flag is set to strict) - they constitute an error. - - Output parameters: - The value "sourceIllegal" is returned from some routines if the input - sequence is malformed. When "sourceIllegal" is returned, the source - value will point to the illegal value that caused the problem. E.g., - in UTF-8 when a sequence is malformed, it points to the start of the - malformed sequence. - - Author: Mark E. Davis, 1994. - Rev History: Rick McGowan, fixes & updates May 2001. - Fixes & updates, Sept 2001. - ------------------------------------------------------------------------- */ - -/* --------------------------------------------------------------------- - The following 4 definitions are compiler-specific. - The C standard does not guarantee that wchar_t has at least - 16 bits, so wchar_t is no less portable than unsigned short! - All should be unsigned values to avoid sign extension during - bit mask & shift operations. ------------------------------------------------------------------------- */ - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ -typedef unsigned char Boolean; /* 0 or 1 */ - -/* Some fundamental constants */ -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_MAX_BMP (UTF32)0x0000FFFF -#define UNI_MAX_UTF16 (UTF32)0x0010FFFF -#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF -#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF - -typedef enum { - conversionOK, /* conversion successful */ - sourceExhausted, /* partial character in source, but hit end */ - targetExhausted, /* insuff. room in target for conversion */ - sourceIllegal /* source sequence is illegal/malformed */ -} ConversionResult; - -typedef enum { - strictConversion = 0, - lenientConversion -} ConversionFlags; - -/* This is for C++ and does no harm in C */ -#ifdef __cplusplus -extern "C" { -#endif - -ConversionResult ConvertUTF8toUTF16 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF8 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF8toUTF32 ( - const UTF8** sourceStart, const UTF8* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF8 ( - const UTF32** sourceStart, const UTF32* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF32 ( - const UTF16** sourceStart, const UTF16* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF16 ( - const UTF32** sourceStart, const UTF32* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd); - -#ifdef __cplusplus -} -#endif - -/* --------------------------------------------------------------------- */ diff --git a/contrib/netcdf/4.4.1.1/ncgen/Makefile.am b/contrib/netcdf/4.4.1.1/ncgen/Makefile.am deleted file mode 100644 index c13f94e01a4..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncgen program. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am -LDADD = ${top_builddir}/liblib/libnetcdf.la - -# Build ncgen from the listed sources. -bin_PROGRAMS = ncgen - -ncgen_SOURCES=generate.c main.c cdata.c bindata.c genchar.c cvt.c data.c debug.c \ -escapes.c genc.c genbin.c generr.c genlib.c getfill.c odom.c offsets.c \ -semantics.c dump.c util.c bytebuffer.c list.c data.h \ -debug.h generr.h genlib.h includes.h ncgen.h odom.h offsets.h dump.h \ -util.h bytebuffer.h list.h genf77.c f77data.c genj.c jdata.c nc_iter.h \ -nc_iter.c ConvertUTF.c ConvertUTF.h \ -ncgeny.c ncgeny.h - -# This is the man page. -man_MANS = ncgen.1 - -# These files all need to be distributed. -EXTRA_DIST = ncgen.y ncgen.l ncgenl.c $(man_MANS) internals.html \ -run_tests.sh run_nc4_tests.sh c0.cdl c0_4.cdl ref_camrun.cdl \ -ncf199.cdl CMakeLists.txt XGetopt.c c5.cdl \ -compound_datasize_test.cdl compound_datasize_test2.cdl - -# This shell script causes ncgen to build a classic and a 64-bit -# offset file from a cdl file shipped with the distribution. -#if !BUILD_DLL -TESTS = run_tests.sh -if USE_NETCDF4 -TESTS += run_nc4_tests.sh -endif # USE_NETCDF4 -#endif # !BUILD_DLL - -CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \ - ncf199.nc c5.nc compound_datasize_test.nc compound_datasize_test2.nc \ - tst_compound_datasize_test.cdl tst_compound_datasize_test2.cdl tst_ncf199.cdl \ - tst_c0.cdl tst_c0_4.cdl tst_c0_4c.cdl tst_c0_64.cdl - -# These rules are used if someone wants to rebuild ncgenl.c or ncgeny.c -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -makeparser:: - flex -Pncg -8 ncgen.l - rm -f ncgenl.c - sed -e s/lex.ncg.c/ncgenl.c/g ncgenl.c - bison -pncg -t -d ncgen.y - rm -f ncgeny.c ncgeny.h - sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.c - sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.h diff --git a/contrib/netcdf/4.4.1.1/ncgen/Makefile.in b/contrib/netcdf/4.4.1.1/ncgen/Makefile.in deleted file mode 100644 index dcb2e4d8709..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/Makefile.in +++ /dev/null @@ -1,1055 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncgen program. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -bin_PROGRAMS = ncgen$(EXEEXT) -@USE_NETCDF4_TRUE@am__append_3 = run_nc4_tests.sh -subdir = ncgen -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" -PROGRAMS = $(bin_PROGRAMS) -am_ncgen_OBJECTS = generate.$(OBJEXT) main.$(OBJEXT) cdata.$(OBJEXT) \ - bindata.$(OBJEXT) genchar.$(OBJEXT) cvt.$(OBJEXT) \ - data.$(OBJEXT) debug.$(OBJEXT) escapes.$(OBJEXT) \ - genc.$(OBJEXT) genbin.$(OBJEXT) generr.$(OBJEXT) \ - genlib.$(OBJEXT) getfill.$(OBJEXT) odom.$(OBJEXT) \ - offsets.$(OBJEXT) semantics.$(OBJEXT) dump.$(OBJEXT) \ - util.$(OBJEXT) bytebuffer.$(OBJEXT) list.$(OBJEXT) \ - genf77.$(OBJEXT) f77data.$(OBJEXT) genj.$(OBJEXT) \ - jdata.$(OBJEXT) nc_iter.$(OBJEXT) ConvertUTF.$(OBJEXT) \ - ncgeny.$(OBJEXT) -ncgen_OBJECTS = $(am_ncgen_OBJECTS) -ncgen_LDADD = $(LDADD) -ncgen_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/ConvertUTF.Po ./$(DEPDIR)/bindata.Po \ - ./$(DEPDIR)/bytebuffer.Po ./$(DEPDIR)/cdata.Po \ - ./$(DEPDIR)/cvt.Po ./$(DEPDIR)/data.Po ./$(DEPDIR)/debug.Po \ - ./$(DEPDIR)/dump.Po ./$(DEPDIR)/escapes.Po \ - ./$(DEPDIR)/f77data.Po ./$(DEPDIR)/genbin.Po \ - ./$(DEPDIR)/genc.Po ./$(DEPDIR)/genchar.Po \ - ./$(DEPDIR)/generate.Po ./$(DEPDIR)/generr.Po \ - ./$(DEPDIR)/genf77.Po ./$(DEPDIR)/genj.Po \ - ./$(DEPDIR)/genlib.Po ./$(DEPDIR)/getfill.Po \ - ./$(DEPDIR)/jdata.Po ./$(DEPDIR)/list.Po ./$(DEPDIR)/main.Po \ - ./$(DEPDIR)/nc_iter.Po ./$(DEPDIR)/ncgeny.Po \ - ./$(DEPDIR)/odom.Po ./$(DEPDIR)/offsets.Po \ - ./$(DEPDIR)/semantics.Po ./$(DEPDIR)/util.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(ncgen_SOURCES) -DIST_SOURCES = $(ncgen_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -LDADD = ${top_builddir}/liblib/libnetcdf.la -ncgen_SOURCES = generate.c main.c cdata.c bindata.c genchar.c cvt.c data.c debug.c \ -escapes.c genc.c genbin.c generr.c genlib.c getfill.c odom.c offsets.c \ -semantics.c dump.c util.c bytebuffer.c list.c data.h \ -debug.h generr.h genlib.h includes.h ncgen.h odom.h offsets.h dump.h \ -util.h bytebuffer.h list.h genf77.c f77data.c genj.c jdata.c nc_iter.h \ -nc_iter.c ConvertUTF.c ConvertUTF.h \ -ncgeny.c ncgeny.h - - -# This is the man page. -man_MANS = ncgen.1 - -# These files all need to be distributed. -EXTRA_DIST = ncgen.y ncgen.l ncgenl.c $(man_MANS) internals.html \ -run_tests.sh run_nc4_tests.sh c0.cdl c0_4.cdl ref_camrun.cdl \ -ncf199.cdl CMakeLists.txt XGetopt.c c5.cdl \ -compound_datasize_test.cdl compound_datasize_test2.cdl - - -# This shell script causes ncgen to build a classic and a 64-bit -# offset file from a cdl file shipped with the distribution. -#if !BUILD_DLL -TESTS = run_tests.sh $(am__append_3) -#endif # !BUILD_DLL -CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \ - ncf199.nc c5.nc compound_datasize_test.nc compound_datasize_test2.nc \ - tst_compound_datasize_test.cdl tst_compound_datasize_test2.cdl tst_ncf199.cdl \ - tst_c0.cdl tst_c0_4.cdl tst_c0_4c.cdl tst_c0_64.cdl - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 ncgen/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncgen/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -ncgen$(EXEEXT): $(ncgen_OBJECTS) $(ncgen_DEPENDENCIES) $(EXTRA_ncgen_DEPENDENCIES) - @rm -f ncgen$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ncgen_OBJECTS) $(ncgen_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConvertUTF.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bindata.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bytebuffer.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdata.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cvt.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escapes.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/f77data.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genbin.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genchar.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generr.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genf77.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genj.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genlib.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfill.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jdata.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nc_iter.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncgeny.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odom.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offsets.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semantics.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) $(MANS) -installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/ConvertUTF.Po - -rm -f ./$(DEPDIR)/bindata.Po - -rm -f ./$(DEPDIR)/bytebuffer.Po - -rm -f ./$(DEPDIR)/cdata.Po - -rm -f ./$(DEPDIR)/cvt.Po - -rm -f ./$(DEPDIR)/data.Po - -rm -f ./$(DEPDIR)/debug.Po - -rm -f ./$(DEPDIR)/dump.Po - -rm -f ./$(DEPDIR)/escapes.Po - -rm -f ./$(DEPDIR)/f77data.Po - -rm -f ./$(DEPDIR)/genbin.Po - -rm -f ./$(DEPDIR)/genc.Po - -rm -f ./$(DEPDIR)/genchar.Po - -rm -f ./$(DEPDIR)/generate.Po - -rm -f ./$(DEPDIR)/generr.Po - -rm -f ./$(DEPDIR)/genf77.Po - -rm -f ./$(DEPDIR)/genj.Po - -rm -f ./$(DEPDIR)/genlib.Po - -rm -f ./$(DEPDIR)/getfill.Po - -rm -f ./$(DEPDIR)/jdata.Po - -rm -f ./$(DEPDIR)/list.Po - -rm -f ./$(DEPDIR)/main.Po - -rm -f ./$(DEPDIR)/nc_iter.Po - -rm -f ./$(DEPDIR)/ncgeny.Po - -rm -f ./$(DEPDIR)/odom.Po - -rm -f ./$(DEPDIR)/offsets.Po - -rm -f ./$(DEPDIR)/semantics.Po - -rm -f ./$(DEPDIR)/util.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 - -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 ./$(DEPDIR)/ConvertUTF.Po - -rm -f ./$(DEPDIR)/bindata.Po - -rm -f ./$(DEPDIR)/bytebuffer.Po - -rm -f ./$(DEPDIR)/cdata.Po - -rm -f ./$(DEPDIR)/cvt.Po - -rm -f ./$(DEPDIR)/data.Po - -rm -f ./$(DEPDIR)/debug.Po - -rm -f ./$(DEPDIR)/dump.Po - -rm -f ./$(DEPDIR)/escapes.Po - -rm -f ./$(DEPDIR)/f77data.Po - -rm -f ./$(DEPDIR)/genbin.Po - -rm -f ./$(DEPDIR)/genc.Po - -rm -f ./$(DEPDIR)/genchar.Po - -rm -f ./$(DEPDIR)/generate.Po - -rm -f ./$(DEPDIR)/generr.Po - -rm -f ./$(DEPDIR)/genf77.Po - -rm -f ./$(DEPDIR)/genj.Po - -rm -f ./$(DEPDIR)/genlib.Po - -rm -f ./$(DEPDIR)/getfill.Po - -rm -f ./$(DEPDIR)/jdata.Po - -rm -f ./$(DEPDIR)/list.Po - -rm -f ./$(DEPDIR)/main.Po - -rm -f ./$(DEPDIR)/nc_iter.Po - -rm -f ./$(DEPDIR)/ncgeny.Po - -rm -f ./$(DEPDIR)/odom.Po - -rm -f ./$(DEPDIR)/offsets.Po - -rm -f ./$(DEPDIR)/semantics.Po - -rm -f ./$(DEPDIR)/util.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-binPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-man1 install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-man \ - uninstall-man1 - -.PRECIOUS: Makefile - - -# These rules are used if someone wants to rebuild ncgenl.c or ncgeny.c -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -makeparser:: - flex -Pncg -8 ncgen.l - rm -f ncgenl.c - sed -e s/lex.ncg.c/ncgenl.c/g ncgenl.c - bison -pncg -t -d ncgen.y - rm -f ncgeny.c ncgeny.h - sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.c - sed -e s/ncgen.tab.c/ncgeny.c/g -e s/ncgen.tab.h/ncgeny.h/g ncgeny.h - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/ncgen/bindata.c b/contrib/netcdf/4.4.1.1/ncgen/bindata.c deleted file mode 100644 index 741cb601e69..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/bindata.c +++ /dev/null @@ -1,193 +0,0 @@ -/********************************************************************* - * Copyright 2009, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ - -#include "includes.h" -#include "nc_iter.h" - -#ifdef ENABLE_BINARY - -static void alignto(int alignment, Bytebuffer* buf, int base); - -static int bin_uid = 0; - -static int -bin_charconstant(Generator* generator, Symbol* sym, Bytebuffer* buf, ...) -{ - /* Just transfer charbuf to codebuf */ - Bytebuffer* charbuf; - va_list ap; - vastart(ap,buf); - charbuf = va_arg(ap, Bytebuffer*); - va_end(ap); - bbNull(charbuf); - bbCatbuf(buf,charbuf); - return 1; -} - -static int -bin_constant(Generator* generator, Symbol* sym, NCConstant* con, Bytebuffer* buf,...) -{ - if(con->nctype != NC_ECONST) { - alignbuffer(con,buf); - } - switch (con->nctype) { - case NC_OPAQUE: { - unsigned char* bytes = NULL; - size_t len; - /* Assume the opaque string has been normalized */ - bytes=makebytestring(con->value.opaquev.stringv,&len); - bbAppendn(buf,(void*)bytes,len); - free(bytes); - } break; - case NC_CHAR: - bbAppendn(buf,&con->value.charv,sizeof(con->value.charv)); - break; - case NC_BYTE: - bbAppendn(buf,(void*)&con->value.int8v,sizeof(con->value.int8v)); - break; - case NC_SHORT: - bbAppendn(buf,(void*)&con->value.int16v,sizeof(con->value.int16v)); - break; - case NC_INT: - bbAppendn(buf,(void*)&con->value.int32v,sizeof(con->value.int32v)); - break; - case NC_FLOAT: - bbAppendn(buf,(void*)&con->value.floatv,sizeof(con->value.floatv)); - break; - case NC_DOUBLE: - bbAppendn(buf,(void*)&con->value.doublev,sizeof(con->value.doublev)); - break; - case NC_UBYTE: - bbAppendn(buf,(void*)&con->value.uint8v,sizeof(con->value.uint8v)); - break; - case NC_USHORT: - bbAppendn(buf,(void*)&con->value.uint16v,sizeof(con->value.uint16v)); - break; - case NC_UINT: - bbAppendn(buf,(void*)&con->value.uint32v,sizeof(con->value.uint32v)); - break; - case NC_INT64: { - union SI64 { char ch[8]; long long i64;} si64; - si64.i64 = con->value.int64v; - bbAppendn(buf,(void*)si64.ch,sizeof(si64.ch)); - } break; - case NC_UINT64: { - union SU64 { char ch[8]; unsigned long long i64;} su64; - su64.i64 = con->value.uint64v; - bbAppendn(buf,(void*)su64.ch,sizeof(su64.ch)); - } break; - case NC_NIL: - case NC_STRING: { - char* ptr; - int len = (size_t)con->value.stringv.len; - if(len == 0 && con->value.stringv.stringv == NULL) { - char* nil = NULL; - bbAppendn(buf,(void*)&nil,sizeof(nil)); - } else { - ptr = (char*)malloc(len+1); - memcpy(ptr,con->value.stringv.stringv,len); - ptr[len] = '\0'; - bbAppendn(buf,(void*)&ptr,sizeof(ptr)); - } - } break; - - default: PANIC1("bin_constant: unexpected type: %d",con->nctype); - } - return 1; -} - -static int -bin_listbegin(Generator* generator, Symbol* tsym, void* liststate, ListClass lc, size_t size, Bytebuffer* buf, int* uidp, ...) -{ - if(uidp) *uidp = ++bin_uid; - if(lc == LISTCOMPOUND) - *((int*)liststate) = bbLength(buf); - return 1; -} - -static int -bin_list(Generator* generator, Symbol* tsym, void* liststate, ListClass lc, int uid, size_t count, Bytebuffer* buf, ...) -{ - if(lc == LISTCOMPOUND) { - int offsetbase = *((int*)liststate); - /* Pad for the alignment */ - alignto(tsym->typ.alignment,buf,offsetbase); - } - return 1; -} - -static int -bin_listend(Generator* generator, Symbol* tsym, void* liststate, ListClass lc, int uid, size_t count, Bytebuffer* buf, ...) -{ - if(lc == LISTCOMPOUND) { - int offsetbase = *((int*)liststate); - /* Pad out the whole instance */ - alignto(tsym->typ.cmpdalign,buf,offsetbase); - } - return 1; -} - - -static int -bin_vlendecl(Generator* generator, Symbol* tsym, Bytebuffer* buf, int uid, size_t count,...) -{ - va_list ap; - Bytebuffer* vlenmem; - nc_vlen_t ptr; - vastart(ap,count); - vlenmem = va_arg(ap, Bytebuffer*); - va_end(ap); - ptr.len = count; - ptr.p = bbDup(vlenmem); - bbAppendn(buf,(char*)&ptr,sizeof(ptr)); - return 1; -} - -static int -bin_vlenstring(Generator* generator, Symbol* sym, Bytebuffer* codebuf, int* uidp, size_t* sizep,...) -{ - Bytebuffer* vlenmem; - nc_vlen_t ptr; - va_list ap; - if(uidp) *uidp = ++bin_uid; - vastart(ap,sizep); - vlenmem = va_arg(ap, Bytebuffer*); - va_end(ap); - ptr.len = bbLength(vlenmem); - ptr.p = bbDup(vlenmem); - bbAppendn(codebuf,(char*)&ptr,sizeof(ptr)); - return 1; -} - -static const char zeros[] = - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - -static void -alignto(int alignment, Bytebuffer* buf, int base) -{ - int pad = 0; - int offset = bbLength(buf); - offset -= base; /* Need to actually align wrt to the base */ - pad = getpadding(offset,alignment); - if(pad > 0) { - bbAppendn(buf,(void*)zeros,pad); - } -} - -/* Define the single static bin data generator */ -static Generator bin_generator_singleton = { - NULL, - bin_charconstant, - bin_constant, - bin_listbegin, - bin_list, - bin_listend, - bin_vlendecl, - bin_vlenstring -}; -Generator* bin_generator = &bin_generator_singleton; - -#endif /*ENABLE_BINARY*/ - diff --git a/contrib/netcdf/4.4.1.1/ncgen/data.c b/contrib/netcdf/4.4.1.1/ncgen/data.c deleted file mode 100644 index 1788033711c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/data.c +++ /dev/null @@ -1,770 +0,0 @@ -/********************************************************************* - * Copyright 2009, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ -/* $Id: data.c,v 1.7 2010/05/24 19:59:56 dmh Exp $ */ -/* $Header: /upc/share/CVS/netcdf-3/ncgen/data.c,v 1.7 2010/05/24 19:59:56 dmh Exp $ */ - -#include "includes.h" -#include "offsets.h" -#include "dump.h" - -#define XVSNPRINTF vsnprintf -/* -#define XVSNPRINTF lvsnprintf -extern int lvsnprintf(char*, size_t, const char*, va_list); -*/ - -#define DATALISTINIT 32 - -/* Track all known datalist*/ -Datalist* alldatalists = NULL; - -NCConstant nullconstant; -NCConstant fillconstant; - -Datalist nildatalist; /* to support NIL keyword */ - -Bytebuffer* codebuffer; -Bytebuffer* codetmp; -Bytebuffer* stmt; - - -/* Forward */ - -/**************************************************/ -/**************************************************/ - -/* return 1 if the next element in the datasrc is compound*/ -int -issublist(Datasrc* datasrc) {return istype(datasrc,NC_COMPOUND);} - -/* return 1 if the next element in the datasrc is a string*/ -int -isstring(Datasrc* datasrc) {return istype(datasrc,NC_STRING);} - -/* return 1 if the next element in the datasrc is a fill value*/ -int -isfillvalue(Datasrc* datasrc) -{ -return srcpeek(datasrc) == NULL || istype(datasrc,NC_FILLVALUE); -} - -/* return 1 if the next element in the datasrc is nc_type*/ -int -istype(Datasrc* datasrc , nc_type nctype) -{ - NCConstant* ci = srcpeek(datasrc); - if(ci != NULL && ci->nctype == nctype) return 1; - return 0; -} - -int -isstringable(nc_type nctype) -{ - switch (nctype) { - case NC_CHAR: case NC_STRING: - case NC_BYTE: case NC_UBYTE: - case NC_FILLVALUE: - return 1; - default: break; - } - return 0; -} - -/**************************************************/ - -void -freedatasrc(Datasrc* src) -{ - efree(src); -} - -Datasrc* -allocdatasrc(void) -{ - Datasrc* src; - src = emalloc(sizeof(Datasrc)); - src->data = NULL; - src->index = 0; - src->length = 0; - src->prev = NULL; - return src; -} - -Datasrc* -datalist2src(Datalist* list) -{ - Datasrc* src; - ASSERT(list != NULL); - src = allocdatasrc(); - src->data = list->data; - src->index = 0; - src->length = list->length; - DUMPSRC(src,"#"); - return src; -} - -Datasrc* -const2src(NCConstant* con) -{ - Datasrc* src; - ASSERT(con != NULL); - src = allocdatasrc(); - src->data = con; - src->index = 0; - src->length = 1; - DUMPSRC(src,"#"); - return src; -} - -NCConstant -list2const(Datalist* list) -{ - NCConstant con; - ASSERT(list != NULL); - con.nctype = NC_COMPOUND; - con.lineno = list->data[0].lineno; - con.value.compoundv = list; - con.filled = 0; - return con; -} - -Datalist* -const2list(NCConstant* con) -{ - Datalist* list; - ASSERT(con != NULL); - list = builddatalist(1); - if(list != NULL) { - dlappend(list,con); - } - return list; -} - -NCConstant* -srcpeek(Datasrc* ds) -{ - if(ds == NULL) return NULL; - if(ds->index < ds->length) - return &ds->data[ds->index]; - if(ds->spliced) - return srcpeek(ds->prev); - return NULL; -} - -void -srcreset(Datasrc* ds) -{ - ds->index = 0; -} - -NCConstant* -srcnext(Datasrc* ds) -{ - DUMPSRC(ds,"!"); - if(ds == NULL) return NULL; - if(ds->index < ds->length) - return &ds->data[ds->index++]; - if(ds->spliced) { - srcpop(ds); - return srcnext(ds); - } - return NULL; -} - -int -srcmore(Datasrc* ds) -{ - if(ds == NULL) return 0; - if(ds->index < ds->length) return 1; - if(ds->spliced) return srcmore(ds->prev); - return 0; -} - -int -srcline(Datasrc* ds) -{ - int index = ds->index; - int len = ds->length; - /* pick closest available entry*/ - if(len == 0) return 0; - if(index >= len) index = len-1; - return ds->data[index].lineno; -} - -void -srcpush(Datasrc* src) -{ - NCConstant* con; - ASSERT(src != NULL); - con = srcnext(src); - ASSERT(con->nctype == NC_COMPOUND); - srcpushlist(src,con->value.compoundv); -} - -void -srcpushlist(Datasrc* src, Datalist* dl) -{ - Datasrc* newsrc; - ASSERT(src != NULL && dl != NULL); - newsrc = allocdatasrc(); - *newsrc = *src; - src->prev = newsrc; - src->index = 0; - src->data = dl->data; - src->length = dl->length; - DUMPSRC(src,">!"); -} - -void -srcpop(Datasrc* src) -{ - if(src != NULL) { - Datasrc* prev = src->prev; - *src = *prev; - freedatasrc(prev); - } - DUMPSRC(src,"<"); -} - -void -srcsplice(Datasrc* ds, Datalist* list) -{ - srcpushlist(ds,list); - ds->spliced = 1; -} - -void -srcsetfill(Datasrc* ds, Datalist* list) -{ - if(ds->index >= ds->length) PANIC("srcsetfill: no space"); - if(ds->data[ds->index].nctype != NC_FILLVALUE) PANIC("srcsetfill: not fill"); - ds->data[ds->index].nctype = NC_COMPOUND; - ds->data[ds->index].value.compoundv = list; -} - - -/**************************************************/ -#ifdef GENDEBUG -void -report(char* lead, Datalist* list) -{ -extern void bufdump(Datalist*,Bytebuffer*); -Bytebuffer* buf = bbNew(); -bufdump(list,buf); -fprintf(stderr,"\n%s::%s\n",lead,bbContents(buf)); -fflush(stderr); -bbFree(buf); -} - -void -report0(char* lead, Datasrc* src, int index) -{ -} -#endif - -/**************************************************/ - -/* Shallow constant cloning*/ -NCConstant -cloneconstant(NCConstant* con) -{ - NCConstant newcon = *con; - char* s; - switch (newcon.nctype) { - case NC_STRING: - s = (char*)emalloc(newcon.value.stringv.len+1); - memcpy(s,newcon.value.stringv.stringv,newcon.value.stringv.len); - s[newcon.value.stringv.len] = '\0'; - newcon.value.stringv.stringv = s; - break; - case NC_OPAQUE: - s = (char*)emalloc(newcon.value.opaquev.len+1); - memcpy(s,newcon.value.opaquev.stringv,newcon.value.opaquev.len); - s[newcon.value.opaquev.len] = '\0'; - newcon.value.opaquev.stringv = s; - break; - default: break; - } - return newcon; -} - -/**************************************************/ - -Datalist* -datalistclone(Datalist* dl) -{ - int i; - Datalist* clone = builddatalist(dl->length); - for(i=0;ilength;i++) { - clone->data[i] = cloneconstant(dl->data+i); - } - return clone; -} - -Datalist* -datalistconcat(Datalist* dl1, Datalist* dl2) -{ - NCConstant* vector; - ASSERT(dl1 != NULL); - if(dl2 == NULL) return dl1; - vector = (NCConstant*)erealloc(dl1->data,sizeof(NCConstant)*(dl1->length+dl2->length)); - if(vector == NULL) return NULL; - memcpy((void*)(vector+dl1->length),dl2->data,sizeof(NCConstant)*(dl2->length)); - dl1->data = vector; - return dl1; -} - -Datalist* -datalistappend(Datalist* dl, NCConstant* con) -{ - NCConstant* vector; - ASSERT(dl != NULL); - if(con == NULL) return dl; - vector = (NCConstant*)erealloc(dl->data,sizeof(NCConstant)*(dl->length+1)); - if(vector == NULL) return NULL; - vector[dl->length] = *con; - dl->length++; - dl->data = vector; - return dl; -} - -Datalist* -datalistreplace(Datalist* dl, unsigned int index, NCConstant* con) -{ - ASSERT(dl != NULL); - ASSERT(index < dl->length); - ASSERT(con != NULL); - dl->data[index] = *con; - return dl; -} - -int -datalistline(Datalist* ds) -{ - if(ds == NULL || ds->length == 0) return 0; - return ds->data[0].lineno; -} - - -/* Go thru a databuf of possibly nested constants - and insert commas as needed; ideally, this - operation should be idempotent so that - the caller need not worry about it having already - been applied. Also, handle situation where there may be missing - matching right braces. -*/ - -static char* commifyr(char* p, Bytebuffer* buf); -static char* wordstring(char* p, Bytebuffer* buf, int quote); - -void -commify(Bytebuffer* buf) -{ - char* list,*p; - - if(bbLength(buf) == 0) return; - list = bbDup(buf); - p = list; - bbClear(buf); - commifyr(p,buf); - bbNull(buf); - efree(list); -} - -/* Requires that the string be balanced - WRT to braces -*/ -static char* -commifyr(char* p, Bytebuffer* buf) -{ - int comma = 0; - int c; - while((c=*p++)) { - if(c == ' ') continue; - if(c == ',') continue; - else if(c == '}') { - break; - } - if(comma) bbCat(buf,", "); else comma=1; - if(c == '{') { - bbAppend(buf,'{'); - p = commifyr(p,buf); - bbAppend(buf,'}'); - } else if(c == '\'' || c == '\"') { - p = wordstring(p,buf,c); - } else { - bbAppend(buf,c); - p=word(p,buf); - } - } - return p; -} - -char* -word(char* p, Bytebuffer* buf) -{ - int c; - while((c=*p++)) { - if(c == '}' || c == ' ' || c == ',') break; - if(c == '\\') { - bbAppend(buf,c); - c=*p++; - if(!c) break; - } - bbAppend(buf,(char)c); - } - p--; /* leave terminator for parent */ - return p; -} - -static char* -wordstring(char* p, Bytebuffer* buf, int quote) -{ - int c; - bbAppend(buf,quote); - while((c=*p++)) { - if(c == '\\') { - bbAppend(buf,c); - c = *p++; - if(c == '\0') return --p; - } else if(c == quote) { - bbAppend(buf,c); - return p; - } - bbAppend(buf,c); - } - return p; -} - - -static const char zeros[] = - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; -void -alignbuffer(NCConstant* prim, Bytebuffer* buf) -{ - int alignment,pad,offset; - - if(prim->nctype == NC_ECONST) - alignment = nctypealignment(prim->value.enumv->typ.typecode); - else if(usingclassic && prim->nctype == NC_STRING) - alignment = nctypealignment(NC_CHAR); - else if(prim->nctype == NC_CHAR) - alignment = nctypealignment(NC_CHAR); - else - alignment = nctypealignment(prim->nctype); - offset = bbLength(buf); - pad = getpadding(offset,alignment); - if(pad > 0) { - bbAppendn(buf,(void*)zeros,pad); - } -} - - - -/* -Following routines are in support of language-oriented output -*/ - -void -codedump(Bytebuffer* buf) -{ - bbCatbuf(codebuffer,buf); - bbClear(buf); -} - -void -codepartial(const char* txt) -{ - bbCat(codebuffer,txt); -} - -void -codeline(const char* line) -{ - codepartial(line); - codepartial("\n"); -} - -void -codelined(int n, const char* txt) -{ - bbindent(codebuffer,n); - bbCat(codebuffer,txt); - codepartial("\n"); -} - -void -codeflush(void) -{ - if(bbLength(codebuffer) > 0) { - bbNull(codebuffer); - fputs(bbContents(codebuffer),stdout); - fflush(stdout); - bbClear(codebuffer); - } -} - -void -bbindent(Bytebuffer* buf, const int n) -{ - bbCat(buf,indented(n)); -} - -/* Provide an restrict snprintf that writes to an expandable buffer */ -/* Simulates a simple snprintf because apparently - the IRIX one is broken wrt return value. - Supports only %u %d %f %s and %% specifiers - with optional leading hh or ll. -*/ - -static void -vbbprintf(Bytebuffer* buf, const char* fmt, va_list argv) -{ - char tmp[128]; - const char* p; - int c; - int hcount; - int lcount; - - char* text; - - for(p=fmt;(c=*p++);) { - hcount = 0; lcount = 0; - switch (c) { - case '%': -retry: switch ((c=*p++)) { - case '\0': bbAppend(buf,'%'); p--; break; - case '%': bbAppend(buf,c); break; - case 'h': - hcount++; - while((c=*p) && (c == 'h')) {hcount++; p++;} - if(hcount > 2) hcount = 2; - goto retry; - case 'l': - lcount++; - while((c=*p) && (c == 'l')) { - lcount++; - p++; - } - if(lcount > 2) lcount = 2; - goto retry; - case 'u': - if(hcount == 2) { - snprintf(tmp,sizeof(tmp),"%hhu", - (unsigned int)va_arg(argv,unsigned int)); - } else if(hcount == 1) { - snprintf(tmp,sizeof(tmp),"%hu", - (unsigned int)va_arg(argv,unsigned int)); - } else if(lcount == 2) { - snprintf(tmp,sizeof(tmp),"%llu", - (unsigned long long)va_arg(argv,unsigned long long)); - } else if(lcount == 1) { - snprintf(tmp,sizeof(tmp),"%lu", - (unsigned long)va_arg(argv,unsigned long)); - } else { - snprintf(tmp,sizeof(tmp),"%u", - (unsigned int)va_arg(argv,unsigned int)); - } - bbCat(buf,tmp); - break; - case 'd': - if(hcount == 2) { - snprintf(tmp,sizeof(tmp),"%hhd", - (signed int)va_arg(argv,signed int)); - } else if(hcount == 1) { - snprintf(tmp,sizeof(tmp),"%hd", - (signed int)va_arg(argv,signed int)); - } else if(lcount == 2) { - snprintf(tmp,sizeof(tmp),"%lld", - (signed long long)va_arg(argv,signed long long)); - } else if(lcount == 1) { - snprintf(tmp,sizeof(tmp),"%ld", - (signed long)va_arg(argv,signed long)); - } else { - snprintf(tmp,sizeof(tmp),"%d", - (signed int)va_arg(argv,signed int)); - } - bbCat(buf,tmp); - break; - case 'f': - if(lcount > 0) { - snprintf(tmp,sizeof(tmp),"((double)%.16g)", - (double)va_arg(argv,double)); - } else { - snprintf(tmp,sizeof(tmp),"((float)%.8g)", - (double)va_arg(argv,double)); - } - bbCat(buf,tmp); - break; - case 's': - text = va_arg(argv,char*); - bbCat(buf,text); - break; - case 'c': - c = va_arg(argv,int); - bbAppend(buf,(char)c); - break; - default: - PANIC1("vbbprintf: unknown specifier: %c",(char)c); - } - break; - default: - bbAppend(buf,c); - } - } -} - -void -bbprintf(Bytebuffer* buf, const char *fmt, ...) -{ - va_list argv; - va_start(argv,fmt); - vbbprintf(buf,fmt,argv); - va_end(argv); -} - -void -bbprintf0(Bytebuffer* buf, const char *fmt, ...) -{ - va_list argv; - va_start(argv,fmt); - bbClear(buf); - vbbprintf(buf,fmt,argv); - va_end(argv); -} - -void -codeprintf(const char *fmt, ...) -{ - va_list argv; - va_start(argv,fmt); - vbbprintf(codebuffer,fmt,argv); - va_end(argv); -} - -NCConstant* -emptycompoundconst(int lineno, NCConstant* c) -{ - ASSERT(c != NULL); - c->lineno = lineno; - c->nctype = NC_COMPOUND; - c->value.compoundv = builddatalist(0); - c->filled = 0; - return c; -} - -NCConstant* -emptystringconst(int lineno, NCConstant* c) -{ - ASSERT(c != NULL); - c->lineno = lineno; - c->nctype = NC_STRING; - c->value.stringv.len = 0; - c->value.stringv.stringv = NULL; - c->filled = 0; - return c; -} - -#define INDENTMAX 256 -static char* dent = NULL; - -char* -indented(int n) -{ - char* indentation; - if(dent == NULL) { - dent = (char*)emalloc(INDENTMAX+1); - memset((void*)dent,' ',INDENTMAX); - dent[INDENTMAX] = '\0'; - } - if(n*4 >= INDENTMAX) n = INDENTMAX/4; - indentation = dent+(INDENTMAX - 4*n); - return indentation; -} - -void -dlextend(Datalist* dl) -{ - size_t newalloc; - newalloc = (dl->alloc > 0?2*dl->alloc:1); - dlsetalloc(dl,newalloc); -} - -void -dlsetalloc(Datalist* dl, size_t newalloc) -{ - NCConstant* newdata; - if(newalloc <= 0) newalloc = 1; - if(dl->alloc > 0) - newdata = (NCConstant*)erealloc((void*)dl->data,sizeof(NCConstant)*newalloc); - else { - newdata = (NCConstant*)emalloc(sizeof(NCConstant)*newalloc); - memset((void*)newdata,0,sizeof(NCConstant)*newalloc); - } - dl->alloc = newalloc; - dl->data = newdata; -} - - -Datalist* -builddatalist(int initial) -{ - Datalist* ci; - if(initial <= 0) initial = DATALISTINIT; - initial++; /* for header*/ - ci = (Datalist*)emalloc(sizeof(Datalist)); - memset((void*)ci,0,sizeof(Datalist)); /* only clear the hdr*/ - ci->data = (NCConstant*)emalloc(sizeof(NCConstant)*initial); - memset((void*)ci->data,0,sizeof(NCConstant)*initial); - ci->alloc = initial; - ci->length = 0; - return ci; -} - -void -dlappend(Datalist* dl, NCConstant* constant) -{ - if(dl->length >= dl->alloc) dlextend(dl); - if(constant == NULL) constant = &nullconstant; - dl->data[dl->length++] = *constant; -} - -NCConstant -builddatasublist(Datalist* dl) -{ - - NCConstant d; - d.nctype = NC_COMPOUND; - d.lineno = (dl->length > 0?dl->data[0].lineno:0); - d.value.compoundv = dl; - d.filled = 0; - return d; - -} - -/*! Function to free an allocated datalist. - - This function is used to free an individual datalist - object. It is possible, hypothetically, that a - datalist will appear in the middle of a set of datalists, - in which case we'll need to determine that and shuffle around - 'next' pointers. For the time being, this assumes that - we are freeing a datalist which was allocated locally - and must be discarded. - - Using this function instead of an inline 'free' just in - case we ever want to extend it, we won't have to go back - and re-write a bunch of stuff. I hope. - - @param dlist Pointer to datalist object being freed. - - */ -void dlfree(Datalist **dlist) { - - if(*dlist) free(*dlist); - dlist = NULL; -} - - diff --git a/contrib/netcdf/4.4.1.1/ncgen/debug.c b/contrib/netcdf/4.4.1.1/ncgen/debug.c deleted file mode 100644 index 468986f7b6f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/debug.c +++ /dev/null @@ -1,79 +0,0 @@ -/********************************************************************* - * Copyright 2009, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ -/* $Id: debug.c,v 1.2 2010/05/24 19:59:57 dmh Exp $ */ -/* $Header: /upc/share/CVS/netcdf-3/ncgen/debug.c,v 1.2 2010/05/24 19:59:57 dmh Exp $ */ - -#include "includes.h" - -extern char* ncclassname(nc_class); - -#ifdef DEBUG -int debug = 1; -#else -int debug = 0; -#endif - -void fdebug(const char *fmt, ...) -{ - va_list argv; - if(debug == 0) return; - va_start(argv,fmt); - (void)vfprintf(stderr,fmt,argv) ; -} - -/**************************************************/ - -/* Support debugging of memory*/ -/* Also guarantee that calloc zeros memory*/ -void* -chkcalloc(size_t size, size_t nelems) -{ - return chkmalloc(size*nelems); -} - -void* -chkmalloc(size_t size) -{ - void* memory = calloc(size,1); /* use calloc to zero memory*/ - if(memory == NULL) { - panic("malloc:out of memory"); - } - memset(memory,0,size); - return memory; -} - -void* -chkrealloc(void* ptr, size_t size) -{ - void* memory = realloc(ptr,size); - if(memory == NULL) { - panic("realloc:out of memory"); - } - return memory; -} - -void -chkfree(void* mem) -{ - if(mem != NULL) free(mem); -} - -int -panic(const char* fmt, ...) -{ - va_list args; - if(fmt != NULL) { - va_start(args, fmt); - vfprintf(stderr, fmt, args); - fprintf(stderr, "\n" ); - va_end( args ); - } else { - fprintf(stderr, "panic" ); - } - fprintf(stderr, "\n" ); - fflush(stderr); - abort(); - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/ncgen/genbin.c b/contrib/netcdf/4.4.1.1/ncgen/genbin.c deleted file mode 100644 index 26a85c08dfe..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/genbin.c +++ /dev/null @@ -1,542 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/genbin.c,v 1.4 2010/05/27 21:34:17 dmh Exp $ - *********************************************************************/ - -#include "includes.h" -#include /* for isprint() */ - -#ifdef ENABLE_BINARY - -#undef TRACE - -/* Forward*/ -static void genbin_defineattr(Symbol* asym); -static void genbin_definevardata(Symbol* vsym); -static int genbin_write(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*); -static int genbin_writevar(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*); -static int genbin_writeattr(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*); -#ifdef USE_NETCDF4 -static void genbin_deftype(Symbol* tsym); -static void genbin_definespecialattributes(Symbol* var); -#endif - -/* - * Generate C code for creating netCDF from in-memory structure. - */ -void -gen_netcdf(const char *filename) -{ - int stat, ncid; - int idim, ivar, iatt; - int ndims, nvars, natts, ngatts; - -#ifdef USE_NETCDF4 - int ntyps, ngrps, igrp; -#endif - - Bytebuffer* databuf = bbNew(); - - ndims = listlength(dimdefs); - nvars = listlength(vardefs); - natts = listlength(attdefs); - ngatts = listlength(gattdefs); -#ifdef USE_NETCDF4 - ntyps = listlength(typdefs); - ngrps = listlength(grpdefs); -#endif /*USE_NETCDF4*/ - - /* Turn on logging */ -#ifdef LOGGING - nc_set_log_level(ncloglevel); -#endif - - /* create netCDF file, uses NC_CLOBBER mode */ - cmode_modifier |= NC_CLOBBER; -#ifdef USE_NETCDF4 - if(!usingclassic) - cmode_modifier |= NC_NETCDF4; -#endif - - stat = nc_create(filename, cmode_modifier, &ncid); - check_err(stat,__LINE__,__FILE__); - - /* ncid created above is also root group*/ - rootgroup->ncid = ncid; - -#ifdef USE_NETCDF4 - /* Define the group structure */ - /* walking grdefs list will do a preorder walk of all defined groups*/ - for(igrp=0;igrpcontainer->ncid,gsym->name,&gsym->ncid); - check_err(stat,__LINE__,__FILE__); - } -#endif - -#ifdef USE_NETCDF4 - /* Define the types*/ - if (ntyps > 0) { - int ityp; - for(ityp = 0; ityp < ntyps; ityp++) { - Symbol* tsym = (Symbol*)listget(typdefs,ityp); - genbin_deftype(tsym); - } - } -#endif - - /* define dimensions from info in dims array */ - if (ndims > 0) { - for(idim = 0; idim < ndims; idim++) { - Symbol* dsym = (Symbol*)listget(dimdefs,idim); - stat = nc_def_dim(dsym->container->ncid, - dsym->name, - (dsym->dim.isunlimited?NC_UNLIMITED:dsym->dim.declsize), - &dsym->ncid); - check_err(stat,__LINE__,__FILE__); - } - } - - /* define variables from info in vars array */ - if (nvars > 0) { - for(ivar = 0; ivar < nvars; ivar++) { - Symbol* vsym = (Symbol*)listget(vardefs,ivar); - if (vsym->typ.dimset.ndims > 0) { /* a dimensioned variable */ - /* construct a vector of dimension ids*/ - int dimids[NC_MAX_VAR_DIMS]; - for(idim=0;idimtyp.dimset.ndims;idim++) - dimids[idim] = vsym->typ.dimset.dimsyms[idim]->ncid; - stat = nc_def_var(vsym->container->ncid, - vsym->name, - vsym->typ.basetype->ncid, - vsym->typ.dimset.ndims, - dimids, - &vsym->ncid); - } else { /* a scalar */ - stat = nc_def_var(vsym->container->ncid, - vsym->name, - vsym->typ.basetype->ncid, - vsym->typ.dimset.ndims, - NULL, - &vsym->ncid); - } - check_err(stat,__LINE__,__FILE__); - } - } - -#ifdef USE_NETCDF4 - /* define special variable properties */ - if(nvars > 0) { - for(ivar = 0; ivar < nvars; ivar++) { - Symbol* var = (Symbol*)listget(vardefs,ivar); - genbin_definespecialattributes(var); - } - } -#endif /*USE_NETCDF4*/ - -/* define global attributes */ - if(ngatts > 0) { - for(iatt = 0; iatt < ngatts; iatt++) { - Symbol* gasym = (Symbol*)listget(gattdefs,iatt); - genbin_defineattr(gasym); - } - } - - /* define per-variable attributes */ - if(natts > 0) { - for(iatt = 0; iatt < natts; iatt++) { - Symbol* asym = (Symbol*)listget(attdefs,iatt); - genbin_defineattr(asym); - } - } - - if (nofill_flag) { - stat = nc_set_fill(rootgroup->ncid, NC_NOFILL, 0); - check_err(stat,__LINE__,__FILE__); - } - - /* leave define mode */ - stat = nc_enddef(rootgroup->ncid); - check_err(stat,__LINE__,__FILE__); - - if(!header_only) { - /* Load values into those variables with defined data */ - if(nvars > 0) { - for(ivar = 0; ivar < nvars; ivar++) { - Symbol* vsym = (Symbol*)listget(vardefs,ivar); - if(vsym->data != NULL) { - bbClear(databuf); - genbin_definevardata(vsym); - } - } - } - } - bbFree(databuf); -} - -#ifdef USE_NETCDF4 - -#if 0 -Turn off for now. - -static void -genbin_defineglobalspecials(void) -{ - int stat = NC_NOERR; - const char* format = NULL; - if(usingclassic) return; - if(!/*Main.*/format_attribute) return; - /* Watch out, this is a global Attribute */ - format = kind_string(/*Main.*/format_flag); - stat = nc_put_att_text(rootgroup->ncid,NC_GLOBAL,"_Format",strlen(format),format); - check_err(stat,__LINE__,__FILE__); -} -#endif /*0*/ - -static void -genbin_definespecialattributes(Symbol* var) -{ - int stat; - Specialdata* special = &var->var.special; - if(special->flags & _STORAGE_FLAG) { - int storage = special->_Storage; - size_t* chunks = special->_ChunkSizes; - if(special->nchunks == 0 || chunks == NULL) chunks = NULL; - stat = nc_def_var_chunking(var->container->ncid, - var->ncid, - (storage == NC_CONTIGUOUS?NC_CONTIGUOUS - :NC_CHUNKED), - chunks); - check_err(stat,__LINE__,__FILE__); - } - if(special->flags & _FLETCHER32_FLAG) { - stat = nc_def_var_fletcher32(var->container->ncid, - var->ncid, - special->_Fletcher32); - check_err(stat,__LINE__,__FILE__); - } - if(special->flags & (_DEFLATE_FLAG | _SHUFFLE_FLAG)) { - stat = nc_def_var_deflate(var->container->ncid, - var->ncid, - (special->_Shuffle == 1?1:0), - (special->_DeflateLevel >= 0?1:0), - (special->_DeflateLevel >= 0?special->_DeflateLevel - :0)); - check_err(stat,__LINE__,__FILE__); - } - if(special->flags & _ENDIAN_FLAG) { - stat = nc_def_var_endian(var->container->ncid, - var->ncid, - (special->_Endianness == NC_ENDIAN_LITTLE? - NC_ENDIAN_LITTLE - :NC_ENDIAN_BIG)); - check_err(stat,__LINE__,__FILE__); - } - if(special->flags & _NOFILL_FLAG) { - stat = nc_def_var_fill(var->container->ncid, - var->ncid, - (special->_Fill?NC_FILL:NC_NOFILL), - NULL); - check_err(stat,__LINE__,__FILE__); - } -} -#endif /*USE_NETCDF4*/ - - -void -cl_netcdf(void) -{ - int stat; - stat = nc_close(rootgroup->ncid); - check_err(stat,__LINE__,__FILE__); -} - -#ifdef USE_NETCDF4 -/* -Generate type definitions -*/ -static void -genbin_deftype(Symbol* tsym) -{ - unsigned long i; - int stat; - - ASSERT(tsym->objectclass == NC_TYPE); - switch (tsym->subclass) { - case NC_PRIM: break; /* these are already taken care of*/ - case NC_OPAQUE: - stat = nc_def_opaque(tsym->container->ncid, - tsym->typ.size, - tsym->name, - &tsym->ncid); - check_err(stat,__LINE__,__FILE__); - break; - case NC_ENUM: - { - Bytebuffer* datum; - Datalist* ecdl; - stat = nc_def_enum(tsym->container->ncid, - tsym->typ.basetype->typ.typecode, - tsym->name, - &tsym->ncid); - check_err(stat,__LINE__,__FILE__); - datum = bbNew(); - ecdl = builddatalist(1); - dlextend(ecdl); /* make room for one constant*/ - ecdl->length = 1; - for(i=0;isubnodes);i++) { - Symbol* econst = (Symbol*)listget(tsym->subnodes,i); - ASSERT(econst->subclass == NC_ECONST); - generator_reset(bin_generator,NULL); - bbClear(datum); - generate_basetype(econst->typ.basetype,&econst->typ.econst,datum,NULL,bin_generator); - stat = nc_insert_enum(tsym->container->ncid, - tsym->ncid, - econst->name, - bbContents(datum)); - check_err(stat,__LINE__,__FILE__); - } - bbFree(datum); - dlfree(&ecdl); - } - break; - case NC_VLEN: - stat = nc_def_vlen(tsym->container->ncid, - tsym->name, - tsym->typ.basetype->ncid, - &tsym->ncid); - check_err(stat,__LINE__,__FILE__); - break; - case NC_COMPOUND: - stat = nc_def_compound(tsym->container->ncid, - tsym->typ.size, - tsym->name, - &tsym->ncid); - check_err(stat,__LINE__,__FILE__); - for(i=0;isubnodes);i++) { - Symbol* efield = (Symbol*)listget(tsym->subnodes,i); - ASSERT(efield->subclass == NC_FIELD); - if(efield->typ.dimset.ndims == 0){ - stat = nc_insert_compound( - tsym->container->ncid, - tsym->ncid, - efield->name, - efield->typ.offset, - efield->typ.basetype->ncid); - } else { - int j; - int dimsizes[NC_MAX_VAR_DIMS]; /* int because inside compound */ - /* Generate the field dimension constants*/ - for(j=0;jtyp.dimset.ndims;j++) { - unsigned int size = efield->typ.dimset.dimsyms[j]->dim.declsize; - dimsizes[j] = size; - } - stat = nc_insert_array_compound( - tsym->container->ncid, - tsym->ncid, - efield->name, - efield->typ.offset, - efield->typ.basetype->ncid, - efield->typ.dimset.ndims, - dimsizes); - } - check_err(stat,__LINE__,__FILE__); - } - break; - default: panic("definectype: unexpected type subclass"); - } -} -#endif /*USE_NETCDF4*/ - -static void -genbin_defineattr(Symbol* asym) -{ - Bytebuffer* databuf = bbNew(); - generator_reset(bin_generator,NULL); - generate_attrdata(asym,bin_generator,(Writer)genbin_write,databuf); -} - - -/* Following is patterned after the walk functions in semantics.c */ -static void -genbin_definevardata(Symbol* vsym) -{ - Bytebuffer* databuf; - if(vsym->data == NULL) return; - databuf = bbNew(); - generator_reset(bin_generator,NULL); - generate_vardata(vsym,bin_generator,(Writer)genbin_write,databuf); -} - -static int -genbin_write(Generator* generator, Symbol* sym, Bytebuffer* memory, - int rank, size_t* start, size_t* count) -{ - if(sym->objectclass == NC_ATT) - return genbin_writeattr(generator,sym,memory,rank,start,count); - else if(sym->objectclass == NC_VAR) - return genbin_writevar(generator,sym,memory,rank,start,count); - else - PANIC("illegal symbol for genbin_write"); - return NC_EINVAL; -} - -static int -genbin_writevar(Generator* generator, Symbol* vsym, Bytebuffer* memory, - int rank, size_t* start, -#ifdef USE_NOFILL - size_t* indices -#else - size_t* count -#endif - ) -{ - int stat = NC_NOERR; - char* data = bbContents(memory); -#ifdef USE_NOFILL - size_t count[NC_MAX_VAR_DIMS]; - { int i; for(i=0;i0?", ":""),(unsigned long)start[i]); - fprintf(stderr,"] "); - fprintf(stderr,"countset = ["); - for(i=0;i0?", ":""),(unsigned long)count[i]); - fprintf(stderr,"]\n"); - fflush(stderr); - } -#endif - - if(rank == 0) { - size_t count[1] = {1}; - stat = nc_put_var1(vsym->container->ncid, vsym->ncid, count, data); - } else { - stat = nc_put_vara(vsym->container->ncid, vsym->ncid, start, count, data); - } - check_err(stat,__LINE__,__FILE__); - bbClear(memory); - return stat; -} - -static int -genbin_writeattr(Generator* generator, Symbol* asym, Bytebuffer* databuf, - int rank, size_t* start, size_t* count) -{ - int stat; - size_t len; - Datalist* list; - int varid, grpid, typid; - Symbol* basetype = asym->typ.basetype; - - grpid = asym->container->ncid; - varid = (asym->att.var == NULL?NC_GLOBAL : asym->att.var->ncid); - typid = basetype->ncid; - - list = asym->data; - len = list->length; - - /* Use the specialized put_att_XX routines if possible*/ - if(isprim(basetype->typ.typecode)) { - switch (basetype->typ.typecode) { - case NC_BYTE: { - signed char* data = (signed char*)bbContents(databuf); - stat = nc_put_att_schar(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_CHAR: { - char* data = (char*)bbContents(databuf); - size_t slen = bbLength(databuf); - /* Revise length if slen == 0 */ - if(slen == 0) { - bbAppend(databuf,'\0'); - /* bbAppend frees the memory pointed to by char* data, - so re-assign. See Coverity issue: 1265731.*/ - data = (char*)bbContents(databuf); - slen++; - } - stat = nc_put_att_text(grpid,varid,asym->name,slen,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_SHORT: { - short* data = (short*)bbContents(databuf); - stat = nc_put_att_short(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_INT: { - int* data = (int*)bbContents(databuf); - stat = nc_put_att_int(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_FLOAT: { - float* data = (float*)bbContents(databuf); - stat = nc_put_att_float(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_DOUBLE: { - double* data = (double*)bbContents(databuf); - stat = nc_put_att_double(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; -#ifdef USE_NETCDF4 - case NC_STRING: { - const char** data; - data = (const char**)bbContents(databuf); - stat = nc_put_att_string(grpid,varid,asym->name, - bbLength(databuf)/sizeof(char*), - data); - } break; - case NC_UBYTE: { - unsigned char* data = (unsigned char*)bbContents(databuf); - stat = nc_put_att_uchar(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_USHORT: { - unsigned short* data = (unsigned short*)bbContents(databuf); - stat = nc_put_att_ushort(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_UINT: { - unsigned int* data = (unsigned int*)bbContents(databuf); - stat = nc_put_att_uint(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; - case NC_INT64: { - long long* data = (long long*)bbContents(databuf); - stat = nc_put_att_longlong(grpid,varid,asym->name,typid,len,data); - check_err2(stat,asym->lineno,__LINE__,__FILE__); - } break; - case NC_UINT64: { - unsigned long long* data = (unsigned long long*)bbContents(databuf); - stat = nc_put_att_ulonglong(grpid,varid,asym->name,typid,len,data); - check_err(stat,__LINE__,__FILE__); - } break; -#endif - default: PANIC1("genbin_defineattr: unexpected basetype: %d",basetype->typ.typecode); - } - } else { /* use the generic put_attribute for user defined types*/ - const char* data; - data = (const char*)bbContents(databuf); - stat = nc_put_att(grpid,varid,asym->name,typid, - len,(void*)data); - check_err(stat,__LINE__,__FILE__); -#ifdef GENDEBUG - { - char out[4096]; - memset(out,0x77,sizeof(out)); - stat = nc_get_att(grpid,varid,asym->name,&out); - check_err(stat,__LINE__,__FILE__); - } -#endif - } - return stat; -} - -#endif /*ENABLE_BINARY*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen/generr.c b/contrib/netcdf/4.4.1.1/ncgen/generr.c deleted file mode 100644 index 2770b5d3d65..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/generr.c +++ /dev/null @@ -1,174 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/generr.c,v 1.1 2009/09/25 18:22:22 dmh Exp $ - *********************************************************************/ - -#include "includes.h" -#include /* for isprint() */ - -int error_count; - -#ifndef NO_STDARG -#define vastart(argv,fmt) va_start(argv,fmt) -#else -#define vastart(argv,fmt) va_start(argv) -#endif - -/* - * Invalidate variable list. - */ -#ifndef NO_STDARG -#define vaend(argv,fmt) va_end(argv) -#else -#define vaend(argv,fmt) va_end(argv) -#endif - -/* - * For logging error conditions. - * Designed to be called by other vararg procedures - */ -#ifndef NO_STDARG -void -vderror(const char *fmt, va_list argv) -#else -/* Technically illegal; va_alist should be only arg */ -void -vderror(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - (void) vdwarn(fmt,argv); - error_count++; -} - -/* - * For logging error conditions. - * Designed to be called by other vararg procedures - */ -#ifndef NO_STDARG -void -vdwarn(const char *fmt, va_list argv) -#else -/* Technically illegal; va_alist should be only arg */ -void -vdwarn(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - (void) vfprintf(stderr,fmt,argv) ; - (void) fputc('\n',stderr) ; - (void) fflush(stderr); /* to ensure log files are current */ -} - -#ifndef NO_STDARG -void -derror(const char *fmt, ...) -#else -void -derror(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - va_list argv; - vastart(argv,fmt); - vderror(fmt,argv); -} - -/* Report version errors */ -#ifndef NO_STDARG -void -verror(const char *fmt, ...) -#else -void -verror(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - char newfmt[2048]; - va_list argv; - vastart(argv,fmt); - strcpy(newfmt,"netCDF classic: not supported: "); - strncat(newfmt,fmt,2000); - vderror(newfmt,argv); - vaend(argv,fmt); -} - -#ifndef NO_STDARG -void -semwarn(const int lno, const char *fmt, ...) -#else -void -semwarn(lno,fmt,va_alist) const int lno; const char* fmt; va_dcl -#endif -{ - va_list argv; - vastart(argv,fmt); - (void)fprintf(stderr,"%s: %s line %d: ", progname, cdlname, lno); - vdwarn(fmt,argv); -} - -#ifndef NO_STDARG -void -semerror(const int lno, const char *fmt, ...) -#else -void -semerror(lno,fmt,va_alist) const int lno; const char* fmt; va_dcl -#endif -{ - va_list argv; - vastart(argv,fmt); - (void)fprintf(stderr,"%s: %s line %d: ", progname, cdlname, lno); - vderror(fmt,argv); - exit(1); /* immediately fatal */ -} - -/* Capture potential version errors */ -static char* markcdf4_msg = NULL; -void -markcdf4(const char* msg) -{ - enhanced_flag = 1; - if(markcdf4_msg == NULL) - markcdf4_msg = (char*)msg; -} - -char* -getmarkcdf4(void) -{ - return markcdf4_msg; -} - -/* Capture potential version errors */ -static char* markcdf5_msg = NULL; -void -markcdf5(const char* msg) -{ - cdf5_flag = 1; - if(markcdf5_msg == NULL) - markcdf5_msg = (char*)msg; -} - -char* -getmarkcdf5(void) -{ - return markcdf5_msg; -} - -/**************************************************/ -/* Provide a version of snprintf that panics if*/ -/* the buffer is overrun*/ - -#ifndef NO_STDARG -void -nprintf(char* buffer, size_t size, const char *fmt, ...) -#else -void -nprintf(buffer,size,fmt) - char* buffer; size_t size; const char* fmt; va_dcl -#endif -{ - long written; - va_list args; - vastart(args,fmt); - written = vsnprintf(buffer,size,fmt,args); - if(written < 0 || written >= size) { - PANIC("snprintf failure"); - } -} diff --git a/contrib/netcdf/4.4.1.1/ncgen/generr.h b/contrib/netcdf/4.4.1.1/ncgen/generr.h deleted file mode 100644 index ec4b21cec6f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/generr.h +++ /dev/null @@ -1,47 +0,0 @@ -/********************************************************************* - * Copyright 2009, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ -/* $Id: generr.h,v 1.2 2010/05/24 19:59:57 dmh Exp $ */ -/* $Header: /upc/share/CVS/netcdf-3/ncgen/generr.h,v 1.2 2010/05/24 19:59:57 dmh Exp $ */ - -#ifndef GENERR_H -#define GENERR_H - -extern int error_count; - -#ifndef NO_STDARG -#define vastart(argv,fmt) va_start(argv,fmt) -#else -#define vastart(argv,fmt) va_start(argv) -#endif - -#ifndef NO_STDARG -#define vaend(argv,fmt) va_end(argv) -#else -#define vaend(argv,fmt) va_end(argv) -#endif - -#ifndef NO_STDARG -#include -extern void vderror(const char *fmt, va_list argv); -extern void vdwarn(const char *fmt, va_list argv); -extern void derror(const char *fmt, ...); -extern int panic(const char* fmt, ...); -extern void nprintf(char* buffer, size_t size, const char *fmt, ...); -extern void semerror(const int, const char *fmt, ...); -extern void semwarn(const int, const char *fmt, ...); -#else -#include -/* Technically illegal; va_alist should be only arg */ -extern void vderror(fmt,va_alist) const char* fmt; va_dcl; -extern void vdwarn(fmt,va_alist) const char* fmt; va_dcl; -extern void derror(fmt,va_alist) const char* fmt; va_dcl; -extern void panic(fmt,va_alist) const char* fmt; va_dcl; -extern void nprintf(buffer,size,fmt) - char* buffer; size_t size; const char* fmt; va_dcl; -extern void semerror(lno,fmt,va_alist) const int lno; const char* fmt; va_dcl; -extern void semwarnlno,fmt,va_alist) const int lno; const char* fmt; va_dcl; -#endif - -#endif /*GENERR_H*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen/genlib.c b/contrib/netcdf/4.4.1.1/ncgen/genlib.c deleted file mode 100644 index 990903cf82c..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/genlib.c +++ /dev/null @@ -1,226 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/genlib.c,v 1.57 2010/04/04 19:39:47 dmh Exp $ - *********************************************************************/ - -#include "includes.h" - -/* invoke netcdf calls (or generate C or Fortran code) to create netcdf - * from in-memory structure. -The output file name is chosen by using the following in priority order: -1. -o flag name -2. command line input file with .cdl changed to .nc -3. dataset name as specified in netcdf {...} -*/ -void -define_netcdf(void) -{ - char filename[2048+1]; - - /* Rule for specifying the dataset name: - 1. use -o name - 2. use input cdl file name - 3. use the datasetname - It would be better if there was some way - to specify the datasetname independently of the - file name, but oh well. - */ - if(netcdf_name) { /* -o flag name */ - strncpy(filename,netcdf_name,2048); - } else { /* construct a usable output file name */ - if (cdlname != NULL && strcmp(cdlname,"-") != 0) {/* cmd line name */ - char* p; - - strncpy(filename,cdlname,2048); - /* remove any suffix and prefix*/ - p = strrchr(filename,'.'); - if(p != NULL) {*p= '\0';} - p = strrchr(filename,'/'); - if(p != NULL) {memmove(filename,(p+1),2048);} - - } else {/* construct name from dataset name */ - strncpy(filename,datasetname,2048); /* Reserve space for extension, terminating '\0' */ - } - /* Append the proper extension */ - strncat(filename,binary_ext,2048-(strlen(filename) + strlen(binary_ext))); - } - - /* Execute exactly one of these */ -#ifdef ENABLE_C - if (l_flag == L_C) gen_ncc(filename); else /* create C code to create netcdf */ -#endif -#ifdef ENABLE_F77 - if (l_flag == L_F77) gen_ncf77(filename); else /* create Fortran code */ -#endif -#ifdef ENABLE_JAVA - if(l_flag == L_JAVA) { - gen_ncjava(filename); - } else -#endif -/* Binary is the default */ -#ifdef ENABLE_BINARY - gen_netcdf(filename); /* create netcdf */ -#else - derror("No language specified"); -#endif - close_netcdf(); - cleanup(); -} - -void -close_netcdf(void) -{ -#ifdef ENABLE_C - if (l_flag == L_C) cl_c(); else /* create C code to close netcdf */ -#endif -#ifdef ENABLE_F77 - if (l_flag == L_F77) cl_f77(); else -#endif -#ifdef ENABLE_JAVA - if (l_flag == L_JAVA) cl_java(); else -#endif -#ifdef ENABLE_BINARY - if (l_flag == L_BINARY) cl_netcdf(); -#endif -} - -/** -Return a string representing -the fully qualified name of the symbol. -Symbol must be top level -Caller must free. -*/ -void -topfqn(Symbol* sym) -{ - char* fqn; - char* fqnname; - char* parentfqn; - Symbol* parent; - - if(sym->fqn != NULL) - return; /* already defined */ - -#ifdef USE_NETCDF4 - if(!usingclassic) { - parent = sym->container; - /* Recursively compute parent fqn */ - if(parent == NULL) { /* implies this is the rootgroup */ - assert(sym->grp.is_root); - sym->fqn = strdup(""); - return; - } else if(parent->fqn == NULL) { - topfqn(parent); - } - parentfqn = parent->fqn; - - fqnname = fqnescape(sym->name); - fqn = (char*)malloc(strlen(fqnname) + strlen(parentfqn) + 1 + 1); - strcpy(fqn,parentfqn); - strcat(fqn,"/"); - strcat(fqn,fqnname); - sym->fqn = fqn; - } else -#endif /*USE_NETCDF4*/ - { - sym->fqn = strdup(sym->name); - } -} - -/** -Return a string representing -the fully qualified name of a nested symbol -(i.e. field or econst). -Caller must free. -*/ -void -nestedfqn(Symbol* sym) -{ - char* fqn; - char* fqnname; - Symbol* parent; - - if(sym->fqn != NULL) - return; /* already defined */ - - /* Parent must be a type */ - parent = sym->container; - assert (parent->objectclass == NC_TYPE); - - assert(parent->fqn != NULL); - - fqnname = fqnescape(sym->name); - fqn = (char*)malloc(strlen(fqnname) + strlen(parent->fqn) + 1 + 1); - strcpy(fqn,parent->fqn); - strcat(fqn,"."); - strcat(fqn,fqnname); - sym->fqn = fqn; -} - -/** -Return a string representing -the fully qualified name of an attribute. -Caller must free. -*/ -void -attfqn(Symbol* sym) -{ - char* fqn; - char* fqnname; - char* parentfqn; - Symbol* parent; - - if(sym->fqn != NULL) - return; /* already defined */ - - assert (sym->objectclass == NC_ATT); - - parent = sym->container; - if(parent == NULL) - parentfqn = ""; - else - parentfqn = parent->fqn; - - fqnname = fqnescape(sym->name); - fqn = (char*)malloc(strlen(fqnname) + strlen(parentfqn) + 1 + 1); - strcpy(fqn,parentfqn); - strcat(fqn,"_"); - strcat(fqn,fqnname); - sym->fqn = fqn; -} - -#if 0 -/* Result is pool alloc'd*/ -char* -cprefixed(List* prefix, char* suffix, char* separator) -{ - int slen; - int plen; - int i; - char* result; - - ASSERT(suffix != NULL); - plen = prefixlen(prefix); - if(prefix == NULL || plen == 0) return codify(suffix); - /* plen > 0*/ - slen = 0; - for(i=0;iname)+strlen(separator)); - } - slen += strlen(suffix); - slen++; /* for null terminator*/ - result = poolalloc(slen); - result[0] = '\0'; - /* Leave off the root*/ - i = (rootgroup == (Symbol*)listget(prefix,0))?1:0; - for(;iname); /* append ""*/ - strcat(result,separator); - } - strcat(result,suffix); /* append ""*/ - return result; -} -#endif /*0*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen/genlib.h b/contrib/netcdf/4.4.1.1/ncgen/genlib.h deleted file mode 100644 index 9450b0dc816..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/genlib.h +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef NC_GENLIB_H -#define NC_GENLIB_H -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/genlib.h,v 1.20 2010/05/17 23:26:45 dmh Exp $ - *********************************************************************/ -#include "config.h" -#include -#include -#include "generr.h" - -/* break if C Line length exceeds this*/ -#define C_MAX_STMT 72 -/* break if FORTRAN Line length exceeds this*/ -#define F77_MAX_STMT 66 - -#define PATHSEPARATOR "/" - -/* Convenience*/ -#define REQUIRED 1 -#define DONTCARE -1 -#define NOTFLAT 0 - -#define nulllen(s) ((s)==NULL?0:strlen(s)) - -#define PRIMNO (NC_STRING - NC_NAT + 1) -extern struct Symbol* primsymbols[PRIMNO]; - -extern void derror ( const char *fmt, ... ) -#ifdef _GNUC_ - __attribute__ ((format (printf, 1, 2))) -#endif -; - -extern void verror ( const char *fmt, ... ) -#ifdef _GNUC_ - __attribute__ ((format (printf, 1, 2))) -#endif -; - -extern void markcdf4(const char *msg); -extern char* getmarkcdf4(void); - -extern void markcdf5(const char *msg); -extern char* getmarkcdf4(void); - - -/* -All external procedures in ncgen.h have been moved to this file. -*/ - -/* from: genlib.c */ -extern void define_netcdf(void);/* generates all define mode stuff */ -extern void close_netcdf ( void ); /* generates close */ -extern char* cprefixed(List* prefix, char* suffix, char* separator); -extern void topfqn(Symbol* sym); -extern void nestedfqn(Symbol* sym); -extern void attfqn(Symbol* sym); - -/* from: escapes.c */ -extern int unescape(char*, const char*, int, int); -extern int unescapeoct(const char* s); -extern int unescapehex(const char* s); -extern char* cescapifychar(unsigned int c, int quote); -extern char* codify(const char *name); -extern char* escapifychar(unsigned int c, char* s0, int quote); -extern char* escapify(char*,int,size_t); -extern char* escapifyname(char* s0); -extern void cquotestring(Bytebuffer*,char quote); -extern void f77quotestring(Bytebuffer*); -extern char* xescapify(char* s0, int quote, size_t len); -extern char* jescapify(char* s0, int quote, size_t len); -extern char* jescapifyname(char* s0); -extern char* fqnescape(const char* s); - -/* from: getfill.c */ -extern void nc_getfill(NCConstant*); -extern char* nc_dfaltfillname(nc_type); -extern struct Datalist* getfiller(Symbol*); /* symbol isa variable|type */ - -/* from: ncgen.y */ -extern Symbol* install(const char *sname); -extern Symbol* basetypefor(nc_type nctype);/* Convert nctype to a Symbol*/ -extern Symbol* makearraytype(Symbol*, Dimset*); - -/* from: cvt.c */ -extern void convert1(NCConstant*,NCConstant*); /* Convert an arbitrary value to another */ -extern void setprimlength(NCConstant* prim, unsigned long len); -extern struct Datalist* convertstringtochars(NCConstant* str); - - -/* from: semantic.c */ -extern void processsemantics(void); -extern size_t nctypesize(nc_type); -extern Symbol* locate(Symbol* refsym); -extern Symbol* lookup(nc_class objectclass, Symbol* pattern); -extern Symbol* lookupingroup(nc_class objectclass, char* name, Symbol* grp); -extern Symbol* lookupgroup(List* prefix); -extern int nounlimited(Dimset* dimset, int from); -extern int lastunlimited(Dimset* dimset); -extern void padstring(NCConstant* con, size_t desiredlength, int fillchar); - -extern Datalist* explodestrings(Datalist*,char*); -extern Datalist* implodestrings(Datalist*,char*); -extern int explodestringconst(NCConstant* con, char* tag, NCConstant*); - -extern char* indented(int n); - -/* Generators for cdf, c, and fortran */ - -#ifdef ENABLE_BINARY -/* from: genbin.c */ -extern Generator* bin_generator; -extern void gen_netcdf(const char *filename); -extern void cl_netcdf(void); -#endif - -#ifdef ENABLE_C -/* from: genc.c */ -extern Generator* c_generator; -extern void gen_ncc(const char *filename); -extern void cl_c(void); -extern const char* ctypename(Symbol*); -extern const char* nctype(nc_type type); -extern const char* ncctype(nc_type type); -extern const char* ncstype(nc_type type); -extern const char* cname(Symbol* sym); - -#endif - -#ifdef ENABLE_F77 -/* from: genf77.c */ -extern Generator* f77_generator; -extern void gen_ncf77(const char *filename); -extern void cl_f77(void); -extern const char* f77name(Symbol*); -extern const char* f77typename(Symbol*); -#endif - -#ifdef ENABLE_JAVA -/* from: genj.c */ -extern Generator* j_generator; -extern void gen_ncjava(const char *filename); -extern void cl_java(void); -extern void jpartial(char*); -extern void jline(char*); -extern void jlined(int,char*); -extern void jflush(void); -#endif - - -/* from: main.c */ -extern int k_flag; /* -k value from command line*/ -extern int format_attribute; /* 1 if format came from _FORMAT attribute */ -extern int enhanced_flag; /* 1 => netcdf-4 constructs appear in the parse */ -extern int cdf5_flag; /* 1 => cdf-5 unsigned types in the parse */ -extern int specials_flag; /* 1 => special attributes are present */ -extern int usingclassic; /* 1 => k_flag == 1|2|5 */ -extern int k_flag; -extern int ncloglevel; -extern GlobalSpecialData globalspecials; - -/* Global data */ - -extern Symbol* symlist; /* all symbol objects created */ -extern Symbol* rootgroup; - -/* Track definitions of dims, types, attributes, and vars*/ -extern List* grpdefs; -extern List* dimdefs; -extern List* attdefs; -extern List* gattdefs; -extern List* xattdefs; -extern List* typdefs; -extern List* vardefs; -extern List* condefs; - -extern int CDFmodel; - -extern int lineno; -extern int derror_count; -extern int kflag_flag; -extern int cmode_modifier; -extern Language l_flag; -extern char* binary_ext; -extern int nofill_flag; -extern int header_only; -extern char* mainname; -extern size_t nciterbuffersize; - -extern char* progname; /* for error messages*/ -extern char *netcdf_name; /* command line -o file name */ -extern char *datasetname; /* name from the netcdf {} */ -extern char *cdlname; /* name from the command line */ - -/* from: util.c */ -extern void* emalloc (size_t); -extern void* ecalloc (size_t); -extern void* erealloc(void*,size_t); - -extern const char* specialname(int tag); - -#endif /*!NC_GENLIB_H*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen/getfill.c b/contrib/netcdf/4.4.1.1/ncgen/getfill.c deleted file mode 100644 index 8b50d649918..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/getfill.c +++ /dev/null @@ -1,202 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/getfill.c,v 1.8 2010/04/14 22:04:56 dmh Exp $ - *********************************************************************/ - -#include "includes.h" -#include "dump.h" - -/* mnemonic*/ -#define TOPLEVEL 1 - -/*Forward*/ -static void fill(Symbol* tsym, Datalist*); -static void fillarray(Symbol* tsym, Dimset* dimset, int index, Datalist*); -static void filllist(Symbol* tvsym, Datalist* dl); - -/* Construct a Datalist representing a complete fill value*/ -/* for a specified variable */ -/* Cache if needed later*/ - -Datalist* -getfiller(Symbol* tvsym) -{ - Datalist* filler = NULL; - Symbol* tsym = tvsym; - ASSERT(tvsym->objectclass == NC_VAR || tvsym->objectclass == NC_TYPE); - if(tvsym->objectclass == NC_VAR) { - tsym = tvsym->typ.basetype; - filler = tvsym->var.special._Fillvalue; /* get cached value (if any)*/ - } - if(filler == NULL || tvsym->objectclass == NC_TYPE) { - filler = tvsym->typ._Fillvalue; /* get cached value (if any)*/ - } - if(filler == NULL) { /* need to compute it*/ - filler = builddatalist(0); - fill(tsym,filler); - } -#ifdef GENDEBUG2 - dumpdatalist(filler,"getfiller"); -#endif - if(tvsym->objectclass == NC_VAR) { - tvsym->var.special._Fillvalue = filler; - } else if(tvsym->objectclass == NC_TYPE) { - tvsym->typ._Fillvalue = filler; /* cache value*/ - } - return filler; -} - -static void -fill(Symbol* tsym, Datalist* filler) -{ - unsigned long i; - NCConstant con = nullconstant; - Datalist* sublist; - - ASSERT(tsym->objectclass == NC_TYPE); - switch (tsym->subclass) { - case NC_ENUM: case NC_OPAQUE: case NC_PRIM: - con.nctype = tsym->typ.typecode; - nc_getfill(&con); - break; - case NC_COMPOUND: - sublist = builddatalist(listlength(tsym->subnodes)); - for(i=0;isubnodes);i++) { - Symbol* field = (Symbol*)listget(tsym->subnodes,i); - if(field->typ.dimset.ndims > 0) { - fillarray(field->typ.basetype,&field->typ.dimset,0,filler); - } else - filllist(field->typ.basetype,sublist); - } - con = builddatasublist(sublist); - break; - case NC_VLEN: - sublist = builddatalist(0); - filllist(tsym->typ.basetype,sublist); /* generate a single instance*/ - con = builddatasublist(sublist); - break; - default: PANIC1("fill: unexpected subclass %d",tsym->subclass); - } - dlappend(filler,&con); -} - -static void -filllist(Symbol* tsym, Datalist* dl) -{ - int i; - Datalist* sublist; - NCConstant con = nullconstant; - - ASSERT(tsym->objectclass == NC_TYPE); - switch (tsym->subclass) { - case NC_ENUM: case NC_OPAQUE: case NC_PRIM: - con.nctype = tsym->typ.typecode; - nc_getfill(&con); - dlappend(dl,&con); - break; - case NC_COMPOUND: - sublist = builddatalist(listlength(tsym->subnodes)); - for(i=0;isubnodes);i++) { - Symbol* field = (Symbol*)listget(tsym->subnodes,i); - filllist(field->typ.basetype,sublist); - } - con = builddatasublist(sublist); - dlappend(dl,&con); - break; - case NC_VLEN: - sublist = builddatalist(0); - filllist(tsym->typ.basetype,sublist); /* generate a single instance*/ - con = builddatasublist(sublist); - dlappend(dl,&con); - break; - default: PANIC1("fill: unexpected subclass %d",tsym->subclass); - } -} - -static void -fillarray(Symbol* basetype, Dimset* dimset, int index, Datalist* arraylist) -{ - int i; - Symbol* dim = dimset->dimsyms[index]; - unsigned int size = dim->dim.declsize; - int isunlimited = (size == 0); - int lastdim = (index == (dimset->ndims - 1)); - int firstdim = (index == 0); - Datalist* sublist; - - sublist = (firstdim?builddatalist(0):arraylist); - if(isunlimited) { - /* do a single entry to satisfy*/ - if(lastdim) { - filllist(basetype,sublist); - } else { - fillarray(basetype->typ.basetype,dimset,index+1,sublist); - } - } else { /* bounded*/ - if(lastdim) { - for(i=0;ityp.basetype,dimset,index+1,sublist); - } - } - } -} - -/* - * Given primitive netCDF type, return a default fill_value appropriate for - * that type. - */ -void -nc_getfill(NCConstant* value) -{ - switch(value->nctype) { - case NC_CHAR: value->value.charv = NC_FILL_CHAR; break; - case NC_BYTE: value->value.int8v = NC_FILL_BYTE; break; - case NC_SHORT: value->value.int16v = NC_FILL_SHORT; break; - case NC_INT: value->value.int32v = NC_FILL_INT; break; - case NC_FLOAT: value->value.floatv = NC_FILL_FLOAT; break; - case NC_DOUBLE: value->value.doublev = NC_FILL_DOUBLE; break; - case NC_UBYTE: value->value.uint8v = NC_FILL_UBYTE; break; - case NC_USHORT: value->value.uint16v = NC_FILL_USHORT; break; - case NC_UINT: value->value.uint32v = NC_FILL_UINT; break; - case NC_INT64: value->value.int64v = NC_FILL_INT64; break; - case NC_UINT64: value->value.uint64v = NC_FILL_UINT64; break; - case NC_STRING: - value->value.stringv.stringv = nulldup(NC_FILL_STRING); - value->value.stringv.len = (int)strlen(NC_FILL_STRING); - /* Exception: if string is null, then make it's length be 1 */ - if(value->value.stringv.len == 0) - value->value.stringv.len = 1; - break; - case NC_OPAQUE: - value->value.opaquev.len = 2; - value->value.opaquev.stringv = nulldup("00"); - break; - default: - derror("nc_getfill: unrecognized type: %d",value->nctype); - } -} - -char* -nc_dfaltfillname(nc_type nctype) -{ - switch (nctype) { - case NC_BYTE: return "NC_FILL_BYTE"; - case NC_CHAR: return "NC_FILL_CHAR"; - case NC_SHORT: return "NC_FILL_SHORT"; - case NC_INT: return "NC_FILL_INT"; - case NC_FLOAT: return "NC_FILL_FLOAT"; - case NC_DOUBLE: return "NC_FILL_DOUBLE"; - case NC_UBYTE: return "NC_FILL_UBYTE"; - case NC_USHORT: return "NC_FILL_USHORT"; - case NC_UINT: return "NC_FILL_UINT"; - case NC_INT64: return "NC_FILL_INT64"; - case NC_UINT64: return "NC_FILL_UINT64"; - case NC_STRING: return "NC_FILL_STRING"; - default: PANIC("unexpected default fill name"); - } - return NULL; -} - diff --git a/contrib/netcdf/4.4.1.1/ncgen/main.c b/contrib/netcdf/4.4.1.1/ncgen/main.c deleted file mode 100644 index b295fc8c9a5..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/main.c +++ /dev/null @@ -1,591 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - *********************************************************************/ -/* $Id: main.c,v 1.33 2010/05/26 21:43:36 dmh Exp $ */ -/* $Header: /upc/share/CVS/netcdf-3/ncgen/main.c,v 1.33 2010/05/26 21:43:36 dmh Exp $ */ - -#include "includes.h" -#include "offsets.h" -#ifdef HAVE_GETOPT_H -#include -#endif - -#ifdef _MSC_VER -#include "XGetopt.h" -#define snprintf _snprintf -int opterr; -int optind; -#endif - -/* Default is netcdf-3 mode 1 */ -#define DFALTCMODE 0 - -extern void init_netcdf(void); -extern void parse_init(void); -extern int ncgparse(void); - -/* For error messages */ -char* progname; -char* cdlname; - -/* option flags */ -int nofill_flag; -char* mainname; /* name to use for main function; defaults to "main"*/ -Language l_flag; -int syntax_only; -int header_only; - -/* flags for tracking what output format to use */ -int k_flag; /* > 0 => -k was specified on command line*/ -int format_attribute; /* 1=>format came from format attribute */ -int enhanced_flag; /* 1 => netcdf-4 */ -int cdf5_flag; /* 1 => cdf5 | maybe netcdf-4 */ -int specials_flag; /* 1=> special attributes are present */ -int usingclassic; -int cmode_modifier; -int diskless; -int ncloglevel; - -GlobalSpecialData globalspecials; - -char* binary_ext = ".nc"; - -size_t nciterbuffersize; - -struct Vlendata* vlendata; - -char *netcdf_name; /* command line -o file name */ -char *datasetname; /* name from the netcdf {} */ - -extern FILE *ncgin; - -/* Forward */ -static char* ubasename(char*); -void usage( void ); -int main( int argc, char** argv ); - -/* Define tables vs modes for legal -k values*/ -struct Kvalues legalkinds[NKVALUES] = { - /* NetCDF-3 classic format (32-bit offsets) */ - {"classic", NC_FORMAT_CLASSIC}, /* canonical format name */ - {"nc3", NC_FORMAT_CLASSIC}, /* short format name */ - {"1", NC_FORMAT_CLASSIC}, /* deprecated, use "-3" or "-k nc3" instead */ - - /* NetCDF-3 64-bit offset format */ - {"64-bit offset", NC_FORMAT_64BIT_OFFSET}, /* canonical format name */ - {"nc6", NC_FORMAT_64BIT_OFFSET}, /* short format name */ - {"2", NC_FORMAT_64BIT_OFFSET}, /* deprecated, use "-6" or "-k nc6" instead */ - {"64-bit-offset", NC_FORMAT_64BIT_OFFSET}, /* aliases */ - - /* NetCDF-4 HDF5-based format */ - {"netCDF-4", NC_FORMAT_NETCDF4}, /* canonical format name */ - {"nc4", NC_FORMAT_NETCDF4}, /* short format name */ - {"3", NC_FORMAT_NETCDF4}, /* deprecated, use "-4" or "-k nc4" instead */ - {"netCDF4", NC_FORMAT_NETCDF4}, /* aliases */ - {"hdf5", NC_FORMAT_NETCDF4}, - {"enhanced", NC_FORMAT_NETCDF4}, - {"netcdf-4", NC_FORMAT_NETCDF4}, - {"netcdf4", NC_FORMAT_NETCDF4}, - - /* NetCDF-4 HDF5-based format, restricted to classic data model */ - {"netCDF-4 classic model", NC_FORMAT_NETCDF4_CLASSIC}, /* canonical format name */ - {"nc7", NC_FORMAT_NETCDF4_CLASSIC}, /* short format name */ - {"4", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated, use "-7" or -k nc7" instead */ - {"netCDF-4-classic", NC_FORMAT_NETCDF4_CLASSIC}, /* aliases */ - {"netCDF-4_classic", NC_FORMAT_NETCDF4_CLASSIC}, - {"netCDF4_classic", NC_FORMAT_NETCDF4_CLASSIC}, - {"hdf5-nc3", NC_FORMAT_NETCDF4_CLASSIC}, - {"enhanced-nc3", NC_FORMAT_NETCDF4_CLASSIC}, - - /* CDF-5 format */ - {"5", NC_FORMAT_64BIT_DATA}, - {"64-bit-data", NC_FORMAT_64BIT_DATA}, - {"64-bit data", NC_FORMAT_64BIT_DATA}, - {"nc5", NC_FORMAT_64BIT_DATA}, - {"cdf5", NC_FORMAT_64BIT_DATA}, - {"cdf-5", NC_FORMAT_64BIT_DATA}, - - /* null terminate*/ - {NULL,0} -}; - -#ifndef _MSC_VER -struct Languages { - char* name; - Language flag; -} legallanguages[] = { -{"b", L_BINARY}, -{"c", L_C}, -{"C", L_C}, -{"f77", L_F77}, -{"fortran77", L_F77}, -{"Fortran77", L_F77}, -{"j", L_JAVA}, -{"java", L_JAVA}, -{NULL,L_UNDEFINED} -}; -#else -typedef struct Languages { - char* name; - Language flag; -} Languages; - -struct Languages legallanguages[] = { -{"b", L_BINARY}, -{"c", L_C}, -{"C", L_C}, -{"f77", L_F77}, -{"fortran77", L_F77}, -{"Fortran77", L_F77}, -{"j", L_JAVA}, -{"java", L_JAVA}, -{NULL,L_UNDEFINED} -}; -#endif - -#if 0 /*not used*/ -/* BOM Sequences */ -static char* U8 = "\xEF\xBB\xBF"; /* UTF-8 */ -static char* BE32 = "\x00\x00\xFE\xFF"; /* UTF-32; big-endian */ -static char* LE32 = "\xFF\xFE"; /* UTF-32; little-endian */ -static char* BE16 = "\xFE\xFF"; /* UTF-16; big-endian */ -static char* LE16 = "\xFF\xFE"; /* UTF-16; little-endian */ -#endif - -/* The default minimum iterator size depends - on whether we are doing binary or language - based output. -*/ -#define DFALTBINNCITERBUFFERSIZE 0x40000 /* about 250k bytes */ -#define DFALTLANGNCITERBUFFERSIZE 0x4000 /* about 15k bytes */ - -/* strip off leading path */ -/* result is malloc'd */ - -static char * -ubasename(char *logident) -{ - char* sep; - - sep = strrchr(logident,'/'); -#ifdef MSDOS - if(sep == NULL) sep = strrchr(logident,'\\'); -#endif - if(sep == NULL) return logident; - sep++; /* skip past the separator */ - return sep; -} - -void -usage(void) -{ - derror("Usage: %s" -" [-1]" -" [-3]" -" [-4]" -" [-5]" -" [-6]" -" [-7]" -" [-b]" -" [-B buffersize]" -" [-d]" -" [-D debuglevel]" -" [-h]" -" [-k kind ]" -" [-l language=b|c|f77|java]" -" [-M ]" -" [-n]" -" [-o outfile]" -" [-P]" -" [-x]" -" [file ... ]", - progname); - derror("netcdf library version %s", nc_inq_libvers()); -} - -int -main( - int argc, - char *argv[]) -{ - int c; - FILE *fp; - struct Languages* langs; - char* lang_name; -#ifdef __hpux - setlocale(LC_CTYPE,""); -#endif - - init_netcdf(); - - opterr = 1; /* print error message if bad option */ - progname = ubasename(argv[0]); - cdlname = "-"; - netcdf_name = NULL; - datasetname = NULL; - l_flag = 0; - nofill_flag = 0; - syntax_only = 0; - header_only = 0; - mainname = "main"; - nciterbuffersize = 0; - - k_flag = 0; - format_attribute = 0; - enhanced_flag = 0; - cdf5_flag = 0; - specials_flag = 0; - diskless = 0; -#ifdef LOGGING - ncloglevel = NC_TURN_OFF_LOGGING; -#else - ncloglevel = -1; -#endif - memset(&globalspecials,0,sizeof(GlobalSpecialData)); - -#if _CRAYMPP && 0 - /* initialize CRAY MPP parallel-I/O library */ - (void) par_io_init(32, 32); -#endif - - while ((c = getopt(argc, argv, "134567bB:cdD:fhHk:l:M:no:Pv:xL:")) != EOF) - switch(c) { - case 'd': - debug = 1; - break; - case 'D': - debug = atoi(optarg); - break; - case 'c': /* for c output, old version of "-lc" */ - if(l_flag != 0) { - fprintf(stderr,"Please specify only one language\n"); - return 1; - } - l_flag = L_C; - fprintf(stderr,"-c is deprecated: please use -lc\n"); - break; - case 'f': /* for f77 output, old version of "-lf" */ - if(l_flag != 0) { - fprintf(stderr,"Please specify only one language\n"); - return 1; - } - l_flag = L_F77; - fprintf(stderr,"-f is deprecated: please use -lf77\n"); - break; - case 'b': /* for binary netcdf output, ".nc" extension */ - if(l_flag != 0) { - fprintf(stderr,"Please specify only one language\n"); - return 1; - } - l_flag = L_BINARY; - break; - case 'h': - header_only = 1; - break; - case 'H': - usage(); - exit(0); - case 'l': /* specify language, instead of using -c or -f or -b */ - { - if(l_flag != 0) { - fprintf(stderr,"Please specify only one language\n"); - return 1; - } - if(!optarg) { - derror("%s: output language is null", progname); - return(1); - } - lang_name = (char*) emalloc(strlen(optarg)+1); - (void)strcpy(lang_name, optarg); - for(langs=legallanguages;langs->name != NULL;langs++) { - if(strcmp(lang_name,langs->name)==0) { - l_flag = langs->flag; - break; - } - } - if(langs->name == NULL) { - derror("%s: output language %s not implemented",progname, lang_name); - return(1); - } - }; break; - case 'L': - ncloglevel = atoi(optarg); - break; - case 'n': /* old version of -b, uses ".cdf" extension */ - if(l_flag != 0) { - fprintf(stderr,"Please specify only one language\n"); - return 1; - } - l_flag = L_BINARY; - binary_ext = ".cdf"; - break; - case 'o': /* to explicitly specify output name */ - netcdf_name = nulldup(optarg); - break; - case 'x': /* set nofill mode to speed up creation of large files */ - nofill_flag = 1; - break; - case 'v': /* a deprecated alias for "kind" option */ - /*FALLTHRU*/ - case 'k': { /* for specifying variant of netCDF format to be generated - Possible values are: - Format names: - "classic" or "nc3" - "64-bit offset" or "nc6" - "64-bit data" or "nc5" or "cdf-5" - "netCDF-4" or "nc4" - "netCDF-4 classic model" or "nc7" - "netCDF-5" or "nc5" or "cdf5" - Format version numbers (deprecated): - 1 (=> classic) - 2 (=> 64-bit offset) - 3 (=> netCDF-4) - 4 (=> netCDF-4 classic model) - 5 (=> classic 64 bit data aka CDF-5) - */ - struct Kvalues* kvalue; - char *kind_name = (optarg != NULL - ? (char *) emalloc(strlen(optarg)+1) - : emalloc(1)); - if (! kind_name) { - derror ("%s: out of memory", progname); - return(1); - } - if(optarg != NULL) - (void)strcpy(kind_name, optarg); - for(kvalue=legalkinds;kvalue->name;kvalue++) { - if(strcmp(kind_name,kvalue->name) == 0) { - k_flag = kvalue->k_flag; - break; - } - } - if(kvalue->name == NULL) { - derror("Invalid format: %s",kind_name); - return 2; - } - } break; - case '3': /* output format is classic (netCDF-3) */ - k_flag = NC_FORMAT_CLASSIC; - break; - case '6': /* output format is 64-bit-offset (netCDF-3 version 2) */ - k_flag = NC_FORMAT_64BIT_OFFSET; - break; - case '4': /* output format is netCDF-4 (variant of HDF5) */ - k_flag = NC_FORMAT_NETCDF4; - break; - case '5': /* output format is CDF5 */ - k_flag = NC_FORMAT_CDF5; - break; - case '7': /* output format is netCDF-4 (restricted to classic model)*/ - k_flag = NC_FORMAT_NETCDF4_CLASSIC; - break; - case 'M': /* Determine the name for the main function */ - mainname = nulldup(optarg); - break; - case 'B': - nciterbuffersize = atoi(optarg); - break; - case 'P': /* diskless with persistence */ - diskless = 1; - break; - case '?': - usage(); - return(8); - } - - if(l_flag == 0) { - l_flag = L_BINARY; /* default */ - /* Treat -k or -o as an implicit -lb assuming no other -l flags */ - if(k_flag == 0 && netcdf_name == NULL) - syntax_only = 1; - } - - /* Compute/default the iterator buffer size */ - if(l_flag == L_BINARY) { - if(nciterbuffersize == 0 ) - nciterbuffersize = DFALTBINNCITERBUFFERSIZE; - } else { - if(nciterbuffersize == 0) - nciterbuffersize = DFALTLANGNCITERBUFFERSIZE; - } - -#ifndef ENABLE_C - if(c_flag) { - fprintf(stderr,"C not currently supported\n"); - exit(1); - } -#endif -#ifndef ENABLE_BINARY - if(l_flag == L_BINARY) { - fprintf(stderr,"Binary netcdf not currently supported\n"); - exit(1); - } -#endif -#ifndef ENABLE_JAVA - if(l_flag == L_JAVA) { - fprintf(stderr,"Java not currently supported\n"); - exit(1); - } -#else - if(l_flag == L_JAVA && mainname != NULL && strcmp(mainname,"main")==0) - mainname = "Main"; -#endif -#ifndef ENABLE_F77 - if(l_flag == L_F77) { - fprintf(stderr,"F77 not currently supported\n"); - exit(1); - } -#endif - - if(l_flag != L_BINARY) - diskless = 0; - - argc -= optind; - argv += optind; - - if (argc > 1) { - derror ("%s: only one input file argument permitted",progname); - return(6); - } - - fp = stdin; - if (argc > 0 && strcmp(argv[0], "-") != 0) { - char bom[4]; - size_t count; - if ((fp = fopen(argv[0], "r")) == NULL) { - derror ("can't open file %s for reading: ", argv[0]); - perror(""); - return(7); - } - /* Check the leading bytes for an occurrence of a BOM */ - /* re: http://www.unicode.org/faq/utf_bom.html#BOM */ - /* Attempt to read the first four bytes */ - memset(bom,0,sizeof(bom)); - count = fread(bom,1,2,fp); - if(count == 2) { - switch (bom[0]) { - case '\x00': - case '\xFF': - case '\xFE': - /* Only UTF-* is allowed; complain and exit */ - fprintf(stderr,"Input file contains a BOM indicating a non-UTF8 encoding\n"); - return 1; - case '\xEF': - /* skip the BOM */ - (void)fread(bom,1,1,fp); - break; - default: /* legal printable char, presumably; rewind */ - rewind(fp); - break; - } - } - - cdlname = (char*)emalloc(NC_MAX_NAME); - cdlname = nulldup(argv[0]); - if(cdlname != NULL) { - if(strlen(cdlname) > NC_MAX_NAME) - cdlname[NC_MAX_NAME] = '\0'; - } - } - - parse_init(); - ncgin = fp; - if(debug >= 2) {ncgdebug=1;} - if(ncgparse() != 0) - return 1; - - /* Compute the k_flag (1st pass) using rules in the man page (ncgen.1).*/ - -#ifndef USE_NETCDF4 - if(enhanced_flag) { - derror("CDL input is enhanced mode, but --disable-netcdf4 was specified during build"); - return 0; - } -#endif - - if(l_flag == L_JAVA || l_flag == L_F77) { - k_flag = 1; - if(enhanced_flag) { - derror("Java or Fortran requires classic model CDL input"); - return 0; - } - } - - if(k_flag == 0) - k_flag = globalspecials._Format; - - if(cdf5_flag && !enhanced_flag && k_flag == 0) - k_flag = 5; - if(enhanced_flag && k_flag == 0) - k_flag = 3; - - if(enhanced_flag && k_flag != 3) { - if(enhanced_flag && k_flag != 3 && k_flag != 5) { - derror("-k or _Format conflicts with enhanced CDL input"); - return 0; - } - } - - if(specials_flag > 0 && k_flag == 0) -#ifdef USE_NETCDF4 - k_flag = 3; -#else - k_flag = 1; -#endif - - if(k_flag == 0) - k_flag = 1; - - /* Figure out usingclassic */ - switch (k_flag) { - case NC_FORMAT_64BIT_DATA: - case NC_FORMAT_CLASSIC: - case NC_FORMAT_64BIT_OFFSET: - case NC_FORMAT_NETCDF4_CLASSIC: - usingclassic = 1; - break; - case NC_FORMAT_NETCDF4: - default: - usingclassic = 0; - break; - } - - /* compute cmode_modifier */ - switch (k_flag) { - case NC_FORMAT_CLASSIC: - cmode_modifier = 0; break; - case NC_FORMAT_64BIT_OFFSET: - cmode_modifier = NC_64BIT_OFFSET; break; - case NC_FORMAT_NETCDF4: - cmode_modifier = NC_NETCDF4; break; - case NC_FORMAT_NETCDF4_CLASSIC: - cmode_modifier = NC_NETCDF4 | NC_CLASSIC_MODEL; break; - case NC_FORMAT_64BIT_DATA: - cmode_modifier = NC_CDF5; break; - default: ASSERT(0); /* cannot happen */ - } - - if(diskless) - cmode_modifier |= (NC_DISKLESS|NC_NOCLOBBER); - - processsemantics(); - if(!syntax_only && error_count == 0) - define_netcdf(); - - return 0; -} -END_OF_MAIN() - -void -init_netcdf(void) /* initialize global counts, flags */ -{ - compute_alignments(); - memset((void*)&nullconstant,0,sizeof(NCConstant)); - fillconstant = nullconstant; - fillconstant.nctype = NC_FILLVALUE; - - codebuffer = bbNew(); - stmt = bbNew(); - error_count = 0; /* Track # of errors */ -} diff --git a/contrib/netcdf/4.4.1.1/ncgen/ncgen.y b/contrib/netcdf/4.4.1.1/ncgen/ncgen.y deleted file mode 100644 index ba72412b27f..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ncgen.y +++ /dev/null @@ -1,1494 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: ncgen.y,v 1.42 2010/05/18 21:32:46 dmh Exp $ - *********************************************************************/ - -/* yacc source for "ncgen", a netCDL parser and netCDF generator */ - -%error-verbose - -%{ -/* -static char SccsId[] = "$Id: ncgen.y,v 1.42 2010/05/18 21:32:46 dmh Exp $"; -*/ -#include "includes.h" -#include "offsets.h" -#include "ncgeny.h" -#include "ncgen.h" - -/* Following are in ncdump (for now)*/ -/* Need some (unused) definitions to get it to compile */ -#define ncatt_t void* -#define ncvar_t void -#include "nctime.h" - -/* parser controls */ -#define YY_NO_INPUT 1 - -/* True if string a equals string b*/ -#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0) -#define VLENSIZE (sizeof(nc_vlen_t)) -#define MAXFLOATDIM 4294967295.0 - -/* mnemonic */ -typedef enum Attrkind {ATTRVAR, ATTRGLOBAL, DONTKNOW} Attrkind; - -typedef nc_vlen_t vlen_t; - -/* We retain the old representation of the symbol list - as a linked list. -*/ -Symbol* symlist; - -/* Track rootgroup separately*/ -Symbol* rootgroup; - -/* Track the group sequence */ -static List* groupstack; - -/* Provide a separate sequence for accumulating values - during the parse. -*/ -static List* stack; - -/* track homogeneity of types for data lists*/ -static nc_type consttype; - -/* Misc. */ -static int stackbase; -static int stacklen; -static int count; -static int opaqueid; /* counter for opaque constants*/ -static int arrayuid; /* counter for pseudo-array types*/ - -char* primtypenames[PRIMNO] = { -"nat", -"byte", "char", "short", -"int", "float", "double", -"ubyte", "ushort", "uint", -"int64", "uint64", -"string" -}; - -static int GLOBAL_SPECIAL = _NCPROPS_FLAG | _ISNETCDF4_FLAG | _SUPERBLOCK_FLAG | _FORMAT_FLAG ; - -/*Defined in ncgen.l*/ -extern int lineno; /* line number for error messages */ -extern Bytebuffer* lextext; /* name or string with escapes removed */ - -extern double double_val; /* last double value read */ -extern float float_val; /* last float value read */ -extern long long int64_val; /* last int64 value read */ -extern int int32_val; /* last int32 value read */ -extern short int16_val; /* last short value read */ -extern unsigned long long uint64_val; /* last int64 value read */ -extern unsigned int uint32_val; /* last int32 value read */ -extern unsigned short uint16_val; /* last short value read */ -extern char char_val; /* last char value read */ -extern signed char byte_val; /* last byte value read */ -extern unsigned char ubyte_val; /* last byte value read */ - -/* Track definitions of dims, types, attributes, and vars*/ -List* grpdefs; -List* dimdefs; -List* attdefs; /* variable-specific attributes*/ -List* gattdefs; /* global attributes only*/ -List* xattdefs; /* unknown attributes*/ -List* typdefs; -List* vardefs; -List* condefs; /* non-dimension constants used in type defs*/ -List* tmp; - -/* Forward */ -static NCConstant makeconstdata(nc_type); -static NCConstant evaluate(Symbol* fcn, Datalist* arglist); -static NCConstant makeenumconstref(Symbol*); -static void addtogroup(Symbol*); -static Symbol* currentgroup(void); -static Symbol* createrootgroup(const char*); -static Symbol* creategroup(Symbol*); -static int dupobjectcheck(nc_class,Symbol*); -static void setpathcurrent(Symbol* sym); -static Symbol* makeattribute(Symbol*,Symbol*,Symbol*,Datalist*,Attrkind); -static Symbol* makeprimitivetype(nc_type i); -static Symbol* makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst); -static int containsfills(Datalist* list); -static void datalistextend(Datalist* dl, NCConstant* con); -static void vercheck(int ncid); -static long long extractint(NCConstant con); - -int yylex(void); - -#ifndef NO_STDARG -static void yyerror(const char *fmt, ...); -#else -static void yyerror(fmt,va_alist) const char* fmt; va_dcl; -#endif - -/* Extern */ -extern int lex_init(void); - -%} - -/* DECLARATIONS */ - -%union { -Symbol* sym; -unsigned long size; /* allow for zero size to indicate e.g. UNLIMITED*/ -long mark; /* track indices into the sequence*/ -int nctype; /* for tracking attribute list type*/ -Datalist* datalist; -NCConstant constant; -} - -%token - NC_UNLIMITED_K /* keyword for unbounded record dimension */ - CHAR_K /* keyword for char datatype */ - BYTE_K /* keyword for byte datatype */ - SHORT_K /* keyword for short datatype */ - INT_K /* keyword for int datatype */ - FLOAT_K /* keyword for float datatype */ - DOUBLE_K /* keyword for double datatype */ - UBYTE_K /* keyword for unsigned byte datatype */ - USHORT_K /* keyword for unsigned short datatype */ - UINT_K /* keyword for unsigned int datatype */ - INT64_K /* keyword for long long datatype */ - UINT64_K /* keyword for unsigned long long datatype */ - IDENT /* name for a dimension, variable, or attribute */ - TERMSTRING /* terminal string */ - CHAR_CONST /* char constant (not ever generated by ncgen.l) */ - BYTE_CONST /* byte constant */ - SHORT_CONST /* short constant */ - INT_CONST /* int constant */ - INT64_CONST /* long long constant */ - UBYTE_CONST /* unsigned byte constant */ - USHORT_CONST /* unsigned short constant */ - UINT_CONST /* unsigned int constant */ - UINT64_CONST /* unsigned long long constant */ - FLOAT_CONST /* float constant */ - DOUBLE_CONST/* double constant */ - DIMENSIONS /* keyword starting dimensions section, if any */ - VARIABLES /* keyword starting variables section, if any */ - NETCDF /* keyword declaring netcdf name */ - DATA /* keyword starting data section, if any */ - TYPES - COMPOUND - ENUM - OPAQUE - OPAQUESTRING /* 0x */ - GROUP - PATH /* / or (/IDENT)+(.IDENT)? */ - FILLMARKER /* "_" as opposed to the attribute */ - NIL /* NIL */ - _FILLVALUE - _FORMAT - _STORAGE - _CHUNKSIZES - _DEFLATELEVEL - _SHUFFLE - _ENDIANNESS - _NOFILL - _FLETCHER32 - _NCPROPS - _ISNETCDF4 - _SUPERBLOCK - DATASETID - -%type ident typename primtype dimd varspec - attrdecl enumid path dimref fielddim fieldspec -%type typeref -%type varref -%type type_var_ref -%type enumidlist fieldlist fields varlist dimspec dimlist field - fielddimspec fielddimlist -%type dataitem constdata constint conststring constbool -%type simpleconstant function econstref -%type datalist intlist datalist1 datalist0 arglist - - -%start ncdesc /* start symbol for grammar */ - -%% - -/* RULES */ - -ncdesc: NETCDF - datasetid - rootgroup - {if (error_count > 0) YYABORT;} - ; - -datasetid: DATASETID {createrootgroup(datasetname);}; - -rootgroup: '{' - groupbody - subgrouplist - '}'; - -/* 2/3/08 - Allow group body with only attributes. (H/T John Storrs). */ -groupbody: - attrdecllist - typesection /* Type definitions */ - dimsection /* dimension declarations */ - vasection /* variable and attribute declarations */ - datasection /* data for variables within the group */ - ; - -subgrouplist: /*empty*/ | subgrouplist namedgroup; - -namedgroup: GROUP ident '{' - { - Symbol* id = $2; - markcdf4("Group specification"); - if(creategroup(id) == NULL) - yyerror("duplicate group declaration within parent group for %s", - id->name); - } - groupbody - subgrouplist - {listpop(groupstack);} - '}' - attrdecllist - ; - -typesection: /* empty */ - | TYPES {} - | TYPES typedecls - {markcdf4("Type specification");} - ; - -typedecls: type_or_attr_decl | typedecls type_or_attr_decl ; - -typename: ident - { /* Use when defining a type */ - $1->objectclass = NC_TYPE; - if(dupobjectcheck(NC_TYPE,$1)) - yyerror("duplicate type declaration for %s", - $1->name); - listpush(typdefs,(void*)$1); - } - ; - -type_or_attr_decl: typedecl {} | attrdecl ';' {} ; - -typedecl: - enumdecl optsemicolon - | compounddecl optsemicolon - | vlendecl optsemicolon - | opaquedecl optsemicolon - ; - -optsemicolon: /*empty*/ | ';' ; - - -enumdecl: primtype ENUM typename - '{' enumidlist '}' - { - int i; - addtogroup($3); /* sets prefix*/ - $3->objectclass=NC_TYPE; - $3->subclass=NC_ENUM; - $3->typ.basetype=$1; - $3->typ.size = $1->typ.size; - $3->typ.alignment = $1->typ.alignment; - stackbase=$5; - stacklen=listlength(stack); - $3->subnodes = listnew(); - /* Variety of field fixups*/ - /* 1. add in the enum values*/ - /* 2. make this type be their container*/ - /* 3. make constant names visible in the group*/ - /* 4. set field basetype to be same as enum basetype*/ - for(i=stackbase;isubclass == NC_ECONST); - addtogroup(eid); - listpush($3->subnodes,(void*)eid); - eid->container = $3; - eid->typ.basetype = $3->typ.basetype; - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - } - ; - -enumidlist: enumid - {$$=listlength(stack); listpush(stack,(void*)$1);} - | enumidlist ',' enumid - { - int i; - $$=$1; - /* check for duplicates*/ - stackbase=$1; - stacklen=listlength(stack); - for(i=stackbase;iname,elem->name)==0) - yyerror("duplicate enum declaration for %s", - elem->name); - } - listpush(stack,(void*)$3); - } - ; - -enumid: ident '=' constint - { - $1->objectclass=NC_TYPE; - $1->subclass=NC_ECONST; - $1->typ.econst=$3; - $$=$1; - } - ; - -opaquedecl: OPAQUE '(' INT_CONST ')' typename - { - vercheck(NC_OPAQUE); - addtogroup($5); /*sets prefix*/ - $5->objectclass=NC_TYPE; - $5->subclass=NC_OPAQUE; - $5->typ.typecode=NC_OPAQUE; - $5->typ.size=int32_val; - $5->typ.alignment=nctypealignment(NC_OPAQUE); - } - ; - -vlendecl: typeref '(' '*' ')' typename - { - Symbol* basetype = $1; - vercheck(NC_VLEN); - addtogroup($5); /*sets prefix*/ - $5->objectclass=NC_TYPE; - $5->subclass=NC_VLEN; - $5->typ.basetype=basetype; - $5->typ.typecode=NC_VLEN; - $5->typ.size=VLENSIZE; - $5->typ.alignment=nctypealignment(NC_VLEN); - } - ; - -compounddecl: COMPOUND typename '{' fields '}' - { - int i,j; - vercheck(NC_COMPOUND); - addtogroup($2); - /* check for duplicate field names*/ - stackbase=$4; - stacklen=listlength(stack); - for(i=stackbase;iname,elem2->name)==0) { - yyerror("duplicate field declaration for %s",elem1->name); - } - } - } - $2->objectclass=NC_TYPE; - $2->subclass=NC_COMPOUND; - $2->typ.basetype=NULL; - $2->typ.typecode=NC_COMPOUND; - $2->subnodes = listnew(); - /* Add in the fields*/ - for(i=stackbase;icontainer = $2; - listpush($2->subnodes,(void*)fsym); - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - } - ; - - -fields: field ';' {$$=$1;} - | fields field ';' {$$=$1;} - ; - -field: typeref fieldlist - { - int i; - $$=$2; - stackbase=$2; - stacklen=listlength(stack); - /* process each field in the fieldlist*/ - for(i=stackbase;ityp.basetype = $1; - } - } - ; - -primtype: CHAR_K { $$ = primsymbols[NC_CHAR]; } - | BYTE_K { $$ = primsymbols[NC_BYTE]; } - | SHORT_K { $$ = primsymbols[NC_SHORT]; } - | INT_K { $$ = primsymbols[NC_INT]; } - | FLOAT_K { $$ = primsymbols[NC_FLOAT]; } - | DOUBLE_K{ $$ = primsymbols[NC_DOUBLE]; } - | UBYTE_K { vercheck(NC_UBYTE); $$ = primsymbols[NC_UBYTE]; } - | USHORT_K { vercheck(NC_USHORT); $$ = primsymbols[NC_USHORT]; } - | UINT_K { vercheck(NC_UINT); $$ = primsymbols[NC_UINT]; } - | INT64_K { vercheck(NC_INT64); $$ = primsymbols[NC_INT64]; } - | UINT64_K { vercheck(NC_UINT64); $$ = primsymbols[NC_UINT64]; } - ; - -dimsection: /* empty */ - | DIMENSIONS {} - | DIMENSIONS dimdecls {} - ; - -dimdecls: dim_or_attr_decl ';' - | dimdecls dim_or_attr_decl ';' - ; - -dim_or_attr_decl: dimdeclist {} | attrdecl {} ; - -dimdeclist: dimdecl - | dimdeclist ',' dimdecl - ; - -dimdecl: - dimd '=' constint - { - $1->dim.declsize = (size_t)extractint($3); -#ifdef GENDEBUG1 -fprintf(stderr,"dimension: %s = %llu\n",$1->name,(unsigned long long)$1->dim.declsize); -#endif - } - | dimd '=' NC_UNLIMITED_K - { - $1->dim.declsize = NC_UNLIMITED; - $1->dim.isunlimited = 1; -#ifdef GENDEBUG1 -fprintf(stderr,"dimension: %s = UNLIMITED\n",$1->name); -#endif - } - ; - -dimd: ident - { - $1->objectclass=NC_DIM; - if(dupobjectcheck(NC_DIM,$1)) - yyerror( "Duplicate dimension declaration for %s", - $1->name); - addtogroup($1); - $$=$1; - listpush(dimdefs,(void*)$1); - } - ; - -vasection: /* empty */ - | VARIABLES {} - | VARIABLES vadecls {} - ; - -vadecls: vadecl_or_attr ';' - | vadecls vadecl_or_attr ';' - ; - -vadecl_or_attr: vardecl {} | attrdecl {} ; - -vardecl: typeref varlist - { - int i; - stackbase=$2; - stacklen=listlength(stack); - /* process each variable in the varlist*/ - for(i=stackbase;iobjectclass = NC_VAR; - if(dupobjectcheck(NC_VAR,sym)) { - yyerror("Duplicate variable declaration for %s", - sym->name); - } else { - sym->typ.basetype = $1; - addtogroup(sym); - listpush(vardefs,(void*)sym); - } - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - } - ; - -varlist: varspec - {$$=listlength(stack); - listpush(stack,(void*)$1); - } - | varlist ',' varspec - {$$=$1; listpush(stack,(void*)$3);} - ; - -varspec: ident dimspec - { - int i; - Dimset dimset; - stacklen=listlength(stack); - stackbase=$2; - count = stacklen - stackbase; - if(count >= NC_MAX_VAR_DIMS) { - yyerror("%s has too many dimensions",$1->name); - count = NC_MAX_VAR_DIMS - 1; - stacklen = stackbase + count; - } - dimset.ndims = count; - /* extract the actual dimensions*/ - if(dimset.ndims > 0) { - for(i=0;ityp.dimset = dimset; - } - $1->typ.basetype = NULL; /* not yet known*/ - $1->objectclass=NC_VAR; - listsetlength(stack,stackbase);/* remove stack nodes*/ - } - ; - -dimspec: /* empty */ {$$=listlength(stack);} - | '(' dimlist ')' {$$=$2;} - ; - -dimlist: dimref {$$=listlength(stack); listpush(stack,(void*)$1);} - | dimlist ',' dimref - {$$=$1; listpush(stack,(void*)$3);} - ; - -dimref: path - {Symbol* dimsym = $1; - dimsym->objectclass = NC_DIM; - /* Find the actual dimension*/ - dimsym = locate(dimsym); - if(dimsym == NULL) { - derror("Undefined or forward referenced dimension: %s",$1->name); - YYABORT; - } - $$=dimsym; - } - ; - -fieldlist: - fieldspec - {$$=listlength(stack); - listpush(stack,(void*)$1); - } - | fieldlist ',' fieldspec - {$$=$1; listpush(stack,(void*)$3);} - ; - -fieldspec: - ident fielddimspec - { - int i; - Dimset dimset; - stackbase=$2; - stacklen=listlength(stack); - count = stacklen - stackbase; - if(count >= NC_MAX_VAR_DIMS) { - yyerror("%s has too many dimensions",$1->name); - count = NC_MAX_VAR_DIMS - 1; - stacklen = stackbase + count; - } - dimset.ndims = count; - if(count > 0) { - /* extract the actual dimensions*/ - for(i=0;ityp.dimset = dimset; - } - $1->typ.basetype = NULL; /* not yet known*/ - $1->objectclass=NC_TYPE; - $1->subclass=NC_FIELD; - listsetlength(stack,stackbase);/* remove stack nodes*/ - $$ = $1; - } - ; - -fielddimspec: /* empty */ {$$=listlength(stack);} - | '(' fielddimlist ')' {$$=$2;} - ; - -fielddimlist: - fielddim {$$=listlength(stack); listpush(stack,(void*)$1);} - | fielddimlist ',' fielddim - {$$=$1; listpush(stack,(void*)$3);} - ; - -fielddim: - UINT_CONST - { /* Anonymous integer dimension. - Can only occur in type definitions*/ - char anon[32]; - sprintf(anon,"const%u",uint32_val); - $$ = install(anon); - $$->objectclass = NC_DIM; - $$->dim.isconstant = 1; - $$->dim.declsize = uint32_val; - } - | INT_CONST - { /* Anonymous integer dimension. - Can only occur in type definitions*/ - char anon[32]; - if(int32_val <= 0) { - derror("field dimension must be positive"); - YYABORT; - } - sprintf(anon,"const%d",int32_val); - $$ = install(anon); - $$->objectclass = NC_DIM; - $$->dim.isconstant = 1; - $$->dim.declsize = int32_val; - } - ; - - -/* Use this when referencing defined objects */ - -varref: - type_var_ref - {Symbol* vsym = $1; - if(vsym->objectclass != NC_VAR) { - derror("Undefined or forward referenced variable: %s",vsym->name); - YYABORT; - } - $$=vsym; - } - ; - -typeref: - type_var_ref - {Symbol* tsym = $1; - if(tsym->objectclass != NC_TYPE) { - derror("Undefined or forward referenced type: %s",tsym->name); - YYABORT; - } - $$=tsym; - } - ; - -type_var_ref: - path - {Symbol* tvsym = $1; Symbol* sym; - /* disambiguate*/ - tvsym->objectclass = NC_VAR; - sym = locate(tvsym); - if(sym == NULL) { - tvsym->objectclass = NC_TYPE; - sym = locate(tvsym); - if(tvsym == NULL) { - derror("Undefined or forward referenced name: %s",$1->name); - YYABORT; - } else tvsym = sym; - } else tvsym = sym; - if(tvsym == NULL) { - derror("Undefined name (line %d): %s",$1->lineno,$1->name); - YYABORT; - } - $$=tvsym; - } - | primtype {$$=$1;} - ; - -/* Use this for all attribute decls */ -/* Global vs var-specific will be separated in makeattribute */ - -/* Watch out; this is left recursive */ -attrdecllist: /*empty*/ {} | attrdecl ';' attrdecllist {} ; - -attrdecl: - ':' _NCPROPS '=' conststring - {$$ = makespecial(_NCPROPS_FLAG,NULL,NULL,(void*)&$4,ATTRGLOBAL);} - | ':' _ISNETCDF4 '=' constbool - {$$ = makespecial(_ISNETCDF4_FLAG,NULL,NULL,(void*)&$4,ATTRGLOBAL);} - | ':' _SUPERBLOCK '=' constint - {$$ = makespecial(_SUPERBLOCK_FLAG,NULL,NULL,(void*)&$4,ATTRGLOBAL);} - | ':' ident '=' datalist - { $$=makeattribute($2,NULL,NULL,$4,ATTRGLOBAL);} - | typeref type_var_ref ':' ident '=' datalist - {Symbol* tsym = $1; Symbol* vsym = $2; Symbol* asym = $4; - if(vsym->objectclass == NC_VAR) { - $$=makeattribute(asym,vsym,tsym,$6,ATTRVAR); - } else { - derror("Doubly typed attribute: %s",asym->name); - YYABORT; - } - } - | type_var_ref ':' ident '=' datalist - {Symbol* sym = $1; Symbol* asym = $3; - if(sym->objectclass == NC_VAR) { - $$=makeattribute(asym,sym,NULL,$5,ATTRVAR); - } else if(sym->objectclass == NC_TYPE) { - $$=makeattribute(asym,NULL,sym,$5,ATTRGLOBAL); - } else { - derror("Attribute prefix not a variable or type: %s",asym->name); - YYABORT; - } - } - | type_var_ref ':' _FILLVALUE '=' datalist - {$$ = makespecial(_FILLVALUE_FLAG,$1,NULL,(void*)$5,0);} - | typeref type_var_ref ':' _FILLVALUE '=' datalist - {$$ = makespecial(_FILLVALUE_FLAG,$2,$1,(void*)$6,0);} - | type_var_ref ':' _STORAGE '=' conststring - {$$ = makespecial(_STORAGE_FLAG,$1,NULL,(void*)&$5,1);} - | type_var_ref ':' _CHUNKSIZES '=' intlist - {$$ = makespecial(_CHUNKSIZES_FLAG,$1,NULL,(void*)$5,0);} - | type_var_ref ':' _FLETCHER32 '=' constbool - {$$ = makespecial(_FLETCHER32_FLAG,$1,NULL,(void*)&$5,1);} - | type_var_ref ':' _DEFLATELEVEL '=' constint - {$$ = makespecial(_DEFLATE_FLAG,$1,NULL,(void*)&$5,1);} - | type_var_ref ':' _SHUFFLE '=' constbool - {$$ = makespecial(_SHUFFLE_FLAG,$1,NULL,(void*)&$5,1);} - | type_var_ref ':' _ENDIANNESS '=' conststring - {$$ = makespecial(_ENDIAN_FLAG,$1,NULL,(void*)&$5,1);} - | type_var_ref ':' _NOFILL '=' constbool - {$$ = makespecial(_NOFILL_FLAG,$1,NULL,(void*)&$5,1);} - | ':' _FORMAT '=' conststring - {$$ = makespecial(_FORMAT_FLAG,NULL,NULL,(void*)&$4,1);} - ; - -path: - ident - { - $$=$1; - $1->ref.is_ref=1; - $1->is_prefixed=0; - setpathcurrent($1); - } - | PATH - { - $$=$1; - $1->ref.is_ref=1; - $1->is_prefixed=1; - /* path is set in ncgen.l*/ - } - ; - -datasection: /* empty */ - | DATA {} - | DATA datadecls {} - ; - -datadecls: datadecl ';' - | datadecls datadecl ';' - ; - -datadecl: varref '=' datalist - {$1->data = $3;} - ; -datalist: - datalist0 {$$ = $1;} - | datalist1 {$$ = $1;} - ; - -datalist0: - /*empty*/ {$$ = builddatalist(0);} - ; - -datalist1: /* Must have at least 1 element */ - dataitem {$$ = builddatalist(0); datalistextend($$,&($1));} - | datalist ',' dataitem - {datalistextend($1,&($3)); $$=$1;} - ; - -dataitem: - constdata {$$=$1;} - | '{' datalist '}' {$$=builddatasublist($2);} - ; - -constdata: - simpleconstant {$$=$1;} - | OPAQUESTRING {$$=makeconstdata(NC_OPAQUE);} - | FILLMARKER {$$=makeconstdata(NC_FILLVALUE);} - | NIL {$$=makeconstdata(NC_NIL);} - | econstref {$$=$1;} - | function - ; - -econstref: - path {$$ = makeenumconstref($1);} - ; - -function: - ident '(' arglist ')' {$$=evaluate($1,$3);} - ; - -arglist: - simpleconstant - {$$ = builddatalist(0); datalistextend($$,&($1));} - | arglist ',' simpleconstant - {datalistextend($1,&($3)); $$=$1;} - ; - -simpleconstant: - CHAR_CONST {$$=makeconstdata(NC_CHAR);} /* never used apparently*/ - | BYTE_CONST {$$=makeconstdata(NC_BYTE);} - | SHORT_CONST {$$=makeconstdata(NC_SHORT);} - | INT_CONST {$$=makeconstdata(NC_INT);} - | INT64_CONST {$$=makeconstdata(NC_INT64);} - | UBYTE_CONST {$$=makeconstdata(NC_UBYTE);} - | USHORT_CONST {$$=makeconstdata(NC_USHORT);} - | UINT_CONST {$$=makeconstdata(NC_UINT);} - | UINT64_CONST {$$=makeconstdata(NC_UINT64);} - | FLOAT_CONST {$$=makeconstdata(NC_FLOAT);} - | DOUBLE_CONST {$$=makeconstdata(NC_DOUBLE);} - | TERMSTRING {$$=makeconstdata(NC_STRING);} - ; - -intlist: - constint {$$ = builddatalist(0); datalistextend($$,&($1));} - | intlist ',' constint {$$=$1; datalistextend($1,&($3));} - ; - -constint: - INT_CONST - {$$=makeconstdata(NC_INT);} - | UINT_CONST - {$$=makeconstdata(NC_UINT);} - | INT64_CONST - {$$=makeconstdata(NC_INT64);} - | UINT64_CONST - {$$=makeconstdata(NC_UINT64);} - ; - -conststring: - TERMSTRING {$$=makeconstdata(NC_STRING);} - ; - -constbool: - conststring {$$=$1;} - | constint {$$=$1;} - -/* End OF RULES */ - -/* Push all idents thru here*/ -ident: - IDENT {$$=$1;} - ; - -%% - -#ifndef NO_STDARG -static void -yyerror(const char *fmt, ...) -#else -static void -yyerror(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - va_list argv; - vastart(argv,fmt); - (void)fprintf(stderr,"%s: %s line %d: ", progname, cdlname, lineno); - vderror(fmt,argv); - vaend(argv,fmt); -} - -/* undefine yywrap macro, in case we are using bison instead of yacc */ -#ifdef yywrap -#undef yywrap -#endif - -static int -ncgwrap(void) /* returns 1 on EOF if no more input */ -{ - return 1; -} - -/* get lexical input routine generated by lex */ -#include "ncgenl.c" - -/* Really should init our data within this file */ -void -parse_init(void) -{ - int i; - opaqueid = 0; - arrayuid = 0; - symlist = NULL; - stack = listnew(); - groupstack = listnew(); - consttype = NC_NAT; - grpdefs = listnew(); - dimdefs = listnew(); - attdefs = listnew(); - gattdefs = listnew(); - xattdefs = listnew(); - typdefs = listnew(); - vardefs = listnew(); - condefs = listnew(); - tmp = listnew(); - /* Create the primitive types */ - for(i=NC_NAT+1;i<=NC_STRING;i++) { - primsymbols[i] = makeprimitivetype(i); - } - lex_init(); -} - -static Symbol* -makeprimitivetype(nc_type nctype) -{ - Symbol* sym = install(primtypenames[nctype]); - sym->objectclass=NC_TYPE; - sym->subclass=NC_PRIM; - sym->ncid = nctype; - sym->typ.typecode = nctype; - sym->typ.size = ncsize(nctype); - sym->typ.nelems = 1; - sym->typ.alignment = nctypealignment(nctype); - /* Make the basetype circular so we can always ask for it */ - sym->typ.basetype = sym; - sym->prefix = listnew(); - return sym; -} - -/* Symbol table operations for ncgen tool */ -/* install sname in symbol table even if it is already there */ -Symbol* -install(const char *sname) -{ - Symbol* sp; - sp = (Symbol*) emalloc (sizeof (struct Symbol)); - memset((void*)sp,0,sizeof(struct Symbol)); - sp->name = nulldup(sname); - sp->next = symlist; - sp->lineno = lineno; - sp->location = currentgroup(); - sp->container = currentgroup(); - symlist = sp; - return sp; -} - - -static Symbol* -currentgroup(void) -{ - if(listlength(groupstack) == 0) return rootgroup; - return (Symbol*)listtop(groupstack); -} - -static Symbol* -createrootgroup(const char* dataset) -{ - Symbol* gsym = install(dataset); - gsym->objectclass = NC_GRP; - gsym->container = NULL; - gsym->subnodes = listnew(); - gsym->grp.is_root = 1; - gsym->prefix = listnew(); - listpush(grpdefs,(void*)gsym); - rootgroup = gsym; - return gsym; -} - -static Symbol* -creategroup(Symbol * gsym) -{ - /* See if this group already exists in currentgroup */ - gsym->objectclass = NC_GRP; - if(dupobjectcheck(NC_GRP,gsym)) { - derror("Duplicate group name in same scope: %s",gsym->name); - return NULL; - } - addtogroup(gsym); - gsym->subnodes = listnew(); - listpush(groupstack,(void*)gsym); - listpush(grpdefs,(void*)gsym); - return gsym; -} - -static NCConstant -makeconstdata(nc_type nctype) -{ - NCConstant con = nullconstant; - consttype = nctype; - con.nctype = nctype; - con.lineno = lineno; - con.filled = 0; - switch (nctype) { - case NC_CHAR: con.value.charv = char_val; break; - case NC_BYTE: con.value.int8v = byte_val; break; - case NC_SHORT: con.value.int16v = int16_val; break; - case NC_INT: con.value.int32v = int32_val; break; - case NC_FLOAT: - con.value.floatv = float_val; - break; - case NC_DOUBLE: - con.value.doublev = double_val; - break; - case NC_STRING: { /* convert to a set of chars*/ - size_t len; - len = bbLength(lextext); - con.value.stringv.len = len; - con.value.stringv.stringv = bbDup(lextext); - bbClear(lextext); - } - break; - - /* Allow these constants even in netcdf-3 */ - case NC_UBYTE: con.value.uint8v = ubyte_val; break; - case NC_USHORT: con.value.uint16v = uint16_val; break; - case NC_UINT: con.value.uint32v = uint32_val; break; - case NC_INT64: con.value.int64v = int64_val; break; - case NC_UINT64: con.value.uint64v = uint64_val; break; - -#ifdef USE_NETCDF4 - case NC_OPAQUE: { - char* s; - int len; - len = bbLength(lextext); - s = (char*)emalloc(len+1); - strncpy(s,bbContents(lextext),len); - s[len] = '\0'; - con.value.opaquev.stringv = s; - con.value.opaquev.len = len; - } break; - - case NC_NIL: - break; /* no associated value*/ -#endif - - case NC_FILLVALUE: - break; /* no associated value*/ - - default: - yyerror("Data constant: unexpected NC type: %s", - nctypename(nctype)); - con.value.stringv.stringv = NULL; - con.value.stringv.len = 0; - } - return con; -} - -static NCConstant -makeenumconstref(Symbol* refsym) -{ - NCConstant con; - - markcdf4("Enum type"); - consttype = NC_ENUM; - con.nctype = NC_ECONST; - con.lineno = lineno; - con.filled = 0; - refsym->objectclass = NC_TYPE; - refsym->subclass = NC_ECONST; - con.value.enumv = refsym; - return con; -} - -static void -addtogroup(Symbol* sym) -{ - Symbol* grp = currentgroup(); - sym->container = grp; - listpush(grp->subnodes,(void*)sym); - setpathcurrent(sym); -} - -/* Check for duplicate name of given type within current group*/ -static int -dupobjectcheck(nc_class objectclass, Symbol* pattern) -{ - int i; - Symbol* grp; - if(pattern == NULL) return 0; - grp = pattern->container; - if(grp == NULL || grp->subnodes == NULL) return 0; - for(i=0;isubnodes);i++) { - Symbol* sym = (Symbol*)listget(grp->subnodes,i); - if(!sym->ref.is_ref && sym->objectclass == objectclass - && strcmp(sym->name,pattern->name)==0) return 1; - } - return 0; -} - -static void -setpathcurrent(Symbol* sym) -{ - sym->is_prefixed = 0; - sym->prefix = prefixdup(groupstack); -} - -/* Convert an nc_type code to the corresponding Symbol*/ -Symbol* -basetypefor(nc_type nctype) -{ - return primsymbols[nctype]; -} - -static int -truefalse(NCConstant* con, int tag) -{ - if(con->nctype == NC_STRING) { - char* sdata = con->value.stringv.stringv; - if(strncmp(sdata,"false",NC_MAX_NAME) == 0 - || strncmp(sdata,"0",NC_MAX_NAME) == 0) - return 0; - else if(strncmp(sdata,"true",NC_MAX_NAME) == 0 - || strncmp(sdata,"1",NC_MAX_NAME) == 0) - return 1; - else goto fail; - } else if(con->value.int32v < 0 || con->value.int32v > 1) - goto fail; - return con->value.int32v; - -fail: - derror("%s: illegal value",specialname(tag)); - return 0; -} - -/* Since this may be affected by the _Format attribute, which - may come last, capture all the special info and sort it out - in semantics. -*/ -static Symbol* -makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst) -{ - Symbol* attr = NULL; - Datalist* list; - NCConstant* con; - NCConstant iconst; - int tf = 0; - char* sdata = NULL; - int idata = -1; - - if((GLOBAL_SPECIAL & tag) != 0) { - if(vsym != NULL) { - derror("_Format: must be global attribute"); - vsym = NULL; - } - } else { - if(vsym == NULL) { - derror("%s: must have non-NULL vsym", specialname(tag)); - return NULL; - } - } - - if(tag != _FILLVALUE_FLAG && tag != _FORMAT_FLAG) - /*Main.*/specials_flag++; - - if(isconst) { - con = (NCConstant*)data; - list = builddatalist(1); - dlappend(list,(NCConstant*)data); - } else { - list = (Datalist*)data; - con = (NCConstant*)list->data; - } - - switch (tag) { - case _FLETCHER32_FLAG: - case _SHUFFLE_FLAG: - case _ISNETCDF4_FLAG: - case _NOFILL_FLAG: - iconst.nctype = (con->nctype == NC_STRING?NC_STRING:NC_INT); - convert1(con,&iconst); - tf = truefalse(&iconst,tag); - break; - case _FORMAT_FLAG: - case _STORAGE_FLAG: - case _NCPROPS_FLAG: - case _ENDIAN_FLAG: - iconst.nctype = NC_STRING; - convert1(con,&iconst); - if(iconst.nctype == NC_STRING) - sdata = iconst.value.stringv.stringv; - else - derror("%s: illegal value",specialname(tag)); - break; - case _SUPERBLOCK_FLAG: - case _DEFLATE_FLAG: - iconst.nctype = NC_INT; - convert1(con,&iconst); - if(iconst.nctype == NC_INT) - idata = iconst.value.int32v; - else - derror("%s: illegal value",specialname(tag)); - break; - case _CHUNKSIZES_FLAG: - case _FILLVALUE_FLAG: - /* Handle below */ - break; - default: PANIC1("unexpected special tag: %d",tag); - } - - if(tag == _FORMAT_FLAG) { - /* Watch out: this is a global attribute */ - struct Kvalues* kvalue; - int found = 0; - /* Use the table in main.c */ - for(kvalue = legalkinds; kvalue->name; kvalue++) { - if(sdata) { - if(strcmp(sdata, kvalue->name) == 0) { - globalspecials._Format = kvalue->k_flag; - /*Main.*/format_attribute = 1; - found = 1; - break; - } - } - } - if(!found) - derror("_Format: illegal value: %s",sdata); - } else if((GLOBAL_SPECIAL & tag) != 0) { - if(tag == _ISNETCDF4_FLAG) - globalspecials._IsNetcdf4 = tf; - else if(tag == _SUPERBLOCK_FLAG) - globalspecials._Superblock = idata; - else if(tag == _NCPROPS_FLAG) - globalspecials._NCProperties = strdup(sdata); - } else { - Specialdata* special; - /* Set up special info */ - special = &vsym->var.special; - if(tag == _FILLVALUE_FLAG) { - special->_Fillvalue = list; - /* fillvalue must be a single value*/ - if(list->length != 1) - derror("_FillValue: must be a single (possibly compound) value", - vsym->name); - /* check that the attribute value contains no fill values*/ - if(containsfills(list)) { - derror("Attribute data may not contain fill values (i.e. _ )"); - } - /* _FillValue is also a real attribute*/ - if(vsym->objectclass != NC_VAR) { - derror("_FillValue attribute not associated with variable: %s",vsym->name); - } - if(tsym == NULL) tsym = vsym->typ.basetype; - else if(vsym->typ.basetype != tsym) { - derror("_FillValue attribute type does not match variable type: %s",vsym->name); - } - attr = makeattribute(install("_FillValue"),vsym,tsym,list,ATTRVAR); - } else switch (tag) { - /* These will be output as attributes later */ - case _STORAGE_FLAG: - if(!sdata) - derror("_Storage: illegal NULL value"); - else if(strcmp(sdata,"contiguous") == 0) - special->_Storage = NC_CONTIGUOUS; - else if(strcmp(sdata,"chunked") == 0) - special->_Storage = NC_CHUNKED; - else - derror("_Storage: illegal value: %s",sdata); - special->flags |= _STORAGE_FLAG; - break; - case _FLETCHER32_FLAG: - special->_Fletcher32 = tf; - special->flags |= _FLETCHER32_FLAG; - break; - case _DEFLATE_FLAG: - special->_DeflateLevel = idata; - special->flags |= _DEFLATE_FLAG; - break; - case _SHUFFLE_FLAG: - special->_Shuffle = tf; - special->flags |= _SHUFFLE_FLAG; - break; - case _ENDIAN_FLAG: - if(!sdata) - derror("_Endianness: illegal NULL value"); - else if(strcmp(sdata,"little") == 0) - special->_Endianness = 1; - else if(strcmp(sdata,"big") == 0) - special->_Endianness = 2; - else - derror("_Endianness: illegal value: %s",sdata); - special->flags |= _ENDIAN_FLAG; - break; - case _NOFILL_FLAG: - special->_Fill = (1 - tf); /* negate */ - special->flags |= _NOFILL_FLAG; - break; - case _CHUNKSIZES_FLAG: { - int i; - special->nchunks = list->length; - special->_ChunkSizes = (size_t*)emalloc(sizeof(size_t)*special->nchunks); - for(i=0;inchunks;i++) { - iconst.nctype = NC_INT; - convert1(&list->data[i],&iconst); - if(iconst.nctype == NC_INT) { - special->_ChunkSizes[i] = (size_t)iconst.value.int32v; - } else { - efree(special->_ChunkSizes); - derror("%s: illegal value",specialname(tag)); - } - } - special->flags |= _CHUNKSIZES_FLAG; - /* Chunksizes => storage == chunked */ - special->flags |= _STORAGE_FLAG; - special->_Storage = NC_CHUNKED; - } break; - default: PANIC1("makespecial: illegal token: %d",tag); - } - } - return attr; -} - -static Symbol* -makeattribute(Symbol* asym, - Symbol* vsym, - Symbol* tsym, - Datalist* data, - Attrkind kind) /* global var or unknown*/ -{ - asym->objectclass = NC_ATT; - asym->data = data; - switch (kind) { - case ATTRVAR: - asym->att.var = vsym; - asym->typ.basetype = tsym; - listpush(attdefs,(void*)asym); - addtogroup(asym); - break; - case ATTRGLOBAL: - asym->att.var = NULL; /* NULL => NC_GLOBAL*/ - asym->typ.basetype = tsym; - listpush(gattdefs,(void*)asym); - addtogroup(asym); - break; - default: PANIC1("unexpected attribute type: %d",kind); - } - /* finally; check that the attribute value contains no fill values*/ - if(containsfills(data)) { - derror("Attribute data may not contain fill values (i.e. _ ): %s",asym->name); - } - return asym; -} - -static long long -extractint(NCConstant con) -{ - switch (con.nctype) { - case NC_BYTE: return (long long)(con.value.int8v); - case NC_SHORT: return (long long)(con.value.int16v); - case NC_INT: return (long long)(con.value.int32v); - case NC_UBYTE: return (long long)(con.value.uint8v); - case NC_USHORT: return (long long)(con.value.uint16v); - case NC_UINT: return (long long)(con.value.uint32v); - case NC_INT64: return (long long)(con.value.int64v); - default: - derror("Not a signed integer type: %d",con.nctype); - break; - } - return 0; -} - -static int -containsfills(Datalist* list) -{ - if(list != NULL) { - int i; - NCConstant* con = list->data; - for(i=0;ilength;i++,con++) { - if(con->nctype == NC_COMPOUND) { - if(containsfills(con->value.compoundv)) return 1; - } else if(con->nctype == NC_FILLVALUE) return 1; - } - } - return 0; -} - -static void -datalistextend(Datalist* dl, NCConstant* con) -{ - dlappend(dl,con); -} - -static void -vercheck(int tid) -{ - switch (tid) { - case NC_UBYTE: markcdf5("netCDF4/5 type: UBYTE"); break; - case NC_USHORT: markcdf5("netCDF4/5 type: USHORT"); break; - case NC_UINT: markcdf5("netCDF4/5 type: UINT"); break; - case NC_INT64: markcdf5("netCDF4/5 type: INT64"); break; - case NC_UINT64: markcdf5("netCDF4/5 type: UINT64"); break; - case NC_STRING: markcdf4("netCDF4 type: STRING"); break; - case NC_VLEN: markcdf4("netCDF4 type: VLEN"); break; - case NC_OPAQUE: markcdf4("netCDF4 type: OPAQUE"); break; - case NC_ENUM: markcdf4("netCDF4 type: ENUM"); break; - case NC_COMPOUND: markcdf4("netCDF4 type: COMPOUND"); break; - default: break; - } -} - -const char* -specialname(int tag) -{ - struct Specialtoken* spp = specials; - for(;spp->name;spp++) { - if(spp->tag == tag) - return spp->name; - } - return ""; -} - -/* -Since the arguments are all simple constants, -we can evaluate the function immediately -and return its value. -Note that currently, only a single value can -be returned. -*/ - -static NCConstant -evaluate(Symbol* fcn, Datalist* arglist) -{ - NCConstant result = nullconstant; - - /* prepare the result */ - result.lineno = fcn->lineno; - - if(strcasecmp(fcn->name,"time") == 0) { - char* timekind = NULL; - char* timevalue = NULL; - result.nctype = NC_DOUBLE; - result.value.doublev = 0; - /* int time([string],string) */ - switch (arglist->length) { - case 2: - if(arglist->data[1].nctype != NC_STRING) { - derror("Expected function signature: time([string,]string)"); - goto done; - } - /* fall thru */ - case 1: - if(arglist->data[0].nctype != NC_STRING) { - derror("Expected function signature: time([string,]string)"); - goto done; - } - break; - case 0: - default: - derror("Expected function signature: time([string,]string)"); - goto done; - } - if(arglist->length == 2) { - timekind = arglist->data[0].value.stringv.stringv; - timevalue = arglist->data[1].value.stringv.stringv; - } else - timevalue = arglist->data[0].value.stringv.stringv; - if(timekind == NULL) { /* use cd time as the default */ - cdCompTime comptime; - CdTime cdtime; - cdCalenType timetype = cdStandard; - cdChar2Comp(timetype,timevalue,&comptime); - /* convert comptime to cdTime */ - cdtime.year = comptime.year; - cdtime.month = comptime.month; - cdtime.day = comptime.day; - cdtime.hour = comptime.hour; - cdtime.baseYear = 1970; - cdtime.timeType = CdChron; - /* convert to double value */ - Cdh2e(&cdtime,&result.value.doublev); - } else { - derror("Time conversion '%s' not supported",timekind); - goto done; - } - } else { /* Unknown function */ - derror("Unknown function name: %s",fcn->name); - goto done; - } - -done: - return result; -} diff --git a/contrib/netcdf/4.4.1.1/ncgen/ncgenl.c b/contrib/netcdf/4.4.1.1/ncgen/ncgenl.c deleted file mode 100644 index a740978ab0a..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ncgenl.c +++ /dev/null @@ -1,3420 +0,0 @@ - -#line 3 "ncgenl.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define yy_create_buffer ncg_create_buffer -#define yy_delete_buffer ncg_delete_buffer -#define yy_flex_debug ncg_flex_debug -#define yy_init_buffer ncg_init_buffer -#define yy_flush_buffer ncg_flush_buffer -#define yy_load_buffer_state ncg_load_buffer_state -#define yy_switch_to_buffer ncg_switch_to_buffer -#define yyin ncgin -#define yyleng ncgleng -#define yylex ncglex -#define yylineno ncglineno -#define yyout ncgout -#define yyrestart ncgrestart -#define yytext ncgtext -#define yywrap ncgwrap -#define yyalloc ncgalloc -#define yyrealloc ncgrealloc -#define yyfree ncgfree - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE ncgrestart(ncgin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t ncgleng; - -extern FILE *ncgin, *ncgout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up ncgtext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up ncgtext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - yy_size_t yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via ncgrestart()), so that the user can continue scanning by - * just pointing ncgin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when ncgtext is formed. */ -static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t ncgleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow ncgwrap()'s to do buffer switches - * instead of setting up a fresh ncgin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void ncgrestart (FILE *input_file ); -void ncg_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE ncg_create_buffer (FILE *file,int size ); -void ncg_delete_buffer (YY_BUFFER_STATE b ); -void ncg_flush_buffer (YY_BUFFER_STATE b ); -void ncgpush_buffer_state (YY_BUFFER_STATE new_buffer ); -void ncgpop_buffer_state (void ); - -static void ncgensure_buffer_stack (void ); -static void ncg_load_buffer_state (void ); -static void ncg_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER ncg_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE ncg_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE ncg_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE ncg_scan_bytes (yyconst char *bytes,yy_size_t len ); - -void *ncgalloc (yy_size_t ); -void *ncgrealloc (void *,yy_size_t ); -void ncgfree (void * ); - -#define yy_new_buffer ncg_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - ncgensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - ncg_create_buffer(ncgin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - ncgensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - ncg_create_buffer(ncgin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -FILE *ncgin = (FILE *) 0, *ncgout = (FILE *) 0; - -typedef int yy_state_type; - -extern int ncglineno; - -int ncglineno = 1; - -extern char *ncgtext; -#define yytext_ptr ncgtext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up ncgtext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - ncgleng = (yy_size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 48 -#define YY_END_OF_BUFFER 49 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[417] = - { 0, - 0, 0, 45, 45, 0, 0, 49, 47, 1, 43, - 47, 47, 47, 47, 37, 31, 35, 35, 34, 34, - 34, 34, 34, 34, 34, 47, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 47, 47, 47, 45, 48, 33, 48, 1, - 0, 3, 0, 0, 0, 37, 35, 0, 0, 37, - 37, 0, 38, 44, 2, 31, 0, 0, 0, 0, - 35, 35, 35, 35, 0, 34, 0, 0, 0, 0, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 0, 0, 45, 0, 46, 33, 39, - 0, 0, 0, 0, 37, 0, 0, 37, 2, 31, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, - 34, 34, 34, 34, 34, 34, 30, 27, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 14, 34, 27, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 0, 42, 0, 0, 37, - - 0, 31, 0, 0, 0, 0, 0, 0, 0, 4, - 36, 36, 0, 34, 34, 28, 34, 34, 29, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 10, 9, 34, 34, 34, 34, 6, 34, - 34, 34, 34, 14, 34, 34, 34, 8, 34, 34, - 34, 34, 15, 34, 34, 34, 34, 0, 0, 28, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 23, 34, 34, - 34, 16, 34, 34, 34, 34, 12, 34, 34, 11, - - 34, 34, 15, 34, 34, 34, 40, 41, 0, 0, - 0, 0, 34, 34, 34, 25, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 18, 24, 34, 7, 5, 20, 17, 34, 34, - 13, 34, 0, 0, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 32, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 0, 34, 26, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 5, 34, 34, - 34, 34, 26, 26, 19, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - - 34, 34, 22, 34, 34, 34, 21, 34, 34, 34, - 34, 34, 34, 34, 34, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 5, 6, 5, 5, 5, 5, 7, 5, - 5, 8, 9, 5, 10, 11, 12, 13, 14, 15, - 16, 17, 14, 18, 14, 19, 19, 20, 5, 5, - 5, 5, 5, 21, 22, 23, 24, 25, 26, 27, - 28, 28, 29, 28, 28, 30, 31, 32, 28, 33, - 28, 28, 34, 35, 36, 37, 28, 38, 28, 28, - 5, 39, 5, 5, 40, 5, 41, 42, 43, 44, - - 45, 46, 47, 48, 49, 28, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 28, 38, - 62, 63, 64, 5, 5, 5, 1, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, - 68, 68, 68, 68, 68, 68, 68, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[69] = - { 0, - 1, 1, 2, 1, 1, 1, 3, 4, 5, 5, - 6, 7, 8, 8, 8, 8, 8, 8, 8, 1, - 5, 9, 9, 9, 9, 10, 9, 11, 12, 13, - 11, 11, 11, 13, 11, 11, 11, 11, 11, 11, - 9, 9, 9, 9, 10, 9, 11, 11, 11, 11, - 13, 11, 11, 11, 11, 11, 11, 13, 11, 11, - 11, 11, 11, 14, 1, 11, 11, 11 - } ; - -static yyconst flex_int16_t yy_base[435] = - { 0, - 0, 0, 325, 321, 264, 255, 318, 2347, 67, 2347, - 64, 269, 61, 62, 95, 77, 136, 259, 51, 61, - 188, 97, 118, 150, 65, 195, 233, 153, 183, 222, - 241, 202, 207, 213, 238, 246, 243, 257, 268, 264, - 298, 276, 221, 219, 218, 270, 236, 0, 2347, 79, - 87, 2347, 244, 238, 344, 0, 206, 358, 190, 0, - 2347, 370, 2347, 2347, 0, 342, 377, 177, 175, 174, - 200, 2347, 54, 377, 0, 254, 397, 171, 170, 169, - 358, 85, 404, 373, 376, 398, 391, 406, 412, 417, - 421, 428, 432, 451, 454, 443, 473, 476, 486, 489, - - 494, 499, 511, 508, 520, 530, 546, 542, 550, 553, - 556, 560, 563, 566, 586, 598, 602, 605, 608, 623, - 612, 644, 647, 168, 167, 222, 217, 2347, 0, 2347, - 221, 680, 219, 703, 710, 179, 728, 749, 0, 691, - 666, 765, 159, 158, 135, 130, 128, 651, 125, 123, - 739, 716, 721, 751, 764, 770, 757, 775, 783, 760, - 794, 800, 806, 809, 813, 824, 820, 844, 839, 830, - 854, 850, 862, 869, 874, 886, 904, 893, 908, 917, - 947, 934, 912, 964, 943, 954, 900, 930, 950, 967, - 980, 984, 989, 1004, 1010, 118, 2347, 735, 0, 2347, - - 50, 1015, 1047, 117, 115, 112, 110, 108, 104, 904, - 72, 2347, 103, 1028, 1034, 1041, 1045, 1049, 1052, 1058, - 1075, 1071, 1082, 1093, 1088, 1101, 1106, 1113, 1097, 1132, - 1118, 1137, 1067, 1123, 1148, 1157, 1144, 1162, 1127, 1167, - 1153, 1192, 1197, 1179, 1202, 1209, 1183, 1213, 1223, 1218, - 1234, 1227, 1260, 1249, 1267, 1264, 1270, 160, 154, 2347, - 107, 1275, 1340, 93, 91, 77, 73, 72, 70, 1284, - 1310, 1314, 1327, 1330, 1317, 1323, 1333, 1349, 1363, 1366, - 1353, 1369, 1374, 1399, 1383, 1387, 1404, 2347, 1417, 1413, - 1437, 1420, 1423, 1434, 1453, 1467, 1430, 1456, 1443, 1474, - - 1477, 1489, 1486, 1498, 1492, 1507, 2347, 2347, 85, 65, - 59, 36, 1532, 1523, 1511, 1528, 1545, 1548, 1542, 1553, - 1563, 1578, 1566, 1584, 1598, 1589, 1603, 1620, 1633, 1610, - 1640, 1629, 2347, 1645, 1651, 1654, 2347, 1659, 1664, 1676, - 1671, 1685, 39, 27, 1694, 1702, 1710, 1690, 1715, 1720, - 1727, 1724, 1734, 1745, 1759, 1765, 1769, 1776, 1779, 1784, - 1795, 1799, 1802, 1809, 1819, 24, 1814, 1832, 1849, 1840, - 1853, 1845, 1858, 1865, 1884, 1870, 1875, 1889, 1895, 1900, - 1905, 1919, 36, 1908, 1914, 1925, 1939, 1930, 1944, 1963, - 1977, 1956, 1960, 1951, 1981, 1974, 1994, 1998, 2019, 1986, - - 2007, 2030, 2347, 2033, 2037, 2040, 2347, 2044, 2051, 2075, - 2082, 2086, 2089, 2092, 2098, 2347, 2166, 2180, 2194, 2208, - 2217, 2226, 2235, 2248, 2262, 2275, 2289, 2299, 2305, 2313, - 2315, 2321, 2327, 2333 - } ; - -static yyconst flex_int16_t yy_def[435] = - { 0, - 416, 1, 417, 417, 418, 418, 416, 416, 416, 416, - 419, 420, 416, 421, 416, 422, 416, 17, 423, 423, - 423, 423, 423, 423, 423, 416, 423, 423, 423, 423, - 21, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 416, 416, 416, 424, 424, 425, 416, 416, - 419, 416, 419, 416, 426, 15, 17, 416, 416, 15, - 416, 416, 416, 416, 427, 428, 416, 416, 416, 416, - 17, 416, 416, 416, 429, 423, 416, 416, 416, 416, - 423, 21, 21, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 416, 416, 424, 424, 416, 425, 416, - 416, 416, 430, 416, 416, 416, 416, 416, 427, 428, - 431, 416, 416, 416, 416, 416, 416, 432, 416, 416, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 416, 416, 416, 433, 416, - - 416, 434, 416, 416, 416, 416, 416, 416, 416, 432, - 416, 416, 416, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 416, 416, 416, - 416, 434, 416, 416, 416, 416, 416, 416, 416, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 416, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - - 423, 423, 423, 423, 423, 423, 416, 416, 416, 416, - 416, 416, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 416, 423, 423, 423, 416, 423, 423, 423, - 423, 423, 416, 416, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 416, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 416, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - - 423, 423, 416, 423, 423, 423, 416, 423, 423, 423, - 423, 423, 423, 423, 423, 0, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416 - } ; - -static yyconst flex_int16_t yy_nxt[2416] = - { 0, - 8, 9, 10, 9, 8, 11, 12, 8, 13, 14, - 15, 16, 17, 18, 18, 18, 18, 18, 18, 8, - 8, 19, 19, 19, 20, 21, 22, 19, 23, 19, - 19, 24, 19, 19, 19, 25, 19, 19, 26, 27, - 19, 28, 29, 30, 31, 32, 33, 19, 34, 19, - 35, 19, 36, 37, 19, 19, 38, 39, 40, 41, - 42, 19, 19, 8, 8, 43, 44, 45, 50, 52, - 50, 56, 56, 57, 57, 57, 57, 57, 57, 57, - 50, 260, 50, 72, 64, 383, 58, 58, 65, 77, - 59, 262, 52, 76, 76, 260, 90, 366, 261, 77, - - 202, 212, 53, 77, 72, 58, 58, 60, 60, 60, - 60, 60, 60, 60, 81, 67, 78, 79, 80, 61, - 62, 63, 212, 344, 61, 53, 78, 79, 80, 262, - 78, 79, 80, 343, 140, 77, 312, 202, 61, 62, - 63, 311, 68, 69, 70, 61, 56, 84, 71, 71, - 71, 71, 71, 71, 71, 310, 77, 262, 72, 309, - 308, 58, 78, 79, 80, 73, 307, 76, 66, 72, - 85, 74, 269, 75, 140, 86, 268, 72, 87, 267, - 58, 202, 91, 78, 79, 80, 73, 213, 77, 76, - 88, 77, 209, 72, 66, 74, 82, 82, 89, 208, - - 83, 83, 83, 83, 83, 83, 83, 91, 91, 91, - 91, 91, 91, 91, 99, 78, 79, 80, 78, 79, - 80, 77, 207, 140, 201, 197, 77, 197, 416, 127, - 100, 196, 91, 150, 149, 76, 101, 416, 147, 146, - 77, 66, 136, 416, 130, 77, 416, 128, 78, 79, - 80, 77, 106, 78, 79, 80, 92, 93, 94, 95, - 77, 96, 102, 107, 97, 108, 98, 78, 79, 80, - 103, 77, 78, 79, 80, 104, 77, 127, 78, 79, - 80, 77, 125, 124, 77, 91, 110, 78, 79, 80, - 111, 109, 77, 105, 112, 77, 416, 113, 78, 79, - - 80, 114, 77, 78, 79, 80, 77, 55, 78, 79, - 80, 78, 79, 80, 77, 115, 123, 416, 49, 78, - 79, 80, 78, 79, 80, 117, 116, 49, 47, 78, - 79, 80, 47, 78, 79, 80, 77, 416, 416, 118, - 416, 78, 79, 80, 416, 416, 119, 416, 120, 416, - 121, 416, 416, 141, 416, 122, 132, 132, 132, 132, - 132, 132, 416, 78, 79, 80, 134, 134, 416, 416, - 135, 135, 135, 135, 135, 135, 135, 416, 137, 137, - 142, 133, 138, 138, 138, 138, 138, 138, 138, 66, - 66, 66, 66, 66, 66, 66, 77, 416, 416, 72, - - 76, 76, 76, 76, 76, 416, 73, 143, 144, 145, - 72, 77, 76, 76, 77, 416, 76, 151, 72, 416, - 157, 155, 416, 78, 79, 80, 154, 73, 152, 77, - 153, 416, 156, 152, 72, 76, 77, 158, 78, 79, - 80, 78, 79, 80, 77, 416, 159, 152, 416, 153, - 77, 416, 416, 416, 152, 77, 78, 79, 80, 77, - 76, 416, 157, 78, 79, 80, 77, 416, 416, 416, - 77, 78, 79, 80, 416, 160, 161, 78, 79, 80, - 416, 77, 78, 79, 80, 416, 78, 79, 80, 77, - 416, 416, 77, 78, 79, 80, 167, 78, 79, 80, - - 166, 416, 163, 162, 164, 416, 416, 165, 78, 79, - 80, 77, 416, 416, 77, 416, 78, 79, 80, 78, - 79, 80, 416, 169, 77, 416, 168, 77, 416, 173, - 416, 416, 77, 416, 170, 171, 416, 77, 78, 79, - 80, 78, 79, 80, 172, 174, 77, 416, 416, 77, - 416, 78, 79, 80, 78, 79, 80, 175, 77, 78, - 79, 80, 176, 416, 78, 79, 80, 177, 77, 416, - 416, 416, 416, 78, 79, 80, 78, 79, 80, 178, - 77, 416, 416, 179, 77, 78, 79, 80, 77, 416, - 416, 77, 416, 416, 77, 78, 79, 80, 77, 180, - - 181, 77, 182, 185, 77, 183, 186, 78, 79, 80, - 157, 78, 79, 80, 184, 78, 79, 80, 78, 79, - 80, 78, 79, 80, 77, 78, 79, 80, 78, 79, - 80, 78, 79, 80, 416, 416, 77, 416, 416, 187, - 77, 416, 416, 77, 416, 416, 77, 416, 416, 416, - 77, 78, 79, 80, 188, 416, 189, 416, 416, 416, - 191, 77, 193, 78, 79, 80, 190, 78, 79, 80, - 78, 79, 80, 78, 79, 80, 192, 78, 79, 80, - 211, 416, 77, 416, 212, 77, 197, 416, 78, 79, - 80, 194, 198, 198, 198, 198, 198, 198, 416, 416, - - 416, 211, 141, 195, 203, 416, 416, 416, 212, 78, - 79, 80, 78, 79, 80, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 142, - 416, 204, 205, 206, 200, 416, 63, 416, 416, 200, - 138, 138, 138, 138, 138, 138, 138, 258, 258, 258, - 258, 258, 258, 200, 77, 63, 143, 144, 145, 77, - 200, 138, 138, 138, 138, 138, 138, 138, 140, 140, - 140, 140, 140, 61, 416, 63, 416, 77, 61, 416, - 214, 78, 79, 80, 140, 416, 78, 79, 80, 77, - 416, 215, 61, 218, 63, 77, 416, 416, 77, 61, - - 416, 416, 77, 140, 78, 79, 80, 416, 77, 216, - 416, 220, 217, 77, 416, 416, 78, 79, 80, 221, - 219, 77, 78, 79, 80, 78, 79, 80, 140, 78, - 79, 80, 77, 416, 416, 78, 79, 80, 77, 222, - 78, 79, 80, 223, 77, 416, 416, 77, 78, 79, - 80, 77, 228, 225, 416, 227, 224, 416, 77, 78, - 79, 80, 77, 416, 416, 78, 79, 80, 77, 226, - 229, 78, 79, 80, 78, 79, 80, 77, 78, 79, - 80, 416, 77, 231, 416, 78, 79, 80, 77, 78, - 79, 80, 77, 416, 233, 78, 79, 80, 230, 416, - - 77, 416, 416, 416, 78, 79, 80, 77, 232, 78, - 79, 80, 77, 416, 236, 78, 79, 80, 234, 78, - 79, 80, 416, 235, 77, 416, 416, 78, 79, 80, - 237, 77, 416, 211, 78, 79, 80, 212, 77, 78, - 79, 80, 77, 416, 239, 238, 77, 416, 240, 416, - 77, 78, 79, 80, 211, 77, 249, 219, 78, 79, - 80, 212, 416, 416, 242, 78, 79, 80, 77, 78, - 79, 80, 77, 78, 79, 80, 241, 78, 79, 80, - 244, 77, 78, 79, 80, 77, 416, 245, 77, 250, - 416, 243, 77, 416, 251, 78, 79, 80, 247, 78, - - 79, 80, 77, 416, 248, 77, 246, 416, 78, 79, - 80, 416, 78, 79, 80, 78, 79, 80, 77, 78, - 79, 80, 77, 416, 416, 252, 141, 77, 416, 78, - 79, 80, 78, 79, 80, 416, 254, 255, 253, 416, - 416, 416, 77, 416, 416, 78, 79, 80, 77, 78, - 79, 80, 416, 263, 78, 79, 80, 256, 257, 202, - 202, 202, 202, 202, 202, 202, 77, 416, 416, 78, - 79, 80, 77, 273, 416, 78, 79, 80, 270, 77, - 264, 265, 266, 77, 416, 416, 416, 77, 274, 416, - 77, 416, 271, 78, 79, 80, 77, 272, 416, 78, - - 79, 80, 416, 416, 416, 77, 78, 79, 80, 77, - 78, 79, 80, 77, 78, 79, 80, 78, 79, 80, - 77, 276, 416, 78, 79, 80, 77, 275, 416, 416, - 277, 77, 78, 79, 80, 77, 78, 79, 80, 77, - 78, 79, 80, 278, 77, 283, 279, 78, 79, 80, - 281, 77, 280, 78, 79, 80, 77, 416, 78, 79, - 80, 77, 78, 79, 80, 77, 78, 79, 80, 282, - 77, 78, 79, 80, 285, 77, 288, 284, 78, 79, - 80, 286, 77, 78, 79, 80, 77, 416, 78, 79, - 80, 77, 78, 79, 80, 77, 289, 78, 79, 80, - - 77, 287, 78, 79, 80, 77, 416, 291, 292, 78, - 79, 80, 290, 78, 79, 80, 416, 77, 78, 79, - 80, 77, 78, 79, 80, 248, 294, 78, 79, 80, - 77, 416, 78, 79, 80, 77, 416, 416, 416, 416, - 77, 416, 296, 293, 78, 79, 80, 77, 78, 79, - 80, 77, 295, 416, 416, 416, 77, 78, 79, 80, - 298, 77, 78, 79, 80, 77, 416, 78, 79, 80, - 416, 300, 77, 416, 78, 79, 80, 301, 78, 79, - 80, 297, 416, 78, 79, 80, 141, 77, 78, 79, - 80, 299, 78, 79, 80, 303, 416, 416, 77, 78, - - 79, 80, 77, 416, 302, 77, 416, 416, 77, 416, - 306, 416, 416, 263, 78, 79, 80, 416, 304, 416, - 305, 416, 77, 416, 416, 78, 79, 80, 313, 78, - 79, 80, 78, 79, 80, 78, 79, 80, 314, 416, - 264, 265, 266, 262, 262, 262, 262, 262, 77, 78, - 79, 80, 77, 316, 416, 77, 416, 416, 317, 262, - 416, 77, 315, 319, 416, 77, 318, 416, 77, 416, - 416, 77, 416, 320, 416, 78, 79, 80, 262, 78, - 79, 80, 78, 79, 80, 321, 416, 77, 78, 79, - 80, 77, 78, 79, 80, 78, 79, 80, 78, 79, - - 80, 77, 416, 262, 77, 322, 323, 77, 416, 416, - 416, 324, 77, 416, 78, 79, 80, 416, 78, 79, - 80, 77, 325, 328, 326, 77, 416, 416, 78, 79, - 80, 78, 79, 80, 78, 79, 80, 77, 416, 78, - 79, 80, 77, 329, 327, 416, 416, 416, 78, 79, - 80, 77, 78, 79, 80, 77, 333, 332, 77, 416, - 316, 77, 337, 330, 78, 79, 80, 334, 77, 78, - 79, 80, 77, 416, 331, 77, 416, 416, 78, 79, - 80, 77, 78, 79, 80, 78, 79, 80, 78, 79, - 80, 77, 416, 338, 77, 78, 79, 80, 316, 78, - - 79, 80, 78, 79, 80, 77, 416, 416, 78, 79, - 80, 335, 77, 416, 336, 77, 416, 416, 78, 79, - 80, 78, 79, 80, 77, 416, 416, 77, 416, 416, - 77, 416, 78, 79, 80, 339, 77, 416, 416, 78, - 79, 80, 78, 79, 80, 77, 340, 416, 342, 77, - 341, 78, 79, 80, 78, 79, 80, 78, 79, 80, - 345, 77, 416, 78, 79, 80, 77, 416, 416, 347, - 77, 416, 78, 79, 80, 346, 78, 79, 80, 348, - 77, 349, 416, 77, 416, 416, 77, 416, 78, 79, - 80, 77, 416, 78, 79, 80, 416, 78, 79, 80, - - 350, 77, 416, 352, 77, 351, 416, 78, 79, 80, - 78, 79, 80, 78, 79, 80, 77, 416, 78, 79, - 80, 416, 77, 416, 354, 353, 355, 77, 78, 79, - 80, 78, 79, 80, 416, 416, 77, 416, 416, 354, - 416, 77, 416, 78, 79, 80, 416, 416, 77, 78, - 79, 80, 356, 357, 78, 79, 80, 416, 77, 416, - 416, 416, 360, 78, 79, 80, 358, 77, 78, 79, - 80, 77, 416, 416, 359, 78, 79, 80, 77, 416, - 416, 416, 416, 77, 416, 78, 79, 80, 361, 77, - 416, 416, 77, 416, 78, 79, 80, 77, 78, 79, - - 80, 244, 77, 416, 416, 78, 79, 80, 363, 77, - 78, 79, 80, 362, 77, 369, 78, 79, 80, 78, - 79, 80, 416, 77, 78, 79, 80, 416, 77, 78, - 79, 80, 77, 416, 364, 365, 78, 79, 80, 416, - 77, 78, 79, 80, 416, 416, 367, 216, 77, 416, - 78, 79, 80, 77, 416, 78, 79, 80, 77, 78, - 79, 80, 77, 370, 371, 77, 416, 78, 79, 80, - 416, 368, 77, 416, 373, 78, 79, 80, 374, 372, - 78, 79, 80, 77, 416, 78, 79, 80, 416, 78, - 79, 80, 78, 79, 80, 416, 416, 77, 416, 78, - - 79, 80, 375, 77, 416, 416, 416, 77, 416, 376, - 78, 79, 80, 354, 77, 416, 416, 77, 416, 416, - 354, 416, 77, 416, 78, 79, 80, 378, 416, 377, - 78, 79, 80, 77, 78, 79, 80, 77, 416, 416, - 77, 78, 79, 80, 78, 79, 80, 77, 379, 78, - 79, 80, 77, 381, 416, 380, 416, 77, 303, 384, - 78, 79, 80, 382, 78, 79, 80, 78, 79, 80, - 77, 416, 416, 385, 78, 79, 80, 216, 77, 78, - 79, 80, 387, 77, 78, 79, 80, 77, 416, 388, - 416, 77, 416, 416, 416, 416, 77, 78, 79, 80, - - 416, 416, 386, 77, 416, 78, 79, 80, 77, 416, - 78, 79, 80, 77, 78, 79, 80, 389, 78, 79, - 80, 390, 77, 78, 79, 80, 392, 77, 393, 391, - 78, 79, 80, 77, 416, 78, 79, 80, 77, 416, - 78, 79, 80, 77, 378, 416, 77, 394, 385, 78, - 79, 80, 77, 416, 78, 79, 80, 77, 416, 416, - 78, 79, 80, 77, 416, 78, 79, 80, 77, 396, - 78, 79, 80, 78, 79, 80, 395, 77, 399, 78, - 79, 80, 77, 397, 78, 79, 80, 398, 354, 77, - 78, 79, 80, 354, 77, 78, 79, 80, 77, 416, - - 403, 77, 401, 416, 78, 79, 80, 416, 402, 78, - 79, 80, 77, 416, 400, 77, 78, 79, 80, 77, - 416, 78, 79, 80, 77, 78, 79, 80, 78, 79, - 80, 354, 77, 354, 405, 416, 77, 416, 416, 78, - 79, 80, 78, 79, 80, 77, 78, 79, 80, 407, - 416, 78, 79, 80, 404, 354, 406, 77, 416, 78, - 79, 80, 416, 78, 79, 80, 416, 416, 77, 416, - 416, 77, 78, 79, 80, 77, 410, 408, 77, 416, - 416, 409, 77, 416, 78, 79, 80, 416, 416, 77, - 416, 416, 416, 416, 354, 78, 79, 80, 78, 79, - - 80, 416, 78, 79, 80, 78, 79, 80, 354, 78, - 79, 80, 416, 77, 416, 416, 78, 79, 80, 411, - 77, 416, 416, 416, 77, 416, 416, 77, 416, 416, - 77, 416, 416, 416, 416, 416, 77, 414, 412, 416, - 78, 79, 80, 413, 416, 415, 416, 78, 79, 80, - 354, 78, 79, 80, 78, 79, 80, 78, 79, 80, - 416, 416, 416, 78, 79, 80, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 51, 51, 51, 51, 51, 51, - - 51, 51, 51, 51, 51, 51, 51, 51, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 57, 416, 57, 416, 57, 416, 57, 66, - 416, 416, 66, 416, 66, 66, 66, 66, 66, 76, - 76, 416, 76, 76, 76, 76, 76, 76, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 131, 416, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 139, - 416, 139, 139, 139, 139, 139, 139, 139, 139, 139, - - 139, 139, 139, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 148, 148, 148, 199, 416, 416, 416, 416, - 199, 199, 199, 202, 202, 202, 202, 202, 210, 210, - 210, 416, 416, 210, 259, 259, 259, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 7, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416 - } ; - -static yyconst flex_int16_t yy_chk[2416] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 9, 11, - 9, 13, 14, 13, 13, 13, 13, 13, 13, 13, - 50, 383, 50, 73, 16, 366, 13, 14, 16, 19, - 14, 344, 51, 82, 82, 201, 25, 343, 201, 20, - - 312, 211, 11, 25, 73, 13, 14, 15, 15, 15, - 15, 15, 15, 15, 20, 16, 19, 19, 19, 15, - 15, 15, 211, 311, 15, 51, 20, 20, 20, 310, - 25, 25, 25, 309, 269, 22, 268, 267, 15, 15, - 15, 266, 16, 16, 16, 15, 17, 22, 17, 17, - 17, 17, 17, 17, 17, 265, 23, 264, 17, 261, - 259, 17, 22, 22, 22, 17, 258, 213, 209, 17, - 23, 17, 208, 17, 207, 24, 206, 17, 24, 205, - 17, 204, 196, 23, 23, 23, 17, 150, 24, 149, - 24, 28, 147, 17, 146, 17, 21, 21, 24, 145, - - 21, 21, 21, 21, 21, 21, 21, 26, 26, 26, - 26, 26, 26, 26, 28, 24, 24, 24, 28, 28, - 28, 29, 144, 143, 136, 133, 21, 131, 127, 126, - 29, 125, 124, 80, 79, 78, 29, 71, 70, 69, - 32, 68, 59, 57, 54, 33, 53, 47, 29, 29, - 29, 34, 32, 21, 21, 21, 27, 27, 27, 27, - 30, 27, 30, 33, 27, 34, 27, 32, 32, 32, - 30, 27, 33, 33, 33, 30, 35, 46, 34, 34, - 34, 37, 45, 44, 36, 43, 36, 30, 30, 30, - 36, 35, 76, 31, 36, 38, 18, 37, 27, 27, - - 27, 38, 40, 35, 35, 35, 39, 12, 37, 37, - 37, 36, 36, 36, 42, 39, 42, 7, 6, 76, - 76, 76, 38, 38, 38, 40, 39, 5, 4, 40, - 40, 40, 3, 39, 39, 39, 41, 0, 0, 41, - 0, 42, 42, 42, 0, 0, 41, 0, 41, 0, - 41, 0, 0, 66, 0, 41, 55, 55, 55, 55, - 55, 55, 0, 41, 41, 41, 58, 58, 0, 0, - 58, 58, 58, 58, 58, 58, 58, 0, 62, 62, - 66, 55, 62, 62, 62, 62, 62, 62, 62, 67, - 67, 67, 67, 67, 67, 67, 81, 0, 0, 74, - - 77, 77, 77, 77, 77, 0, 74, 66, 66, 66, - 74, 84, 83, 83, 85, 0, 77, 81, 74, 0, - 87, 85, 0, 81, 81, 81, 84, 74, 83, 87, - 83, 0, 86, 83, 74, 77, 86, 88, 84, 84, - 84, 85, 85, 85, 88, 0, 90, 83, 0, 83, - 89, 0, 0, 0, 83, 90, 87, 87, 87, 91, - 77, 0, 89, 86, 86, 86, 92, 0, 0, 0, - 93, 88, 88, 88, 0, 92, 93, 89, 89, 89, - 0, 96, 90, 90, 90, 0, 91, 91, 91, 94, - 0, 0, 95, 92, 92, 92, 97, 93, 93, 93, - - 96, 0, 95, 94, 95, 0, 0, 95, 96, 96, - 96, 97, 0, 0, 98, 0, 94, 94, 94, 95, - 95, 95, 0, 98, 99, 0, 97, 100, 0, 100, - 0, 0, 101, 0, 98, 98, 0, 102, 97, 97, - 97, 98, 98, 98, 99, 101, 104, 0, 0, 103, - 0, 99, 99, 99, 100, 100, 100, 102, 105, 101, - 101, 101, 103, 0, 102, 102, 102, 104, 106, 0, - 0, 0, 0, 104, 104, 104, 103, 103, 103, 105, - 108, 0, 0, 106, 107, 105, 105, 105, 109, 0, - 0, 110, 0, 0, 111, 106, 106, 106, 112, 107, - - 108, 113, 109, 113, 114, 110, 114, 108, 108, 108, - 112, 107, 107, 107, 111, 109, 109, 109, 110, 110, - 110, 111, 111, 111, 115, 112, 112, 112, 113, 113, - 113, 114, 114, 114, 0, 0, 116, 0, 0, 115, - 117, 0, 0, 118, 0, 0, 119, 0, 0, 0, - 121, 115, 115, 115, 116, 0, 117, 0, 0, 0, - 119, 120, 121, 116, 116, 116, 118, 117, 117, 117, - 118, 118, 118, 119, 119, 119, 120, 121, 121, 121, - 148, 0, 122, 0, 148, 123, 132, 0, 120, 120, - 120, 122, 132, 132, 132, 132, 132, 132, 0, 0, - - 0, 148, 140, 123, 141, 0, 0, 0, 148, 122, - 122, 122, 123, 123, 123, 134, 134, 134, 134, 134, - 134, 134, 135, 135, 135, 135, 135, 135, 135, 140, - 0, 141, 141, 141, 135, 0, 135, 0, 0, 135, - 137, 137, 137, 137, 137, 137, 137, 198, 198, 198, - 198, 198, 198, 135, 152, 135, 140, 140, 140, 153, - 135, 138, 138, 138, 138, 138, 138, 138, 142, 142, - 142, 142, 142, 138, 0, 138, 0, 151, 138, 0, - 151, 152, 152, 152, 142, 0, 153, 153, 153, 154, - 0, 154, 138, 156, 138, 157, 0, 0, 160, 138, - - 0, 0, 155, 142, 151, 151, 151, 0, 156, 155, - 0, 159, 155, 158, 0, 0, 154, 154, 154, 160, - 158, 159, 157, 157, 157, 160, 160, 160, 142, 155, - 155, 155, 161, 0, 0, 156, 156, 156, 162, 161, - 158, 158, 158, 162, 163, 0, 0, 164, 159, 159, - 159, 165, 167, 164, 0, 166, 163, 0, 167, 161, - 161, 161, 166, 0, 0, 162, 162, 162, 170, 165, - 168, 163, 163, 163, 164, 164, 164, 169, 165, 165, - 165, 0, 168, 170, 0, 167, 167, 167, 172, 166, - 166, 166, 171, 0, 172, 170, 170, 170, 169, 0, - - 173, 0, 0, 0, 169, 169, 169, 174, 171, 168, - 168, 168, 175, 0, 175, 172, 172, 172, 173, 171, - 171, 171, 0, 174, 176, 0, 0, 173, 173, 173, - 176, 178, 0, 210, 174, 174, 174, 210, 187, 175, - 175, 175, 177, 0, 178, 177, 179, 0, 179, 0, - 183, 176, 176, 176, 210, 180, 187, 183, 178, 178, - 178, 210, 0, 0, 181, 187, 187, 187, 188, 177, - 177, 177, 182, 179, 179, 179, 180, 183, 183, 183, - 182, 185, 180, 180, 180, 181, 0, 184, 189, 188, - 0, 181, 186, 0, 189, 188, 188, 188, 185, 182, - - 182, 182, 184, 0, 186, 190, 184, 0, 185, 185, - 185, 0, 181, 181, 181, 189, 189, 189, 191, 186, - 186, 186, 192, 0, 0, 190, 202, 193, 0, 184, - 184, 184, 190, 190, 190, 0, 192, 193, 191, 0, - 0, 0, 194, 0, 0, 191, 191, 191, 195, 192, - 192, 192, 0, 202, 193, 193, 193, 194, 195, 203, - 203, 203, 203, 203, 203, 203, 214, 0, 0, 194, - 194, 194, 215, 218, 0, 195, 195, 195, 214, 216, - 202, 202, 202, 217, 0, 0, 0, 218, 220, 0, - 219, 0, 215, 214, 214, 214, 220, 217, 0, 215, - - 215, 215, 0, 0, 0, 233, 216, 216, 216, 222, - 217, 217, 217, 221, 218, 218, 218, 219, 219, 219, - 223, 222, 0, 220, 220, 220, 225, 221, 0, 0, - 223, 224, 233, 233, 233, 229, 222, 222, 222, 226, - 221, 221, 221, 224, 227, 229, 225, 223, 223, 223, - 227, 228, 226, 225, 225, 225, 231, 0, 224, 224, - 224, 234, 229, 229, 229, 239, 226, 226, 226, 228, - 230, 227, 227, 227, 231, 232, 236, 230, 228, 228, - 228, 232, 237, 231, 231, 231, 235, 0, 234, 234, - 234, 241, 239, 239, 239, 236, 237, 230, 230, 230, - - 238, 235, 232, 232, 232, 240, 0, 241, 242, 237, - 237, 237, 238, 235, 235, 235, 0, 244, 241, 241, - 241, 247, 236, 236, 236, 240, 245, 238, 238, 238, - 242, 0, 240, 240, 240, 243, 0, 0, 0, 0, - 245, 0, 247, 243, 244, 244, 244, 246, 247, 247, - 247, 248, 246, 0, 0, 0, 250, 242, 242, 242, - 250, 249, 243, 243, 243, 252, 0, 245, 245, 245, - 0, 252, 251, 0, 246, 246, 246, 253, 248, 248, - 248, 249, 0, 250, 250, 250, 262, 254, 249, 249, - 249, 251, 252, 252, 252, 254, 0, 0, 253, 251, - - 251, 251, 256, 0, 253, 255, 0, 0, 257, 0, - 257, 0, 0, 262, 254, 254, 254, 0, 255, 0, - 256, 0, 270, 0, 0, 253, 253, 253, 270, 256, - 256, 256, 255, 255, 255, 257, 257, 257, 271, 0, - 262, 262, 262, 263, 263, 263, 263, 263, 271, 270, - 270, 270, 272, 273, 0, 275, 0, 0, 274, 263, - 0, 276, 272, 276, 0, 273, 275, 0, 274, 0, - 0, 277, 0, 277, 0, 271, 271, 271, 263, 272, - 272, 272, 275, 275, 275, 278, 0, 278, 276, 276, - 276, 281, 273, 273, 273, 274, 274, 274, 277, 277, - - 277, 279, 0, 263, 280, 279, 280, 282, 0, 0, - 0, 281, 283, 0, 278, 278, 278, 0, 281, 281, - 281, 285, 282, 285, 283, 286, 0, 0, 279, 279, - 279, 280, 280, 280, 282, 282, 282, 284, 0, 283, - 283, 283, 287, 286, 284, 0, 0, 0, 285, 285, - 285, 290, 286, 286, 286, 289, 291, 290, 292, 0, - 294, 293, 299, 287, 284, 284, 284, 293, 297, 287, - 287, 287, 294, 0, 289, 291, 0, 0, 290, 290, - 290, 299, 289, 289, 289, 292, 292, 292, 293, 293, - 293, 295, 0, 301, 298, 297, 297, 297, 295, 294, - - 294, 294, 291, 291, 291, 296, 0, 0, 299, 299, - 299, 296, 300, 0, 298, 301, 0, 0, 295, 295, - 295, 298, 298, 298, 303, 0, 0, 302, 0, 0, - 305, 0, 296, 296, 296, 302, 304, 0, 0, 300, - 300, 300, 301, 301, 301, 306, 304, 0, 306, 315, - 305, 303, 303, 303, 302, 302, 302, 305, 305, 305, - 313, 314, 0, 304, 304, 304, 316, 0, 0, 315, - 313, 0, 306, 306, 306, 314, 315, 315, 315, 317, - 319, 318, 0, 317, 0, 0, 318, 0, 314, 314, - 314, 320, 0, 316, 316, 316, 0, 313, 313, 313, - - 319, 321, 0, 321, 323, 320, 0, 319, 319, 319, - 317, 317, 317, 318, 318, 318, 322, 0, 320, 320, - 320, 0, 324, 0, 323, 322, 324, 326, 321, 321, - 321, 323, 323, 323, 0, 0, 325, 0, 0, 326, - 0, 327, 0, 322, 322, 322, 0, 0, 330, 324, - 324, 324, 325, 327, 326, 326, 326, 0, 328, 0, - 0, 0, 330, 325, 325, 325, 328, 332, 327, 327, - 327, 329, 0, 0, 329, 330, 330, 330, 331, 0, - 0, 0, 0, 334, 0, 328, 328, 328, 331, 335, - 0, 0, 336, 0, 332, 332, 332, 338, 329, 329, - - 329, 334, 339, 0, 0, 331, 331, 331, 339, 341, - 334, 334, 334, 336, 340, 348, 335, 335, 335, 336, - 336, 336, 0, 342, 338, 338, 338, 0, 348, 339, - 339, 339, 345, 0, 340, 342, 341, 341, 341, 0, - 346, 340, 340, 340, 0, 0, 345, 346, 347, 0, - 342, 342, 342, 349, 0, 348, 348, 348, 350, 345, - 345, 345, 352, 349, 350, 351, 0, 346, 346, 346, - 0, 347, 353, 0, 352, 347, 347, 347, 353, 351, - 349, 349, 349, 354, 0, 350, 350, 350, 0, 352, - 352, 352, 351, 351, 351, 0, 0, 355, 0, 353, - - 353, 353, 355, 356, 0, 0, 0, 357, 0, 356, - 354, 354, 354, 357, 358, 0, 0, 359, 0, 0, - 358, 0, 360, 0, 355, 355, 355, 360, 0, 359, - 356, 356, 356, 361, 357, 357, 357, 362, 0, 0, - 363, 358, 358, 358, 359, 359, 359, 364, 361, 360, - 360, 360, 367, 364, 0, 362, 0, 365, 363, 367, - 361, 361, 361, 365, 362, 362, 362, 363, 363, 363, - 368, 0, 0, 369, 364, 364, 364, 368, 370, 367, - 367, 367, 371, 372, 365, 365, 365, 369, 0, 372, - 0, 371, 0, 0, 0, 0, 373, 368, 368, 368, - - 0, 0, 370, 374, 0, 370, 370, 370, 376, 0, - 372, 372, 372, 377, 369, 369, 369, 373, 371, 371, - 371, 374, 375, 373, 373, 373, 376, 378, 377, 375, - 374, 374, 374, 379, 0, 376, 376, 376, 380, 0, - 377, 377, 377, 381, 380, 0, 384, 379, 381, 375, - 375, 375, 385, 0, 378, 378, 378, 382, 0, 0, - 379, 379, 379, 386, 0, 380, 380, 380, 388, 386, - 381, 381, 381, 384, 384, 384, 382, 387, 390, 385, - 385, 385, 389, 387, 382, 382, 382, 388, 389, 394, - 386, 386, 386, 391, 392, 388, 388, 388, 393, 0, - - 395, 390, 393, 0, 387, 387, 387, 0, 394, 389, - 389, 389, 396, 0, 392, 391, 394, 394, 394, 395, - 0, 392, 392, 392, 400, 393, 393, 393, 390, 390, - 390, 396, 397, 399, 400, 0, 398, 0, 0, 396, - 396, 396, 391, 391, 391, 401, 395, 395, 395, 402, - 0, 400, 400, 400, 397, 398, 401, 399, 0, 397, - 397, 397, 0, 398, 398, 398, 0, 0, 402, 0, - 0, 404, 401, 401, 401, 405, 406, 404, 406, 0, - 0, 405, 408, 0, 399, 399, 399, 0, 0, 409, - 0, 0, 0, 0, 408, 402, 402, 402, 404, 404, - - 404, 0, 405, 405, 405, 406, 406, 406, 409, 408, - 408, 408, 0, 410, 0, 0, 409, 409, 409, 410, - 411, 0, 0, 0, 412, 0, 0, 413, 0, 0, - 414, 0, 0, 0, 0, 0, 415, 413, 411, 0, - 410, 410, 410, 412, 0, 414, 0, 411, 411, 411, - 415, 412, 412, 412, 413, 413, 413, 414, 414, 414, - 0, 0, 0, 415, 415, 415, 417, 417, 417, 417, - 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 419, 419, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 421, 0, 421, 0, 421, 0, 421, 422, - 0, 0, 422, 0, 422, 422, 422, 422, 422, 423, - 423, 0, 423, 423, 423, 423, 423, 423, 424, 424, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, - 424, 424, 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 425, 425, 426, 0, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 427, - 0, 427, 427, 427, 427, 427, 427, 427, 427, 427, - - 427, 427, 427, 428, 428, 428, 428, 428, 428, 428, - 428, 428, 429, 429, 429, 430, 0, 0, 0, 0, - 430, 430, 430, 431, 431, 431, 431, 431, 432, 432, - 432, 0, 0, 432, 433, 433, 433, 434, 434, 434, - 434, 434, 434, 434, 434, 434, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - - 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 416, 416 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int ncg_flex_debug; -int ncg_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *ncgtext; -#line 1 "ncgen.l" -#line 2 "ncgen.l" -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: ncgen.l,v 1.24 2009/09/25 18:22:35 dmh Exp $ - *********************************************************************/ - -/* Problems: -1. We assume the input is true utf8. - Unfortunately, we may actually get iso-latin-8859-1. - This means that there will be ambiguity about the characters - in the range 128-255 because they will look like n-byte unicode - when they are 1-byte 8859 characters. Because of our encoding, - 8859 characters above 128 will be handles as n-byte utf8 and so - will probably not lex correctly. - Solution: assume utf8 and note in the documentation that - ISO8859 is specifically unsupported. -2. The netcdf function NC_check_name in string.c must be modified to - conform to the use of UTF8. -3. We actually have three tests for UTF8 of increasing correctness - (in the sense that the least correct will allow some sequences that - are technically illegal UTF8). - The tests are derived from the table at - http://www.w3.org/2005/03/23-lex-U - We include lexical definitions for all three, but use the second version. -4. Single character constants enclosed in '...' cannot be - utf-8, so we assume they are by default encoded using the 1-byte - subset of utf-8. It turns out that this subset is in fact - equivalent to US-Ascii (7-bit). - We could use ISO-8859-1, but that conflicts with UTF-8 above value 127. -*/ - -/* lex specification for tokens for ncgen */ - -/* Fill value used by ncdump from version 2.4 and later. Should match - definition of FILL_STRING in ../ncdump/vardata.h */ - -#include "ncgen.h" -#include "ncgeny.h" - -#define FILL_STRING "_" -#define XDR_INT32_MIN (-2147483647-1) -#define XDR_INT32_MAX 2147483647 -#define XDR_INT64_MIN (-9223372036854775807LL-1) -#define XDR_INT64_MAX (9223372036854775807LL) - -#undef DEBUG -#ifdef DEBUG -static int MIN_BYTE = NC_MIN_BYTE; -static int MIN_SHORT = NC_MIN_SHORT; -static int MIN_INT = NC_MIN_INT; -static int MAX_BYTE = NC_MAX_BYTE; -static int MAX_SHORT = NC_MAX_SHORT; -static int MAX_INT = NC_MAX_INT; -static int MAX_UBYTE = NC_MAX_UBYTE; -static int MAX_USHORT = NC_MAX_USHORT; -static unsigned int MAX_UINT = NC_MAX_UINT; - -#undef NC_MIN_BYTE -#undef NC_MIN_SHORT -#undef NC_MIN_INT -#undef NC_MAX_BYTE -#undef NC_MAX_SHORT -#undef NC_MAX_INT -#undef NC_MAX_UBYTE -#undef NC_MAX_USHORT -#undef NC_MAX_UINT - -#define NC_MIN_BYTE MIN_BYTE -#define NC_MIN_SHORT MIN_SHORT -#define NC_MIN_INT MIN_INT -#define NC_MAX_BYTE MAX_BYTE -#define NC_MAX_SHORT MAX_SHORT -#define NC_MAX_INT MAX_INT -#define NC_MAX_UBYTE MAX_UBYTE -#define NC_MAX_USHORT MAX_USHORT -#define NC_MAX_UINT MAX_UINT -#endif - -#define TAGCHARS "BbSsLlUu" - -#define tstdecimal(ch) ((ch) >= '0' && (ch) <= '9') - -/*Mnemonics*/ -#define ISIDENT 1 - -/* Define a fake constant indicating that - no tag was specified */ -#define NC_NOTAG (-1) - -char errstr[100]; /* for short error messages */ - -int lineno; /* line number for error messages */ -Bytebuffer* lextext; /* name or string with escapes removed */ - -#define YY_BREAK /* defining as nothing eliminates unreachable - statement warnings from flex output, - but make sure every action ends with - "return" or "break"! */ - -int specialconstants; /* 1 if nan, nanf, infinity, etc is used */ -double double_val; /* last double value read */ -float float_val; /* last float value read */ -long long int64_val; /* last int64 value read */ -int int32_val; /* last int32 value read */ -short int16_val; /* last short value read */ -unsigned long long uint64_val; /* last int64 value read */ -unsigned int uint32_val; /* last int32 value read */ -unsigned short uint16_val; /* last short value read */ -char char_val; /* last char value read */ -signed char byte_val; /* last byte value read */ -unsigned char ubyte_val; /* last byte value read */ - -static Symbol* makepath(char* text); -static int lexdebug(int); -static unsigned long long parseULL(char* text, int*); -static nc_type downconvert(unsigned long long uint64, int*, int, int); -static int tagmatch(nc_type nct, int tag); -static int nct2lexeme(nc_type nct); -static int collecttag(char* text, char** stagp); - -struct Specialtoken specials[] = { -{"_FillValue",_FILLVALUE,_FILLVALUE_FLAG}, -{"_Format",_FORMAT,_FORMAT_FLAG}, -{"_Storage",_STORAGE,_STORAGE_FLAG}, -{"_ChunkSizes",_CHUNKSIZES,_CHUNKSIZES_FLAG}, -{"_Fletcher32",_FLETCHER32,_FLETCHER32_FLAG}, -{"_DeflateLevel",_DEFLATELEVEL,_DEFLATE_FLAG}, -{"_Shuffle",_SHUFFLE,_SHUFFLE_FLAG}, -{"_Endianness",_ENDIANNESS,_ENDIAN_FLAG}, -{"_NoFill",_NOFILL,_NOFILL_FLAG}, -{"_NCProperties",_NCPROPS,_NCPROPS_FLAG}, -{"_IsNetcdf4",_ISNETCDF4,_ISNETCDF4_FLAG}, -{"_SuperblockVersion",_SUPERBLOCK,_SUPERBLOCK_FLAG}, -{NULL,0} /* null terminate */ -}; - - - -/* The most correct (validating) version of UTF8 character set - (Taken from: http://www.w3.org/2005/03/23-lex-U) - -The lines of the expression cover the UTF8 characters as follows: -1. non-overlong 2-byte -2. excluding overlongs -3. straight 3-byte -4. excluding surrogates -5. straight 3-byte -6. planes 1-3 -7. planes 4-15 -8. plane 16 - -UTF8 ([\xC2-\xDF][\x80-\xBF]) \ - | (\xE0[\xA0-\xBF][\x80-\xBF]) \ - | ([\xE1-\xEC][\x80-\xBF][\x80-\xBF]) \ - | (\xED[\x80-\x9F][\x80-\xBF]) \ - | ([\xEE-\xEF][\x80-\xBF][\x80-\xBF]) \ - | (\xF0[\x90-\xBF][\x80-\xBF][\x80-\xBF]) \ - | ([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF]) \ - | (\xF4[\x80-\x8F][\x80-\xBF][\x80-\xBF]) \ - -*/ -/* Wish there was some way to ifdef lex files */ -/*The most relaxed version of UTF8 (not used) -UTF8 ([\xC0-\xD6].)|([\xE0-\xEF]..)|([\xF0-\xF7]...) -*/ -/*The partially relaxed version of UTF8, and the one used here */ -/* The old definition of ID -ID ([A-Za-z_]|{UTF8})([A-Z.@#\[\]a-z_0-9+-]|{UTF8})* -*/ -/* Don't permit control characters or '/' in names, but other special - chars OK if escaped. Note that to preserve backwards - compatibility, none of the characters _.@+- should be escaped, as - they were previously permitted in names without escaping. */ -/* New definition to conform to a subset of string.c */ -/* Capture a datasetidentifier */ -/* DATASETID ([a-zA-Z0-9!#$%&*:;<=>?/^|~_.@+-]|{UTF8})* */ -/* Note: this definition of string will work for utf8 as well, - although it is a very relaxed definition -*/ -#line 1324 "ncgenl.c" - -#define INITIAL 0 -#define ST_C_COMMENT 1 -#define TEXT 2 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int ncglex_destroy (void ); - -int ncgget_debug (void ); - -void ncgset_debug (int debug_flag ); - -YY_EXTRA_TYPE ncgget_extra (void ); - -void ncgset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *ncgget_in (void ); - -void ncgset_in (FILE * in_str ); - -FILE *ncgget_out (void ); - -void ncgset_out (FILE * out_str ); - -yy_size_t ncgget_leng (void ); - -char *ncgget_text (void ); - -int ncgget_lineno (void ); - -void ncgset_lineno (int line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int ncgwrap (void ); -#else -extern int ncgwrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO fwrite( ncgtext, ncgleng, 1, ncgout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - yy_size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( ncgin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( ncgin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, ncgin))==0 && ferror(ncgin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(ncgin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int ncglex (void); - -#define YY_DECL int ncglex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after ncgtext and ncgleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 217 "ncgen.l" - -#line 1510 "ncgenl.c" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! ncgin ) - ncgin = stdin; - - if ( ! ncgout ) - ncgout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - ncgensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - ncg_create_buffer(ncgin,YY_BUF_SIZE ); - } - - ncg_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of ncgtext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 417 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 2347 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 218 "ncgen.l" -{ /* whitespace */ - break; - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 222 "ncgen.l" -{ /* comment */ - break; - } - YY_BREAK -case 3: -/* rule 3 can match eol */ -YY_RULE_SETUP -#line 226 "ncgen.l" -{int len; - /* In netcdf4, this will be used in a variety - of places, so only remove escapes */ -/* -if(ncgleng > MAXTRST) { -yyerror("string too long, truncated\n"); -ncgtext[MAXTRST-1] = '\0'; -} -*/ - /* FIX: Assumes unescape also does normalization */ - bbSetalloc(lextext,ncgleng+1); /*+1 for nul */ - /* Adjust length */ - bbSetlength(lextext,ncgleng-2); /*-2 for quotes */ - len = unescape(bbContents(lextext), - (char *)ncgtext+1,ncgleng-2,!ISIDENT); - if(len < 0) { - sprintf(errstr,"Illegal character: %s",ncgtext); - yyerror(errstr); - } - bbSetlength(lextext,len); - bbNull(lextext); - return lexdebug(TERMSTRING); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 250 "ncgen.l" -{ /* drop leading 0x; pad to even number of chars */ - char* p = ncgtext+2; - int len = ncgleng - 2; - bbClear(lextext); - bbAppendn(lextext,p,len); - if((len % 2) == 1) bbAppend(lextext,'0'); - bbNull(lextext); - /* convert all chars to lower case */ - for(p=bbContents(lextext);(int)*p;p++) *p = tolower(*p); - return lexdebug(OPAQUESTRING); - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 262 "ncgen.l" -{return lexdebug(COMPOUND);} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 263 "ncgen.l" -{return lexdebug(ENUM);} - YY_BREAK -case 7: -YY_RULE_SETUP -#line 264 "ncgen.l" -{return lexdebug(OPAQUE);} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 266 "ncgen.l" -{return lexdebug(FLOAT_K);} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 267 "ncgen.l" -{return lexdebug(CHAR_K);} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 268 "ncgen.l" -{return lexdebug(BYTE_K);} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 269 "ncgen.l" -{return lexdebug(UBYTE_K);} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 270 "ncgen.l" -{return lexdebug(SHORT_K);} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 271 "ncgen.l" -{return lexdebug(USHORT_K);} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 272 "ncgen.l" -{return lexdebug(INT_K);} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 273 "ncgen.l" -{return lexdebug(UINT_K);} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 274 "ncgen.l" -{return lexdebug(INT64_K);} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 275 "ncgen.l" -{return lexdebug(UINT64_K);} - YY_BREAK -case 18: -YY_RULE_SETUP -#line 276 "ncgen.l" -{return lexdebug(DOUBLE_K);} - YY_BREAK -case 19: -YY_RULE_SETUP -#line 277 "ncgen.l" -{int32_val = -1; - return lexdebug(NC_UNLIMITED_K);} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 280 "ncgen.l" -{return lexdebug(TYPES);} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 281 "ncgen.l" -{return lexdebug(DIMENSIONS);} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 282 "ncgen.l" -{return lexdebug(VARIABLES);} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 283 "ncgen.l" -{return lexdebug(DATA);} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 284 "ncgen.l" -{return lexdebug(GROUP);} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 286 "ncgen.l" -{BEGIN(TEXT);return lexdebug(NETCDF);} - YY_BREAK -case 26: -YY_RULE_SETUP -#line 288 "ncgen.l" -{ /* missing value (pre-2.4 backward compatibility) */ - if (ncgtext[0] == '-') { - double_val = NEGNC_INFINITE; - } else { - double_val = NC_INFINITE; - } - specialconstants = 1; - return lexdebug(DOUBLE_CONST); - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 297 "ncgen.l" -{ /* missing value (pre-2.4 backward compatibility) */ - double_val = NAN; - specialconstants = 1; - return lexdebug(DOUBLE_CONST); - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 303 "ncgen.l" -{/* missing value (pre-2.4 backward compatibility)*/ - if (ncgtext[0] == '-') { - float_val = NEGNC_INFINITEF; - } else { - float_val = NC_INFINITEF; - } - specialconstants = 1; - return lexdebug(FLOAT_CONST); - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 312 "ncgen.l" -{ /* missing value (pre-2.4 backward compatibility) */ - float_val = NANF; - specialconstants = 1; - return lexdebug(FLOAT_CONST); - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 318 "ncgen.l" -{ -#ifdef USE_NETCDF4 - if(l_flag == L_C || l_flag == L_BINARY) - return lexdebug(NIL); - yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); -#else - yyerror("NIL only allowed for netcdf-4 and for -lc or -lb"); -#endif - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 328 "ncgen.l" -{ - bbClear(lextext); - bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ - bbNull(lextext); - yylval.sym = makepath(bbContents(lextext)); - return lexdebug(PATH); - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 337 "ncgen.l" -{struct Specialtoken* st; - bbClear(lextext); - bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ - bbNull(lextext); - for(st=specials;st->name;st++) { - if(strcmp(bbContents(lextext),st->name)==0) {return lexdebug(st->token);} - } - return 0; - } - YY_BREAK -case 33: -/* rule 33 can match eol */ -YY_RULE_SETUP -#line 347 "ncgen.l" -{ - int c; - char* p; char* q; - /* copy the trimmed name */ - bbClear(lextext); - bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ - bbNull(lextext); - p = bbContents(lextext); - q = p; - while((c=*p++)) {if(c > ' ') *q++ = c;} - *q = '\0'; - datasetname = bbDup(lextext); - BEGIN(INITIAL); - return lexdebug(DATASETID); - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 363 "ncgen.l" -{ char* id; int len; - bbClear(lextext); - bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */ - bbNull(lextext); - id = bbContents(lextext); - len = unescape(id,id,bbLength(lextext),ISIDENT); - bbSetlength(lextext,len); - if (STREQ(id, FILL_STRING)) return lexdebug(FILLMARKER); - yylval.sym = install(id); - return lexdebug(IDENT); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 375 "ncgen.l" -{ - /* - We need to try to see what size of integer ((u)int). - Technically, the user should specify, but... - If out of any integer range, then complain - */ - int slen = strlen(ncgtext); - char* stag = NULL; - int tag = NC_NAT; - int signchar = 0; - int isneg = 0; - int c = ncgtext[0]; - int fail = 0; - nc_type nct = 0; - char* pos = NULL; - int hasU = 0; - - /* capture the tag string */ - tag = collecttag(ncgtext,&stag); - if(tag == NC_NAT) { - sprintf(errstr,"Illegal integer suffix: %s",stag); - yyerror(errstr); - goto done; - } - /* drop the tag from the input text */ - ncgtext[slen - strlen(stag)] = '\0'; - hasU = isuinttype(tag); - if(!tstdecimal(c)) { - pos = ncgtext+1; - isneg = (c == '-'); - } else - pos = ncgtext; - if(isneg && hasU) { - sprintf(errstr,"Unsigned integer cannot be signed: %s",ncgtext); - yyerror(errstr); - goto done; - } - uint64_val = parseULL(pos,&fail); - if(fail) { - sprintf(errstr,"integer constant out of range: %s",ncgtext); - yyerror(errstr); - goto done; - } - /* Down convert to smallest possible range */ - nct = downconvert(uint64_val,&tag,isneg,hasU); - switch (k_flag) { - case NC_FORMAT_64BIT_DATA: - case NC_FORMAT_NETCDF4: - return lexdebug(nct2lexeme(nct)); - case NC_FORMAT_CLASSIC: - case NC_FORMAT_64BIT_OFFSET: - case NC_FORMAT_NETCDF4_CLASSIC: - if(nct > NC_INT) { - sprintf(errstr,"Illegal integer constant for classic format: %s",ncgtext); - yyerror(errstr); - goto done; - } - } - - if(!tagmatch(nct,tag)) { - semwarn(lineno,"Warning: Integer out of range for tag: %s; tag treated as changed.",ncgtext); - } - return lexdebug(nct2lexeme(nct)); -done: return 0; - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 441 "ncgen.l" -{ - int c; - int token = 0; - int slen = strlen(ncgtext); - char* stag = NULL; - int tag = NC_NAT; - char* hex = ncgtext+2; /* point to first true hex digit */ - int xlen = (slen - 3); /* true hex length */ - - ncgtext[slen-1] = '\0'; - /* capture the tag string */ - tag = collecttag(ncgtext,&stag); - if(tag == NC_NAT) { - sprintf(errstr,"Illegal integer suffix: %s",stag); - yyerror(errstr); - goto done; - } - ncgtext[slen - strlen(stag)] = '\0'; - if(xlen > 16) { /* truncate hi order digits */ - hex += (xlen - 16); - } - /* convert to an unsigned long long */ - uint64_val = 0; - while((c=*hex++)) { - unsigned int hexdigit = (c <= '9'?(c-'0'):(c-'a')+0xa); - uint64_val = ((uint64_val << 4) | hexdigit); - } - switch (tag) { - case NC_USHORT: - uint16_val = (unsigned short)uint64_val; - token = USHORT_CONST; - break; - case NC_UINT: - token = UINT_CONST; - break; - case NC_UINT64: - token = UINT64_CONST; - break; - default: /* should never happen */ - if (sscanf((char*)ncgtext, "%i", &uint32_val) != 1) { - sprintf(errstr,"bad unsigned int constant: %s",(char*)ncgtext); - yyerror(errstr); - } - token = UINT_CONST; - } - return lexdebug(token); - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 488 "ncgen.l" -{ - if (sscanf((char*)ncgtext, "%le", &double_val) != 1) { - sprintf(errstr,"bad long or double constant: %s",(char*)ncgtext); - yyerror(errstr); - } - return lexdebug(DOUBLE_CONST); - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 495 "ncgen.l" -{ - if (sscanf((char*)ncgtext, "%e", &float_val) != 1) { - sprintf(errstr,"bad float constant: %s",(char*)ncgtext); - yyerror(errstr); - } - return lexdebug(FLOAT_CONST); - } - YY_BREAK -case 39: -/* rule 39 can match eol */ -YY_RULE_SETUP -#line 502 "ncgen.l" -{ - (void) sscanf((char*)&ncgtext[1],"%c",&byte_val); - return lexdebug(BYTE_CONST); - } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 506 "ncgen.l" -{ - int oct = unescapeoct(&ncgtext[2]); - if(oct < 0) { - sprintf(errstr,"bad octal character constant: %s",(char*)ncgtext); - yyerror(errstr); - } - byte_val = (unsigned int)oct; - return lexdebug(BYTE_CONST); - } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 515 "ncgen.l" -{ - int hex = unescapehex(&ncgtext[3]); - if(byte_val < 0) { - sprintf(errstr,"bad hex character constant: %s",(char*)ncgtext); - yyerror(errstr); - } - byte_val = (unsigned int)hex; - return lexdebug(BYTE_CONST); - } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 524 "ncgen.l" -{ - switch ((char)ncgtext[2]) { - case 'a': byte_val = '\007'; break; /* not everyone under- - * stands '\a' yet */ - case 'b': byte_val = '\b'; break; - case 'f': byte_val = '\f'; break; - case 'n': byte_val = '\n'; break; - case 'r': byte_val = '\r'; break; - case 't': byte_val = '\t'; break; - case 'v': byte_val = '\v'; break; - case '\\': byte_val = '\\'; break; - case '?': byte_val = '\177'; break; - case '\'': byte_val = '\''; break; - default: byte_val = (char)ncgtext[2]; - } - return lexdebug(BYTE_CONST); - } - YY_BREAK -case 43: -/* rule 43 can match eol */ -YY_RULE_SETUP -#line 542 "ncgen.l" -{ - lineno++ ; - break; - } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 547 "ncgen.l" -{/*initial*/ - BEGIN(ST_C_COMMENT); - break; - } - YY_BREAK -case 45: -/* rule 45 can match eol */ -YY_RULE_SETUP -#line 552 "ncgen.l" -{/* continuation */ - break; - } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 556 "ncgen.l" -{/* final */ - BEGIN(INITIAL); - break; - } - YY_BREAK -case YY_STATE_EOF(ST_C_COMMENT): -#line 561 "ncgen.l" -{/* final, error */ - fprintf(stderr,"unterminated /**/ comment"); - BEGIN(INITIAL); - break; - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 567 "ncgen.l" -{/* Note: this next rule will not work for UTF8 characters */ - return lexdebug(ncgtext[0]) ; - } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 570 "ncgen.l" -ECHO; - YY_BREAK -#line 2123 "ncgenl.c" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(TEXT): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed ncgin at a new source and called - * ncglex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = ncgin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( ncgwrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * ncgtext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of ncglex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - yy_size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - yy_size_t new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - ncgrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - ncgrestart(ncgin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ncgrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 417 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 417 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 416); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up ncgtext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register yy_size_t number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - ncgrestart(ncgin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( ncgwrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve ncgtext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void ncgrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - ncgensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - ncg_create_buffer(ncgin,YY_BUF_SIZE ); - } - - ncg_init_buffer(YY_CURRENT_BUFFER,input_file ); - ncg_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void ncg_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * ncgpop_buffer_state(); - * ncgpush_buffer_state(new_buffer); - */ - ncgensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - ncg_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (ncgwrap()) processing, but the only time this flag - * is looked at is after ncgwrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void ncg_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - ncgin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE ncg_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) ncgalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in ncg_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) ncgalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in ncg_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - ncg_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with ncg_create_buffer() - * - */ - void ncg_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - ncgfree((void *) b->yy_ch_buf ); - - ncgfree((void *) b ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a ncgrestart() or at EOF. - */ - static void ncg_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - ncg_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then ncg_init_buffer was _probably_ - * called from ncgrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void ncg_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - ncg_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void ncgpush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - ncgensure_buffer_stack(); - - /* This block is copied from ncg_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from ncg_switch_to_buffer. */ - ncg_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void ncgpop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - ncg_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - ncg_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void ncgensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)ncgalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in ncgensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)ncgrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in ncgensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE ncg_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) ncgalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in ncg_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - ncg_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to ncglex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * ncg_scan_bytes() instead. - */ -YY_BUFFER_STATE ncg_scan_string (yyconst char * yystr ) -{ - - return ncg_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to ncglex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE ncg_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n, i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) ncgalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in ncg_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = ncg_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in ncg_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up ncgtext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - ncgtext[ncgleng] = (yy_hold_char); \ - (yy_c_buf_p) = ncgtext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - ncgleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int ncgget_lineno (void) -{ - - return ncglineno; -} - -/** Get the input stream. - * - */ -FILE *ncgget_in (void) -{ - return ncgin; -} - -/** Get the output stream. - * - */ -FILE *ncgget_out (void) -{ - return ncgout; -} - -/** Get the length of the current token. - * - */ -yy_size_t ncgget_leng (void) -{ - return ncgleng; -} - -/** Get the current token. - * - */ - -char *ncgget_text (void) -{ - return ncgtext; -} - -/** Set the current line number. - * @param line_number - * - */ -void ncgset_lineno (int line_number ) -{ - - ncglineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see ncg_switch_to_buffer - */ -void ncgset_in (FILE * in_str ) -{ - ncgin = in_str ; -} - -void ncgset_out (FILE * out_str ) -{ - ncgout = out_str ; -} - -int ncgget_debug (void) -{ - return ncg_flex_debug; -} - -void ncgset_debug (int bdebug ) -{ - ncg_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from ncglex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - ncgin = stdin; - ncgout = stdout; -#else - ncgin = (FILE *) 0; - ncgout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * ncglex_init() - */ - return 0; -} - -/* ncglex_destroy is for both reentrant and non-reentrant scanners. */ -int ncglex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - ncg_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - ncgpop_buffer_state(); - } - - /* Destroy the stack itself. */ - ncgfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * ncglex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *ncgalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *ncgrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void ncgfree (void * ptr ) -{ - free( (char *) ptr ); /* see ncgrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 570 "ncgen.l" - - -static int -lexdebug(int token) -{ - if(debug >= 2) - { - char* text = ncgtext; - text[ncgleng] = 0; - fprintf(stderr,"Token=%d |%s| line=%d\n",token,text,lineno); - } - return token; -} - -int -lex_init(void) -{ - lineno = 1; - lextext = bbNew(); - if(0) unput(0); /* keep -Wall quiet */ - return 0; -} - -static Symbol* -makepath(char* text0) -{ - /* Create a reference symbol. - Convert path to a sequence of symbols. - Use last name as symbol name (with root group reference ('/') as exception). - */ - Symbol* refsym = NULL; - /* walk the path converting to a sequence of symbols */ - if(strcmp(text0,"/")==0) { - /* special case of root reference */ - refsym = rootgroup; - } else { - List* prefix = listnew(); - /* split the text into IDENT chunks, convert to symbols */ - Symbol* container = rootgroup; - char *ident, *p; - char* text = strdup(text0); - int c,lastident; - ident=text+1; p=ident; /* skip leading '/' */ - do { - lastident = 0; - switch ((c=*p)) { - default: p++; break; - case '\\': p++; if(*p == '/') p++; break; - case '\0': /* treat null terminator like trailing '/' (mostly) */ - lastident=1; /* this is the last ident in the path */ - /*fall thru */ - case '/': - *p='\0'; - if(!lastident) { - unescape(ident,ident,strlen(ident),ISIDENT); - refsym = lookupingroup(NC_GRP,ident,container); - if(refsym == NULL) { - sprintf(errstr,"Undefined or forward referenced group: %s",ident); - yyerror(errstr); - refsym = rootgroup; - } else { - listpush(prefix,(void*)refsym); - } - } else { /* lastident is true */ - unescape(ident,ident,strlen(ident),ISIDENT); - refsym = install(ident); - refsym->objectclass = NC_GRP;/* tentative */ - refsym->ref.is_ref = 1; - refsym->container = container; - refsym->subnodes = listnew(); - } - container = refsym; - ident=p+1; p=ident; - break; - } - } while(c != '\0'); - refsym->prefix = prefix; - free(text); - } - return refsym; -} - -/* -Parse a simple string of digits into an unsigned long long -Return the value. -*/ -static unsigned long long -parseULL(char* text, int* failp) -{ - int result = 0; - extern int errno; - char* endptr; - unsigned long long uint64 = 0; - - errno = 0; endptr = NULL; - assert(tstdecimal(text[0])); -#ifdef HAVE_STRTOULL - uint64 = strtoull(text,&endptr,10); - if(errno == ERANGE) { - if(failp) *failp = ERANGE; - return 0; - } -#else /*!(defined HAVE_STRTOLL && defined HAVE_STRTOULL)*/ - sscanf((char*)text, "%llu", &uint64); - /* Have no useful way to detect out of range */ -#endif /*!(defined HAVE_STRTOLL && defined HAVE_STRTOULL)*/ - return uint64; -} - - -/** -Given the raw bits, the sign char, the tag, and hasU -fill in the appropriate *_val field -and return the type. -Note that we cannot return unsigned types if running pure netcdf classic. -The rule is to pick the smallest enclosing type. - -The rule used here is that the tag (the suffix, if any) -always takes precedence and the value is modified to conform -if possible, otherwise out-of-range is signalled. -For historical reasons (ncgen3), values that fit as unsigned -are acceptable for the signed tag and conversion is attempted; -e.g. 65535s; is legal and is return as a negative short. -*/ -static nc_type -downconvert(unsigned long long uint64, int* tagp, int isneg, int hasU) -{ - nc_type nct = NC_NAT; - int tag = *tagp; - int bit63set = (uint64 >> 63); - long long int64 = *((long long*)&uint64); - - if(isneg && hasU) { - return (*tagp = NC_NAT); - } - /* To simplify the code, we look for special case of NC_UINT64 - constants that will not fit into an NC_INT64 constant. - */ - if(tag == NC_UINT64 && bit63set) { - uint64_val = uint64; - return tag; - } - /* At this point we need deal only with int64 value */ - /* Apply the isneg */ - if(isneg) - int64 = - int64; - - if(tag == NC_NOTAG) { - /* If we have no other info, then assume NC_(U)INT(64) */ - if(int64 >= NC_MIN_INT && int64 <= NC_MAX_INT) { - nct = (tag = NC_INT); - int32_val = (signed int)int64; - } else if(int64 >= 0 && int64 <= NC_MAX_UINT) { - nct = (tag = NC_UINT); - uint32_val = (unsigned int)int64; - } else if(int64 < 0) { - nct = (tag = NC_INT64); - int64_val = (signed long long)int64; - } else { - nct = (tag = NC_UINT64); - uint64_val = (unsigned long long)int64; - } - goto done; - } - if(isuinttype(tag) && int64 < 0) - goto outofrange; - switch (tag) { - case NC_UBYTE: - if(int64 <= NC_MAX_UBYTE) { - nct = NC_UBYTE; - ubyte_val = (unsigned char)int64; - } else - goto outofrange; - break; - case NC_USHORT: - if(int64 <= NC_MAX_USHORT) { - nct = NC_USHORT; - uint16_val = (unsigned short)int64; - } else - goto outofrange; - break; - case NC_UINT: - if(int64 <= NC_MAX_UINT) { - nct = NC_UINT; - uint32_val = (unsigned int)int64; - } else - goto outofrange; - break; - case NC_UINT64: - if(int64 <= NC_MAX_UINT64) { - nct = NC_UINT64; - uint64_val = uint64; - } else - goto outofrange; - break; - case NC_INT64: - nct = NC_INT64; - int64_val = int64; - break; - case NC_BYTE: - nct = NC_BYTE; - byte_val = (signed char)int64; - break; - case NC_SHORT: - nct = NC_SHORT; - int16_val = (signed short)int64; - break; - case NC_INT: - nct = NC_INT; - int32_val = (signed int)int64; - break; - default: - goto outofrange; - } - -done: - *tagp = tag; - return nct; -outofrange: - yyerror("Value out of range"); - return NC_NAT; -} - -static int -nct2lexeme(nc_type nct) -{ - switch(nct) { - case NC_BYTE: return BYTE_CONST; - case NC_CHAR: return CHAR_CONST; - case NC_SHORT: return SHORT_CONST; - case NC_INT: return INT_CONST; - case NC_UBYTE: return UBYTE_CONST; - case NC_USHORT: return USHORT_CONST; - case NC_UINT: return UINT_CONST; - case NC_INT64: return INT64_CONST; - case NC_UINT64: return UINT64_CONST; - } - return 0; -} - -static int -tagmatch(nc_type nct, int tag) -{ - if(tag == NC_NAT || tag == NC_NOTAG) - return 1; - return nct == tag; -} - -/* capture the tag string */ -static int -collecttag(char* text, char** stagp) -{ - char* stag0; -#define MAXTAGLEN 3 - char stag[MAXTAGLEN+1]; - int slen = strlen(text); - int staglen; - int tag = NC_NAT; - int hasU = 0; - - for(stag0 = text+(slen-1);stag0 > 0;stag0--) { - if(strchr(TAGCHARS,*stag0) == NULL) {stag0++; break;} - } - if(stagp) *stagp = stag0; - staglen = strlen(stag0); - if(staglen == 0) - return NC_NOTAG; - if(staglen > MAXTAGLEN) - return tag; - strncpy(stag,stag0,sizeof(stag)); - stag[MAXTAGLEN] = '\0'; - if(stag[0] == 'U' || stag[0] == 'u') { - hasU = 1; - memmove(stag,stag+1,MAXTAGLEN); - staglen--; - } else if(stag[staglen-1] == 'U' || stag[staglen-1] == 'u') { - hasU = 1; - staglen--; - stag[staglen] = '\0'; - } - if(strlen(stag) == 0 && hasU) { - tag = NC_UINT64; - } else if(strlen(stag) == 1) { - switch (stag[0]) { - case 'B': case 'b': tag = (hasU ? NC_UBYTE : NC_BYTE); break; - case 'S': case 's': tag = (hasU ? NC_USHORT : NC_SHORT); break; - case 'L': case 'l': tag = (hasU ? NC_UINT : NC_INT); break; - default: break; - } - } else if(strcasecmp(stag,"ll") == 0) { - tag = (hasU ? NC_UINT64 : NC_INT64); - } - if(tag == NC_NAT) { - if(strlen(stag) > 0) - return tag; - tag = NC_NAT; - } - return tag; -} - diff --git a/contrib/netcdf/4.4.1.1/ncgen/ncgeny.c b/contrib/netcdf/4.4.1.1/ncgen/ncgeny.c deleted file mode 100644 index 1d1378debdb..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ncgeny.c +++ /dev/null @@ -1,3577 +0,0 @@ -/* A Bison parser, made by GNU Bison 2.3. */ - -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "2.3" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* Substitute the variable and function names. */ -#define yyparse ncgparse -#define yylex ncglex -#define yyerror ncgerror -#define yylval ncglval -#define yychar ncgchar -#define yydebug ncgdebug -#define yynerrs ncgnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - NC_UNLIMITED_K = 258, - CHAR_K = 259, - BYTE_K = 260, - SHORT_K = 261, - INT_K = 262, - FLOAT_K = 263, - DOUBLE_K = 264, - UBYTE_K = 265, - USHORT_K = 266, - UINT_K = 267, - INT64_K = 268, - UINT64_K = 269, - IDENT = 270, - TERMSTRING = 271, - CHAR_CONST = 272, - BYTE_CONST = 273, - SHORT_CONST = 274, - INT_CONST = 275, - INT64_CONST = 276, - UBYTE_CONST = 277, - USHORT_CONST = 278, - UINT_CONST = 279, - UINT64_CONST = 280, - FLOAT_CONST = 281, - DOUBLE_CONST = 282, - DIMENSIONS = 283, - VARIABLES = 284, - NETCDF = 285, - DATA = 286, - TYPES = 287, - COMPOUND = 288, - ENUM = 289, - OPAQUE = 290, - OPAQUESTRING = 291, - GROUP = 292, - PATH = 293, - FILLMARKER = 294, - NIL = 295, - _FILLVALUE = 296, - _FORMAT = 297, - _STORAGE = 298, - _CHUNKSIZES = 299, - _DEFLATELEVEL = 300, - _SHUFFLE = 301, - _ENDIANNESS = 302, - _NOFILL = 303, - _FLETCHER32 = 304, - _NCPROPS = 305, - _ISNETCDF4 = 306, - _SUPERBLOCK = 307, - DATASETID = 308 - }; -#endif -/* Tokens. */ -#define NC_UNLIMITED_K 258 -#define CHAR_K 259 -#define BYTE_K 260 -#define SHORT_K 261 -#define INT_K 262 -#define FLOAT_K 263 -#define DOUBLE_K 264 -#define UBYTE_K 265 -#define USHORT_K 266 -#define UINT_K 267 -#define INT64_K 268 -#define UINT64_K 269 -#define IDENT 270 -#define TERMSTRING 271 -#define CHAR_CONST 272 -#define BYTE_CONST 273 -#define SHORT_CONST 274 -#define INT_CONST 275 -#define INT64_CONST 276 -#define UBYTE_CONST 277 -#define USHORT_CONST 278 -#define UINT_CONST 279 -#define UINT64_CONST 280 -#define FLOAT_CONST 281 -#define DOUBLE_CONST 282 -#define DIMENSIONS 283 -#define VARIABLES 284 -#define NETCDF 285 -#define DATA 286 -#define TYPES 287 -#define COMPOUND 288 -#define ENUM 289 -#define OPAQUE 290 -#define OPAQUESTRING 291 -#define GROUP 292 -#define PATH 293 -#define FILLMARKER 294 -#define NIL 295 -#define _FILLVALUE 296 -#define _FORMAT 297 -#define _STORAGE 298 -#define _CHUNKSIZES 299 -#define _DEFLATELEVEL 300 -#define _SHUFFLE 301 -#define _ENDIANNESS 302 -#define _NOFILL 303 -#define _FLETCHER32 304 -#define _NCPROPS 305 -#define _ISNETCDF4 306 -#define _SUPERBLOCK 307 -#define DATASETID 308 - - - - -/* Copy the first part of user declarations. */ -#line 11 "ncgen.y" - -/* -static char SccsId[] = "$Id: ncgen.y,v 1.42 2010/05/18 21:32:46 dmh Exp $"; -*/ -#include "includes.h" -#include "offsets.h" -#include "ncgeny.h" -#include "ncgen.h" - -/* Following are in ncdump (for now)*/ -/* Need some (unused) definitions to get it to compile */ -#define ncatt_t void* -#define ncvar_t void -#include "nctime.h" - -/* parser controls */ -#define YY_NO_INPUT 1 - -/* True if string a equals string b*/ -#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0) -#define VLENSIZE (sizeof(nc_vlen_t)) -#define MAXFLOATDIM 4294967295.0 - -/* mnemonic */ -typedef enum Attrkind {ATTRVAR, ATTRGLOBAL, DONTKNOW} Attrkind; - -typedef nc_vlen_t vlen_t; - -/* We retain the old representation of the symbol list - as a linked list. -*/ -Symbol* symlist; - -/* Track rootgroup separately*/ -Symbol* rootgroup; - -/* Track the group sequence */ -static List* groupstack; - -/* Provide a separate sequence for accumulating values - during the parse. -*/ -static List* stack; - -/* track homogeneity of types for data lists*/ -static nc_type consttype; - -/* Misc. */ -static int stackbase; -static int stacklen; -static int count; -static int opaqueid; /* counter for opaque constants*/ -static int arrayuid; /* counter for pseudo-array types*/ - -char* primtypenames[PRIMNO] = { -"nat", -"byte", "char", "short", -"int", "float", "double", -"ubyte", "ushort", "uint", -"int64", "uint64", -"string" -}; - -static int GLOBAL_SPECIAL = _NCPROPS_FLAG | _ISNETCDF4_FLAG | _SUPERBLOCK_FLAG | _FORMAT_FLAG ; - -/*Defined in ncgen.l*/ -extern int lineno; /* line number for error messages */ -extern Bytebuffer* lextext; /* name or string with escapes removed */ - -extern double double_val; /* last double value read */ -extern float float_val; /* last float value read */ -extern long long int64_val; /* last int64 value read */ -extern int int32_val; /* last int32 value read */ -extern short int16_val; /* last short value read */ -extern unsigned long long uint64_val; /* last int64 value read */ -extern unsigned int uint32_val; /* last int32 value read */ -extern unsigned short uint16_val; /* last short value read */ -extern char char_val; /* last char value read */ -extern signed char byte_val; /* last byte value read */ -extern unsigned char ubyte_val; /* last byte value read */ - -/* Track definitions of dims, types, attributes, and vars*/ -List* grpdefs; -List* dimdefs; -List* attdefs; /* variable-specific attributes*/ -List* gattdefs; /* global attributes only*/ -List* xattdefs; /* unknown attributes*/ -List* typdefs; -List* vardefs; -List* condefs; /* non-dimension constants used in type defs*/ -List* tmp; - -/* Forward */ -static NCConstant makeconstdata(nc_type); -static NCConstant evaluate(Symbol* fcn, Datalist* arglist); -static NCConstant makeenumconstref(Symbol*); -static void addtogroup(Symbol*); -static Symbol* currentgroup(void); -static Symbol* createrootgroup(const char*); -static Symbol* creategroup(Symbol*); -static int dupobjectcheck(nc_class,Symbol*); -static void setpathcurrent(Symbol* sym); -static Symbol* makeattribute(Symbol*,Symbol*,Symbol*,Datalist*,Attrkind); -static Symbol* makeprimitivetype(nc_type i); -static Symbol* makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst); -static int containsfills(Datalist* list); -static void datalistextend(Datalist* dl, NCConstant* con); -static void vercheck(int ncid); -static long long extractint(NCConstant con); - -int yylex(void); - -#ifndef NO_STDARG -static void yyerror(const char *fmt, ...); -#else -static void yyerror(fmt,va_alist) const char* fmt; va_dcl; -#endif - -/* Extern */ -extern int lex_init(void); - - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 136 "ncgen.y" -{ -Symbol* sym; -unsigned long size; /* allow for zero size to indicate e.g. UNLIMITED*/ -long mark; /* track indices into the sequence*/ -int nctype; /* for tracking attribute list type*/ -Datalist* datalist; -NCConstant constant; -} -/* Line 193 of yacc.c. */ -#line 342 "ncgeny.c" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 216 of yacc.c. */ -#line 355 "ncgeny.c" - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) -#else -# define YYUSE(e) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; -#endif -{ - return i; -} -#endif - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined _STDLIB_H \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 5 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 370 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 63 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 67 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 151 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 258 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 308 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 59, 60, 61, 2, 57, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 62, 56, - 2, 58, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 54, 2, 55, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 7, 9, 14, 20, 21, 24, 25, - 26, 36, 37, 39, 42, 44, 47, 49, 51, 54, - 57, 60, 63, 66, 67, 69, 76, 78, 82, 86, - 92, 98, 104, 107, 111, 114, 116, 118, 120, 122, - 124, 126, 128, 130, 132, 134, 136, 137, 139, 142, - 145, 149, 151, 153, 155, 159, 163, 167, 169, 170, - 172, 175, 178, 182, 184, 186, 189, 191, 195, 198, - 199, 203, 205, 209, 211, 213, 217, 220, 221, 225, - 227, 231, 233, 235, 237, 239, 241, 243, 244, 248, - 253, 258, 263, 268, 275, 281, 287, 294, 300, 306, - 312, 318, 324, 330, 336, 341, 343, 345, 346, 348, - 351, 354, 358, 362, 364, 366, 367, 369, 373, 375, - 379, 381, 383, 385, 387, 389, 391, 393, 398, 400, - 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, - 424, 426, 428, 430, 434, 436, 438, 440, 442, 444, - 446, 448 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 64, 0, -1, 30, 65, 66, -1, 53, -1, 54, - 67, 68, 55, -1, 110, 72, 87, 93, 113, -1, - -1, 68, 69, -1, -1, -1, 37, 129, 54, 70, - 67, 68, 71, 55, 110, -1, -1, 32, -1, 32, - 73, -1, 75, -1, 73, 75, -1, 129, -1, 76, - -1, 111, 56, -1, 78, 77, -1, 83, 77, -1, - 82, 77, -1, 81, 77, -1, -1, 56, -1, 86, - 34, 74, 54, 79, 55, -1, 80, -1, 79, 57, - 80, -1, 129, 58, 126, -1, 35, 59, 20, 60, - 74, -1, 108, 59, 61, 60, 74, -1, 33, 74, - 54, 84, 55, -1, 85, 56, -1, 84, 85, 56, - -1, 108, 102, -1, 4, -1, 5, -1, 6, -1, - 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, - 12, -1, 13, -1, 14, -1, -1, 28, -1, 28, - 88, -1, 89, 56, -1, 88, 89, 56, -1, 90, - -1, 111, -1, 91, -1, 90, 57, 91, -1, 92, - 58, 126, -1, 92, 58, 3, -1, 129, -1, -1, - 29, -1, 29, 94, -1, 95, 56, -1, 94, 95, - 56, -1, 96, -1, 111, -1, 108, 97, -1, 98, - -1, 97, 57, 98, -1, 129, 99, -1, -1, 59, - 100, 60, -1, 101, -1, 100, 57, 101, -1, 112, - -1, 103, -1, 102, 57, 103, -1, 129, 104, -1, - -1, 59, 105, 60, -1, 106, -1, 105, 57, 106, - -1, 24, -1, 20, -1, 109, -1, 109, -1, 112, - -1, 86, -1, -1, 111, 56, 110, -1, 62, 50, - 58, 127, -1, 62, 51, 58, 128, -1, 62, 52, - 58, 126, -1, 62, 129, 58, 116, -1, 108, 109, - 62, 129, 58, 116, -1, 109, 62, 129, 58, 116, - -1, 109, 62, 41, 58, 116, -1, 108, 109, 62, - 41, 58, 116, -1, 109, 62, 43, 58, 127, -1, - 109, 62, 44, 58, 125, -1, 109, 62, 49, 58, - 128, -1, 109, 62, 45, 58, 126, -1, 109, 62, - 46, 58, 128, -1, 109, 62, 47, 58, 127, -1, - 109, 62, 48, 58, 128, -1, 62, 42, 58, 127, - -1, 129, -1, 38, -1, -1, 31, -1, 31, 114, - -1, 115, 56, -1, 114, 115, 56, -1, 107, 58, - 116, -1, 117, -1, 118, -1, -1, 119, -1, 116, - 57, 119, -1, 120, -1, 54, 116, 55, -1, 124, - -1, 36, -1, 39, -1, 40, -1, 121, -1, 122, - -1, 112, -1, 129, 59, 123, 60, -1, 124, -1, - 123, 57, 124, -1, 17, -1, 18, -1, 19, -1, - 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, - 25, -1, 26, -1, 27, -1, 16, -1, 126, -1, - 125, 57, 126, -1, 20, -1, 24, -1, 21, -1, - 25, -1, 16, -1, 127, -1, 126, -1, 15, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 216, 216, 222, 224, 231, 238, 238, 241, 250, - 240, 255, 256, 257, 261, 261, 263, 273, 273, 276, - 277, 278, 279, 282, 282, 285, 315, 317, 334, 343, - 355, 369, 402, 403, 406, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 433, 434, 435, 438, - 439, 442, 442, 444, 445, 449, 456, 466, 478, 479, - 480, 483, 484, 487, 487, 489, 511, 515, 519, 546, - 547, 550, 551, 555, 569, 573, 578, 607, 608, 612, - 613, 618, 628, 648, 659, 670, 689, 696, 696, 699, - 701, 703, 705, 707, 716, 727, 729, 731, 733, 735, - 737, 739, 741, 743, 745, 750, 757, 766, 767, 768, - 771, 772, 775, 779, 780, 784, 788, 789, 794, 795, - 799, 800, 801, 802, 803, 804, 808, 812, 816, 818, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 838, 839, 843, 845, 847, 849, 854, 858, - 859, 865 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "NC_UNLIMITED_K", "CHAR_K", "BYTE_K", - "SHORT_K", "INT_K", "FLOAT_K", "DOUBLE_K", "UBYTE_K", "USHORT_K", - "UINT_K", "INT64_K", "UINT64_K", "IDENT", "TERMSTRING", "CHAR_CONST", - "BYTE_CONST", "SHORT_CONST", "INT_CONST", "INT64_CONST", "UBYTE_CONST", - "USHORT_CONST", "UINT_CONST", "UINT64_CONST", "FLOAT_CONST", - "DOUBLE_CONST", "DIMENSIONS", "VARIABLES", "NETCDF", "DATA", "TYPES", - "COMPOUND", "ENUM", "OPAQUE", "OPAQUESTRING", "GROUP", "PATH", - "FILLMARKER", "NIL", "_FILLVALUE", "_FORMAT", "_STORAGE", "_CHUNKSIZES", - "_DEFLATELEVEL", "_SHUFFLE", "_ENDIANNESS", "_NOFILL", "_FLETCHER32", - "_NCPROPS", "_ISNETCDF4", "_SUPERBLOCK", "DATASETID", "'{'", "'}'", - "';'", "','", "'='", "'('", "')'", "'*'", "':'", "$accept", "ncdesc", - "datasetid", "rootgroup", "groupbody", "subgrouplist", "namedgroup", - "@1", "@2", "typesection", "typedecls", "typename", "type_or_attr_decl", - "typedecl", "optsemicolon", "enumdecl", "enumidlist", "enumid", - "opaquedecl", "vlendecl", "compounddecl", "fields", "field", "primtype", - "dimsection", "dimdecls", "dim_or_attr_decl", "dimdeclist", "dimdecl", - "dimd", "vasection", "vadecls", "vadecl_or_attr", "vardecl", "varlist", - "varspec", "dimspec", "dimlist", "dimref", "fieldlist", "fieldspec", - "fielddimspec", "fielddimlist", "fielddim", "varref", "typeref", - "type_var_ref", "attrdecllist", "attrdecl", "path", "datasection", - "datadecls", "datadecl", "datalist", "datalist0", "datalist1", - "dataitem", "constdata", "econstref", "function", "arglist", - "simpleconstant", "intlist", "constint", "conststring", "constbool", - "ident", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 123, 125, 59, 44, 61, 40, - 41, 42, 58 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 63, 64, 65, 66, 67, 68, 68, 70, 71, - 69, 72, 72, 72, 73, 73, 74, 75, 75, 76, - 76, 76, 76, 77, 77, 78, 79, 79, 80, 81, - 82, 83, 84, 84, 85, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 87, 87, 87, 88, - 88, 89, 89, 90, 90, 91, 91, 92, 93, 93, - 93, 94, 94, 95, 95, 96, 97, 97, 98, 99, - 99, 100, 100, 101, 102, 102, 103, 104, 104, 105, - 105, 106, 106, 107, 108, 109, 109, 110, 110, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 112, 112, 113, 113, 113, - 114, 114, 115, 116, 116, 117, 118, 118, 119, 119, - 120, 120, 120, 120, 120, 120, 121, 122, 123, 123, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 125, 125, 126, 126, 126, 126, 127, 128, - 128, 129 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 3, 1, 4, 5, 0, 2, 0, 0, - 9, 0, 1, 2, 1, 2, 1, 1, 2, 2, - 2, 2, 2, 0, 1, 6, 1, 3, 3, 5, - 5, 5, 2, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, - 3, 1, 1, 1, 3, 3, 3, 1, 0, 1, - 2, 2, 3, 1, 1, 2, 1, 3, 2, 0, - 3, 1, 3, 1, 1, 3, 2, 0, 3, 1, - 3, 1, 1, 1, 1, 1, 1, 0, 3, 4, - 4, 4, 4, 6, 5, 5, 6, 5, 5, 5, - 5, 5, 5, 5, 4, 1, 1, 0, 1, 2, - 2, 3, 3, 1, 1, 0, 1, 3, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 0, 0, 0, 3, 0, 1, 87, 2, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 151, - 106, 0, 6, 86, 0, 84, 11, 0, 85, 105, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 46, - 87, 0, 0, 0, 0, 115, 0, 4, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 13, 14, 17, 23, 23, 23, 23, 86, 0, - 0, 47, 58, 88, 148, 104, 89, 144, 146, 145, - 147, 150, 149, 90, 91, 141, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 121, 122, 123, - 115, 126, 92, 113, 114, 116, 118, 124, 125, 120, - 105, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 16, 0, 15, 24, 19, 22, - 21, 20, 0, 0, 18, 48, 0, 51, 53, 0, - 52, 105, 59, 107, 0, 0, 0, 8, 115, 115, - 95, 97, 98, 142, 100, 101, 102, 103, 99, 94, - 0, 0, 0, 0, 0, 49, 0, 0, 60, 0, - 63, 0, 64, 108, 5, 119, 117, 0, 128, 87, - 96, 93, 0, 0, 0, 0, 84, 0, 0, 0, - 50, 54, 57, 56, 55, 0, 61, 65, 66, 69, - 0, 83, 109, 0, 0, 127, 6, 143, 31, 0, - 32, 34, 74, 77, 29, 0, 26, 0, 30, 62, - 0, 0, 68, 115, 0, 110, 129, 9, 33, 0, - 0, 76, 25, 0, 0, 67, 69, 0, 71, 73, - 112, 111, 0, 75, 82, 81, 0, 79, 27, 28, - 0, 70, 87, 0, 78, 72, 10, 80 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 2, 4, 7, 22, 35, 48, 179, 242, 39, - 61, 123, 62, 63, 128, 64, 215, 216, 65, 66, - 67, 183, 184, 23, 72, 135, 136, 137, 138, 139, - 143, 168, 169, 170, 197, 198, 222, 237, 238, 211, - 212, 231, 246, 247, 200, 24, 25, 26, 27, 28, - 174, 202, 203, 102, 103, 104, 105, 106, 107, 108, - 177, 109, 152, 81, 82, 83, 29 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -133 -static const yytype_int16 yypact[] = -{ - -11, -48, 20, -133, -19, -133, 210, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -3, -133, -133, 332, -16, 8, -4, -133, -133, - 18, 19, 29, 41, 48, -22, 47, 128, 56, 75, - 210, 94, 94, 136, 33, 281, 102, -133, -133, 2, - 63, 64, 65, 68, 71, 74, 76, 77, 78, 102, - 82, 56, -133, -133, 81, 81, 81, 81, 99, 222, - 88, 210, 117, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, - 281, -133, 90, -133, -133, -133, -133, -133, -133, -133, - 89, 97, 91, 100, 281, 94, 33, 33, 136, 94, - 136, 136, 281, 105, -133, 142, -133, -133, -133, -133, - -133, -133, 102, 109, -133, 210, 107, 121, -133, 123, - -133, 125, 210, 148, 35, 281, 333, -133, 281, 281, - 90, -133, 129, -133, -133, -133, -133, -133, -133, 90, - 332, 127, 131, 130, 132, -133, 102, 95, 210, 133, - -133, 332, -133, 332, -133, -133, -133, -23, -133, 210, - 90, 90, 33, 278, 135, 102, -133, 102, 102, 102, - -133, -133, -133, -133, -133, 137, -133, 138, -133, -32, - 139, -133, 332, 140, 333, -133, -133, -133, -133, 144, - -133, 141, -133, 145, -133, 45, -133, 143, -133, -133, - 102, -12, -133, 281, 147, -133, -133, 157, -133, 102, - -2, -133, -133, 102, 33, -133, 146, 25, -133, -133, - 90, -133, 151, -133, -133, -133, 26, -133, -133, -133, - -12, -133, 210, -2, -133, -133, -133, -133 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -133, -133, -133, -133, 28, 4, -133, -133, -133, -133, - -133, -109, 150, -133, 30, -133, -133, 5, -133, -133, - -133, -133, 57, -25, -133, -133, 104, -133, 79, -133, - -133, -133, 73, -133, -133, 22, -133, -133, -7, -133, - 15, -133, -133, -6, -133, -29, -18, -39, -30, -41, - -133, -133, 44, -93, -133, -133, 106, -133, -133, -133, - -133, -132, -133, -42, -31, -76, -21 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -106 -static const yytype_int16 yytable[] = -{ - 34, 73, 84, 19, 101, 3, 36, 144, 70, 69, - 75, 76, 19, 68, 178, 46, 58, 19, 244, 1, - 5, 150, 245, 162, 110, 111, 20, 221, 113, 159, - -105, 70, 69, 47, 204, 6, 68, 205, 124, 30, - 38, 140, 155, 112, 157, 158, 37, 31, 32, 33, - 141, 36, 40, 77, 78, 180, 181, 79, 80, 101, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 226, 101, 153, 154, 41, 42, 214, 110, - 218, 101, 250, 253, 151, 251, 254, 43, 156, 59, - 175, 60, 145, 110, 20, 129, 130, 131, 193, 44, - 232, 110, 233, 71, 101, 140, 45, 101, 101, 49, - 74, 124, 172, 171, 141, 77, 78, 19, 21, 79, - 80, 114, 115, 116, 110, 194, 117, 110, 110, 118, - 240, 185, 119, 132, 120, 121, 122, 127, 172, 171, - 207, 125, 186, 19, 134, 192, 142, 145, 146, 148, - 199, 147, 74, 36, 185, 201, 77, 78, 149, 160, - 79, 80, 161, 165, 213, 186, 124, 217, 124, 50, - 163, 51, 52, 53, 54, 55, 56, 57, 166, 173, - 239, 167, 101, -57, 201, 188, 182, 187, 190, 196, - 189, 210, 249, 219, 46, 220, 225, 223, 229, 236, - 228, 234, 110, 241, 230, 221, 252, 206, 213, 239, - 227, 126, 217, 256, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 248, 164, - 209, 195, 235, 255, 243, 191, 224, 257, 20, 0, - 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 19, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 0, - 0, 0, 0, 0, 0, 0, 20, 97, 0, 20, - 98, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 208, 0, 100, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20 -}; - -static const yytype_int16 yycheck[] = -{ - 21, 40, 44, 15, 45, 53, 24, 100, 38, 38, - 41, 42, 15, 38, 146, 37, 37, 15, 20, 30, - 0, 114, 24, 132, 45, 46, 38, 59, 49, 122, - 62, 61, 61, 55, 57, 54, 61, 60, 59, 42, - 32, 71, 118, 41, 120, 121, 62, 50, 51, 52, - 71, 69, 56, 20, 21, 148, 149, 24, 25, 100, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 204, 114, 116, 117, 58, 58, 187, 100, - 189, 122, 57, 57, 115, 60, 60, 58, 119, 33, - 55, 35, 57, 114, 38, 65, 66, 67, 3, 58, - 55, 122, 57, 28, 145, 135, 58, 148, 149, 62, - 16, 132, 142, 142, 135, 20, 21, 15, 62, 24, - 25, 58, 58, 58, 145, 167, 58, 148, 149, 58, - 223, 160, 58, 34, 58, 58, 58, 56, 168, 168, - 182, 59, 160, 15, 56, 166, 29, 57, 59, 58, - 171, 54, 16, 171, 183, 173, 20, 21, 58, 54, - 24, 25, 20, 56, 185, 183, 187, 188, 189, 41, - 61, 43, 44, 45, 46, 47, 48, 49, 57, 31, - 221, 58, 223, 58, 202, 54, 57, 60, 56, 56, - 60, 56, 234, 56, 37, 57, 56, 58, 57, 220, - 56, 58, 223, 56, 59, 59, 55, 179, 229, 250, - 206, 61, 233, 252, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 233, 135, - 183, 168, 220, 250, 229, 166, 202, 253, 38, -1, - -1, 145, -1, -1, -1, -1, -1, -1, -1, -1, - 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, 59, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, -1, -1, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, - -1, -1, -1, -1, -1, -1, 38, 36, -1, 38, - 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 55, -1, 54, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 38 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 30, 64, 53, 65, 0, 54, 66, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 38, 62, 67, 86, 108, 109, 110, 111, 112, 129, - 42, 50, 51, 52, 129, 68, 109, 62, 32, 72, - 56, 58, 58, 58, 58, 58, 37, 55, 69, 62, - 41, 43, 44, 45, 46, 47, 48, 49, 129, 33, - 35, 73, 75, 76, 78, 81, 82, 83, 86, 108, - 111, 28, 87, 110, 16, 127, 127, 20, 21, 24, - 25, 126, 127, 128, 126, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 36, 39, 40, - 54, 112, 116, 117, 118, 119, 120, 121, 122, 124, - 129, 129, 41, 129, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 74, 129, 59, 75, 56, 77, 77, - 77, 77, 34, 59, 56, 88, 89, 90, 91, 92, - 111, 129, 29, 93, 116, 57, 59, 54, 58, 58, - 116, 127, 125, 126, 126, 128, 127, 128, 128, 116, - 54, 20, 74, 61, 89, 56, 57, 58, 94, 95, - 96, 108, 111, 31, 113, 55, 119, 123, 124, 70, - 116, 116, 57, 84, 85, 108, 109, 60, 54, 60, - 56, 91, 129, 3, 126, 95, 56, 97, 98, 129, - 107, 109, 114, 115, 57, 60, 67, 126, 55, 85, - 56, 102, 103, 129, 74, 79, 80, 129, 74, 56, - 57, 59, 99, 58, 115, 56, 124, 68, 56, 57, - 59, 104, 55, 57, 58, 98, 129, 100, 101, 112, - 116, 56, 71, 103, 20, 24, 105, 106, 80, 126, - 57, 60, 55, 57, 60, 101, 110, 106 -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - - -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif -{ - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); -# endif - switch (yytype) - { - default: - break; - } -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif -{ - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else -static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif -{ - int yynrhs = yyr2[yyrule]; - int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - fprintf (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T -yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static char * -yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; - - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else - { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - - if (yysize_overflow) - return YYSIZE_MAXIMUM; - - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; - } -} -#endif /* YYERROR_VERBOSE */ - - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - YYUSE (yyvaluep); - - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The look-ahead symbol. */ -int yychar; - -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; - - - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to look-ahead token. */ - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a look-ahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - yystate = yyn; - *++yyvsp = yylval; - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 219 "ncgen.y" - {if (error_count > 0) YYABORT;;} - break; - - case 3: -#line 222 "ncgen.y" - {createrootgroup(datasetname);;} - break; - - case 8: -#line 241 "ncgen.y" - { - Symbol* id = (yyvsp[(2) - (3)].sym); - markcdf4("Group specification"); - if(creategroup(id) == NULL) - yyerror("duplicate group declaration within parent group for %s", - id->name); - ;} - break; - - case 9: -#line 250 "ncgen.y" - {listpop(groupstack);;} - break; - - case 12: -#line 256 "ncgen.y" - {;} - break; - - case 13: -#line 258 "ncgen.y" - {markcdf4("Type specification");;} - break; - - case 16: -#line 264 "ncgen.y" - { /* Use when defining a type */ - (yyvsp[(1) - (1)].sym)->objectclass = NC_TYPE; - if(dupobjectcheck(NC_TYPE,(yyvsp[(1) - (1)].sym))) - yyerror("duplicate type declaration for %s", - (yyvsp[(1) - (1)].sym)->name); - listpush(typdefs,(void*)(yyvsp[(1) - (1)].sym)); - ;} - break; - - case 17: -#line 273 "ncgen.y" - {;} - break; - - case 18: -#line 273 "ncgen.y" - {;} - break; - - case 25: -#line 287 "ncgen.y" - { - int i; - addtogroup((yyvsp[(3) - (6)].sym)); /* sets prefix*/ - (yyvsp[(3) - (6)].sym)->objectclass=NC_TYPE; - (yyvsp[(3) - (6)].sym)->subclass=NC_ENUM; - (yyvsp[(3) - (6)].sym)->typ.basetype=(yyvsp[(1) - (6)].sym); - (yyvsp[(3) - (6)].sym)->typ.size = (yyvsp[(1) - (6)].sym)->typ.size; - (yyvsp[(3) - (6)].sym)->typ.alignment = (yyvsp[(1) - (6)].sym)->typ.alignment; - stackbase=(yyvsp[(5) - (6)].mark); - stacklen=listlength(stack); - (yyvsp[(3) - (6)].sym)->subnodes = listnew(); - /* Variety of field fixups*/ - /* 1. add in the enum values*/ - /* 2. make this type be their container*/ - /* 3. make constant names visible in the group*/ - /* 4. set field basetype to be same as enum basetype*/ - for(i=stackbase;isubclass == NC_ECONST); - addtogroup(eid); - listpush((yyvsp[(3) - (6)].sym)->subnodes,(void*)eid); - eid->container = (yyvsp[(3) - (6)].sym); - eid->typ.basetype = (yyvsp[(3) - (6)].sym)->typ.basetype; - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - ;} - break; - - case 26: -#line 316 "ncgen.y" - {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));;} - break; - - case 27: -#line 318 "ncgen.y" - { - int i; - (yyval.mark)=(yyvsp[(1) - (3)].mark); - /* check for duplicates*/ - stackbase=(yyvsp[(1) - (3)].mark); - stacklen=listlength(stack); - for(i=stackbase;iname,elem->name)==0) - yyerror("duplicate enum declaration for %s", - elem->name); - } - listpush(stack,(void*)(yyvsp[(3) - (3)].sym)); - ;} - break; - - case 28: -#line 335 "ncgen.y" - { - (yyvsp[(1) - (3)].sym)->objectclass=NC_TYPE; - (yyvsp[(1) - (3)].sym)->subclass=NC_ECONST; - (yyvsp[(1) - (3)].sym)->typ.econst=(yyvsp[(3) - (3)].constant); - (yyval.sym)=(yyvsp[(1) - (3)].sym); - ;} - break; - - case 29: -#line 344 "ncgen.y" - { - vercheck(NC_OPAQUE); - addtogroup((yyvsp[(5) - (5)].sym)); /*sets prefix*/ - (yyvsp[(5) - (5)].sym)->objectclass=NC_TYPE; - (yyvsp[(5) - (5)].sym)->subclass=NC_OPAQUE; - (yyvsp[(5) - (5)].sym)->typ.typecode=NC_OPAQUE; - (yyvsp[(5) - (5)].sym)->typ.size=int32_val; - (yyvsp[(5) - (5)].sym)->typ.alignment=nctypealignment(NC_OPAQUE); - ;} - break; - - case 30: -#line 356 "ncgen.y" - { - Symbol* basetype = (yyvsp[(1) - (5)].sym); - vercheck(NC_VLEN); - addtogroup((yyvsp[(5) - (5)].sym)); /*sets prefix*/ - (yyvsp[(5) - (5)].sym)->objectclass=NC_TYPE; - (yyvsp[(5) - (5)].sym)->subclass=NC_VLEN; - (yyvsp[(5) - (5)].sym)->typ.basetype=basetype; - (yyvsp[(5) - (5)].sym)->typ.typecode=NC_VLEN; - (yyvsp[(5) - (5)].sym)->typ.size=VLENSIZE; - (yyvsp[(5) - (5)].sym)->typ.alignment=nctypealignment(NC_VLEN); - ;} - break; - - case 31: -#line 370 "ncgen.y" - { - int i,j; - vercheck(NC_COMPOUND); - addtogroup((yyvsp[(2) - (5)].sym)); - /* check for duplicate field names*/ - stackbase=(yyvsp[(4) - (5)].mark); - stacklen=listlength(stack); - for(i=stackbase;iname,elem2->name)==0) { - yyerror("duplicate field declaration for %s",elem1->name); - } - } - } - (yyvsp[(2) - (5)].sym)->objectclass=NC_TYPE; - (yyvsp[(2) - (5)].sym)->subclass=NC_COMPOUND; - (yyvsp[(2) - (5)].sym)->typ.basetype=NULL; - (yyvsp[(2) - (5)].sym)->typ.typecode=NC_COMPOUND; - (yyvsp[(2) - (5)].sym)->subnodes = listnew(); - /* Add in the fields*/ - for(i=stackbase;icontainer = (yyvsp[(2) - (5)].sym); - listpush((yyvsp[(2) - (5)].sym)->subnodes,(void*)fsym); - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - ;} - break; - - case 32: -#line 402 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (2)].mark);;} - break; - - case 33: -#line 403 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (3)].mark);;} - break; - - case 34: -#line 407 "ncgen.y" - { - int i; - (yyval.mark)=(yyvsp[(2) - (2)].mark); - stackbase=(yyvsp[(2) - (2)].mark); - stacklen=listlength(stack); - /* process each field in the fieldlist*/ - for(i=stackbase;ityp.basetype = (yyvsp[(1) - (2)].sym); - } - ;} - break; - - case 35: -#line 420 "ncgen.y" - { (yyval.sym) = primsymbols[NC_CHAR]; ;} - break; - - case 36: -#line 421 "ncgen.y" - { (yyval.sym) = primsymbols[NC_BYTE]; ;} - break; - - case 37: -#line 422 "ncgen.y" - { (yyval.sym) = primsymbols[NC_SHORT]; ;} - break; - - case 38: -#line 423 "ncgen.y" - { (yyval.sym) = primsymbols[NC_INT]; ;} - break; - - case 39: -#line 424 "ncgen.y" - { (yyval.sym) = primsymbols[NC_FLOAT]; ;} - break; - - case 40: -#line 425 "ncgen.y" - { (yyval.sym) = primsymbols[NC_DOUBLE]; ;} - break; - - case 41: -#line 426 "ncgen.y" - { vercheck(NC_UBYTE); (yyval.sym) = primsymbols[NC_UBYTE]; ;} - break; - - case 42: -#line 427 "ncgen.y" - { vercheck(NC_USHORT); (yyval.sym) = primsymbols[NC_USHORT]; ;} - break; - - case 43: -#line 428 "ncgen.y" - { vercheck(NC_UINT); (yyval.sym) = primsymbols[NC_UINT]; ;} - break; - - case 44: -#line 429 "ncgen.y" - { vercheck(NC_INT64); (yyval.sym) = primsymbols[NC_INT64]; ;} - break; - - case 45: -#line 430 "ncgen.y" - { vercheck(NC_UINT64); (yyval.sym) = primsymbols[NC_UINT64]; ;} - break; - - case 47: -#line 434 "ncgen.y" - {;} - break; - - case 48: -#line 435 "ncgen.y" - {;} - break; - - case 51: -#line 442 "ncgen.y" - {;} - break; - - case 52: -#line 442 "ncgen.y" - {;} - break; - - case 55: -#line 450 "ncgen.y" - { - (yyvsp[(1) - (3)].sym)->dim.declsize = (size_t)extractint((yyvsp[(3) - (3)].constant)); -#ifdef GENDEBUG1 -fprintf(stderr,"dimension: %s = %llu\n",(yyvsp[(1) - (3)].sym)->name,(unsigned long long)(yyvsp[(1) - (3)].sym)->dim.declsize); -#endif - ;} - break; - - case 56: -#line 457 "ncgen.y" - { - (yyvsp[(1) - (3)].sym)->dim.declsize = NC_UNLIMITED; - (yyvsp[(1) - (3)].sym)->dim.isunlimited = 1; -#ifdef GENDEBUG1 -fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[(1) - (3)].sym)->name); -#endif - ;} - break; - - case 57: -#line 467 "ncgen.y" - { - (yyvsp[(1) - (1)].sym)->objectclass=NC_DIM; - if(dupobjectcheck(NC_DIM,(yyvsp[(1) - (1)].sym))) - yyerror( "Duplicate dimension declaration for %s", - (yyvsp[(1) - (1)].sym)->name); - addtogroup((yyvsp[(1) - (1)].sym)); - (yyval.sym)=(yyvsp[(1) - (1)].sym); - listpush(dimdefs,(void*)(yyvsp[(1) - (1)].sym)); - ;} - break; - - case 59: -#line 479 "ncgen.y" - {;} - break; - - case 60: -#line 480 "ncgen.y" - {;} - break; - - case 63: -#line 487 "ncgen.y" - {;} - break; - - case 64: -#line 487 "ncgen.y" - {;} - break; - - case 65: -#line 490 "ncgen.y" - { - int i; - stackbase=(yyvsp[(2) - (2)].mark); - stacklen=listlength(stack); - /* process each variable in the varlist*/ - for(i=stackbase;iobjectclass = NC_VAR; - if(dupobjectcheck(NC_VAR,sym)) { - yyerror("Duplicate variable declaration for %s", - sym->name); - } else { - sym->typ.basetype = (yyvsp[(1) - (2)].sym); - addtogroup(sym); - listpush(vardefs,(void*)sym); - } - } - listsetlength(stack,stackbase);/* remove stack nodes*/ - ;} - break; - - case 66: -#line 512 "ncgen.y" - {(yyval.mark)=listlength(stack); - listpush(stack,(void*)(yyvsp[(1) - (1)].sym)); - ;} - break; - - case 67: -#line 516 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));;} - break; - - case 68: -#line 520 "ncgen.y" - { - int i; - Dimset dimset; - stacklen=listlength(stack); - stackbase=(yyvsp[(2) - (2)].mark); - count = stacklen - stackbase; - if(count >= NC_MAX_VAR_DIMS) { - yyerror("%s has too many dimensions",(yyvsp[(1) - (2)].sym)->name); - count = NC_MAX_VAR_DIMS - 1; - stacklen = stackbase + count; - } - dimset.ndims = count; - /* extract the actual dimensions*/ - if(dimset.ndims > 0) { - for(i=0;ityp.dimset = dimset; - } - (yyvsp[(1) - (2)].sym)->typ.basetype = NULL; /* not yet known*/ - (yyvsp[(1) - (2)].sym)->objectclass=NC_VAR; - listsetlength(stack,stackbase);/* remove stack nodes*/ - ;} - break; - - case 69: -#line 546 "ncgen.y" - {(yyval.mark)=listlength(stack);;} - break; - - case 70: -#line 547 "ncgen.y" - {(yyval.mark)=(yyvsp[(2) - (3)].mark);;} - break; - - case 71: -#line 550 "ncgen.y" - {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));;} - break; - - case 72: -#line 552 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));;} - break; - - case 73: -#line 556 "ncgen.y" - {Symbol* dimsym = (yyvsp[(1) - (1)].sym); - dimsym->objectclass = NC_DIM; - /* Find the actual dimension*/ - dimsym = locate(dimsym); - if(dimsym == NULL) { - derror("Undefined or forward referenced dimension: %s",(yyvsp[(1) - (1)].sym)->name); - YYABORT; - } - (yyval.sym)=dimsym; - ;} - break; - - case 74: -#line 570 "ncgen.y" - {(yyval.mark)=listlength(stack); - listpush(stack,(void*)(yyvsp[(1) - (1)].sym)); - ;} - break; - - case 75: -#line 574 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));;} - break; - - case 76: -#line 579 "ncgen.y" - { - int i; - Dimset dimset; - stackbase=(yyvsp[(2) - (2)].mark); - stacklen=listlength(stack); - count = stacklen - stackbase; - if(count >= NC_MAX_VAR_DIMS) { - yyerror("%s has too many dimensions",(yyvsp[(1) - (2)].sym)->name); - count = NC_MAX_VAR_DIMS - 1; - stacklen = stackbase + count; - } - dimset.ndims = count; - if(count > 0) { - /* extract the actual dimensions*/ - for(i=0;ityp.dimset = dimset; - } - (yyvsp[(1) - (2)].sym)->typ.basetype = NULL; /* not yet known*/ - (yyvsp[(1) - (2)].sym)->objectclass=NC_TYPE; - (yyvsp[(1) - (2)].sym)->subclass=NC_FIELD; - listsetlength(stack,stackbase);/* remove stack nodes*/ - (yyval.sym) = (yyvsp[(1) - (2)].sym); - ;} - break; - - case 77: -#line 607 "ncgen.y" - {(yyval.mark)=listlength(stack);;} - break; - - case 78: -#line 608 "ncgen.y" - {(yyval.mark)=(yyvsp[(2) - (3)].mark);;} - break; - - case 79: -#line 612 "ncgen.y" - {(yyval.mark)=listlength(stack); listpush(stack,(void*)(yyvsp[(1) - (1)].sym));;} - break; - - case 80: -#line 614 "ncgen.y" - {(yyval.mark)=(yyvsp[(1) - (3)].mark); listpush(stack,(void*)(yyvsp[(3) - (3)].sym));;} - break; - - case 81: -#line 619 "ncgen.y" - { /* Anonymous integer dimension. - Can only occur in type definitions*/ - char anon[32]; - sprintf(anon,"const%u",uint32_val); - (yyval.sym) = install(anon); - (yyval.sym)->objectclass = NC_DIM; - (yyval.sym)->dim.isconstant = 1; - (yyval.sym)->dim.declsize = uint32_val; - ;} - break; - - case 82: -#line 629 "ncgen.y" - { /* Anonymous integer dimension. - Can only occur in type definitions*/ - char anon[32]; - if(int32_val <= 0) { - derror("field dimension must be positive"); - YYABORT; - } - sprintf(anon,"const%d",int32_val); - (yyval.sym) = install(anon); - (yyval.sym)->objectclass = NC_DIM; - (yyval.sym)->dim.isconstant = 1; - (yyval.sym)->dim.declsize = int32_val; - ;} - break; - - case 83: -#line 649 "ncgen.y" - {Symbol* vsym = (yyvsp[(1) - (1)].sym); - if(vsym->objectclass != NC_VAR) { - derror("Undefined or forward referenced variable: %s",vsym->name); - YYABORT; - } - (yyval.sym)=vsym; - ;} - break; - - case 84: -#line 660 "ncgen.y" - {Symbol* tsym = (yyvsp[(1) - (1)].sym); - if(tsym->objectclass != NC_TYPE) { - derror("Undefined or forward referenced type: %s",tsym->name); - YYABORT; - } - (yyval.sym)=tsym; - ;} - break; - - case 85: -#line 671 "ncgen.y" - {Symbol* tvsym = (yyvsp[(1) - (1)].sym); Symbol* sym; - /* disambiguate*/ - tvsym->objectclass = NC_VAR; - sym = locate(tvsym); - if(sym == NULL) { - tvsym->objectclass = NC_TYPE; - sym = locate(tvsym); - if(tvsym == NULL) { - derror("Undefined or forward referenced name: %s",(yyvsp[(1) - (1)].sym)->name); - YYABORT; - } else tvsym = sym; - } else tvsym = sym; - if(tvsym == NULL) { - derror("Undefined name (line %d): %s",(yyvsp[(1) - (1)].sym)->lineno,(yyvsp[(1) - (1)].sym)->name); - YYABORT; - } - (yyval.sym)=tvsym; - ;} - break; - - case 86: -#line 689 "ncgen.y" - {(yyval.sym)=(yyvsp[(1) - (1)].sym);;} - break; - - case 87: -#line 696 "ncgen.y" - {;} - break; - - case 88: -#line 696 "ncgen.y" - {;} - break; - - case 89: -#line 700 "ncgen.y" - {(yyval.sym) = makespecial(_NCPROPS_FLAG,NULL,NULL,(void*)&(yyvsp[(4) - (4)].constant),ATTRGLOBAL);;} - break; - - case 90: -#line 702 "ncgen.y" - {(yyval.sym) = makespecial(_ISNETCDF4_FLAG,NULL,NULL,(void*)&(yyvsp[(4) - (4)].constant),ATTRGLOBAL);;} - break; - - case 91: -#line 704 "ncgen.y" - {(yyval.sym) = makespecial(_SUPERBLOCK_FLAG,NULL,NULL,(void*)&(yyvsp[(4) - (4)].constant),ATTRGLOBAL);;} - break; - - case 92: -#line 706 "ncgen.y" - { (yyval.sym)=makeattribute((yyvsp[(2) - (4)].sym),NULL,NULL,(yyvsp[(4) - (4)].datalist),ATTRGLOBAL);;} - break; - - case 93: -#line 708 "ncgen.y" - {Symbol* tsym = (yyvsp[(1) - (6)].sym); Symbol* vsym = (yyvsp[(2) - (6)].sym); Symbol* asym = (yyvsp[(4) - (6)].sym); - if(vsym->objectclass == NC_VAR) { - (yyval.sym)=makeattribute(asym,vsym,tsym,(yyvsp[(6) - (6)].datalist),ATTRVAR); - } else { - derror("Doubly typed attribute: %s",asym->name); - YYABORT; - } - ;} - break; - - case 94: -#line 717 "ncgen.y" - {Symbol* sym = (yyvsp[(1) - (5)].sym); Symbol* asym = (yyvsp[(3) - (5)].sym); - if(sym->objectclass == NC_VAR) { - (yyval.sym)=makeattribute(asym,sym,NULL,(yyvsp[(5) - (5)].datalist),ATTRVAR); - } else if(sym->objectclass == NC_TYPE) { - (yyval.sym)=makeattribute(asym,NULL,sym,(yyvsp[(5) - (5)].datalist),ATTRGLOBAL); - } else { - derror("Attribute prefix not a variable or type: %s",asym->name); - YYABORT; - } - ;} - break; - - case 95: -#line 728 "ncgen.y" - {(yyval.sym) = makespecial(_FILLVALUE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)(yyvsp[(5) - (5)].datalist),0);;} - break; - - case 96: -#line 730 "ncgen.y" - {(yyval.sym) = makespecial(_FILLVALUE_FLAG,(yyvsp[(2) - (6)].sym),(yyvsp[(1) - (6)].sym),(void*)(yyvsp[(6) - (6)].datalist),0);;} - break; - - case 97: -#line 732 "ncgen.y" - {(yyval.sym) = makespecial(_STORAGE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 98: -#line 734 "ncgen.y" - {(yyval.sym) = makespecial(_CHUNKSIZES_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)(yyvsp[(5) - (5)].datalist),0);;} - break; - - case 99: -#line 736 "ncgen.y" - {(yyval.sym) = makespecial(_FLETCHER32_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 100: -#line 738 "ncgen.y" - {(yyval.sym) = makespecial(_DEFLATE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 101: -#line 740 "ncgen.y" - {(yyval.sym) = makespecial(_SHUFFLE_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 102: -#line 742 "ncgen.y" - {(yyval.sym) = makespecial(_ENDIAN_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 103: -#line 744 "ncgen.y" - {(yyval.sym) = makespecial(_NOFILL_FLAG,(yyvsp[(1) - (5)].sym),NULL,(void*)&(yyvsp[(5) - (5)].constant),1);;} - break; - - case 104: -#line 746 "ncgen.y" - {(yyval.sym) = makespecial(_FORMAT_FLAG,NULL,NULL,(void*)&(yyvsp[(4) - (4)].constant),1);;} - break; - - case 105: -#line 751 "ncgen.y" - { - (yyval.sym)=(yyvsp[(1) - (1)].sym); - (yyvsp[(1) - (1)].sym)->ref.is_ref=1; - (yyvsp[(1) - (1)].sym)->is_prefixed=0; - setpathcurrent((yyvsp[(1) - (1)].sym)); - ;} - break; - - case 106: -#line 758 "ncgen.y" - { - (yyval.sym)=(yyvsp[(1) - (1)].sym); - (yyvsp[(1) - (1)].sym)->ref.is_ref=1; - (yyvsp[(1) - (1)].sym)->is_prefixed=1; - /* path is set in ncgen.l*/ - ;} - break; - - case 108: -#line 767 "ncgen.y" - {;} - break; - - case 109: -#line 768 "ncgen.y" - {;} - break; - - case 112: -#line 776 "ncgen.y" - {(yyvsp[(1) - (3)].sym)->data = (yyvsp[(3) - (3)].datalist);;} - break; - - case 113: -#line 779 "ncgen.y" - {(yyval.datalist) = (yyvsp[(1) - (1)].datalist);;} - break; - - case 114: -#line 780 "ncgen.y" - {(yyval.datalist) = (yyvsp[(1) - (1)].datalist);;} - break; - - case 115: -#line 784 "ncgen.y" - {(yyval.datalist) = builddatalist(0);;} - break; - - case 116: -#line 788 "ncgen.y" - {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));;} - break; - - case 117: -#line 790 "ncgen.y" - {datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant))); (yyval.datalist)=(yyvsp[(1) - (3)].datalist);;} - break; - - case 118: -#line 794 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);;} - break; - - case 119: -#line 795 "ncgen.y" - {(yyval.constant)=builddatasublist((yyvsp[(2) - (3)].datalist));;} - break; - - case 120: -#line 799 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);;} - break; - - case 121: -#line 800 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_OPAQUE);;} - break; - - case 122: -#line 801 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_FILLVALUE);;} - break; - - case 123: -#line 802 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_NIL);;} - break; - - case 124: -#line 803 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);;} - break; - - case 126: -#line 808 "ncgen.y" - {(yyval.constant) = makeenumconstref((yyvsp[(1) - (1)].sym));;} - break; - - case 127: -#line 812 "ncgen.y" - {(yyval.constant)=evaluate((yyvsp[(1) - (4)].sym),(yyvsp[(3) - (4)].datalist));;} - break; - - case 128: -#line 817 "ncgen.y" - {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));;} - break; - - case 129: -#line 819 "ncgen.y" - {datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant))); (yyval.datalist)=(yyvsp[(1) - (3)].datalist);;} - break; - - case 130: -#line 823 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_CHAR);;} - break; - - case 131: -#line 824 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_BYTE);;} - break; - - case 132: -#line 825 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_SHORT);;} - break; - - case 133: -#line 826 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT);;} - break; - - case 134: -#line 827 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT64);;} - break; - - case 135: -#line 828 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UBYTE);;} - break; - - case 136: -#line 829 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_USHORT);;} - break; - - case 137: -#line 830 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT);;} - break; - - case 138: -#line 831 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT64);;} - break; - - case 139: -#line 832 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_FLOAT);;} - break; - - case 140: -#line 833 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_DOUBLE);;} - break; - - case 141: -#line 834 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_STRING);;} - break; - - case 142: -#line 838 "ncgen.y" - {(yyval.datalist) = builddatalist(0); datalistextend((yyval.datalist),&((yyvsp[(1) - (1)].constant)));;} - break; - - case 143: -#line 839 "ncgen.y" - {(yyval.datalist)=(yyvsp[(1) - (3)].datalist); datalistextend((yyvsp[(1) - (3)].datalist),&((yyvsp[(3) - (3)].constant)));;} - break; - - case 144: -#line 844 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT);;} - break; - - case 145: -#line 846 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT);;} - break; - - case 146: -#line 848 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_INT64);;} - break; - - case 147: -#line 850 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_UINT64);;} - break; - - case 148: -#line 854 "ncgen.y" - {(yyval.constant)=makeconstdata(NC_STRING);;} - break; - - case 149: -#line 858 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);;} - break; - - case 150: -#line 859 "ncgen.y" - {(yyval.constant)=(yyvsp[(1) - (1)].constant);;} - break; - - case 151: -#line 865 "ncgen.y" - {(yyval.sym)=(yyvsp[(1) - (1)].sym);;} - break; - - -/* Line 1267 of yacc.c. */ -#line 2736 "ncgeny.c" - default: break; - } - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else - { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } - } -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse look-ahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - *++yyvsp = yylval; - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} - - -#line 868 "ncgen.y" - - -#ifndef NO_STDARG -static void -yyerror(const char *fmt, ...) -#else -static void -yyerror(fmt,va_alist) const char* fmt; va_dcl -#endif -{ - va_list argv; - vastart(argv,fmt); - (void)fprintf(stderr,"%s: %s line %d: ", progname, cdlname, lineno); - vderror(fmt,argv); - vaend(argv,fmt); -} - -/* undefine yywrap macro, in case we are using bison instead of yacc */ -#ifdef yywrap -#undef yywrap -#endif - -static int -ncgwrap(void) /* returns 1 on EOF if no more input */ -{ - return 1; -} - -/* get lexical input routine generated by lex */ -#include "ncgenl.c" - -/* Really should init our data within this file */ -void -parse_init(void) -{ - int i; - opaqueid = 0; - arrayuid = 0; - symlist = NULL; - stack = listnew(); - groupstack = listnew(); - consttype = NC_NAT; - grpdefs = listnew(); - dimdefs = listnew(); - attdefs = listnew(); - gattdefs = listnew(); - xattdefs = listnew(); - typdefs = listnew(); - vardefs = listnew(); - condefs = listnew(); - tmp = listnew(); - /* Create the primitive types */ - for(i=NC_NAT+1;i<=NC_STRING;i++) { - primsymbols[i] = makeprimitivetype(i); - } - lex_init(); -} - -static Symbol* -makeprimitivetype(nc_type nctype) -{ - Symbol* sym = install(primtypenames[nctype]); - sym->objectclass=NC_TYPE; - sym->subclass=NC_PRIM; - sym->ncid = nctype; - sym->typ.typecode = nctype; - sym->typ.size = ncsize(nctype); - sym->typ.nelems = 1; - sym->typ.alignment = nctypealignment(nctype); - /* Make the basetype circular so we can always ask for it */ - sym->typ.basetype = sym; - sym->prefix = listnew(); - return sym; -} - -/* Symbol table operations for ncgen tool */ -/* install sname in symbol table even if it is already there */ -Symbol* -install(const char *sname) -{ - Symbol* sp; - sp = (Symbol*) emalloc (sizeof (struct Symbol)); - memset((void*)sp,0,sizeof(struct Symbol)); - sp->name = nulldup(sname); - sp->next = symlist; - sp->lineno = lineno; - sp->location = currentgroup(); - sp->container = currentgroup(); - symlist = sp; - return sp; -} - - -static Symbol* -currentgroup(void) -{ - if(listlength(groupstack) == 0) return rootgroup; - return (Symbol*)listtop(groupstack); -} - -static Symbol* -createrootgroup(const char* dataset) -{ - Symbol* gsym = install(dataset); - gsym->objectclass = NC_GRP; - gsym->container = NULL; - gsym->subnodes = listnew(); - gsym->grp.is_root = 1; - gsym->prefix = listnew(); - listpush(grpdefs,(void*)gsym); - rootgroup = gsym; - return gsym; -} - -static Symbol* -creategroup(Symbol * gsym) -{ - /* See if this group already exists in currentgroup */ - gsym->objectclass = NC_GRP; - if(dupobjectcheck(NC_GRP,gsym)) { - derror("Duplicate group name in same scope: %s",gsym->name); - return NULL; - } - addtogroup(gsym); - gsym->subnodes = listnew(); - listpush(groupstack,(void*)gsym); - listpush(grpdefs,(void*)gsym); - return gsym; -} - -static NCConstant -makeconstdata(nc_type nctype) -{ - NCConstant con = nullconstant; - consttype = nctype; - con.nctype = nctype; - con.lineno = lineno; - con.filled = 0; - switch (nctype) { - case NC_CHAR: con.value.charv = char_val; break; - case NC_BYTE: con.value.int8v = byte_val; break; - case NC_SHORT: con.value.int16v = int16_val; break; - case NC_INT: con.value.int32v = int32_val; break; - case NC_FLOAT: - con.value.floatv = float_val; - break; - case NC_DOUBLE: - con.value.doublev = double_val; - break; - case NC_STRING: { /* convert to a set of chars*/ - size_t len; - len = bbLength(lextext); - con.value.stringv.len = len; - con.value.stringv.stringv = bbDup(lextext); - bbClear(lextext); - } - break; - - /* Allow these constants even in netcdf-3 */ - case NC_UBYTE: con.value.uint8v = ubyte_val; break; - case NC_USHORT: con.value.uint16v = uint16_val; break; - case NC_UINT: con.value.uint32v = uint32_val; break; - case NC_INT64: con.value.int64v = int64_val; break; - case NC_UINT64: con.value.uint64v = uint64_val; break; - -#ifdef USE_NETCDF4 - case NC_OPAQUE: { - char* s; - int len; - len = bbLength(lextext); - s = (char*)emalloc(len+1); - strncpy(s,bbContents(lextext),len); - s[len] = '\0'; - con.value.opaquev.stringv = s; - con.value.opaquev.len = len; - } break; - - case NC_NIL: - break; /* no associated value*/ -#endif - - case NC_FILLVALUE: - break; /* no associated value*/ - - default: - yyerror("Data constant: unexpected NC type: %s", - nctypename(nctype)); - con.value.stringv.stringv = NULL; - con.value.stringv.len = 0; - } - return con; -} - -static NCConstant -makeenumconstref(Symbol* refsym) -{ - NCConstant con; - - markcdf4("Enum type"); - consttype = NC_ENUM; - con.nctype = NC_ECONST; - con.lineno = lineno; - con.filled = 0; - refsym->objectclass = NC_TYPE; - refsym->subclass = NC_ECONST; - con.value.enumv = refsym; - return con; -} - -static void -addtogroup(Symbol* sym) -{ - Symbol* grp = currentgroup(); - sym->container = grp; - listpush(grp->subnodes,(void*)sym); - setpathcurrent(sym); -} - -/* Check for duplicate name of given type within current group*/ -static int -dupobjectcheck(nc_class objectclass, Symbol* pattern) -{ - int i; - Symbol* grp; - if(pattern == NULL) return 0; - grp = pattern->container; - if(grp == NULL || grp->subnodes == NULL) return 0; - for(i=0;isubnodes);i++) { - Symbol* sym = (Symbol*)listget(grp->subnodes,i); - if(!sym->ref.is_ref && sym->objectclass == objectclass - && strcmp(sym->name,pattern->name)==0) return 1; - } - return 0; -} - -static void -setpathcurrent(Symbol* sym) -{ - sym->is_prefixed = 0; - sym->prefix = prefixdup(groupstack); -} - -/* Convert an nc_type code to the corresponding Symbol*/ -Symbol* -basetypefor(nc_type nctype) -{ - return primsymbols[nctype]; -} - -static int -truefalse(NCConstant* con, int tag) -{ - if(con->nctype == NC_STRING) { - char* sdata = con->value.stringv.stringv; - if(strncmp(sdata,"false",NC_MAX_NAME) == 0 - || strncmp(sdata,"0",NC_MAX_NAME) == 0) - return 0; - else if(strncmp(sdata,"true",NC_MAX_NAME) == 0 - || strncmp(sdata,"1",NC_MAX_NAME) == 0) - return 1; - else goto fail; - } else if(con->value.int32v < 0 || con->value.int32v > 1) - goto fail; - return con->value.int32v; - -fail: - derror("%s: illegal value",specialname(tag)); - return 0; -} - -/* Since this may be affected by the _Format attribute, which - may come last, capture all the special info and sort it out - in semantics. -*/ -static Symbol* -makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst) -{ - Symbol* attr = NULL; - Datalist* list; - NCConstant* con; - NCConstant iconst; - int tf = 0; - char* sdata = NULL; - int idata = -1; - - if((GLOBAL_SPECIAL & tag) != 0) { - if(vsym != NULL) { - derror("_Format: must be global attribute"); - vsym = NULL; - } - } else { - if(vsym == NULL) { - derror("%s: must have non-NULL vsym", specialname(tag)); - return NULL; - } - } - - if(tag != _FILLVALUE_FLAG && tag != _FORMAT_FLAG) - /*Main.*/specials_flag++; - - if(isconst) { - con = (NCConstant*)data; - list = builddatalist(1); - dlappend(list,(NCConstant*)data); - } else { - list = (Datalist*)data; - con = (NCConstant*)list->data; - } - - switch (tag) { - case _FLETCHER32_FLAG: - case _SHUFFLE_FLAG: - case _ISNETCDF4_FLAG: - case _NOFILL_FLAG: - iconst.nctype = (con->nctype == NC_STRING?NC_STRING:NC_INT); - convert1(con,&iconst); - tf = truefalse(&iconst,tag); - break; - case _FORMAT_FLAG: - case _STORAGE_FLAG: - case _NCPROPS_FLAG: - case _ENDIAN_FLAG: - iconst.nctype = NC_STRING; - convert1(con,&iconst); - if(iconst.nctype == NC_STRING) - sdata = iconst.value.stringv.stringv; - else - derror("%s: illegal value",specialname(tag)); - break; - case _SUPERBLOCK_FLAG: - case _DEFLATE_FLAG: - iconst.nctype = NC_INT; - convert1(con,&iconst); - if(iconst.nctype == NC_INT) - idata = iconst.value.int32v; - else - derror("%s: illegal value",specialname(tag)); - break; - case _CHUNKSIZES_FLAG: - case _FILLVALUE_FLAG: - /* Handle below */ - break; - default: PANIC1("unexpected special tag: %d",tag); - } - - if(tag == _FORMAT_FLAG) { - /* Watch out: this is a global attribute */ - struct Kvalues* kvalue; - int found = 0; - /* Use the table in main.c */ - for(kvalue = legalkinds; kvalue->name; kvalue++) { - if(sdata) { - if(strcmp(sdata, kvalue->name) == 0) { - globalspecials._Format = kvalue->k_flag; - /*Main.*/format_attribute = 1; - found = 1; - break; - } - } - } - if(!found) - derror("_Format: illegal value: %s",sdata); - } else if((GLOBAL_SPECIAL & tag) != 0) { - if(tag == _ISNETCDF4_FLAG) - globalspecials._IsNetcdf4 = tf; - else if(tag == _SUPERBLOCK_FLAG) - globalspecials._Superblock = idata; - else if(tag == _NCPROPS_FLAG) - globalspecials._NCProperties = strdup(sdata); - } else { - Specialdata* special; - /* Set up special info */ - special = &vsym->var.special; - if(tag == _FILLVALUE_FLAG) { - special->_Fillvalue = list; - /* fillvalue must be a single value*/ - if(list->length != 1) - derror("_FillValue: must be a single (possibly compound) value", - vsym->name); - /* check that the attribute value contains no fill values*/ - if(containsfills(list)) { - derror("Attribute data may not contain fill values (i.e. _ )"); - } - /* _FillValue is also a real attribute*/ - if(vsym->objectclass != NC_VAR) { - derror("_FillValue attribute not associated with variable: %s",vsym->name); - } - if(tsym == NULL) tsym = vsym->typ.basetype; - else if(vsym->typ.basetype != tsym) { - derror("_FillValue attribute type does not match variable type: %s",vsym->name); - } - attr = makeattribute(install("_FillValue"),vsym,tsym,list,ATTRVAR); - } else switch (tag) { - /* These will be output as attributes later */ - case _STORAGE_FLAG: - if(!sdata) - derror("_Storage: illegal NULL value"); - else if(strcmp(sdata,"contiguous") == 0) - special->_Storage = NC_CONTIGUOUS; - else if(strcmp(sdata,"chunked") == 0) - special->_Storage = NC_CHUNKED; - else - derror("_Storage: illegal value: %s",sdata); - special->flags |= _STORAGE_FLAG; - break; - case _FLETCHER32_FLAG: - special->_Fletcher32 = tf; - special->flags |= _FLETCHER32_FLAG; - break; - case _DEFLATE_FLAG: - special->_DeflateLevel = idata; - special->flags |= _DEFLATE_FLAG; - break; - case _SHUFFLE_FLAG: - special->_Shuffle = tf; - special->flags |= _SHUFFLE_FLAG; - break; - case _ENDIAN_FLAG: - if(!sdata) - derror("_Endianness: illegal NULL value"); - else if(strcmp(sdata,"little") == 0) - special->_Endianness = 1; - else if(strcmp(sdata,"big") == 0) - special->_Endianness = 2; - else - derror("_Endianness: illegal value: %s",sdata); - special->flags |= _ENDIAN_FLAG; - break; - case _NOFILL_FLAG: - special->_Fill = (1 - tf); /* negate */ - special->flags |= _NOFILL_FLAG; - break; - case _CHUNKSIZES_FLAG: { - int i; - special->nchunks = list->length; - special->_ChunkSizes = (size_t*)emalloc(sizeof(size_t)*special->nchunks); - for(i=0;inchunks;i++) { - iconst.nctype = NC_INT; - convert1(&list->data[i],&iconst); - if(iconst.nctype == NC_INT) { - special->_ChunkSizes[i] = (size_t)iconst.value.int32v; - } else { - efree(special->_ChunkSizes); - derror("%s: illegal value",specialname(tag)); - } - } - special->flags |= _CHUNKSIZES_FLAG; - /* Chunksizes => storage == chunked */ - special->flags |= _STORAGE_FLAG; - special->_Storage = NC_CHUNKED; - } break; - default: PANIC1("makespecial: illegal token: %d",tag); - } - } - return attr; -} - -static Symbol* -makeattribute(Symbol* asym, - Symbol* vsym, - Symbol* tsym, - Datalist* data, - Attrkind kind) /* global var or unknown*/ -{ - asym->objectclass = NC_ATT; - asym->data = data; - switch (kind) { - case ATTRVAR: - asym->att.var = vsym; - asym->typ.basetype = tsym; - listpush(attdefs,(void*)asym); - addtogroup(asym); - break; - case ATTRGLOBAL: - asym->att.var = NULL; /* NULL => NC_GLOBAL*/ - asym->typ.basetype = tsym; - listpush(gattdefs,(void*)asym); - addtogroup(asym); - break; - default: PANIC1("unexpected attribute type: %d",kind); - } - /* finally; check that the attribute value contains no fill values*/ - if(containsfills(data)) { - derror("Attribute data may not contain fill values (i.e. _ ): %s",asym->name); - } - return asym; -} - -static long long -extractint(NCConstant con) -{ - switch (con.nctype) { - case NC_BYTE: return (long long)(con.value.int8v); - case NC_SHORT: return (long long)(con.value.int16v); - case NC_INT: return (long long)(con.value.int32v); - case NC_UBYTE: return (long long)(con.value.uint8v); - case NC_USHORT: return (long long)(con.value.uint16v); - case NC_UINT: return (long long)(con.value.uint32v); - case NC_INT64: return (long long)(con.value.int64v); - default: - derror("Not a signed integer type: %d",con.nctype); - break; - } - return 0; -} - -static int -containsfills(Datalist* list) -{ - if(list != NULL) { - int i; - NCConstant* con = list->data; - for(i=0;ilength;i++,con++) { - if(con->nctype == NC_COMPOUND) { - if(containsfills(con->value.compoundv)) return 1; - } else if(con->nctype == NC_FILLVALUE) return 1; - } - } - return 0; -} - -static void -datalistextend(Datalist* dl, NCConstant* con) -{ - dlappend(dl,con); -} - -static void -vercheck(int tid) -{ - switch (tid) { - case NC_UBYTE: markcdf5("netCDF4/5 type: UBYTE"); break; - case NC_USHORT: markcdf5("netCDF4/5 type: USHORT"); break; - case NC_UINT: markcdf5("netCDF4/5 type: UINT"); break; - case NC_INT64: markcdf5("netCDF4/5 type: INT64"); break; - case NC_UINT64: markcdf5("netCDF4/5 type: UINT64"); break; - case NC_STRING: markcdf4("netCDF4 type: STRING"); break; - case NC_VLEN: markcdf4("netCDF4 type: VLEN"); break; - case NC_OPAQUE: markcdf4("netCDF4 type: OPAQUE"); break; - case NC_ENUM: markcdf4("netCDF4 type: ENUM"); break; - case NC_COMPOUND: markcdf4("netCDF4 type: COMPOUND"); break; - default: break; - } -} - -const char* -specialname(int tag) -{ - struct Specialtoken* spp = specials; - for(;spp->name;spp++) { - if(spp->tag == tag) - return spp->name; - } - return ""; -} - -/* -Since the arguments are all simple constants, -we can evaluate the function immediately -and return its value. -Note that currently, only a single value can -be returned. -*/ - -static NCConstant -evaluate(Symbol* fcn, Datalist* arglist) -{ - NCConstant result = nullconstant; - - /* prepare the result */ - result.lineno = fcn->lineno; - - if(strcasecmp(fcn->name,"time") == 0) { - char* timekind = NULL; - char* timevalue = NULL; - result.nctype = NC_DOUBLE; - result.value.doublev = 0; - /* int time([string],string) */ - switch (arglist->length) { - case 2: - if(arglist->data[1].nctype != NC_STRING) { - derror("Expected function signature: time([string,]string)"); - goto done; - } - /* fall thru */ - case 1: - if(arglist->data[0].nctype != NC_STRING) { - derror("Expected function signature: time([string,]string)"); - goto done; - } - break; - case 0: - default: - derror("Expected function signature: time([string,]string)"); - goto done; - } - if(arglist->length == 2) { - timekind = arglist->data[0].value.stringv.stringv; - timevalue = arglist->data[1].value.stringv.stringv; - } else - timevalue = arglist->data[0].value.stringv.stringv; - if(timekind == NULL) { /* use cd time as the default */ - cdCompTime comptime; - CdTime cdtime; - cdCalenType timetype = cdStandard; - cdChar2Comp(timetype,timevalue,&comptime); - /* convert comptime to cdTime */ - cdtime.year = comptime.year; - cdtime.month = comptime.month; - cdtime.day = comptime.day; - cdtime.hour = comptime.hour; - cdtime.baseYear = 1970; - cdtime.timeType = CdChron; - /* convert to double value */ - Cdh2e(&cdtime,&result.value.doublev); - } else { - derror("Time conversion '%s' not supported",timekind); - goto done; - } - } else { /* Unknown function */ - derror("Unknown function name: %s",fcn->name); - goto done; - } - -done: - return result; -} - diff --git a/contrib/netcdf/4.4.1.1/ncgen/ncgeny.h b/contrib/netcdf/4.4.1.1/ncgen/ncgeny.h deleted file mode 100644 index 6636503b3d6..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/ncgeny.h +++ /dev/null @@ -1,171 +0,0 @@ -/* A Bison parser, made by GNU Bison 2.3. */ - -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - NC_UNLIMITED_K = 258, - CHAR_K = 259, - BYTE_K = 260, - SHORT_K = 261, - INT_K = 262, - FLOAT_K = 263, - DOUBLE_K = 264, - UBYTE_K = 265, - USHORT_K = 266, - UINT_K = 267, - INT64_K = 268, - UINT64_K = 269, - IDENT = 270, - TERMSTRING = 271, - CHAR_CONST = 272, - BYTE_CONST = 273, - SHORT_CONST = 274, - INT_CONST = 275, - INT64_CONST = 276, - UBYTE_CONST = 277, - USHORT_CONST = 278, - UINT_CONST = 279, - UINT64_CONST = 280, - FLOAT_CONST = 281, - DOUBLE_CONST = 282, - DIMENSIONS = 283, - VARIABLES = 284, - NETCDF = 285, - DATA = 286, - TYPES = 287, - COMPOUND = 288, - ENUM = 289, - OPAQUE = 290, - OPAQUESTRING = 291, - GROUP = 292, - PATH = 293, - FILLMARKER = 294, - NIL = 295, - _FILLVALUE = 296, - _FORMAT = 297, - _STORAGE = 298, - _CHUNKSIZES = 299, - _DEFLATELEVEL = 300, - _SHUFFLE = 301, - _ENDIANNESS = 302, - _NOFILL = 303, - _FLETCHER32 = 304, - _NCPROPS = 305, - _ISNETCDF4 = 306, - _SUPERBLOCK = 307, - DATASETID = 308 - }; -#endif -/* Tokens. */ -#define NC_UNLIMITED_K 258 -#define CHAR_K 259 -#define BYTE_K 260 -#define SHORT_K 261 -#define INT_K 262 -#define FLOAT_K 263 -#define DOUBLE_K 264 -#define UBYTE_K 265 -#define USHORT_K 266 -#define UINT_K 267 -#define INT64_K 268 -#define UINT64_K 269 -#define IDENT 270 -#define TERMSTRING 271 -#define CHAR_CONST 272 -#define BYTE_CONST 273 -#define SHORT_CONST 274 -#define INT_CONST 275 -#define INT64_CONST 276 -#define UBYTE_CONST 277 -#define USHORT_CONST 278 -#define UINT_CONST 279 -#define UINT64_CONST 280 -#define FLOAT_CONST 281 -#define DOUBLE_CONST 282 -#define DIMENSIONS 283 -#define VARIABLES 284 -#define NETCDF 285 -#define DATA 286 -#define TYPES 287 -#define COMPOUND 288 -#define ENUM 289 -#define OPAQUE 290 -#define OPAQUESTRING 291 -#define GROUP 292 -#define PATH 293 -#define FILLMARKER 294 -#define NIL 295 -#define _FILLVALUE 296 -#define _FORMAT 297 -#define _STORAGE 298 -#define _CHUNKSIZES 299 -#define _DEFLATELEVEL 300 -#define _SHUFFLE 301 -#define _ENDIANNESS 302 -#define _NOFILL 303 -#define _FLETCHER32 304 -#define _NCPROPS 305 -#define _ISNETCDF4 306 -#define _SUPERBLOCK 307 -#define DATASETID 308 - - - - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 136 "ncgen.y" -{ -Symbol* sym; -unsigned long size; /* allow for zero size to indicate e.g. UNLIMITED*/ -long mark; /* track indices into the sequence*/ -int nctype; /* for tracking attribute list type*/ -Datalist* datalist; -NCConstant constant; -} -/* Line 1529 of yacc.c. */ -#line 164 "ncgeny.h" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - -extern YYSTYPE ncglval; - diff --git a/contrib/netcdf/4.4.1.1/ncgen/offsets.c b/contrib/netcdf/4.4.1.1/ncgen/offsets.c deleted file mode 100644 index bd8dee49f53..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/offsets.c +++ /dev/null @@ -1,336 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/offsets.c,v 1.1 2009/09/25 18:22:40 dmh Exp $ - *********************************************************************/ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* -This code is a variantion of the H5detect.c code from HDF5. -Author: D. Heimbigner 10/7/2008 -*/ - -#ifndef OFFSETTEST -#include "includes.h" -#else -#include -#include -#include -#include -#endif - -#ifdef OFFSETTEST - -static void* emalloc(size_t); - -typedef int nc_type; -typedef struct nc_vlen_t { - size_t len; - void* p; -} nc_vlen_t; - -#define NC_NAT 0 /* NAT = 'Not A Type' (c.f. NaN) */ -#define NC_BYTE 1 /* signed 1 byte integer */ -#define NC_CHAR 2 /* ISO/ASCII character */ -#define NC_SHORT 3 /* signed 2 byte integer */ -#define NC_INT 4 /* signed 4 byte integer */ -#define NC_FLOAT 5 /* single precision floating point number */ -#define NC_DOUBLE 6 /* double precision floating point number */ -#define NC_UBYTE 7 /* unsigned 1 byte int */ -#define NC_USHORT 8 /* unsigned 2-byte int */ -#define NC_UINT 9 /* unsigned 4-byte int */ -#define NC_INT64 10 /* signed 8-byte int */ -#define NC_UINT64 11 /* unsigned 8-byte int */ -#define NC_STRING 12 /* string */ -#define NC_STRING 12 /* string */ -#define NC_VLEN 13 -#define NC_OPAQUE 14 -#define NC_ENUM 15 -#define NC_COMPOUND 16 -#endif - -#include "offsets.h" - - -/* -The heart of this is the following macro, -which computes the offset of a field x -when preceded by a char field. -The assumptions appear to be as follows: -1. the offset produced in this situation indicates - the alignment for x relative in such a way that it - depends only on the types that precede it in the struct. -2. the compiler does not reorder fields. -3. arrays are tightly packed. -4. nested structs are alignd according to their first member - (this actually follows from C language requirement that - a struct can legally be cast to an instance of its first member). -Given the alignments for the various common primitive types, -it is assumed that one can use them anywhere to construct -the layout of a struct of such types. -It seems to work for HDF5 for a wide variety of machines. -Note that technically, this is compiler dependent, but in practice -all compilers seem to mimic the gcc rules. -*/ - -#define COMP_ALIGNMENT(DST,TYPE) {\ - struct {char f1; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -char* ctypenames[NCTYPES] = { -(char*)NULL, -"char","unsigned char", -"short","unsigned short", -"int","unsigned int", -"long long","unsigned long long", -"float","double", -"void*","nc_vlen_t" -}; - -static Typealignvec vec[NCTYPES]; -static Typealignset set; - -unsigned int -nctypealignment(nc_type nctype) -{ - Alignment* align = NULL; - int index = 0; - switch (nctype) { - case NC_BYTE: index = UCHARINDEX; break; - case NC_CHAR: index = CHARINDEX; break; - case NC_SHORT: index = SHORTINDEX; break; - case NC_INT: index = INTINDEX; break; - case NC_FLOAT: index = FLOATINDEX; break; - case NC_DOUBLE: index = DOUBLEINDEX; break; - case NC_UBYTE: index = UCHARINDEX; break; - case NC_USHORT: index = USHORTINDEX; break; - case NC_UINT: index = UINTINDEX; break; - case NC_INT64: index = LONGLONGINDEX; break; - case NC_UINT64: index = ULONGLONGINDEX; break; - case NC_STRING: index = PTRINDEX; break; - case NC_VLEN: index = NCVLENINDEX; break; - case NC_OPAQUE: index = UCHARINDEX; break; - default: - fprintf(stderr,"nctypealignment: bad type code: %d",nctype); - exit(1); - } - align = &vec[index]; - return align->alignment; -} - - -void -compute_alignments(void) -{ - /* Compute the alignments for all the common C data types*/ - /* First for the struct*/ - /* initialize*/ - memset((void*)&set,0,sizeof(set)); - memset((void*)vec,0,sizeof(vec)); - - COMP_ALIGNMENT(set.charalign,char); - COMP_ALIGNMENT(set.ucharalign,unsigned char); - COMP_ALIGNMENT(set.shortalign,short); - COMP_ALIGNMENT(set.ushortalign,unsigned short); - COMP_ALIGNMENT(set.intalign,int); - COMP_ALIGNMENT(set.uintalign,unsigned int); - COMP_ALIGNMENT(set.longlongalign,long long); - COMP_ALIGNMENT(set.ulonglongalign,unsigned long long); - COMP_ALIGNMENT(set.floatalign,float); - COMP_ALIGNMENT(set.doublealign,double); - COMP_ALIGNMENT(set.ptralign,void*); - COMP_ALIGNMENT(set.ncvlenalign,nc_vlen_t); - - /* Then the vector*/ - COMP_ALIGNMENT(vec[CHARINDEX],char); - COMP_ALIGNMENT(vec[UCHARINDEX],unsigned char); - COMP_ALIGNMENT(vec[SHORTINDEX],short); - COMP_ALIGNMENT(vec[USHORTINDEX],unsigned short); - COMP_ALIGNMENT(vec[INTINDEX],int); - COMP_ALIGNMENT(vec[UINTINDEX],unsigned int); - COMP_ALIGNMENT(vec[LONGLONGINDEX],long long); - COMP_ALIGNMENT(vec[ULONGLONGINDEX],unsigned long long); - COMP_ALIGNMENT(vec[FLOATINDEX],float); - COMP_ALIGNMENT(vec[DOUBLEINDEX],double); - COMP_ALIGNMENT(vec[PTRINDEX],void*); - COMP_ALIGNMENT(vec[NCVLENINDEX],nc_vlen_t); -} - -#ifdef OFFSETTEST - -/* Compute the alignment of TYPE when it is preceded - by a field of type TYPE1 -*/ -#define COMP_ALIGNMENT1(DST,TYPE1,TYPE) {\ - struct {TYPE1 f1; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -/* Compute the alignment of TYPE when it is preceded - by a field of type TYPE1 and a field of type TYPE2 -*/ -#define COMP_ALIGNMENT2(DST,TYPE1,TYPE2,TYPE) {\ - struct {TYPE1 f1, TYPE2 f2; TYPE x;} tmp; \ - DST.typename = #TYPE ; \ - DST.alignment = (size_t)((char*)(&(tmp.x)) - (char*)(&tmp));} - -/* Compute the alignment of TYPE when it is preceded - by a field of type TYPE1 and a field of type TYPE2 -*/ -#define COMP_SIZE0(DST,TYPE1,TYPE2) {\ - struct {TYPE1 c; TYPE2 x;} tmp; \ - DST = sizeof(tmp); } - -static char* -padname(char* name) -{ -#define MAX 20 - if(name == NULL) name = "null"; - int len = strlen(name); - if(len > MAX) len = MAX; - char* s = (char*)emalloc(MAX+1); - memset(s,' ',MAX); - s[MAX+1] = '\0'; - strncpy(s,name,len); - return s; -} - -static void -verify(Typealignvec* vec) -{ - int i,j; - Typealignvec* vec16; - Typealignvec* vec32; - int* sizes8; - int* sizes16; - int* sizes32; - - vec16 = (Typealignvec*)emalloc(sizeof(Typealignvec)*NCTYPES); - vec32 = (Typealignvec*)emalloc(sizeof(Typealignvec)*NCTYPES); - sizes8 = (int*)emalloc(sizeof(int)*NCTYPES); - sizes16 = (int*)emalloc(sizeof(int)*NCTYPES); - sizes32 = (int*)emalloc(sizeof(int)*NCTYPES); - - COMP_SIZE0(sizes8[1],char,char); - COMP_SIZE0(sizes8[2],unsigned char,char); - COMP_SIZE0(sizes8[3],short,char); - COMP_SIZE0(sizes8[4],unsigned short,char); - COMP_SIZE0(sizes8[5],int,char); - COMP_SIZE0(sizes8[6],unsigned int,char); - COMP_SIZE0(sizes8[7],long long,char); - COMP_SIZE0(sizes8[8],unsigned long long,char); - COMP_SIZE0(sizes8[9],float,char); - COMP_SIZE0(sizes8[10],double,char) ; - COMP_SIZE0(sizes8[11],void*,char); - COMP_SIZE0(sizes8[12],nc_vlen_t,char); - - COMP_SIZE0(sizes16[1],char,short); - COMP_SIZE0(sizes16[2],unsigned char,short); - COMP_SIZE0(sizes16[3],short,short); - COMP_SIZE0(sizes16[4],unsigned short,short); - COMP_SIZE0(sizes16[5],int,short); - COMP_SIZE0(sizes16[6],unsigned int,short); - COMP_SIZE0(sizes16[7],long long,short); - COMP_SIZE0(sizes16[8],unsigned long long,short); - COMP_SIZE0(sizes16[9],float,short); - COMP_SIZE0(sizes16[10],double,short) ; - COMP_SIZE0(sizes16[11],void*,short); - COMP_SIZE0(sizes16[12],nc_vlen_t*,short); - - COMP_SIZE0(sizes32[1],char,int); - COMP_SIZE0(sizes32[2],unsigned char,int); - COMP_SIZE0(sizes32[3],short,int); - COMP_SIZE0(sizes32[4],unsigned short,int); - COMP_SIZE0(sizes32[5],int,int); - COMP_SIZE0(sizes32[6],unsigned int,int); - COMP_SIZE0(sizes32[7],long long,int); - COMP_SIZE0(sizes32[8],unsigned long long,int); - COMP_SIZE0(sizes32[9],float,int); - COMP_SIZE0(sizes32[10],double,int) ; - COMP_SIZE0(sizes32[11],void*,int); - COMP_SIZE0(sizes32[12],nc_vlen_t*,int); - - COMP_ALIGNMENT1(vec16[1],char,short); - COMP_ALIGNMENT1(vec16[2],unsigned char,short); - COMP_ALIGNMENT1(vec16[3],short,short); - COMP_ALIGNMENT1(vec16[4],unsigned short,short); - COMP_ALIGNMENT1(vec16[5],int,short); - COMP_ALIGNMENT1(vec16[6],unsigned int,short); - COMP_ALIGNMENT1(vec32[7],long long,short); - COMP_ALIGNMENT1(vec32[8],unsigned long long,short); - COMP_ALIGNMENT1(vec16[9],float,short); - COMP_ALIGNMENT1(vec16[10],double,short); - COMP_ALIGNMENT1(vec16[11],void*,short); - COMP_ALIGNMENT1(vec16[12],nc_vlen_t*,short); - - COMP_ALIGNMENT1(vec32[1],char,short); - COMP_ALIGNMENT1(vec32[2],unsigned char,short); - COMP_ALIGNMENT1(vec32[3],char,short); - COMP_ALIGNMENT1(vec32[4],unsigned short,short); - COMP_ALIGNMENT1(vec32[5],int,int); - COMP_ALIGNMENT1(vec32[6],unsigned int,int); - COMP_ALIGNMENT1(vec32[7],long long,int); - COMP_ALIGNMENT1(vec32[8],unsigned long long,int); - COMP_ALIGNMENT1(vec32[9],float,int); - COMP_ALIGNMENT1(vec32[10],double,int); - COMP_ALIGNMENT1(vec32[11],void*,int); - COMP_ALIGNMENT1(vec32[12],nc_vlen_t*,int); - - for(i=0;i NOT-A-TYPE*/ -#define NATINDEX 0 -#define CHARINDEX 1 -#define UCHARINDEX 2 -#define SHORTINDEX 3 -#define USHORTINDEX 4 -#define INTINDEX 5 -#define UINTINDEX 6 -#define LONGINDEX 7 -#define ULONGINDEX 8 -#define LONGLONGINDEX 9 -#define ULONGLONGINDEX 10 -#define FLOATINDEX 11 -#define DOUBLEINDEX 12 -#define PTRINDEX 13 -#define NCVLENINDEX 14 - -#define NCTYPES 15 - -/* Capture in struct and in a vector*/ -typedef struct Typealignset { - Alignment charalign; /* char*/ - Alignment ucharalign; /* unsigned char*/ - Alignment shortalign; /* short*/ - Alignment ushortalign; /* unsigned short*/ - Alignment intalign; /* int*/ - Alignment uintalign; /* unsigned int*/ - Alignment longalign; /* long*/ - Alignment ulongalign; /* unsigned long*/ - Alignment longlongalign; /* long long*/ - Alignment ulonglongalign; /* unsigned long long*/ - Alignment floatalign; /* float*/ - Alignment doublealign; /* double*/ - Alignment ptralign; /* void**/ - Alignment ncvlenalign; /* nc_vlen_t*/ -} Typealignset; - -typedef Alignment Typealignvec; - -extern char* ctypenames[]; - -extern void compute_alignments(void); -extern unsigned int nctypealignment(nc_type nctype); - -#endif /*OFFSETS_H*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen/run_nc4_tests.sh b/contrib/netcdf/4.4.1.1/ncgen/run_nc4_tests.sh deleted file mode 100755 index 0c5b06759cb..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/run_nc4_tests.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh -# This shell script runs the ncdump tests. -# $Id: run_nc4_tests.sh,v 1.4 2010/05/18 20:05:23 dmh Exp $ - -if test "x$srcdir" = x ; then srcdir="."; fi - -## -# Function to test a netCDF CDL file. -# 1. Generate binary nc. -# Use ncdump to compare against original CDL file. -# Input: CDL file name, minus the suffix, output filename -# Other input: arguments. -# -# Example: -# $ validateNC compound_datasize_test -k nc4 -## -validateNC() { - BASENAME=$1 - INFILE=$srcdir/$1.cdl - TMPFILE=tst_$2.cdl - shift - shift - ARGS=$@ - - echo "*** generating $BASENAME.nc ***" - ./ncgen $ARGS -o $BASENAME.nc $INFILE - ../ncdump/ncdump $BASENAME.nc | sed 's/e+0/e+/g' > $TMPFILE - echo "*** comparing binary against source CDL file *** " - diff -b -w $INFILE $TMPFILE - -} - - - -echo "*** Testing ncgen for netCDF-4." -set -e - -echo "*** creating netCDF-4 file c0_4.nc from c0_4.cdl..." -validateNC "c0_4" "c0_4" -k nc4 -b -o c0_4.nc - -echo "*** creating netCDF-4 classic model file c0_4c.nc from c0.cdl..." -validateNC "c0" "c0_4c" -k nc7 -b - -echo "*** creating C code for CAM file ref_camrun.cdl..." -./ncgen -lc $srcdir/ref_camrun.cdl >ref_camrun.c - -echo "*** test for jira NCF-199 bug" -validateNC "ncf199" "ncf199" -k nc4 - -echo "*** creating binary files for github issue 323..." -echo "*** github issue 323 test 1" -validateNC "compound_datasize_test" "compound_datasize_test" -k nc4 - -echo "*** github issue 323 test 2" -validateNC "compound_datasize_test2" "compound_datasize_test2" -k nc4 - -echo "*** Test successful!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncgen/run_tests.sh b/contrib/netcdf/4.4.1.1/ncgen/run_tests.sh deleted file mode 100755 index d933d2fc8e0..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/run_tests.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# This shell script runs the ncgen tests. -# $Id: run_tests.sh,v 1.10 2010/04/04 22:06:03 dmh Exp $ - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "*** Testing ncgen." -set -e - -validateNC() { - BASENAME=$1 - INFILE=$srcdir/$1.cdl - TMPFILE=tst_$2.cdl - shift - shift - ARGS=$@ - - echo "*** generating $BASENAME.nc ***" - ./ncgen $ARGS -o $BASENAME.nc $INFILE - ../ncdump/ncdump $BASENAME.nc | sed 's/e+0/e+/g' > $TMPFILE - echo "*** comparing $BASENAME.nc against $INFILE *** " - diff -b -w $INFILE $TMPFILE -} - -echo "*** creating classic file c0.nc from c0.cdl..." - -validateNC c0 c0 -b - -echo "*** creating 64-bit offset file c0_64.nc from c0.cdl..." - -validateNC c0 "c0_64" -k 64-bit-offset -b - -echo "*** creating 64-bit offset file c5.nc from c5.cdl..." -./ncgen -k 64-bit-data -b -o c5.nc $srcdir/c5.cdl -if [ ! -f c5.nc ]; then - echo "Failure." - exit 1 -fi - -echo "*** Test successful!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncgen/util.c b/contrib/netcdf/4.4.1.1/ncgen/util.c deleted file mode 100644 index 9b2dd702357..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen/util.c +++ /dev/null @@ -1,713 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen/util.c,v 1.4 2010/04/14 22:04:59 dmh Exp $ - *********************************************************************/ - -#include "includes.h" - -/* Track primitive symbol instances (initialized in ncgen.y) */ -Symbol* primsymbols[PRIMNO]; - -char* -append(const char* s1, const char* s2) -{ - int len = (s1?strlen(s1):0)+(s2?strlen(s2):0); - char* result = (char*)emalloc(len+1); - result[0] = '\0'; - if(s1) strcat(result,s1); - if(s2) strcat(result,s2); - return result; -} - - -unsigned int -chartohex(char c) -{ - switch (c) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - return (c - '0'); - case 'A': case 'B': case 'C': - case 'D': case 'E': case 'F': - return (c - 'A') + 0x0a; - case 'a': case 'b': case 'c': - case 'd': case 'e': case 'f': - return (c - 'a') + 0x0a; - } - return 0; -} - -/* - * For generated Fortran, change 'e' to 'd' in exponent of double precision - * constants. - */ -void -expe2d( - char *cp) /* string containing double constant */ -{ - char *expchar = strrchr(cp,'e'); - if (expchar) { - *expchar = 'd'; - } -} - -/* Returns non-zero if n is a power of 2, 0 otherwise */ -int -pow2( - int n) -{ - int m = n; - int p = 1; - - while (m > 0) { - m /= 2; - p *= 2; - } - return p == 2*n; -} - - -/* - * Remove trailing zeros (after decimal point) but not trailing decimal - * point from ss, a string representation of a floating-point number that - * might include an exponent part. - */ -void -tztrim( - char *ss /* returned string representing dd */ - ) -{ - char *cp, *ep; - - cp = ss; - if (*cp == '-') - cp++; - while(isdigit((int)*cp) || *cp == '.') - cp++; - if (*--cp == '.') - return; - ep = cp+1; - while (*cp == '0') - cp--; - cp++; - if (cp == ep) - return; - while (*ep) - *cp++ = *ep++; - *cp = '\0'; - return; -} - -/* Assume bytebuffer contains pointers to char**/ -void -reclaimattptrs(void* buf, long count) -{ - int i; - char** ptrs = (char**)buf; - for(i=0;iobjectclass) { - case NG_VAR: - reclaimconstlist(vsym->var.data); - if(vsym->var.dims != NULL) efree(vsym->var.dims); - break; - case NG_ATT: - if(asym->att.basetype == primsymbols[NC_STRING]) - reclaimattptrs(asym->att.data,asym->att.count); - else - efree(asym->att.data); - break; - case NG_GRP: - case NG_DIM: - case NG_TYP: - case NG_ENUM: - case NG_ECONST: - case NG_VLEN: - case NG_STRUCT: - case NG_FIELD: - case NG_OPAQUE: - default: break; - } - efree(sym->name); - efree(sym); -#endif -} - -char* nctypenames[17] = { -"NC_NAT", -"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" -}; - -char* nctypenamesextend[9] = { -"NC_GRP", "NC_DIM", "NC_VAR", "NC_ATT", "NC_TYPE", -"NC_ECONST","NC_FIELD", "NC_ARRAY","NC_PRIM" -}; - -char* -nctypename(nc_type nctype) -{ - char* s; - if(nctype >= NC_NAT && nctype <= NC_COMPOUND) - return nctypenames[nctype]; - if(nctype >= NC_GRP && nctype <= NC_PRIM) - return nctypenamesextend[(nctype - NC_GRP)]; - if(nctype == NC_FILLVALUE) return "NC_FILL"; - if(nctype == NC_NIL) return "NC_NIL"; - s = poolalloc(128); - sprintf(s,"NC_<%d>",nctype); - return s; -} - -/* These are the augmented NC_ values (0 based from NC_GRP)*/ -char* ncclassnames[9] = { -"NC_GRP", "NC_DIM", "NC_VAR", "NC_ATT", -"NC_TYP", "NC_ECONST", "NC_FIELD", "NC_ARRAY", -"NC_PRIM" -}; - -char* -ncclassname(nc_class ncc) -{ - char* s; - if(ncc >= NC_NAT && ncc <= NC_COMPOUND) - return nctypename((nc_type)ncc); - if(ncc == NC_FILLVALUE) return "NC_FILL"; - if(ncc >= NC_GRP && ncc <= NC_PRIM) - return ncclassnames[ncc - NC_GRP]; - s = poolalloc(128); - sprintf(s,"NC_<%d>",ncc); - return s; -} - -int ncsizes[17] = { -0, -1,1,2,4, -4,8, -1,2,4, -8,8, -sizeof(char*), -sizeof(nc_vlen_t), -0,0,0 -}; - -int -ncsize(nc_type nctype) -{ - if(nctype >= NC_NAT && nctype <= NC_COMPOUND) - return ncsizes[nctype]; - return 0; -} - -int -hasunlimited(Dimset* dimset) -{ - int i; - for(i=0;indims;i++) { - Symbol* dim = dimset->dimsyms[i]; - if(dim->dim.declsize == NC_UNLIMITED) return 1; - } - return 0; -} - -/* return 1 if first dimension is unlimited*/ -int -isunlimited0(Dimset* dimset) -{ - return (dimset->ndims > 0 && dimset->dimsyms[0]->dim.declsize == NC_UNLIMITED); -} - - -/* True only if dim[0] is unlimited all rest are bounded*/ -/* or all are bounded*/ -int -classicunlimited(Dimset* dimset) -{ - int i; - int last = -1; - for(i=0;indims;i++) { - Symbol* dim = dimset->dimsyms[i]; - if(dim->dim.declsize == NC_UNLIMITED) last = i; - } - return (last < 1); -} - -/* True only iff no dimension is unlimited*/ -int -isbounded(Dimset* dimset) -{ - int i; - for(i=0;indims;i++) { - Symbol* dim = dimset->dimsyms[i]; - if(dim->dim.declsize == NC_UNLIMITED) return 0; - } - return 1; -} - -int -signedtype(nc_type nctype) -{ - switch (nctype) { - case NC_BYTE: - case NC_SHORT: - case NC_INT: - case NC_INT64: - return nctype; - case NC_UBYTE: return NC_BYTE; - case NC_USHORT: return NC_SHORT; - case NC_UINT: return NC_INT; - case NC_UINT64: return NC_INT64; - default: break; - } - return nctype; -} - -int -unsignedtype(nc_type nctype) -{ - switch (nctype) { - case NC_UBYTE: - case NC_USHORT: - case NC_UINT: - case NC_UINT64: - return nctype; - case NC_BYTE: return NC_UBYTE; - case NC_SHORT: return NC_USHORT; - case NC_INT: return NC_UINT; - case NC_INT64: return NC_UINT64; - default: break; - } - return nctype; -} - -int -isinttype(nc_type nctype) -{ - return (nctype != NC_CHAR) - && ((nctype >= NC_BYTE && nctype <= NC_INT) - || (nctype >= NC_UBYTE && nctype <= NC_UINT64)); -} - -int -isuinttype(nc_type t) -{ - return isinttype(t) - && t >= NC_UBYTE - && t <= NC_UINT64 - && t != NC_INT64; -} - -int -isfloattype(nc_type nctype) -{ - return (nctype == NC_FLOAT || nctype <= NC_DOUBLE); -} - -int -isclassicprim(nc_type nctype) -{ - return (nctype >= NC_BYTE && nctype <= NC_DOUBLE) - ; -} - -int -isclassicprimplus(nc_type nctype) -{ - return (nctype >= NC_BYTE && nctype <= NC_DOUBLE) - || (nctype == NC_STRING) - ; -} - -int -isprim(nc_type nctype) -{ - return (nctype >= NC_BYTE && nctype <= NC_STRING) - ; -} - -int -isprimplus(nc_type nctype) -{ - return (nctype >= NC_BYTE && nctype <= NC_STRING) - || (nctype == NC_ECONST) - || (nctype == NC_OPAQUE) - ; -} - -void -collectpath(Symbol* grp, List* grpstack) -{ - while(grp != NULL) { - listpush(grpstack,(void*)grp); - grp = grp->container; - } -} - - -#ifdef USE_NETCDF4 -/* Result is pool'd*/ -char* -prefixtostring(List* prefix, char* separator) -{ - int slen=0; - int plen; - int i; - char* result; - if(prefix == NULL) return pooldup(""); - plen = prefixlen(prefix); - if(plen == 0) { /* root prefix*/ - slen=0; - /* slen += strlen(separator);*/ - slen++; /* for null terminator*/ - result = poolalloc(slen); - result[0] = '\0'; - /*strcat(result,separator);*/ - } else { - for(i=0;iname)); - } - slen++; /* for null terminator*/ - result = poolalloc(slen); - result[0] = '\0'; - for(i=0;iname); /* append "/"*/ - } - } - return result; -} -#endif - -/* Result is pool'd*/ -char* -fullname(Symbol* sym) -{ -#ifdef USE_NETCDF4 - char* s1; - char* result; - char* prefix; - prefix = prefixtostring(sym->prefix,PATHSEPARATOR); - s1 = poolcat(prefix,PATHSEPARATOR); - result = poolcat(s1,sym->name); - return result; -#else - return nulldup(sym->name); -#endif -} - -int -prefixeq(List* x1, List* x2) -{ - Symbol** l1; - Symbol** l2; - int len,i; - if((len=listlength(x1)) != listlength(x2)) return 0; - l1=(Symbol**)listcontents(x1); - l2=(Symbol**)listcontents(x2); - for(i=0;iname,l2[i]->name) != 0) return 0; - } - return 1; -} - -List* -prefixdup(List* prefix) -{ - List* dupseq; - int i; - if(prefix == NULL) return listnew(); - dupseq = listnew(); - listsetalloc(dupseq,listlength(prefix)); - for(i=0;i 0); - bytes = (unsigned char*)emalloc(blen); - b = bytes; - for(i=0;inext; - freeSymbol(sym); - sym = next; - } -} - -static void -constantFree(NCConstant* con) -{ - switch(con->nctype) { - case NC_COMPOUND: - /* do nothing; ReclaimDatalists below will take care of the datalist */ - break; - case NC_STRING: - if(con->value.stringv.len > 0 && con->value.stringv.stringv != NULL) - efree(con->value.stringv.stringv); - break; - case NC_OPAQUE: - if(con->value.opaquev.len > 0 && con->value.opaquev.stringv != NULL) - efree(con->value.opaquev.stringv); - break; - default: - break; - } -} - -static void -reclaimDatalists(void) -{ - Datalist* list; - NCConstant* con; - /* Step 1: free up the constant content of each datalist*/ - for(list=alldatalists;list != NULL; list = list->next) { - if(list->data != NULL) { /* avoid multiple free attempts*/ - int i; - for(i=0,con=list->data;ilength;i++,con++) - constantFree(con); - list->data = NULL; - } - } - /* Step 2: free up the datalist itself*/ - for(list=alldatalists;list != NULL;) { - Datalist* current = list; - list = list->next; - efree(current); - } -} - -void -cleanup() -{ - reclaimDatalists(); - reclaimSymbols(); -} - - - - - -/* compute the total n-dimensional size as 1 long array; - if stop == 0, then stop = dimset->ndims. -*/ -size_t -crossproduct(Dimset* dimset, int start, int stop) -{ - size_t totalsize = 1; - int i; - for(i=start;idimsyms[i]->dim.declsize; - } - return totalsize; -} - -/* Do the "complement" of crossproduct; - compute the total n-dimensional size of an array - starting at 0 thru the 'last' array index. - stop if we encounter an unlimited dimension -*/ -size_t -prefixarraylength(Dimset* dimset, int last) -{ - return crossproduct(dimset,0,last+1); -} - - - -#ifdef USE_NETCDF4 -extern int H5Eprint1(FILE * stream); -#endif - -void -check_err(const int stat, const int line, const char* file) -{ - check_err2(stat,-1,line,file); -} - -void check_err2(const int stat, const int cdlline, const int line, const char* file) { - if (stat != NC_NOERR) { - if(cdlline >= 0) - fprintf(stderr, "ncgen: cdl line %d; %s\n", cdlline, nc_strerror(stat)); - else - fprintf(stderr, "ncgen: %s\n", nc_strerror(stat)); - fprintf(stderr, "\t(%s:%d)\n", file,line); -#ifdef USE_NETCDF4 - H5Eprint1(stderr); -#endif - fflush(stderr); - exit(1); - } -} - -/** -Find the index of the first unlimited -dimension at or after 'start'. -If no unlimited exists, return |dimset| -*/ -int -findunlimited(Dimset* dimset, int start) -{ - for(;startndims;start++) { - if(dimset->dimsyms[start]->dim.isunlimited) - return start; - } - return dimset->ndims; -} - -/** -Find the index of the last unlimited -dimension. -If no unlimited exists, return |dimset| -*/ -int -findlastunlimited(Dimset* dimset) -{ - int i; - for(i=dimset->ndims-1;i>=0;i--) { - if(dimset->dimsyms[i]->dim.isunlimited) - return i; - } - return dimset->ndims; -} - -/** -Count the number of unlimited dimensions. -*/ -int -countunlimited(Dimset* dimset) -{ - int i, count; - for(count=0,i=dimset->ndims-1;i>=0;i--) { - if(dimset->dimsyms[i]->dim.isunlimited) - count++; - } - return count; -} - -/* Return standard format string */ -const char * -kind_string(int kind) -{ - switch (kind) { - case 1: return "classic"; - case 2: return "64-bit offset"; - case 3: return "netCDF-4"; - case 4: return "netCDF-4 classic model"; - default: - derror("Unknown format index: %d\n",kind); - } - return NULL; -} - -#ifdef USE_NETCDF4i -nt -getrootid(int grpid) -{ - int current = grpid; - int parent = current; - /* see if root id */ - for(;;) { - int stat = nc_inq_grp_parent(current,&parent); - if(stat) break; - current = parent; - } - return current; -} -#endif diff --git a/contrib/netcdf/4.4.1.1/ncgen3/Makefile.am b/contrib/netcdf/4.4.1.1/ncgen3/Makefile.am deleted file mode 100644 index 27950e87375..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -# This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncgen program. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -# Link to the netCDF library. -ncgen3_LDADD = ${top_builddir}/liblib/libnetcdf.la - -# Build ncgen from the listed sources. -bin_PROGRAMS = ncgen3 -ncgen3_SOURCES = main.c load.c escapes.c getfill.c init.c \ -genlib.c generic.h ncgen.h genlib.h ncgentab.h ncgentab.c - -man_MANS = ncgen3.1 - -# These files all need to be distributed. -EXTRA_DIST = ncgen.y ncgenyy.c ncgen.l c0.cdl run_tests.sh \ -run_nc4_tests.sh XGetopt.c $(man_MANS) - -# There is a netcdf classic and netcdf-4 test script, but don't run -# them for DLL builds. -#if !BUILD_DLL -TESTS = run_tests.sh -if USE_NETCDF4 -TESTS += run_nc4_tests.sh -endif # USE_NETCDF4 -#endif # !BUILD_DLL - -CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc - -EXTRA_DIST += CMakeLists.txt XGetopt.c - -# This is used if someone wants to rebuild ncgenyy.c or ncgentab.c -# Otherwise never invoked, but records how to do it. Don't forget to -# manually insert #include "config.h" in ncgenyy.c! -makeparser:: - flex -Pncg -8 ncgen.l - mv lex.ncg.c ncgenyy.c - bison -pncg -d ncgen.y - mv ncgen.tab.c ncgentab.c - mv ncgen.tab.h ncgentab.h diff --git a/contrib/netcdf/4.4.1.1/ncgen3/Makefile.in b/contrib/netcdf/4.4.1.1/ncgen3/Makefile.in deleted file mode 100644 index b79920a67ab..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/Makefile.in +++ /dev/null @@ -1,960 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. -# This file builds and runs the ncgen program. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -bin_PROGRAMS = ncgen3$(EXEEXT) -@USE_NETCDF4_TRUE@am__append_3 = run_nc4_tests.sh -subdir = ncgen3 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" -PROGRAMS = $(bin_PROGRAMS) -am_ncgen3_OBJECTS = main.$(OBJEXT) load.$(OBJEXT) escapes.$(OBJEXT) \ - getfill.$(OBJEXT) init.$(OBJEXT) genlib.$(OBJEXT) \ - ncgentab.$(OBJEXT) -ncgen3_OBJECTS = $(am_ncgen3_OBJECTS) -ncgen3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/escapes.Po ./$(DEPDIR)/genlib.Po \ - ./$(DEPDIR)/getfill.Po ./$(DEPDIR)/init.Po ./$(DEPDIR)/load.Po \ - ./$(DEPDIR)/main.Po ./$(DEPDIR)/ncgentab.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(ncgen3_SOURCES) -DIST_SOURCES = $(ncgen3_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. - -# Link to the netCDF library. -ncgen3_LDADD = ${top_builddir}/liblib/libnetcdf.la -ncgen3_SOURCES = main.c load.c escapes.c getfill.c init.c \ -genlib.c generic.h ncgen.h genlib.h ncgentab.h ncgentab.c - -man_MANS = ncgen3.1 - -# These files all need to be distributed. -EXTRA_DIST = ncgen.y ncgenyy.c ncgen.l c0.cdl run_tests.sh \ - run_nc4_tests.sh XGetopt.c $(man_MANS) CMakeLists.txt \ - XGetopt.c - -# There is a netcdf classic and netcdf-4 test script, but don't run -# them for DLL builds. -#if !BUILD_DLL -TESTS = run_tests.sh $(am__append_3) -#endif # !BUILD_DLL -CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 ncgen3/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign ncgen3/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -ncgen3$(EXEEXT): $(ncgen3_OBJECTS) $(ncgen3_DEPENDENCIES) $(EXTRA_ncgen3_DEPENDENCIES) - @rm -f ncgen3$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ncgen3_OBJECTS) $(ncgen3_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/escapes.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genlib.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfill.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncgentab.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) $(MANS) -installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/escapes.Po - -rm -f ./$(DEPDIR)/genlib.Po - -rm -f ./$(DEPDIR)/getfill.Po - -rm -f ./$(DEPDIR)/init.Po - -rm -f ./$(DEPDIR)/load.Po - -rm -f ./$(DEPDIR)/main.Po - -rm -f ./$(DEPDIR)/ncgentab.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 - -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 ./$(DEPDIR)/escapes.Po - -rm -f ./$(DEPDIR)/genlib.Po - -rm -f ./$(DEPDIR)/getfill.Po - -rm -f ./$(DEPDIR)/init.Po - -rm -f ./$(DEPDIR)/load.Po - -rm -f ./$(DEPDIR)/main.Po - -rm -f ./$(DEPDIR)/ncgentab.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-binPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-man1 install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-man \ - uninstall-man1 - -.PRECIOUS: Makefile - - -# This is used if someone wants to rebuild ncgenyy.c or ncgentab.c -# Otherwise never invoked, but records how to do it. Don't forget to -# manually insert #include "config.h" in ncgenyy.c! -makeparser:: - flex -Pncg -8 ncgen.l - mv lex.ncg.c ncgenyy.c - bison -pncg -d ncgen.y - mv ncgen.tab.c ncgentab.c - mv ncgen.tab.h ncgentab.h - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/ncgen3/genlib.c b/contrib/netcdf/4.4.1.1/ncgen3/genlib.c deleted file mode 100644 index 177e45c6057..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/genlib.c +++ /dev/null @@ -1,2072 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen3/genlib.c,v 1.54 2009/11/14 22:33:31 dmh Exp $ - *********************************************************************/ - -#include "config.h" -#include -#include -#include -#include -#include /* for isprint() */ -#ifndef NO_STDARG -#include -#else -/* try varargs instead */ -#include -#endif /* !NO_STDARG */ -#include -#include "generic.h" -#include "ncgen.h" -#include "genlib.h" - -extern char *netcdf_name; /* output netCDF filename, if on command line. */ -extern int netcdf_flag; -extern int c_flag; -extern int fortran_flag; -extern int cmode_modifier; -extern int nofill_flag; - -int lineno = 1; -int derror_count = 0; - - -/* create netCDF from in-memory structure */ -static void -gen_netcdf( - char *filename) /* name for output netcdf file */ -{ - int idim, ivar, iatt; - int dimid; - int varid; - int stat; - - stat = nc_create(filename, cmode_modifier, &ncid); - check_err(stat); - - /* define dimensions from info in dims array */ - for (idim = 0; idim < ndims; idim++) { - stat = nc_def_dim(ncid, dims[idim].name, dims[idim].size, &dimid); - check_err(stat); - } - - /* define variables from info in vars array */ - for (ivar = 0; ivar < nvars; ivar++) { - stat = nc_def_var(ncid, - vars[ivar].name, - vars[ivar].type, - vars[ivar].ndims, - vars[ivar].dims, - &varid); - check_err(stat); - } - - /* define attributes from info in atts array */ - for (iatt = 0; iatt < natts; iatt++) { - varid = (atts[iatt].var == -1) ? NC_GLOBAL : atts[iatt].var; - switch(atts[iatt].type) { - case NC_BYTE: - stat = nc_put_att_schar(ncid, varid, atts[iatt].name, - atts[iatt].type, atts[iatt].len, - (signed char *) atts[iatt].val); - break; - case NC_CHAR: - stat = nc_put_att_text(ncid, varid, atts[iatt].name, - atts[iatt].len, - (char *) atts[iatt].val); - break; - case NC_SHORT: - stat = nc_put_att_short(ncid, varid, atts[iatt].name, - atts[iatt].type, atts[iatt].len, - (short *) atts[iatt].val); - break; - case NC_INT: - stat = nc_put_att_int(ncid, varid, atts[iatt].name, - atts[iatt].type, atts[iatt].len, - (int *) atts[iatt].val); - break; - case NC_FLOAT: - stat = nc_put_att_float(ncid, varid, atts[iatt].name, - atts[iatt].type, atts[iatt].len, - (float *) atts[iatt].val); - break; - case NC_DOUBLE: - stat = nc_put_att_double(ncid, varid, atts[iatt].name, - atts[iatt].type, atts[iatt].len, - (double *) atts[iatt].val); - break; - default: - stat = NC_EBADTYPE; - } - check_err(stat); - } - - if (nofill_flag) { - stat = nc_set_fill(ncid, NC_NOFILL, 0); /* don't initialize with fill values */ - check_err(stat); - } - - stat = nc_enddef(ncid); - check_err(stat); -} - - -/* - * Given a netcdf type, a pointer to a vector of values of that type, - * and the index of the vector element desired, returns a pointer to a - * malloced string representing the value in C. - */ -static char * -cstring( - nc_type type, /* netCDF type code */ - void *valp, /* pointer to vector of values */ - int num) /* element of vector desired */ -{ - static char *cp, *sp, ch; - signed char *bytep; - short *shortp; - int *intp; - float *floatp; - double *doublep; - - switch (type) { - case NC_CHAR: - sp = cp = (char *) emalloc (7); - *cp++ = '\''; - ch = *((char *)valp + num); - switch (ch) { - case '\b': *cp++ = '\\'; *cp++ = 'b'; break; - case '\f': *cp++ = '\\'; *cp++ = 'f'; break; - case '\n': *cp++ = '\\'; *cp++ = 'n'; break; - case '\r': *cp++ = '\\'; *cp++ = 'r'; break; - case '\t': *cp++ = '\\'; *cp++ = 't'; break; - case '\v': *cp++ = '\\'; *cp++ = 'v'; break; - case '\\': *cp++ = '\\'; *cp++ = '\\'; break; - case '\'': *cp++ = '\\'; *cp++ = '\''; break; - default: - if (!isprint((unsigned char)ch)) { - static char octs[] = "01234567"; - int rem = ((unsigned char)ch)%64; - *cp++ = '\\'; - *cp++ = octs[((unsigned char)ch)/64]; /* to get, e.g. '\177' */ - *cp++ = octs[rem/8]; - *cp++ = octs[rem%8]; - } else { - *cp++ = ch; - } - break; - } - *cp++ = '\''; - *cp = '\0'; - return sp; - - case NC_BYTE: - cp = (char *) emalloc (7); - bytep = (signed char *)valp; - /* Need to convert '\377' to -1, for example, on all platforms */ - (void) sprintf(cp,"%d", (signed char) *(bytep+num)); - return cp; - - case NC_SHORT: - cp = (char *) emalloc (10); - shortp = (short *)valp; - (void) sprintf(cp,"%d",* (shortp + num)); - return cp; - - case NC_INT: - cp = (char *) emalloc (20); - intp = (int *)valp; - (void) sprintf(cp,"%d",* (intp + num)); - return cp; - - case NC_FLOAT: - cp = (char *) emalloc (20); - floatp = (float *)valp; - (void) sprintf(cp,"%.8g",* (floatp + num)); - return cp; - - case NC_DOUBLE: - cp = (char *) emalloc (20); - doublep = (double *)valp; - (void) sprintf(cp,"%.16g",* (doublep + num)); - return cp; - - default: - derror("cstring: bad type code"); - return 0; - } -} - - -/* - * Generate C code for creating netCDF from in-memory structure. - */ -static void -gen_c( - const char *filename) -{ - int idim, ivar, iatt, jatt, maxdims; - int vector_atts; - char *val_string; - char stmnt[C_MAX_STMNT]; - - /* wrap in main program */ - cline("#include "); - cline("#include "); - cline("#include "); - cline(""); - cline("void"); - cline("check_err(const int stat, const int line, const char *file) {"); - cline(" if (stat != NC_NOERR) {"); - cline(" (void) fprintf(stderr, \"line %d of %s: %s\\n\", line, file, nc_strerror(stat));"); - cline(" exit(1);"); - cline(" }"); - cline("}"); - cline(""); - cline("int"); - sprintf(stmnt, "main() {\t\t\t/* create %s */", filename); - cline(stmnt); - - /* create necessary declarations */ - cline(""); - cline(" int stat;\t\t\t/* return status */"); - cline(" int ncid;\t\t\t/* netCDF id */"); - - if (ndims > 0) { - cline(""); - cline(" /* dimension ids */"); - for (idim = 0; idim < ndims; idim++) { - sprintf(stmnt, " int %s_dim;", dims[idim].lname); - cline(stmnt); - } - - cline(""); - cline(" /* dimension lengths */"); - for (idim = 0; idim < ndims; idim++) { - if (dims[idim].size == NC_UNLIMITED) { - sprintf(stmnt, " size_t %s_len = NC_UNLIMITED;", - dims[idim].lname); - } else { - sprintf(stmnt, " size_t %s_len = %lu;", - dims[idim].lname, - (unsigned long) dims[idim].size); - } - cline(stmnt); - } - } - - maxdims = 0; /* most dimensions of any variable */ - for (ivar = 0; ivar < nvars; ivar++) - if (vars[ivar].ndims > maxdims) - maxdims = vars[ivar].ndims; - - if (nvars > 0) { - cline(""); - cline(" /* variable ids */"); - for (ivar = 0; ivar < nvars; ivar++) { - sprintf(stmnt, " int %s_id;", vars[ivar].lname); - cline(stmnt); - } - - cline(""); - cline(" /* rank (number of dimensions) for each variable */"); - for (ivar = 0; ivar < nvars; ivar++) { - sprintf(stmnt, "# define RANK_%s %d", vars[ivar].lname, - vars[ivar].ndims); - cline(stmnt); - } - if (maxdims > 0) { /* we have dimensioned variables */ - cline(""); - cline(" /* variable shapes */"); - for (ivar = 0; ivar < nvars; ivar++) { - if (vars[ivar].ndims > 0) { - sprintf(stmnt, " int %s_dims[RANK_%s];", - vars[ivar].lname, vars[ivar].lname); - cline(stmnt); - } - } - } - } - - /* determine if we need any attribute vectors */ - vector_atts = 0; - for (iatt = 0; iatt < natts; iatt++) { - if (atts[iatt].type != NC_CHAR) { - vector_atts = 1; - break; - } - } - if (vector_atts) { - cline(""); - cline(" /* attribute vectors */"); - for (iatt = 0; iatt < natts; iatt++) { - if (atts[iatt].type != NC_CHAR) { - sprintf(stmnt, - " %s %s_%s[%lu];", - ncatype(atts[iatt].type), - atts[iatt].var == -1 ? "cdf" : vars[atts[iatt].var].lname, - atts[iatt].lname, - (unsigned long) atts[iatt].len); - cline(stmnt); - } - } - } - - /* create netCDF file, uses NC_CLOBBER mode */ - cline(""); - cline(" /* enter define mode */"); - - if (!cmode_modifier) { - sprintf(stmnt, - " stat = nc_create(\"%s\", NC_CLOBBER, &ncid);", - filename); - } else if (cmode_modifier & NC_64BIT_OFFSET) { - sprintf(stmnt, - " stat = nc_create(\"%s\", NC_CLOBBER|NC_64BIT_OFFSET, &ncid);", - filename); -#ifdef USE_NETCDF4 - } else if (cmode_modifier & NC_CLASSIC_MODEL) { - sprintf(stmnt, - " stat = nc_create(\"%s\", NC_CLOBBER|NC_NETCDF4|NC_CLASSIC_MODEL, &ncid);", - filename); - } else if (cmode_modifier & NC_NETCDF4) { - sprintf(stmnt, - " stat = nc_create(\"%s\", NC_CLOBBER|NC_NETCDF4, &ncid);", - filename); -#endif - } else { - derror("unknown cmode modifier"); - } - cline(stmnt); - cline(" check_err(stat,__LINE__,__FILE__);"); - - /* define dimensions from info in dims array */ - if (ndims > 0) { - cline(""); - cline(" /* define dimensions */"); - } - for (idim = 0; idim < ndims; idim++) { - sprintf(stmnt, - " stat = nc_def_dim(ncid, \"%s\", %s_len, &%s_dim);", - dims[idim].name, dims[idim].lname, dims[idim].lname); - cline(stmnt); - cline(" check_err(stat,__LINE__,__FILE__);"); - } - - /* define variables from info in vars array */ - if (nvars > 0) { - cline(""); - cline(" /* define variables */"); - for (ivar = 0; ivar < nvars; ivar++) { - cline(""); - for (idim = 0; idim < vars[ivar].ndims; idim++) { - sprintf(stmnt, - " %s_dims[%d] = %s_dim;", - vars[ivar].lname, - idim, - dims[vars[ivar].dims[idim]].lname); - cline(stmnt); - } - if (vars[ivar].ndims > 0) { /* a dimensioned variable */ - sprintf(stmnt, - " stat = nc_def_var(ncid, \"%s\", %s, RANK_%s, %s_dims, &%s_id);", - vars[ivar].name, - nctype(vars[ivar].type), - vars[ivar].lname, - vars[ivar].lname, - vars[ivar].lname); - } else { /* a scalar */ - sprintf(stmnt, - " stat = nc_def_var(ncid, \"%s\", %s, RANK_%s, 0, &%s_id);", - vars[ivar].name, - nctype(vars[ivar].type), - vars[ivar].lname, - vars[ivar].lname); - } - cline(stmnt); - cline(" check_err(stat,__LINE__,__FILE__);"); - } - } - - /* define attributes from info in atts array */ - if (natts > 0) { - cline(""); - cline(" /* assign attributes */"); - for (iatt = 0; iatt < natts; iatt++) { - if (atts[iatt].type == NC_CHAR) { /* string */ - val_string = cstrstr((char *) atts[iatt].val, atts[iatt].len); - sprintf(stmnt, - " stat = nc_put_att_text(ncid, %s%s, \"%s\", %lu, %s);", - atts[iatt].var == -1 ? "NC_GLOBAL" : vars[atts[iatt].var].lname, - atts[iatt].var == -1 ? "" : "_id", - atts[iatt].name, - (unsigned long) atts[iatt].len, - val_string); - cline(stmnt); - free (val_string); - } - else { /* vector attribute */ - for (jatt = 0; jatt < atts[iatt].len ; jatt++) { - val_string = cstring(atts[iatt].type,atts[iatt].val,jatt); - sprintf(stmnt, " %s_%s[%d] = %s;", - atts[iatt].var == -1 ? "cdf" : vars[atts[iatt].var].lname, - atts[iatt].lname, - jatt, - val_string); - cline(stmnt); - free (val_string); - } - - sprintf(stmnt, - " stat = nc_put_att_%s(ncid, %s%s, \"%s\", %s, %lu, %s_%s);", - ncatype(atts[iatt].type), - atts[iatt].var == -1 ? "NC_GLOBAL" : vars[atts[iatt].var].lname, - atts[iatt].var == -1 ? "" : "_id", - atts[iatt].name, - nctype(atts[iatt].type), - (unsigned long) atts[iatt].len, - atts[iatt].var == -1 ? "cdf" : vars[atts[iatt].var].lname, - atts[iatt].lname); - cline(stmnt); - } - cline(" check_err(stat,__LINE__,__FILE__);"); - } - } - - if (nofill_flag) { - cline(" /* don't initialize variables with fill values */"); - cline(" stat = nc_set_fill(ncid, NC_NOFILL, 0);"); - cline(" check_err(stat,__LINE__,__FILE__);"); - } - - cline(""); - cline(" /* leave define mode */"); - cline(" stat = nc_enddef (ncid);"); - cline(" check_err(stat,__LINE__,__FILE__);"); -} - - -/* return Fortran type name for netCDF type, given type code */ -static const char * -ncftype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - - case NC_BYTE: - return "integer"; - case NC_CHAR: - return "character"; - case NC_SHORT: - return "integer"; - case NC_INT: -#ifdef MSDOS - return "integer*4"; -#else - return "integer"; -#endif - case NC_FLOAT: - return "real"; -#if defined(_CRAY) && !defined(__crayx1) - case NC_DOUBLE: - return "real"; /* we don't support CRAY 128-bit doubles */ -#else - case NC_DOUBLE: - return "double precision"; -#endif - default: - derror("ncftype: bad type code"); - return 0; - - } -} - - -/* return Fortran type suffix for netCDF type, given type code */ -const char * -nfstype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "int1"; - case NC_CHAR: - return "text"; - case NC_SHORT: - return "int2"; - case NC_INT: - return "int"; - case NC_FLOAT: - return "real"; - case NC_DOUBLE: - return "double"; - default: - derror("nfstype: bad type code"); - return 0; - - } -} - - -/* Return Fortran function suffix for netCDF type, given type code. - * This should correspond to the Fortran type name in ncftype(). - */ -const char * -nfftype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "int"; - case NC_CHAR: - return "text"; - case NC_SHORT: - return "int"; - case NC_INT: - return "int"; - case NC_FLOAT: - return "real"; -#if defined(_CRAY) && !defined(__crayx1) - case NC_DOUBLE: - return "real"; /* we don't support CRAY 128-bit doubles */ -#else - case NC_DOUBLE: - return "double"; -#endif - default: - derror("nfstype: bad type code"); - return 0; - - } -} - - -/* return FORTRAN name for netCDF type, given type code */ -static const char * -ftypename( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "NF_INT1"; - case NC_CHAR: - return "NF_CHAR"; - case NC_SHORT: - return "NF_INT2"; - case NC_INT: - return "NF_INT"; - case NC_FLOAT: - return "NF_REAL"; - case NC_DOUBLE: - return "NF_DOUBLE"; - default: - derror("ftypename: bad type code"); - return 0; - } -} - - -/* - * Generate FORTRAN code for creating netCDF from in-memory structure. - */ -static void -gen_fortran( - const char *filename) -{ - int idim, ivar, iatt, jatt, itype, maxdims; - int vector_atts; - char *val_string; - char stmnt[FORT_MAX_STMNT]; - char s2[NC_MAX_NAME + 10]; - char *sp; - /* Need how many netCDF types there are, because we create an array - * for each type of attribute. */ - int ntypes = 6; /* number of netCDF types, NC_BYTE, ... */ - nc_type types[6]; /* at least ntypes */ - size_t max_atts[NC_DOUBLE + 1]; - - types[0] = NC_BYTE; - types[1] = NC_CHAR; - types[2] = NC_SHORT; - types[3] = NC_INT; - types[4] = NC_FLOAT; - types[5] = NC_DOUBLE; - - fline("program fgennc"); - - fline("include 'netcdf.inc'"); - - /* create necessary declarations */ - fline("* error status return"); - fline("integer iret"); - fline("* netCDF id"); - fline("integer ncid"); - if (nofill_flag) { - fline("* to save old fill mode before changing it temporarily"); - fline("integer oldmode"); - } - - if (ndims > 0) { - fline("* dimension ids"); - for (idim = 0; idim < ndims; idim++) { - sprintf(stmnt, "integer %s_dim", dims[idim].lname); - fline(stmnt); - } - - fline("* dimension lengths"); - for (idim = 0; idim < ndims; idim++) { - sprintf(stmnt, "integer %s_len", dims[idim].lname); - fline(stmnt); - } - for (idim = 0; idim < ndims; idim++) { - if (dims[idim].size == NC_UNLIMITED) { - sprintf(stmnt, "parameter (%s_len = NF_UNLIMITED)", - dims[idim].lname); - } else { - sprintf(stmnt, "parameter (%s_len = %lu)", - dims[idim].lname, - (unsigned long) dims[idim].size); - } - fline(stmnt); - } - - } - - maxdims = 0; /* most dimensions of any variable */ - for (ivar = 0; ivar < nvars; ivar++) - if (vars[ivar].ndims > maxdims) - maxdims = vars[ivar].ndims; - - if (nvars > 0) { - fline("* variable ids"); - for (ivar = 0; ivar < nvars; ivar++) { - sprintf(stmnt, "integer %s_id", vars[ivar].lname); - fline(stmnt); - } - - fline("* rank (number of dimensions) for each variable"); - for (ivar = 0; ivar < nvars; ivar++) { - sprintf(stmnt, "integer %s_rank", vars[ivar].lname); - fline(stmnt); - } - for (ivar = 0; ivar < nvars; ivar++) { - sprintf(stmnt, "parameter (%s_rank = %d)", vars[ivar].lname, - vars[ivar].ndims); - fline(stmnt); - } - - fline("* variable shapes"); - for (ivar = 0; ivar < nvars; ivar++) { - if (vars[ivar].ndims > 0) { - sprintf(stmnt, "integer %s_dims(%s_rank)", - vars[ivar].lname, vars[ivar].lname); - fline(stmnt); - } - } - } - - /* declarations for variables to be initialized */ - if (nvars > 0) { /* we have variables */ - fline("* data variables"); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - /* Generate declarations here for non-record data variables only. - Record variables are declared in separate subroutine later, - when we know how big they are. */ - if (v->ndims > 0 && v->dims[0] == rec_dim) { - continue; - } - /* Make declarations for non-text variables only; - for text variables, just include string in nf_put_var call */ - if (v->type == NC_CHAR) { - continue; - } - if (v->ndims == 0) { /* scalar */ - sprintf(stmnt, "%s %s", ncftype(v->type), - v->lname); - } else { - sprintf(stmnt, "%s %s(", ncftype(v->type), - v->lname); - /* reverse dimensions for FORTRAN */ - for (idim = v->ndims-1; idim >= 0; idim--) { - sprintf(s2, "%s_len, ", - dims[v->dims[idim]].lname); - strcat(stmnt, s2); - } - sp = strrchr(stmnt, ','); - if(sp != NULL) { - *sp = '\0'; - } - strcat(stmnt, ")"); - } - fline(stmnt); - } - } - - /* determine what attribute vectors needed */ - for (itype = 0; itype < ntypes; itype++) - max_atts[(int)types[itype]] = 0; - - vector_atts = 0; - for (iatt = 0; iatt < natts; iatt++) { - if (atts[iatt].len > max_atts[(int) atts[iatt].type]) { - max_atts[(int)atts[iatt].type] = atts[iatt].len; - vector_atts = 1; - } - } - if (vector_atts) { - fline("* attribute vectors"); - for (itype = 0; itype < ntypes; itype++) { - if (types[itype] != NC_CHAR && max_atts[(int)types[itype]] > 0) { - sprintf(stmnt, "%s %sval(%lu)", ncftype(types[itype]), - nfstype(types[itype]), - (unsigned long) max_atts[(int)types[itype]]); - fline(stmnt); - } - } - } - - /* create netCDF file, uses NC_CLOBBER mode */ - fline("* enter define mode"); - if (!cmode_modifier) { - sprintf(stmnt, "iret = nf_create(\'%s\', NF_CLOBBER, ncid)", filename); - } else if (cmode_modifier & NC_64BIT_OFFSET) { - sprintf(stmnt, "iret = nf_create(\'%s\', OR(NF_CLOBBER,NF_64BIT_OFFSET), ncid)", filename); -#ifdef USE_NETCDF4 - } else if (cmode_modifier & NC_CLASSIC_MODEL) { - sprintf(stmnt, "iret = nf_create(\'%s\', OR(NF_CLOBBER,NC_NETCDF4,NC_CLASSIC_MODEL), ncid)", filename); - } else if (cmode_modifier & NC_NETCDF4) { - sprintf(stmnt, "iret = nf_create(\'%s\', OR(NF_CLOBBER,NF_NETCDF4), ncid)", filename); -#endif - } else { - derror("unknown cmode modifier"); - } - fline(stmnt); - fline("call check_err(iret)"); - - /* define dimensions from info in dims array */ - if (ndims > 0) - fline("* define dimensions"); - for (idim = 0; idim < ndims; idim++) { - if (dims[idim].size == NC_UNLIMITED) - sprintf(stmnt, "iret = nf_def_dim(ncid, \'%s\', NF_UNLIMITED, %s_dim)", - dims[idim].name, dims[idim].lname); - else - sprintf(stmnt, "iret = nf_def_dim(ncid, \'%s\', %lu, %s_dim)", - dims[idim].name, (unsigned long) dims[idim].size, - dims[idim].lname); - fline(stmnt); - fline("call check_err(iret)"); - } - - /* define variables from info in vars array */ - if (nvars > 0) { - fline("* define variables"); - for (ivar = 0; ivar < nvars; ivar++) { - for (idim = 0; idim < vars[ivar].ndims; idim++) { - sprintf(stmnt, "%s_dims(%d) = %s_dim", - vars[ivar].lname, - vars[ivar].ndims - idim, /* reverse dimensions */ - dims[vars[ivar].dims[idim]].lname); - fline(stmnt); - } - if (vars[ivar].ndims > 0) { /* a dimensioned variable */ - sprintf(stmnt, - "iret = nf_def_var(ncid, \'%s\', %s, %s_rank, %s_dims, %s_id)", - vars[ivar].name, - ftypename(vars[ivar].type), - vars[ivar].lname, - vars[ivar].lname, - vars[ivar].lname); - } else { /* a scalar */ - sprintf(stmnt, - "iret = nf_def_var(ncid, \'%s\', %s, %s_rank, 0, %s_id)", - vars[ivar].name, - ftypename(vars[ivar].type), - vars[ivar].lname, - vars[ivar].lname); - } - fline(stmnt); - fline("call check_err(iret)"); - } - } - - /* define attributes from info in atts array */ - if (natts > 0) { - fline("* assign attributes"); - for (iatt = 0; iatt < natts; iatt++) { - if (atts[iatt].type == NC_CHAR) { /* string */ - val_string = fstrstr((char *) atts[iatt].val, atts[iatt].len); - sprintf(stmnt, - "iret = nf_put_att_text(ncid, %s%s, \'%s\', %lu, %s)", - atts[iatt].var == -1 ? "NF_GLOBAL" : vars[atts[iatt].var].lname, - atts[iatt].var == -1 ? "" : "_id", - atts[iatt].name, - (unsigned long) atts[iatt].len, - val_string); - fline(stmnt); - fline("call check_err(iret)"); - free(val_string); - } else { - for (jatt = 0; jatt < atts[iatt].len ; jatt++) { - val_string = fstring(atts[iatt].type,atts[iatt].val,jatt); - sprintf(stmnt, "%sval(%d) = %s", - nfstype(atts[iatt].type), - jatt+1, - val_string); - fline(stmnt); - free (val_string); - } - - sprintf(stmnt, - "iret = nf_put_att_%s(ncid, %s%s, \'%s\', %s, %lu, %sval)", - nfftype(atts[iatt].type), - atts[iatt].var == -1 ? "NCGLOBAL" : vars[atts[iatt].var].lname, - atts[iatt].var == -1 ? "" : "_id", - atts[iatt].name, - ftypename(atts[iatt].type), - (unsigned long) atts[iatt].len, - nfstype(atts[iatt].type)); - fline(stmnt); - fline("call check_err(iret)"); - } - } - } - - if (nofill_flag) { - fline("* don't initialize variables with fill values"); - fline("iret = nf_set_fill(ncid, NF_NOFILL, oldmode)"); - fline("call check_err(iret)"); - } - - fline("* leave define mode"); - fline("iret = nf_enddef(ncid)"); - fline("call check_err(iret)"); -} - - -/* - * Output a C statement. - */ -void -cline( - const char *stmnt) -{ - FILE *cout = stdout; - - fputs(stmnt, cout); - fputs("\n", cout); -} - -/* - * From a long line FORTRAN statement, generates the necessary FORTRAN - * lines with continuation characters in column 6. If stmnt starts with "*", - * it is treated as a one-line comment. Statement labels are *not* handled, - * but since we don't generate any labels, we don't care. - */ -void -fline( - const char *stmnt) -{ - FILE *fout = stdout; - int len = (int) strlen(stmnt); - int line = 0; - static char cont[] = { /* continuation characters */ - ' ', '1', '2', '3', '4', '5', '6', '7', '8', '9', - '+', '1', '2', '3', '4', '5', '6', '7', '8', '9', - '+', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; - - if(stmnt[0] == '*') { - fputs(stmnt, fout); - fputs("\n", fout); - return; - } - - while (len > 0) { - if (line >= FORT_MAX_LINES) - derror("FORTRAN statement too long: %s",stmnt); - (void) fprintf(fout, " %c", cont[line++]); - (void) fprintf(fout, "%.66s\n", stmnt); - len -= 66; - if (len > 0) - stmnt += 66; - } -} - - -/* return C name for netCDF type, given type code */ -const char * -nctype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "NC_BYTE"; - case NC_CHAR: - return "NC_CHAR"; - case NC_SHORT: - return "NC_SHORT"; - case NC_INT: - return "NC_INT"; - case NC_FLOAT: - return "NC_FLOAT"; - case NC_DOUBLE: - return "NC_DOUBLE"; - default: - derror("nctype: bad type code"); - return 0; - } -} - - -/* - * Return C type name for netCDF type, given type code. - */ -const char * -ncctype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "signed char"; - case NC_CHAR: - return "char"; - case NC_SHORT: - return "short"; - case NC_INT: - return "int"; - case NC_FLOAT: - return "float"; - case NC_DOUBLE: - return "double"; - default: - derror("ncctype: bad type code"); - return 0; - } -} - - - -/* - * Return C type name for netCDF type suffix, given type code. - */ -const char * -ncstype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "schar"; - case NC_CHAR: - return "text"; - case NC_SHORT: - return "short"; - case NC_INT: - return "int"; - case NC_FLOAT: - return "float"; - case NC_DOUBLE: - return "double"; - default: - derror("ncstype: bad type code"); - return 0; - } -} - - -/* - * Return C type name for netCDF attribute container type, given type code. - */ -const char * -ncatype( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return "int"; /* avoids choosing between uchar and schar */ - case NC_CHAR: - return "text"; - case NC_SHORT: - return "short"; - case NC_INT: - return "int"; - case NC_FLOAT: - return "float"; - case NC_DOUBLE: - return "double"; - default: - derror("ncatype: bad type code"); - return 0; - } -} - - -/* return internal size for values of specified netCDF type */ -size_t -nctypesize( - nc_type type) /* netCDF type code */ -{ - switch (type) { - case NC_BYTE: - return sizeof(char); - case NC_CHAR: - return sizeof(char); - case NC_SHORT: - return sizeof(short); - case NC_INT: - return sizeof(int); - case NC_FLOAT: - return sizeof(float); - case NC_DOUBLE: - return sizeof(double); - default: - derror("nctypesize: bad type code"); - return 0; - } -} - - -/* - * Given a netcdf numeric type, a pointer to a vector of values of that - * type, and the index of the vector element desired, returns a pointer - * to a malloced string representing the value in FORTRAN. Since this - * may be used in a DATA statement, it must not include non-constant - * expressions, such as "char(26)". - */ -char * -fstring( - nc_type type, /* netCDF type code */ - void *valp, /* pointer to vector of values */ - int num) /* element of vector desired */ -{ - static char *cp; - signed char *schp; - short *shortp; - int *intp; - float *floatp; - double *doublep; - - switch (type) { - case NC_BYTE: - cp = (char *) emalloc (10); - schp = (signed char *)valp; - sprintf(cp,"%d", schp[num]); - return cp; - - case NC_SHORT: - cp = (char *) emalloc (10); - shortp = (short *)valp; - (void) sprintf(cp,"%d",* (shortp + num)); - return cp; - - case NC_INT: - cp = (char *) emalloc (20); - intp = (int *)valp; - (void) sprintf(cp,"%d",* (intp + num)); - return cp; - - case NC_FLOAT: - cp = (char *) emalloc (20); - floatp = (float *)valp; - (void) sprintf(cp,"%.8g",* (floatp + num)); - return cp; - - case NC_DOUBLE: - cp = (char *) emalloc (25); - doublep = (double *)valp; - (void) sprintf(cp,"%.16g",* (doublep + num)); - expe2d(cp); /* change 'e' to 'd' in exponent */ - return cp; - - default: - derror("fstring: bad type code"); - return 0; - } -} - - -/* - * Given a pointer to a counted string, returns a pointer to a malloced string - * representing the string as a C constant. - */ -char * -cstrstr( - const char *valp, /* pointer to vector of characters*/ - size_t len) /* number of characters in valp */ -{ - static char *sp; - char *cp; - char *istr, *istr0; /* for null-terminated copy */ - int ii; - - if(4*len+3 != (unsigned)(4*len+3)) { - derror("too much character data!"); - exit(9); - } - sp = cp = (char *) emalloc(4*len+3); - - if(len == 1 && *valp == 0) { /* empty string */ - strcpy(sp,"\"\""); - return sp; - } - - istr0 = istr = (char *) emalloc(len + 1); - for(ii = 0; ii < len; ii++) { - istr[ii] = valp[ii]; - } - istr[len] = '\0'; - - *cp++ = '"'; - for(ii = 0; ii < len; ii++) { - switch (*istr) { - case '\0': *cp++ = '\\'; *cp++ = '0'; *cp++ = '0'; *cp++ = '0'; break; - case '\b': *cp++ = '\\'; *cp++ = 'b'; break; - case '\f': *cp++ = '\\'; *cp++ = 'f'; break; - case '\n': *cp++ = '\\'; *cp++ = 'n'; break; - case '\r': *cp++ = '\\'; *cp++ = 'r'; break; - case '\t': *cp++ = '\\'; *cp++ = 't'; break; - case '\v': *cp++ = '\\'; *cp++ = 'v'; break; - case '\\': *cp++ = '\\'; *cp++ = '\\'; break; - case '\"': *cp++ = '\\'; *cp++ = '\"'; break; - default: - if (!isprint((unsigned char)*istr)) { - static char octs[] = "01234567"; - int rem = ((unsigned char)*istr)%64; - *cp++ = '\\'; - *cp++ = octs[((unsigned char)*istr)/64]; /* to get, e.g. '\177' */ - *cp++ = octs[rem/8]; - *cp++ = octs[rem%8]; - } else { - *cp++ = *istr; - } - break; - } - istr++; - } - *cp++ = '"'; - *cp = '\0'; - free(istr0); - return sp; -} - - -/* Given a pointer to a counted string (not necessarily - * null-terminated), returns a pointer to a malloced string representing - * the string as a FORTRAN string expression. For example, the string - * "don't" would yield the FORTRAN string "'don''t'", and the string - * "ab\ncd" would yield "'ab'//char(10)//'cd'". The common - * interpretation of "\"-escaped characters is non-standard, so the - * generated Fortran may require adjustment in compilers that don't - * recognize "\" as anything special in a character context. */ -char * -fstrstr( - const char *str, /* pointer to vector of characters */ - size_t ilen) /* number of characters in istr */ -{ - static char *ostr; - char *cp, tstr[12]; - int was_print = 0; /* true if last character was printable */ - char *istr, *istr0; /* for null-terminated copy */ - int ii; - - if(12*ilen != (size_t)(12*ilen)) { - derror("too much character data!"); - exit(9); - } - istr0 = istr = (char *) emalloc(ilen + 1); - for(ii = 0; ii < ilen; ii++) { - istr[ii] = str[ii]; - } - istr[ilen] = '\0'; - - if (*istr == '\0') { /* empty string input, not legal in FORTRAN */ - ostr = (char*) emalloc(strlen("char(0)") + 1); - strcpy(ostr, "char(0)"); - free(istr0); - return ostr; - } - ostr = cp = (char *) emalloc(12*ilen); - *ostr = '\0'; - if (isprint((unsigned char)*istr)) { /* handle first character in input */ - *cp++ = '\''; - switch (*istr) { - case '\'': - *cp++ = '\''; - *cp++ = '\''; - break; - case '\\': - *cp++ = '\\'; - *cp++ = '\\'; - break; - default: - *cp++ = *istr; - break; - } - *cp = '\0'; - was_print = 1; - } else { - sprintf(tstr, "char(%d)", (unsigned char)*istr); - strcat(cp, tstr); - cp += strlen(tstr); - was_print = 0; - } - istr++; - - for(ii = 1; ii < ilen; ii++) { /* handle subsequent characters in input */ - if (isprint((unsigned char)*istr)) { - if (! was_print) { - strcat(cp, "//'"); - cp += 3; - } - switch (*istr) { - case '\'': - *cp++ = '\''; - *cp++ = '\''; - break; - case '\\': - *cp++ = '\\'; - *cp++ = '\\'; - break; - default: - *cp++ = *istr; - break; - } - *cp = '\0'; - was_print = 1; - } else { - if (was_print) { - *cp++ = '\''; - *cp = '\0'; - } - sprintf(tstr, "//char(%d)", (unsigned char)*istr); - strcat(cp, tstr); - cp += strlen(tstr); - was_print = 0; - } - istr++; - } - if (was_print) - *cp++ = '\''; - *cp = '\0'; - free(istr0); - return ostr; -} - - -static void -cl_netcdf(void) -{ - int stat = nc_close(ncid); - check_err(stat); -} - - -static void -cl_c(void) -{ - cline(" stat = nc_close(ncid);"); - cline(" check_err(stat,__LINE__,__FILE__);"); -#ifndef vms - cline(" return 0;"); -#else - cline(" return 1;"); -#endif - cline("}"); -} - -/* Returns true if dimension used in at least one record variable, - otherwise false. This is an inefficient algorithm, but we don't call - it very often ... */ -static int -used_in_rec_var( - int idim /* id of dimension */ - ) { - int ivar; - - for (ivar = 0; ivar < nvars; ivar++) { - if (vars[ivar].ndims > 0 && vars[ivar].dims[0] == rec_dim) { - int jdim; - for (jdim = 0; jdim < vars[ivar].ndims; jdim++) { - if (vars[ivar].dims[jdim] == idim) - return 1; - } - } - } - return 0; -} - - -/* Return name for Fortran fill constant of specified type */ -static const char * -f_fill_name( - nc_type type - ) -{ - switch(type) { - case NC_BYTE: - return "NF_FILL_BYTE"; - case NC_CHAR: - return "NF_FILL_CHAR"; - case NC_SHORT: - return "NF_FILL_SHORT"; - case NC_INT: - return "NF_FILL_INT"; - case NC_FLOAT: - return "NF_FILL_FLOAT"; - case NC_DOUBLE: - return "NF_FILL_DOUBLE"; - default: break; - } - derror("f_fill_name: bad type code"); - return 0; -} - - -/* Generate Fortran for cleaning up and closing file */ -static void -cl_fortran(void) -{ - int ivar; - int idim; - char stmnt[FORT_MAX_STMNT]; - char s2[FORT_MAX_STMNT]; - char*sp; - int have_rec_var = 0; - - /* do we have any record variables? */ - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - have_rec_var = 1; - break; - } - } - - if (have_rec_var) { - fline(" "); - fline("* Write record variables"); - sprintf(stmnt, "call writerecs(ncid,"); - /* generate parameter list for subroutine to write record vars */ - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - /* if a record variable, include id in parameter list */ - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(s2, "%s_id,", v->lname); - strcat(stmnt, s2); - } - } - sp = strrchr(stmnt, ','); - if(sp != NULL) { - *sp = '\0'; - } - strcat(stmnt, ")"); - fline(stmnt); - } - - fline(" "); - fline("iret = nf_close(ncid)"); - fline("call check_err(iret)"); - fline("end"); - - fline(" "); - - if (have_rec_var) { - sprintf(stmnt, "subroutine writerecs(ncid,"); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(s2, "%s_id,", v->lname); - strcat(stmnt, s2); - } - } - sp = strrchr(stmnt, ','); - if(sp != NULL) { - *sp = '\0'; - } - strcat(stmnt, ")"); - fline(stmnt); - fline(" "); - fline("* netCDF id"); - fline("integer ncid"); - - fline("* variable ids"); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(stmnt, "integer %s_id", v->lname); - fline(stmnt); - } - } - - fline(" "); - fline("include 'netcdf.inc'"); - - /* create necessary declarations */ - fline("* error status return"); - fline("integer iret"); - - /* generate integer/parameter declarations for all dimensions - used in record variables, except record dimension. */ - fline(" "); - fline("* netCDF dimension sizes for dimensions used with record variables"); - for (idim = 0; idim < ndims; idim++) { - /* if used in a record variable and not record dimension */ - if (used_in_rec_var(idim) && dims[idim].size != NC_UNLIMITED) { - sprintf(stmnt, "integer %s_len", dims[idim].lname); - fline(stmnt); - sprintf(stmnt, "parameter (%s_len = %lu)", - dims[idim].lname, (unsigned long) dims[idim].size); - fline(stmnt); - } - } - - fline(" "); - fline("* rank (number of dimensions) for each variable"); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(stmnt, "integer %s_rank", v->lname); - fline(stmnt); - } - } - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(stmnt, "parameter (%s_rank = %d)", v->lname, - v->ndims); - fline(stmnt); - } - } - - fline("* starts and counts for array sections of record variables"); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - sprintf(stmnt, - "integer %s_start(%s_rank), %s_count(%s_rank)", - v->lname, v->lname, v->lname, v->lname); - fline(stmnt); - } - } - - fline(" "); - fline("* data variables"); - - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - if (v->ndims > 0 && v->dims[0] == rec_dim) { - char *sp; - - fline(" "); - sprintf(stmnt, "integer %s_nr", v->lname); - fline(stmnt); - if (v->nrecs > 0) { - sprintf(stmnt, "parameter (%s_nr = %lu)", - v->lname, (unsigned long) v->nrecs); - } else { - sprintf(stmnt, "parameter (%s_nr = 1)", - v->lname); - } - fline(stmnt); - if (v->type != NC_CHAR) { - sprintf(stmnt, "%s %s(", ncftype(v->type), - v->lname); - /* reverse dimensions for FORTRAN */ - for (idim = v->ndims-1; idim >= 0; idim--) { - if(v->dims[idim] == rec_dim) { - sprintf(s2, "%s_nr, ", v->lname); - } else { - sprintf(s2, "%s_len, ", - dims[v->dims[idim]].lname); - } - strcat(stmnt, s2); - } - sp = strrchr(stmnt, ','); - if(sp != NULL) { - *sp = '\0'; - } - strcat(stmnt, ")"); - fline(stmnt); - } - } - } - - fline(" "); - - /* Emit DATA statements after declarations, because f2c on Linux can't - handle interspersing them */ - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - - if (v->ndims > 0 && v->dims[0] == rec_dim && v->type != NC_CHAR) { - if (v->has_data) { - fline(v->data_stmnt); - } else { /* generate data statement for FILL record */ - size_t rec_len = 1; - for (idim = 1; idim < v->ndims; idim++) { - rec_len *= dims[v->dims[idim]].size; - } - sprintf(stmnt,"data %s /%lu * %s/", v->lname, - (unsigned long) rec_len, - f_fill_name(v->type)); - fline(stmnt); - } - } - } - fline(" "); - for (ivar = 0; ivar < nvars; ivar++) { - struct vars *v = &vars[ivar]; - /* if a record variable, declare starts and counts */ - if (v->ndims > 0 && v->dims[0] == rec_dim) { - if (!v->has_data) - continue; - sprintf(stmnt, "* store %s", v->name); - fline(stmnt); - - for (idim = 0; idim < v->ndims; idim++) { - sprintf(stmnt, "%s_start(%d) = 1", v->lname, idim+1); - fline(stmnt); - } - for (idim = v->ndims-1; idim > 0; idim--) { - sprintf(stmnt, "%s_count(%d) = %s_len", v->lname, - v->ndims - idim, dims[v->dims[idim]].lname); - fline(stmnt); - } - sprintf(stmnt, "%s_count(%d) = %s_nr", v->lname, - v->ndims, v->lname); - fline(stmnt); - - if (v->type != NC_CHAR) { - sprintf(stmnt, - "iret = nf_put_vara_%s(ncid, %s_id, %s_start, %s_count, %s)", - nfftype(v->type), v->lname, v->lname, v->lname, v->lname); - } else { - sprintf(stmnt, - "iret = nf_put_vara_%s(ncid, %s_id, %s_start, %s_count, %s)", - nfftype(v->type), v->lname, v->lname, v->lname, - v->data_stmnt); - } - - fline(stmnt); - fline("call check_err(iret)"); - } - } - - fline(" "); - - fline("end"); - - fline(" "); - } - - fline("subroutine check_err(iret)"); - fline("integer iret"); - fline("include 'netcdf.inc'"); - fline("if (iret .ne. NF_NOERR) then"); - fline("print *, nf_strerror(iret)"); - fline("stop"); - fline("endif"); - fline("end"); -} - - -/* invoke netcdf calls (or generate C or Fortran code) to create netcdf - * from in-memory structure. */ -void -define_netcdf( - const char *netcdfname) -{ - char *filename; /* output file name */ - - if (netcdf_name) { /* name given on command line */ - filename = netcdf_name; - } else { /* construct name from CDL name */ - filename = (char *) emalloc(strlen(netcdfname) + 5); - (void) strcpy(filename,netcdfname); - if (netcdf_flag == -1) - (void) strcat(filename,".cdf"); /* old, deprecated extension */ - else - (void) strcat(filename,".nc"); /* new, favored extension */ - } - if (netcdf_flag) - gen_netcdf(filename); /* create netcdf */ - if (c_flag) /* create C code to create netcdf */ - gen_c(filename); - if (fortran_flag) /* create Fortran code to create netcdf */ - gen_fortran(filename); - free(filename); -} - - -void -close_netcdf(void) -{ - if (netcdf_flag) - cl_netcdf(); /* close netcdf */ - if (c_flag) /* create C code to close netcdf */ - cl_c(); - if (fortran_flag) /* create Fortran code to close netcdf */ - cl_fortran(); -} - - -void -check_err(int stat) { - if (stat != NC_NOERR) { - fprintf(stderr, "ncgen: %s\n", nc_strerror(stat)); - derror_count++; - } -} - -/* - * For logging error conditions. - */ -#ifndef NO_STDARG -void -derror(const char *fmt, ...) -#else -/*VARARGS1*/ -void -derror(fmt, va_alist) - const char *fmt ; /* error-message printf-style format */ - va_dcl /* variable number of error args, if any */ -#endif /* !NO_STDARG */ -{ - va_list args ; - - - if (lineno == 1) - (void) fprintf(stderr,"%s: %s: ", progname, cdlname); - else - (void) fprintf(stderr,"%s: %s line %d: ", progname, cdlname, lineno); - -#ifndef NO_STDARG - va_start(args ,fmt) ; -#else - va_start(args) ; -#endif /* !NO_STDARG */ - - (void) vfprintf(stderr,fmt,args) ; - va_end(args) ; - - (void) fputc('\n',stderr) ; - (void) fflush(stderr); /* to ensure log files are current */ - derror_count++; -} - - -void * -emalloc ( /* check return from malloc */ - size_t size) -{ - void *p; - - p = (void *) malloc (size); - if (p == 0) { - derror ("out of memory\n"); - exit(3); - } - return p; -} - -void * -ecalloc ( /* check return from calloc */ - size_t size) -{ - void *p; - - p = (void *) calloc (size, 1); - if (p == 0) { - derror ("out of memory\n"); - exit(3); - } - return p; -} - -void * -erealloc ( /* check return from realloc */ - void *ptr, - size_t size) /* if 0, this is really a free */ -{ - void *p; - - p = (void *) realloc (ptr, size); - - if (p == 0 && size != 0) { - derror ("out of memory"); - exit(3); - } - return p; -} - - -/* - * For generated Fortran, change 'e' to 'd' in exponent of double precision - * constants. - */ -void -expe2d( - char *cp) /* string containing double constant */ -{ - char *expchar = strrchr(cp,'e'); - if (expchar) { - *expchar = 'd'; - } -} - - - -/* Returns non-zero if n is a power of 2, 0 otherwise */ -static -int -pow2( - int n) -{ - int m = n; - int p = 1; - - while (m > 0) { - m /= 2; - p *= 2; - } - return p == 2*n; -} - - -/* - * Grow an integer array as necessary. - * - * Assumption: nar never incremented by more than 1 from last call. - * - * Makes sure an array is within a factor of 2 of the size needed. - * - * Make sure *arpp points to enough space to hold nar integers. If not big - * enough, malloc more space, copy over existing stuff, free old. When - * called for first time, *arpp assumed to be uninitialized. - */ -void -grow_iarray( - int nar, /* array must be at least this big */ - int **arpp) /* address of start of int array */ -{ - if (nar == 0) { - *arpp = (int *) emalloc(1 * sizeof(int)); - return; - } - if (! pow2(nar)) /* return unless nar is a power of two */ - return; - *arpp = (int *) erealloc(*arpp, 2 * nar * sizeof(int)); -} - - -/* - * Grow an array of variables as necessary. - * - * Assumption: nar never incremented by more than 1 from last call. - * - * Makes sure array is within a factor of 2 of the size needed. - * - * Make sure *arpp points to enough space to hold nar variables. If not big - * enough, malloc more space, copy over existing stuff, free old. When - * called for first time, *arpp assumed to be uninitialized. - */ -void -grow_varray( - int nar, /* array must be at least this big */ - struct vars **arpp) /* address of start of var array */ -{ - if (nar == 0) { - *arpp = (struct vars *) emalloc(1 * sizeof(struct vars)); - return; - } - if (! pow2(nar)) /* return unless nar is a power of two */ - return; - *arpp = (struct vars *) erealloc(*arpp, 2 * nar * sizeof(struct vars)); -} - - -/* - * Grow an array of dimensions as necessary. - * - * Assumption: nar never incremented by more than 1 from last call. - * - * Makes sure array is within a factor of 2 of the size needed. - * - * Make sure *arpp points to enough space to hold nar dimensions. If not big - * enough, malloc more space, copy over existing stuff, free old. When - * called for first time, *arpp assumed to be uninitialized. - */ -void -grow_darray( - int nar, /* array must be at least this big */ - struct dims **arpp) /* address of start of var array */ -{ - if (nar == 0) { - *arpp = (struct dims *) emalloc(1 * sizeof(struct dims)); - return; - } - if (! pow2(nar)) /* return unless nar is a power of two */ - return; - *arpp = (struct dims *) erealloc(*arpp, 2 * nar * sizeof(struct dims)); -} - - -/* - * Grow an array of attributes as necessary. - * - * Assumption: nar never incremented by more than 1 from last call. - * - * Makes sure array is within a factor of 2 of the size needed. - * - * Make sure *arpp points to enough space to hold nar attributes. If not big - * enough, malloc more space, copy over existing stuff, free old. When - * called for first time, *arpp assumed to be uninitialized. - */ -void -grow_aarray( - int nar, /* array must be at least this big */ - struct atts **arpp) /* address of start of var array */ -{ - if (nar == 0) { - *arpp = (struct atts *) emalloc(1 * sizeof(struct atts)); - return; - } - if (! pow2(nar)) /* return unless nar is a power of two */ - return; - *arpp = (struct atts *) erealloc(*arpp, 2 * nar * sizeof(struct atts)); -} - -#ifndef HAVE_STRLCAT -/* $OpenBSD: strlcat.c,v 1.12 2005/03/30 20:13:52 otto Exp $ */ - -/* - * Copyright (c) 1998 Todd C. Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * Appends src to string dst of size siz (unlike strncat, siz is the - * full size of dst, not space left). At most siz-1 characters - * will be copied. Always NUL terminates (unless siz <= strlen(dst)). - * Returns strlen(src) + MIN(siz, strlen(initial dst)). - * If retval >= siz, truncation occurred. - */ -size_t -strlcat(char *dst, const char *src, size_t siz) -{ - char *d = dst; - const char *s = src; - size_t n = siz; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (n-- != 0 && *d != '\0') - d++; - dlen = d - dst; - n = siz - dlen; - - if (n == 0) - return(dlen + strlen(s)); - while (*s != '\0') { - if (n != 1) { - *d++ = *s; - n--; - } - s++; - } - *d = '\0'; - - return(dlen + (s - src)); /* count does not include NUL */ -} -#endif /* ! HAVE_STRLCAT */ - - -/* - * Replace special chars in name so it can be used in C and Fortran - * variable names without causing syntax errors. Here we just replace - * each "-" in a name with "_MINUS_", each "." with "_PERIOD_", etc. - * For bytes with high bit set, from UTF-8 encoding of Unicode, just - * replace with "_xHH", where each H is the appropriate hex digit. If - * a name begins with a number N, such as "4LFTX", replace with - * "DIGIT_N_", such as "DIGIT_4_LFTX". - * - * Returned name is malloc'ed, so caller is responsible for freeing it. - */ -extern char* -decodify ( - const char *name) -{ - int count; /* number chars in newname */ - char *newname; - const char *cp; - char *sp; - static int init = 0; - static char* repls[256]; /* replacement string for each char */ - static int lens[256]; /* lengths of replacement strings */ - static struct { - char c; - char *s; - } ctable[] = { - {' ', "_SPACE_"}, - {'!', "_EXCLAMATION_"}, - {'"', "_QUOTATION_"}, - {'#', "_HASH_"}, - {'$', "_DOLLAR_"}, - {'%', "_PERCENT_"}, - {'&', "_AMPERSAND_"}, - {'\'', "_APOSTROPHE_"}, - {'(', "_LEFTPAREN_"}, - {')', "_RIGHTPAREN_"}, - {'*', "_ASTERISK_"}, - {'+', "_PLUS_"}, - {',', "_COMMA_"}, - {'-', "_MINUS_"}, - {'.', "_PERIOD_"}, - {':', "_COLON_"}, - {';', "_SEMICOLON_"}, - {'<', "_LESSTHAN_"}, - {'=', "_EQUALS_"}, - {'>', "_GREATERTHAN_"}, - {'?', "_QUESTION_"}, - {'@', "_ATSIGN_"}, - {'[', "_LEFTBRACKET_"}, - {'\\', "_BACKSLASH_"}, - {']', "_RIGHTBRACKET_"}, - {'^', "_CIRCUMFLEX_"}, - {'`', "_BACKQUOTE_"}, - {'{', "_LEFTCURLY_"}, - {'|', "_VERTICALBAR_"}, - {'}', "_RIGHTCURLY_"}, - {'~', "_TILDE_"}, - {'/', "_SLASH_"} /* should not occur in names */ -/* {'_', "_UNDERSCORE_"} */ - }; - static int idtlen; - static int hexlen; - int nctable = (sizeof(ctable))/(sizeof(ctable[0])); - int newlen; - - idtlen = strlen("DIGIT_n_"); /* initial digit template */ - hexlen = 1+strlen("_XHH"); /* template for hex of non-ASCII bytes */ - if(init == 0) { - int i; - char *rp; - - for(i = 0; i < 128; i++) { - rp = emalloc(2); - rp[0] = i; - rp[1] = '\0'; - repls[i] = rp; - } - for(i=0; i < nctable; i++) { - size_t j = ctable[i].c; - free(repls[j]); - repls[j] = ctable[i].s; - } - for(i = 128; i < 256; i++) { - rp = emalloc(hexlen); - snprintf(rp, hexlen, "_X%2.2X", i); - rp[hexlen - 1] = '\0'; - repls[i] = rp; - } - for(i = 0; i < 256; i++) { - lens[i] = strlen(repls[i]); - } - init = 1; /* only do this initialization once */ - } - - count = 0; - cp = name; - while(*cp != '\0') { /* get number of extra bytes for newname */ - size_t j; - if(*cp < 0) { /* handle signed or unsigned chars */ - j = *cp + 256; - } else { - j = *cp; - } - count += lens[j] - 1; - cp++; - } - - cp = name; - if('0' <= *cp && *cp <= '9') { /* names that begin with a digit */ - count += idtlen - 1; - } - newlen = strlen(name) + count + 1; /* bytes left to be filled */ - newname = (char *) emalloc(newlen); - sp = newname; - if('0' <= *cp && *cp <= '9') { /* handle initial digit, if any */ - snprintf(sp, newlen, "DIGIT_%c_", *cp); - sp += idtlen; - newlen -= idtlen; - cp++; - } - *sp = '\0'; - while(*cp != '\0') { /* copy name to newname, replacing special chars */ - size_t j, len; - /* cp is current position in name, sp is current position in newname */ - if(*cp < 0) { /* j is table index for character *cp */ - j = *cp + 256; - } else { - j = *cp; - } - len = strlcat(sp, repls[j], newlen); - assert(len < newlen); - sp += lens[j]; - newlen -= lens[j]; - cp++; - } - return newname; -} - - -/* - * Replace escaped chars in CDL representation of name such as - * 'abc\:def\ gh\\i' with unescaped version, such as 'abc:def gh\i'. - */ -void -deescapify (char *name) -{ - const char *cp = name; - char *sp; - size_t len = strlen(name); - char *newname; - - if(strchr(name, '\\') == NULL) - return; - - newname = (char *) emalloc(len + 1); - cp = name; - sp = newname; - while(*cp != '\0') { /* delete '\' chars, except change '\\' to '\' */ - switch (*cp) { - case '\\': - if(*(cp+1) == '\\') { - *sp++ = '\\'; - cp++; - } - break; - default: - *sp++ = *cp; - break; - } - cp++; - } - *sp = '\0'; - /* assert(strlen(newname) <= strlen(name)); */ - strncpy(name, newname, len); - free(newname); - return; -} diff --git a/contrib/netcdf/4.4.1.1/ncgen3/genlib.h b/contrib/netcdf/4.4.1.1/ncgen3/genlib.h deleted file mode 100644 index 3869ea90265..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/genlib.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef NC_GENLIB_H -#define NC_GENLIB_H -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen3/genlib.h,v 1.15 2009/12/29 18:42:35 dmh Exp $ - *********************************************************************/ -#include -#include -#include - -extern const char *progname; /* for error messages */ -extern const char *cdlname; /* for error messages */ - -#define FORT_MAX_LINES 20 /* max lines in FORTRAN statement */ -#define FORT_MAX_STMNT 66*FORT_MAX_LINES /* max chars in FORTRAN statement */ -#define C_MAX_STMNT FORT_MAX_STMNT /* until we fix to break up C lines */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern void cline ( const char* stmnt ); -extern void fline ( const char* stmnt ); -extern const char* nctype ( nc_type type ); -extern const char* ncctype ( nc_type type ); -extern const char* ncstype ( nc_type type ); -extern const char* ncatype ( nc_type type ); -extern const char* nfstype ( nc_type type ); -extern const char* nfftype ( nc_type type ); -extern char* fstring ( nc_type type, void* valp, int num ); -extern char* cstrstr ( const char* valp, size_t len ); -extern char* fstrstr ( const char* str, size_t ilen ); -extern size_t nctypesize( nc_type type ); - -extern void derror ( const char *fmt, ... ) -#ifdef _GNUC_ - __attribute__ ((format (printf, 1, 2))) -#endif -; -extern void check_err ( int status ); -extern void *emalloc ( size_t size ); -extern void *ecalloc ( size_t size ); -extern void *erealloc ( void *ptr, size_t size ); -extern void expe2d ( char *ptr ); -extern void grow_iarray ( int narray, int **array ); -extern void grow_varray ( int narray, struct vars **array ); -extern void grow_darray ( int narray, struct dims **array ); -extern void grow_aarray ( int narray, struct atts **array ); -extern char* decodify (const char *name); -extern void deescapify (char *name); - -extern int put_variable ( void* rec_start ); - -/* initializes netcdf counts (e.g. nvars), defined in init.c */ -extern void init_netcdf ( void ); - -/* generates all define mode stuff, defined in genlib.c */ -extern void define_netcdf(const char *netcdfname); - -/* generates variable puts, defined in load.c */ -extern void load_netcdf ( void* rec_start ); - -/* generates close, defined in close.c */ -extern void close_netcdf ( void ); - -/* defined in escapes.c */ -extern void expand_escapes ( char* termstring, char* yytext, int yyleng ); - -/* to get fill value for various types, defined in getfill.c */ -extern void nc_getfill ( nc_type type, union generic* gval ); - -/* to put fill value for various types, defined in getfill.c */ -extern void nc_putfill ( nc_type type, void* val, union generic* gval ); - -/* fills a generic array with a value, defined in getfill.c */ -extern void nc_fill ( nc_type type, size_t num, void* datp, - union generic fill_val ); - -/* reset symbol table to empty, defined in ncgen.y */ -extern void clearout(void); - -/* In case we are missing strlcat */ -#ifndef HAVE_STRLCAT -extern size_t strlcat(char *dst, const char *src, size_t siz); -#endif - -#ifdef __cplusplus -} -#endif -#endif /*!NC_GENLIB_H*/ diff --git a/contrib/netcdf/4.4.1.1/ncgen3/main.c b/contrib/netcdf/4.4.1.1/ncgen3/main.c deleted file mode 100644 index da8bb91d418..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/main.c +++ /dev/null @@ -1,245 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/ncgen3/main.c,v 1.20 2010/03/31 18:18:40 dmh Exp $ - *********************************************************************/ - -#include "config.h" -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#ifdef HAVE_GETOPT_H -#include -#endif - -#ifdef _MSC_VER -#include "XGetopt.h" -#define snprintf _snprintf -int opterr; -int optind; -#endif - -#ifdef __hpux -#include -#endif - -#include - -#include "generic.h" -#include "ncgen.h" -#include "genlib.h" - -extern int ncgparse(void); - -const char *progname; /* for error messages */ -const char *cdlname; - -int c_flag; -int fortran_flag; -int netcdf_flag; -int cmode_modifier; -int nofill_flag; -char *netcdf_name = NULL; /* name of output netCDF file to write */ - -extern FILE *ncgin; -extern int derror_count; - -static const char* ubasename ( const char* av0 ); -static void usage ( void ); -int main ( int argc, char** argv ); - - -/* strip off leading path */ -static const char * -ubasename( - const char *av0) -{ - const char *logident ; -#ifdef VMS -#define SEP ']' -#endif -#ifdef MSDOS -#define SEP '\\' -#endif -#ifndef SEP -#define SEP '/' -#endif - if ((logident = strrchr(av0, SEP)) == NULL) - logident = av0 ; - else - logident++ ; - return logident ; -} - - -static void usage(void) -{ - derror("Usage: %s [ -b ] [ -c ] [ -f ] [ -k kind ] [ -x ] [ -o outfile] [ file ... ]", - progname); - derror("netcdf library version %s", nc_inq_libvers()); -} - - -int -main( - int argc, - char *argv[]) -{ -/* MSC_EXTRA extern int optind; - MSC_EXTRA extern int opterr; - MSC_EXTRA extern char *optarg;*/ - int any_error; - int c; - FILE *fp; - -#ifdef __hpux - setlocale(LC_CTYPE,""); -#endif - -#ifdef MDEBUG - malloc_debug(2) ; /* helps find malloc/free errors on Sun */ -#endif /* MDEBUG */ - - opterr = 1; /* print error message if bad option */ - progname = ubasename(argv[0]); - cdlname = "-"; - - c_flag = 0; - fortran_flag = 0; - netcdf_flag = 0; - cmode_modifier = 0; - nofill_flag = 0; - -#if _CRAYMPP && 0 - /* initialize CRAY MPP parallel-I/O library */ - (void) par_io_init(32, 32); -#endif - - while ((c = getopt(argc, argv, "bcfk:l:no:v:x")) != EOF) - switch(c) { - case 'c': /* for c output, old version of "-lc" */ - c_flag = 1; - break; - case 'f': /* for fortran output, old version of "-lf" */ - fortran_flag = 1; - break; - case 'b': /* for binary netcdf output, ".nc" extension */ - netcdf_flag = 1; - break; - case 'l': /* specify language, instead of using -c or -f */ - { - char *lang_name = (char *) emalloc(strlen(optarg)+1); - if (! lang_name) { - derror ("%s: out of memory", progname); - return(1); - } - (void)strcpy(lang_name, optarg); - if (strcmp(lang_name, "c") == 0 || strcmp(lang_name, "C") == 0) { - c_flag = 1; - } - else if (strcmp(lang_name, "f77") == 0 || - strcmp(lang_name, "fortran77") == 0 || - strcmp(lang_name, "Fortran77") == 0) { - fortran_flag = 1; - } else { /* Fortran90, Java, C++, Perl, Python, Ruby, ... */ - derror("%s: output language %s not implemented", - progname, lang_name); - return(1); - } - } - break; - case 'n': /* old version of -b, uses ".cdf" extension */ - netcdf_flag = -1; - break; - case 'o': /* to explicitly specify output name */ - netcdf_flag = 1; - netcdf_name = (char *) emalloc(strlen(optarg)+1); - if (! netcdf_name) { - derror ("%s: out of memory", progname); - return(1); - } - (void)strcpy(netcdf_name,optarg); - break; - case 'x': /* set nofill mode to speed up creation of large files */ - nofill_flag = 1; - break; - case 'v': /* a deprecated alias for "kind" option */ - /*FALLTHRU*/ - case 'k': /* for specifying variant of netCDF format to be generated */ - { - char *kind_name = (char *) emalloc(strlen(optarg)+1); - if (! kind_name) { - derror ("%s: out of memory", progname); - return(1); - } - (void)strcpy(kind_name, optarg); - /* The default kind is kind 1 (classic), with 32-bit offsets */ - if (strcmp(kind_name, "1") == 0 || - strcmp(kind_name, "classic") == 0) { - cmode_modifier |= NC_CLASSIC_MODEL; - } - /* The 64-bit offset kind (2) should only be used if actually needed */ - else if (strcmp(kind_name, "2") == 0 || - strcmp(kind_name, "64-bit-offset") == 0 || - strcmp(kind_name, "64-bit offset") == 0) { - cmode_modifier |= NC_64BIT_OFFSET; - } -#ifdef USE_NETCDF4 - /* NetCDF-4 HDF5 format*/ - else if (strcmp(kind_name, "3") == 0 || - strcmp(kind_name, "hdf5") == 0 || - strcmp(kind_name, "netCDF-4") == 0) { - cmode_modifier |= NC_NETCDF4; - } - /* NetCDF-4 HDF5 format, but using only nc3 data model */ - else if (strcmp(kind_name, "4") == 0 || - strcmp(kind_name, "hdf5-nc3") == 0 || - strcmp(kind_name, "netCDF-4 classic model") == 0) { - cmode_modifier |= NC_NETCDF4 | NC_CLASSIC_MODEL; - } -#endif - else - { - derror("Invalid format, try classic, 64-bit offset, netCDF-4, or netCDF-4 classic model"); - return 2; - } - free(kind_name); - } - break; - case '?': - usage(); - return(8); - } - - if (fortran_flag && c_flag) { - derror("Only one of -c or -f may be specified"); - return(8); - } - - argc -= optind; - argv += optind; - - if (argc > 1) { - derror ("%s: only one input file argument permitted",progname); - return(6); - } - - fp = stdin; - if (argc > 0 && strcmp(argv[0], "-") != 0) { - if ((fp = fopen(argv[0], "r")) == NULL) { - derror ("can't open file %s for reading: ", argv[0]); - perror(""); - return(7); - } - cdlname = argv[0]; - } - ncgin = fp; - any_error = ncgparse(); - if (any_error || derror_count > 0) - return 1; - return 0; -} -END_OF_MAIN() diff --git a/contrib/netcdf/4.4.1.1/ncgen3/ncgen.y b/contrib/netcdf/4.4.1.1/ncgen3/ncgen.y deleted file mode 100644 index f5d5543e0ec..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/ncgen.y +++ /dev/null @@ -1,895 +0,0 @@ -/********************************************************************* - * Copyright 1993, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $ - *********************************************************************/ - -/* yacc source for "ncgen", a netCDL parser and netCDF generator */ - -%{ -#ifdef sccs -static char SccsId[] = "$Id: ncgen.y,v 1.34 2010/03/31 18:18:41 dmh Exp $"; -#endif -#include "config.h" -#include -#include -#include "netcdf.h" -#include "generic.h" -#include "ncgen.h" -#include "genlib.h" /* for grow_darray() et al */ - -typedef struct Symbol { /* symbol table entry */ - char *name; - struct Symbol *next; - unsigned is_dim : 1; /* appears as netCDF dimension */ - unsigned is_var : 1; /* appears as netCDF variable */ - unsigned is_att : 1; /* appears as netCDF attribute */ - int dnum; /* handle as a dimension */ - int vnum; /* handle as a variable */ - } *YYSTYPE1; - -/* True if string a equals string b*/ -#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0) -#define NC_UNSPECIFIED ((nc_type)0) /* unspecified (as yet) type */ - -#define YYSTYPE YYSTYPE1 -YYSTYPE symlist; /* symbol table: linked list */ - -extern int derror_count; /* counts errors in netcdf definition */ -extern int lineno; /* line number for error messages */ - -static int not_a_string; /* whether last constant read was a string */ -static char termstring[MAXTRST]; /* last terminal string read */ -static double double_val; /* last double value read */ -static float float_val; /* last float value read */ -static int int_val; /* last int value read */ -static short short_val; /* last short value read */ -static char char_val; /* last char value read */ -static signed char byte_val; /* last byte value read */ - -static nc_type type_code; /* holds declared type for variables */ -static nc_type atype_code; /* holds derived type for attributes */ -static char *netcdfname; /* to construct netcdf file name */ -static void *att_space; /* pointer to block for attribute values */ -static nc_type valtype; /* type code for list of attribute values */ - -static char *char_valp; /* pointers used to accumulate data values */ -static signed char *byte_valp; -static short *short_valp; -static int *int_valp; -static float *float_valp; -static double *double_valp; -static void *rec_cur; /* pointer to where next data value goes */ -static void *rec_start; /* start of space for data */ - -/* Forward declarations */ -void defatt(); -void equalatt(); - -#ifdef YYLEX_PARAM -int yylex(YYLEX_PARAM); -#else -int yylex(); -#endif - -#ifdef vms -void yyerror(char*); -#else -int yyerror(char*); -#endif -%} - -/* DECLARATIONS */ - -%token - NC_UNLIMITED_K /* keyword for unbounded record dimension */ - BYTE_K /* keyword for byte datatype */ - CHAR_K /* keyword for char datatype */ - SHORT_K /* keyword for short datatype */ - INT_K /* keyword for int datatype */ - FLOAT_K /* keyword for float datatype */ - DOUBLE_K /* keyword for double datatype */ - IDENT /* name for a dimension, variable, or attribute */ - TERMSTRING /* terminal string */ - BYTE_CONST /* byte constant */ - CHAR_CONST /* char constant */ - SHORT_CONST /* short constant */ - INT_CONST /* int constant */ - FLOAT_CONST /* float constant */ - DOUBLE_CONST /* double constant */ - DIMENSIONS /* keyword starting dimensions section, if any */ - VARIABLES /* keyword starting variables section, if any */ - NETCDF /* keyword declaring netcdf name */ - DATA /* keyword starting data section, if any */ - FILLVALUE /* fill value, from _FillValue attribute or default */ - -%start ncdesc /* start symbol for grammar */ - -%% - -/* RULES */ - -ncdesc: NETCDF - '{' - { init_netcdf(); } - dimsection /* dimension declarations */ - vasection /* variable and attribute declarations */ - { - if (derror_count == 0) - define_netcdf(netcdfname); - if (derror_count > 0) - exit(6); - } - datasection /* data, variables loaded as encountered */ - '}' - { - if (derror_count == 0) - close_netcdf(); - } - ; -dimsection: /* empty */ - | DIMENSIONS dimdecls - ; -dimdecls: dimdecline ';' - | dimdecls dimdecline ';' - ; -dimdecline: dimdecl - | dimdecline ',' dimdecl - ; -dimdecl: dimd '=' INT_CONST - { if (int_val <= 0) - derror("dimension length must be positive"); - dims[ndims].size = int_val; - ndims++; - } - | dimd '=' DOUBLE_CONST - { /* for rare case where 2^31 < dimsize < 2^32 */ - if (double_val <= 0) - derror("dimension length must be positive"); - if (double_val > 4294967295.0) - derror("dimension too large"); - if (double_val - (size_t) double_val > 0) - derror("dimension length must be an integer"); - dims[ndims].size = (size_t) double_val; - ndims++; - } - | dimd '=' NC_UNLIMITED_K - { if (rec_dim != -1) - derror("only one NC_UNLIMITED dimension allowed"); - rec_dim = ndims; /* the unlimited (record) dimension */ - dims[ndims].size = NC_UNLIMITED; - ndims++; - } - ; -dimd: dim - { - if ($1->is_dim == 1) { - derror( "duplicate dimension declaration for %s", - $1->name); - } - $1->is_dim = 1; - $1->dnum = ndims; - /* make sure dims array will hold dimensions */ - grow_darray(ndims, /* must hold ndims+1 dims */ - &dims); /* grow as needed */ - dims[ndims].name = (char *) emalloc(strlen($1->name)+1); - (void) strcpy(dims[ndims].name, $1->name); - /* name for use in generated Fortran and C variables */ - dims[ndims].lname = decodify($1->name); - } - ; -dim: IDENT - ; -vasection: /* empty */ - | VARIABLES vadecls - | gattdecls - ; -vadecls: vadecl ';' - | vadecls vadecl ';' - ; -vadecl: vardecl | attdecl | gattdecl - ; -gattdecls: gattdecl ';' - | gattdecls gattdecl ';' - ; -vardecl: type varlist - ; -type: BYTE_K { type_code = NC_BYTE; } - | CHAR_K { type_code = NC_CHAR; } - | SHORT_K { type_code = NC_SHORT; } - | INT_K { type_code = NC_INT; } - | FLOAT_K { type_code = NC_FLOAT; } - | DOUBLE_K{ type_code = NC_DOUBLE; } - ; -varlist: varspec - | varlist ',' varspec - ; -varspec: var - { - static struct vars dummyvar; - - dummyvar.name = "dummy"; - dummyvar.type = NC_DOUBLE; - dummyvar.ndims = 0; - dummyvar.dims = 0; - dummyvar.fill_value.doublev = NC_FILL_DOUBLE; - dummyvar.has_data = 0; - - nvdims = 0; - /* make sure variable not re-declared */ - if ($1->is_var == 1) { - derror( "duplicate variable declaration for %s", - $1->name); - } - $1->is_var = 1; - $1->vnum = nvars; - /* make sure vars array will hold variables */ - grow_varray(nvars, /* must hold nvars+1 vars */ - &vars); /* grow as needed */ - vars[nvars] = dummyvar; /* to make Purify happy */ - vars[nvars].name = (char *) emalloc(strlen($1->name)+1); - (void) strcpy(vars[nvars].name, $1->name); - /* name for use in generated Fortran and C variables */ - vars[nvars].lname = decodify($1->name); - vars[nvars].type = type_code; - /* set default fill value. You can override this with - * the variable attribute "_FillValue". */ - nc_getfill(type_code, &vars[nvars].fill_value); - vars[nvars].has_data = 0; /* has no data (yet) */ - } - dimspec - { - vars[nvars].ndims = nvdims; - nvars++; - } - ; -var: IDENT - ; -dimspec: /* empty */ - | '(' dimlist ')' - ; -dimlist: vdim - | dimlist ',' vdim - ; -vdim: dim - { - if (nvdims >= NC_MAX_VAR_DIMS) { - derror("%s has too many dimensions",vars[nvars].name); - } - if ($1->is_dim == 1) - dimnum = $1->dnum; - else { - derror( "%s is not declared as a dimension", - $1->name); - dimnum = ndims; - } - if (rec_dim != -1 && dimnum == rec_dim && nvdims != 0) { - derror("unlimited dimension must be first"); - } - grow_iarray(nvdims, /* must hold nvdims+1 ints */ - &vars[nvars].dims); /* grow as needed */ - vars[nvars].dims[nvdims] = dimnum; - nvdims++; - } - ; -attdecl: att - { - defatt(); - } - '=' attvallist - { - equalatt(); - } - ; -gattdecl: gatt - { - defatt(); - } - '=' attvallist - { - equalatt(); - } - ; - -att: avar ':' attr - -gatt: ':' attr - { - varnum = NC_GLOBAL; /* handle of "global" attribute */ - } - ; - -avar: var - { if ($1->is_var == 1) - varnum = $1->vnum; - else { - derror("%s not declared as a variable, fatal error", - $1->name); - YYABORT; - } - } - ; -attr: IDENT - { - /* make sure atts array will hold attributes */ - grow_aarray(natts, /* must hold natts+1 atts */ - &atts); /* grow as needed */ - atts[natts].name = (char *) emalloc(strlen($1->name)+1); - (void) strcpy(atts[natts].name,$1->name); - /* name for use in generated Fortran and C variables */ - atts[natts].lname = decodify($1->name); - } - ; -attvallist: aconst - | attvallist ',' aconst - ; -aconst: attconst - { - if (valtype == NC_UNSPECIFIED) - valtype = atype_code; - if (valtype != atype_code) - derror("values for attribute must be all of same type"); - } - ; - -attconst: CHAR_CONST - { - atype_code = NC_CHAR; - *char_valp++ = char_val; - valnum++; - } - | TERMSTRING - { - atype_code = NC_CHAR; - { - /* don't null-terminate attribute strings */ - size_t len = strlen(termstring); - if (len == 0) /* need null if that's only value */ - len = 1; - (void)strncpy(char_valp,termstring,len); - valnum += len; - char_valp += len; - } - } - | BYTE_CONST - { - atype_code = NC_BYTE; - *byte_valp++ = byte_val; - valnum++; - } - | SHORT_CONST - { - atype_code = NC_SHORT; - *short_valp++ = short_val; - valnum++; - } - | INT_CONST - { - atype_code = NC_INT; - *int_valp++ = int_val; - valnum++; - } - | FLOAT_CONST - { - atype_code = NC_FLOAT; - *float_valp++ = float_val; - valnum++; - } - | DOUBLE_CONST - { - atype_code = NC_DOUBLE; - *double_valp++ = double_val; - valnum++; - } - ; - -datasection: /* empty */ - | DATA datadecls - | DATA - ; - -datadecls: datadecl ';' - | datadecls datadecl ';' - ; -datadecl: avar - { - valtype = vars[varnum].type; /* variable type */ - valnum = 0; /* values accumulated for variable */ - vars[varnum].has_data = 1; - /* compute dimensions product */ - var_size = nctypesize(valtype); - if (vars[varnum].ndims == 0) { /* scalar */ - var_len = 1; - } else if (vars[varnum].dims[0] == rec_dim) { - var_len = 1; /* one record for unlimited vars */ - } else { - var_len = dims[vars[varnum].dims[0]].size; - } - for(dimnum = 1; dimnum < vars[varnum].ndims; dimnum++) - var_len = var_len*dims[vars[varnum].dims[dimnum]].size; - /* allocate memory for variable data */ - if (var_len*var_size != (size_t)(var_len*var_size)) { - derror("variable %s too large for memory", - vars[varnum].name); - exit(9); - } - rec_len = var_len; - rec_start = malloc ((size_t)(rec_len*var_size)); - if (rec_start == 0) { - derror ("out of memory\n"); - exit(3); - } - rec_cur = rec_start; - switch (valtype) { - case NC_CHAR: - char_valp = (char *) rec_start; - break; - case NC_BYTE: - byte_valp = (signed char *) rec_start; - break; - case NC_SHORT: - short_valp = (short *) rec_start; - break; - case NC_INT: - int_valp = (int *) rec_start; - break; - case NC_FLOAT: - float_valp = (float *) rec_start; - break; - case NC_DOUBLE: - double_valp = (double *) rec_start; - break; - default: break; - } - } - '=' constlist - { - if (valnum < var_len) { /* leftovers */ - nc_fill(valtype, - var_len - valnum, - rec_cur, - vars[varnum].fill_value); - } - /* put out var_len values */ - /* vars[varnum].nrecs = valnum / rec_len; */ - vars[varnum].nrecs = var_len / rec_len; - if (derror_count == 0) - put_variable(rec_start); - free ((char *) rec_start); - } - ; -constlist: dconst - | constlist ',' dconst - ; -dconst: - { - if(valnum >= var_len) { - if (vars[varnum].dims[0] != rec_dim) { /* not recvar */ - derror("too many values for this variable, %d >= %d", - valnum, var_len); - exit (4); - } else { /* a record variable, so grow data - container and increment var_len by - multiple of record size */ - ptrdiff_t rec_inc = (char *)rec_cur - - (char *)rec_start; - var_len = rec_len * (1 + valnum / rec_len); - rec_start = erealloc(rec_start, var_len*var_size); - rec_cur = (char *)rec_start + rec_inc; - char_valp = (char *) rec_cur; - byte_valp = (signed char *) rec_cur; - short_valp = (short *) rec_cur; - int_valp = (int *) rec_cur; - float_valp = (float *) rec_cur; - double_valp = (double *) rec_cur; - } - } - not_a_string = 1; - } - const - { - if (not_a_string) { - switch (valtype) { - case NC_CHAR: - rec_cur = (void *) char_valp; - break; - case NC_BYTE: - rec_cur = (void *) byte_valp; - break; - case NC_SHORT: - rec_cur = (void *) short_valp; - break; - case NC_INT: - rec_cur = (void *) int_valp; - break; - case NC_FLOAT: - rec_cur = (void *) float_valp; - break; - case NC_DOUBLE: - rec_cur = (void *) double_valp; - break; - default: break; - } - } - } -; - -const: CHAR_CONST - { - atype_code = NC_CHAR; - switch (valtype) { - case NC_CHAR: - *char_valp++ = char_val; - break; - case NC_BYTE: - *byte_valp++ = char_val; - break; - case NC_SHORT: - *short_valp++ = char_val; - break; - case NC_INT: - *int_valp++ = char_val; - break; - case NC_FLOAT: - *float_valp++ = char_val; - break; - case NC_DOUBLE: - *double_valp++ = char_val; - break; - default: break; - } - valnum++; - } - | TERMSTRING - { - not_a_string = 0; - atype_code = NC_CHAR; - { - size_t len = strlen(termstring); - - if(valnum + len > var_len) { - if (vars[varnum].dims[0] != rec_dim) { - derror("too many values for this variable, %d>%d", - valnum+len, var_len); - exit (5); - } else {/* a record variable so grow it */ - ptrdiff_t rec_inc = (char *)rec_cur - - (char *)rec_start; - var_len += rec_len * (len + valnum - var_len)/rec_len; - rec_start = erealloc(rec_start, var_len*var_size); - rec_cur = (char *)rec_start + rec_inc; - char_valp = (char *) rec_cur; - } - } - switch (valtype) { - case NC_CHAR: - { - int ld; - size_t i, sl; - (void)strncpy(char_valp,termstring,len); - ld = vars[varnum].ndims-1; - if (ld > 0) {/* null-fill to size of last dim */ - sl = dims[vars[varnum].dims[ld]].size; - for (i =len;i next) - if (STREQ(sp -> name, sname)) { - return sp; - } - return 0; /* 0 ==> not found */ -} - -YYSTYPE install( /* install sname in symbol table */ - const char *sname) -{ - YYSTYPE sp; - - sp = (YYSTYPE) emalloc (sizeof (struct Symbol)); - sp -> name = (char *) emalloc (strlen (sname) + 1);/* +1 for '\0' */ - (void) strcpy (sp -> name, sname); - sp -> next = symlist; /* put at front of list */ - sp -> is_dim = 0; - sp -> is_var = 0; - sp -> is_att = 0; - symlist = sp; - return sp; -} - -void -clearout(void) /* reset symbol table to empty */ -{ - YYSTYPE sp, tp; - for (sp = symlist; sp != (YYSTYPE) 0;) { - tp = sp -> next; - free (sp -> name); - free ((char *) sp); - sp = tp; - } - symlist = 0; -} - -/* get lexical input routine generated by lex */ - -/* Keep compile quiet */ -#define YY_NO_UNPUT -#define YY_NO_INPUT - -#include "ncgenyy.c" diff --git a/contrib/netcdf/4.4.1.1/ncgen3/run_nc4_tests.sh b/contrib/netcdf/4.4.1.1/ncgen3/run_nc4_tests.sh deleted file mode 100755 index 4dc8a77b1e9..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/run_nc4_tests.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# This shell script runs the ncdump tests. -# $Id: run_nc4_tests.sh,v 1.3 2009/09/24 18:19:10 dmh Exp $ - -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi - -echo "*** Testing ncgen3 for netCDF-4." -set -e -echo "*** creating netCDF-4 file c0_4.nc from c0.cdl..." -./ncgen3 -k3 -b -o c0_4.nc $srcdir/c0.cdl -echo "*** creating netCDF-4 classic model file c0_4c.nc from c0.cdl..." -./ncgen3 -k4 -b -o c0_4c.nc $srcdir/c0.cdl - -echo "*** Test successful!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/ncgen3/run_tests.sh b/contrib/netcdf/4.4.1.1/ncgen3/run_tests.sh deleted file mode 100755 index c31e08acb74..00000000000 --- a/contrib/netcdf/4.4.1.1/ncgen3/run_tests.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# This shell script runs the ncgen3 tests. -# $Id: run_tests.sh,v 1.9 2009/09/24 18:19:11 dmh Exp $ - -echo "*** Testing ncgen3." -set -e - -if test "x$srcdir" = x ;then -srcdir=`pwd` -fi - -echo "*** creating classic file c0.nc from c0.cdl..." -./ncgen3 -b -o c0.nc $srcdir/c0.cdl -echo "*** creating 64-bit offset file c0_64.nc from c0.cdl..." -./ncgen3 -k 64-bit-offset -b -o c0_64.nc $srcdir/c0.cdl - -echo "*** Test successful!" -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nctest/CMakeLists.txt b/contrib/netcdf/4.4.1.1/nctest/CMakeLists.txt deleted file mode 100644 index c1f0dda2370..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -SET(nctest_SRC add.c atttests.c cdftests.c dimtests.c driver.c emalloc.c error.c misctest.c rec.c slabs.c val.c vardef.c varget.c vargetg.c varput.c varputg.c vartests.c vputget.c vputgetg.c) - -FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) - -### -# Can't use macro since -# there are multiple sources. -### -ADD_EXECUTABLE(nctest ${nctest_SRC}) -TARGET_LINK_LIBRARIES(nctest netcdf) -ADD_TEST(nctest ${EXECUTABLE_OUTPUT_PATH}/nctest) - -add_bin_test_no_prefix(tst_rename) -add_sh_test(nctest compare_test_files) \ No newline at end of file diff --git a/contrib/netcdf/4.4.1.1/nctest/Makefile.am b/contrib/netcdf/4.4.1.1/nctest/Makefile.am deleted file mode 100644 index 4a9257c1414..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/Makefile.am +++ /dev/null @@ -1,44 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This file builds and runs the nctest program, which tests the netCDF -# version 2 interface. - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -include $(top_srcdir)/lib_flags.am - -AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la - -# Running nctest results in a file testfile.nc, which is then checked -# to make sure it matches testfile_nc.sav, which was generated under -# precisely controlled conditions at the netCDF Test Facility, -# (located in sub-basement 42 of UCAR Compound 4). testfile_nc.sav was -# generated in a pressurized chamber that exactly simulated the -# atmosphere on the surface of Mars. -EXTRA_DIST = ref_nctest_classic.nc ref_nctest_64bit_offset.nc \ -compare_test_files.sh run_valgrind_tests.sh CMakeLists.txt - -CLEANFILES = nctest_classic.nc nctest_64bit_offset.nc \ -nctest_netcdf4.nc test2.nc temp.tmp tst_*.nc \ -nctest_classic.cdl ref_nctest_classic.cdl - -# Run nctest and the script that compares the output with the -# reference file. -TESTPROGRAMS = nctest tst_rename -check_PROGRAMS = $(TESTPROGRAMS) -TESTS = $(TESTPROGRAMS) compare_test_files.sh - -# This will the test program with valgrind, the memory checking -# tool. (Valgrind must be present for this to work.) -if EXTRA_TESTS -if USE_VALGRIND_TESTS -TESTS += run_valgrind_tests.sh -endif # USE_VALGRIND_TESTS -endif # EXTRA_TESTS - -# These are the source files for the nctest program. -nctest_SOURCES = add.c add.h atttests.c cdftests.c dimtests.c driver.c \ -emalloc.c emalloc.h error.c error.h misctest.c rec.c slabs.c testcdf.h \ -tests.h val.c val.h vardef.c varget.c vargetg.c varput.c varputg.c \ -vartests.c vputget.c vputgetg.c - diff --git a/contrib/netcdf/4.4.1.1/nctest/Makefile.in b/contrib/netcdf/4.4.1.1/nctest/Makefile.in deleted file mode 100644 index 122318314f5..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/Makefile.in +++ /dev/null @@ -1,898 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This file builds and runs the nctest program, which tests the netCDF -# version 2 interface. - -# This is part of the netCDF package. -# Copyright 2005 University Corporation for Atmospheric Research/Unidata -# See COPYRIGHT file for conditions of use. -# -# Assemble the CPPFLAGS and LDFLAGS that point to all the needed -# libraries for netCDF-4. -# -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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@ -@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 - -# This turns on declspec magic in netcdf.h for windows DLLs. -@BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF -check_PROGRAMS = $(am__EXEEXT_1) -TESTS = $(am__EXEEXT_1) compare_test_files.sh $(am__append_3) - -# This will the test program with valgrind, the memory checking -# tool. (Valgrind must be present for this to work.) -@EXTRA_TESTS_TRUE@@USE_VALGRIND_TESTS_TRUE@am__append_3 = run_valgrind_tests.sh -subdir = nctest -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__EXEEXT_1 = nctest$(EXEEXT) tst_rename$(EXEEXT) -am_nctest_OBJECTS = add.$(OBJEXT) atttests.$(OBJEXT) \ - cdftests.$(OBJEXT) dimtests.$(OBJEXT) driver.$(OBJEXT) \ - emalloc.$(OBJEXT) error.$(OBJEXT) misctest.$(OBJEXT) \ - rec.$(OBJEXT) slabs.$(OBJEXT) val.$(OBJEXT) vardef.$(OBJEXT) \ - varget.$(OBJEXT) vargetg.$(OBJEXT) varput.$(OBJEXT) \ - varputg.$(OBJEXT) vartests.$(OBJEXT) vputget.$(OBJEXT) \ - vputgetg.$(OBJEXT) -nctest_OBJECTS = $(am_nctest_OBJECTS) -nctest_LDADD = $(LDADD) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -tst_rename_SOURCES = tst_rename.c -tst_rename_OBJECTS = tst_rename.$(OBJEXT) -tst_rename_LDADD = $(LDADD) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/add.Po ./$(DEPDIR)/atttests.Po \ - ./$(DEPDIR)/cdftests.Po ./$(DEPDIR)/dimtests.Po \ - ./$(DEPDIR)/driver.Po ./$(DEPDIR)/emalloc.Po \ - ./$(DEPDIR)/error.Po ./$(DEPDIR)/misctest.Po \ - ./$(DEPDIR)/rec.Po ./$(DEPDIR)/slabs.Po \ - ./$(DEPDIR)/tst_rename.Po ./$(DEPDIR)/val.Po \ - ./$(DEPDIR)/vardef.Po ./$(DEPDIR)/varget.Po \ - ./$(DEPDIR)/vargetg.Po ./$(DEPDIR)/varput.Po \ - ./$(DEPDIR)/varputg.Po ./$(DEPDIR)/vartests.Po \ - ./$(DEPDIR)/vputget.Po ./$(DEPDIR)/vputgetg.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(nctest_SOURCES) tst_rename.c -DIST_SOURCES = $(nctest_SOURCES) tst_rename.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/lib_flags.am README -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ - -# Put together AM_CPPFLAGS and AM_LDFLAGS. -AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# Running nctest results in a file testfile.nc, which is then checked -# to make sure it matches testfile_nc.sav, which was generated under -# precisely controlled conditions at the netCDF Test Facility, -# (located in sub-basement 42 of UCAR Compound 4). testfile_nc.sav was -# generated in a pressurized chamber that exactly simulated the -# atmosphere on the surface of Mars. -EXTRA_DIST = ref_nctest_classic.nc ref_nctest_64bit_offset.nc \ -compare_test_files.sh run_valgrind_tests.sh CMakeLists.txt - -CLEANFILES = nctest_classic.nc nctest_64bit_offset.nc \ -nctest_netcdf4.nc test2.nc temp.tmp tst_*.nc \ -nctest_classic.cdl ref_nctest_classic.cdl - - -# Run nctest and the script that compares the output with the -# reference file. -TESTPROGRAMS = nctest tst_rename - -# These are the source files for the nctest program. -nctest_SOURCES = add.c add.h atttests.c cdftests.c dimtests.c driver.c \ -emalloc.c emalloc.h error.c error.h misctest.c rec.c slabs.c testcdf.h \ -tests.h val.c val.h vardef.c varget.c vargetg.c varput.c varputg.c \ -vartests.c vputget.c vputgetg.c - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 nctest/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign nctest/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/lib_flags.am $(am__empty): - -$(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): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -nctest$(EXEEXT): $(nctest_OBJECTS) $(nctest_DEPENDENCIES) $(EXTRA_nctest_DEPENDENCIES) - @rm -f nctest$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(nctest_OBJECTS) $(nctest_LDADD) $(LIBS) - -tst_rename$(EXEEXT): $(tst_rename_OBJECTS) $(tst_rename_DEPENDENCIES) $(EXTRA_tst_rename_DEPENDENCIES) - @rm -f tst_rename$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tst_rename_OBJECTS) $(tst_rename_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atttests.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdftests.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dimtests.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emalloc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misctest.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rec.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slabs.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_rename.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/val.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vardef.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varget.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vargetg.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varput.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varputg.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vartests.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vputget.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vputgetg.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/add.Po - -rm -f ./$(DEPDIR)/atttests.Po - -rm -f ./$(DEPDIR)/cdftests.Po - -rm -f ./$(DEPDIR)/dimtests.Po - -rm -f ./$(DEPDIR)/driver.Po - -rm -f ./$(DEPDIR)/emalloc.Po - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/misctest.Po - -rm -f ./$(DEPDIR)/rec.Po - -rm -f ./$(DEPDIR)/slabs.Po - -rm -f ./$(DEPDIR)/tst_rename.Po - -rm -f ./$(DEPDIR)/val.Po - -rm -f ./$(DEPDIR)/vardef.Po - -rm -f ./$(DEPDIR)/varget.Po - -rm -f ./$(DEPDIR)/vargetg.Po - -rm -f ./$(DEPDIR)/varput.Po - -rm -f ./$(DEPDIR)/varputg.Po - -rm -f ./$(DEPDIR)/vartests.Po - -rm -f ./$(DEPDIR)/vputget.Po - -rm -f ./$(DEPDIR)/vputgetg.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/add.Po - -rm -f ./$(DEPDIR)/atttests.Po - -rm -f ./$(DEPDIR)/cdftests.Po - -rm -f ./$(DEPDIR)/dimtests.Po - -rm -f ./$(DEPDIR)/driver.Po - -rm -f ./$(DEPDIR)/emalloc.Po - -rm -f ./$(DEPDIR)/error.Po - -rm -f ./$(DEPDIR)/misctest.Po - -rm -f ./$(DEPDIR)/rec.Po - -rm -f ./$(DEPDIR)/slabs.Po - -rm -f ./$(DEPDIR)/tst_rename.Po - -rm -f ./$(DEPDIR)/val.Po - -rm -f ./$(DEPDIR)/vardef.Po - -rm -f ./$(DEPDIR)/varget.Po - -rm -f ./$(DEPDIR)/vargetg.Po - -rm -f ./$(DEPDIR)/varput.Po - -rm -f ./$(DEPDIR)/varputg.Po - -rm -f ./$(DEPDIR)/vartests.Po - -rm -f ./$(DEPDIR)/vputget.Po - -rm -f ./$(DEPDIR)/vputgetg.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# 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/contrib/netcdf/4.4.1.1/nctest/README b/contrib/netcdf/4.4.1.1/nctest/README deleted file mode 100644 index 340fcb1d73a..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/README +++ /dev/null @@ -1,44 +0,0 @@ -This directory contains source code for nctest, an extensive test -program for the entire netCDF library. Before compiling the sources in -this directory, you must have already made the netCDF library from the -../src directory. - -For UNIX, just type "make". Then, when "nctest" is successfully made, -invoke it with "nctest". - -For VMS, type "@make". The make.com, make.opt, and *-vms files are for -VMS only. When nctest.exe is successfully made, invoke it with "run -nctest". - -Output from the test program should look like the following: ---- Testing nccreate ... ---- Testing ncopen ... ---- Testing ncredef ... ---- Testing ncendef ... ---- Testing ncclose ... ---- Testing ncinquire ... ---- Testing ncsync ... ---- Testing ncabort ... ---- Testing ncdimdef ... ---- Testing ncdimid ... ---- Testing ncdiminq ... ---- Testing ncdimrename ... ---- Testing ncvardef ... ---- Testing ncvarid ... ---- Testing ncvarinq ... ---- Testing ncvarput1 ... ---- Testing ncvarget1 ... ---- Testing ncvarput ... ---- Testing ncvarget ... ---- Testing ncvarrename ... ---- Testing ncattput ... ---- Testing ncattinq ... ---- Testing ncattget ... ---- Testing ncattcopy ... ---- Testing ncattname ... ---- Testing ncattrename ... ---- Testing ncattdel ... ---- Testing nctypelen ... -except that on VMS systems, the line "Doesn't support shared access on -vms" will appear a couple of times after the "ncopen" and "ncsync" -tests. diff --git a/contrib/netcdf/4.4.1.1/nctest/compare_test_files.sh b/contrib/netcdf/4.4.1.1/nctest/compare_test_files.sh deleted file mode 100755 index 57c6d411d34..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/compare_test_files.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -set -e -if test "x$srcdir" = x ; then -srcdir=`pwd` -fi -cmp nctest_classic.nc $srcdir/ref_nctest_classic.nc -cmp nctest_64bit_offset.nc $srcdir/ref_nctest_64bit_offset.nc - diff --git a/contrib/netcdf/4.4.1.1/nctest/driver.c b/contrib/netcdf/4.4.1.1/nctest/driver.c deleted file mode 100644 index 0830929f5eb..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/driver.c +++ /dev/null @@ -1,135 +0,0 @@ -/********************************************************************* - * Copyright 1993-2006, UCAR/Unidata - * See COPYRIGHT file for copying and redistribution conditions. - * - * Test driver for netCDF implementation. This program performs tests - * against the netCDF specification for all user-level functions in an - * implementation of the netCDF library. Must be invoked from a - * directory in which the invoker has write permission. - * - * $Id: driver.c,v 1.32 2008/10/20 01:48:07 ed Exp $ - *********************************************************************/ - -#include -#include -#include -#include -#include -#include "testcdf.h" /* defines in-memory test netcdf structure */ -#include "tests.h" - -/* Test everything for classic and 64-bit offsetfiles. If netcdf-4 is - * included, that means another whole round of testing. */ -#ifdef USE_NETCDF4 -#define NUM_FORMATS (3) -#else -#define NUM_FORMATS (2) -#endif - -int -main(int argc, char **argv) -{ - /*EXTERNL int ncopts; */ /* netCDF error options */ - char *testfiles[] = {"nonesuch", "nctest_classic.nc", - "nctest_64bit_offset.nc", "nctest_netcdf4.nc"}; - char *testfile = NULL; - int i, nerrs = 0; - - ncopts &= ~NC_FATAL; /* make errors nonfatal */ - ncopts &= ~NC_VERBOSE; /* turn off error messages */ - - fprintf(stderr, "Testing V2 API with %d different netCDF formats.\n", - NUM_FORMATS); - - for (i = 1; i <= NUM_FORMATS; i++) - { - switch (i) - { - case NC_FORMAT_CLASSIC: - nc_set_default_format(NC_FORMAT_CLASSIC, NULL); - fprintf(stderr, "\n\nSwitching to netCDF classic format.\n"); - break; - case NC_FORMAT_64BIT_OFFSET: - nc_set_default_format(NC_FORMAT_64BIT_OFFSET, NULL); - fprintf(stderr, "\n\nSwitching to 64-bit offset format.\n"); - break; -#ifdef USE_NETCDF4 - case NC_FORMAT_NETCDF4: /* actually it's _CLASSIC. */ - nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL); - fprintf(stderr, "\n\nSwitching to netCDF-4 format (with NC_CLASSIC_MODEL).\n"); - break; -#endif - default: - fprintf(stderr, "Unexpected format!\n"); - return 2; - } - testfile = testfiles[i]; - - /* Run all the tests for this format. */ - - nerrs += test_nccreate(testfile); - nerrs += test_ncopen(testfile); - nerrs += test_ncredef(testfile); - nerrs += test_ncendef(testfile); - nerrs += test_ncclose(testfile); - nerrs += test_ncinquire(testfile); - nerrs += test_ncsync(testfile); - nerrs += test_ncabort(testfile); - nerrs += test_ncdimdef(testfile); - nerrs += test_ncdimid(testfile); - nerrs += test_ncdiminq(testfile); - nerrs += test_ncdimrename(testfile); - nerrs += test_ncvardef(testfile); - nerrs += test_ncvarid(testfile); - nerrs += test_ncvarinq(testfile); - nerrs += test_ncvarputg(testfile); - nerrs += test_ncvarput1(testfile); - nerrs += test_ncvarget1(testfile); - nerrs += test_ncvarput(testfile); - nerrs += test_ncvarget(testfile); - nerrs += test_ncvarputg(testfile); - nerrs += test_ncvargetg(testfile); - nerrs += test_ncrecinq(testfile); - nerrs += test_ncrecput(testfile); - nerrs += test_ncrecget(testfile); - nerrs += test_ncvarrename(testfile); - nerrs += test_ncattput(testfile); - nerrs += test_ncattinq(testfile); - nerrs += test_ncattget(testfile); - nerrs += test_ncattcopy(testfile, "test2.nc"); - nerrs += test_ncattname(testfile); - nerrs += test_ncattrename(testfile); - nerrs += test_ncattdel(testfile); - nerrs += test_nctypelen(); - - /* Clean up in-memory struct. */ - { - int i; - - for (i = 0; i < test.ndims; i++) - free(test.dims[i].name); - - for (i = 0; i < test.nvars; i++) - { - free(test.vars[i].name); - free(test.vars[i].dims); - } - - for (i = 0; i < test.natts; i++) - free(test.atts[i].name); - - } - } - - fprintf(stderr, "\nTotal number of failures: %d\n", nerrs); - - if (nerrs) - { - fprintf(stderr, "nctest FAILURE!!!\n"); - return 2; - } - else - fprintf(stderr, "nctest SUCCESS!!!\n"); - - return 0; -} diff --git a/contrib/netcdf/4.4.1.1/nctest/run_valgrind_tests.sh b/contrib/netcdf/4.4.1.1/nctest/run_valgrind_tests.sh deleted file mode 100755 index 256d8d15c0d..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/run_valgrind_tests.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# This shell runs the tests with valgrind. - -# $Id: run_valgrind_tests.sh,v 1.9 2010/01/26 20:24:18 ed Exp $ - -set -e -echo "" -echo "Testing programs with valgrind..." - -# These are my test programs. -list='nctest tst_rename' - -# These don't work yet: tst_fills tst_xplatform2 tst_interops6 tst_strings - -for tst in $list; do - echo "" - cmd1="valgrind -q --error-exitcode=2 --leak-check=full ./$tst" - echo "$cmd1:" - $cmd1 -done - -echo "SUCCESS!!!" - -exit 0 diff --git a/contrib/netcdf/4.4.1.1/nctest/tests.h b/contrib/netcdf/4.4.1.1/nctest/tests.h deleted file mode 100644 index 0a20316ce62..00000000000 --- a/contrib/netcdf/4.4.1.1/nctest/tests.h +++ /dev/null @@ -1,52 +0,0 @@ -/********************************************************************* - * Copyright 1993 - 2005, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header: /upc/share/CVS/netcdf-3/nctest/tests.h,v 1.8 2006/10/31 16:23:47 ed Exp $ - *********************************************************************/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - extern int test_nccreate(const char*); - extern int test_ncopen(const char*); - extern int test_ncredef(const char*); - extern int test_ncendef(const char*); - extern int test_ncclose(const char*); - extern int test_ncinquire(const char*); - extern int test_ncsync(const char*); - extern int test_ncabort(const char*); - extern int test_ncdimdef(const char*); - extern int test_ncdimid(const char*); - extern int test_ncdiminq(const char*); - extern int test_ncdimrename(const char*); - extern int test_ncvardef(const char*); - extern int test_ncvarid(const char*); - extern int test_ncvarinq(const char*); - extern int test_ncvarput1(const char*); - extern int test_ncvarget1(const char*); - extern int test_ncvarput(const char*); - extern int test_ncvarget(const char*); - extern int test_ncvarputg(const char*); - extern int test_ncvargetg(const char*); - extern int test_ncrecinq(const char*); - extern int test_ncrecput(const char*); - extern int test_ncrecget(const char*); - extern int test_ncvarrename(const char*); - extern int test_ncattput(const char*); - extern int test_ncattinq(const char*); - extern int test_ncattget(const char*); - extern int test_ncattcopy(const char*, const char*); - extern int test_ncattname(const char*); - extern int test_ncattrename(const char*); - extern int test_ncattdel(const char*); - extern int test_nctypelen(void); - extern int test_varputget(int); - extern int test_varputgetg(int); - extern int test_slabs(int); - -#ifdef __cplusplus -} -#endif diff --git a/contrib/netcdf/4.4.1.1/oc2/CMakeLists.txt b/contrib/netcdf/4.4.1.1/oc2/CMakeLists.txt deleted file mode 100644 index 0a0fae1d743..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -SET(oc_SOURCES oc.c daplex.c dapparse.c dapy.c occlientparams.c occompile.c occurlfunctions.c ocdata.c ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocrc.c ocread.c ocutil.c ocbytes.c oclist.c ocuri.c oclog.c occurlflags.c xxdr.c) - -add_library(oc2 OBJECT ${oc_SOURCES}) - -## Specify files to be distributed by 'make dist' -FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} dap.y) -SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} ocauth.html) -ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/4.4.1.1/oc2/Makefile.am b/contrib/netcdf/4.4.1.1/oc2/Makefile.am deleted file mode 100755 index df004e945da..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/Makefile.am +++ /dev/null @@ -1,54 +0,0 @@ -## This is a automake file, part of Unidata's netCDF package. -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build netCDF-4. The -# generated makefile is not run unless the user selected to build -# netCDF-4. - -# $Id: Makefile.am,v 1.1 2010/05/23 21:05:33 dmh Exp $ - -# Cause C preprocessor to search current and parent directory. -AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/include - -# OC Sources; include the dapy.[ch] to avoid the need for bison by user -SRC=oc.c \ -daplex.c dapparse.c dapy.c \ -occlientparams.c occompile.c occurlfunctions.c \ -ocdata.c ocdebug.c ocdump.c \ -ocinternal.c ocnode.c \ -ochttp.c \ -ocrc.c ocread.c ocutil.c \ -ocbytes.c oclist.c ocuri.c oclog.c \ -occurlflags.c \ -xxdr.c - -HDRS=oc.h ocx.h \ -dapparselex.h dapy.h \ -occlientparams.h occompile.h occonstraints.h occurlfunctions.h \ -ocdata.h ocdatatypes.h ocdebug.h ocdump.h \ -ocinternal.h ocnode.h \ -ochttp.h ocread.h ocutil.h \ -ocbytes.h oclist.h ocuri.h oclog.h \ -xxdr.h - -EXTRA_DIST = dap.y CMakeLists.txt auth.html.in oc.css - -if BUILD_DAP -noinst_LTLIBRARIES = liboc.la -liboc_la_SOURCES = $(SRC) $(HDRS) -liboc_la_CPPFLAGS = $(AM_CPPFLAGS) -endif - -# These rule are used if someone wants to rebuild the grammar files. -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -.PHONEY: bison - -bison:: dap.y - rm -f dap.tab.c dap.tab.h - bison --debug -d -p dap dap.y - mv dap.tab.c dapy.c; mv dap.tab.h dapy.h - - diff --git a/contrib/netcdf/4.4.1.1/oc2/Makefile.in b/contrib/netcdf/4.4.1.1/oc2/Makefile.in deleted file mode 100644 index 4b8c26e3a1b..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/Makefile.in +++ /dev/null @@ -1,952 +0,0 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2018 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. - -@SET_MAKE@ - -# Copyright 2005, see the COPYRIGHT file for more information. - -# This automake file generates the Makefile to build netCDF-4. The -# generated makefile is not run unless the user selected to build -# netCDF-4. - -# $Id: Makefile.am,v 1.1 2010/05/23 21:05:33 dmh Exp $ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -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 = oc2 -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)/acinclude.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -liboc_la_LIBADD = -am__liboc_la_SOURCES_DIST = oc.c daplex.c dapparse.c dapy.c \ - occlientparams.c occompile.c occurlfunctions.c ocdata.c \ - ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocrc.c \ - ocread.c ocutil.c ocbytes.c oclist.c ocuri.c oclog.c \ - occurlflags.c xxdr.c oc.h ocx.h dapparselex.h dapy.h \ - occlientparams.h occompile.h occonstraints.h occurlfunctions.h \ - ocdata.h ocdatatypes.h ocdebug.h ocdump.h ocinternal.h \ - ocnode.h ochttp.h ocread.h ocutil.h ocbytes.h oclist.h ocuri.h \ - oclog.h xxdr.h -am__objects_1 = liboc_la-oc.lo liboc_la-daplex.lo liboc_la-dapparse.lo \ - liboc_la-dapy.lo liboc_la-occlientparams.lo \ - liboc_la-occompile.lo liboc_la-occurlfunctions.lo \ - liboc_la-ocdata.lo liboc_la-ocdebug.lo liboc_la-ocdump.lo \ - liboc_la-ocinternal.lo liboc_la-ocnode.lo liboc_la-ochttp.lo \ - liboc_la-ocrc.lo liboc_la-ocread.lo liboc_la-ocutil.lo \ - liboc_la-ocbytes.lo liboc_la-oclist.lo liboc_la-ocuri.lo \ - liboc_la-oclog.lo liboc_la-occurlflags.lo liboc_la-xxdr.lo -am__objects_2 = -@BUILD_DAP_TRUE@am_liboc_la_OBJECTS = $(am__objects_1) \ -@BUILD_DAP_TRUE@ $(am__objects_2) -liboc_la_OBJECTS = $(am_liboc_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -@BUILD_DAP_TRUE@am_liboc_la_rpath = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/liboc_la-daplex.Plo \ - ./$(DEPDIR)/liboc_la-dapparse.Plo \ - ./$(DEPDIR)/liboc_la-dapy.Plo ./$(DEPDIR)/liboc_la-oc.Plo \ - ./$(DEPDIR)/liboc_la-ocbytes.Plo \ - ./$(DEPDIR)/liboc_la-occlientparams.Plo \ - ./$(DEPDIR)/liboc_la-occompile.Plo \ - ./$(DEPDIR)/liboc_la-occurlflags.Plo \ - ./$(DEPDIR)/liboc_la-occurlfunctions.Plo \ - ./$(DEPDIR)/liboc_la-ocdata.Plo \ - ./$(DEPDIR)/liboc_la-ocdebug.Plo \ - ./$(DEPDIR)/liboc_la-ocdump.Plo \ - ./$(DEPDIR)/liboc_la-ochttp.Plo \ - ./$(DEPDIR)/liboc_la-ocinternal.Plo \ - ./$(DEPDIR)/liboc_la-oclist.Plo ./$(DEPDIR)/liboc_la-oclog.Plo \ - ./$(DEPDIR)/liboc_la-ocnode.Plo ./$(DEPDIR)/liboc_la-ocrc.Plo \ - ./$(DEPDIR)/liboc_la-ocread.Plo ./$(DEPDIR)/liboc_la-ocuri.Plo \ - ./$(DEPDIR)/liboc_la-ocutil.Plo ./$(DEPDIR)/liboc_la-xxdr.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(liboc_la_SOURCES) -DIST_SOURCES = $(am__liboc_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_CFLAGS = @AM_CFLAGS@ - -# Cause C preprocessor to search current and parent directory. -AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/include -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AM_LDFLAGS = @AM_LDFLAGS@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINFILE_NAME = @BINFILE_NAME@ -BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_VERSION = @CC_VERSION@ -CFLAGS = @CFLAGS@ -CONFIG_DATE = @CONFIG_DATE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -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_DISKLESS = @HAS_DISKLESS@ -HAS_HDF4 = @HAS_HDF4@ -HAS_HDF5 = @HAS_HDF5@ -HAS_JNA = @HAS_JNA@ -HAS_LOGGING = @HAS_LOGGING@ -HAS_MMAP = @HAS_MMAP@ -HAS_NC2 = @HAS_NC2@ -HAS_NC4 = @HAS_NC4@ -HAS_PARALLEL = @HAS_PARALLEL@ -HAS_PARALLEL4 = @HAS_PARALLEL4@ -HAS_PNETCDF = @HAS_PNETCDF@ -HAS_SZLIB = @HAS_SZLIB@ -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@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ -NC_HAS_DAP = @NC_HAS_DAP@ -NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ -NC_HAS_HDF4 = @NC_HAS_HDF4@ -NC_HAS_HDF5 = @NC_HAS_HDF5@ -NC_HAS_JNA = @NC_HAS_JNA@ -NC_HAS_MMAP = @NC_HAS_MMAP@ -NC_HAS_NC2 = @NC_HAS_NC2@ -NC_HAS_NC4 = @NC_HAS_NC4@ -NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ -NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ -NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ -NC_HAS_SZIP = @NC_HAS_SZIP@ -NC_LIBS = @NC_LIBS@ -NC_M4 = @NC_M4@ -NC_VERSION = @NC_VERSION@ -NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ -NC_VERSION_MINOR = @NC_VERSION_MINOR@ -NC_VERSION_NOTE = @NC_VERSION_NOTE@ -NC_VERSION_PATCH = @NC_VERSION_PATCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NOUNDEFINED = @NOUNDEFINED@ -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@ -SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ -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_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@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -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@ - -# OC Sources; include the dapy.[ch] to avoid the need for bison by user -SRC = oc.c \ -daplex.c dapparse.c dapy.c \ -occlientparams.c occompile.c occurlfunctions.c \ -ocdata.c ocdebug.c ocdump.c \ -ocinternal.c ocnode.c \ -ochttp.c \ -ocrc.c ocread.c ocutil.c \ -ocbytes.c oclist.c ocuri.c oclog.c \ -occurlflags.c \ -xxdr.c - -HDRS = oc.h ocx.h \ -dapparselex.h dapy.h \ -occlientparams.h occompile.h occonstraints.h occurlfunctions.h \ -ocdata.h ocdatatypes.h ocdebug.h ocdump.h \ -ocinternal.h ocnode.h \ -ochttp.h ocread.h ocutil.h \ -ocbytes.h oclist.h ocuri.h oclog.h \ -xxdr.h - -EXTRA_DIST = dap.y CMakeLists.txt auth.html.in oc.css -@BUILD_DAP_TRUE@noinst_LTLIBRARIES = liboc.la -@BUILD_DAP_TRUE@liboc_la_SOURCES = $(SRC) $(HDRS) -@BUILD_DAP_TRUE@liboc_la_CPPFLAGS = $(AM_CPPFLAGS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(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 oc2/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign oc2/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - 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): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -liboc.la: $(liboc_la_OBJECTS) $(liboc_la_DEPENDENCIES) $(EXTRA_liboc_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(am_liboc_la_rpath) $(liboc_la_OBJECTS) $(liboc_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-daplex.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-dapparse.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-dapy.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-oc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocbytes.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-occlientparams.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-occompile.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-occurlflags.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-occurlfunctions.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocdata.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocdebug.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocdump.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ochttp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocinternal.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-oclist.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-oclog.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocnode.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocrc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocread.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocuri.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-ocutil.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboc_la-xxdr.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -liboc_la-oc.lo: oc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oc.lo -MD -MP -MF $(DEPDIR)/liboc_la-oc.Tpo -c -o liboc_la-oc.lo `test -f 'oc.c' || echo '$(srcdir)/'`oc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oc.Tpo $(DEPDIR)/liboc_la-oc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oc.c' object='liboc_la-oc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oc.lo `test -f 'oc.c' || echo '$(srcdir)/'`oc.c - -liboc_la-daplex.lo: daplex.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-daplex.lo -MD -MP -MF $(DEPDIR)/liboc_la-daplex.Tpo -c -o liboc_la-daplex.lo `test -f 'daplex.c' || echo '$(srcdir)/'`daplex.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-daplex.Tpo $(DEPDIR)/liboc_la-daplex.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daplex.c' object='liboc_la-daplex.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-daplex.lo `test -f 'daplex.c' || echo '$(srcdir)/'`daplex.c - -liboc_la-dapparse.lo: dapparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-dapparse.lo -MD -MP -MF $(DEPDIR)/liboc_la-dapparse.Tpo -c -o liboc_la-dapparse.lo `test -f 'dapparse.c' || echo '$(srcdir)/'`dapparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-dapparse.Tpo $(DEPDIR)/liboc_la-dapparse.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapparse.c' object='liboc_la-dapparse.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-dapparse.lo `test -f 'dapparse.c' || echo '$(srcdir)/'`dapparse.c - -liboc_la-dapy.lo: dapy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-dapy.lo -MD -MP -MF $(DEPDIR)/liboc_la-dapy.Tpo -c -o liboc_la-dapy.lo `test -f 'dapy.c' || echo '$(srcdir)/'`dapy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-dapy.Tpo $(DEPDIR)/liboc_la-dapy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapy.c' object='liboc_la-dapy.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-dapy.lo `test -f 'dapy.c' || echo '$(srcdir)/'`dapy.c - -liboc_la-occlientparams.lo: occlientparams.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occlientparams.lo -MD -MP -MF $(DEPDIR)/liboc_la-occlientparams.Tpo -c -o liboc_la-occlientparams.lo `test -f 'occlientparams.c' || echo '$(srcdir)/'`occlientparams.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occlientparams.Tpo $(DEPDIR)/liboc_la-occlientparams.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occlientparams.c' object='liboc_la-occlientparams.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occlientparams.lo `test -f 'occlientparams.c' || echo '$(srcdir)/'`occlientparams.c - -liboc_la-occompile.lo: occompile.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occompile.lo -MD -MP -MF $(DEPDIR)/liboc_la-occompile.Tpo -c -o liboc_la-occompile.lo `test -f 'occompile.c' || echo '$(srcdir)/'`occompile.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occompile.Tpo $(DEPDIR)/liboc_la-occompile.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occompile.c' object='liboc_la-occompile.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occompile.lo `test -f 'occompile.c' || echo '$(srcdir)/'`occompile.c - -liboc_la-occurlfunctions.lo: occurlfunctions.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occurlfunctions.lo -MD -MP -MF $(DEPDIR)/liboc_la-occurlfunctions.Tpo -c -o liboc_la-occurlfunctions.lo `test -f 'occurlfunctions.c' || echo '$(srcdir)/'`occurlfunctions.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occurlfunctions.Tpo $(DEPDIR)/liboc_la-occurlfunctions.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occurlfunctions.c' object='liboc_la-occurlfunctions.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occurlfunctions.lo `test -f 'occurlfunctions.c' || echo '$(srcdir)/'`occurlfunctions.c - -liboc_la-ocdata.lo: ocdata.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdata.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdata.Tpo -c -o liboc_la-ocdata.lo `test -f 'ocdata.c' || echo '$(srcdir)/'`ocdata.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdata.Tpo $(DEPDIR)/liboc_la-ocdata.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdata.c' object='liboc_la-ocdata.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdata.lo `test -f 'ocdata.c' || echo '$(srcdir)/'`ocdata.c - -liboc_la-ocdebug.lo: ocdebug.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdebug.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdebug.Tpo -c -o liboc_la-ocdebug.lo `test -f 'ocdebug.c' || echo '$(srcdir)/'`ocdebug.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdebug.Tpo $(DEPDIR)/liboc_la-ocdebug.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdebug.c' object='liboc_la-ocdebug.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdebug.lo `test -f 'ocdebug.c' || echo '$(srcdir)/'`ocdebug.c - -liboc_la-ocdump.lo: ocdump.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdump.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdump.Tpo -c -o liboc_la-ocdump.lo `test -f 'ocdump.c' || echo '$(srcdir)/'`ocdump.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdump.Tpo $(DEPDIR)/liboc_la-ocdump.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdump.c' object='liboc_la-ocdump.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdump.lo `test -f 'ocdump.c' || echo '$(srcdir)/'`ocdump.c - -liboc_la-ocinternal.lo: ocinternal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocinternal.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocinternal.Tpo -c -o liboc_la-ocinternal.lo `test -f 'ocinternal.c' || echo '$(srcdir)/'`ocinternal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocinternal.Tpo $(DEPDIR)/liboc_la-ocinternal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocinternal.c' object='liboc_la-ocinternal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocinternal.lo `test -f 'ocinternal.c' || echo '$(srcdir)/'`ocinternal.c - -liboc_la-ocnode.lo: ocnode.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocnode.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocnode.Tpo -c -o liboc_la-ocnode.lo `test -f 'ocnode.c' || echo '$(srcdir)/'`ocnode.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocnode.Tpo $(DEPDIR)/liboc_la-ocnode.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocnode.c' object='liboc_la-ocnode.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocnode.lo `test -f 'ocnode.c' || echo '$(srcdir)/'`ocnode.c - -liboc_la-ochttp.lo: ochttp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ochttp.lo -MD -MP -MF $(DEPDIR)/liboc_la-ochttp.Tpo -c -o liboc_la-ochttp.lo `test -f 'ochttp.c' || echo '$(srcdir)/'`ochttp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ochttp.Tpo $(DEPDIR)/liboc_la-ochttp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ochttp.c' object='liboc_la-ochttp.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ochttp.lo `test -f 'ochttp.c' || echo '$(srcdir)/'`ochttp.c - -liboc_la-ocrc.lo: ocrc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocrc.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocrc.Tpo -c -o liboc_la-ocrc.lo `test -f 'ocrc.c' || echo '$(srcdir)/'`ocrc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocrc.Tpo $(DEPDIR)/liboc_la-ocrc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocrc.c' object='liboc_la-ocrc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocrc.lo `test -f 'ocrc.c' || echo '$(srcdir)/'`ocrc.c - -liboc_la-ocread.lo: ocread.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocread.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocread.Tpo -c -o liboc_la-ocread.lo `test -f 'ocread.c' || echo '$(srcdir)/'`ocread.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocread.Tpo $(DEPDIR)/liboc_la-ocread.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocread.c' object='liboc_la-ocread.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocread.lo `test -f 'ocread.c' || echo '$(srcdir)/'`ocread.c - -liboc_la-ocutil.lo: ocutil.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocutil.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocutil.Tpo -c -o liboc_la-ocutil.lo `test -f 'ocutil.c' || echo '$(srcdir)/'`ocutil.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocutil.Tpo $(DEPDIR)/liboc_la-ocutil.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocutil.c' object='liboc_la-ocutil.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocutil.lo `test -f 'ocutil.c' || echo '$(srcdir)/'`ocutil.c - -liboc_la-ocbytes.lo: ocbytes.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocbytes.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocbytes.Tpo -c -o liboc_la-ocbytes.lo `test -f 'ocbytes.c' || echo '$(srcdir)/'`ocbytes.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocbytes.Tpo $(DEPDIR)/liboc_la-ocbytes.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocbytes.c' object='liboc_la-ocbytes.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocbytes.lo `test -f 'ocbytes.c' || echo '$(srcdir)/'`ocbytes.c - -liboc_la-oclist.lo: oclist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oclist.lo -MD -MP -MF $(DEPDIR)/liboc_la-oclist.Tpo -c -o liboc_la-oclist.lo `test -f 'oclist.c' || echo '$(srcdir)/'`oclist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oclist.Tpo $(DEPDIR)/liboc_la-oclist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oclist.c' object='liboc_la-oclist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oclist.lo `test -f 'oclist.c' || echo '$(srcdir)/'`oclist.c - -liboc_la-ocuri.lo: ocuri.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocuri.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocuri.Tpo -c -o liboc_la-ocuri.lo `test -f 'ocuri.c' || echo '$(srcdir)/'`ocuri.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocuri.Tpo $(DEPDIR)/liboc_la-ocuri.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocuri.c' object='liboc_la-ocuri.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocuri.lo `test -f 'ocuri.c' || echo '$(srcdir)/'`ocuri.c - -liboc_la-oclog.lo: oclog.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oclog.lo -MD -MP -MF $(DEPDIR)/liboc_la-oclog.Tpo -c -o liboc_la-oclog.lo `test -f 'oclog.c' || echo '$(srcdir)/'`oclog.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oclog.Tpo $(DEPDIR)/liboc_la-oclog.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oclog.c' object='liboc_la-oclog.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oclog.lo `test -f 'oclog.c' || echo '$(srcdir)/'`oclog.c - -liboc_la-occurlflags.lo: occurlflags.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occurlflags.lo -MD -MP -MF $(DEPDIR)/liboc_la-occurlflags.Tpo -c -o liboc_la-occurlflags.lo `test -f 'occurlflags.c' || echo '$(srcdir)/'`occurlflags.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occurlflags.Tpo $(DEPDIR)/liboc_la-occurlflags.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occurlflags.c' object='liboc_la-occurlflags.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occurlflags.lo `test -f 'occurlflags.c' || echo '$(srcdir)/'`occurlflags.c - -liboc_la-xxdr.lo: xxdr.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-xxdr.lo -MD -MP -MF $(DEPDIR)/liboc_la-xxdr.Tpo -c -o liboc_la-xxdr.lo `test -f 'xxdr.c' || echo '$(srcdir)/'`xxdr.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-xxdr.Tpo $(DEPDIR)/liboc_la-xxdr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xxdr.c' object='liboc_la-xxdr.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-xxdr.lo `test -f 'xxdr.c' || echo '$(srcdir)/'`xxdr.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/liboc_la-daplex.Plo - -rm -f ./$(DEPDIR)/liboc_la-dapparse.Plo - -rm -f ./$(DEPDIR)/liboc_la-dapy.Plo - -rm -f ./$(DEPDIR)/liboc_la-oc.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocbytes.Plo - -rm -f ./$(DEPDIR)/liboc_la-occlientparams.Plo - -rm -f ./$(DEPDIR)/liboc_la-occompile.Plo - -rm -f ./$(DEPDIR)/liboc_la-occurlflags.Plo - -rm -f ./$(DEPDIR)/liboc_la-occurlfunctions.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdata.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdebug.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdump.Plo - -rm -f ./$(DEPDIR)/liboc_la-ochttp.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocinternal.Plo - -rm -f ./$(DEPDIR)/liboc_la-oclist.Plo - -rm -f ./$(DEPDIR)/liboc_la-oclog.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocnode.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocrc.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocread.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocuri.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocutil.Plo - -rm -f ./$(DEPDIR)/liboc_la-xxdr.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/liboc_la-daplex.Plo - -rm -f ./$(DEPDIR)/liboc_la-dapparse.Plo - -rm -f ./$(DEPDIR)/liboc_la-dapy.Plo - -rm -f ./$(DEPDIR)/liboc_la-oc.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocbytes.Plo - -rm -f ./$(DEPDIR)/liboc_la-occlientparams.Plo - -rm -f ./$(DEPDIR)/liboc_la-occompile.Plo - -rm -f ./$(DEPDIR)/liboc_la-occurlflags.Plo - -rm -f ./$(DEPDIR)/liboc_la-occurlfunctions.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdata.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdebug.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocdump.Plo - -rm -f ./$(DEPDIR)/liboc_la-ochttp.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocinternal.Plo - -rm -f ./$(DEPDIR)/liboc_la-oclist.Plo - -rm -f ./$(DEPDIR)/liboc_la-oclog.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocnode.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocrc.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocread.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocuri.Plo - -rm -f ./$(DEPDIR)/liboc_la-ocutil.Plo - -rm -f ./$(DEPDIR)/liboc_la-xxdr.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# These rule are used if someone wants to rebuild the grammar files. -# Otherwise never invoked, but records how to do it. -# BTW: note that renaming is essential because otherwise -# autoconf will forcibly delete files of the name *.tab.* - -.PHONEY: bison - -bison:: dap.y - rm -f dap.tab.c dap.tab.h - bison --debug -d -p dap dap.y - mv dap.tab.c dapy.c; mv dap.tab.h dapy.h - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/oc2/oc.h b/contrib/netcdf/4.4.1.1/oc2/oc.h deleted file mode 100644 index e0fa0add112..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/oc.h +++ /dev/null @@ -1,594 +0,0 @@ -/* Copyright 2014, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT dap for more information. */ - -/* -OC External Interface -Created: 4/4/2009 -Last Revised: 12/23/2014 -Version: 2.1 -*/ - -#ifndef OC_H -#define OC_H - -#include -#include -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -/*!\file oc.h -*/ - -/*!\defgroup Definitions Constants, types, etc. -@{*/ - -/*! OC_MAX_DIMS is the maximum allowable -number of dimensions. -Ideally, it should be greater or equal to max allowed by dap or netcdf -*/ -#define OC_MAX_DIMENSIONS 1024 - -/*!\enum OCdxd -Define the legal kinds of fetch: DAS, DDS, or DataDDS -*/ -typedef enum OCdxd { -OCDDS=0, -OCDAS=1, -OCDATADDS=2 -} OCdxd; - -/*!\def OCDATA -Define an alias for OCDATADDS -*/ -#define OCDATA OCDATADDS - -/*! -\typedef OCflags -Define flags for oc_fetch. -*/ -typedef int OCflags; -/*!\def OCONDISK -Cause oc_fetch to store the retrieved data on disk. -*/ - -#define OCONDISK 1 - -/**************************************************/ -/* OCtype */ - -/*!\enum OCtype -Define the set of legal types. The set is divided -into two parts. The atomic types define -leaf nodes of the DDS. The non-atomic types -are used to tag internal nodes of the DDS tree. -*/ -typedef enum OCtype { -/* Atomic Types */ -/* OC_Ubyte, OC_Char, OC_Int64 and OC_UInt64 are defined for future extension*/ -OC_NAT=0, -OC_Char=1, -OC_Byte=2, -OC_UByte=3, -OC_Int16=4, -OC_UInt16=5, -OC_Int32=6, -OC_UInt32=7, -OC_Int64=8, -OC_UInt64=9, -OC_Float32=10, -OC_Float64=11, -OC_String=12, -OC_URL=13, - -/* Non-Atomic Types */ -OC_Atomic=100, -OC_Dataset=101, -OC_Sequence=102, -OC_Grid=103, -OC_Structure=104, -OC_Dimension=105, -OC_Attribute=106, -OC_Attributeset=107, -OC_Map=108, -OC_Group=109, -} OCtype; - -/*!\enum OCerror -Define the set of error return codes. -The set consists of oc errors (negative -values) plus the set of system errors, which -are positive. -*/ -typedef enum OCerror { -OC_NOERR=0, -OC_EBADID=-1, -OC_ECHAR=-2, -OC_EDIMSIZE=-3, -OC_EEDGE=-4, -OC_EINVAL=-5, -OC_EINVALCOORDS=-6, -OC_ENOMEM=-7, -OC_ENOTVAR=-8, -OC_EPERM=-9, -OC_ESTRIDE=-10, -OC_EDAP=-11, -OC_EXDR=-12, -OC_ECURL=-13, -OC_EBADURL=-14, -OC_EBADVAR=-15, -OC_EOPEN=-16, -OC_EIO=-17, -OC_ENODATA=-18, -OC_EDAPSVC=-19, -OC_ENAMEINUSE=-20, -OC_EDAS=-21, -OC_EDDS=-22, -OC_EDATADDS=-23, -OC_ERCFILE=-24, -OC_ENOFILE=-25, -OC_EINDEX=-26, -OC_EBADTYPE=-27, -OC_ESCALAR=-28, -OC_EOVERRUN=-29, -OC_EAUTH=-30, -} OCerror; - -/*!\def OCLOGNOTE -Tag a log entry as a note. -*/ -#define OCLOGNOTE 0 -/*!\def OCLOGWARN -Tag a log entry as a warning. -*/ -#define OCLOGWARN 1 -/*!\def OCLOGERR -Tag a log entry as an error. -*/ -#define OCLOGERR 2 -/*!\def OCLOGDBG -Tag a log entry as a debug note. -*/ -#define OCLOGDBG 3 - -/**************************************************/ -/* Define the opaque types */ - -/*!\typedef OCobject -Define a common opaque type. -*/ -typedef void* OCobject; - -/*!\typedef OCddsnode -The OCddsnode type provide a reference -to a component of a DAS or DDS tree: -e.g. Sequence, Grid, Dataset, etc. -These objects -are nested, so most objects reference a container object -and subnode objects. The term ddsnode is slightly misleading -since it also covers DAS nodes. -*/ - -typedef OCobject OCddsnode; - -/*!\typedef OCdasnode -The OCdasnode is a alias for OCddsnode. -*/ - -typedef OCddsnode OCdasnode; - -/* Data data type */ -/*!\typedef OCdatanode -The OCdatanode type provide a reference -to a specific piece of data in the data -part of a Datadds. -*/ -typedef OCobject OCdatanode; - -/*!\typedef OClink -Think of OClink as analogous to the C stdio FILE structure; -it "holds" all the other state info about -a connection to the server, the url request, and the DAS/DDS/DATADDSinfo. -3/24/210: Renamed from OCconnection because of confusion about -term "connection" -*/ -typedef OCobject OClink; - -/**@}*/ - -/**************************************************/ -/* External API */ - -#ifdef __cplusplus -extern "C" { -#endif - -/**************************************************/ -/* Link management */ - -extern OCerror oc_open(const char* url, OClink*); -extern OCerror oc_close(OClink); - -/**************************************************/ -/* Tree Management */ - -extern OCerror oc_fetch(OClink, - const char* constraint, - OCdxd, - OCflags, - OCddsnode*); - -extern OCerror oc_root_free(OClink, OCddsnode root); -extern const char* oc_tree_text(OClink, OCddsnode root); - -/**************************************************/ -/* Node Management */ - -extern OCerror oc_dds_properties(OClink, OCddsnode, - char** namep, - OCtype* typep, - OCtype* atomictypep, /* if octype == OC_Atomic */ - OCddsnode* containerp, /* NULL if octype == OC_Dataset */ - size_t* rankp, /* 0 if scalar */ - size_t* nsubnodesp, - size_t* nattrp); - -/* Define some individual accessors for convenience */ - -extern OCerror oc_dds_name(OClink,OCddsnode,char**); -extern OCerror oc_dds_class(OClink,OCddsnode,OCtype*); -extern OCerror oc_dds_atomictype(OClink,OCddsnode,OCtype*); -extern OCerror oc_dds_nsubnodes(OClink,OCddsnode,size_t*); -extern OCerror oc_dds_rank(OClink,OCddsnode,size_t*); -extern OCerror oc_dds_attr_count(OClink,OCddsnode,size_t*); -extern OCerror oc_dds_root(OClink,OCddsnode,OCddsnode*); -extern OCerror oc_dds_container(OClink,OCddsnode,OCddsnode*); - -/* Aliases */ -#define oc_dds_octype oc_dds_class -#define oc_dds_type oc_dds_class - -/* Get the i'th field of the given (container) node; return OC_EINDEX - if there is no such node; return OC_EBADTYPE if node is not - a container -*/ -extern OCerror oc_dds_ithfield(OClink, OCddsnode, size_t index, OCddsnode* ithfieldp); - -/* Alias for oc_dds_ithfield */ -extern OCerror oc_dds_ithsubnode(OClink, OCddsnode, size_t, OCddsnode*); - -/* Convenience functions that are just combinations of ithfield with other functions */ - -/* Return the grid array dds node from the specified grid node*/ -extern OCerror oc_dds_gridarray(OClink, OCddsnode grid, OCddsnode* arrayp); - -/* Return the i'th grid map dds node from the specified grid dds node. - NOTE: Map indices start at ZERO. -*/ -extern OCerror oc_dds_gridmap(OClink, OCddsnode grid, size_t index, OCddsnode* mapp); - -/* Retrieve a dds node by name from a dds structure or dataset node. - return OC_EBADTYPE if node is not a container, - return OC_EINDEX if no field by the given name is found. -*/ -extern OCerror oc_dds_fieldbyname(OClink, OCddsnode, const char* name, OCddsnode* fieldp); - - -/* Return the dimension nodes, if any, associated with a given DDS node */ -/* Caller must allocate and free the vector for dimids */ -/* If the node is scalar, then return OC_ESCALAR. */ -extern OCerror oc_dds_dimensions(OClink, OCddsnode, OCddsnode* dimids); - -/* Return the i'th dimension node, if any, associated with a given object */ -/* If there is no such dimension, then return OC_EINVAL */ -extern OCerror oc_dds_ithdimension(OClink,OCddsnode, size_t, OCddsnode*); - -/* Return the size and name associated with a given dimension object - as defined in the DDS -*/ -extern OCerror oc_dimension_properties(OClink,OCddsnode,size_t*,char**); - -/* For convenience, return only the dimension sizes */ -extern OCerror oc_dds_dimensionsizes(OClink,OCddsnode,size_t* dimsizes); - -/* Attribute Management */ - -/* Obtain the attributes associated with a given DDS OCddsnode. - One specifies the DDS root to get the global attributes - The actual attribute strings are returned and the user - must do any required conversion based on the octype. - The strings vector must be allocated and freed by caller, - The contents of the strings vector must also be reclaimed - using oc_attr_reclaim(see below). - Standard practice is to call twice, once with the strings - argument == NULL so we get the number of values, - then the second time with an allocated char** vector. - -*/ -extern OCerror oc_dds_attr(OClink,OCddsnode, size_t i, - char** name, OCtype* octype, - size_t* nvalues, char** strings); - - -/* Access ith value string of a DAS OC_Attribute object. - OCddsnode of the object is assumed to be OC_Attribute. - Note that this is different than the above oc_dds_attr - that works on DDS nodes. - Note also that the return value is always a string. - Caller must free returned string. -*/ - -extern OCerror oc_das_attr_count(OClink, OCddsnode, size_t* countp); - -extern OCerror oc_das_attr(OClink,OCddsnode, size_t, OCtype*, char**); - -/**************************************************/ -/* Free up a ddsnode that is no longer being used */ -extern OCerror oc_dds_free(OClink, OCddsnode); - -/**************************************************/ -/* Data Procedures */ - -/* Given the DDS tree root, get the root data of datadds */ -extern OCerror oc_dds_getdataroot(OClink, OCddsnode treeroot, OCdatanode* rootp); - -/* Alias for oc_dds_getdataroot */ -#define oc_data_getroot oc_dds_getdataroot - -/* Return the data of the container for the specified data. - If it does not exist, then return NULL. - In effect this procedure allows one to walk up the datatree one level. -*/ -extern OCerror oc_data_container(OClink, OCdatanode data, OCdatanode* containerp); - -/* Return the root node of the data tree that contains the specified data node. - In effect this procedure allows one to walk to the root of the datatree - containing the specified datanode. -*/ -extern OCerror oc_data_root(OClink, OCdatanode data, OCdatanode* rootp); - -/* -There are multiple ways to walk down a level in a data tree -depending on what kind of node we are currently visiting. -The possibilities are: -1. current node is the data for a structure or dataset node: - => oc_data_ithfield -- get the data node corresponding - to the ith field of the structure -2. current node is the data for a grid node: - => oc_data_gridarray -- get the data node for the grid array - => oc_data_gridmap -- get the data node for the ith grid map -3. current node is the data for an array of structures - => oc_data_ithelement -- get the data node corresponding to - the i'th structure in the array - If the structure is scalar, then the indices - are ignored. -4. current node is the data for a sequence - => oc_data_ithrecord -- get the data node corresponding to - the i'th record in the sequence - -Note that the above only apply to compound objects. Once -you have the data node for an atomic types object (dimensioned -or scalar), you can read its contents using oc_data_read -or oc_data_readscalar. -*/ - -/* Return the data node for the i'th field of the specified container data */ -extern OCerror oc_data_ithfield(OClink, OCdatanode container, size_t index, - OCdatanode* fieldp); - -/* Retrieve the data node by name from a container data node */ -extern OCerror oc_dat_fieldbyname(OClink, OCdatanode, const char* name, OCdatanode* fieldp); - -/* Return the grid array data for the specified grid data */ -extern OCerror oc_data_gridarray(OClink, OCdatanode grid, OCdatanode* arrayp); - -/* Return the i'th grid map data for the specified grid data. - NOTE: Map indices start at ZERO. -*/ -extern OCerror oc_data_gridmap(OClink, OCdatanode grid, size_t index, OCdatanode* mapp); - -/* Return the data of a dimensioned Structure corresponding - to the element specified by the indices. -*/ -extern OCerror oc_data_ithelement(OClink, OCdatanode data, size_t* indices, OCdatanode* elementp); - -/* Return the i'th record data of a Sequence data. */ -extern OCerror oc_data_ithrecord(OClink, OCdatanode data, size_t index, OCdatanode* recordp); - -/* Free up an data that is no longer being used */ -extern OCerror oc_data_free(OClink, OCdatanode data); - -/* Count the records associated with a sequence */ -extern OCerror oc_data_recordcount(OClink, OCdatanode, size_t*); - -/* Return the actual data values associated with the specified leaf data. - The OCdatanode is assumed to be referencing a leaf node that is - either a atomic valued scalar or array. - If scalar, then index and count are ignored. - Caller is responsible for allocating memory(of proper size) - and free'ing it. - See also oc_dds_read(). -*/ -extern OCerror oc_data_read(OClink, OCdatanode, size_t*, size_t*, size_t, void*); - -/* Like oc_data_read, but for reading a scalar. - Caller is responsible for allocating memory(of proper size) - and free'ing it. - See also oc_dds_readscalar(). -*/ -extern OCerror oc_data_readscalar(OClink, OCdatanode, size_t, void*); - -/* Like oc_data_read, but caller provides a starting set of indices - and count of the number of elements to read. - Caller is responsible for allocating memory(of proper size) - and free'ing it. - See also oc_dds_readn(). -*/ -extern OCerror oc_data_readn(OClink, OCdatanode, size_t*, size_t, size_t, void*); - -/* Return the indices for this datas; Assumes the data - was obtained using oc_data_ithelement or oc_data_ithrecord; - if not, then an error is returned. -*/ -extern OCerror oc_data_position(OClink, OCdatanode data, size_t* indices); - -/* Return the pattern dds node for an data */ -extern OCerror oc_data_ddsnode(OClink, OCdatanode data, OCddsnode*); - -/* Return the octype of the data (convenience) */ -extern OCerror oc_data_octype(OClink, OCdatanode data, OCtype*); - -/* Return 1 if the specified data has a valid index, 0 otherwise. - Valid index means it was created using - oc_data_ithelement or oc_data_ithrecord. -*/ -extern int oc_data_indexed(OClink link, OCdatanode datanode); - -/* Return 1 if the specified data has a valid index, 0 otherwise. - Valid index means it was created using - oc_data_ithelement or oc_data_ithrecord. -*/ -extern int oc_data_indexed(OClink, OCdatanode); - -/* Return 1 if the specified data can be indexed - Indexable means the data is pointing to - an indexed structure or to a sequence. -*/ -extern int oc_data_indexable(OClink, OCdatanode); - -/**************************************************/ -/* -For top-level, atomic variables, it is possible to directly -read the associated data without having to use the oc_data_XXX -procedures. Provide special procedures to support this. -*/ - -/* See oc_data_read for semantics */ -extern OCerror oc_dds_read(OClink, OCddsnode, size_t*, size_t*, size_t, void*); - -/* See oc_data_readscalar for semantics */ -extern OCerror oc_dds_readscalar(OClink, OCddsnode, size_t, void*); - -/* See oc_data_readn for semantics */ -extern OCerror oc_dds_readn(OClink, OCddsnode, size_t*, size_t, size_t, void*); - -/**************************************************/ -/* Misc. OCtype-related functions */ - -/* Return size of the given type(Atomic only) */ -extern size_t oc_typesize(OCtype); - -/* Return a canonical printable string describing a given type: - e.g. Byte, Int16, etc. -*/ -extern const char* oc_typetostring(OCtype); - -/* Given a value of a atomic OC type, provide a canonical - string representing that value; mostly for debugging. -*/ -extern OCerror oc_typeprint(OCtype, void* value, size_t bufsize, char* buf); - -/**************************************************/ -/* Logging */ - -extern void oc_loginit(void); -extern int oc_setlogging(int onoff); /* 1=>start logging 0=>stop */ -extern int oc_logopen(const char* logfilename); -extern void oc_logclose(void); - -extern void oc_log(int tag, const char* fmt, ...); - -extern void oc_logtext(int tag, const char* text); - -/**************************************************/ -/* Miscellaneous */ - -/* Reclaim the strings within a string vector, but not the vector itself. - This is useful for reclaiming the result of oc_data_read - or oc_dds_attr when the type is OC_String or OC_URL. - Note that only the strings are reclaimed, the string vector - is not reclaimed because it was presumably allocated by the client. -*/ -extern void oc_reclaim_strings(size_t n, char** svec); - -/* Convert an OCerror to a human readable string */ -extern const char* oc_errstring(OCerror err); - -/* Get client parameters from the URL - DO NOT free the result -*/ -extern const char* oc_clientparam_get(OClink, const char* param); - -/**************************************************/ -/* Merging operations */ - -/* Merge a specified DAS into a specified DDS or DATADDS */ -extern OCerror oc_merge_das(OClink, OCddsnode dasroot, OCddsnode ddsroot); - -/**************************************************/ -/* Debugging */ - -/* When a server error is detected, then it is possible - to get DODS supplied server error info using this procedure */ -extern OCerror oc_svcerrordata(OClink link, char** codep, - char** msgp, long* httpp); - -/* Get the HTTP return code from the last call; - note that this may or may not be the same as returned - by oc_svcerrordata. - */ -extern int oc_httpcode(OClink); - -/* -(Re-)initialize the oc library as if nothing had been called. -This is primarily for debugging of rc files. -*/ -extern OCerror oc_initialize(void); - -/**************************************************/ -/* Curl options */ -/* This is here because trial and error shows that - libcurl shows thru too much. So bow to the inevitable. -*/ - -/*Cause the curl library to be verbose and save error messages*/ -extern OCerror oc_trace_curl(OClink link); - -/* Allow specification of the rc file */ -extern OCerror oc_set_rcfile(const char* filepath); - -/* Allow specification of the netrc file */ -extern OCerror oc_set_netrc(OClink*, const char* filepath); - -/* Set arbitrary curl option */ -extern OCerror oc_set_curlopt(OClink link, const char* option, void* value); - -/**************************************************/ -/* Experimental/Undocumented */ - -/* Given an arbitrary OCnode, return the connection of which it is a part */ -extern OCerror oc_get_connection(OCobject ocnode, OCobject* linkp); - -/* Resend a url as a head request to check the Last-Modified time */ -extern OCerror oc_update_lastmodified_data(OClink); - -/* Get last known modification time; -1 => data unknown */ -extern long oc_get_lastmodified_data(OClink); - -/* Test if a given url responds to a DAP protocol request */ -extern OCerror oc_ping(const char* url); - -/* Return the size of the in-memory or on-disk - data chunk returned by the server for a given tree. - Zero implies it is not defined. -*/ -/* For some reason, the MSVC compiler doesn't like this. */ -#ifndef _WIN32 -extern OCerror oc_raw_xdrsize(OClink,OCddsnode,off_t*); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /*OC_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocbytes.c b/contrib/netcdf/4.4.1.1/oc2/ocbytes.c deleted file mode 100644 index b2b3447fe08..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocbytes.c +++ /dev/null @@ -1,201 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include -#include -#include - -#include "ocbytes.h" - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#define DEFAULTALLOC 1024 -#define ALLOCINCR 1024 - -static int ocbytesdebug = 1; - -static long -ocbytesfail(void) -{ - fflush(stdout); - fprintf(stderr,"bytebuffer failure\n"); - fflush(stderr); - if(ocbytesdebug) abort(); - return FALSE; -} - -OCbytes* -ocbytesnew(void) -{ - OCbytes* bb = (OCbytes*)malloc(sizeof(OCbytes)); - if(bb == NULL) return (OCbytes*)ocbytesfail(); - bb->alloc=0; - bb->length=0; - bb->content=NULL; - bb->nonextendible = 0; - return bb; -} - -int -ocbytessetalloc(OCbytes* bb, size_t sz) -{ - char* newcontent; - if(bb == NULL) return ocbytesfail(); - if(sz <= 0) {sz = (bb->alloc?2*bb->alloc:DEFAULTALLOC);} - if(bb->alloc >= sz) return TRUE; - if(bb->nonextendible) return ocbytesfail(); - newcontent=(char*)calloc(sz,sizeof(char)); - if(newcontent == NULL) return FALSE; - if(bb->alloc > 0 && bb->length > 0 && bb->content != NULL) { - memcpy((void*)newcontent,(void*)bb->content,sizeof(char)*bb->length); - } - if(bb->content != NULL) free(bb->content); - bb->content=newcontent; - bb->alloc=sz; - return TRUE; -} - -void -ocbytesfree(OCbytes* bb) -{ - if(bb == NULL) return; - if(!bb->nonextendible && bb->content != NULL) free(bb->content); - free(bb); -} - -int -ocbytessetlength(OCbytes* bb, size_t sz) -{ - if(bb == NULL) return ocbytesfail(); - if(bb->length < sz) { - if(sz > bb->alloc) {if(!ocbytessetalloc(bb,sz)) return ocbytesfail();} - } - bb->length = sz; - return TRUE; -} - -int -ocbytesfill(OCbytes* bb, char fill) -{ - size_t i; - if(bb == NULL) return ocbytesfail(); - for(i=0;ilength;i++) bb->content[i] = fill; - return TRUE; -} - -int -ocbytesget(OCbytes* bb, size_t index) -{ - if(bb == NULL) return -1; - if(index >= bb->length) return -1; - return bb->content[index]; -} - -int -ocbytesset(OCbytes* bb, size_t index, char elem) -{ - if(bb == NULL) return ocbytesfail(); - if(index >= bb->length) return ocbytesfail(); - bb->content[index] = elem; - return TRUE; -} - -int -ocbytesappend(OCbytes* bb, int elem) -{ - if(bb == NULL) return ocbytesfail(); - /* We need space for the char + null */ - while(bb->length+1 >= bb->alloc) { - if(!ocbytessetalloc(bb,0)) return ocbytesfail(); - } - bb->content[bb->length] = (char)elem; - bb->length++; - bb->content[bb->length] = '\0'; - return TRUE; -} - -/* This assumes s is a null terminated string*/ -int -ocbytescat(OCbytes* bb, const char* s) -{ - ocbytesappendn(bb,(void*)s,strlen(s)+1); /* include trailing null*/ - /* back up over the trailing null*/ - if(bb->length == 0) return ocbytesfail(); - bb->length--; - return 1; -} - -int -ocbytesappendn(OCbytes* bb, const void* elem, size_t n) -{ - if(bb == NULL || elem == NULL) return ocbytesfail(); - if(n == 0) {n = strlen((char*)elem);} - while(!ocbytesavail(bb,n+1)) { - if(!ocbytessetalloc(bb,0)) return ocbytesfail(); - } - memcpy((void*)&bb->content[bb->length],(void*)elem,n); - bb->length += n; - bb->content[bb->length] = '\0'; - return TRUE; -} - -int -ocbytesprepend(OCbytes* bb, char elem) -{ - int i; /* do not make unsigned */ - if(bb == NULL) return ocbytesfail(); - if(bb->length >= bb->alloc) if(!ocbytessetalloc(bb,0)) return ocbytesfail(); - /* could we trust memcpy? instead */ - for(i=bb->alloc;i>=1;i--) {bb->content[i]=bb->content[i-1];} - bb->content[0] = elem; - bb->length++; - return TRUE; -} - -char* -ocbytesdup(OCbytes* bb) -{ - char* result = (char*)malloc(bb->length+1); - memcpy((void*)result,(const void*)bb->content,bb->length); - result[bb->length] = '\0'; /* just in case it is a string*/ - return result; -} - -char* -ocbytesextract(OCbytes* bb) -{ - char* result = bb->content; - bb->alloc = 0; - bb->length = 0; - bb->content = NULL; - return result; -} - -int -ocbytessetcontents(OCbytes* bb, char* contents, size_t alloc) -{ - if(bb == NULL) return ocbytesfail(); - ocbytesclear(bb); - if(!bb->nonextendible && bb->content != NULL) free(bb->content); - bb->content = contents; - bb->length = 0; - bb->alloc = alloc; - bb->nonextendible = 1; - return 1; -} - -/* Null terminate the byte string without extending its length */ -/* For debugging */ -int -ocbytesnull(OCbytes* bb) -{ - ocbytesappend(bb,'\0'); - bb->length--; - return 1; -} - diff --git a/contrib/netcdf/4.4.1.1/oc2/ocbytes.h b/contrib/netcdf/4.4.1.1/oc2/ocbytes.h deleted file mode 100644 index 55929e1c320..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocbytes.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef OCBYTES_H -#define OCBYTES_H 1 - -typedef struct OCbytes { - int nonextendible; /* 1 => fail if an attempt is made to extend this buffer*/ - size_t alloc; - size_t length; - char* content; -} OCbytes; - -#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) -#define EXTERNC extern "C" -#else -#define EXTERNC extern -#endif - -EXTERNC OCbytes* ocbytesnew(void); -EXTERNC void ocbytesfree(OCbytes*); -EXTERNC int ocbytessetalloc(OCbytes*,size_t); -EXTERNC int ocbytessetlength(OCbytes*,size_t); -EXTERNC int ocbytesfill(OCbytes*, char fill); - -/* Produce a duplicate of the contents*/ -EXTERNC char* ocbytesdup(OCbytes*); -/* Extract the contents and leave buffer empty */ -EXTERNC char* ocbytesextract(OCbytes*); - -/* Return the ith byte; -1 if no such index */ -EXTERNC int ocbytesget(OCbytes*,size_t); -/* Set the ith byte */ -EXTERNC int ocbytesset(OCbytes*,size_t,char); - -/* Append one byte */ -EXTERNC int ocbytesappend(OCbytes*,int); /* Add at Tail */ -/* Append n bytes */ -EXTERNC int ocbytesappendn(OCbytes*,const void*,size_t); /* Add at Tail */ - -/* Null terminate the byte string without extending its length (for debugging) */ -EXTERNC int ocbytesnull(OCbytes*); - -/* Concatenate a null-terminated string to the end of the buffer */ -EXTERNC int ocbytescat(OCbytes*,const char*); - -/* Set the contents of the buffer; mark the buffer as non-extendible */ -EXTERNC int ocbytessetcontents(OCbytes*, char*, size_t); - -/* Following are always "in-lined"*/ -#define ocbyteslength(bb) ((bb)!=NULL?(bb)->length:0) -#define ocbytesalloc(bb) ((bb)!=NULL?(bb)->alloc:0) -#define ocbytescontents(bb) (((bb)!=NULL && (bb)->content!=NULL)?(bb)->content:(char*)"") -#define ocbytesextend(bb,len) ocbytessetalloc((bb),(len)+(bb->alloc)) -#define ocbytesclear(bb) ((bb)!=NULL?(bb)->length=0:0) -#define ocbytesavail(bb,n) ((bb)!=NULL?((bb)->alloc - (bb)->length) >= (n):0) - -#endif /*OCBYTES_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/occlientparams.c b/contrib/netcdf/4.4.1.1/oc2/occlientparams.c deleted file mode 100644 index b7f8036def0..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/occlientparams.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#include "ocinternal.h" -#include "ocdebug.h" - -#define LBRACKET '[' -#define RBRACKET ']' - - - -/* -Client parameters are assumed to be -one or more instances of bracketed pairs: -e.g "[...][...]...". -The bracket content in turn is assumed to be a -comma separated list of = pairs. -e.g. x=y,z=,a=b. -If the same parameter is specifed more than once, -then the first occurrence is used; this is so that -is possible to forcibly override user specified -parameters by prefixing. -IMPORTANT: client parameter string is assumed to -have blanks compress out. -*/ - -int -ocparamdecode(OCstate* state) -{ - int i; - i = ocuridecodeparams(state->uri); - return i?OC_NOERR:OC_EBADURL; -} - - -const char* -ocparamlookup(OCstate* state, const char* key) -{ - const char* value = NULL; - if(state == NULL || key == NULL || state->uri == NULL) return NULL; - if(!ocurilookup(state->uri,key,&value)) - value = NULL; - return value; -} - -int -ocparamset(OCstate* state, const char* params) -{ - int i; - i = ocurisetparams(state->uri,params); - return i?OC_NOERR:OC_EBADURL; -} - -#ifdef OCIGNORE -void -ocparamfree(OClist* params) -{ - int i; - if(params == NULL) return; - for(i=0;i found and deleted; - 0 => param not found -*/ -int -ocparamdelete(OClist* params, const char* clientparam) -{ - int i,found = 0; - if(params == NULL || clientparam == NULL) return 0; - for(i=0;i not already defined - 0 => param already defined (no change) -*/ -int -ocparaminsert(OClist* params, const char* clientparam, const char* value) -{ - int i; - if(params == NULL || clientparam == NULL) return 0; - for(i=0;i replacement performed - 0 => insertion performed -*/ -int -ocparamreplace(OClist* params, const char* clientparam, const char* value) -{ - int i; - if(params == NULL || clientparam == NULL) return 0; - for(i=0;i -#include "ocinternal.h" -#include "ocdebug.h" - -static int nflags = 0; -static long maxflag = -1; -static struct OCCURLFLAG* nameindices[26]; /* for radix access */ -static struct OCCURLFLAG** flagindices = NULL; /* for radix access */ - -/* Define supported curl flags */ - -static struct OCCURLFLAG oc_curlflags[] = { -{"CURLOPT_CAINFO",CURLOPT_CAINFO,10065,CF_STRING}, -{"CURLOPT_CAPATH",CURLOPT_CAPATH,10097,CF_STRING}, -{"CURLOPT_COOKIEFILE",CURLOPT_COOKIEFILE,10031,CF_STRING}, -{"CURLOPT_COOKIEJAR",CURLOPT_COOKIEJAR,10082,CF_STRING}, -{"CURLOPT_ENCODING",CURLOPT_ENCODING,10102,CF_STRING}, -{"CURLOPT_ERRORBUFFER",CURLOPT_ERRORBUFFER,10010,CF_STRING}, -{"CURLOPT_FOLLOWLOCATION",CURLOPT_FOLLOWLOCATION,52,CF_LONG}, -{"CURLOPT_HTTPAUTH",CURLOPT_HTTPAUTH,1007,CF_LONG}, -{"CURLOPT_KEYPASSWD",CURLOPT_KEYPASSWD,10026,CF_STRING}, -{"CURLOPT_MAXREDIRS",CURLOPT_MAXREDIRS,68,CF_LONG}, -{"CURLOPT_NETRC",CURLOPT_NETRC,51,CF_LONG}, -{"CURLOPT_NETRC_FILE",CURLOPT_NETRC_FILE,10118,CF_STRING}, -{"CURLOPT_PROXY",CURLOPT_PROXY,10004,CF_STRING}, -{"CURLOPT_PROXYAUTH",CURLOPT_PROXYAUTH,111,CF_STRING}, -{"CURLOPT_PROXYPORT",CURLOPT_PROXYPORT,59,CF_LONG}, -{"CURLOPT_PROXYUSERPWD",CURLOPT_PROXYUSERPWD,10006,CF_STRING}, -{"CURLOPT_SSLCERT",CURLOPT_SSLCERT,10025,CF_STRING}, -{"CURLOPT_SSLKEY",CURLOPT_SSLKEY,10087,CF_STRING}, -{"CURLOPT_SSLKEYPASSWD",CURLOPT_SSLKEYPASSWD,CURLOPT_KEYPASSWD,CF_STRING}, -{"CURLOPT_SSL_VERIFYHOST",CURLOPT_SSL_VERIFYHOST,81,CF_LONG}, -{"CURLOPT_SSL_VERIFYPEER",CURLOPT_SSL_VERIFYPEER,64,CF_LONG}, -{"CURLOPT_TIMEOUT",CURLOPT_TIMEOUT,13,CF_LONG}, -{"CURLOPT_USERAGENT",CURLOPT_USERAGENT,10018,CF_STRING}, -{"CURLOPT_USERPWD",CURLOPT_USERPWD,10005,CF_STRING}, -{"CURLOPT_VERBOSE",CURLOPT_VERBOSE,41,CF_LONG}, -{"CURLOPT_USE_SSL",CURLOPT_USE_SSL,119,CF_LONG}, -{NULL,0} -}; - -#if 0 -static struct OCCURLFLAG oc_allcurlflags[] = { -{"CURLOPT_ADDRESS_SCOPE",CURLOPT_ADDRESS_SCOPE,171,CF_UNKNOWN}, -{"CURLOPT_APPEND",CURLOPT_APPEND,50,CF_UNKNOWN}, -{"CURLOPT_AUTOREFERER",CURLOPT_AUTOREFERER,58,CF_UNKNOWN}, -{"CURLOPT_BUFFERSIZE",CURLOPT_BUFFERSIZE,98,CF_UNKNOWN}, -{"CURLOPT_CAINFO",CURLOPT_CAINFO,10065,CF_UNKNOWN}, -{"CURLOPT_CAPATH",CURLOPT_CAPATH,10097,CF_UNKNOWN}, -{"CURLOPT_CERTINFO",CURLOPT_CERTINFO,172,CF_UNKNOWN}, -{"CURLOPT_CHUNK_BGN_FUNCTION",CURLOPT_CHUNK_BGN_FUNCTION,20198,CF_UNKNOWN}, -{"CURLOPT_CHUNK_DATA",CURLOPT_CHUNK_DATA,10201,CF_UNKNOWN}, -{"CURLOPT_CHUNK_END_FUNCTION",CURLOPT_CHUNK_END_FUNCTION,20199,CF_UNKNOWN}, -{"CURLOPT_CLOSEPOLICY",CURLOPT_CLOSEPOLICY,72,CF_UNKNOWN}, -{"CURLOPT_CONNECT_ONLY",CURLOPT_CONNECT_ONLY,141,CF_UNKNOWN}, -{"CURLOPT_CONNECTTIMEOUT",CURLOPT_CONNECTTIMEOUT,78,CF_UNKNOWN}, -{"CURLOPT_CONNECTTIMEOUT_MS",CURLOPT_CONNECTTIMEOUT_MS,156,CF_UNKNOWN}, -{"CURLOPT_CONV_FROM_NETWORK_FUNCTION",CURLOPT_CONV_FROM_NETWORK_FUNCTION,20142,CF_UNKNOWN}, -{"CURLOPT_CONV_FROM_UTF8_FUNCTION",CURLOPT_CONV_FROM_UTF8_FUNCTION,20144,CF_UNKNOWN}, -{"CURLOPT_CONV_TO_NETWORK_FUNCTION",CURLOPT_CONV_TO_NETWORK_FUNCTION,20143,CF_UNKNOWN}, -{"CURLOPT_COOKIE",CURLOPT_COOKIE,10022,CF_UNKNOWN}, -{"CURLOPT_COOKIEFILE",CURLOPT_COOKIEFILE,10031,CF_UNKNOWN}, -{"CURLOPT_COOKIEJAR",CURLOPT_COOKIEJAR,10082,CF_UNKNOWN}, -{"CURLOPT_COOKIELIST",CURLOPT_COOKIELIST,10135,CF_UNKNOWN}, -{"CURLOPT_COOKIESESSION",CURLOPT_COOKIESESSION,96,CF_UNKNOWN}, -{"CURLOPT_COPYPOSTFIELDS",CURLOPT_COPYPOSTFIELDS,10165,CF_UNKNOWN}, -{"CURLOPT_CRLF",CURLOPT_CRLF,27,CF_UNKNOWN}, -{"CURLOPT_CRLFILE",CURLOPT_CRLFILE,10169,CF_UNKNOWN}, -{"CURLOPT_CUSTOMREQUEST",CURLOPT_CUSTOMREQUEST,10036,CF_UNKNOWN}, -{"CURLOPT_DEBUGDATA",CURLOPT_DEBUGDATA,10095,CF_UNKNOWN}, -{"CURLOPT_DEBUGFUNCTION",CURLOPT_DEBUGFUNCTION,20094,CF_UNKNOWN}, -{"CURLOPT_DIRLISTONLY",CURLOPT_DIRLISTONLY,48,CF_UNKNOWN}, -{"CURLOPT_DNS_CACHE_TIMEOUT",CURLOPT_DNS_CACHE_TIMEOUT,92,CF_UNKNOWN}, -{"CURLOPT_DNS_USE_GLOBAL_CACHE",CURLOPT_DNS_USE_GLOBAL_CACHE,91,CF_UNKNOWN}, -{"CURLOPT_EGDSOCKET",CURLOPT_EGDSOCKET,10077,CF_UNKNOWN}, -{"CURLOPT_ENCODING",CURLOPT_ENCODING,10102,CF_UNKNOWN}, -{"CURLOPT_ERRORBUFFER",CURLOPT_ERRORBUFFER,10010,CF_UNKNOWN}, -{"CURLOPT_FAILONERROR",CURLOPT_FAILONERROR,45,CF_UNKNOWN}, -{"CURLOPT_FILE",CURLOPT_FILE,10001,CF_UNKNOWN}, -{"CURLOPT_FILETIME",CURLOPT_FILETIME,69,CF_UNKNOWN}, -{"CURLOPT_FNMATCH_DATA",CURLOPT_FNMATCH_DATA,10202,CF_UNKNOWN}, -{"CURLOPT_FNMATCH_FUNCTION",CURLOPT_FNMATCH_FUNCTION,20200,CF_UNKNOWN}, -{"CURLOPT_FOLLOWLOCATION",CURLOPT_FOLLOWLOCATION,52,CF_UNKNOWN}, -{"CURLOPT_FORBID_REUSE",CURLOPT_FORBID_REUSE,75,CF_UNKNOWN}, -{"CURLOPT_FRESH_CONNECT",CURLOPT_FRESH_CONNECT,74,CF_UNKNOWN}, -{"CURLOPT_FTP_ACCOUNT",CURLOPT_FTP_ACCOUNT,10134,CF_UNKNOWN}, -{"CURLOPT_FTP_ALTERNATIVE_TO_USER",CURLOPT_FTP_ALTERNATIVE_TO_USER,10147,CF_UNKNOWN}, -{"CURLOPT_FTP_CREATE_MISSING_DIRS",CURLOPT_FTP_CREATE_MISSING_DIRS,110,CF_UNKNOWN}, -{"CURLOPT_FTP_FILEMETHOD",CURLOPT_FTP_FILEMETHOD,138,CF_UNKNOWN}, -{"CURLOPT_FTPPORT",CURLOPT_FTPPORT,10017,CF_UNKNOWN}, -{"CURLOPT_FTP_RESPONSE_TIMEOUT",CURLOPT_FTP_RESPONSE_TIMEOUT,112,CF_UNKNOWN}, -{"CURLOPT_FTP_SKIP_PASV_IP",CURLOPT_FTP_SKIP_PASV_IP,137,CF_UNKNOWN}, -{"CURLOPT_FTPSSLAUTH",CURLOPT_FTPSSLAUTH,129,CF_UNKNOWN}, -{"CURLOPT_FTP_SSL_CCC",CURLOPT_FTP_SSL_CCC,154,CF_UNKNOWN}, -{"CURLOPT_FTP_USE_EPRT",CURLOPT_FTP_USE_EPRT,106,CF_UNKNOWN}, -{"CURLOPT_FTP_USE_EPSV",CURLOPT_FTP_USE_EPSV,85,CF_UNKNOWN}, -{"CURLOPT_FTP_USE_PRET",CURLOPT_FTP_USE_PRET,188,CF_UNKNOWN}, -{"CURLOPT_GSSAPI_DELEGATION",CURLOPT_GSSAPI_DELEGATION,210,CF_UNKNOWN}, -{"CURLOPT_HEADER",CURLOPT_HEADER,42,CF_UNKNOWN}, -{"CURLOPT_HEADERFUNCTION",CURLOPT_HEADERFUNCTION,20079,CF_UNKNOWN}, -{"CURLOPT_HTTP200ALIASES",CURLOPT_HTTP200ALIASES,10104,CF_UNKNOWN}, -{"CURLOPT_HTTPAUTH",CURLOPT_HTTPAUTH,107,CF_UNKNOWN}, -{"CURLOPT_HTTP_CONTENT_DECODING",CURLOPT_HTTP_CONTENT_DECODING,158,CF_UNKNOWN}, -{"CURLOPT_HTTPGET",CURLOPT_HTTPGET,80,CF_UNKNOWN}, -{"CURLOPT_HTTPHEADER",CURLOPT_HTTPHEADER,10023,CF_UNKNOWN}, -{"CURLOPT_HTTPPOST",CURLOPT_HTTPPOST,10024,CF_UNKNOWN}, -{"CURLOPT_HTTPPROXYTUNNEL",CURLOPT_HTTPPROXYTUNNEL,61,CF_UNKNOWN}, -{"CURLOPT_HTTP_TRANSFER_DECODING",CURLOPT_HTTP_TRANSFER_DECODING,157,CF_UNKNOWN}, -{"CURLOPT_HTTP_VERSION",CURLOPT_HTTP_VERSION,84,CF_UNKNOWN}, -{"CURLOPT_IGNORE_CONTENT_LENGTH",CURLOPT_IGNORE_CONTENT_LENGTH,136,CF_UNKNOWN}, -{"CURLOPT_INFILE",CURLOPT_INFILE,10009,CF_UNKNOWN}, -{"CURLOPT_INFILESIZE",CURLOPT_INFILESIZE,14,CF_UNKNOWN}, -{"CURLOPT_INFILESIZE_LARGE",CURLOPT_INFILESIZE_LARGE,30115,CF_UNKNOWN}, -{"CURLOPT_INTERFACE",CURLOPT_INTERFACE,10062,CF_UNKNOWN}, -{"CURLOPT_INTERLEAVEDATA",CURLOPT_INTERLEAVEDATA,10195,CF_UNKNOWN}, -{"CURLOPT_INTERLEAVEFUNCTION",CURLOPT_INTERLEAVEFUNCTION,20196,CF_UNKNOWN}, -{"CURLOPT_IOCTLDATA",CURLOPT_IOCTLDATA,10131,CF_UNKNOWN}, -{"CURLOPT_IOCTLFUNCTION",CURLOPT_IOCTLFUNCTION,20130,CF_UNKNOWN}, -{"CURLOPT_IPRESOLVE",CURLOPT_IPRESOLVE,113,CF_UNKNOWN}, -{"CURLOPT_ISSUERCERT",CURLOPT_ISSUERCERT,10170,CF_UNKNOWN}, -{"CURLOPT_KEYPASSWD",CURLOPT_KEYPASSWD,10026,CF_UNKNOWN}, -{"CURLOPT_KRBLEVEL",CURLOPT_KRBLEVEL,10063,CF_UNKNOWN}, -{"CURLOPT_LOCALPORT",CURLOPT_LOCALPORT,139,CF_UNKNOWN}, -{"CURLOPT_LOCALPORTRANGE",CURLOPT_LOCALPORTRANGE,140,CF_UNKNOWN}, -{"CURLOPT_LOW_SPEED_LIMIT",CURLOPT_LOW_SPEED_LIMIT,19,CF_UNKNOWN}, -{"CURLOPT_LOW_SPEED_TIME",CURLOPT_LOW_SPEED_TIME,20,CF_UNKNOWN}, -{"CURLOPT_MAIL_FROM",CURLOPT_MAIL_FROM,10186,CF_UNKNOWN}, -{"CURLOPT_MAIL_RCPT",CURLOPT_MAIL_RCPT,10187,CF_UNKNOWN}, -{"CURLOPT_MAXCONNECTS",CURLOPT_MAXCONNECTS,71,CF_UNKNOWN}, -{"CURLOPT_MAXFILESIZE",CURLOPT_MAXFILESIZE,114,CF_UNKNOWN}, -{"CURLOPT_MAXFILESIZE_LARGE",CURLOPT_MAXFILESIZE_LARGE,30117,CF_UNKNOWN}, -{"CURLOPT_MAX_RECV_SPEED_LARGE",CURLOPT_MAX_RECV_SPEED_LARGE,30146,CF_UNKNOWN}, -{"CURLOPT_MAXREDIRS",CURLOPT_MAXREDIRS,68,CF_UNKNOWN}, -{"CURLOPT_MAX_SEND_SPEED_LARGE",CURLOPT_MAX_SEND_SPEED_LARGE,30145,CF_UNKNOWN}, -{"CURLOPT_NETRC",CURLOPT_NETRC,51,CF_UNKNOWN}, -{"CURLOPT_NETRC_FILE",CURLOPT_NETRC_FILE,10118,CF_UNKNOWN}, -{"CURLOPT_NEW_DIRECTORY_PERMS",CURLOPT_NEW_DIRECTORY_PERMS,160,CF_UNKNOWN}, -{"CURLOPT_NEW_FILE_PERMS",CURLOPT_NEW_FILE_PERMS,159,CF_UNKNOWN}, -{"CURLOPT_NOBODY",CURLOPT_NOBODY,44,CF_UNKNOWN}, -{"CURLOPT_NOPROGRESS",CURLOPT_NOPROGRESS,43,CF_UNKNOWN}, -{"CURLOPT_NOPROXY",CURLOPT_NOPROXY,10177,CF_UNKNOWN}, -{"CURLOPT_NOSIGNAL",CURLOPT_NOSIGNAL,99,CF_UNKNOWN}, -{"CURLOPT_OPENSOCKETDATA",CURLOPT_OPENSOCKETDATA,10164,CF_UNKNOWN}, -{"CURLOPT_OPENSOCKETFUNCTION",CURLOPT_OPENSOCKETFUNCTION,20163,CF_UNKNOWN}, -{"CURLOPT_PASSWORD",CURLOPT_PASSWORD,10174,CF_UNKNOWN}, -{"CURLOPT_PORT",CURLOPT_PORT,3,CF_UNKNOWN}, -{"CURLOPT_POST",CURLOPT_POST,47,CF_UNKNOWN}, -{"CURLOPT_POSTFIELDS",CURLOPT_POSTFIELDS,10015,CF_UNKNOWN}, -{"CURLOPT_POSTFIELDSIZE",CURLOPT_POSTFIELDSIZE,60,CF_UNKNOWN}, -{"CURLOPT_POSTFIELDSIZE_LARGE",CURLOPT_POSTFIELDSIZE_LARGE,30120,CF_UNKNOWN}, -{"CURLOPT_POSTQUOTE",CURLOPT_POSTQUOTE,10039,CF_UNKNOWN}, -{"CURLOPT_POSTREDIR",CURLOPT_POSTREDIR,161,CF_UNKNOWN}, -{"CURLOPT_PREQUOTE",CURLOPT_PREQUOTE,10093,CF_UNKNOWN}, -{"CURLOPT_PRIVATE",CURLOPT_PRIVATE,10103,CF_UNKNOWN}, -{"CURLOPT_PROGRESSDATA",CURLOPT_PROGRESSDATA,10057,CF_UNKNOWN}, -{"CURLOPT_PROGRESSFUNCTION",CURLOPT_PROGRESSFUNCTION,20056,CF_UNKNOWN}, -{"CURLOPT_PROTOCOLS",CURLOPT_PROTOCOLS,181,CF_UNKNOWN}, -{"CURLOPT_PROXY",CURLOPT_PROXY,10004,CF_UNKNOWN}, -{"CURLOPT_PROXYAUTH",CURLOPT_PROXYAUTH,111,CF_UNKNOWN}, -{"CURLOPT_PROXYPASSWORD",CURLOPT_PROXYPASSWORD,10176,CF_UNKNOWN}, -{"CURLOPT_PROXYPORT",CURLOPT_PROXYPORT,59,CF_UNKNOWN}, -{"CURLOPT_PROXY_TRANSFER_MODE",CURLOPT_PROXY_TRANSFER_MODE,166,CF_UNKNOWN}, -{"CURLOPT_PROXYTYPE",CURLOPT_PROXYTYPE,101,CF_UNKNOWN}, -{"CURLOPT_PROXYUSERNAME",CURLOPT_PROXYUSERNAME,10175,CF_UNKNOWN}, -{"CURLOPT_PROXYUSERPWD",CURLOPT_PROXYUSERPWD,10006,CF_UNKNOWN}, -{"CURLOPT_PUT",CURLOPT_PUT,54,CF_UNKNOWN}, -{"CURLOPT_QUOTE",CURLOPT_QUOTE,10028,CF_UNKNOWN}, -{"CURLOPT_RANDOM_FILE",CURLOPT_RANDOM_FILE,10076,CF_UNKNOWN}, -{"CURLOPT_RANGE",CURLOPT_RANGE,10007,CF_UNKNOWN}, -{"CURLOPT_READFUNCTION",CURLOPT_READFUNCTION,20012,CF_UNKNOWN}, -{"CURLOPT_REDIR_PROTOCOLS",CURLOPT_REDIR_PROTOCOLS,182,CF_UNKNOWN}, -{"CURLOPT_REFERER",CURLOPT_REFERER,10016,CF_UNKNOWN}, -{"CURLOPT_RESUME_FROM",CURLOPT_RESUME_FROM,21,CF_UNKNOWN}, -{"CURLOPT_RESUME_FROM_LARGE",CURLOPT_RESUME_FROM_LARGE,30116,CF_UNKNOWN}, -{"CURLOPT_RTSP_CLIENT_CSEQ",CURLOPT_RTSP_CLIENT_CSEQ,193,CF_UNKNOWN}, -{"CURLOPT_RTSP_REQUEST",CURLOPT_RTSP_REQUEST,189,CF_UNKNOWN}, -{"CURLOPT_RTSP_SERVER_CSEQ",CURLOPT_RTSP_SERVER_CSEQ,194,CF_UNKNOWN}, -{"CURLOPT_RTSP_SESSION_ID",CURLOPT_RTSP_SESSION_ID,10190,CF_UNKNOWN}, -{"CURLOPT_RTSP_STREAM_URI",CURLOPT_RTSP_STREAM_URI,10191,CF_UNKNOWN}, -{"CURLOPT_RTSP_TRANSPORT",CURLOPT_RTSP_TRANSPORT,10192,CF_UNKNOWN}, -{"CURLOPT_SEEKDATA",CURLOPT_SEEKDATA,10168,CF_UNKNOWN}, -{"CURLOPT_SEEKFUNCTION",CURLOPT_SEEKFUNCTION,20167,CF_UNKNOWN}, -{"CURLOPT_SHARE",CURLOPT_SHARE,10100,CF_UNKNOWN}, -{"CURLOPT_SOCKOPTDATA",CURLOPT_SOCKOPTDATA,10149,CF_UNKNOWN}, -{"CURLOPT_SOCKOPTFUNCTION",CURLOPT_SOCKOPTFUNCTION,20148,CF_UNKNOWN}, -{"CURLOPT_SOCKS5_GSSAPI_NEC",CURLOPT_SOCKS5_GSSAPI_NEC,180,CF_UNKNOWN}, -{"CURLOPT_SOCKS5_GSSAPI_SERVICE",CURLOPT_SOCKS5_GSSAPI_SERVICE,10179,CF_UNKNOWN}, -{"CURLOPT_SSH_AUTH_TYPES",CURLOPT_SSH_AUTH_TYPES,151,CF_UNKNOWN}, -{"CURLOPT_SSH_HOST_PUBLIC_KEY_MD5",CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,10162,CF_UNKNOWN}, -{"CURLOPT_SSH_KEYDATA",CURLOPT_SSH_KEYDATA,10185,CF_UNKNOWN}, -{"CURLOPT_SSH_KEYFUNCTION",CURLOPT_SSH_KEYFUNCTION,20184,CF_UNKNOWN}, -{"CURLOPT_SSH_KNOWNHOSTS",CURLOPT_SSH_KNOWNHOSTS,10183,CF_UNKNOWN}, -{"CURLOPT_SSH_PRIVATE_KEYFILE",CURLOPT_SSH_PRIVATE_KEYFILE,10153,CF_UNKNOWN}, -{"CURLOPT_SSH_PUBLIC_KEYFILE",CURLOPT_SSH_PUBLIC_KEYFILE,10152,CF_UNKNOWN}, -{"CURLOPT_SSLCERT",CURLOPT_SSLCERT,10025,CF_UNKNOWN}, -{"CURLOPT_SSLCERTTYPE",CURLOPT_SSLCERTTYPE,10086,CF_UNKNOWN}, -{"CURLOPT_SSL_CIPHER_LIST",CURLOPT_SSL_CIPHER_LIST,10083,CF_UNKNOWN}, -{"CURLOPT_SSL_CTX_DATA",CURLOPT_SSL_CTX_DATA,10109,CF_UNKNOWN}, -{"CURLOPT_SSL_CTX_FUNCTION",CURLOPT_SSL_CTX_FUNCTION,20108,CF_UNKNOWN}, -{"CURLOPT_SSLENGINE",CURLOPT_SSLENGINE,10089,CF_UNKNOWN}, -{"CURLOPT_SSLENGINE_DEFAULT",CURLOPT_SSLENGINE_DEFAULT,90,CF_UNKNOWN}, -{"CURLOPT_SSLKEY",CURLOPT_SSLKEY,10087,CF_UNKNOWN}, -{"CURLOPT_SSLKEYTYPE",CURLOPT_SSLKEYTYPE,10088,CF_UNKNOWN}, -{"CURLOPT_SSL_SESSIONID_CACHE",CURLOPT_SSL_SESSIONID_CACHE,150,CF_UNKNOWN}, -{"CURLOPT_SSL_VERIFYHOST",CURLOPT_SSL_VERIFYHOST,81,CF_UNKNOWN}, -{"CURLOPT_SSL_VERIFYPEER",CURLOPT_SSL_VERIFYPEER,64,CF_UNKNOWN}, -{"CURLOPT_SSLVERSION",CURLOPT_SSLVERSION,32,CF_UNKNOWN}, -{"CURLOPT_STDERR",CURLOPT_STDERR,10037,CF_UNKNOWN}, -{"CURLOPT_TCP_NODELAY",CURLOPT_TCP_NODELAY,121,CF_UNKNOWN}, -{"CURLOPT_TELNETOPTIONS",CURLOPT_TELNETOPTIONS,10070,CF_UNKNOWN}, -{"CURLOPT_TFTP_BLKSIZE",CURLOPT_TFTP_BLKSIZE,178,CF_UNKNOWN}, -{"CURLOPT_TIMECONDITION",CURLOPT_TIMECONDITION,33,CF_UNKNOWN}, -{"CURLOPT_TIMEOUT",CURLOPT_TIMEOUT,13,CF_UNKNOWN}, -{"CURLOPT_TIMEOUT_MS",CURLOPT_TIMEOUT_MS,155,CF_UNKNOWN}, -{"CURLOPT_TIMEVALUE",CURLOPT_TIMEVALUE,34,CF_UNKNOWN}, -{"CURLOPT_TRANSFERTEXT",CURLOPT_TRANSFERTEXT,53,CF_UNKNOWN}, -{"CURLOPT_UNRESTRICTED_AUTH",CURLOPT_UNRESTRICTED_AUTH,105,CF_UNKNOWN}, -{"CURLOPT_UPLOAD",CURLOPT_UPLOAD,46,CF_UNKNOWN}, -{"CURLOPT_URL",CURLOPT_URL,10002,CF_UNKNOWN}, -{"CURLOPT_USERAGENT",CURLOPT_USERAGENT,10018,CF_UNKNOWN}, -{"CURLOPT_USERNAME",CURLOPT_USERNAME,10173,CF_UNKNOWN}, -{"CURLOPT_USERPWD",CURLOPT_USERPWD,10005,CF_UNKNOWN}, -{"CURLOPT_USE_SSL",CURLOPT_USE_SSL,119,CF_UNKNOWN}, -{"CURLOPT_VERBOSE",CURLOPT_VERBOSE,41,CF_UNKNOWN}, -{"CURLOPT_WILDCARDMATCH",CURLOPT_WILDCARDMATCH,197,CF_UNKNOWN}, -{"CURLOPT_WRITEFUNCTION",CURLOPT_WRITEFUNCTION,20011,CF_UNKNOWN}, -{"CURLOPT_WRITEHEADER",CURLOPT_WRITEHEADER,10029,CF_UNKNOWN}, -{"CURLOPT_WRITEINFO",CURLOPT_WRITEINFO,10040,CF_UNKNOWN}, -{NULL,0} -}; - -struct OCCURLFLAG* -occurlflagsall(void) -{ - if(nflags == 0) initialize(); - return oc_allcurlflags; -} - -#endif - -static int touppercase(int c) -{ - if(c >= 'a' && c <= 'z') - c = ((c-'a') + 'A'); - return c; -} - -static void -initialize(void) -{ - struct OCCURLFLAG* p; - size_t len = 0; - - if(nflags == 0) { /* initialize */ - maxflag = -1; - for(p=oc_curlflags;p->name;p++) { - int c; - nflags++; /* count number of flags */ - if(p->flag > maxflag) maxflag = p->flag; - /* construct alphabetic radix nameindices */ - c = p->name[0]; - OCASSERT(c >= 'A' && c <= 'Z'); - if(nameindices[c] == NULL) - nameindices[c] = p; - } - - - len = maxflag; - if(maxflag == -1) len += 2; else len += 1; - flagindices = (struct OCCURLFLAG**)calloc(1,len*sizeof(struct OCCURLFLAG*)); - for(p=oc_curlflags;p->name;p++) - flagindices[p->flag] = p; - } -} - -struct OCCURLFLAG* -occurlflags(void) -{ - if(nflags == 0) initialize(); - return oc_curlflags; -} - -struct OCCURLFLAG* -occurlflagbyname(const char* name) -{ - struct OCCURLFLAG* f; - int c = name[0]; - char flagname[4096]; - const char* p; - char* q; - - if(nflags == 0) initialize(); - /* Force upper case */ - for(p=name,q=flagname;*p;p++) { - int cc = touppercase(*p); - if(cc < 'A' || cc > 'Z') return NULL; - *q++ = cc; - } - *q = '\0'; - - if(nameindices[c] == NULL) - return NULL; /* no possible match */ - for(f=nameindices[c];f->name;f++) { - int cmp = strcmp(name,f->name); - if(cmp > 0) break; /* We assume sorted */ - if(cmp == 0) return f; - } - return NULL; -} - -struct OCCURLFLAG* -occurlflagbyflag(int flag) -{ - if(nflags == 0) initialize(); - if(flag >= 0 || flag <= maxflag) - return flagindices[flag]; - return NULL; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.c b/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.c deleted file mode 100644 index 38c78a0008f..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.c +++ /dev/null @@ -1,445 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#include "ocinternal.h" -#include "ocdebug.h" -#include "occurlfunctions.h" - -#define OC_MAX_REDIRECTS 20L - -/* Mnemonic */ -#define OPTARG void* - -/* Condition on libcurl version */ -/* Set up an alias as needed */ -#ifndef HAVE_CURLOPT_KEYPASSWD -#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD -#endif - -#define NETRCFILETAG "HTTP.NETRC" - -#define CHECK(state,flag,value) {if(check(state,flag,(void*)value) != OC_NOERR) {goto done;}} - -/* forward */ -static OCerror oc_set_curl_options(OCstate* state); -static void* cvt(char* value, enum OCCURLFLAGTYPE type); - -static OCerror -check(OCstate* state, int flag, void* value) -{ - OCerror stat = ocset_curlopt(state,flag,value); -#ifdef OCDEBUG - long l = (long)value; - const char* name = occurlflagbyflag(flag)->name; - if(l <= 1000) { - OCDBG2("%s=%ld",name,l); - } else { - char show[65]; - char* s = (char*)value; - strncpy(show,s,64); - show[64] = '\0'; - OCDBG2("%s=%s",name,show); - } -#endif - return stat; -} - -#if 0 -static void -showopt(int flag, void* value) -{ - struct OCCURLFLAG* f = occurlflagbyflag(flag); - if(f == NULL) { - OCDBG1("Unsupported flag: %d",flag); - } else switch (f->type) { - case CF_LONG: - OCDBG2("%s=%ld",f->name,(long)value); - break; - case CF_STRING: { - char show[65]; - char* s = (char*)value; - strncpy(show,s,64); - show[64] = '\0'; - OCDBG2("%s=%s",f->name,show); - } break; - case CF_UNKNOWN: case CF_OTHER: - OCDBG1("%s=",f->name); - break; - } -} -#endif - -/* -Set a specific curl flag; primary wrapper for curl_easy_setopt -*/ -OCerror -ocset_curlopt(OCstate* state, int flag, void* value) -{ - OCerror stat = OC_NOERR; - CURLcode cstat = CURLE_OK; - cstat = OCCURLERR(state,curl_easy_setopt(state->curl,flag,value)); - if(cstat != CURLE_OK) - stat = OC_ECURL; - return stat; -} - -/* -Update a specific flag from state -*/ -OCerror -ocset_curlflag(OCstate* state, int flag) -{ - OCerror stat = OC_NOERR; - - switch (flag) { - - case CURLOPT_USERPWD: - if(state->creds.userpwd != NULL) { - CHECK(state, CURLOPT_USERPWD, state->creds.userpwd); - CHECK(state, CURLOPT_HTTPAUTH, (OPTARG)CURLAUTH_ANY); - } - break; - - case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE: - if(state->curlflags.cookiejar) { - /* Assume we will read and write cookies to same place */ - CHECK(state, CURLOPT_COOKIEJAR, state->curlflags.cookiejar); - CHECK(state, CURLOPT_COOKIEFILE, state->curlflags.cookiejar); - } - break; - - case CURLOPT_NETRC: case CURLOPT_NETRC_FILE: - if(state->curlflags.netrc) { - CHECK(state, CURLOPT_NETRC, (OPTARG)CURL_NETRC_REQUIRED); - CHECK(state, CURLOPT_NETRC_FILE, state->curlflags.netrc); - } - break; - - case CURLOPT_VERBOSE: - if(state->curlflags.verbose) - CHECK(state, CURLOPT_VERBOSE, (OPTARG)1L); - break; - - case CURLOPT_TIMEOUT: - if(state->curlflags.timeout) - CHECK(state, CURLOPT_TIMEOUT, (OPTARG)((long)state->curlflags.timeout)); - break; - - case CURLOPT_USERAGENT: - if(state->curlflags.useragent) - CHECK(state, CURLOPT_USERAGENT, state->curlflags.useragent); - break; - - case CURLOPT_FOLLOWLOCATION: - CHECK(state, CURLOPT_FOLLOWLOCATION, (OPTARG)1L); - break; - - case CURLOPT_MAXREDIRS: - CHECK(state, CURLOPT_MAXREDIRS, (OPTARG)OC_MAX_REDIRECTS); - break; - - case CURLOPT_ERRORBUFFER: - CHECK(state, CURLOPT_ERRORBUFFER, state->error.curlerrorbuf); - break; - - case CURLOPT_ENCODING: -#ifdef CURLOPT_ENCODING - if(state->curlflags.compress) { - CHECK(state, CURLOPT_ENCODING,"deflate, gzip"); - } -#endif - break; - - case CURLOPT_PROXY: - if(state->proxy.host != NULL) { - CHECK(state, CURLOPT_PROXY, state->proxy.host); - CHECK(state, CURLOPT_PROXYPORT, (OPTARG)(long)state->proxy.port); - if(state->proxy.userpwd) { - CHECK(state, CURLOPT_PROXYUSERPWD, state->proxy.userpwd); -#ifdef CURLOPT_PROXYAUTH - CHECK(state, CURLOPT_PROXYAUTH, (long)CURLAUTH_ANY); -#endif - } - } - break; - - case CURLOPT_USE_SSL: - case CURLOPT_SSLCERT: case CURLOPT_SSLKEY: - case CURLOPT_SSL_VERIFYPEER: case CURLOPT_SSL_VERIFYHOST: - { - struct OCSSL* ssl = &state->ssl; - CHECK(state, CURLOPT_SSL_VERIFYPEER, (OPTARG)(ssl->verifypeer?1L:0L)); - CHECK(state, CURLOPT_SSL_VERIFYHOST, (OPTARG)(ssl->verifyhost?1L:0L)); - if(ssl->certificate) - CHECK(state, CURLOPT_SSLCERT, ssl->certificate); - if(ssl->key) - CHECK(state, CURLOPT_SSLKEY, ssl->key); - if(ssl->keypasswd) - /* libcurl prior to 7.16.4 used 'CURLOPT_SSLKEYPASSWD' */ - CHECK(state, CURLOPT_KEYPASSWD, ssl->keypasswd); - if(ssl->cainfo) - CHECK(state, CURLOPT_CAINFO, ssl->cainfo); - if(ssl->capath) - CHECK(state, CURLOPT_CAPATH, ssl->capath); - } - break; - - default: { - struct OCCURLFLAG* f = occurlflagbyflag(flag); - if(f != NULL) - oclog(OCLOGWARN,"Attempt to update unexpected curl flag: %s", - f->name); - } break; - } -done: - return stat; -} - - -/* Set various general curl flags per fetch */ -OCerror -ocset_flags_perfetch(OCstate* state) -{ - OCerror stat = OC_NOERR; - /* currently none */ - return stat; -} - -/* Set various general curl flags per link */ - -OCerror -ocset_flags_perlink(OCstate* state) -{ - OCerror stat = OC_NOERR; - - /* Following are always set */ - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_ENCODING); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_NETRC); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_VERBOSE); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_TIMEOUT); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USERAGENT); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_COOKIEJAR); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USERPWD); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_PROXY); - if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USE_SSL); - if(stat == OC_NOERR) stat = ocset_curlflag(state, CURLOPT_FOLLOWLOCATION); - if(stat == OC_NOERR) stat = ocset_curlflag(state, CURLOPT_MAXREDIRS); - if(stat == OC_NOERR) stat = ocset_curlflag(state, CURLOPT_ERRORBUFFER); - - /* Set the CURL. options */ - if(stat == OC_NOERR) stat = oc_set_curl_options(state); - - return stat; -} - -/** -Directly set any options starting with 'CURL.' -*/ -static OCerror -oc_set_curl_options(OCstate* state) -{ - OCerror stat = OC_NOERR; - struct OCTriplestore* store = NULL; - struct OCTriple* triple = NULL; - int i; - char* hostport = NULL; - struct OCCURLFLAG* ocflag = NULL; - - hostport = occombinehostport(state->uri); - if(hostport == NULL) { - hostport = (char*)malloc(sizeof(char)*1); - *hostport = '\0'; - } - - store = &ocglobalstate.rc.daprc; - triple = store->triples; - - /* Assume that the triple store has been properly sorted */ - for(i=0;intriples;i++,triple++) { - size_t hostlen = strlen(triple->host); - const char* flagname; - - if(ocstrncmp("CURL.",triple->key,5) != 0) continue; /* not a curl flag */ - /* do hostport prefix comparison */ - if(hostlen > 0) { - int t = ocstrncmp(hostport,triple->host,hostlen); - if(t != 0) continue; - } - flagname = triple->key+5; /* 5 == strlen("CURL."); */ - ocflag = occurlflagbyname(flagname); - if(ocflag == NULL) {stat = OC_ECURL; goto done;} - stat = ocset_curlopt(state,ocflag->flag,cvt(triple->value,ocflag->type)); - } - done: - if(hostport && strlen(hostport) > 0) free(hostport); - return stat; -} - -static void* -cvt(char* value, enum OCCURLFLAGTYPE type) -{ - switch (type) { - case CF_LONG: { - /* Try to convert to long value */ - const char* p = value; - char* q = NULL; - long longvalue = strtol(p,&q,10); - if(*q != '\0') - return NULL; - return (void*)longvalue; - } - case CF_STRING: - return (void*)value; - case CF_UNKNOWN: case CF_OTHER: - return (void*)value; - } - return NULL; -} - -void -oc_curl_debug(OCstate* state) -{ - state->curlflags.verbose = 1; - ocset_curlflag(state,CURLOPT_VERBOSE); - ocset_curlflag(state,CURLOPT_ERRORBUFFER); -} - -/* Misc. */ - -int -ocrc_netrc_required(OCstate* state) -{ - char* netrcfile = ocrc_lookup(NETRCFILETAG,state->uri->uri); - return (netrcfile != NULL || state->curlflags.netrc != NULL ? 0 : 1); -} - -void -oc_curl_printerror(OCstate* state) -{ - fprintf(stderr,"curl error details: %s\n",state->curlerror); -} - -/* Determine if this version of curl supports - "file://..." &/or "https://..." urls. -*/ -void -oc_curl_protocols(struct OCGLOBALSTATE* state) -{ - const char* const* proto; /*weird*/ - curl_version_info_data* curldata; - curldata = curl_version_info(CURLVERSION_NOW); - for(proto=curldata->protocols;*proto;proto++) { - if(strcmp("file",*proto)==0) {state->curl.proto_file=1;} - if(strcmp("http",*proto)==0) {state->curl.proto_https=1;} - } - if(ocdebug > 0) { - oclog(OCLOGNOTE,"Curl file:// support = %d",state->curl.proto_file); - oclog(OCLOGNOTE,"Curl https:// support = %d",state->curl.proto_https); - } -} - - -/* -"Inverse" of ocset_curlflag; -Given a flag and value, it updates state. -Update a specific flag from state->curlflags. -*/ -OCerror -ocset_curlstate(OCstate* state, int flag, void* value) -{ - OCerror stat = OC_NOERR; - - switch (flag) { - - case CURLOPT_USERPWD: - if(state->creds.userpwd != NULL) free(state->creds.userpwd); - state->creds.userpwd = strdup((char*)value); - break; - - case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE: - if(state->curlflags.cookiejar != NULL) free(state->curlflags.cookiejar); - state->curlflags.cookiejar = strdup((char*)value); - break; - - case CURLOPT_NETRC: case CURLOPT_NETRC_FILE: - if(state->curlflags.netrc != NULL) free(state->curlflags.netrc); - state->curlflags.netrc = strdup((char*)value); - break; - - case CURLOPT_VERBOSE: - state->curlflags.verbose = (long)value; - break; - - case CURLOPT_TIMEOUT: - state->curlflags.timeout = (long)value; - break; - - case CURLOPT_USERAGENT: - if(state->curlflags.useragent != NULL) free(state->curlflags.useragent); - state->curlflags.useragent = strdup((char*)value); - break; - - case CURLOPT_FOLLOWLOCATION: - /* no need to store; will always be set */ - break; - - case CURLOPT_MAXREDIRS: - /* no need to store; will always be set */ - break; - - case CURLOPT_ERRORBUFFER: - /* no need to store; will always be set */ - break; - - case CURLOPT_ENCODING: - /* no need to store; will always be set to fixed value */ - break; - - case CURLOPT_PROXY: - /* We assume that the value is the proxy url */ - if(state->proxy.host != NULL) free(state->proxy.host); - if(state->proxy.userpwd != NULL) free(state->proxy.userpwd); - state->proxy.host = NULL; - state->proxy.userpwd = NULL; - if(!ocparseproxy(state,(char*)value)) - {stat = OC_EINVAL; goto done;} - break; - - case CURLOPT_SSLCERT: - if(state->ssl.certificate != NULL) free(state->ssl.certificate); - state->ssl.certificate = strdup((char*)value); - break; - case CURLOPT_SSLKEY: - if(state->ssl.key != NULL) free(state->ssl.key); - state->ssl.key = strdup((char*)value); - break; - case CURLOPT_KEYPASSWD: - if(state->ssl.keypasswd!= NULL) free(state->ssl.keypasswd); - state->ssl.keypasswd = strdup((char*)value); - break; - case CURLOPT_SSL_VERIFYPEER: - state->ssl.verifypeer = (long)value; - break; - case CURLOPT_SSL_VERIFYHOST: - state->ssl.verifyhost = (long)value; - break; - case CURLOPT_CAINFO: - if(state->ssl.cainfo != NULL) free(state->ssl.cainfo); - state->ssl.cainfo = strdup((char*)value); - break; - case CURLOPT_CAPATH: - if(state->ssl.capath != NULL) free(state->ssl.capath); - state->ssl.capath = strdup((char*)value); - break; - - default: { - struct OCCURLFLAG* f = occurlflagbyflag(flag); - if(f != NULL) - oclog(OCLOGWARN,"Attempt to add unexpected curl flag to state: %s", - f->name); - } break; - } -done: - return stat; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.h b/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.h deleted file mode 100644 index 47c838034f5..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/occurlfunctions.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * occurlfunction.h - * - * Created on: Mar 5, 2009 - * Author: rikki - */ - -#ifndef _CURLFUNCTION_H_ -#define _CURLFUNCTION_H_ - - -extern OCerror ocset_curlopt(OCstate* state, int flag, void* value); - -struct OCCURLFLAG* occurlflagbyflag(int flag); -struct OCCURLFLAG* occurlflagbyname(const char* name); - -extern OCerror ocset_flags_perfetch(OCstate*); -extern OCerror ocset_flags_perlink(OCstate*); - -extern OCerror ocset_curlflag(OCstate*,int); -extern OCerror ocset_curlstate(OCstate* state, int flag, void* value); - -extern void oc_curl_debug(OCstate* state); - -extern void oc_curl_printerror(OCstate* state); -extern int ocrc_netrc_required(OCstate* state); -extern void oc_curl_protocols(struct OCGLOBALSTATE*); - -/* From occurlflags.c */ -extern struct OCCURLFLAG* occurlflags(void); -extern struct OCCURLFLAG* occurlflagbyname(const char*); -extern struct OCCURLFLAG* occurlflagbyflag(int); -extern char* occombinehostport(const OCURI* uri); - -#endif /*_CURLFUNCTION_H_*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocdump.h b/contrib/netcdf/4.4.1.1/oc2/ocdump.h deleted file mode 100644 index 78e8d9c0da0..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocdump.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef OCDUMP_H -#define OCDUMP_H - -extern void ocdumpnode(OCnode* node); - -extern void ocdumpslice(OCslice* slice); -extern void ocdumpclause(OCprojectionclause* ref); - -extern void ocdumpmemory(char* memory, size_t len, int xdrencoded, int level); - -extern void ocdd(OCstate*,OCnode*,int xdrencoded, int level); - -extern void ocdumpdata(OCstate*,OCdata*,OCbytes*,int); - -extern void ocdumpdatatree(OCstate*, struct OCdata*, OCbytes* buffer, int depth); -extern void ocdumpdatapath(OCstate*, struct OCdata*, OCbytes* buffer); - -#endif /*OCDUMP_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocinternal.c b/contrib/netcdf/4.4.1.1/oc2/ocinternal.c deleted file mode 100644 index ce9161ae810..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocinternal.c +++ /dev/null @@ -1,762 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#include - -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif -#include - -#ifdef _MSC_VER -typedef int pid_t; -#endif - -#include "ocinternal.h" -#include "ocdebug.h" -#include "occlientparams.h" -#include "occurlfunctions.h" -#include "ochttp.h" -#include "ocread.h" -#include "dapparselex.h" - -#define DATADDSFILE "datadds" - -#if 0 -/* Note: TMPPATH must end in '/' */ -#ifdef __CYGWIN__ -#define TMPPATH1 "/cygdrive/c/temp/datadds" -#define TMPPATH2 "./datadds" -#elif defined(_WIN32) || defined(_WIN64) -#define TMPPATH1 "c:\\temp\\datadds" -#define TMPPATH2 ".\\datadds" -#else -#define TMPPATH1 "/tmp/datadds" -#define TMPPATH2 "./datadds" -#endif -#endif - -#define CLBRACE '{' -#define CRBRACE '}' - -static OCerror ocextractddsinmemory(OCstate*,OCtree*,int); -static OCerror ocextractddsinfile(OCstate*,OCtree*,int); -static char* constraintescape(const char* url); -static OCerror createtempfile(OCstate*,OCtree*); -static int dataError(XXDR* xdrs, OCstate*); - -static OCerror ocset_curlproperties(OCstate*); - -extern OCnode* makeunlimiteddimension(void); - -#if defined(_WIN32) || defined(_WIN64) -#ifdef HAVE_FCNTL_H -#include -#endif -#define _S_IREAD 256 -#define _S_IWRITE 128 -#else -#ifdef HAVE_SYS_STAT_H -#include -#endif -#endif - -/* Collect global state info in one place */ -struct OCGLOBALSTATE ocglobalstate; - -OCerror -ocinternalinitialize(void) -{ - int stat = OC_NOERR; - -#if 0 - if(sizeof(off_t) != sizeof(void*)) { - fprintf(stderr,"OC xxdr depends on the assumption that sizeof(off_t) == sizeof(void*)\n"); - /* - Commenting out for now, as this does not hold true on 32-bit linux systems. - OCASSERT(sizeof(off_t) == sizeof(void*)); - */ - } -#endif - - if(!ocglobalstate.initialized) { - memset((void*)&ocglobalstate,0,sizeof(ocglobalstate)); - ocglobalstate.initialized = 1; - } - - /* Capture temp dir*/ - { - char* tempdir; - char* p; - char* q; - char cwd[4096]; -#if defined(_WIN32) || defined(_WIN64) - tempdir = getenv("TEMP"); -#else - tempdir = "/tmp"; -#endif - if(tempdir == NULL) { - fprintf(stderr,"Cannot find a temp dir; using ./\n"); - tempdir = getcwd(cwd,sizeof(cwd)); - if(tempdir == NULL || *tempdir == '\0') tempdir = "."; - } - ocglobalstate.tempdir= (char*)malloc(strlen(tempdir) + 1); - for(p=tempdir,q=ocglobalstate.tempdir;*p;p++,q++) { - if((*p == '/' && *(p+1) == '/') - || (*p == '\\' && *(p+1) == '\\')) {p++;} - *q = *p; - } - *q = '\0'; -#if defined(_WIN32) || defined(_WIN64) -#else - /* Canonicalize */ - for(p=ocglobalstate.tempdir;*p;p++) { - if(*p == '\\') {*p = '/'; }; - } - *q = '\0'; -#endif - } - - /* Capture $HOME */ - { - char* p; - char* q; - char* home = getenv("HOME"); - - if(home == NULL) { - /* use tempdir */ - home = ocglobalstate.tempdir; - } - ocglobalstate.home = (char*)malloc(strlen(home) + 1); - for(p=home,q=ocglobalstate.home;*p;p++,q++) { - if((*p == '/' && *(p+1) == '/') - || (*p == '\\' && *(p+1) == '\\')) {p++;} - *q = *p; - } - *q = '\0'; -#if defined(_WIN32) || defined(_WIN64) -#else - /* Canonicalize */ - for(p=home;*p;p++) { - if(*p == '\\') {*p = '/'; }; - } -#endif - } - - /* Compute some xdr related flags */ - xxdr_init(); - - ocloginit(); - - oc_curl_protocols(&ocglobalstate); /* see what protocols are supported */ - - return OCTHROW(stat); -} - - -/**************************************************/ -OCerror -ocopen(OCstate** statep, const char* url) -{ - int stat = OC_NOERR; - OCstate * state = NULL; - OCURI* tmpurl = NULL; - CURL* curl = NULL; /* curl handle*/ - - if(!ocuriparse(url,&tmpurl)) {OCTHROWCHK(stat=OC_EBADURL); goto fail;} - - stat = occurlopen(&curl); - if(stat != OC_NOERR) {OCTHROWCHK(stat); goto fail;} - - state = (OCstate*)ocmalloc(sizeof(OCstate)); /* ocmalloc zeros memory*/ - if(state == NULL) {OCTHROWCHK(stat=OC_ENOMEM); goto fail;} - - /* Setup DAP state*/ - state->header.magic = OCMAGIC; - state->header.occlass = OC_State; - state->curl = curl; - state->trees = oclistnew(); - state->uri = tmpurl; - if(!ocuridecodeparams(state->uri)) { - oclog(OCLOGWARN,"Could not parse client parameters"); - } - state->packet = ocbytesnew(); - ocbytessetalloc(state->packet,DFALTPACKETSIZE); /*initial reasonable size*/ - - /* capture curl properties for this link from rc file1*/ - stat = ocset_curlproperties(state); - if(stat != OC_NOERR) goto fail; - - /* Set the one-time curl flags */ - if((stat=ocset_flags_perlink(state))!= OC_NOERR) goto fail; -#if 1 /* temporarily make per-link */ - if((stat=ocset_flags_perfetch(state))!= OC_NOERR) goto fail; -#endif - - if(statep) *statep = state; - else { - if(state != NULL) ocfree(state); - } - return OCTHROW(stat); - -fail: - ocurifree(tmpurl); - if(state != NULL) ocfree(state); - if(curl != NULL) occurlclose(curl); - return OCTHROW(stat); -} - -OCerror -ocfetch(OCstate* state, const char* constraint, OCdxd kind, OCflags flags, - OCnode** rootp) -{ - OCtree* tree = NULL; - OCnode* root = NULL; - OCerror stat = OC_NOERR; - - tree = (OCtree*)ocmalloc(sizeof(OCtree)); - MEMCHECK(tree,OC_ENOMEM); - memset((void*)tree,0,sizeof(OCtree)); - tree->dxdclass = kind; - tree->state = state; - tree->constraint = constraintescape(constraint); - if(tree->constraint == NULL) - tree->constraint = nulldup(constraint); - - /* Set per-fetch curl properties */ -#if 0 /* temporarily make per-link */ - if((stat=ocset_flags_perfetch(state))!= OC_NOERR) goto fail; -#endif - - ocbytesclear(state->packet); - - switch (kind) { - case OCDAS: - stat = readDAS(state,tree); - if(stat == OC_NOERR) { - tree->text = ocbytesdup(state->packet); - if(tree->text == NULL) stat = OC_EDAS; - } - break; - case OCDDS: - stat = readDDS(state,tree); - if(stat == OC_NOERR) { - tree->text = ocbytesdup(state->packet); - if(tree->text == NULL) stat = OC_EDDS; - } - break; - case OCDATADDS: - if((flags & OCONDISK) != 0) {/* store in file */ - /* Create the datadds file immediately - so that DRNO can reference it*/ - /* Make the tmp file*/ - stat = createtempfile(state,tree); - if(stat) {OCTHROWCHK(stat); goto fail;} - stat = readDATADDS(state,tree,flags); - if(stat == OC_NOERR) { - /* Separate the DDS from data and return the dds; - will modify packet */ - stat = ocextractddsinfile(state,tree,flags); - } - } else { /*inmemory*/ - stat = readDATADDS(state,tree,flags); - if(stat == OC_NOERR) { - /* Separate the DDS from data and return the dds; - will modify packet */ - stat = ocextractddsinmemory(state,tree,flags); - } - } - break; - default: - break; - }/*switch*/ - /* Obtain any http code */ - state->error.httpcode = ocfetchhttpcode(state->curl); - if(stat != OC_NOERR) { - if(state->error.httpcode >= 400) { - oclog(OCLOGWARN,"oc_open: Could not read url; http error = %l",state->error.httpcode); - } else { - oclog(OCLOGWARN,"oc_open: Could not read url"); - } - goto fail; - } - - tree->nodes = NULL; - stat = DAPparse(state,tree,tree->text); - /* Check and report on an error return from the server */ - if(stat == OC_EDAPSVC && state->error.code != NULL) { - oclog(OCLOGERR,"oc_open: server error retrieving url: code=%s message=\"%s\"", - state->error.code, - (state->error.message?state->error.message:"")); - } - if(stat) {OCTHROWCHK(stat); goto fail;} - root = tree->root; - /* make sure */ - tree->root = root; - root->tree = tree; - - /* Verify the parse */ - switch (kind) { - case OCDAS: - if(root->octype != OC_Attributeset) - {OCTHROWCHK(stat=OC_EDAS); goto fail;} - break; - case OCDDS: - if(root->octype != OC_Dataset) - {OCTHROWCHK(stat=OC_EDDS); goto fail;} - break; - case OCDATADDS: - if(root->octype != OC_Dataset) - {OCTHROWCHK(stat=OC_EDATADDS); goto fail;} - /* Modify the tree kind */ - tree->dxdclass = OCDATADDS; - break; - default: return OC_EINVAL; - } - - if(kind != OCDAS) { - /* Process ocnodes to mark those that are cacheable */ - ocmarkcacheable(state,root); - /* Process ocnodes to handle various semantic issues*/ - occomputesemantics(tree->nodes); - } - - /* Process ocnodes to compute name info*/ - occomputefullnames(tree->root); - - if(kind == OCDATADDS) { - if((flags & OCONDISK) != 0) { - tree->data.xdrs = xxdr_filecreate(tree->data.file,tree->data.bod); - } else { -#ifdef OCDEBUG -fprintf(stderr,"ocfetch.datadds.memory: datasize=%lu bod=%lu\n", - (unsigned long)tree->data.datasize,(unsigned long)tree->data.bod); -#endif - /* Switch to zero based memory */ - tree->data.xdrs - = xxdr_memcreate(tree->data.memory,tree->data.datasize,tree->data.bod); - } - MEMCHECK(tree->data.xdrs,OC_ENOMEM); - /* Do a quick check to see if server returned an ERROR {} - at the beginning of the data - */ - if(dataError(tree->data.xdrs,state)) { - stat = OC_EDATADDS; - oclog(OCLOGERR,"oc_open: server error retrieving url: code=%s message=\"%s\"", - state->error.code, - (state->error.message?state->error.message:"")); - goto fail; - } - - /* Compile the data into a more accessible format */ - stat = occompile(state,tree->root); - if(stat != OC_NOERR) - goto fail; - } - - /* Put root into the state->trees list */ - oclistpush(state->trees,(void*)root); - - if(rootp) *rootp = root; - return stat; - -fail: - if(root != NULL) - ocroot_free(root); - else if(tree != NULL) - octree_free(tree); - return OCTHROW(stat); -} - -static OCerror -createtempfile(OCstate* state, OCtree* tree) -{ - int stat = OC_NOERR; - char* path = NULL; - char* name = NULL; - int len; - - len = - strlen(ocglobalstate.tempdir) - + 1 /* '/' */ - + strlen(DATADDSFILE); - path = (char*)malloc(len+1); - if(path == NULL) return OC_ENOMEM; - occopycat(path,len,3,ocglobalstate.tempdir,"/",DATADDSFILE); - stat = ocmktmp(path,&name); - free(path); - if(stat != OC_NOERR) goto fail; -#ifdef OCDEBUG - oclog(OCLOGNOTE,"oc_open: creating tmp file: %s",name); -#endif - tree->data.filename = name; /* remember our tmp file name */ - name = NULL; - tree->data.file = fopen(tree->data.filename,"w+"); - if(tree->data.file == NULL) return OC_EOPEN; - /* unlink the temp file so it will automatically be reclaimed */ - if(ocdebug == 0) unlink(tree->data.filename); - return stat; - -fail: - if(name != NULL) { - oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: %s",name); - free(name); - } else { - oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: NULL"); - } - return OCTHROW(stat); -} - -void -occlose(OCstate* state) -{ - unsigned int i; - if(state == NULL) return; - - /* Warning: ocfreeroot will attempt to remove the root from state->trees */ - /* Ok in this case because we are popping the root out of state->trees */ - for(i=0;itrees);i++) { - OCnode* root = (OCnode*)oclistpop(state->trees); - ocroot_free(root); - } - oclistfree(state->trees); - ocurifree(state->uri); - ocbytesfree(state->packet); - ocfree(state->error.code); - ocfree(state->error.message); - ocfree(state->curlflags.useragent); - if(state->curlflags.cookiejar) { -#if 0 - if(state->curlflags.createdflags & COOKIECREATED) - unlink(state->curlflags.cookiejar); -#endif - ocfree(state->curlflags.cookiejar); - } - if(state->curlflags.netrc != NULL) { -#if 0 - if(state->curlflags.createdflags & NETRCCREATED) - unlink(state->curlflags.netrc); -#endif - ocfree(state->curlflags.netrc); - } - ocfree(state->ssl.certificate); - ocfree(state->ssl.key); - ocfree(state->ssl.keypasswd); - ocfree(state->ssl.cainfo); - ocfree(state->ssl.capath); - ocfree(state->proxy.host); - ocfree(state->proxy.userpwd); - ocfree(state->creds.userpwd); - if(state->curl != NULL) occurlclose(state->curl); - ocfree(state); -} - -static OCerror -ocextractddsinmemory(OCstate* state, OCtree* tree, OCflags flags) -{ - OCerror stat = OC_NOERR; - size_t ddslen, bod, bodfound; - /* Read until we find the separator (or EOF)*/ - bodfound = ocfindbod(state->packet,&bod,&ddslen); - if(!bodfound) {/* No BOD; pretend */ - bod = tree->data.bod; - ddslen = tree->data.datasize; - } - tree->data.bod = bod; - tree->data.ddslen = ddslen; - /* copy out the dds */ - if(ddslen > 0) { - tree->text = (char*)ocmalloc(ddslen+1); - memcpy((void*)tree->text,(void*)ocbytescontents(state->packet),ddslen); - tree->text[ddslen] = '\0'; - } else - tree->text = NULL; - /* Extract the inmemory contents */ - tree->data.memory = ocbytesextract(state->packet); -#ifdef OCIGNORE - /* guarantee the data part is on an 8 byte boundary */ - if(tree->data.bod % 8 != 0) { - unsigned long count = tree->data.datasize - tree->data.bod; - memcpy(tree->xdrmemory,tree->xdrmemory+tree->data.bod,count); - tree->data.datasize = count; - tree->data.bod = 0; - tree->data.ddslen = 0; - } -#endif - if(tree->text == NULL) stat = OC_EDATADDS; - return OCTHROW(stat); -} - -static OCerror -ocextractddsinfile(OCstate* state, OCtree* tree, OCflags flags) -{ - OCerror stat = OC_NOERR; - size_t ddslen, bod, bodfound; - - /* Read until we find the separator (or EOF)*/ - ocbytesclear(state->packet); - rewind(tree->data.file); - bodfound = 0; - do { - char chunk[1024]; - size_t count; - /* read chunks of the file until we find the separator*/ - count = fread(chunk,1,sizeof(chunk),tree->data.file); - if(count <= 0) break; /* EOF;*/ - ocbytesappendn(state->packet,chunk,count); - bodfound = ocfindbod(state->packet,&bod,&ddslen); - } while(!bodfound); - if(!bodfound) {/* No BOD; pretend */ - bod = tree->data.bod; - ddslen = tree->data.datasize; -#ifdef OCDEBUG -fprintf(stderr,"missing bod: ddslen=%lu bod=%lu\n", -(unsigned long)ddslen,(unsigned long)bod); -#endif - } - tree->data.bod = bod; - tree->data.ddslen = ddslen; - /* copy out the dds */ - if(ddslen > 0) { - tree->text = (char*)ocmalloc(ddslen+1); - memcpy((void*)tree->text,(void*)ocbytescontents(state->packet),ddslen); - tree->text[ddslen] = '\0'; - } else - tree->text = NULL; - /* reset the position of the tmp file*/ - if(fseek(tree->data.file,(long)tree->data.bod,SEEK_SET) < 0 - || tree->text == NULL) - stat = OC_EDATADDS; - return OCTHROW(stat); -} - -/* Allow these (non-alpha-numerics) to pass thru */ -static char okchars[] = "&/:;,.=?@'\"<>{}!|\\^[]`~"; -static char hexdigits[] = "0123456789abcdef"; - -/* Modify constraint to use %XX escapes */ -static char* -constraintescape(const char* url) -{ - size_t len; - char* p; - int c; - char* eurl; - - if(url == NULL) return NULL; - len = strlen(url); - eurl = ocmalloc(1+3*len); /* worst case: c -> %xx */ - MEMCHECK(eurl,NULL); - p = eurl; - *p = '\0'; - while((c=*url++)) { - if(c >= '0' && c <= '9') {*p++ = c;} - else if(c >= 'a' && c <= 'z') {*p++ = c;} - else if(c >= 'A' && c <= 'Z') {*p++ = c;} - else if(strchr(okchars,c) != NULL) {*p++ = c;} - else { - *p++ = '%'; - *p++ = hexdigits[(c & 0xf0)>>4]; - *p++ = hexdigits[(c & 0xf)]; - } - } - *p = '\0'; - return eurl; -} - -OCerror -ocupdatelastmodifieddata(OCstate* state) -{ - OCerror status = OC_NOERR; - long lastmodified; - char* base = NULL; - base = ocuribuild(state->uri,NULL,NULL,OCURIENCODE); - status = ocfetchlastmodified(state->curl, base, &lastmodified); - free(base); - if(status == OC_NOERR) { - state->datalastmodified = lastmodified; - } - return OCTHROW(status); -} - -/* - Set curl properties for link based on rc files etc. -*/ -static OCerror -ocset_curlproperties(OCstate* state) -{ - OCerror stat = OC_NOERR; - - /* extract the relevant triples int state */ - ocrc_process(state); - - if(state->curlflags.useragent == NULL) { - size_t len = strlen(DFALTUSERAGENT) + strlen(VERSION) + 1; - char* agent = (char*)malloc(len+1); - if(occopycat(agent,len,2,DFALTUSERAGENT,VERSION)) - state->curlflags.useragent = agent; - else - free(agent); - } - - /* Some servers (e.g. thredds and columbia) appear to require a place - to put cookies in order for some security functions to work - */ - if(state->curlflags.cookiejar != NULL - && strlen(state->curlflags.cookiejar) == 0) { - free(state->curlflags.cookiejar); - state->curlflags.cookiejar = NULL; - } - - if(state->curlflags.cookiejar == NULL) { - /* If no cookie file was defined, define a default */ - char tmp[OCPATHMAX+1]; - int stat; - pid_t pid = getpid(); - snprintf(tmp,sizeof(tmp)-1,"%s/%s.%ld/",ocglobalstate.tempdir,OCDIR,(long)pid); -#ifdef _WIN32 - stat = mkdir(tmp); -#else - stat = mkdir(tmp,S_IRUSR | S_IWUSR | S_IXUSR); -#endif - if(stat != 0 && errno != EEXIST) { - fprintf(stderr,"Cannot create cookie directory\n"); - goto fail; - } - errno = 0; - /* Create the unique cookie file name */ - stat = ocmktmp(tmp,&state->curlflags.cookiejar); - state->curlflags.createdflags |= COOKIECREATED; - if(stat != OC_NOERR && errno != EEXIST) { - fprintf(stderr,"Cannot create cookie file\n"); - goto fail; - } - errno = 0; - } - OCASSERT(state->curlflags.cookiejar != NULL); - - /* Make sure the cookie jar exists and can be read and written */ - { - FILE* f = NULL; - char* fname = state->curlflags.cookiejar; - /* See if the file exists already */ - f = fopen(fname,"r"); - if(f == NULL) { - /* Ok, create it */ - f = fopen(fname,"w+"); - if(f == NULL) { - fprintf(stderr,"Cookie file cannot be read and written: %s\n",fname); - {stat = OC_EPERM; goto fail;} - } - } else { /* test if file can be written */ - fclose(f); - f = fopen(fname,"r+"); - if(f == NULL) { - fprintf(stderr,"Cookie file is cannot be written: %s\n",fname); - {stat = OC_EPERM; goto fail;} - } - } - if(f != NULL) fclose(f); - } - -#if 0 - /* Create a netrc file if specified and required, - where required => >1 NETRC triples exist */ - if(ocrc_netrc_required(state)) { - /* WARNING: it appears that a user+pwd was specified specifically, then - the netrc file will be completely disabled. */ - if(state->creds.userpwd != NULL) { - oclog(OCLOGWARN,"The rc file specifies both netrc and user+pwd; this will cause curl to ignore the netrc file"); - } - stat = oc_build_netrc(state); - } -#endif - - return stat; - -fail: - return OCTHROW(stat); -} - -static char* ERROR_TAG = "Error "; - -static int -dataError(XXDR* xdrs, OCstate* state) -{ - int depth=0; - int errfound = 0; - off_t ckp=0,avail=0; - int i=0; - char* errmsg = NULL; - char errortext[16]; /* bigger thant |ERROR_TAG|*/ - avail = xxdr_getavail(xdrs); - if(avail < strlen(ERROR_TAG)) - goto done; /* assume it is ok */ - ckp = xxdr_getpos(xdrs); - /* Read enough characters to test for 'ERROR ' */ - errortext[0] = '\0'; - xxdr_getbytes(xdrs,errortext,(off_t)strlen(ERROR_TAG)); - if(ocstrncmp(errortext,ERROR_TAG,strlen(ERROR_TAG)) != 0) - goto done; /* not an immediate error */ - /* Try to locate the whole error body */ - xxdr_setpos(xdrs,ckp); - for(depth=0,i=0;ierror.message = errmsg; - state->error.code = strdup("?"); - state->error.httpcode = 404; - xxdr_setpos(xdrs,ckp); - errfound = 1; -done: - xxdr_setpos(xdrs,ckp); - return errfound; -} - -/**************************************************/ -/* Curl option functions */ -/* -Note that if we set the option in curlflags, -then we need to also invoke the ocset_curlopt -to update the curl flags in libcurl. -*/ - -OCerror -ocset_useragent(OCstate* state, const char* agent) -{ - OCerror stat = OC_NOERR; - if(state->curlflags.useragent != NULL) - free(state->curlflags.useragent); - state->curlflags.useragent = strdup(agent); - if(state->curlflags.useragent == NULL) - return OCTHROW(OC_ENOMEM); - stat = ocset_curlflag(state,CURLOPT_USERAGENT); - return stat; -} - -OCerror -ocset_netrc(OCstate* state, const char* path) -{ - OCerror stat = OC_NOERR; - if(state->curlflags.netrc != NULL) - free(state->curlflags.netrc); - state->curlflags.netrc = strdup(path); - if(state->curlflags.netrc == NULL) - return OCTHROW(OC_ENOMEM); - stat = ocset_curlflag(state,CURLOPT_NETRC); - return stat; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/ocinternal.h b/contrib/netcdf/4.4.1.1/oc2/ocinternal.h deleted file mode 100644 index be20ac0c96e..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocinternal.h +++ /dev/null @@ -1,281 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef OCINTERNAL_H -#define OCINTERNAL_H - -#include "config.h" - - -#if defined(_WIN32) || defined(_WIN64) -#include -#endif - -/* Required for getcwd, other functions. */ -#ifdef _MSC_VER -#include -#define getcwd _getcwd -#endif - -#ifdef _AIX -#include -#endif - -#include -#include -#include -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STDARG_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -#define CURL_DISABLE_TYPECHECK 1 -#include - -#include "oclist.h" -#include "ocbytes.h" -#include "ocuri.h" - -#ifndef HAVE_STRNDUP -/* Not all systems have strndup, so provide one*/ -#define strndup ocstrndup -#endif - -#define OCCACHEPOS - -#ifndef HAVE_STRNDUP -/* Not all systems have strndup, so provide one*/ -#define strndup ocstrndup -#endif - -#define OCPATHMAX 8192 - -#ifndef nullfree -#define nullfree(x) {if((x)!=NULL) free(x);} -#endif - -/* Forwards */ -typedef struct OCstate OCstate; -typedef struct OCnode OCnode; -typedef struct OCdata OCdata; -struct OCTriplestore; - -/* Define the internal node classification values */ -#define OC_None 0 -#define OC_State 1 -#define OC_Node 2 -#define OC_Data 3 - -/* Define a magic number to mark externally visible oc objects */ -#define OCMAGIC ((unsigned int)0x0c0c0c0c) /*clever, huh*/ - -/* Max rc file line size */ -#define MAXRCLINESIZE 4096 - -/* Max number of triples from an rc file */ -#define MAXRCLINES 4096 - -/* Define a struct that all oc objects must start with */ -/* OCheader must be defined here to make it available in other headers */ -typedef struct OCheader { - unsigned int magic; - unsigned int occlass; -} OCheader; - -#include "oc.h" -#include "ocx.h" -#include "ocnode.h" -#include "ocdata.h" -#include "occonstraints.h" -#include "ocutil.h" -#include "oclog.h" -#include "xxdr.h" -#include "ocdatatypes.h" -#include "occompile.h" - -#ifndef nulldup -#define nulldup(s) (s==NULL?NULL:strdup(s)) -#endif - -/* - * Macros for dealing with flag bits. - */ -#define fset(t,f) ((t) |= (f)) -#define fclr(t,f) ((t) &= ~(f)) -#define fisset(t,f) ((t) & (f)) - -#define nullstring(s) (s==NULL?"(null)":s) -#define PATHSEPARATOR "." - -#define OCDIR "oc" - -/* Define infinity for memory size */ -#if SIZEOF_SIZE_T == 4 -#define OCINFINITY ((size_t)0xffffffff) -#else -#define OCINFINITY ((size_t)0xffffffffffffffff) -#endif - -/* Extend the OCdxd type for internal use */ -#define OCVER 3 - -/* Default initial memory packet size */ -#define DFALTPACKETSIZE 0x20000 /*approximately 100k bytes*/ - -/* Default maximum memory packet size */ -#define DFALTMAXPACKETSIZE 0x3000000 /*approximately 50M bytes*/ - -/* Default user agent string (will have version appended)*/ -#define DFALTUSERAGENT "oc" - -/* Hold known curl flags */ - -enum OCCURLFLAGTYPE {CF_UNKNOWN=0,CF_OTHER=1,CF_STRING=2,CF_LONG=3}; -struct OCCURLFLAG { - const char* name; - int flag; - int value; - enum OCCURLFLAGTYPE type; -}; - -struct OCTriplestore { - int ntriples; - struct OCTriple { - char host[MAXRCLINESIZE]; /* includes port if specified */ - char key[MAXRCLINESIZE]; - char value[MAXRCLINESIZE]; - } triples[MAXRCLINES]; -}; - -/* Collect global state info in one place */ -extern struct OCGLOBALSTATE { - int initialized; - struct { - int proto_file; - int proto_https; - } curl; - char* tempdir; /* track a usable temp dir */ - char* home; /* track $HOME for use in creating $HOME/.oc dir */ - struct { - int ignore; /* if 1, then do not use any rc file */ - int loaded; - struct OCTriplestore daprc; /* the rc file triple store fields*/ - char* rcfile; /* specified rcfile; overrides anything else */ - } rc; -} ocglobalstate; - -/*! Specifies the OCstate = non-opaque version of OClink */ -struct OCstate { - OCheader header; /* class=OC_State */ - OClist* trees; /* list ; all root objects */ - OCURI* uri; /* base URI*/ - OCbytes* packet; /* shared by all trees during construction */ - struct OCerrdata {/* Hold info for an error return from server */ - char* code; - char* message; - long httpcode; - char curlerrorbuf[CURL_ERROR_SIZE]; /* CURLOPT_ERRORBUFFER*/ - } error; - CURL* curl; /* curl handle*/ - char curlerror[CURL_ERROR_SIZE]; - struct OCcurlflags { - int proto_file; /* Is file: supported? */ - int proto_https; /* is https: supported? */ - int compress; /*CURLOPT_ENCODING*/ - int verbose; /*CURLOPT_ENCODING*/ - int timeout; /*CURLOPT_TIMEOUT*/ - int maxredirs; /*CURLOPT_MAXREDIRS*/ - char* useragent; /*CURLOPT_USERAGENT*/ - /* track which of these are created by oc */ -#define COOKIECREATED 1 -#define NETRCCREATED 2 - int createdflags; - char* cookiejar; /*CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE*/ - char* netrc; /*CURLOPT_NETRC,CURLOPT_NETRC_FILE*/ - } curlflags; - struct OCSSL { - int verifypeer; /* CURLOPT_SSL_VERIFYPEER; - do not do this when cert might be self-signed - or temporarily incorrect */ - int verifyhost; /* CURLOPT_SSL_VERIFYHOST; for client-side verification */ - char* certificate; /*CURLOPT_SSLCERT*/ - char* key; /*CURLOPT_SSLKEY*/ - char* keypasswd; /*CURLOPT_SSLKEYPASSWD*/ - char* cainfo; /* CURLOPT_CAINFO; certificate authority */ - char* capath; /*CURLOPT_CAPATH*/ - } ssl; - struct OCproxy { - char *host; /*CURLOPT_PROXY*/ - int port; /*CURLOPT_PROXYPORT*/ - char* userpwd; /*CURLOPT_PROXYUSERPWD*/ - } proxy; - struct OCcredentials { - char *userpwd; /*CURLOPT_USERPWD*/ - } creds; - void* usercurldata; - long ddslastmodified; - long datalastmodified; -}; - -/*! OCtree holds extra state info about trees */ - -typedef struct OCtree -{ - OCdxd dxdclass; - char* constraint; - char* text; - struct OCnode* root; /* cross link */ - struct OCstate* state; /* cross link */ - OClist* nodes; /* all nodes in tree*/ - /* when dxdclass == OCDATADDS */ - struct { - char* memory; /* allocated memory if OC_ONDISK is not set */ - char* filename; /* If OC_ONDISK is set */ - FILE* file; - off_t datasize; /* xdr size on disk or in memory */ - off_t bod; /* offset of the beginning of packet data */ - off_t ddslen; /* length of ddslen (assert(ddslen <= bod)) */ - XXDR* xdrs; /* access either memory or file */ - OCdata* data; - } data; -} OCtree; - -/* (Almost) All shared procedure definitions are kept here - except for: ocdebug.h ocutil.h - The true external interface is defined in oc.h -*/ - -#if 0 -/* Location: ceparselex.c*/ -extern int cedebug; -extern OClist* CEparse(OCstate*,char* input); -#endif - -extern OCerror ocopen(OCstate** statep, const char* url); -extern void occlose(OCstate* state); -extern OCerror ocfetch(OCstate*, const char*, OCdxd, OCflags, OCnode**); -extern int oc_network_order; -extern int oc_invert_xdr_double; -extern OCerror ocinternalinitialize(void); - -extern OCerror ocupdatelastmodifieddata(OCstate* state); - -extern OCerror ocset_useragent(OCstate* state, const char* agent); -extern OCerror ocset_netrc(OCstate* state, const char* path); - -/* From ocrc.c */ -extern OCerror ocrc_load(); /* find, read, and compile */ -extern OCerror ocrc_process(OCstate* state); /* extract relevant triples */ -extern char* ocrc_lookup(char* key, char* url); -extern struct OCTriple* ocrc_triple_iterate(char* key, char* url, struct OCTriple* prevp); -extern int ocparseproxy(OCstate* state, char* v); - -#endif /*COMMON_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/oclist.c b/contrib/netcdf/4.4.1.1/oc2/oclist.c deleted file mode 100644 index 821c5588dc8..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/oclist.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ -#include -#include -#include - -#include "oclist.h" - -int oclistnull(void* e) {return e == NULL;} - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#define DEFAULTALLOC 16 -#define ALLOCINCR 16 - -OClist* oclistnew(void) -{ - OClist* l; -/* - if(!ocinitialized) { - memset((void*)&ocDATANULL,0,sizeof(void*)); - ocinitialized = 1; - } -*/ - l = (OClist*)malloc(sizeof(OClist)); - if(l) { - l->alloc=0; - l->length=0; - l->content=NULL; - } - return l; -} - -int -oclistfree(OClist* l) -{ - if(l) { - l->alloc = 0; - if(l->content != NULL) {free(l->content); l->content = NULL;} - free(l); - } - return TRUE; -} - -int -oclistsetalloc(OClist* l, size_t sz) -{ - void** newcontent = NULL; - if(l == NULL) return FALSE; - if(sz <= 0) {sz = (l->length?2*l->length:DEFAULTALLOC);} - if(l->alloc >= sz) {return TRUE;} - newcontent=(void**)calloc(sz,sizeof(void*)); - if(newcontent != NULL && l->alloc > 0 && l->length > 0 && l->content != NULL) { - memcpy((void*)newcontent,(void*)l->content,sizeof(void*)*l->length); - } - if(l->content != NULL) free(l->content); - l->content=newcontent; - l->alloc=sz; - return TRUE; -} - -int -oclistsetlength(OClist* l, size_t sz) -{ - if(l == NULL) return FALSE; - if(sz > l->alloc && !oclistsetalloc(l,sz)) return FALSE; - l->length = sz; - return TRUE; -} - -void* -oclistget(OClist* l, size_t index) -{ - if(l == NULL || l->length == 0) return NULL; - if(index >= l->length) return NULL; - return l->content[index]; -} - -int -oclistset(OClist* l, size_t index, void* elem) -{ - if(l == NULL) return FALSE; - if(index >= l->length) return FALSE; - l->content[index] = elem; - return TRUE; -} - -/* Insert at position i of l; will push up elements i..|seq|. */ -int -oclistinsert(OClist* l, size_t index, void* elem) -{ - int i; /* do not make unsigned */ - if(l == NULL) return FALSE; - if(index > l->length) return FALSE; - oclistsetalloc(l,0); - for(i=(int)l->length;i>index;i--) l->content[i] = l->content[i-1]; - l->content[index] = elem; - l->length++; - return TRUE; -} - -int -oclistpush(OClist* l, void* elem) -{ - if(l == NULL) return FALSE; - if(l->length >= l->alloc) oclistsetalloc(l,0); - l->content[l->length] = elem; - l->length++; - return TRUE; -} - -void* -oclistpop(OClist* l) -{ - if(l == NULL || l->length == 0) return NULL; - l->length--; - return l->content[l->length]; -} - -void* -oclisttop(OClist* l) -{ - if(l == NULL || l->length == 0) return NULL; - return l->content[l->length - 1]; -} - -void* -oclistremove(OClist* l, size_t i) -{ - size_t len; - void* elem; - if(l == NULL || (len=l->length) == 0) return NULL; - if(i >= len) return NULL; - elem = l->content[i]; - for(i+=1;icontent[i-1] = l->content[i]; - l->length--; - return elem; -} - -/* Duplicate and return the content (null terminate) */ -void** -oclistdup(OClist* l) -{ - void** result = (void**)malloc(sizeof(void*)*(l->length+1)); - if(result != NULL) { - if(l != NULL && oclistlength(l) != 0) - memcpy((void*)result,(void*)l->content,sizeof(void*)*l->length); - result[l->length] = (void*)0; - } - return result; -} - -int -oclistcontains(OClist* l, void* elem) -{ - size_t i; - for(i=0;ilength) == 0) return 0; - for(i=0;icontent[i]; - if(elem == candidate) { - for(i+=1;icontent[i-1] = l->content[i]; - l->length--; - found = 1; - break; - } - } - return found; -} - - - - -/* Extends oclist to include a unique operator - which remove duplicate values; NULL values removed - return value is always 1. -*/ - -int -oclistunique(OClist* l) -{ - size_t i,j,k,len; - void** content; - if(l == NULL || l->length == 0) return 1; - len = l->length; - content = l->content; - for(i=0;ilength = len; - return 1; -} - -OClist* -oclistclone(OClist* l) -{ - OClist* clone = oclistnew(); - *clone = *l; - clone->content = oclistdup(l); - return clone; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/oclist.h b/contrib/netcdf/4.4.1.1/oc2/oclist.h deleted file mode 100644 index 7b8901c8af4..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/oclist.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ -#ifndef OCLIST_H -#define OCLIST_H 1 - -/* Define the type of the elements in the list*/ - -#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) -#define EXTERNC extern "C" -#else -#define EXTERNC extern -#endif - -EXTERNC int oclistnull(void*); - -typedef struct OClist { - size_t alloc; - size_t length; - void** content; -} OClist; - -EXTERNC OClist* oclistnew(void); -EXTERNC int oclistfree(OClist*); -EXTERNC int oclistsetalloc(OClist*,size_t); -EXTERNC int oclistsetlength(OClist*,size_t); - -/* Set the ith element */ -EXTERNC int oclistset(OClist*,size_t,void*); -/* Get value at position i */ -EXTERNC void* oclistget(OClist*,size_t);/* Return the ith element of l */ -/* Insert at position i; will push up elements i..|seq|. */ -EXTERNC int oclistinsert(OClist*,size_t,void*); -/* Remove element at position i; will move higher elements down */ -EXTERNC void* oclistremove(OClist* l, size_t i); - -/* Tail operations */ -EXTERNC int oclistpush(OClist*,void*); /* Add at Tail */ -EXTERNC void* oclistpop(OClist*); -EXTERNC void* oclisttop(OClist*); - -/* Duplicate and return the content (null terminate) */ -EXTERNC void** oclistdup(OClist*); - -/* Look for value match */ -EXTERNC int oclistcontains(OClist*, void*); - -/* Remove element by value; only removes first encountered */ -EXTERNC int oclistelemremove(OClist* l, void* elem); - -/* remove duplicates */ -EXTERNC int oclistunique(OClist*); - -/* Create a clone of a list */ -EXTERNC OClist* oclistclone(OClist*); - -/* Following are always "in-lined"*/ -#define oclistclear(l) oclistsetlength((l),0) -#define oclistextend(l,len) oclistsetalloc((l),(len)+(l->alloc)) -#define oclistcontents(l) ((l)==NULL?NULL:(l)->content) -#define oclistlength(l) ((l)==NULL?0:(l)->length) - -#endif /*OCLIST_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/oclog.c b/contrib/netcdf/4.4.1.1/oc2/oclog.c deleted file mode 100644 index 7c17ad2e339..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/oclog.c +++ /dev/null @@ -1,229 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ - -#include "config.h" -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#ifdef HAVE_STDARG_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif - -#include "oclog.h" - -#define PREFIXLEN 8 -#define MAXTAGS 256 -#define OCTAGDFALT "Log"; - -static int oclogginginitialized = 0; -static int oclogging = 0; -static int ocsystemfile = 0; /* 1 => we are logging to file we did not open */ -static char* oclogfile = NULL; -static FILE* oclogstream = NULL; - -static int octagsize = 0; -static char** octagset = NULL; -static char* octagdfalt = NULL; -static char* octagsetdfalt[] = {"Warning","Error","Note","Debug"}; -static char* octagname(int tag); - -/*!\defgroup OClog OClog Management -@{*/ - -/*!\internal -*/ - -void -ocloginit(void) -{ - const char* file; - if(oclogginginitialized) - return; - oclogginginitialized = 1; - file = getenv(OCENVFLAG); - ocsetlogging(0); - oclogfile = NULL; - oclogstream = NULL; - /* Use environment variables to preset oclogging state*/ - /* I hope this is portable*/ - if(file != NULL && strlen(file) > 0) { - if(oclogopen(file)) { - ocsetlogging(1); - } - } - octagdfalt = OCTAGDFALT; - octagset = octagsetdfalt; -} - -/*! -Enable/Disable logging. - -\param[in] tf If 1, then turn on logging, if 0, then turn off logging. - -\return The previous value of the logging flag. -*/ - -int -ocsetlogging(int tf) -{ - int was; - if(!oclogginginitialized) ocloginit(); - was = oclogging; - oclogging = tf; - return was; -} - -/*! -Specify a file into which to place logging output. - -\param[in] file The name of the file into which to place logging output. -If the file has the value NULL, then send logging output to -stderr. - -\return zero if the open failed, one otherwise. -*/ - -int -oclogopen(const char* file) -{ - if(!oclogginginitialized) ocloginit(); - oclogclose(); - if(file == NULL || strlen(file) == 0) { - /* use stderr*/ - oclogstream = stderr; - oclogfile = NULL; - ocsystemfile = 1; - } else if(strcmp(file,"stdout") == 0) { - /* use stdout*/ - oclogstream = stdout; - oclogfile = NULL; - ocsystemfile = 1; - } else if(strcmp(file,"stderr") == 0) { - /* use stderr*/ - oclogstream = stderr; - oclogfile = NULL; - ocsystemfile = 1; - } else { - int fd; - oclogfile = strdup(file); - oclogstream = NULL; - /* We need to deal with this file carefully - to avoid unauthorized access*/ - fd = open(oclogfile,O_WRONLY|O_APPEND|O_CREAT,0600); - if(fd >= 0) { - oclogstream = fdopen(fd,"a"); - } else { - free(oclogfile); - oclogfile = NULL; - oclogstream = NULL; - ocsetlogging(0); - return 0; - } - ocsystemfile = 0; - } - return 1; -} - -void -oclogclose(void) -{ - if(!oclogginginitialized) ocloginit(); - if(oclogstream != NULL && !ocsystemfile) { - fclose(oclogstream); - } - if(oclogfile != NULL) free(oclogfile); - oclogstream = NULL; - oclogfile = NULL; - ocsystemfile = 0; -} - -/*! -Send logging messages. This uses a variable -number of arguments and operates like the stdio -printf function. - -\param[in] tag Indicate the kind of this log message. -\param[in] fmt Format specification as with printf. -*/ - -void -oclog(int tag, const char* fmt, ...) -{ - va_list args; - char* prefix; - - if(!oclogginginitialized) ocloginit(); - - if(!oclogging || oclogstream == NULL) return; - - prefix = octagname(tag); - fprintf(oclogstream,"%s:",prefix); - - if(fmt != NULL) { - va_start(args, fmt); - vfprintf(oclogstream, fmt, args); - va_end( args ); - } - fprintf(oclogstream, "\n" ); - fflush(oclogstream); -} - -void -oclogtext(int tag, const char* text) -{ - oclogtextn(tag,text,strlen(text)); -} - -/*! -Send arbitrarily long text as a logging message. -Each line will be sent using oclog with the specified tag. - -\param[in] tag Indicate the kind of this log message. -\param[in] text Arbitrary text to send as a logging message. -\param[in] count Maximum ength of the text to write. -*/ - -void -oclogtextn(int tag, const char* text, size_t count) -{ - if(!oclogging || oclogstream == NULL) return; - fwrite(text,1,count,oclogstream); - fflush(oclogstream); -} - -/* The tagset is null terminated */ -void -oclogsettags(char** tagset, char* dfalt) -{ - octagdfalt = dfalt; - if(tagset == NULL) { - octagsize = 0; - } else { - int i; - /* Find end of the tagset */ - for(i=0;i= octagsize) { - return octagdfalt; - } else { - return octagset[tag]; - } -} - -/**@}*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/oclog.h b/contrib/netcdf/4.4.1.1/oc2/oclog.h deleted file mode 100644 index c696ef12f27..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/oclog.h +++ /dev/null @@ -1,31 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribution conditions. - * $Header$ - *********************************************************************/ - -#ifndef OCLOG_H -#define OCLOG_H - -#define OCENVFLAG "OCLOGFILE" - -/* Suggested tag values */ -#define OCLOGNOTE 0 -#define OCLOGWARN 1 -#define OCLOGERR 2 -#define OCLOGDBG 3 - -extern void ocloginit(void); -extern int ocsetlogging(int tf); -extern int oclogopen(const char* file); -extern void oclogclose(void); - -/* The tag value is an arbitrary integer */ -extern void oclog(int tag, const char* fmt, ...); -extern void oclogtext(int tag, const char* text); -extern void oclogtextn(int tag, const char* text, size_t count); - -/* Provide printable names for tags */ -extern void oclogsettags(char** tagset, char* dfalt); - -#endif /*OCLOG_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocnode.c b/contrib/netcdf/4.4.1.1/oc2/ocnode.c deleted file mode 100644 index 1bbc92c5cc7..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocnode.c +++ /dev/null @@ -1,741 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#include "ocinternal.h" -#include "occompile.h" -#include "ocdebug.h" - -static const unsigned int MAX_UINT = 0xffffffff; - -static OCerror mergedas1(OCnode* dds, OCnode* das); -static OCerror mergedods1(OCnode* dds, OCnode* das); -static OCerror mergeother1(OCnode* root, OCnode* das); -static char* pathtostring(OClist* path, char* separator); -static void computefullname(OCnode* node); - -/* Process ocnodes to fix various semantic issues*/ -void -occomputesemantics(OClist* ocnodes) -{ - unsigned int i,j; - OCASSERT((ocnodes != NULL)); - for(i=0;ioctype == OC_Dimension && node->dim.array != NULL) { - node->container = node->dim.array->container; - } - } - /* Fill in array.sizes */ - for(i=0;iarray.rank > 0) { - node->array.sizes = (size_t*)malloc(node->array.rank*sizeof(size_t)); - for(j=0;jarray.rank;j++) { - OCnode* dim = (OCnode*)oclistget(node->array.dimensions,j); - node->array.sizes[j] = dim->dim.declsize; - } - } - } -} - -void -occomputefullnames(OCnode* root) -{ - unsigned int i; - if(root->name != NULL) computefullname(root); - if(root->subnodes != NULL) { /* recurse*/ - for(i=0;isubnodes);i++) { - OCnode* node = (OCnode*)oclistget(root->subnodes,i); - occomputefullnames(node); - } - } -} - -static void -computefullname(OCnode* node) -{ - char* tmp; - char* fullname; - OClist* path; - - OCASSERT((node->name != NULL)); - if(node->fullname != NULL) - return; - path = oclistnew(); - occollectpathtonode(node,path); - tmp = pathtostring(path,PATHSEPARATOR); - if(tmp == NULL) { - fullname = nulldup(node->name); - } else { - fullname = tmp; - } - node->fullname = fullname; - oclistfree(path); -} - -/* Convert path to a string */ -static char* -pathtostring(OClist* path, char* separator) -{ - int slen,i,len; - char* pathname; - if(path == NULL) return NULL; - len = oclistlength(path); - if(len == 0) return NULL; - for(i=0,slen=0;icontainer == NULL || node->name == NULL) continue; - slen += strlen(node->name); - } - slen += ((len-1)*strlen(separator)); - slen += 1; /* for null terminator*/ - pathname = (char*)ocmalloc((size_t)slen); - MEMCHECK(pathname,NULL); - pathname[0] = '\0'; - for(i=0;icontainer == NULL || node->name == NULL) continue; - if(strlen(pathname) > 0) strcat(pathname,separator); - strcat(pathname,node->name); - } - return pathname; -} - -/* Collect the set of nodes ending in "node"*/ -void -occollectpathtonode(OCnode* node, OClist* path) -{ - if(node == NULL) return; - occollectpathtonode(node->container,path); - oclistpush(path,(void*)node); -} - -OCnode* -ocnode_new(char* name, OCtype ptype, OCnode* root) -{ - OCnode* cdf = (OCnode*)ocmalloc(sizeof(OCnode)); - MEMCHECK(cdf,(OCnode*)NULL); - memset((void*)cdf,0,sizeof(OCnode)); - cdf->header.magic = OCMAGIC; - cdf->header.occlass = OC_Node; - cdf->name = (name?nulldup(name):NULL); - cdf->octype = ptype; - cdf->array.dimensions = NULL; - cdf->root = root; - return cdf; -} - -static OCattribute* -makeattribute(char* name, OCtype ptype, OClist* values) -{ - OCattribute* att = (OCattribute*)ocmalloc(sizeof(OCattribute)); /* ocmalloc zeros*/ - MEMCHECK(att,(OCattribute*)NULL); - att->name = nulldup(name); - att->etype = ptype; - att->nvalues = oclistlength(values); - att->values = NULL; - if(att->nvalues > 0) { - int i; - att->values = (char**)ocmalloc(sizeof(char*)*att->nvalues); - for(i=0;invalues;i++) - att->values[i] = nulldup((char*)oclistget(values,(size_t)i)); - } - return att; -} - -void -ocroot_free(OCnode* root) -{ - OCtree* tree; - OCstate* state; - int i; - - if(root == NULL || root->tree == NULL) return; - - tree = root->tree; - state = tree->state; - - /* Free up the OCDATA instance, if any */ - if(tree->data.data != NULL) - ocdata_free(state,tree->data.data); - - for(i=0;itrees);i++) { - OCnode* node = (OCnode*)oclistget(state->trees,(size_t)i); - if(root == node) - oclistremove(state->trees,(size_t)i); - } - /* Note: it is ok if state->trees does not contain this root */ - octree_free(tree); -} - -void -octree_free(OCtree* tree) -{ - if(tree == NULL) return; - ocnodes_free(tree->nodes); - ocfree(tree->constraint); - ocfree(tree->text); - if(tree->data.xdrs != NULL) { - xxdr_free(tree->data.xdrs); - } - ocfree(tree->data.filename); /* may be null */ - if(tree->data.file != NULL) fclose(tree->data.file); - ocfree(tree->data.memory); - ocfree(tree); -} - -void -ocnodes_free(OClist* nodes) -{ - unsigned int i,j; - for(i=0;iname); - ocfree(node->fullname); - while(oclistlength(node->att.values) > 0) { - char* value = (char*)oclistpop(node->att.values); - ocfree(value); - } - while(oclistlength(node->attributes) > 0) { - OCattribute* attr = (OCattribute*)oclistpop(node->attributes); - ocfree(attr->name); -#if 0 - /* If the attribute type is string, then we need to free them*/ -all values are strings now - if(attr->etype == OC_String || attr->etype == OC_URL) -#endif - { - char** strings = (char**)attr->values; - for(j=0;jnvalues;j++) {ocfree(*strings); strings++;} - } - ocfree(attr->values); - ocfree(attr); - } - if(node->array.dimensions != NULL) oclistfree(node->array.dimensions); - if(node->subnodes != NULL) oclistfree(node->subnodes); - if(node->att.values != NULL) oclistfree(node->att.values); - if(node->attributes != NULL) oclistfree(node->attributes); - if(node->array.sizes != NULL) free(node->array.sizes); - ocfree(node); - } - oclistfree(nodes); -} - -/* -In order to be as compatible as possible with libdap, -we try to use the same algorithm for DAS->DDS matching. -As described there, the algorithm is as follows. - If the [attribute] name contains one or - more field separators then look for a [DDS]variable whose - name matches exactly. If the name contains no field separators then - the look first in the top level [of the DDS] and then in all subsequent - levels and return the first occurrence found. In general, this - searches constructor types in the order in which they appear - in the DDS, but there is no requirement that it do so. - - Note: If a dataset contains two constructor types which have field names - that are the same (say point.x and pair.x) one should use fully qualified - names to get each of those variables. - -*/ - -OCerror -ocddsdasmerge(OCstate* state, OCnode* dasroot, OCnode* ddsroot) -{ - OCerror stat = OC_NOERR; - OClist* dasglobals = oclistnew(); - OClist* dodsglobals = oclistnew(); /* top-level DODS_XXX {...} */ - OClist* dasnodes = oclistnew(); - OClist* varnodes = oclistnew(); - OClist* ddsnodes; - unsigned int i,j; - - if(dasroot->tree == NULL || dasroot->tree->dxdclass != OCDAS) - {stat = OCTHROW(OC_EINVAL); goto done;} - if(ddsroot->tree == NULL || (ddsroot->tree->dxdclass != OCDDS - && ddsroot->tree->dxdclass != OCDATADDS)) - {stat = OCTHROW(OC_EINVAL); goto done;} - - ddsnodes = ddsroot->tree->nodes; - - /* 1. collect all the relevant DAS nodes; - namely those that contain at least one - attribute value, not including the leaf attributes. - Simultaneously look for potential ambiguities - if found; complain but continue: result are indeterminate. - also collect globals separately*/ - for(i=0;itree->nodes);i++) { - OCnode* das = (OCnode*)oclistget(dasroot->tree->nodes,i); - int hasattributes = 0; - if(das->octype == OC_Attribute) continue; /* ignore these for now*/ - if(das->name == NULL || das->att.isglobal) { - oclistpush(dasglobals,(void*)das); - continue; - } - if(das->att.isdods) { - oclistpush(dodsglobals,(void*)das); - continue; - } - for(j=0;jsubnodes);j++) { - OCnode* subnode = (OCnode*)oclistget(das->subnodes,j); - if(subnode->octype == OC_Attribute) {hasattributes = 1; break;} - } - if(hasattributes) { - /* Look for previously collected nodes with same name*/ - for(j=0;jname == NULL || das2->name == NULL) continue; - if(strcmp(das->name,das2->name)==0) { - oclog(OCLOGWARN,"oc_mergedas: potentially ambiguous DAS name: %s",das->name); - } - } - oclistpush(dasnodes,(void*)das); - } - } - - /* 2. collect all the leaf DDS nodes (of type OC_Atomic)*/ - for(i=0;ioctype == OC_Atomic) oclistpush(varnodes,(void*)dds); - } - - /* 3. For each das node, locate matching DDS node(s) and attach - attributes to the DDS node(s). - Match means: - 1. DAS->fullname :: DDS->fullname - 2. DAS->name :: DDS->fullname (support DAS names with embedded '.') - 3. DAS->name :: DDS->name - */ - for(i=0;ifullname,dds->fullname)==0 - || strcmp(das->name,dds->fullname)==0 - || strcmp(das->name,dds->name)==0) { - mergedas1(dds,das); - /* remove from dasnodes list*/ - oclistset(dasnodes,i,(void*)NULL); - } - } - } - - /* 4. Assign globals*/ - for(i=0;iattributes == NULL) dds->attributes = oclistnew(); - /* assign the simple attributes in the das set to this dds node*/ - for(i=0;isubnodes);i++) { - OCnode* attnode = (OCnode*)oclistget(das->subnodes,i); - if(attnode->octype == OC_Attribute) { - OCattribute* att = makeattribute(attnode->name, - attnode->etype, - attnode->att.values); - oclistpush(dds->attributes,(void*)att); - } - } - return OCTHROW(stat); -} - -static OCerror -mergedods1(OCnode* dds, OCnode* dods) -{ - unsigned int i; - OCerror stat = OC_NOERR; - if(dods == NULL) return OC_NOERR; /* nothing to do */ - OCASSERT(dods->octype == OC_Attributeset); - if(dds->attributes == NULL) dds->attributes = oclistnew(); - /* assign the simple attributes in the das set to this dds node - with renaming to tag as DODS_ - */ - for(i=0;isubnodes);i++) { - OCnode* attnode = (OCnode*)oclistget(dods->subnodes,i); - if(attnode->octype == OC_Attribute) { - OCattribute* att; - /* prefix the attribute name with the name of the attribute - set plus "." - */ - size_t len = strlen(attnode->name) - + strlen(dods->name) - + strlen(".") - + 1; /*null*/ - char* newname = (char*)malloc(len); - if(newname == NULL) return OC_ENOMEM; - strcpy(newname,dods->name); - strcat(newname,"."); - strcat(newname,attnode->name); - att = makeattribute(newname,attnode->etype,attnode->att.values); - free(newname); - oclistpush(dds->attributes,(void*)att); - } - } - return OCTHROW(stat); -} - -static OCerror -mergeother1(OCnode* root, OCnode* das) -{ - OCerror stat = OC_NOERR; - OCattribute* att = NULL; - - OCASSERT(root != NULL); - if(root->attributes == NULL) root->attributes = oclistnew(); - - if(das->octype == OC_Attribute) { - /* compute the full name of this attribute */ - computefullname(das); - /* create attribute */ - att = makeattribute(das->fullname,das->etype,das->att.values); - oclistpush(root->attributes,(void*)att); - } else if(das->octype == OC_Attributeset) { - int i; - /* Recurse */ - for(i=0;isubnodes);i++) { - OCnode* sub = (OCnode*)oclistget(das->subnodes,i); - if(sub == NULL) continue; - mergeother1(root,sub); - } - } else - stat = OC_EDAS; - return OCTHROW(stat); -} - -static void -ocuncorrelate(OCnode* root) -{ - OCtree* tree = root->tree; - unsigned int i; - if(tree == NULL) return; - for(i=0;inodes);i++) { - OCnode* node = (OCnode*)oclistget(tree->nodes,i); - node->datadds = NULL; - } -} - -static OCerror -occorrelater(OCnode* dds, OCnode* dxd) -{ - int i,j; - OCerror ocstat = OC_NOERR; - - if(dds->octype != dxd->octype) { - OCTHROWCHK((ocstat = OC_EINVAL)); goto fail; - } - if(dxd->name != NULL && dxd->name != NULL - && strcmp(dxd->name,dds->name) != 0) { - OCTHROWCHK((ocstat = OC_EINVAL)); goto fail; - } else if(dxd->name != dxd->name) { /* test NULL==NULL */ - OCTHROWCHK((ocstat = OC_EINVAL)); goto fail; - } - - if(dxd->array.rank != dds->array.rank) { - OCTHROWCHK((ocstat = OC_EINVAL)); goto fail; - } - - dds->datadds = dxd; - - switch (dds->octype) { - case OC_Dataset: - case OC_Structure: - case OC_Grid: - case OC_Sequence: - /* Remember: there may be fewer datadds fields than dds fields */ - for(i=0;isubnodes);i++) { - OCnode* dxd1 = (OCnode*)oclistget(dxd->subnodes,(size_t)i); - for(j=0;jsubnodes);j++) { - OCnode* dds1 = (OCnode*)oclistget(dds->subnodes,(size_t)j); - if(strcmp(dxd1->name,dds1->name) == 0) { - ocstat = occorrelater(dds1,dxd1); - if(ocstat != OC_NOERR) {OCTHROWCHK(ocstat); goto fail;} - break; - } - } - } - break; - case OC_Dimension: - case OC_Atomic: - break; - default: OCPANIC1("unexpected node type: %d",dds->octype); - } - /* Correlate the dimensions */ - if(dds->array.rank > 0) { - for(i=0;isubnodes);i++) { - OCnode* ddsdim = (OCnode*)oclistget(dds->array.dimensions,(size_t)i); - OCnode* dxddim = (OCnode*)oclistget(dxd->array.dimensions,(size_t)i); - ocstat = occorrelater(ddsdim,dxddim); - if(!ocstat) goto fail; - } - } - -fail: - return OCTHROW(ocstat); - -} - -OCerror -occorrelate(OCnode* dds, OCnode* dxd) -{ - if(dds == NULL || dxd == NULL) return OCTHROW(OC_EINVAL); - ocuncorrelate(dds); - return occorrelater(dds,dxd); -} - -/* -Mark cacheable those atomic String/URL typed nodes -that are contained only in structures with rank > 0. -*/ -void -ocmarkcacheable(OCstate* state, OCnode* ddsroot) -{ - int i,j; -#if 0 - int ok; -#endif - OClist* treenodes = ddsroot->tree->nodes; - OClist* path = oclistnew(); - for(i=0;ioctype != OC_Atomic) continue; - if(node->etype != OC_String && node->etype != OC_URL) continue; - /* collect node path */ - oclistclear(path); - occollectpathtonode(node,path); -#if 0 - ok = 1; -#endif - for(j=1;joctype != OC_Structure - || pathnode->array.rank > 0) { -#if 0 - ok=0; -#endif - break; - } - } -#if 0 - if(ok) { - node->cache.cacheable = 1; - node->cache.valid = 0; - } -#endif - } - oclistfree(path); -} - -#if 0 - -OCerror -ocddsdasmerge(OCstate* state, OCnode* ddsroot, OCnode* dasroot) -{ - int i,j; - OCerror stat = OC_NOERR; - OClist* globals = oclistnew(); - if(dasroot == NULL) return OCTHROW(stat); - /* Start by looking for global attributes*/ - for(i=0;isubnodes);i++) { - OCnode* node = (OCnode*)oclistget(dasroot->subnodes,i); - if(node->att.isglobal) { - for(j=0;jsubnodes);j++) { - OCnode* attnode = (OCnode*)oclistget(node->subnodes,j); - Attribute* att = makeattribute(attnode->name, - attnode->etype, - attnode->att.values); - oclistpush(globals,(void*)att); - } - } - } - ddsroot->attributes = globals; - /* Now try to match subnode names with attribute set names*/ - for(i=0;isubnodes);i++) { - OCnode* das = (OCnode*)oclistget(dasroot->subnodes,i); - int match = 0; - if(das->att.isglobal) continue; - if(das->octype == OC_Attributeset) { - for(j=0;jsubnodes) && !match;j++) { - OCnode* dds = (OCnode*)oclistget(ddsroot->subnodes,j); - if(strcmp(das->name,dds->name) == 0) { - match = 1; - stat = mergedas1(dds,das); - if(stat != OC_NOERR) break; - } - } - } - if(!match) {marklostattribute(das);} - } - if(stat == OC_NOERR) ddsroot->attributed = 1; - return OCTHROW(stat); -} - -/* Merge das attributes into the dds node*/ - -static int -mergedas1(OCnode* dds, OCnode* das) -{ - int i,j; - int stat = OC_NOERR; - if(dds->attributes == NULL) dds->attributes = oclistnew(); - /* assign the simple attributes in the das set to this dds node*/ - for(i=0;isubnodes);i++) { - OCnode* attnode = (OCnode*)oclistget(das->subnodes,i); - if(attnode->octype == OC_Attribute) { - Attribute* att = makeattribute(attnode->name, - attnode->etype, - attnode->att.values); - oclistpush(dds->attributes,(void*)att); - } - } - /* Try to merge any enclosed sets with subnodes of dds*/ - for(i=0;isubnodes);i++) { - OCnode* dasnode = (OCnode*)oclistget(das->subnodes,i); - int match = 0; - if(dasnode->octype == OC_Attribute) continue; /* already dealt with above*/ - for(j=0;jsubnodes) && !match;j++) { - OCnode* ddsnode = (OCnode*)oclistget(dds->subnodes,j); - if(strcmp(dasnode->name,ddsnode->name) == 0) { - match = 1; - stat = mergedas1(ddsnode,dasnode); - if(stat != OC_NOERR) break; - } - } - if(!match) {marklostattribute(dasnode);} - } - return OCTHROW(stat); -} - -void* -oclinearize(OCtype etype, unsigned int nstrings, char** strings) -{ - int i; - size_t typesize; - char* memp; - char* memory; - - if(nstrings == 0) return NULL; - typesize = octypesize(etype); - memory = (char*)ocmalloc(nstrings*typesize); - MEMCHECK(memory,NULL); - memp = memory; - for(i=0;i OC_BYTE_MAX || iv < OC_BYTE_MIN) {iv = OC_BYTE_MAX; outofrange = 1;} - *((signed char*)memory) = (signed char)iv; - break; - case OC_UByte: - if(sscanf(value,"%lu",&uiv) != 1) goto fail; - else if(uiv > OC_UBYTE_MAX) {uiv = OC_UBYTE_MAX; outofrange = 1;} - *((unsigned char*)memory) = (unsigned char)uiv; - break; - case OC_Int16: - if(sscanf(value,"%ld",&iv) != 1) goto fail; - else if(iv > OC_INT16_MAX || iv < OC_INT16_MIN) {iv = OC_INT16_MAX; outofrange = 1;} - *((signed short*)memory) = (signed short)iv; - break; - case OC_UInt16: - if(sscanf(value,"%lu",&uiv) != 1) goto fail; - else if(uiv > OC_UINT16_MAX) {uiv = OC_UINT16_MAX; outofrange = 1;} - *((unsigned short*)memory) = (unsigned short)uiv; - break; - case OC_Int32: - if(sscanf(value,"%ld",&iv) != 1) goto fail; - else if(iv > OC_INT32_MAX || iv < OC_INT32_MIN) {iv = OC_INT32_MAX; outofrange = 1;} - *((signed int*)memory) = (signed int)iv; - break; - case OC_UInt32: - if(sscanf(value,"%lu",&uiv) != 1) goto fail; - else if(uiv > OC_UINT32_MAX) {uiv = OC_UINT32_MAX; outofrange = 1;} - *((unsigned char*)memory) = (unsigned int)uiv; - break; -#ifdef HAVE_LONG_LONG_INT - case OC_Int64: - if(sscanf(value,"%lld",&llv) != 1) goto fail; - /*else if(iv > OC_INT64_MAX || iv < OC_INT64_MIN) goto fail;*/ - *((signed long long*)memory) = (signed long long)llv; - break; - case OC_UInt64: - if(sscanf(value,"%llu",&ullv) != 1) goto fail; - *((unsigned long long*)memory) = (unsigned long long)ullv; - break; -#endif - case OC_Float32: - if(sscanf(value,"%lf",&dv) != 1) goto fail; - *((float*)memory) = (float)dv; - break; - case OC_Float64: - if(sscanf(value,"%lf",&dv) != 1) goto fail; - *((double*)memory) = (double)dv; - break; - case OC_String: case OC_URL: - *((char**)memory) = nulldup(value); - break; - default: - goto fail; - } - if(outofrange) - oc_log(LOGWARN,"converttype range failure: %d: %s",etype,value); - return 1; -fail: - oc_log(LOGERR,"converttype bad value: %d: %s",etype,value); - return 0; -} -#endif /*0*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocrc.c b/contrib/netcdf/4.4.1.1/oc2/ocrc.c deleted file mode 100644 index 239c73b60a4..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocrc.c +++ /dev/null @@ -1,757 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include - -#include "ocinternal.h" -#include "ocdebug.h" -#include "oclog.h" - -#define OCRCFILEENV "DAPRCFILE" - -#define RTAG ']' -#define LTAG '[' - -#define TRIMCHARS " \t\r\n" - -static OCerror rc_search(const char* prefix, const char* rcfile, char** pathp); - -static int rcreadline(FILE* f, char* more, int morelen); -static void rctrim(char* text); -static char* combinecredentials(const char* user, const char* pwd); - -static void storedump(char* msg, struct OCTriple*, int ntriples); - -/* Define default rc files and aliases, also defines search order*/ -static char* rcfilenames[] = {".daprc",".dodsrc",NULL}; - -/* The Username and password are in the URL if the URL is of the form: - * http://:@/.... - */ -static int -occredentials_in_url(const char *url) -{ - char *pos = strstr(url, "http://"); - if (!pos) - return 0; - pos += 7; - if (strchr(pos, '@') && strchr(pos, ':')) - return 1; - return 0; -} - -static OCerror -ocextract_credentials(const char *url, char **userpwd, char **result_url) -{ - OCURI* parsed = NULL; - if(!ocuriparse(url,&parsed)) - return OCTHROW(OC_EBADURL); - if(parsed->userpwd == NULL) { - ocurifree(parsed); - return OCTHROW(OC_EBADURL); - } - if(userpwd) *userpwd = strdup(parsed->userpwd); - ocurifree(parsed); - return OC_NOERR; -} - -char* -occombinehostport(const OCURI* uri) -{ - char* hp; - int len = 0; - - if(uri->host == NULL) - return NULL; - else - len += strlen(uri->host); - if(uri->port != NULL) - len += strlen(uri->port); - hp = (char*)malloc(len+1); - if(hp == NULL) - return NULL; - if(uri->port == NULL) - occopycat(hp,len+1,1,uri->host); - else - occopycat(hp,len+1,3,uri->host,":",uri->port); - return hp; -} - -static char* -combinecredentials(const char* user, const char* pwd) -{ - int userPassSize; - char *userPassword; - - if(user == NULL) user = ""; - if(pwd == NULL) pwd = ""; - - userPassSize = strlen(user) + strlen(pwd) + 2; - userPassword = malloc(sizeof(char) * userPassSize); - if (!userPassword) { - oclog(OCLOGERR,"Out of Memory\n"); - return NULL; - } - occopycat(userPassword,userPassSize-1,3,user,":",pwd); - return userPassword; -} - -static int -rcreadline(FILE* f, char* more, int morelen) -{ - int i = 0; - int c = getc(f); - if(c < 0) return 0; - for(;;) { - if(i < morelen) /* ignore excess characters */ - more[i++]=c; - c = getc(f); - if(c < 0) break; /* eof */ - if(c == '\n') break; /* eol */ - } - /* null terminate more */ - more[i] = '\0'; - return 1; -} - -/* Trim TRIMCHARS from both ends of text; */ -static void -rctrim(char* text) -{ - char* p = text; - size_t len; - int i; - - len = strlen(text); - /* locate first non-trimchar */ - for(;*p;p++) { - if(strchr(TRIMCHARS,*p) == NULL) break; /* hit non-trim char */ - } - memmove(text,p,strlen(p)+1); - len = strlen(text); - /* locate last non-trimchar */ - if(len > 0) { - for(i=(len-1);i>=0;i--) { - if(strchr(TRIMCHARS,text[i]) == NULL) { - text[i+1] = '\0'; /* elide trailing trimchars */ - break; - } - } - } -} - -int -ocparseproxy(OCstate* state, char* v) -{ - /* Do not free these; they are pointers into v; free v instead */ - char *host_pos = NULL; - char *port_pos = NULL; - if(v == NULL || strlen(v) == 0) - return OC_NOERR; /* nothing there*/ - if (occredentials_in_url(v)) { - char *result_url = NULL; - ocextract_credentials(v, &state->proxy.userpwd, &result_url); - v = result_url; - } - /* allocating a bit more than likely needed ... */ - host_pos = strstr(v, "http://"); - if (host_pos) - host_pos += strlen("http://"); - else - host_pos = v; - port_pos = strchr(host_pos, ':'); - if (port_pos) { - size_t host_len; - char *port_sep = port_pos; - port_pos++; - *port_sep = '\0'; - host_len = strlen(host_pos); - state->proxy.host = malloc(sizeof(char) * host_len + 1); - if (state->proxy.host == NULL) - return OCTHROW(OC_ENOMEM); - strncpy(state->proxy.host, host_pos, host_len); - state->proxy.host[host_len] = '\0'; - state->proxy.port = atoi(port_pos); - } else { - size_t host_len = strlen(host_pos); - state->proxy.host = malloc(sizeof(char) * host_len + 1); - if (state->proxy.host == NULL) - return OCTHROW(OC_ENOMEM); - strncpy(state->proxy.host, host_pos, host_len); - state->proxy.host[host_len] = '\0'; - state->proxy.port = 80; - } -#if 0 - state->proxy.host[v_len] = '\0'; - state->proxy.port = atoi(v); - s_len = strlen(v); - state->proxy.user = malloc(sizeof(char) * s_len + 1); - if (state->proxy.user == NULL) - return OC_ENOMEM; - strncpy(state->proxy.user, v, s_len); - state->proxy.user[s_len] = '\0'; - p_len = strlen(v); - state->proxy.password = malloc(sizeof(char) * p_len + 1); - if (state->proxy.password == NULL) - return OCTHROW(OC_ENOMEM); - strncpy(state->proxy.password, v, p_len); - state->proxy.password[p_len] = '\0'; -#endif /*0*/ - if (ocdebug > 1) { - oclog(OCLOGNOTE,"host name: %s", state->proxy.host); -#ifdef INSECURE - oclog(OCLOGNOTE,"user+pwd: %s", state->proxy.userpwd); -#endif - oclog(OCLOGNOTE,"port number: %d", state->proxy.port); - } - if(v) free(v); - return OC_NOERR; -} - -/* insertion sort the triplestore based on url */ -static void -sorttriplestore(struct OCTriplestore* store) -{ - int i, nsorted; - struct OCTriple* sorted = NULL; - - if(store == NULL) return; /* nothing to sort */ - if(store->ntriples <= 1) return; /* nothing to sort */ - if(ocdebug > 2) - storedump("initial:",store->triples,store->ntriples); - - sorted = (struct OCTriple*)malloc(sizeof(struct OCTriple)*store->ntriples); - if(sorted == NULL) { - oclog(OCLOGERR,"sorttriplestore: out of memory"); - return; - } - - nsorted = 0; - while(nsorted < store->ntriples) { - int largest; - /* locate first non killed entry */ - for(largest=0;largestntriples;largest++) { - if(store->triples[largest].key[0] != '\0') break; - } - OCASSERT(store->triples[largest].key[0] != '\0'); - for(i=0;intriples;i++) { - if(store->triples[i].key[0] != '\0') { /* avoid empty slots */ - int lexorder = strcmp(store->triples[i].host,store->triples[largest].host); - int leni = strlen(store->triples[i].host); - int lenlarge = strlen(store->triples[largest].host); - /* this defines the ordering */ - if(leni == 0 && lenlarge == 0) continue; /* if no urls, then leave in order */ - if(leni != 0 && lenlarge == 0) largest = i; - else if(lexorder > 0) largest = i; - } - } - /* Move the largest entry */ - OCASSERT(store->triples[largest].key[0] != 0); - sorted[nsorted] = store->triples[largest]; - store->triples[largest].key[0] = '\0'; /* kill entry */ - nsorted++; - if(ocdebug > 2) - storedump("pass:",sorted,nsorted); - } - - memcpy((void*)store->triples,(void*)sorted,sizeof(struct OCTriple)*nsorted); - free(sorted); - - if(ocdebug > 1) - storedump("final .rc order:",store->triples,store->ntriples); -} - -/* Create a triple store from a file */ -static int -ocrc_compile(const char* path) -{ - char line0[MAXRCLINESIZE+1]; - FILE *in_file = NULL; - int linecount = 0; - struct OCTriplestore* ocrc = &ocglobalstate.rc.daprc; - - ocrc->ntriples = 0; /* reset; nothing to free */ - - in_file = fopen(path, "r"); /* Open the file to read it */ - if (in_file == NULL) { - oclog(OCLOGERR, "Could not open configuration file: %s",path); - return OC_EPERM; - } - - for(;;) { - char *line,*key,*value; - int c; - if(!rcreadline(in_file,line0,sizeof(line0))) break; - linecount++; - if(linecount >= MAXRCLINES) { - oclog(OCLOGERR, ".rc has too many lines"); - return 0; - } - line = line0; - /* check for comment */ - c = line[0]; - if (c == '#') continue; - rctrim(line); /* trim leading and trailing blanks */ - if(strlen(line) == 0) continue; - if(strlen(line) >= MAXRCLINESIZE) { - oclog(OCLOGERR, "%s line too long: %s",path,line0); - continue; /* ignore it */ - } - /* setup */ - ocrc->triples[ocrc->ntriples].host[0] = '\0'; - ocrc->triples[ocrc->ntriples].key[0] = '\0'; - ocrc->triples[ocrc->ntriples].value[0] = '\0'; - if(line[0] == LTAG) { - OCURI* uri; - char* url = ++line; - char* rtag = strchr(line,RTAG); - if(rtag == NULL) { - oclog(OCLOGERR, "Malformed [url] in %s entry: %s",path,line); - continue; - } - line = rtag + 1; - *rtag = '\0'; - /* compile the url and pull out the host */ - if(!ocuriparse(url,&uri)) { - oclog(OCLOGERR, "Malformed [url] in %s entry: %s",path,line); - continue; - } - strncpy(ocrc->triples[ocrc->ntriples].host,uri->host,MAXRCLINESIZE-1); - if(uri->port != NULL) { - strncat(ocrc->triples[ocrc->ntriples].host,":",MAXRCLINESIZE-1); - strncat(ocrc->triples[ocrc->ntriples].host,uri->port,MAXRCLINESIZE-1); - } - ocurifree(uri); - } - /* split off key and value */ - key=line; - value = strchr(line, '='); - if(value == NULL) - value = line + strlen(line); - else { - *value = '\0'; - value++; - } - strncpy(ocrc->triples[ocrc->ntriples].key,key,MAXRCLINESIZE-1); - if(*value == '\0') - strcpy(ocrc->triples[ocrc->ntriples].value,"1");/*dfalt*/ - else - strncpy(ocrc->triples[ocrc->ntriples].value,value,(MAXRCLINESIZE-1)); - rctrim( ocrc->triples[ocrc->ntriples].key); - rctrim( ocrc->triples[ocrc->ntriples].value); - OCDBG2("rc: key=%s value=%s", - ocrc->triples[ocrc->ntriples].key, - ocrc->triples[ocrc->ntriples].value); - ocrc->ntriples++; - } - fclose(in_file); - sorttriplestore(&ocglobalstate.rc.daprc); - return 1; -} - -/* read and compile the rc file, if any */ -OCerror -ocrc_load(void) -{ - OCerror stat = OC_NOERR; - char* path = NULL; - - if(ocglobalstate.rc.ignore) { - oclog(OCLOGDBG,"No runtime configuration file specified; continuing"); - return OC_NOERR; - } - if(ocglobalstate.rc.loaded) return OC_NOERR; - - /* locate the configuration files in the following order: - 1. specified by set_rcfile - 2. set by DAPRCFILE env variable - 3. '.' - 4. $HOME - */ - if(ocglobalstate.rc.rcfile != NULL) { /* always use this */ - path = strdup(ocglobalstate.rc.rcfile); - } else if(getenv(OCRCFILEENV) != NULL && strlen(getenv(OCRCFILEENV)) > 0) { - path = strdup(getenv(OCRCFILEENV)); - } else { - char** rcname; - int found = 0; - for(rcname=rcfilenames;!found && *rcname;rcname++) { - stat = rc_search(".",*rcname,&path); - if(stat == OC_NOERR && path == NULL) /* try $HOME */ - stat = rc_search(ocglobalstate.home,*rcname,&path); - if(stat != OC_NOERR) - goto done; - if(path != NULL) - found = 1; - } - } - if(path == NULL) { - oclog(OCLOGDBG,"Cannot find runtime configuration file; continuing"); - } else { - if(ocdebug > 0) - fprintf(stderr, "RC file: %s\n", path); - if(ocrc_compile(path) == 0) { - oclog(OCLOGERR, "Error parsing %s\n",path); - stat = OC_ERCFILE; - } - } -done: - ocglobalstate.rc.loaded = 1; /* even if not exists */ - if(path != NULL) - free(path); - return stat; -} - -OCerror -ocrc_process(OCstate* state) -{ - OCerror stat = OC_NOERR; - char* value = NULL; - OCURI* uri = state->uri; - char* url_userpwd = NULL; - char* url_hostport = NULL; - - if(!ocglobalstate.initialized) - ocinternalinitialize(); - if(!ocglobalstate.rc.loaded) - ocrc_load(); - /* Note, we still must do this function even if - ocglobalstate.rc.ignore is set in order - to getinfo e.g. user:pwd from url - */ - - url_userpwd = uri->userpwd; - url_hostport = occombinehostport(uri); - if(url_hostport == NULL) - return OC_ENOMEM; - - value = ocrc_lookup("HTTP.DEFLATE",url_hostport); - if(value != NULL) { - if(atoi(value)) state->curlflags.compress = 1; - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.DEFLATE: %ld", state->curlflags.compress); - } - if((value = ocrc_lookup("HTTP.VERBOSE",url_hostport)) != NULL) { - if(atoi(value)) state->curlflags.verbose = 1; - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.VERBOSE: %ld", state->curlflags.verbose); - } - if((value = ocrc_lookup("HTTP.TIMEOUT",url_hostport)) != NULL) { - if(atoi(value)) state->curlflags.timeout = atoi(value); - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.TIMEOUT: %ld", state->curlflags.timeout); - } - if((value = ocrc_lookup("HTTP.USERAGENT",url_hostport)) != NULL) { - if(atoi(value)) state->curlflags.useragent = strdup(value); - if(state->curlflags.useragent == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.USERAGENT: %s", state->curlflags.useragent); - } - - if( - (value = ocrc_lookup("HTTP.COOKIEFILE",url_hostport)) - || (value = ocrc_lookup("HTTP.COOKIE_FILE",url_hostport)) - || (value = ocrc_lookup("HTTP.COOKIEJAR",url_hostport)) - || (value = ocrc_lookup("HTTP.COOKIE_JAR",url_hostport)) - ) { - state->curlflags.cookiejar = strdup(value); - if(state->curlflags.cookiejar == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.COOKIEJAR: %s", state->curlflags.cookiejar); - } - - if((value = ocrc_lookup("HTTP.PROXY_SERVER",url_hostport)) != NULL) { - stat = ocparseproxy(state,value); - if(stat != OC_NOERR) goto done; - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.PROXY_SERVER: %s", value); - } - - if((value = ocrc_lookup("HTTP.SSL.VALIDATE",url_hostport)) != NULL) { - if(atoi(value)) { - state->ssl.verifypeer = 1; - state->ssl.verifyhost = 1; - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.VALIDATE: %ld", 1); - } - } - - if((value = ocrc_lookup("HTTP.SSL.CERTIFICATE",url_hostport)) != NULL) { - state->ssl.certificate = strdup(value); - if(state->ssl.certificate == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.CERTIFICATE: %s", state->ssl.certificate); - } - - if((value = ocrc_lookup("HTTP.SSL.KEY",url_hostport)) != NULL) { - state->ssl.key = strdup(value); - if(state->ssl.key == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.KEY: %s", state->ssl.key); - } - - if((value = ocrc_lookup("HTTP.SSL.KEYPASSWORD",url_hostport)) != NULL) { - state->ssl.keypasswd = strdup(value); - if(state->ssl.keypasswd == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.KEYPASSWORD: %s", state->ssl.keypasswd); - } - - if((value = ocrc_lookup("HTTP.SSL.CAINFO",url_hostport)) != NULL) { - state->ssl.cainfo = strdup(value); - if(state->ssl.cainfo == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.CAINFO: %s", state->ssl.cainfo); - } - - if((value = ocrc_lookup("HTTP.SSL.CAPATH",url_hostport)) != NULL) { - state->ssl.capath = strdup(value); - if(state->ssl.capath == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.CAPATH: %s", state->ssl.capath); - } - - if((value = ocrc_lookup("HTTP.SSL.VERIFYPEER",url_hostport)) != NULL) { - char* s = strdup(value); - int tf = 0; - if(s == NULL || strcmp(s,"0")==0 || strcasecmp(s,"false")==0) - tf = 0; - else if(strcmp(s,"1")==0 || strcasecmp(s,"true")==0) - tf = 1; - else - tf = 1; /* default if not null */ - state->ssl.verifypeer = tf; - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.SSL.VERIFYPEER: %d", state->ssl.verifypeer); - free(s); - } - - if((value = ocrc_lookup("HTTP.NETRC",url_hostport)) != NULL) { - if(state->curlflags.netrc != NULL) - free(state->curlflags.netrc); - state->curlflags.netrc = strdup(value); - if(state->curlflags.netrc == NULL) {stat = OC_ENOMEM; goto done;} - if(ocdebug > 0) - oclog(OCLOGNOTE,"HTTP.NETRC: %s", state->curlflags.netrc); - } - - { /* Handle various cases for user + password */ - /* First, see if the user+pwd was in the original url */ - char* userpwd = NULL; - char* user = NULL; - char* pwd = NULL; - if(url_userpwd != NULL) - userpwd = url_userpwd; - else { - user = ocrc_lookup("HTTP.CREDENTIALS.USER",url_hostport); - pwd = ocrc_lookup("HTTP.CREDENTIALS.PASSWORD",url_hostport); - userpwd = ocrc_lookup("HTTP.CREDENTIALS.USERPASSWORD",url_hostport); - } - if(userpwd == NULL && user != NULL && pwd != NULL) { - userpwd = combinecredentials(user,pwd); - state->creds.userpwd = userpwd; - } else if(userpwd != NULL) - state->creds.userpwd = strdup(userpwd); - } - -done: - if(url_hostport != NULL) free(url_hostport); - return stat; -} - -static struct OCTriple* -ocrc_locate(char* key, char* hostport) -{ - int i,found; - struct OCTriplestore* ocrc = &ocglobalstate.rc.daprc; - struct OCTriple* triple; - - if(ocglobalstate.rc.ignore) - return NULL; - if(!ocglobalstate.rc.loaded) - ocrc_load(); - - triple = ocrc->triples; - - if(key == NULL || ocrc == NULL) return NULL; - if(hostport == NULL) hostport = ""; - /* Assume that the triple store has been properly sorted */ - for(found=0,i=0;intriples;i++,triple++) { - size_t hplen = strlen(triple->host); - int t; - if(strcmp(key,triple->key) != 0) continue; /* keys do not match */ - /* If the triple entry has no url, then use it - (because we have checked all other cases)*/ - if(hplen == 0) {found=1;break;} - /* do hostport match */ - t = strcmp(hostport,triple->host); - if(t == 0) {found=1; break;} - } - return (found?triple:NULL); -} - -char* -ocrc_lookup(char* key, char* hostport) -{ - struct OCTriple* triple = ocrc_locate(key,hostport); - if(triple != NULL && ocdebug > 2) { - fprintf(stderr,"lookup %s: [%s]%s = %s\n",hostport,triple->host,triple->key,triple->value); - } - return (triple == NULL ? NULL : triple->value); -} - - -static void -storedump(char* msg, struct OCTriple* triples, int ntriples) -{ - int i; - struct OCTriplestore* ocrc = &ocglobalstate.rc.daprc; - - if(msg != NULL) fprintf(stderr,"%s\n",msg); - if(ocrc == NULL) { - fprintf(stderr,"\n"); - return; - } - if(triples == NULL) triples= ocrc->triples; - if(ntriples < 0 ) ntriples= ocrc->ntriples; - for(i=0;i 0) - fprintf(stderr, "DODS RC file: %s\n", path); - if(ocdodsrc_read(path) == 0) { - oclog(OCLOGERR, "Error parsing %s\n",path); - stat = OC_ERCFILE; - } - } -done: - if(path != NULL) - free(path); - return stat; -} -#endif - -/** - * Prefix must end in '/' - */ -static -OCerror -rc_search(const char* prefix, const char* rcname, char** pathp) -{ - char* path = NULL; - FILE* f = NULL; - int plen = strlen(prefix); - int rclen = strlen(rcname); - OCerror stat = OC_NOERR; - - size_t pathlen = plen+rclen+1+1; /*+1 for '/' +1 for nul*/ - path = (char*)malloc(pathlen); - if(path == NULL) { - stat = OC_ENOMEM; - goto done; - } - if(!occopycat(path,pathlen,3,prefix,"/",rcname)) { - stat = OC_EOVERRUN; - goto done; - } - /* see if file is readable */ - f = fopen(path,"r"); - if(f != NULL) - oclog(OCLOGDBG, "Found rc file=%s",path); -done: - if(f == NULL || stat != OC_NOERR) { - if(path != NULL) - free(path); - path = NULL; - } - - if(f != NULL) - fclose(f); - if(pathp != NULL) - *pathp = path; - else { - free(path); - path = NULL; - } - - return OCTHROW(stat); -} - -struct OCTriple* -ocrc_triple_iterate(char* key, char* url, struct OCTriple* prev) -{ - struct OCTriple* next; - if(prev == NULL) - next = ocrc_locate(key,url); - else - next = prev+1; - if(next == NULL) - return NULL; - for(; strlen(next->key) > 0; next++) { - /* See if key as prefix still matches */ - int cmp = strcmp(key,next->key); - if(cmp != 0) {next = NULL; break;} /* key mismatch */ - /* compare url */ - cmp = ocstrncmp(url,next->host,strlen(next->host)); - if(cmp == 0) break; - } - return next; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/ocread.c b/contrib/netcdf/4.4.1.1/oc2/ocread.c deleted file mode 100644 index b0dfe1ee5b9..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocread.c +++ /dev/null @@ -1,269 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#include "config.h" -#ifdef HAVE_SYS_STAT_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef _WIN32 -#include -#endif -#include "ocinternal.h" -#include "ocdebug.h" -#include "ochttp.h" -#include "ocread.h" -#include "occurlfunctions.h" - -/*Forward*/ -static int readpacket(OCstate* state, OCURI*, OCbytes*, OCdxd, long*); -static int readfile(const char* path, const char* suffix, OCbytes* packet); -static int readfiletofile(const char* path, const char* suffix, FILE* stream, off_t*); - -int -readDDS(OCstate* state, OCtree* tree) -{ - int stat = OC_NOERR; - long lastmodified = -1; - - ocurisetconstraints(state->uri,tree->constraint); - -#ifdef OCDEBUG -fprintf(stderr,"readDDS:\n"); -#endif - stat = readpacket(state,state->uri,state->packet,OCDDS, - &lastmodified); - if(stat == OC_NOERR) state->ddslastmodified = lastmodified; - - return stat; -} - -int -readDAS(OCstate* state, OCtree* tree) -{ - int stat = OC_NOERR; - - ocurisetconstraints(state->uri,tree->constraint); -#ifdef OCDEBUG -fprintf(stderr,"readDAS:\n"); -#endif - stat = readpacket(state,state->uri,state->packet,OCDAS,NULL); - - return stat; -} - -#if 0 -int -readversion(OCstate* state, OCURI* url, OCbytes* packet) -{ - return readpacket(state,url,packet,OCVER,NULL); -} -#endif - -const char* -ocdxdextension(OCdxd dxd) -{ - switch(dxd) { - case OCDDS: return ".dds"; - case OCDAS: return ".das"; - case OCDATADDS: return ".dods"; - default: break; - } - return NULL; -} - -static int -readpacket(OCstate* state, OCURI* url,OCbytes* packet,OCdxd dxd,long* lastmodified) -{ - int stat = OC_NOERR; - int fileprotocol = 0; - const char* suffix = ocdxdextension(dxd); - char* fetchurl = NULL; - CURL* curl = state->curl; - - fileprotocol = (strcmp(url->protocol,"file")==0); - - if(fileprotocol && !state->curlflags.proto_file) { - /* Short circuit file://... urls*/ - /* We do this because the test code always needs to read files*/ - fetchurl = ocuribuild(url,NULL,NULL,0); - stat = readfile(fetchurl,suffix,packet); - } else { - int flags = 0; - if(!fileprotocol) { - flags |= OCURICONSTRAINTS; - } - flags |= OCURIENCODE; - fetchurl = ocuribuild(url,NULL,suffix,flags); - MEMCHECK(fetchurl,OC_ENOMEM); - if(ocdebug > 0) - {fprintf(stderr,"fetch url=%s\n",fetchurl); fflush(stderr);} - stat = ocfetchurl(curl,fetchurl,packet,lastmodified,&state->creds); - if(stat) - oc_curl_printerror(state); - if(ocdebug > 0) - {fprintf(stderr,"fetch complete\n"); fflush(stderr);} - } - free(fetchurl); -#ifdef OCDEBUG - { -fprintf(stderr,"readpacket: packet.size=%lu\n", - (unsigned long)ocbyteslength(packet)); - } -#endif - return OCTHROW(stat); -} - -int -readDATADDS(OCstate* state, OCtree* tree, OCflags flags) -{ - int stat = OC_NOERR; - long lastmod = -1; - -#ifdef OCDEBUG -fprintf(stderr,"readDATADDS:\n"); -#endif - if((flags & OCONDISK) == 0) { - ocurisetconstraints(state->uri,tree->constraint); - stat = readpacket(state,state->uri,state->packet,OCDATADDS,&lastmod); - if(stat == OC_NOERR) - state->datalastmodified = lastmod; - tree->data.datasize = ocbyteslength(state->packet); - } else { /*((flags & OCONDISK) != 0) */ - OCURI* url = state->uri; - int fileprotocol = 0; - char* readurl = NULL; - - fileprotocol = (strcmp(url->protocol,"file")==0); - - if(fileprotocol && !state->curlflags.proto_file) { - readurl = ocuribuild(url,NULL,NULL,0); - stat = readfiletofile(readurl, ".dods", tree->data.file, &tree->data.datasize); - } else { - int flags = 0; - if(!fileprotocol) flags |= OCURICONSTRAINTS; - flags |= OCURIENCODE; - flags |= OCURIUSERPWD; - ocurisetconstraints(url,tree->constraint); - readurl = ocuribuild(url,NULL,".dods",flags); - MEMCHECK(readurl,OC_ENOMEM); - if (ocdebug > 0) - {fprintf(stderr, "fetch url=%s\n", readurl);fflush(stderr);} - stat = ocfetchurl_file(state->curl, readurl, tree->data.file, - &tree->data.datasize, &lastmod); - if(stat == OC_NOERR) - state->datalastmodified = lastmod; - if (ocdebug > 0) - {fprintf(stderr,"fetch complete\n"); fflush(stderr);} - } - free(readurl); - } - return OCTHROW(stat); -} - -static int -readfiletofile(const char* path, const char* suffix, FILE* stream, off_t* sizep) -{ - int stat = OC_NOERR; - OCbytes* packet = ocbytesnew(); - size_t len; - /* check for leading file:/// */ - if(ocstrncmp(path,"file:///",8)==0) path += 7; /* assume absolute path*/ - stat = readfile(path,suffix,packet); -#ifdef OCDEBUG -fprintf(stderr,"readfiletofile: packet.size=%lu\n", - (unsigned long)ocbyteslength(packet)); -#endif - if(stat != OC_NOERR) goto unwind; - len = oclistlength(packet); - if(stat == OC_NOERR) { - size_t written; - fseek(stream,0,SEEK_SET); - written = fwrite(ocbytescontents(packet),1,len,stream); - if(written != len) { -#ifdef OCDEBUG -fprintf(stderr,"readfiletofile: written!=length: %lu :: %lu\n", - (unsigned long)written,(unsigned long)len); -#endif - stat = OC_EIO; - } - } - if(sizep != NULL) *sizep = len; -unwind: - ocbytesfree(packet); - return OCTHROW(stat); -} - -static int -readfile(const char* path, const char* suffix, OCbytes* packet) -{ - int stat = OC_NOERR; - char buf[1024]; - char filename[1024]; - int fd = -1; - int flags = 0; - off_t filesize = 0; - off_t totalread = 0; - /* check for leading file:/// */ - if(ocstrncmp(path,"file://",7)==0) path += 7; /* assume absolute path*/ - if(!occopycat(filename,sizeof(filename),2,path,(suffix != NULL ? suffix : ""))) - return OCTHROW(OC_EOVERRUN); - flags = O_RDONLY; -#ifdef O_BINARY - flags |= O_BINARY; -#endif - fd = open(filename,flags); - if(fd < 0) { - oclog(OCLOGERR,"open failed:%s",filename); - return OCTHROW(OC_EOPEN); - } - /* Get the file size */ - filesize = lseek(fd,(off_t)0,SEEK_END); - if(filesize < 0) { - stat = OC_EIO; - oclog(OCLOGERR,"lseek failed: %s",filename); - goto done; - } - /* Move file pointer back to the beginning of the file */ - (void)lseek(fd,(off_t)0,SEEK_SET); - stat = OC_NOERR; - for(totalread=0;;) { - off_t count = (off_t)read(fd,buf,sizeof(buf)); - if(count == 0) - break; /*eof*/ - else if(count < 0) { - stat = OC_EIO; - oclog(OCLOGERR,"read failed: %s",filename); - goto done; - } - ocbytesappendn(packet,buf,(unsigned long)count); - totalread += count; - } - if(totalread < filesize) { - stat = OC_EIO; - oclog(OCLOGERR,"short read: |%s|=%lu read=%lu\n", - filename,(unsigned long)filesize,(unsigned long)totalread); - goto done; - } - -done: -#ifdef OCDEBUG -fprintf(stderr,"readfile: filesize=%lu totalread=%lu\n", - (unsigned long)filesize,(unsigned long)totalread); -#endif - if(fd >= 0) close(fd); - return OCTHROW(stat); -} - - diff --git a/contrib/netcdf/4.4.1.1/oc2/ocuri.c b/contrib/netcdf/4.4.1.1/oc2/ocuri.c deleted file mode 100644 index a8fe65d50ec..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocuri.c +++ /dev/null @@ -1,848 +0,0 @@ -/********************************************************************* - * Copyright 2010, UCAR/Unidata - * See netcdf/COPYRIGHT file for copying and redistribuution conditions. - * $Header$ - *********************************************************************/ - -#include "config.h" -#include -#include -#include -#include - -#include "oc.h" -#include "ocuri.h" - -#undef OCURIDEBUG - -#ifdef OCURIDEBUG -static int failpoint = 0; -#define THROW(n) {failpoint=(n); goto fail;} -#else -#define THROW(n) -#endif - - -#define PADDING 8 - -#define LBRACKET '[' -#define RBRACKET ']' -#define EOFCHAR '\0' - -#ifndef FIX -#define FIX(s) ((s)==NULL?"NULL":(s)) -#endif - -#ifndef NILLEN -#define NILLEN(s) ((s)==NULL?0:strlen(s)) -#endif - -#ifdef HAVE_STRDUP -#ifndef nulldup -#define nulldup(s) ((s)==NULL?NULL:strdup(s)) -#endif -#endif - -#ifndef HAVE_STRDUP -static char* nulldup(char* s) -{ - char* dup = NULL; - if(s != NULL) { - dup = (char*)malloc(strlen(s)+1); - if(dup != NULL) - strcpy(dup,s); - } - return dup; -} -#endif - -#define terminate(p) {*(p) = EOFCHAR;} - -#define endof(p) ((p)+strlen(p)) - -static struct OC_ProtocolInfo { -char* name; -int filelike; /* 1=>this protocol has no host, user+pwd, or port */ -} legalprotocols[] = { -{"file",1}, -{"http",0}, -{"https",0}, -{"ftp",0}, -}; - -/* Allowable character sets for encode */ -static char* fileallow = -"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~"; - -static char* queryallow = -"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~"; - -/* Forward */ -static void ocparamfree(char** params); -static int ocfind(char** params, const char* key); -static void oclshift1(char* p); -static void ocrshift1(char* p); -static char* oclocate(char* p, const char* charlist); -static void ocappendparams(char* newuri, char** p); - -/* Do a simple uri parse: return 0 if fail, 1 otherwise*/ -int -ocuriparse(const char* uri0, OCURI** durip) -{ - OCURI* duri = NULL; - char* uri = NULL; - char* p; - char* q; - struct OC_ProtocolInfo* proto; - int i,nprotos; - - /* accumulate parse points*/ - char* protocol = NULL; - char* host = NULL; - char* port = NULL; - char* constraint = NULL; - char* userpwd = NULL; - char* file = NULL; - char* prefixparams = NULL; - char* suffixparams = NULL; - - if(uri0 == NULL || strlen(uri0) == 0) - {THROW(1); goto fail;} - - duri = (OCURI*)calloc(1,sizeof(OCURI)); - if(duri == NULL) - {THROW(2); goto fail;} - - /* save original uri */ - duri->uri = nulldup(uri0); - - /* make local copy of uri */ - uri = (char*)malloc(strlen(uri0)+1+PADDING); /* +1 for trailing null, - +PADDING for shifting */ - if(uri == NULL) - {THROW(3); goto fail;} - - /* strings will be broken into pieces with intermixed '\0; characters; - first char is guaranteed to be '\0' */ - - duri->strings = uri; - uri++; - - /* dup the incoming url */ - strcpy(uri,uri0); - - /* Walk the uri and do the following: - 1. remove all whitespace - 2. remove all '\\' (Temp hack to remove escape characters - inserted by Windows or MinGW) - */ - for(q=uri,p=uri;*p;p++) { - if(*p != '\\' && *p >= ' ') /* compress out */ - *q++=*p; - } - p = uri; - - /* break up the uri string into big chunks: prefixparams, protocol, - host section, and the file section (i.e. remainder) - */ - - /* collect any prefix bracketed parameters */ - if(*p == LBRACKET) { - p++; - prefixparams = p; - /* find end of the clientparams; convert LB,RB to '&' */ - for(q=p;*p;p++) { - if(p[0] == RBRACKET && p[1] == LBRACKET) { - *q++ = '&'; - p++; - } else if(p[0] == RBRACKET && p[1] != LBRACKET) - break; - else - *q++=*p; - } - if(*p == 0) - {THROW(4); goto fail; /* malformed client params*/} - terminate(q); /* nul term the prefixparams */ - p++; /* move past the final RBRACKET */ - } - - /* Tag the protocol */ - protocol = p; - p = strchr(p,':'); - if(!p) - {THROW(5); goto fail;} - terminate(p); /*overwrite colon*/ - p++; /* skip the colon */ - - /* verify that the uri starts with an acceptable protocol*/ - nprotos = (sizeof(legalprotocols)/sizeof(struct OC_ProtocolInfo)); - proto = NULL; - for(i=0;ifilelike) {/* everything after proto:// */ - file = p; - host = NULL; /* and no host section */ - } else { /*!proto->filelike => This means there should be a host section */ - /* locate the end of the host section and therefore the start - of the file section */ - host = p; - p = oclocate(p,"/?#"); - if(p == NULL) { - file = endof(host); /* there is no file section */ - } else { - ocrshift1(p); /* make room to terminate the host section - without overwriting the leading character */ - terminate(p); /* terminate the host section */ - file = p+1; /* +1 becauseof the shift */ - } - } - - /* If you shift in the code below, you must reset file beginning */ - - if(host != NULL) {/* Parse the host section */ - /* Check for leading user:pwd@ */ - p = strchr(host,'@'); - if(p) { - if(p == host) - {THROW(9); goto fail; /* we have proto://@ */} - userpwd = host; - terminate(p); /* overwrite '@' */ - host = p+1; /* start of host ip name */ - } - - /* extract host and port */ - p = host; - p = strchr(p,':'); - if(p != NULL) { - terminate(p); - p++; - port = p; - if(*port == EOFCHAR) - {THROW(11); goto fail; /* we have proto://...:/ */} - /* The port must look something like a number */ - for(;*p;p++) { - if(strchr("0123456789-",*p) == NULL) - {THROW(12); goto fail; /* probably not a real port, fail */} - } - } /* else *p == NULL */ - - - /* check for empty host section */ - if(*host == EOFCHAR) - {THROW(13); goto fail;} - - } - - assert(file != NULL); - p = file; - - /* find the end of the file section and the start of the - constraints and/or suffixparams - */ - p = oclocate(p,"?#"); - if(p != NULL) { /* we have constraint and/or suffixparams */ - char* fileend = p; /* save the end of the file section */ - char* constraintend = NULL; - if(*p == '?') - constraint = p+1; - else - constraint = NULL; - p = strchr(p,'#'); /* may repeat effect of oclocate above */ - if(p != NULL) { - constraintend = p; - suffixparams = p+1; - } else - suffixparams = NULL; - /* Ok, terminate the pieces */ - terminate(fileend); /* terminate file section */ - if(constraint != NULL && constraintend != NULL) - terminate(constraintend); - /* Suffix params are already terminated - since they should be the last section - of the original url - */ - } - - /* check for empty sections */ - if(file != NULL && *file == EOFCHAR) - file = NULL; /* empty file section */ - if(constraint != NULL && *constraint == EOFCHAR) - constraint = NULL; /* empty constraint section */ - if(suffixparams != NULL && *suffixparams == EOFCHAR) - suffixparams = NULL; /* empty suffixparams section */ - - if(suffixparams != NULL) { - if(*suffixparams == EOFCHAR) - suffixparams = NULL; /* suffixparams are empty */ - } - - /* do last minute empty check */ - if(protocol != NULL && *protocol == EOFCHAR) protocol = NULL; - if(userpwd != NULL && *userpwd == EOFCHAR) userpwd = NULL; - if(host != NULL && *host == EOFCHAR) host = NULL; - if(port != NULL && *port == EOFCHAR) port = NULL; - if(file != NULL && *file == EOFCHAR) file = NULL; - if(constraint != NULL && *constraint == EOFCHAR) constraint = NULL; - - /* assemble the component pieces */ - duri->protocol = protocol; - duri->userpwd = userpwd; - duri->host = host; - duri->port = port; - duri->file = file; - - ocurisetconstraints(duri,constraint); - - /* concat suffix and prefix params */ - if(prefixparams != NULL || suffixparams != NULL) { - size_t plen = prefixparams ? strlen(prefixparams) : 0; - size_t slen = suffixparams ? strlen(suffixparams) : 0; - size_t space = plen + slen + 1; - /* add 1 for an extra ampersand if both are defined */ - if(plen > 0 && slen > 0) space++; - /* Add an extra char for null termination. */ - duri->params = (char*)malloc(space+1); - if(duri->params == NULL) - return 0; - duri->params[0] = EOFCHAR; /* so we can use strcat */ - if(plen > 0) { - strncat(duri->params,prefixparams,space); - if(slen > 0) - strncat(duri->params,"&",space); - } - if(slen > 0) - strncat(duri->params,suffixparams,space); - } - -#ifdef OCURIDEBUG - { - int i,nparms; - char** p; - fprintf(stderr,"duri:"); - fprintf(stderr," protocol=|%s|",FIX(duri->protocol)); - fprintf(stderr," host=|%s|",FIX(duri->host)); - fprintf(stderr," port=|%s|",FIX(duri->port)); - fprintf(stderr," file=|%s|",FIX(duri->file)); - fprintf(stderr," constraint=|%s|",FIX(duri->constraint)); - fprintf(stderr," params=|%s|",FIX(duri->params)); - fprintf(stderr,"\n"); - if(duri->paramlist == NULL) { - if(!ocuridecodeparams(duri)) { - fprintf(stderr,"DEBUG: param decode failed\n"); - duri->paramlist = NULL; - } - } - if(duri->paramlist != NULL) { - for(p=duri->paramlist,nparms=0;*p;p++,nparms++); - nparms = nparms / 2; - fprintf(stderr,"params:"); - for(i=0;iparamlist+(i*2); - fprintf(stderr," %s=|%s|",pos[0],pos[1]); - } - fprintf(stderr,"\n"); - } - } -#endif - if(durip != NULL) *durip = duri; else free(duri); - return 1; - -fail: - if(duri != NULL) { - ocurifree(duri); - } - return 0; -} - -void -ocurifree(OCURI* duri) -{ - if(duri == NULL) return; - if(duri->uri != NULL) {free(duri->uri);} - if(duri->params != NULL) {free(duri->params);} - if(duri->paramlist != NULL) ocparamfree(duri->paramlist); - if(duri->strings != NULL) {free(duri->strings);} - if(duri->constraint != NULL) {free(duri->constraint);} - if(duri->projection != NULL) {free(duri->projection);} - if(duri->selection != NULL) {free(duri->selection);} - free(duri); -} - -/* Replace the constraints */ -void -ocurisetconstraints(OCURI* duri,const char* constraints) -{ - char* proj = NULL; - char* select = NULL; - const char* p; - - if(duri->constraint != NULL) free(duri->constraint); - if(duri->projection != NULL) free(duri->projection); - if(duri->selection != NULL) free(duri->selection); - duri->constraint = NULL; - duri->projection = NULL; - duri->selection = NULL; - - if(constraints == NULL || strlen(constraints)==0) return; - - duri->constraint = nulldup(constraints); - if(*duri->constraint == '?') - oclshift1(duri->constraint); - - p = duri->constraint; - proj = (char*) p; - select = strchr(proj,'&'); - if(select != NULL) { - size_t plen = (select - proj); - if(plen == 0) { - proj = NULL; - } else { - proj = (char*)malloc(plen+1); - memcpy((void*)proj,p,plen); - proj[plen] = EOFCHAR; - } - select = nulldup(select); - } else { - proj = nulldup(proj); - select = NULL; - } - duri->projection = proj; - duri->selection = select; -} - - -/* Construct a complete OC URI. - Optionally with the constraints. - Optionally with the user parameters. - Caller frees returned string. - Optionally encode the pieces. -*/ - -char* -ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags) -{ - size_t len = 0; - char* newuri; - char* tmpfile; - char* tmpsuffix; - char* tmpquery; - int nparams = 0; - int paramslen = 0; - - /* if both are specified, prefix has priority */ - int withsuffixparams = ((flags&OCURISUFFIXPARAMS)!=0 - && duri->params != NULL); - int withprefixparams = ((flags&OCURIPREFIXPARAMS)!=0 - && duri->params != NULL); - int withuserpwd = ((flags&OCURIUSERPWD)!=0 - && duri->userpwd != NULL); - int withconstraints = ((flags&OCURICONSTRAINTS)!=0 - && duri->constraint != NULL); -#ifdef NEWESCAPE - int encode = (flags&OCURIENCODE); -#else - int encode = 0; -#endif - - if(prefix != NULL) len += NILLEN(prefix); - len += (NILLEN(duri->protocol)+NILLEN("://")); - if(withuserpwd) - len += (NILLEN(duri->userpwd)+NILLEN("@")); - len += (NILLEN(duri->host)); - if(duri->port != NULL) { - len += (NILLEN(":")+NILLEN(duri->port)); - } - - tmpfile = duri->file; - if(encode) - tmpfile = ocuriencode(tmpfile,fileallow); - len += (NILLEN(tmpfile)); - - if(suffix != NULL) { - tmpsuffix = (char*)suffix; - if(encode) - tmpsuffix = ocuriencode(tmpsuffix,fileallow); - len += (NILLEN(tmpsuffix)); - } - - if(withconstraints) { - tmpquery = duri->constraint; - if(encode) - tmpquery = ocuriencode(tmpquery,queryallow); - len += (NILLEN("?")+NILLEN(tmpquery)); - } - - if(withprefixparams || withsuffixparams) { - char** p; - if(duri->paramlist == NULL) - if(!ocuridecodeparams(duri)) - return NULL; - for(paramslen=0,nparams=0,p=duri->paramlist;*p;p++) { - nparams++; - paramslen += NILLEN(*p); - } - if(nparams % 2 == 1) - return NULL; /* malformed */ - nparams = (nparams / 2); - len += paramslen; - len += 3*nparams; /* for brackets for every param plus possible = */ - if(withsuffixparams) - len += strlen("#"); - } - - len += 1; /* null terminator */ - - newuri = (char*)malloc(len); - if(newuri == NULL) return NULL; - - newuri[0] = EOFCHAR; - if(prefix != NULL) strcat(newuri,prefix); - if(withprefixparams) { - ocappendparams(newuri,duri->paramlist); - } - if(duri->protocol != NULL) - strcat(newuri,duri->protocol); - strcat(newuri,"://"); - if(withuserpwd) { - strcat(newuri,duri->userpwd); - strcat(newuri,"@"); - } - if(duri->host != NULL) { /* may be null if using file: protocol */ - strcat(newuri,duri->host); - } - if(duri->port != NULL) { - strcat(newuri,":"); - strcat(newuri,duri->port); - } - - if(tmpfile != NULL) { - strcat(newuri,tmpfile); - if(suffix != NULL) strcat(newuri,tmpsuffix); - } - if(withconstraints) { - strcat(newuri,"?"); - strcat(newuri,tmpquery); - } - if(withsuffixparams & !withprefixparams) { - strcat(newuri,"#"); - ocappendparams(newuri,duri->paramlist); - } - return newuri; -} - -static void -ocappendparams(char* newuri, char** p) -{ - while(*p) { - strcat(newuri,"["); - strcat(newuri,*p++); - if(strlen(*p) > 0) { - strcat(newuri,"="); - strcat(newuri,*p); - } - p++; - strcat(newuri,"]"); - } -} - -/**************************************************/ -/* Parameter support */ - -/* -In the original url, client parameters are assumed to be one -or more instances of bracketed pairs: e.g "[...][...]...". -prefixed to the url. This model has been extended to support -specification of the parameters as semicolon separated key=value -pairs in the fragment part of the url. The fragment part -starts with a '#' and is the last part of the url. - -After the url is parsed, the parameter list -is converted to a semicolon separated list with all -whitespace removed. -In any case, each parameter in turn is assumed to be a -of the form = or . -e.g. x=y,z,a=b,w. If the same parameter is specified more -than once, then the last occurrence is used; this is so -that is possible to forcibly override user specified -parameters by suffixing. IMPORTANT: client parameter string -is assumed to have blanks compressed out. Returns 1 if parse -succeeded, 0 otherwise; */ - -int -ocuridecodeparams(OCURI* ocuri) -{ - char* p; - int i,c; - int nparams; - char* params = NULL; - char** plist; - - if(ocuri == NULL) return 0; - if(ocuri->params == NULL) return 1; - - params = strdup(ocuri->params); - if(params == NULL) - return 0; /* no memory */ - - /* Pass 1: break string into pieces at the ampersands - and count # of pairs */ - nparams=0; - for(p=params;*p;p++) { - c = *p; - if(c == '&') {*p = EOFCHAR; nparams++;} - } - nparams++; /* for last one */ - - /* plist will be an env style list */ - plist = (char**)calloc(1,sizeof(char*)*(2*nparams+1)); /* +1 for null termination */ - if(plist == NULL) { - free(params); - return 0; - } - - /* Break up each param into a (name,value) pair*/ - /* and insert into the param list */ - /* parameters of the form name name= are converted to name=""*/ - for(p=params,i=0;iparamlist != NULL) - ocparamfree(ocuri->paramlist); - ocuri->paramlist = plist; - return 1; -} - -int -ocurilookup(OCURI* uri, const char* key, const char** resultp) -{ - int i; - char* value = NULL; - if(uri == NULL || key == NULL || uri->params == NULL) return 0; - if(uri->paramlist == NULL) { - i = ocuridecodeparams(uri); - if(!i) return 0; - } - i = ocfind(uri->paramlist,key); - if(i < 0) - return 0; - value = uri->paramlist[(2*i)+1]; - if(resultp) *resultp = value; - return 1; -} - -int -ocurisetparams(OCURI* uri, const char* newparams) -{ - if(uri == NULL) return 0; - if(uri->paramlist != NULL) ocparamfree(uri->paramlist); - uri->paramlist = NULL; - if(uri->params != NULL) free(uri->params); - uri->params = nulldup(newparams); - return 1; -} - -/* Internal version of lookup; returns the paired index of the key */ -static int -ocfind(char** params, const char* key) -{ - int i; - char** p; - for(i=0,p=params;*p;p+=2,i++) { - if(strcmp(key,*p)==0) return i; - } - return -1; -} - -static void -ocparamfree(char** params) -{ - char** p; - if(params == NULL) return; - for(p=params;*p;p+=2) { - free(*p); - if(p[1] != NULL) free(p[1]); - } - free(params); -} - - -/* Return the ptr to the first occurrence of - any char in the list. Return NULL if no - occurrences -*/ -static char* -oclocate(char* p, const char* charlist) -{ - for(;*p;p++) { - if(strchr(charlist,*p) != NULL) - return p; - } - return NULL; -} - - -/* Shift every char starting at p 1 place to the left */ -static void -oclshift1(char* p) -{ - if(p != NULL && *p != EOFCHAR) { - char* q = p++; - while((*q++=*p++)); - } -} - -/* Shift every char starting at p 1 place to the right */ -static void -ocrshift1(char* p) -{ - char cur; - cur = 0; - do { - char next = *p; - *p++ = cur; - cur = next; - } while(cur != 0); - *p = 0; /* make sure we are still null terminated */ -} - - -/* Provide % encoders and decoders */ - - -static char* hexchars = "0123456789abcdefABCDEF"; - -static void -toHex(int b, char* hex) -{ - hex[0] = hexchars[(b >> 4) & 0xff]; - hex[1] = hexchars[(b) & 0xff]; -} - - -static int -fromHex(int c) -{ - if(c >= '0' && c <= '9') return (c - '0'); - if(c >= 'a' && c <= 'f') return (10 + (c - 'a')); - if(c >= 'A' && c <= 'F') return (10 + (c - 'A')); - return -1; -} - - -/* Return a string representing encoding of input; caller must free; - watch out: will encode whole string, so watch what you give it. - Allowable argument specifies characters that do not need escaping. - */ - -char* -ocuriencode(char* s, char* allowable) -{ - size_t slen; - char* encoded; - char* inptr; - char* outptr; - - if(s == NULL) return NULL; - - slen = strlen(s); - encoded = (char*)malloc((3*slen) + 1); /* max possible size */ - - for(inptr=s,outptr=encoded;*inptr;) { - int c = *inptr++; - if(c == ' ') { - *outptr++ = '+'; - } else { - /* search allowable */ - int c2; - char* a = allowable; - while((c2=*a++)) { - if(c == c2) break; - } - if(c2) {*outptr++ = c;} - else { - char hex[2]; - toHex(c,hex); - *outptr++ = '%'; - *outptr++ = hex[0]; - *outptr++ = hex[1]; - } - } - } - *outptr = EOFCHAR; - return encoded; -} - -/* Return a string representing decoding of input; caller must free;*/ -char* -ocuridecode(char* s) -{ - return ocuridecodeonly(s,NULL); -} - -/* Return a string representing decoding of input only for specified - characters; caller must free -*/ -char* -ocuridecodeonly(char* s, char* only) -{ - size_t slen; - char* decoded; - char* outptr; - char* inptr; - unsigned int c; - - if (s == NULL) return NULL; - if(only == NULL) only = ""; - - slen = strlen(s); - decoded = (char*)malloc(slen+1); /* Should be max we need */ - - outptr = decoded; - inptr = s; - while((c = *inptr++)) { - if(c == '+' && strchr(only,'+') != NULL) - *outptr++ = ' '; - else if(c == '%') { - /* try to pull two hex more characters */ - if(inptr[0] != EOFCHAR && inptr[1] != EOFCHAR - && strchr(hexchars,inptr[0]) != NULL - && strchr(hexchars,inptr[1]) != NULL) { - /* test conversion */ - int xc = (fromHex(inptr[0]) << 4) | (fromHex(inptr[1])); - if(strchr(only,xc) != NULL) { - inptr += 2; /* decode it */ - c = xc; - } - } - } - *outptr++ = c; - } - *outptr = EOFCHAR; - return decoded; -} diff --git a/contrib/netcdf/4.4.1.1/oc2/ocuri.h b/contrib/netcdf/4.4.1.1/oc2/ocuri.h deleted file mode 100644 index 525a656b198..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocuri.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT file for more information. */ - -#ifndef OCURI_H -#define OCURI_H - -/*! This is an open structure meaning - it is ok to directly access its fields*/ -typedef struct OCURI { - char* uri; /* as passed buy the caller */ - char* params; /* all params */ - char** paramlist; /*! entry not found; 1=>found; result holds value (may be null). - In any case, the result is imutable and should not be free'd. -*/ -extern int ocurilookup(OCURI*, const char* param, const char** result); - -extern char* ocuriencode(char* s, char* allowable); -extern char* ocuridecode(char* s); -extern char* ocuridecodeonly(char* s, char*); - -#endif /*OCURI_H*/ diff --git a/contrib/netcdf/4.4.1.1/oc2/ocx.h b/contrib/netcdf/4.4.1.1/oc2/ocx.h deleted file mode 100644 index c93a1821dcb..00000000000 --- a/contrib/netcdf/4.4.1.1/oc2/ocx.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. - See the COPYRIGHT dap for more information. */ - -/* -Internal library debugging interface -(undocumented) -*/ - -#ifndef OCX_H -#define OCX_H - -/**************************************************/ -/* Flags defining the structure of an OCdata object */ - -/* Must be consistent with ocutil.c.ocdtmodestring */ -typedef unsigned int OCDT; -#define OCDT_FIELD ((OCDT)(1)) /* field of a container */ -#define OCDT_ELEMENT ((OCDT)(2)) /* element of a structure array */ -#define OCDT_RECORD ((OCDT)(4)) /* record of a sequence */ -#define OCDT_ARRAY ((OCDT)(8)) /* is structure array */ -#define OCDT_SEQUENCE ((OCDT)(16)) /* is sequence */ -#define OCDT_ATOMIC ((OCDT)(32)) /* is atomic leaf */ - -/* Return mode for this data */ -extern OCDT oc_data_mode(OClink, OCdatanode); - -extern OCerror oc_dds_dd(OClink, OCddsnode, int); -extern OCerror oc_dds_ddnode(OClink, OCddsnode); -extern OCerror oc_data_ddpath(OClink, OCdatanode, char**); -extern OCerror oc_data_ddtree(OClink, OCdatanode root); - -#endif /*OCX_H*/ - diff --git a/contrib/netcdf/4.4.1.1/.gitignore b/contrib/netcdf/netcdf-c-4.6.2/.gitignore similarity index 98% rename from contrib/netcdf/4.4.1.1/.gitignore rename to contrib/netcdf/netcdf-c-4.6.2/.gitignore index 1cb376e2dd5..145dc062a86 100644 --- a/contrib/netcdf/4.4.1.1/.gitignore +++ b/contrib/netcdf/netcdf-c-4.6.2/.gitignore @@ -14,6 +14,13 @@ ncgen/ncgen ncgen3/ncgen3 ncdump/ctest.c ncdump/ctest64.c +libsrc/ncx.c +libsrc/attr.c +libsrc/putget.c +nc_test/test_write.c +nc_test/test_read.c +nc_test/test_put.c +nc_test/test_get.c # 'make check' produces these examples/C/pres_temp_4D.nc diff --git a/contrib/netcdf/4.4.1.1/CMakeInstallation.cmake b/contrib/netcdf/netcdf-c-4.6.2/CMakeInstallation.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/CMakeInstallation.cmake rename to contrib/netcdf/netcdf-c-4.6.2/CMakeInstallation.cmake diff --git a/contrib/netcdf/netcdf-c-4.6.2/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/CMakeLists.txt new file mode 100644 index 00000000000..e440b4bb28b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/CMakeLists.txt @@ -0,0 +1,2056 @@ +## This is a CMake file, part of Unidata's netCDF package. +# Copyright 2012-2018, see the COPYRIGHT file for more information. +# + +################################## +# Set Project Properties +################################## + +#Minimum required CMake Version +cmake_minimum_required(VERSION 3.6.1) + +#Project Name +project(netCDF C) +set(PACKAGE "netCDF" 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(NC_VERSION_MAJOR 4) +SET(NC_VERSION_MINOR 6) +SET(NC_VERSION_PATCH 2) +SET(NC_VERSION_NOTE "") +SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE}) +SET(VERSION ${netCDF_VERSION}) +SET(NC_VERSION ${netCDF_VERSION}) +SET(netCDF_LIB_VERSION 13) +SET(netCDF_SO_VERSION 13) +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}") +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 +INCLUDE(GNUInstallDirs) + +IF(MSVC) + SET(GLOBAL PROPERTY USE_FOLDERS ON) +ENDIF() + +#Add custom CMake Module +SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/" + CACHE INTERNAL "Location of our custom CMake modules.") + +# auto-configure style checks, other CMake modules. +INCLUDE(CheckLibraryExists) +INCLUDE(CheckIncludeFile) +INCLUDE(CheckIncludeFiles) +INCLUDE(CheckTypeSize) +INCLUDE(CheckFunctionExists) +INCLUDE(CheckCXXSourceCompiles) +INCLUDE(CheckCSourceCompiles) +INCLUDE(TestBigEndian) +INCLUDE(CheckSymbolExists) +INCLUDE(GetPrerequisites) + +INCLUDE(CheckCCompilerFlag) +FIND_PACKAGE(PkgConfig QUIET) + +# A check to see if the system is big endian +TEST_BIG_ENDIAN(BIGENDIAN) +IF(${BIGENDIAN}) + SET(WORDS_BIGENDIAN "1") +ENDIF(${BIGENDIAN}) + +# A macro to check if a C linker supports a particular flag. +MACRO(CHECK_C_LINKER_FLAG M_FLAG M_RESULT) + SET(T_REQ_FLAG "${CMAKE_REQUIRED_FLAGS}") + SET(CMAKE_REQUIRED_FLAGS "${M_FLAG}") + CHECK_C_SOURCE_COMPILES("int main() {return 0;}" ${M_RESULT}) + SET(CMAKE_REQUIRED_FLAGS "${T_REQ_FLAG}") +ENDMACRO() + +# Enable 'dist and distcheck'. +# File adapted from http://ensc.de/cmake/FindMakeDist.cmake +FIND_PACKAGE(MakeDist) +# End 'enable dist and distcheck' + +# 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. + +IF(DEFINED ENV{SOURCE_DATE_EPOCH}) + EXECUTE_PROCESS( + COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" + OUTPUT_VARIABLE CONFIG_DATE + ) +ELSE() + EXECUTE_PROCESS( + COMMAND date + OUTPUT_VARIABLE CONFIG_DATE + ) +ENDIF() +IF(CONFIG_DATE) + string(STRIP ${CONFIG_DATE} CONFIG_DATE) +ENDIF() +## +# Allow for extra dependencies. +## + +SET(EXTRA_DEPS "") + +################################ +# End Project Properties +################################ + + +################################ +# Set CTest Properties +################################ + + + +ENABLE_TESTING() +INCLUDE(CTest) + +# Copy the CTest customization file into binary directory, as required. +FILE(COPY ${CMAKE_SOURCE_DIR}/CTestCustom.cmake DESTINATION ${CMAKE_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) + +################################ +# End CTest Properties +################################ + + +################################ +# Compiler and Linker Configuration +################################ + +## +# Default building shared libraries. +# BUILD_SHARED_LIBS is provided by/used by +# CMake directly. +## +OPTION(BUILD_SHARED_LIBS "Configure netCDF as a shared library." ON) +IF(BUILD_SHARED_LIBS) + SET(CMAKE_POSITION_INDEPENDENT_CODE ON) +ENDIF() + +OPTION(NC_FIND_SHARED_LIBS "Find dynamically-built versions of dependent libraries" ${BUILD_SHARED_LIBS}) + +## +# We've had a request to allow for non-versioned shared libraries. +# This seems reasonable enough to accommodate. See +# https://github.com/Unidata/netcdf-c/issues/228 for more info. +## +OPTION(ENABLE_SHARED_LIBRARY_VERSION "Encode the library SO version in the file name of the generated library file." ON) + +# Set some default linux gcc & apple compiler options for +# debug builds. +IF(CMAKE_COMPILER_IS_GNUCC OR APPLE) + 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_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") + + # Check to see if -Wl,--no-undefined is supported. + CHECK_C_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_C_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_C_COMPILER_FLAG(-Wconversion CC_HAS_WCONVERSION) + CHECK_C_COMPILER_FLAG(-Wshorten-64-to-32 CC_HAS_SHORTEN_64_32) + + IF(CC_HAS_SHORTEN_64_32) + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshorten-64-to-32") + ENDIF() + IF(CC_HAS_WCONVERSION) + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wconversion") + ENDIF() + + ENDIF(ENABLE_CONVERSION_WARNINGS) + +ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE) + +# End default linux gcc & apple compiler options. + +ADD_DEFINITIONS() + +# Suppress CRT Warnings. +# Only necessary for Windows +IF(MSVC) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) +ENDIF() + +##### +# System inspection checks +##### +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/oc2) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libsrc) +SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/libsrc) + +################################ +# End Compiler Configuration +################################ + + + +## +# Configuration for post-install RPath +# Adapted from http://www.cmake.org/Wiki/CMake_RPATH_handling +## +IF(NOT MSVC AND BUILD_SHARED_LIBS) + # 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_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir) + IF("${isSystemDir}" STREQUAL "-1") + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") + ENDIF("${isSystemDir}" STREQUAL "-1") + +ENDIF() + +## +# End configuration for post-install RPath +## + +################################ +# Option checks +################################ + +# HDF5 cache variables. +SET(DEFAULT_CHUNK_SIZE 4194304 CACHE STRING "Default Chunk Cache Size.") +SET(DEFAULT_CHUNKS_IN_CACHE 10 CACHE STRING "Default number of chunks in cache.") +SET(CHUNK_CACHE_SIZE 4194304 CACHE STRING "Default Chunk Cache Size.") +SET(CHUNK_CACHE_NELEMS 1009 CACHE STRING "Default maximum number of elements in cache.") +SET(CHUNK_CACHE_PREEMPTION 0.75 CACHE STRING "Default file chunk cache preemption policy for HDf5 files(a number between 0 and 1, inclusive.") +SET(MAX_DEFAULT_CACHE_SIZE 67108864 CACHE STRING "Default maximum cache size.") +SET(NETCDF_LIB_NAME "" CACHE STRING "Default name of the netcdf library.") +SET(TEMP_LARGE "." CACHE STRING "Where to put large temp files if large file tests are run.") +SET(NCPROPERTIES_EXTRA "" CACHE STRNG "Specify extra pairs for _NCProperties.") +SET(MPIEXEC "mpiexec" CACHE STRING "Command to run MPI programs if parallel tests are run.") + +IF(NOT NETCDF_LIB_NAME STREQUAL "") + SET(MOD_NETCDF_NAME ON) +ENDIF() + +# Set the appropriate compiler/architecture for universal OSX binaries. +IF(${CMAKE_SYSTEM_NAME} EQUAL "Darwin") + SET(CMAKE_OSX_ARCHITECTURES i386;x86_64) +ENDIF(${CMAKE_SYSTEM_NAME} EQUAL "Darwin") + +# Macro for replacing '/MD' with '/MT'. +# Used only on Windows, /MD tells VS to use the shared +# CRT libs, MT tells VS to use the static CRT libs. +# +# Taken From: +# http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F +# +MACRO(specify_static_crt_flag) + SET(vars + CMAKE_C_FLAGS + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO) + + FOREACH(flag_var ${vars}) + IF(${flag_var} MATCHES "/MD") + STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + ENDIF() + ENDFOREACH() + + FOREACH(flag_var ${vars}) + MESSAGE(STATUS " '${flag_var}': ${${flag_var}}") + ENDFOREACH() + MESSAGE(STATUS "") +ENDMACRO() + +# Option to use Static Runtimes in MSVC +IF(MSVC) + OPTION(NC_USE_STATIC_CRT "Use static CRT Libraries ('\\MT')." OFF) + IF(NC_USE_STATIC_CRT) + SET(USE_STATIC_CRT ON) + specify_static_crt_flag() + ENDIF() +ENDIF() + +# Option to build netCDF Version 2 +OPTION (ENABLE_V2_API "Build netCDF Version 2." ON) +SET(BUILD_V2 ${ENABLE_V2_API}) +IF(NOT ENABLE_V2_API) + SET(NO_NETCDF_2 ON) +ELSE(NOT ENABLE_V2_API) + SET(USE_NETCDF_2 TRUE) +ENDIF(NOT ENABLE_V2_API) + +# Option to build utilities +OPTION(BUILD_UTILITIES "Build ncgen, ncgen3, ncdump." ON) + +# Option to use MMAP +OPTION(ENABLE_MMAP "Use MMAP." ON) + +# Option to use examples. +OPTION(ENABLE_EXAMPLES "Build Examples" ON) + +# Option to automatically build netcdf-fortran. +IF(NOT MSVC) + OPTION(ENABLE_REMOTE_FORTRAN_BOOTSTRAP "Download and build netcdf-fortran automatically (EXPERIMENTAL)." OFF) + IF(ENABLE_REMOTE_FORTRAN_BOOTSTRAP) + SET(BUILD_FORTRAN ON) + ENDIF() + IF(BUILD_FORTRAN) + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/postinstall.sh.in" + "${CMAKE_BINARY_DIR}/postinstall.sh" + @ONLY) + + ADD_CUSTOM_TARGET(build-netcdf-fortran + COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a build" + DEPENDS netcdf + ) + + ADD_CUSTOM_TARGET(install-netcdf-fortran + COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a install" + DEPENDS build-netcdf-fortran + ) + + ENDIF(BUILD_FORTRAN) +ENDIF() + + +### +# Allow the user to specify libraries +# to link against, similar to automakes 'LIBS' variable. +### +SET(NC_EXTRA_DEPS "" CACHE STRING "Additional libraries to link against.") +IF(NC_EXTRA_DEPS) + STRING(REPLACE " " ";" DEPS_LIST ${NC_EXTRA_DEPS}) + FOREACH(_DEP ${DEPS_LIST}) + STRING(REGEX REPLACE "^-l" "" _LIB ${_DEP}) + FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}") + MESSAGE(${${_LIB}_DEP}) + IF("${${_LIB}_DEP}" STREQUAL "${_LIB}_DEP-NOTFOUND") + MESSAGE(FATAL_ERROR "Error finding ${_LIB}.") + ELSE() + MESSAGE(STATUS "Found ${_LIB}: ${${_LIB}_DEP}") + ENDIF() + SET(EXTRA_DEPS ${EXTRA_DEPS} "${${_LIB}_DEP}") + ENDFOREACH() + MESSAGE("Extra deps: ${EXTRA_DEPS}") + LIST(REMOVE_DUPLICATES EXTRA_DEPS) + SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${EXTRA_DEPS}) +ENDIF() +### +# End user-specified dependent libraries. +### + +# Option to use HDF4 +OPTION(ENABLE_HDF4 "Build netCDF-4 with HDF4 read capability(HDF4, HDF5 and Zlib required)." OFF) +IF(ENABLE_HDF4) + SET(USE_HDF4 ON) + # Check for include files, libraries. + + FIND_PATH(MFHDF_H_INCLUDE_DIR mfhdf.h) + IF(NOT MFHDF_H_INCLUDE_DIR) + MESSAGE(FATAL_ERROR "HDF4 Support specified, cannot find file mfhdf.h") + ELSE() + INCLUDE_DIRECTORIES(${MFHDF_H_INCLUDE_DIR}) + ENDIF() + + FIND_LIBRARY(HDF4_DF_LIB NAMES df libdf hdf) + IF(NOT HDF4_DF_LIB) + MESSAGE(FATAL_ERROR "Can't find or link to the hdf4 df library.") + ENDIF() + + FIND_LIBRARY(HDF4_MFHDF_LIB NAMES mfhdf libmfhdf) + IF(NOT HDF4_MFHDF_LIB) + MESSAGE(FATAL_ERROR "Can't find or link to the hdf4 mfhdf library.") + ENDIF() + + SET(HAVE_LIBMFHDF TRUE) + + SET(HDF4_LIBRARIES ${HDF4_DF_LIB} ${HDF4_MFHDF_LIB}) + # End include files, libraries. + MESSAGE(STATUS "HDF4 libraries: ${HDF4_DF_LIB}, ${HDF4_MFHDF_LIB}") + + MESSAGE(STATUS "Seeking HDF4 jpeg dependency.") + + # Look for the jpeglib.h header file. + FIND_PATH(JPEGLIB_H_INCLUDE_DIR jpeglib.h) + IF(NOT JPEGLIB_H_INCLUDE_DIR) + MESSAGE(FATAL_ERROR "HDF4 Support enabled but cannot find jpeglib.h") + ELSE() + SET(HAVE_JPEGLIB_H ON CACHE BOOL "") + SET(HAVE_LIBJPEG TRUE) + INCLUDE_DIRECTORIES(${JPEGLIB_H_INCLUDE_DIR}) + ENDIF() + + FIND_LIBRARY(JPEG_LIB NAMES jpeg libjpeg) + IF(NOT JPEG_LIB) + MESSAGE(FATAL_ERROR "HDF4 Support enabled but cannot find libjpeg") + ENDIF() + SET(HDF4_LIBRARIES ${JPEG_LIB} ${HDF4_LIBRARIES}) + MESSAGE(STATUS "Found JPEG libraries: ${JPEG_LIB}") + + # Option to enable HDF4 file tests. + OPTION(ENABLE_HDF4_FILE_TESTS "Run HDF4 file tests. This fetches sample HDF4 files from the Unidata ftp site to test with (requires curl)." ON) + IF(ENABLE_HDF4_FILE_TESTS) + FIND_PROGRAM(PROG_CURL NAMES curl) + IF(PROG_CURL) + SET(USE_HDF4_FILE_TESTS ON) + ELSE() + MESSAGE(STATUS "Unable to locate 'curl'. Disabling hdf4 file tests.") + SET(USE_HDF4_FILE_TESTS OFF) + ENDIF() + ENDIF() +ENDIF() + +# Option to Build DLL +IF(WIN32) + OPTION(ENABLE_DLL "Build a Windows DLL." ${BUILD_SHARED_LIBS}) + IF(ENABLE_DLL) + SET(BUILD_DLL ON CACHE BOOL "") + ADD_DEFINITIONS(-DDLL_NETCDF) + ADD_DEFINITIONS(-DDLL_EXPORT) + ADD_DEFINITIONS(-DUTF8PROC_DLLEXPORT) + ENDIF() +ENDIF() +# Did the user specify a default minimum blocksize for posixio? +SET(NCIO_MINBLOCKSIZE 256 CACHE STRING "Minimum I/O Blocksize for netCDF classic and 64-bit offset format files.") + +# Build netCDF4 +OPTION(ENABLE_NETCDF_4 "Enable netCDF-4" ON) +IF(ENABLE_NETCDF_4) + SET(USE_NETCDF4 ON CACHE BOOL "") + SET(ENABLE_NETCDF_4 ON CACHE BOOL "") + SET(ENABLE_NETCDF4 ON CACHE BOOL "") +ELSE() + SET(USE_HDF4_FILE_TESTS OFF) + SET(USE_HDF4 OFF) + SET(ENABLE_HDF4_FILE_TESTS OFF) + SET(ENABLE_HDF4 OFF) +ENDIF() + +# Option Logging, only valid for netcdf4. +OPTION(ENABLE_LOGGING "Enable Logging." OFF) +IF(NOT ENABLE_NETCDF_4) +SET(ENABLE_LOGGING OFF) +ENDIF() +IF(ENABLE_LOGGING) + ADD_DEFINITIONS(-DLOGGING) + ADD_DEFINITIONS(-DENABLE_SET_LOG_LEVEL) + SET(LOGGING ON) + SET(ENABLE_SET_LOG_LEVEL ON) +ENDIF() +OPTION(ENABLE_SET_LOG_LEVEL_FUNC "Enable definition of nc_set_log_level()." ON) +IF(ENABLE_NETCDF_4 AND NOT ENABLE_LOGGING AND ENABLE_SET_LOG_LEVEL_FUNC) + ADD_DEFINITIONS(-DENABLE_SET_LOG_LEVEL) + SET(ENABLE_SET_LOG_LEVEL ON) +ENDIF() + +# Option to allow for strict null file padding. +# See https://github.com/Unidata/netcdf-c/issues/657 for more information +OPTION(ENABLE_STRICT_NULL_BYTE_HEADER_PADDING "Enable strict null byte header padding." OFF) + +IF(ENABLE_STRICT_NULL_BYTE_HEADER_PADDING) + SET(USE_STRICT_NULL_BYTE_HEADER_PADDING ON CACHE BOOL "") +ENDIF(ENABLE_STRICT_NULL_BYTE_HEADER_PADDING) + +# Option for building RPC +OPTION(ENABLE_RPC "Enable RPC Client and Server." OFF) +IF(ENABLE_RPC) + SET(BUILD_RPC ON CACHE BOOL "") +ENDIF() + +## +# Option to Enable HDF5 +# +# The HDF5 cmake variables differ between platform (linux/osx and Windows), +# as well as between HDF5 versions. As a result, this section is a bit convoluted. +# +# Note that the behavior seems much more stable across HDF5 versions under linux, +# so we do not have to do as much version-based tweaking. +# +# At the end of it, we should have the following defined: +# +# * HDF5_C_LIBRARY +# * HDF5_HL_LIBRARY +# * HDF5_LIBRARIES +# * HDF5_INCLUDE_DIR +# * +## +OPTION(USE_HDF5 "Use HDF5." ${ENABLE_NETCDF_4}) +IF(USE_HDF5 OR ENABLE_NETCDF_4) + SET(USE_HDF5 ON) + SET(USE_NETCDF4 ON) + ## + # Accommodate developers who have hdf5 libraries and + # headers on their system, but do not have a the hdf + # .cmake files. If this is the case, they should + # specify HDF5_HL_LIB, HDF5_LIB, HDF5_INCLUDE_DIR manually. + ## + IF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) + SET(HDF5_LIBRARIES ${HDF5_C_LIBRARY} ${HDF5_HL_LIBRARY}) + SET(HDF5_C_LIBRARIES ${HDF5_C_LIBRARY}) + SET(HDF5_C_LIBRARY_hdf5 ${HDF5_C_LIBRARY}) + SET(HDF5_HL_LIBRARIES ${HDF5_HL_LIBRARY}) + INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR}) + MESSAGE(STATUS "Using HDF5 C Library: ${HDF5_C_LIBRARY}") + MESSAGE(STATUS "Using HDF5 HL LIbrary: ${HDF5_HL_LIBRARY}") + ELSE(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) # We are seeking out HDF5 with Find Package. + ### + # For now we assume that if we are building netcdf + # as a shared library, we will use hdf5 as a shared + # library. If we are building netcdf statically, + # we will use a static library. This can be toggled + # by explicitly modifying NC_FIND_SHARED_LIBS. + ## + IF(NC_FIND_SHARED_LIBS) + SET(NC_HDF5_LINK_TYPE "shared") + SET(NC_HDF5_LINK_TYPE_UPPER "SHARED") + ADD_DEFINITIONS(-DH5_BUILT_AS_DYNAMIC_LIB) + ELSE(NC_FIND_SHARED_LIBS) + SET(NC_HDF5_LINK_TYPE "static") + SET(NC_HDF5_LINK_TYPE_UPPER "STATIC") + ADD_DEFINITIONS(-DH5_BUILT_AS_STATIC_LIB) + ENDIF(NC_FIND_SHARED_LIBS) + + ##### + # First, find the C and HL libraries. + # + # This has been updated to reflect what is in the hdf5 + # examples, even though the previous version of what we + # had worked. + ##### + IF(MSVC) + SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME}) + FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL NO_MODULES REQUIRED ${NC_HDF5_LINK_TYPE}) + ELSE(MSVC) + FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED) + ENDIF(MSVC) + + ## + # Next, check the HDF5 version. This will inform which + # HDF5 variables we need to munge. + ## + + ## + # Assert HDF5 version meets minimum required version. + ## + SET(HDF5_VERSION_REQUIRED 1.8.10) + + IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION) + SET(HDF5_VERSION ${HDF5_VERSION_STRING}) + ENDIF() + + IF("${HDF5_VERSION}" STREQUAL "") + MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}") + ELSE() + IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED}) + MESSAGE(FATAL_ERROR + "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.") + ELSE() + MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}") + ENDIF() + ENDIF() + + ## + # Include the HDF5 include directory. + ## + IF(HDF5_INCLUDE_DIRS AND NOT HDF5_INCLUDE_DIR) + SET(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_DIRS}) + ENDIF() + MESSAGE(STATUS "Using HDF5 include dir: ${HDF5_INCLUDE_DIR}") + INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR}) + + ### + # This is the block where we figure out what the appropriate + # variables are, and we ensure that we end up with + # HDF5_C_LIBRARY, HDF5_HL_LIBRARY and HDF5_LIBRARIES. + ### + IF(MSVC) + ## + # HDF5 1.8.15 defined HDF5_LIBRARIES. + ## + IF(${HDF5_VERSION} VERSION_LESS "1.8.16") + SET(HDF5_C_LIBRARY hdf5) + SET(HDF5_C_LIBRARY_hdf5 hdf5) + ENDIF(${HDF5_VERSION} VERSION_LESS "1.8.16") + + IF(${HDF5_VERSION} VERSION_GREATER "1.8.15") + IF(NOT HDF5_LIBRARIES AND HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY AND HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY) + SET(HDF5_C_LIBRARY ${HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) + SET(HDF5_C_LIBRARY_hdf5 ${HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) + SET(HDF5_HL_LIBRARY ${HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) + + SET(HDF5_LIBRARIES ${HDF5_C_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY} ${HDF5_HL_${NC_HDF5_LINK_TYPE_UPPER}_LIBRARY}) + ENDIF() + ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15") + + ELSE(MSVC) + + # Depending on the install, either HDF5_hdf_library or + # HDF5_C_LIBRARIES may be defined. We must check for either. + IF(HDF5_C_LIBRARIES AND NOT HDF5_hdf5_LIBRARY) + SET(HDF5_hdf5_LIBRARY ${HDF5_C_LIBRARIES}) + ENDIF() + + ENDIF(MSVC) + IF(NOT HDF5_C_LIBRARY) + SET(HDF5_C_LIBRARY hdf5) + ENDIF() + ENDIF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) + + FIND_PACKAGE(Threads) + + # There is a missing case in the above code so default it + IF(NOT HDF5_C_LIBRARY_HDF5 OR "${HDF5_C_LIBRARY_hdf5}" STREQUAL "" ) + SET(HDF5_C_LIBRARY_hdf5 "${HDF5_C_LIBRARY}") + ENDIF() + + ### + # The following options are not used in Windows currently. + ### + IF(NOT MSVC) + # Find out if HDF5 was built with parallel support. + # Do that by checking for the targets H5Pget_fapl_mpiposx and + # H5Pget_fapl_mpio in ${HDF5_LIB}. + + # H5Pset_fapl_mpiposix and H5Pget_fapl_mpiposix have been removed since HDF5 1.8.12. + # Use H5Pset_fapl_mpio and H5Pget_fapl_mpio, instead. + # CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pget_fapl_mpiposix "" HDF5_IS_PARALLEL_MPIPOSIX) + + CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pget_fapl_mpio "" HDF5_IS_PARALLEL_MPIO) + IF(HDF5_IS_PARALLEL_MPIO) + SET(HDF5_PARALLEL ON) + ELSE() + SET(HDF5_PARALLEL OFF) + ENDIF() + + #Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0) + CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_all_coll_metadata_ops "" HDF5_HAS_COLL_METADATA_OPS) + ENDIF(NOT MSVC) + + #Check to see if H5Z_SZIP exists in HDF5_Libraries. If so, we must use szip. + CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Z_SZIP "" USE_SZIP) + IF(USE_SZIP) + FIND_LIBRARY(SZIP NAMES szip sz) + IF(SZIP) + SET(HAVE_H5Z_SZIP 1) + SET(SZIP_LIBRARY ${SZIP}) + SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SZIP}) + ELSE() + MESSAGE(FATAL_ERROR "HDF5 Requires SZIP, but cannot find libszip or libsz.") + ENDIF() + ENDIF() + + CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_libver_bounds "" HDF5_HAS_LIBVER_BOUNDS) + CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5free_memory "" HDF5_HAS_H5FREE) + + IF(HDF5_PARALLEL) + SET(HDF5_CC h5pcc) + ELSE() + SET(HDF5_CC h5cc) + ENDIF() + + SET(H5_USE_16_API 1) + OPTION(NC_ENABLE_HDF_16_API "Enable HDF5 1.6.x Compatibility(Required)" ON) + IF(NOT NC_ENABLE_HDF_16_API) + SET(H5_USE_16_API 0) + ENDIF() + + FIND_PATH(HAVE_HDF5_H hdf5.h) + IF(NOT HAVE_HDF5_H) + MESSAGE(FATAL_ERROR "Compiling a test with hdf5 failed. Either hdf5.h cannot be found, or the log messages should be checked for another reason.") + ELSE(NOT HAVE_HDF5_H) + INCLUDE_DIRECTORIES(${HAVE_HDF5_H}) + ENDIF(NOT HAVE_HDF5_H) + + #option to include HDF5 High Level header file (hdf5_hl.h) in case we are not doing a make install + INCLUDE_DIRECTORIES(${HDF5_HL_INCLUDE_DIR}) + + +ENDIF(USE_HDF5 OR ENABLE_NETCDF_4) + +# Option to Build DAP2+DAP4 Clients +OPTION(ENABLE_DAP "Enable DAP2 and DAP4 Client." ON) +IF(ENABLE_DAP) + SET(USE_DAP ON CACHE BOOL "") + SET(ENABLE_DAP2 ON CACHE BOOL "") + + + IF(ENABLE_NETCDF_4) + SET(ENABLE_DAP4 ON CACHE BOOL "") + ELSE(ENABLE_NETCDF_4) + SET(ENABLE_DAP4 OFF CACHE BOOL "") + ENDIF(ENABLE_NETCDF_4) + + FIND_PACKAGE(CURL) + IF(NOT CURL_LIBRARY) + MESSAGE(FATAL_ERROR "DAP Support specified, CURL libraries are not found.") + ENDIF() + + ADD_DEFINITIONS(-DCURL_STATICLIB=1) + INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) + + # Check to see if CURLOPT_USERNAME is defined. + # It is present starting version 7.19.1. + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLOPT_USERNAME;}" HAVE_CURLOPT_USERNAME) + + # Check to see if CURLOPT_PASSWORD is defined. + # It is present starting version 7.19.1. + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLOPT_PASSWORD;}" HAVE_CURLOPT_PASSWORD) + + # Check to see if CURLOPT_KEYPASSWD is defined. + # It is present starting version 7.16.4. + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLOPT_KEYPASSWD;}" HAVE_CURLOPT_KEYPASSWD) + + # Check to see if CURLINFO_RESPONSE_CODE is defined. + # It showed up in curl 7.10.7. + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLINFO_RESPONSE_CODE;}" HAVE_CURLINFO_RESPONSE_CODE) + + # Check to see if CURLINFO_HTTP_CONNECTCODE is defined. + # It showed up in curl 7.10.7. + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLINFO_HTTP_CONNECTCODE;}" HAVE_CURLINFO_HTTP_CONNECTCODE) + + # Check to see if CURLOPT_BUFFERSIZE is defined. + # It is present starting version 7.59 + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLOPT_BUFFERSIZE;}" HAVE_CURLOPT_BUFFERSIZE) + + # Check to see if CURLOPT_TCP_KEEPALIVE is defined. + # It is present starting version 7.25 + CHECK_C_SOURCE_COMPILES(" + #include + int main() {int x = CURLOPT_TCP_KEEPALIVE;}" HAVE_CURLOPT_KEEPALIVE) + +ELSE() + SET(ENABLE_DAP2 OFF) + SET(ENABLE_DAP4 OFF) +ENDIF() + + +# Check for the math library so it can be explicitly linked. +IF(NOT WIN32) + FIND_LIBRARY(HAVE_LIBM NAMES math m libm) + MESSAGE(STATUS "Found Math library: ${HAVE_LIBM}") + IF(NOT HAVE_LIBM) + MESSAGE(FATAL_ERROR "Unable to find the math library.") + ENDIF() +ENDIF() + +# Option to Enable DAP long tests, remote tests. +OPTION(ENABLE_DAP_LONG_TESTS "Enable DAP long tests." OFF) +OPTION(ENABLE_DAP_REMOTE_TESTS "Enable DAP remote tests." ON) +SET(REMOTETESTSERVERS "149.165.169.123:8080,remotetest.unidata.ucar.edu" CACHE STRING "test servers to use for remote test") + +# If netCDF4 and DAP, Option for DAP groups. +IF(ENABLE_NETCDF_4 AND ENABLE_DAP2) + OPTION(ENABLE_DAP_GROUPS "Whether netcdf4 group names should be enabled." ON) +ELSE() + SET(ENABLE_DAP_GROUPS OFF CACHE BOOL "Whether netcdf4 group names should be enabled.") +ENDIF() + +# Enable some developer-only tests +OPTION(ENABLE_EXTRA_TESTS "Enable Extra tests. Some may not work because of known issues. Developers only." OFF) +IF(ENABLE_EXTRA_TESTS) + SET(EXTRA_TESTS ON) +ENDIF() + +# Option to use bundled XGetopt in place of getopt(). This is mostly useful +# for MSVC builds. If not building utilities, getopt() isn't required at all. +IF(MSVC) + OPTION(ENABLE_XGETOPT "Enable bundled XGetOpt instead of external getopt()." ON) + IF(ENABLE_XGETOPT) + SET(USE_X_GETOPT ON CACHE BOOL "") + ENDIF() +ENDIF() + +SET(MATH "") +IF(NOT WIN32) + + # STDIO instead of posixio. + OPTION(ENABLE_STDIO "If true, use stdio instead of posixio (ex. on the Cray)" OFF) + IF(ENABLE_STDIO) + SET(USE_STDIO ON CACHE BOOL "") + ENDIF() + + # FFIO insteaad of PosixIO + OPTION(ENABLE_FFIO "If true, use ffio instead of posixio" OFF) + IF(ENABLE_FFIO) + SET(USE_FFIO ON CACHE BOOL "") + ENDIF() +ENDIF() + +## +# Enable Tests +## +OPTION(ENABLE_TESTS "Enable basic tests, run with 'make test'." ON) +IF(ENABLE_TESTS) + SET(BUILD_TESTSETS ON CACHE BOOL "") + + # Options for CTest-based tests, dashboards. + SET(NC_CTEST_PROJECT_NAME "netcdf-c" CACHE STRING "Project Name for CTest-based testing purposes.") + SET(NC_CTEST_DROP_SITE "cdash.unidata.ucar.edu" CACHE STRING "Dashboard location for CTest-based testing purposes.") + SET(NC_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(NC_CTEST_SITE "${HOSTNAME}" CACHE STRING "Hostname of test machine.") + ENDIF() + + IF(NC_CTEST_SITE) + SET(SITE "${NC_CTEST_SITE}" CACHE STRING "") + ENDIF() + + # Create a CTestConfig file from the template. + CONFIGURE_FILE("${netCDF_SOURCE_DIR}/CTestConfig.cmake.in" + "${netCDF_SOURCE_DIR}/CTestConfig.cmake" + @ONLY + ) + + ### + # This option dictates whether or not to turn on + # tests which are known to fail. This is not the + # same thing as an 'expected failure'. Rather, these + # are tests that will need to be fixed eventually. + # + # By placing them here, we can occasionaly turn this + # flag on and see if any known failures have been + # fixed in the course of code improvement/other bug + # fixes. + # + # To use this, simply add as a fencepost around tests + # which are known to fail. + ### + + OPTION(ENABLE_FAILING_TESTS "Run tests which are known to fail, check to see if any have been fixed." OFF) + + ### + # End known-failures. + ### + MARK_AS_ADVANCED(ENABLE_FAILING_TESTS) +ENDIF() + +### +# Option to enable extreme numbers during testing. +### +OPTION(ENABLE_EXTREME_NUMBERS "Enable extreme numbers during testing, such as MAX_INT-1" ON) +IF(ENABLE_EXTREME_NUMBERS) + SET(USE_EXTREME_NUMBERS ON) +ENDIF() + +# Enable Large file tests +IF(ENABLE_LARGE_FILE_TESTS) + SET(LARGE_FILE_TESTS ON) +ENDIF() + +OPTION(ENABLE_METADATA_PERF_TESTS "Enable test of metadata performance." OFF) +IF(ENABLE_METADATA_PERF_TESTS) + SET(ENABLE_METADATA_PERF ON) +ENDIF() + +# Location for large file tests. +SET(TEMP_LARGE "." CACHE STRING "Location to store large file tests.") + +OPTION(ENABLE_FSYNC "Enable experimental fsync code." OFF) +IF(ENABLE_FSYNC) + SET(USE_FSYNC ON) +ENDIF() + +# Temporary +OPTION (ENABLE_JNA "Enable jna bug fix code." OFF) +IF(ENABLE_JNA) + SET(JNA ON) +ENDIF() + +# Linux specific large file support flags. +# Modelled after check in CMakeLists.txt for hdf5. +OPTION(ENABLE_LARGE_FILE_SUPPORT "Enable large file support." ON) +IF(ENABLE_LARGE_FILE_SUPPORT) + IF(MSVC) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE") + SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /LARGEADDRESSAWARE") + ELSE() + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64") + ENDIF() +ENDIF() + +OPTION(ENABLE_EXAMPLE_TESTS "Run extra example tests. Requires GNU Sed. Ignored if netCDF-4 is not Enabled" OFF) +IF(NOT ENABLE_NETCDF_4 AND ENABLE_EXAMPLE_TESTS) + SET(ENABLE_EXAMPLE_TESTS OFF) +ENDIF() + +# Enable Parallel IO with netCDF-4/HDF5 files using HDF5 parallel I/O. +SET(STATUS_PARALLEL "OFF") +OPTION(ENABLE_PARALLEL4 "Build netCDF-4 with parallel IO" "${HDF5_PARALLEL}") +IF(ENABLE_PARALLEL4 AND ENABLE_NETCDF_4) + IF(NOT HDF5_PARALLEL) + SET(USE_PARALLEL OFF CACHE BOOL "") + MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.") + ELSE() + SET(HDF5_PARALLEL ON CACHE BOOL "") + SET(USE_PARALLEL ON CACHE BOOL "") + SET(USE_PARALLEL4 ON CACHE BOOL "") + SET(STATUS_PARALLEL "ON") + configure_file("${netCDF_SOURCE_DIR}/nc_test4/run_par_test.sh.in" + "${netCDF_BINARY_DIR}/tmp/run_par_test.sh" @ONLY NEWLINE_STYLE LF) + FILE(COPY "${netCDF_BINARY_DIR}/tmp/run_par_test.sh" + DESTINATION ${netCDF_BINARY_DIR}/nc_test4 + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + + ENDIF() +ENDIF() + +# Options to enable parallel IO for classic formats with PnetCDF library. +SET(STATUS_PNETCDF "OFF") +OPTION(ENABLE_PNETCDF "Build with parallel I/O for CDF-1, 2, and 5 files using PnetCDF." OFF) + +IF(ENABLE_PNETCDF) + # Check for ncmpi_create in libpnetcdf, define USE_PNETCDF + # Does the user want to turn on PnetCDF read ability? + SET(USE_PNETCDF ON CACHE BOOL "") + FIND_LIBRARY(PNETCDF NAMES pnetcdf) + FIND_PATH(PNETCDF_INCLUDE_DIR pnetcdf.h) + IF(NOT PNETCDF) + MESSAGE(STATUS "Cannot find PnetCDF library. Disabling PnetCDF support.") + SET(USE_PNETCDF OFF CACHE BOOL "") + ELSE(NOT PNETCDF) + SET(USE_PARALLEL ON CACHE BOOL "") + + # Check PnetCDF version. Must be >= 1.6.0 + set(pnetcdf_h "${PNETCDF_INCLUDE_DIR}/pnetcdf.h" ) + message(STATUS "PnetCDF include file ${pnetcdf_h} will be searched for version") + file(STRINGS "${pnetcdf_h}" pnetcdf_major_string REGEX "^#define PNETCDF_VERSION_MAJOR") + string(REGEX REPLACE "[^0-9]" "" pnetcdf_major "${pnetcdf_major_string}") + file(STRINGS "${pnetcdf_h}" pnetcdf_minor_string REGEX "^#define PNETCDF_VERSION_MINOR") + string(REGEX REPLACE "[^0-9]" "" pnetcdf_minor "${pnetcdf_minor_string}") + file(STRINGS "${pnetcdf_h}" pnetcdf_sub_string REGEX "^#define PNETCDF_VERSION_SUB") + string(REGEX REPLACE "[^0-9]" "" pnetcdf_sub "${pnetcdf_sub_string}") + set(pnetcdf_version "${pnetcdf_major}.${pnetcdf_minor}.${pnetcdf_sub}") + message(STATUS "Found PnetCDF version ${pnetcdf_version}") + + if(${pnetcdf_version} VERSION_GREATER "1.6.0") + SET(STATUS_PNETCDF "ON") + INCLUDE_DIRECTORIES(${PNETCDF_INCLUDE_DIR}) + SET(HAVE_LIBPNETCDF ON) + # PnetCDF => parallel + SET(STATUS_PARALLEL ON) + SET(USE_PARALLEL ON) + MESSAGE(STATUS "Using PnetCDF Library: ${PNETCDF}") + ELSE() + MESSAGE(WARNING "ENABLE_PNETCDF requires version 1.6.1 or later; found version ${pnetcdf_version}. PnetCDF is disabled") + ENDIF() + ENDIF(NOT PNETCDF) +ENDIF() + +# Options to enable use of fill values for elements causing NC_ERANGE +SET(ENABLE_ERANGE_FILL AUTO CACHE STRING "AUTO") +OPTION(ENABLE_ERANGE_FILL "Enable use of fill value when out-of-range type conversion causes NC_ERANGE error." OFF) +IF(ENABLE_ERANGE_FILL) # enable or auto + STRING(TOUPPER ${ENABLE_ERANGE_FILL} ENABLE_ERANGE_FILL) + IF(ENABLE_ERANGE_FILL AND NOT ENABLE_ERANGE_FILL STREQUAL "AUTO") + # explicitly enabled + SET(ENABLE_ERANGE_FILL ON) + ELSE() + IF(NOT ENABLE_ERANGE_FILL STREQUAL "AUTO") + SET(ENABLE_ERANGE_FILL OFF) + ENDIF() + ENDIF() +ENDIF(ENABLE_ERANGE_FILL) +# Now ENABLE_ERANGE_FILL is either AUTO, ON, or OFF + +# Options to use a more relaxed coordinate argument boundary check +SET(ENABLE_ZERO_LENGTH_COORD_BOUND AUTO CACHE STRING "AUTO") +OPTION(ENABLE_ZERO_LENGTH_COORD_BOUND "Enable a more relaxed boundary error check NC_EINVALCOORDS to allow coordinate start argument equal to dimension size when argument count is zero." OFF) +IF(ENABLE_ZERO_LENGTH_COORD_BOUND) # enable or auto + STRING(TOUPPER ${ENABLE_ZERO_LENGTH_COORD_BOUND} ENABLE_ZERO_LENGTH_COORD_BOUND) + IF(ENABLE_ZERO_LENGTH_COORD_BOUND AND NOT ENABLE_ZERO_LENGTH_COORD_BOUND STREQUAL "AUTO") + # explicitly enabled + SET(ENABLE_ZERO_LENGTH_COORD_BOUND ON) + ELSE() + IF(NOT ENABLE_ZERO_LENGTH_COORD_BOUND STREQUAL "AUTO") + SET(ENABLE_ZERO_LENGTH_COORD_BOUND OFF) + ENDIF() + ENDIF() +ENDIF(ENABLE_ZERO_LENGTH_COORD_BOUND) +# Now ENABLE_ZERO_LENGTH_COORD_BOUND is either AUTO, ON, or OFF + +# check and conform with PnetCDF settings on ERANGE_FILL and RELAX_COORD_BOUND +IF(STATUS_PNETCDF) + file(STRINGS "${pnetcdf_h}" enable_erange_fill_pnetcdf REGEX "^#define PNETCDF_ERANGE_FILL") + string(REGEX REPLACE "[^0-9]" "" erange_fill_pnetcdf "${enable_erange_fill_pnetcdf}") + IF("x${erange_fill_pnetcdf}" STREQUAL "x1") + SET(erange_fill_pnetcdf "ON") + ELSE() + SET(erange_fill_pnetcdf "OFF") + ENDIF() + IF(ENABLE_ERANGE_FILL STREQUAL "AUTO") # not set on command line + SET(ENABLE_ERANGE_FILL "${erange_fill_pnetcdf}") + ELSE() + # user explicitly set this option on command line + IF(NOT ENABLE_ERANGE_FILL STREQUAL "${erange_fill_pnetcdf}") + IF(ENABLE_ERANGE_FILL) + MESSAGE(FATAL_ERROR "Enabling erange-fill conflicts with PnetCDF setting") + ELSE() + MESSAGE(FATAL_ERROR "Disabling erange-fill conflicts with PnetCDF setting") + ENDIF() + ENDIF() + ENDIF() + + file(STRINGS "${pnetcdf_h}" relax_coord_bound_pnetcdf REGEX "^#define PNETCDF_RELAX_COORD_BOUND") + string(REGEX REPLACE "[^0-9]" "" relax_coord_bound "${relax_coord_bound_pnetcdf}") + IF("x${relax_coord_bound}" STREQUAL "x1") + SET(relax_coord_bound_pnetcdf "ON") + ELSE() + SET(relax_coord_bound_pnetcdf "OFF") + ENDIF() + IF(ENABLE_ZERO_LENGTH_COORD_BOUND STREQUAL "AUTO") # not set on command line + SET(ENABLE_ZERO_LENGTH_COORD_BOUND "${relax_coord_bound_pnetcdf}") + ELSE() + # user explicitly set this option on command line + IF(NOT ENABLE_ZERO_LENGTH_COORD_BOUND STREQUAL "${relax_coord_bound_pnetcdf}") + IF(ENABLE_ZERO_LENGTH_COORD_BOUND) + MESSAGE(FATAL_ERROR "Enabling relax-coord-bound conflicts with PnetCDF setting") + ELSE() + MESSAGE(FATAL_ERROR "Disabling relax-coord-bound conflicts with PnetCDF setting") + ENDIF() + ENDIF() + ENDIF() +ENDIF() + +IF(ENABLE_ERANGE_FILL) + MESSAGE(STATUS "Enabling use of fill value when NC_ERANGE") + SET(M4FLAGS "-DERANGE_FILL" CACHE STRING "") +ENDIF() + +IF(ENABLE_ZERO_LENGTH_COORD_BOUND) + MESSAGE(STATUS "Enabling a more relaxed check for NC_EINVALCOORDS") + ADD_DEFINITIONS(-DRELAX_COORD_BOUND) +ENDIF() + +# Enable Parallel Tests. +OPTION(ENABLE_PARALLEL_TESTS "Enable Parallel IO Tests. Requires HDF5/NetCDF4 with parallel I/O Support." ${USE_PARALLEL}) +IF(ENABLE_PARALLEL_TESTS AND USE_PARALLEL) + SET(TEST_PARALLEL ON CACHE BOOL "") + IF(USE_NETCDF4) + SET(TEST_PARALLEL4 ON CACHE BOOL "") + ENDIF() +ENDIF() + +IF (ENABLE_PARALLEL_TESTS AND NOT USE_PARALLEL) + MESSAGE(FATAL_ERROR "Parallel tests requested, but no parallel HDF5 installation detected.") +ENDIF() + +# Enable special filter test; experimental when using cmake. +OPTION(ENABLE_FILTER_TESTING "Enable filter testing. Ignored if shared libraries or netCDF4 are not enabled" OFF) +IF(NOT ENABLE_NETCDF4) + MESSAGE(WARNING "ENABLE_FILTER_TESTING requires netCDF-4. Disabling.") + SET(ENABLE_FILTER_TESTING OFF CACHE BOOL "") +ENDIF() +IF(NOT BUILD_SHARED_LIBS) + MESSAGE(WARNING "ENABLE_FILTER_TESTING requires shared libraries. Disabling.") + SET(ENABLE_FILTER_TESTING OFF CACHE BOOL "") +ENDIF() + +# Determine whether or not to generate documentation. +OPTION(ENABLE_DOXYGEN "Enable generation of doxygen-based documentation." OFF) +IF(ENABLE_DOXYGEN) + FIND_PACKAGE(Doxygen REQUIRED) + # Offer the option to build internal documentation. + OPTION(ENABLE_INTERNAL_DOCS "Build internal documentation. This is of interest to developers only." OFF) + IF(ENABLE_INTERNAL_DOCS) + SET(BUILD_INTERNAL_DOCS YES CACHE STRING "") + ELSE() + SET(BUILD_INTERNAL_DOCS NO CACHE STRING "") + ENDIF() + + ### + # + # If we are building release documentation, we need to set some + # variables that will be used in the Doxygen.in template. + ### + OPTION(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS "Build release documentation. This is of interest only to the netCDF developers." OFF) + IF(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS) + SET(DOXYGEN_CSS_FILE "${CMAKE_SOURCE_DIR}/docs/release.css" CACHE STRING "") + SET(DOXYGEN_HEADER_FILE "${CMAKE_SOURCE_DIR}/docs/release_header.html" CACHE STRING "") + SET(DOXYGEN_SEARCHENGINE "NO" CACHE STRING "") + SET(ENABLE_DOXYGEN_SERVER_BASED_SEARCH NO CACHE STRING "") + ELSE() + SET(DOXYGEN_CSS_FILE "" CACHE STRING "") + SET(DOXYGEN_HEADER_FILE "" CACHE STRING "") + SET(DOXYGEN_SEARCHENGINE "YES" CACHE STRING "") + + # If not using release document configuration, + # provide an option for server-based search. + OPTION(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH "Configure Doxygen with server-based search." OFF) + IF(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) + SET(DOXYGEN_SERVER_BASED_SEARCH "YES" CACHE STRING "") + ELSE() + SET(DOXYGEN_SERVER_BASED_SEARCH "NO" CACHE STRING "") + ENDIF(ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) + + + ENDIF(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS) + # Option to turn on the TODO list in the doxygen-generated documentation. + OPTION(DOXYGEN_ENABLE_TASKS "Turn on test, todo, bug lists in documentation. This is of interest to developers only." OFF) + IF(DOXYGEN_ENABLE_TASKS) + SET(SHOW_DOXYGEN_TAG_LIST YES CACHE STRING "") + ELSE(DOXYGEN_ENABLE_TASKS) + SET(SHOW_DOXYGEN_TODO_LIST NO CACHE STRING "") + ENDIF(DOXYGEN_ENABLE_TASKS) + + OPTION(ENABLE_DOXYGEN_PDF_OUTPUT "[EXPERIMENTAL] Turn on PDF output for Doxygen-generated documentation." OFF) + + IF(ENABLE_DOXYGEN_PDF_OUTPUT) + SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "YES" CACHE STRING "") + ELSE() + SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "NO" CACHE STRING "") + ENDIF() + + FIND_PROGRAM(NC_DOT NAMES dot) + # Specify whether or not 'dot' was found on the system path. + IF(NC_DOT) + SET(HAVE_DOT YES CACHE STRING "") + ELSE(NC_DOT) + SET(HAVE_DOT NO CACHE STRING "") + ENDIF(NC_DOT) +ENDIF() + +# Always enable DISKLESS +OPTION(ENABLE_DISKLESS "Enable in-memory files" ON) + + +# By default, MSVC has a stack size of 1000000. +# Allow a user to override this. +IF(MSVC) + SET(NC_MSVC_STACK_SIZE 40000000 CACHE STRING "Default stack size for MSVC-based projects.") + # By default, CMake sets the stack to 1000000. + # Remove this limitation. + # See here for more details: + # http://www.cmake.org/pipermail/cmake/2009-April/028710.html + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") + SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:${NC_MSVC_STACK_SIZE}") +ENDIF() + +# Set some of the options as advanced. +MARK_AS_ADVANCED(ENABLE_INTERNAL_DOCS VALGRIND_TESTS ENABLE_COVERAGE_TESTS ) +MARK_AS_ADVANCED(ENABLE_DAP_REMOTE_TESTS ENABLE_DAP_LONG_TESTS USE_REMOTE_CDASH) +MARK_AS_ADVANCED(ENABLE_DOXYGEN_BUILD_RELEASE_DOCS DOXYGEN_ENABLE_TASKS ENABLE_DOXYGEN_SERVER_SIDE_SEARCH) +MARK_AS_ADVANCED(ENABLE_SHARED_LIBRARY_VERSION) + +################################ +# Option checks +################################ + +# Library include checks +CHECK_INCLUDE_FILE("math.h" HAVE_MATH_H) +CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) +# Solve a compatibility issue in ncgen/, which checks +# for NO_UNISTD_H +IF(NOT HAVE_UNISTD_H) + SET(YY_NO_UNISTD_H TRUE) +ENDIF() + +CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H) +CHECK_INCLUDE_FILE("malloc.h" HAVE_MALLOC_H) +CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) +CHECK_INCLUDE_FILE("getopt.h" HAVE_GETOPT_H) +CHECK_INCLUDE_FILE("locale.h" HAVE_LOCALE_H) +CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H) +CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H) +IF(MSVC) +CHECK_INCLUDE_FILE("io.h" HAVE_IO_H) +ENDIF(MSVC) +CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) +CHECK_INCLUDE_FILE("stdarg.h" HAVE_STDARG_H) +CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) +CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H) +CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) +CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) +CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) +CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H) +CHECK_INCLUDE_FILE("sys/mman.h" HAVE_SYS_MMAN_H) +CHECK_INCLUDE_FILE("sys/resource.h" HAVE_SYS_RESOURCE_H) +CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) +CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) +CHECK_INCLUDE_FILE("pstdint.h" HAVE_PSTDINT_H) +CHECK_INCLUDE_FILE("endian.h" HAVE_ENDIAN_H) +CHECK_INCLUDE_FILE("BaseTsd.h" HAVE_BASETSD_H) +CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H) +CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H) +CHECK_INCLUDE_FILE("winsock2.h" HAVE_WINSOCK2_H) +CHECK_INCLUDE_FILE("ftw.h" HAVE_FTW_H) +CHECK_INCLUDE_FILE("libgen.h" HAVE_LIBGEN_H) + +# Symbol Exists +CHECK_SYMBOL_EXISTS(isfinite "math.h" HAVE_DECL_ISFINITE) +CHECK_SYMBOL_EXISTS(isnan "math.h" HAVE_DECL_ISNAN) +CHECK_SYMBOL_EXISTS(isinf "math.h" HAVE_DECL_ISINF) +CHECK_SYMBOL_EXISTS(st_blksize "sys/stat.h" HAVE_STRUCT_STAT_ST_BLKSIZE) +CHECK_SYMBOL_EXISTS(alloca "alloca.h" HAVE_ALLOCA) +CHECK_SYMBOL_EXISTS(snprintf "stdio.h" HAVE_SNPRINTF) + +# Type checks +# Aliases for automake consistency +SET(SIZEOF_VOIDSTAR ${CMAKE_SIZEOF_VOID_P}) +SET(SIZEOF_VOIDP ${SIZEOF_VOIDSTAR}) +CHECK_TYPE_SIZE("char" SIZEOF_CHAR) +CHECK_TYPE_SIZE("double" SIZEOF_DOUBLE) +CHECK_TYPE_SIZE("float" SIZEOF_FLOAT) +CHECK_TYPE_SIZE("int" SIZEOF_INT) +CHECK_TYPE_SIZE("uint" SIZEOF_UINT) +IF(SIZEOF_UINT) + SET(HAVE_UINT TRUE) +ENDIF(SIZEOF_UINT) + +CHECK_TYPE_SIZE("schar" SIZEOF_SCHAR) +IF(SIZEOF_SCHAR) + SET(HAVE_SCHAR TRUE) +ENDIF(SIZEOF_SCHAR) + +CHECK_TYPE_SIZE("long" SIZEOF_LONG) +CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG) +IF(SIZEOF_LONG_LONG) + SET(HAVE_LONG_LONG_INT TRUE) +ENDIF(SIZEOF_LONG_LONG) + +CHECK_TYPE_SIZE("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG) + +CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T) +CHECK_TYPE_SIZE("off64_t" SIZEOF_OFF64_T) +CHECK_TYPE_SIZE("short" SIZEOF_SHORT) +CHECK_TYPE_SIZE("ushort" SIZEOF_USHORT) +IF(SIZEOF_USHORT) + SET(HAVE_USHORT TRUE) +ENDIF(SIZEOF_USHORT) + +CHECK_TYPE_SIZE("_Bool" SIZEOF__BOOL) + +CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T) + +# Check whether to turn on or off CDF5 support. +SET(ENABLE_CDF5 AUTO CACHE STRING "AUTO") +OPTION(ENABLE_CDF5 "Enable CDF5 support" ON) +IF(SIZEOF_SIZE_T EQUAL 4) + IF(ENABLE_CDF5) # enable or auto + STRING(TOUPPER ${ENABLE_CDF5} ENABLE_CDF5) + IF(ENABLE_CDF5 AND NOT ENABLE_CDF5 STREQUAL "AUTO") # explicitly enabled + MESSAGE(FATAL_ERROR "Unable to support CDF5 feature because size_t is less than 8 bytes") + ENDIF(ENABLE_CDF5 AND NOT ENABLE_CDF5 STREQUAL "AUTO") + SET(ENABLE_CDF5 OFF) # cannot support CDF5 + SET(USE_CDF5 OFF CACHE BOOL "") # cannot support CDF5 + ENDIF(ENABLE_CDF5) +ELSE(SIZEOF_SIZE_T EQUAL 4) + IF(ENABLE_CDF5) # explicitly set by user or not set + SET(USE_CDF5 ON CACHE BOOL "") + ELSE(ENABLE_CDF5) # explicitly disabled by user + SET(USE_CDF5 OFF CACHE BOOL "") + ENDIF(ENABLE_CDF5) +ENDIF(SIZEOF_SIZE_T EQUAL 4) + +CHECK_TYPE_SIZE("ssize_t" SIZEOF_SSIZE_T) +IF(SIZEOF_SSIZE_T) + SET(HAVE_SSIZE_T TRUE) +ENDIF(SIZEOF_SSIZE_T) +CHECK_TYPE_SIZE("ptrdiff_t" SIZEOF_PTRDIFF_T) +IF(SIZEOF_PTRDIFF_T) + SET(HAVE_PTRDIFF_T TRUE) +ENDIF(SIZEOF_PTRDIFF_T) +CHECK_TYPE_SIZE("uintptr_t" SIZEOF_UINTPTR_T) +IF(SIZEOF_UINTPTR_T) + SET(HAVE_UINTPTR_T TRUE) +ENDIF(SIZEOF_UINTPTR_T) + +# __int64 is used on Windows for large file support. +CHECK_TYPE_SIZE("__int64" SIZEOF___INT_64) +CHECK_TYPE_SIZE("int64_t" SIZEOF_INT64_T) +CHECK_TYPE_SIZE("uint64_t" SIZEOF_UINT64_T) +CHECK_TYPE_SIZE("unsigned char" SIZEOF_UCHAR) +CHECK_TYPE_SIZE("unsigned short int" SIZEOF_UNSIGNED_SHORT_INT) +CHECK_TYPE_SIZE("unsigned int" SIZEOF_UNSIGNED_INT) +CHECK_TYPE_SIZE("long long" SIZEOF_LONGLONG) +CHECK_TYPE_SIZE("unsigned long long" SIZEOF_ULONGLONG) + +# On windows systems, we redefine off_t as __int64 +# to enable LFS. This is true on 32 and 64 bit system.s +# We must redefine SIZEOF_OFF_T to match. +IF(MSVC AND SIZEOF___INT_64) + SET(SIZEOF_OFF_T ${SIZEOF___INT_64}) +ENDIF() + +# Check for various functions. +CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC) +CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT) +CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP) +CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP) +CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) +CHECK_FUNCTION_EXISTS(strtoull HAVE_STRTOULL) +CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) +CHECK_FUNCTION_EXISTS(mktemp HAVE_MKTEMP) +CHECK_FUNCTION_EXISTS(random HAVE_RANDOM) +CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) +CHECK_FUNCTION_EXISTS(MPI_Comm_f2c HAVE_MPI_COMM_F2C) +CHECK_FUNCTION_EXISTS(MPI_Info_f2c HAVE_MPI_INFO_F2C) +CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE) +CHECK_FUNCTION_EXISTS(getpagesize HAVE_GETPAGESIZE) +CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) +CHECK_FUNCTION_EXISTS(getrlimit HAVE_GETRLIMIT) +CHECK_FUNCTION_EXISTS(_filelengthi64 HAVE_FILE_LENGTH_I64) +CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +CHECK_FUNCTION_EXISTS(mremap HAVE_MREMAP) + +IF(NOT HAVE_MMMAP OR NOT HAVE_MREMAP) + MESSAGE(WARNING "mmap or mremap not found: disabling MMAP support.") + SET(ENABLE_MMAP OFF) +ENDIF() + +IF(ENABLE_MMAP) + SET(BUILD_MMAP ON) + SET(USE_MMAP ON) +ENDIF(ENABLE_MMAP) + +#CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA) +##### +# End system inspection checks. +##### + +################################ +# Define Utility Macros +################################ + +# Macro to append files to the EXTRA_DIST files. +# Note: can only be used in subdirectories because of the use of PARENT_SCOPE +SET(EXTRA_DIST "") +MACRO(ADD_EXTRA_DIST files) + FOREACH(F ${files}) + SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/${F}) + SET(EXTRA_DIST ${EXTRA_DIST} PARENT_SCOPE) + ENDFOREACH() +ENDMACRO() + +# A basic script used to convert m4 files +FIND_PROGRAM(NC_M4 NAMES m4 m4.exe) +IF(NC_M4) + MESSAGE(STATUS "Found m4: ${NC_M4}") + SET(HAVE_M4 TRUE) +ELSE() + MESSAGE(STATUS "m4 not found.") +ENDIF() + +MACRO(GEN_m4 filename) + + IF(HAVE_M4) + + # If m4 is available, remove generated file if it exists. + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c) + FILE(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c) + ENDIF() + + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c + COMMAND ${NC_M4} + ARGS ${M4FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c + VERBATIM + ) +ENDIF(HAVE_M4) +ENDMACRO(GEN_m4) + +# Binary tests, but ones which depend on value of 'TEMP_LARGE' being defined. +MACRO(add_bin_env_temp_large_test prefix F) + ADD_EXECUTABLE(${prefix}_${F} ${F}.c) + TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf) + IF(MSVC) + SET_TARGET_PROPERTIES(${prefix}_${F} + PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" + ) + ENDIF() + + ADD_TEST(${prefix}_${F} bash "-c" "TEMP_LARGE=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}") + IF(MSVC) + SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests") + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + + +# Tests which are binary, but depend on a particular environmental variable. +MACRO(add_bin_env_test prefix F) + ADD_EXECUTABLE(${prefix}_${F} ${F}.c) + TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf) + IF(MSVC) + SET_TARGET_PROPERTIES(${prefix}_${F} + PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" + ) + ENDIF() + + ADD_TEST(${prefix}_${F} bash "-c" "TOPSRCDIR=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}") + IF(MSVC) + SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests") + ENDIF() +ENDMACRO() + +# Build a binary used by a script, but don't make a test out of it. +MACRO(build_bin_test F) + ADD_EXECUTABLE(${F} ${F}.c) + TARGET_LINK_LIBRARIES(${F} netcdf ${ALL_TLL_LIBS}) + IF(MSVC) + SET_TARGET_PROPERTIES(${F} + PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" + ) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + +# Binary tests which are used by a script looking for a specific name. +MACRO(add_bin_test_no_prefix F) + build_bin_test(${F}) + ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F}) + IF(MSVC) + SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/") + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + +# Binary tests which are used by a script looking for a specific name. +MACRO(build_bin_test_no_prefix F) + build_bin_test(${F}) + IF(MSVC) + #SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/") + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + +MACRO(add_bin_test prefix F) + ADD_EXECUTABLE(${prefix}_${F} ${F}.c) + TARGET_LINK_LIBRARIES(${prefix}_${F} + ${ALL_TLL_LIBS} + netcdf + ) + IF(MSVC) + SET_TARGET_PROPERTIES(${prefix}_${F} + PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" + ) + ENDIF() + ADD_TEST(${prefix}_${F} + ${EXECUTABLE_OUTPUT_PATH}/${prefix}_${F} + ) + IF(MSVC) + SET_PROPERTY(TEST ${prefix}_${F} PROPERTY FOLDER "tests/") + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + +# A cmake script to print out information at the end of the configuration step. +MACRO(print_conf_summary) + MESSAGE("") + MESSAGE("") + MESSAGE("Configuration Summary:") + MESSAGE("") + MESSAGE(STATUS "Building Shared Libraries: ${BUILD_SHARED_LIBS}") + MESSAGE(STATUS "Building netCDF-4: ${ENABLE_NETCDF_4}") + MESSAGE(STATUS "Building DAP2 Support: ${ENABLE_DAP2}") + MESSAGE(STATUS "Building DAP4 Support: ${ENABLE_DAP4}") + MESSAGE(STATUS "Building Utilities: ${BUILD_UTILITIES}") + IF(CMAKE_PREFIX_PATH) + MESSAGE(STATUS "CMake Prefix Path: ${CMAKE_PREFIX_PATH}") + ENDIF() + MESSAGE("") + + IF(${STATUS_PNETCDF} OR ${STATUS_PARALLEL}) + MESSAGE("Building Parallel NetCDF") + MESSAGE(STATUS "Using PnetCDF: ${STATUS_PNETCDF}") + MESSAGE(STATUS "Using Parallel IO: ${STATUS_PARALLEL}") + MESSAGE("") + ENDIF() + + MESSAGE("Tests Enabled: ${ENABLE_TESTS}") + IF(ENABLE_TESTS) + MESSAGE(STATUS "DAP Remote Tests: ${ENABLE_DAP_REMOTE_TESTS}") + MESSAGE(STATUS "Extra Tests: ${ENABLE_EXTRA_TESTS}") + MESSAGE(STATUS "Coverage Tests: ${ENABLE_COVERAGE_TESTS}") + MESSAGE(STATUS "Parallel Tests: ${ENABLE_PARALLEL_TESTS}") + MESSAGE(STATUS "Large File Tests: ${ENABLE_LARGE_FILE_TESTS}") + MESSAGE(STATUS "Extreme Numbers: ${ENABLE_EXTREME_NUMBERS}") + ENDIF() + + MESSAGE("") + MESSAGE("Compiler:") + MESSAGE("") + MESSAGE(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") + MESSAGE(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") + MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") + IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") + MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}") + ENDIF() + IF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE") + MESSAGE(STATUS "CMAKE_C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}") + ENDIF() + + MESSAGE(STATUS "Linking against: ${ALL_TLL_LIBS}") + + MESSAGE("") +ENDMACRO() +## +# Shell script Macro +## +# Determine if 'bash' is on the system. +## + +OPTION(ENABLE_BASH_SCRIPT_TESTING "Detection is typically automatic, but this option can be used to force enable/disable bash-script based tests." ON) + +IF(ENABLE_BASH_SCRIPT_TESTING) + FIND_PROGRAM(HAVE_BASH bash) + IF(HAVE_BASH) + STRING(COMPARE EQUAL "${HAVE_BASH}" "C:/Windows/System32/bash.exe" IS_BASH_EXE) + IF(NOT IS_BASH_EXE) + MESSAGE(STATUS "Found bash: ${HAVE_BASH}") + ELSE() + MESSAGE(STATUS "Ignoring ${HAVE_BASH}") + SET(HAVE_BASH "") + ENDIF() + ELSE() + MESSAGE(STATUS "Bash shell not found; disabling shell script tests.") + ENDIF() +ELSE(ENABLE_BASH_SCRIPT_TESTING) + SET(HAVE_BASH "") +ENDIF(ENABLE_BASH_SCRIPT_TESTING) + +MACRO(add_sh_test prefix F) + IF(HAVE_BASH) + ADD_TEST(${prefix}_${F} bash "-c" "export srcdir=${CMAKE_CURRENT_SOURCE_DIR};export TOPSRCDIR=${CMAKE_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}/${F}.sh") + ENDIF() +ENDMACRO() + + + +# 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_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 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() + +################################ +# End Macro Definitions +################################ + +# Create config.h file. +configure_file("${netCDF_SOURCE_DIR}/config.h.cmake.in" + "${netCDF_BINARY_DIR}/config.h") +ADD_DEFINITIONS(-DHAVE_CONFIG_H) +INCLUDE_DIRECTORIES(${netCDF_BINARY_DIR}) +# End autotools-style checs for config.h + +##### +# Set core names of the libraries. +##### +SET(netCDF_LIB_CORENAME "netcdf") + +##### +# Set the true names of all the libraries, if customized by external project +##### +# Recurse into other subdirectories. +add_subdirectory("include") +add_subdirectory(libdispatch) +add_subdirectory(libsrc) + +IF(ENABLE_FILTER_TESTING) +add_subdirectory(plugins) +ENDIF() + +IF(USE_PNETCDF) + add_subdirectory(libsrcp) +ENDIF(USE_PNETCDF) + +IF(USE_HDF5) + add_subdirectory(libsrc4) + add_subdirectory(libhdf5) +ENDIF(USE_HDF5) + +IF(USE_HDF4) + add_subdirectory(libhdf4) + add_subdirectory(hdf4_test) +ENDIF(USE_HDF4) + +IF(ENABLE_DAP2) + ADD_SUBDIRECTORY(oc2) + ADD_SUBDIRECTORY(libdap2) +ENDIF() + +IF(ENABLE_DAP4) + ADD_SUBDIRECTORY(libdap4) +ENDIF() + +add_subdirectory(liblib) + +# For tests and utilities, we are no longer +# exporting symbols but rather importing them. +IF(BUILD_DLL) + REMOVE_DEFINITIONS(-DDLL_EXPORT) +ENDIF() + +# Enable Utilities. +IF(BUILD_UTILITIES) + INCLUDE_DIRECTORIES(ncdump) + ADD_SUBDIRECTORY(ncgen) + ADD_SUBDIRECTORY(ncgen3) + ADD_SUBDIRECTORY(ncdump) +ENDIF() + +# Enable tests +IF(ENABLE_TESTS) + IF(ENABLE_V2_API) + ADD_SUBDIRECTORY(nctest) + ENDIF() + ADD_SUBDIRECTORY(nc_test) + IF(USE_NETCDF4) + INCLUDE_DIRECTORIES(h5_test) + ADD_SUBDIRECTORY(nc_test4) + ADD_SUBDIRECTORY(h5_test) + ENDIF() + IF(ENABLE_DAP2) + ADD_SUBDIRECTORY(ncdap_test) + ENDIF() + IF(ENABLE_DAP4) + ADD_SUBDIRECTORY(dap4_test) + ENDIF() + IF(ENABLE_EXAMPLES) + ADD_SUBDIRECTORY(examples) + ENDIF() +ENDIF() + +# Code to generate an export header +#GENERATE_EXPORT_HEADER(netcdf +# BASE_NAME netcdf +# EXPORT_MACRO_NAME netcdf_EXPORT +# EXPORT_FILE_NAME netcdf_Export.h +# STATIC_DEFINE netcdf_BUILT_AS_STATIC +#) + +##### +# Build doxygen documentation, if need be. +##### +ADD_SUBDIRECTORY(docs) + +## +# Brute force, grab all of the dlls from the dependency directory, +# install them in the binary dir. Grab all of the .libs, put them +# in the libdir. +## +IF(MSVC) + FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/lib/*.lib) + INSTALL(FILES ${COPY_FILES} + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT dependencies) + + FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/bin/*.dll) + STRING(REGEX REPLACE "msv[.*].dll" "" COPY_FILES "${COPY_FILES}") + INSTALL(FILES ${COPY_FILES} + DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT dependencies) + +ENDIF() + +# Subdirectory CMakeLists.txt files should specify their own +# 'install' files. +# Including 'CPack' kicks everything off. +INCLUDE(InstallRequiredSystemLibraries) +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake + @ONLY + ) + +### +# Create pkgconfig files. +### + +IF(NOT DEFINED CMAKE_INSTALL_LIBDIR) + SET(CMAKE_INSTALL_LIBDIR lib) +ENDIF(NOT DEFINED CMAKE_INSTALL_LIBDIR) + +# Set +SET(prefix ${CMAKE_INSTALL_PREFIX}) +SET(exec_prefix ${CMAKE_INSTALL_PREFIX}) +SET(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) +SET(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) +SET(CC ${CMAKE_C_COMPILER}) + +# Process all dependency libraries and create a string +# used when parsing netcdf.pc.in + +FOREACH(_LIB ${ALL_TLL_LIBS}) + GET_FILENAME_COMPONENT(_LIB_NAME ${_LIB} NAME_WE) + STRING(REGEX REPLACE "^lib" "" _NAME ${_LIB_NAME}) + LIST(APPEND NC_LIBS "-l${_NAME}") + GET_FILENAME_COMPONENT(_LIB_DIR ${_LIB} PATH) + LIST(APPEND LINKFLAGS "-L${_LIB_DIR}") +ENDFOREACH() + +SET(NC_LIBS "-lnetcdf ${NC_LIBS}") + +STRING(REPLACE ";" " " NC_LIBS "${NC_LIBS}") +STRING(REPLACE "-lhdf5::hdf5-shared" "-lhdf5" NC_LIBS ${NC_LIBS}) +STRING(REPLACE "-lhdf5::hdf5_hl-shared" "-lhdf5_hl" NC_LIBS ${NC_LIBS}) +STRING(REPLACE "-lhdf5::hdf5-static" "-lhdf5" NC_LIBS ${NC_LIBS}) +STRING(REPLACE "-lhdf5::hdf5_hl-static" "-lhdf5_hl" NC_LIBS ${NC_LIBS}) + + +STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}") + +LIST(REMOVE_DUPLICATES NC_LIBS) +LIST(REMOVE_DUPLICATES LINKFLAGS) + +configure_file( + ${netCDF_SOURCE_DIR}/netcdf.pc.in + ${netCDF_BINARY_DIR}/netcdf.pc @ONLY) + + +IF(NOT IS_DIRECTORY ${netCDF_BINARY_DIR}/tmp) + FILE(MAKE_DIRECTORY ${netCDF_BINARY_DIR}/tmp) +ENDIF() + +configure_file("${netCDF_SOURCE_DIR}/nc-config.cmake.in" + "${netCDF_BINARY_DIR}/tmp/nc-config" @ONLY + NEWLINE_STYLE LF) +FILE(COPY "${netCDF_BINARY_DIR}/tmp/nc-config" + DESTINATION ${netCDF_BINARY_DIR}/ + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +INSTALL(FILES ${netCDF_BINARY_DIR}/netcdf.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT utilities) + +INSTALL(PROGRAMS ${netCDF_BINARY_DIR}/nc-config + DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT utilities) + +### +# End pkgconfig, nc-config file creation. +### + +## +# Print the configuration summary +## +print_conf_summary() + +# Enable Makedist files. +ADD_MAKEDIST() +ENABLE_MAKEDIST(README.md COPYRIGHT RELEASE_NOTES.md INSTALL INSTALL.cmake test_prog.c lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in cmake_uninstall.cmake.in netcdf-config-version.cmake.in netcdf-config.cmake.in FixBundle.cmake.in nc-config.cmake.in configure configure.ac install-sh config.h.in config.sub CTestConfig.cmake.in) + +##### +# Configure and print the libnetcdf.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_BINARY_DIR}") +SET(abs_top_srcdir "${CMAKE_SOURCE_DIR}") + +SET(CC_VERSION "${CMAKE_C_COMPILER}") + +# Build *FLAGS for libnetcdf.settings. +SET(CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}") +SET(CPPFLAGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_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 " "" TMP_NC_LIBS "${NC_LIBS}") +SET(LIBS "${TMP_NC_LIBS}") + +is_enabled(ENABLE_V2_API HAS_NC2) +is_enabled(ENABLE_NETCDF_4 HAS_NC4) +is_enabled(ENABLE_HDF4 HAS_HDF4) +is_enabled(ENABLE_NETCDF_4 HAS_HDF5) +is_enabled(USE_SZIP HAS_SZIP) +is_enabled(STATUS_PNETCDF HAS_PNETCDF) +is_enabled(STATUS_PARALLEL HAS_PARALLEL) +is_enabled(ENABLE_PARALLEL4 HAS_PARALLEL4) +is_enabled(ENABLE_DAP HAS_DAP) +is_enabled(ENABLE_DAP HAS_DAP2) +is_enabled(ENABLE_DAP4 HAS_DAP4) +is_enabled(ENABLE_DISKLESS HAS_DISKLESS) +is_enabled(USE_MMAP HAS_MMAP) +is_enabled(JNA HAS_JNA) +is_enabled(ENABLE_ZERO_LENGTH_COORD_BOUND RELAX_COORD_BOUND) +is_enabled(USE_CDF5 HAS_CDF5) +is_enabled(ENABLE_ERANGE_FILL HAS_ERANGE_FILL) + +# Generate file from template. +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf.settings.in" + "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.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.settings" + LIBNETCDF_SETTINGS) +MESSAGE(${LIBNETCDF_SETTINGS}) + +# Install libnetcdf.settings file into same location +# as the libraries. +INSTALL(FILES "${netCDF_BINARY_DIR}/libnetcdf.settings" + DESTINATION "${CMAKE_INSTALL_LIBDIR}" + COMPONENT libraries) + +##### +# End libnetcdf.settings section. +##### + +##### +# Create 'netcdf_meta.h' include file. +##### +configure_file( + ${netCDF_SOURCE_DIR}/include/netcdf_meta.h.in + ${netCDF_SOURCE_DIR}/include/netcdf_meta.h @ONLY) + +FILE(COPY ${netCDF_SOURCE_DIR}/include/netcdf_meta.h + DESTINATION ${netCDF_BINARY_DIR}/include/) + +##### +# Build test_common.sh +##### +SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_SOURCE_DIR}/test_common.in) +SET(TOPSRCDIR "${CMAKE_SOURCE_DIR}") +SET(TOPBUILDDIR "${CMAKE_BINARY_DIR}") +configure_file(${CMAKE_SOURCE_DIR}/test_common.in ${CMAKE_BINARY_DIR}/test_common.sh @ONLY NEWLINE_STYLE LF) + +##### +# Build nc_test4/findplugin.sh +##### +SET(ISCMAKE "1") +configure_file(${CMAKE_SOURCE_DIR}/nc_test4/findplugin.in ${CMAKE_BINARY_DIR}/nc_test4/findplugin.sh @ONLY NEWLINE_STYLE LF) + +IF(ENABLE_EXAMPLES) +configure_file(${CMAKE_SOURCE_DIR}/nc_test4/findplugin.in ${CMAKE_BINARY_DIR}/examples/C/findplugin.sh @ONLY NEWLINE_STYLE LF) +ENDIF() + +##### +# Build ncdap_test|dap4_test/findtestserver[4].c +##### +configure_file(${CMAKE_SOURCE_DIR}/ncdap_test/findtestserver.c.in ${CMAKE_SOURCE_DIR}/ncdap_test/findtestserver.c @ONLY NEWLINE_STYLE LF) +configure_file(${CMAKE_SOURCE_DIR}/ncdap_test/findtestserver.c.in ${CMAKE_SOURCE_DIR}/dap4_test/findtestserver4.c @ONLY NEWLINE_STYLE LF) + +#### +# Export files +#### + +# Create CMake package configuration files. With these, other packages using +# cmake should be able to find netcdf using find_package and find_library. +# The EXPORT call is paired with one in liblib. +set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/netCDF) + +install(EXPORT netCDFTargets + DESTINATION ${ConfigPackageLocation} + COMPONENT headers + ) + +include(CMakePackageConfigHelpers) +CONFIGURE_PACKAGE_CONFIG_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/netCDFConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" + INSTALL_DESTINATION "${ConfigPackageLocation}" + NO_CHECK_REQUIRED_COMPONENTS_MACRO + PATH_VARS + CMAKE_INSTALL_PREFIX + CMAKE_INSTALL_INCLUDEDIR + CMAKE_INSTALL_LIBDIR + ) + +INSTALL( + FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" + DESTINATION "${ConfigPackageLocation}" + COMPONENT headers + ) + +# Create export configuration +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" + VERSION ${netCDF_VERSION} + COMPATIBILITY SameMajorVersion + ) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" + DESTINATION ${ConfigPackageLocation} + COMPONENT headers + ) + +#### +# End export files +#### + + + +# CPack inclusion must come last. +# INCLUDE(CPack) +INCLUDE(CMakeInstallation.cmake) diff --git a/contrib/netcdf/4.4.1.1/COMPILE.cmake.txt b/contrib/netcdf/netcdf-c-4.6.2/COMPILE.cmake.txt similarity index 100% rename from contrib/netcdf/4.4.1.1/COMPILE.cmake.txt rename to contrib/netcdf/netcdf-c-4.6.2/COMPILE.cmake.txt diff --git a/contrib/netcdf/4.4.1.1/COPYRIGHT b/contrib/netcdf/netcdf-c-4.6.2/COPYRIGHT similarity index 99% rename from contrib/netcdf/4.4.1.1/COPYRIGHT rename to contrib/netcdf/netcdf-c-4.6.2/COPYRIGHT index a7df829b9e8..09943576642 100644 --- a/contrib/netcdf/4.4.1.1/COPYRIGHT +++ b/contrib/netcdf/netcdf-c-4.6.2/COPYRIGHT @@ -2,6 +2,7 @@ The NetCDF Copyright. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015, 2016 University Corporation for Atmospheric Research/Unidata. Portions of this software were developed by the Unidata Program at the diff --git a/contrib/netcdf/4.4.1.1/CTestConfig.cmake.in b/contrib/netcdf/netcdf-c-4.6.2/CTestConfig.cmake.in similarity index 100% rename from contrib/netcdf/4.4.1.1/CTestConfig.cmake.in rename to contrib/netcdf/netcdf-c-4.6.2/CTestConfig.cmake.in diff --git a/contrib/netcdf/4.4.1.1/CTestCustom.cmake b/contrib/netcdf/netcdf-c-4.6.2/CTestCustom.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/CTestCustom.cmake rename to contrib/netcdf/netcdf-c-4.6.2/CTestCustom.cmake diff --git a/contrib/netcdf/4.4.1.1/FixBundle.cmake.in b/contrib/netcdf/netcdf-c-4.6.2/FixBundle.cmake.in similarity index 100% rename from contrib/netcdf/4.4.1.1/FixBundle.cmake.in rename to contrib/netcdf/netcdf-c-4.6.2/FixBundle.cmake.in diff --git a/contrib/netcdf/4.4.1.1/INSTALL.md b/contrib/netcdf/netcdf-c-4.6.2/INSTALL.md similarity index 98% rename from contrib/netcdf/4.4.1.1/INSTALL.md rename to contrib/netcdf/netcdf-c-4.6.2/INSTALL.md index 9a96a08afd5..eb8eb008803 100644 --- a/contrib/netcdf/4.4.1.1/INSTALL.md +++ b/contrib/netcdf/netcdf-c-4.6.2/INSTALL.md @@ -184,7 +184,7 @@ Building netCDF with Classic Library Only {#build_classic} --------------------------------------- It is possible to build the netCDF C libraries and utilities so that -only the netCDF classic and 64-bit offset formats are supported, or +only the netCDF classic, 64-bit offset, and CDF-5 formats are supported, or the remote data access client is not built. (See \ref netcdf_format) for more information about the netCDF format variants. See the netCDF-DAP site @@ -307,8 +307,8 @@ $ make check install ~~~ -If parallel I/O access to netCDF classic and 64-bit offset files is -also needed, the parallel-netcdf library should also be installed. +If parallel I/O access to netCDF classic, 64-bit offset, CDF-5 files is +also needed, the PnetCDF library should also be installed. (Note: the previously recommended replacement pnetcdf.h should no longer be used.) Then configure netCDF with the @@ -358,8 +358,7 @@ Note: --disable prefix indicates that the option is normally enabled. --enable-netcdf4synonym for enable-netcdf-4 --enable-hdf4build netcdf-4 with HDF4 read capabilityHDF4, HDF5 and zlib --enable-hdf4-file-teststest ability to read HDF4 filesselected HDF4 files from Unidata ftp site ---enable-pnetcdfbuild netcdf-4 with parallel I/O for classic and - 64-bit offset files using parallel-netcdf +--enable-pnetcdfbuild netcdf-4 with parallel I/O for classic, 64-bit offset, and CDF-5 files using PnetCDF --enable-extra-example-testsRun extra example tests--enable-netcdf-4,GNU sed --enable-parallel-tests run extra parallel IO tests--enable-netcdf-4, parallel IO support --enable-loggingenable logging capability--enable-netcdf-4 diff --git a/contrib/netcdf/netcdf-c-4.6.2/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/Makefile.am new file mode 100644 index 00000000000..190ee19da2c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/Makefile.am @@ -0,0 +1,178 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2005-2018, see the COPYRIGHT file for more information. + +# This is the main automake file for netCDF. It builds the different +# netcdf directories. Not all directories are built, depending on the +# options selected during configure. + +# Ed Hartnett, Ward Fisher + +# This directory stores libtool macros, put there by aclocal. +ACLOCAL_AMFLAGS = -I m4 + +# These files get added to the distribution. +EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c lib_flags.am \ +cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in \ +cmake_uninstall.cmake.in FixBundle.cmake.in nc-config.cmake.in \ +RELEASE_NOTES.md CTestCustom.cmake CTestConfig.cmake.in \ +libnetcdf.settings.in netCDFConfig.cmake.in CMakeInstallation.cmake \ +test-driver-verbose test_common.in + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = netcdf.pc + +# Does the user want to build the V2 API? +if BUILD_V2 +V2_TEST = nctest +endif + +# Does the user want to build ncgen/ncdump? +if BUILD_UTILITIES +NCGEN3 = ncgen3 +NCGEN = ncgen +NCDUMP = ncdump +endif + +# Does the user want to build the examples? +if BUILD_EXAMPLES +EXAMPLES = examples +endif + +# Is the user building netCDF-4? +if USE_NETCDF4 +H5_TEST_DIR = h5_test +LIBSRC4_DIR = libsrc4 +LIBHDF5 = libhdf5 +NC_TEST4 = nc_test4 +endif + +# Build the dap2 client +if ENABLE_DAP +OCLIB = oc2 +DAP2 = libdap2 +NCDAP2TESTDIR = ncdap_test +endif + +if ENABLE_DAP4 +DAP4 = libdap4 +NCDAP4TESTDIR = dap4_test +endif #DAP4 + +# Build PnetCDF +if USE_PNETCDF +LIBSRCP = libsrcp +endif + +# Build HDF4 if desired. +if USE_HDF4 +HDF4_TEST_DIR = hdf4_test +LIBHDF4 = libhdf4 +endif + +# Optionally build plugins +if ENABLE_FILTER_TESTING +PLUGIN_DIR = plugins +endif + +# Define Test directories +if BUILD_TESTSETS +TESTDIRS = $(V2_TEST) nc_test $(NC_TEST4) $(HDF4_TEST_DIR) \ +$(NCDAP2TESTDIR) $(NCDAP4TESTDIR) +endif + +# This is the list of subdirs for which Makefiles will be constructed +# and run. ncgen must come before ncdump, because their tests +# depend on it. +SUBDIRS = include $(H5_TEST_DIR) libdispatch libsrc $(LIBSRC4_DIR) \ +$(LIBSRCP) $(LIBHDF4) $(LIBHDF5) $(OCLIB) $(DAP2) ${DAP4} liblib \ +$(NCGEN3) $(NCGEN) $(NCDUMP) ${PLUGIN_DIR} $(TESTDIRS) docs \ +$(EXAMPLES) + +# Remove these generated files, for a distclean. +DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings \ +test_common.sh + +# The nc-config script helps the user build programs with netCDF. +bin_SCRIPTS = nc-config + +# install libnetcdf.settings in lib directory. +settingsdir = $(libdir) +settings_DATA = libnetcdf.settings + +#### +# Provide an entry to rebuild all the m4 generated files +# List of files to create: WARNING leave off the extension +#### + +MM4= ./nc_test/test_put ./nc_test/test_get ./nc_test/test_write \ + ./nc_test/test_read ./libsrc/netcdf ./libsrc/putget ./libsrc/ncx \ + ./libsrc/t_ncxx ./libsrc/attr + +mm4:: + for m in ${MM4} ; do \ + b=`basename $$m` ; d=`dirname $$m`;\ + pushd $$d; m4 -s $${b}.m4 > $${b}.c ; popd; done + +##### +# If ENABLE_FORTRAN was turned on, +# we have new make targets, build-netcdf-fortran and +# install-netcdf-fortran. +##### + +### +# build-netcdf-fortran +### +if BUILD_FORTRAN + +build-netcdf-fortran: + echo "Downloading and Building NetCDF-Fortran" + chmod u+x $(abs_top_builddir)/postinstall.sh + sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build" + +### +# install-netcdf-fortran +### +install-netcdf-fortran: + echo "Installing NetCDF-Fortran" + chmod u+x $(abs_top_builddir)/postinstall.sh + sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install" + +endif + +check_nc_config: + $(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs` + ./test_prog + +install-data-hook: + + @echo '' + @echo '+-------------------------------------------------------------+' + @echo '| Congratulations! You have successfully installed netCDF! |' + @echo '| |' + @echo '| You can use script "nc-config" to find out the relevant |' + @echo '| compiler options to build your application. Enter |' + @echo '| |' + @echo '| nc-config --help |' + @echo '| |' + @echo '| for additional information. |' + @echo '| |' + @echo '| CAUTION: |' + @echo '| |' + @echo '| If you have not already run "make check", then we strongly |' + @echo '| recommend you do so. It does not take very long. |' + @echo '| |' + @echo '| Before using netCDF to store important data, test your |' + @echo '| build with "make check". |' + @echo '| |' + @echo '| NetCDF is tested nightly on many platforms at Unidata |' + @echo '| but your platform is probably different in some ways. |' + @echo '| |' + @echo '| If any tests fail, please see the netCDF web site: |' + @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 '| tools for use in geoscience education and research. |' + @echo '| http://www.unidata.ucar.edu |' + @echo '+-------------------------------------------------------------+' + @echo '' diff --git a/contrib/netcdf/netcdf-c-4.6.2/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/Makefile.in new file mode 100644 index 00000000000..3faa5ab9d28 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/Makefile.in @@ -0,0 +1,1213 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2005-2018, see the COPYRIGHT file for more information. + +# This is the main automake file for netCDF. It builds the different +# netcdf directories. Not all directories are built, depending on the +# options selected during configure. + +# Ed Hartnett, Ward Fisher + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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 = . +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = test_common.sh nc-config netcdf.pc \ + libnetcdf.settings postinstall.sh +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" \ + "$(DESTDIR)$(settingsdir)" +SCRIPTS = $(bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(pkgconfig_DATA) $(settings_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = include h5_test libdispatch libsrc libsrc4 libsrcp \ + libhdf4 libhdf5 oc2 libdap2 libdap4 liblib ncgen3 ncgen ncdump \ + plugins nctest nc_test nc_test4 hdf4_test ncdap_test dap4_test \ + docs examples +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/libnetcdf.settings.in $(srcdir)/nc-config.in \ + $(srcdir)/netcdf.pc.in $(srcdir)/postinstall.sh.in \ + $(srcdir)/test_common.in compile config.guess config.sub \ + install-sh ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz +GZIP_ENV = --best +DIST_TARGETS = dist-xz dist-bzip2 dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ + +# This directory stores libtool macros, put there by aclocal. +ACLOCAL_AMFLAGS = -I m4 + +# These files get added to the distribution. +EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c lib_flags.am \ +cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in \ +cmake_uninstall.cmake.in FixBundle.cmake.in nc-config.cmake.in \ +RELEASE_NOTES.md CTestCustom.cmake CTestConfig.cmake.in \ +libnetcdf.settings.in netCDFConfig.cmake.in CMakeInstallation.cmake \ +test-driver-verbose test_common.in + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = netcdf.pc + +# Does the user want to build the V2 API? +@BUILD_V2_TRUE@V2_TEST = nctest + +# Does the user want to build ncgen/ncdump? +@BUILD_UTILITIES_TRUE@NCGEN3 = ncgen3 +@BUILD_UTILITIES_TRUE@NCGEN = ncgen +@BUILD_UTILITIES_TRUE@NCDUMP = ncdump + +# Does the user want to build the examples? +@BUILD_EXAMPLES_TRUE@EXAMPLES = examples + +# Is the user building netCDF-4? +@USE_NETCDF4_TRUE@H5_TEST_DIR = h5_test +@USE_NETCDF4_TRUE@LIBSRC4_DIR = libsrc4 +@USE_NETCDF4_TRUE@LIBHDF5 = libhdf5 +@USE_NETCDF4_TRUE@NC_TEST4 = nc_test4 + +# Build the dap2 client +@ENABLE_DAP_TRUE@OCLIB = oc2 +@ENABLE_DAP_TRUE@DAP2 = libdap2 +@ENABLE_DAP_TRUE@NCDAP2TESTDIR = ncdap_test +@ENABLE_DAP4_TRUE@DAP4 = libdap4 +@ENABLE_DAP4_TRUE@NCDAP4TESTDIR = dap4_test + +# Build PnetCDF +@USE_PNETCDF_TRUE@LIBSRCP = libsrcp + +# Build HDF4 if desired. +@USE_HDF4_TRUE@HDF4_TEST_DIR = hdf4_test +@USE_HDF4_TRUE@LIBHDF4 = libhdf4 + +# Optionally build plugins +@ENABLE_FILTER_TESTING_TRUE@PLUGIN_DIR = plugins + +# Define Test directories +@BUILD_TESTSETS_TRUE@TESTDIRS = $(V2_TEST) nc_test $(NC_TEST4) $(HDF4_TEST_DIR) \ +@BUILD_TESTSETS_TRUE@$(NCDAP2TESTDIR) $(NCDAP4TESTDIR) + + +# This is the list of subdirs for which Makefiles will be constructed +# and run. ncgen must come before ncdump, because their tests +# depend on it. +SUBDIRS = include $(H5_TEST_DIR) libdispatch libsrc $(LIBSRC4_DIR) \ +$(LIBSRCP) $(LIBHDF4) $(LIBHDF5) $(OCLIB) $(DAP2) ${DAP4} liblib \ +$(NCGEN3) $(NCGEN) $(NCDUMP) ${PLUGIN_DIR} $(TESTDIRS) docs \ +$(EXAMPLES) + + +# Remove these generated files, for a distclean. +DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings \ +test_common.sh + + +# The nc-config script helps the user build programs with netCDF. +bin_SCRIPTS = nc-config + +# install libnetcdf.settings in lib directory. +settingsdir = $(libdir) +settings_DATA = libnetcdf.settings + +#### +# Provide an entry to rebuild all the m4 generated files +# List of files to create: WARNING leave off the extension +#### +MM4 = ./nc_test/test_put ./nc_test/test_get ./nc_test/test_write \ + ./nc_test/test_read ./libsrc/netcdf ./libsrc/putget ./libsrc/ncx \ + ./libsrc/t_ncxx ./libsrc/attr + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +test_common.sh: $(top_builddir)/config.status $(srcdir)/test_common.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +nc-config: $(top_builddir)/config.status $(srcdir)/nc-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +netcdf.pc: $(top_builddir)/config.status $(srcdir)/netcdf.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libnetcdf.settings: $(top_builddir)/config.status $(srcdir)/libnetcdf.settings.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +postinstall.sh: $(top_builddir)/config.status $(srcdir)/postinstall.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) +install-settingsDATA: $(settings_DATA) + @$(NORMAL_INSTALL) + @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(settingsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(settingsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(settingsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(settingsdir)" || exit $$?; \ + done + +uninstall-settingsDATA: + @$(NORMAL_UNINSTALL) + @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(settingsdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(SCRIPTS) $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(settingsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +check-valgrind: check-valgrind-recursive + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-recursive + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-recursive + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-recursive + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-recursive + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA install-settingsDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA \ + uninstall-settingsDATA + +.MAKE: $(am__recursive_targets) all install-am install-data-am \ + install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binSCRIPTS install-data \ + install-data-am install-data-hook install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-settingsDATA install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binSCRIPTS uninstall-pkgconfigDATA \ + uninstall-settingsDATA + +.PRECIOUS: Makefile + + +mm4:: + for m in ${MM4} ; do \ + b=`basename $$m` ; d=`dirname $$m`;\ + pushd $$d; m4 -s $${b}.m4 > $${b}.c ; popd; done + +##### +# If ENABLE_FORTRAN was turned on, +# we have new make targets, build-netcdf-fortran and +# install-netcdf-fortran. +##### + +### +# build-netcdf-fortran +### + +@BUILD_FORTRAN_TRUE@build-netcdf-fortran: +@BUILD_FORTRAN_TRUE@ echo "Downloading and Building NetCDF-Fortran" +@BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh +@BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build" + +### +# install-netcdf-fortran +### +@BUILD_FORTRAN_TRUE@install-netcdf-fortran: +@BUILD_FORTRAN_TRUE@ echo "Installing NetCDF-Fortran" +@BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh +@BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install" + +check_nc_config: + $(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs` + ./test_prog + +install-data-hook: + + @echo '' + @echo '+-------------------------------------------------------------+' + @echo '| Congratulations! You have successfully installed netCDF! |' + @echo '| |' + @echo '| You can use script "nc-config" to find out the relevant |' + @echo '| compiler options to build your application. Enter |' + @echo '| |' + @echo '| nc-config --help |' + @echo '| |' + @echo '| for additional information. |' + @echo '| |' + @echo '| CAUTION: |' + @echo '| |' + @echo '| If you have not already run "make check", then we strongly |' + @echo '| recommend you do so. It does not take very long. |' + @echo '| |' + @echo '| Before using netCDF to store important data, test your |' + @echo '| build with "make check". |' + @echo '| |' + @echo '| NetCDF is tested nightly on many platforms at Unidata |' + @echo '| but your platform is probably different in some ways. |' + @echo '| |' + @echo '| If any tests fail, please see the netCDF web site: |' + @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 '| tools for use in geoscience education and research. |' + @echo '| http://www.unidata.ucar.edu |' + @echo '+-------------------------------------------------------------+' + @echo '' + +# 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/contrib/netcdf/4.4.1.1/README.md b/contrib/netcdf/netcdf-c-4.6.2/README.md similarity index 100% rename from contrib/netcdf/4.4.1.1/README.md rename to contrib/netcdf/netcdf-c-4.6.2/README.md diff --git a/contrib/netcdf/4.4.1.1/RELEASE_NOTES.md b/contrib/netcdf/netcdf-c-4.6.2/RELEASE_NOTES.md old mode 100755 new mode 100644 similarity index 88% rename from contrib/netcdf/4.4.1.1/RELEASE_NOTES.md rename to contrib/netcdf/netcdf-c-4.6.2/RELEASE_NOTES.md index 745e8474cb7..e7f76f58588 --- a/contrib/netcdf/4.4.1.1/RELEASE_NOTES.md +++ b/contrib/netcdf/netcdf-c-4.6.2/RELEASE_NOTES.md @@ -5,7 +5,95 @@ Release Notes {#RELEASE_NOTES} This file contains a high-level description of this package's evolution. Releases are in reverse chronological order (most recent first). Note that, as of netcdf 4.2, the `netcdf-c++` and `netcdf-fortran` libraries have been separated into their own libraries. -> Note: The combination of netCDF-C library versions earlier than 4.4.1 and libhdf5 1.10.0+ should be avoided, as they will result in binary files not readable by systems using earlier libhdf5 versions. +## 4.6.2 - November 19, 2018 + +* [Enhancement] Lazy att read - only read atts when user requests one of them. See [GitHub #857](https://github.com/Unidata/netcdf-c/issues/857). +* [Enhancement] Fast global att read - when global atts are read, they are read much more quickly. See [GitHub #857](https://github.com/Unidata/netcdf-c/issues/857). + +## 4.6.2-rc2 November 1, 2018 + + +* [Enhancement] Add nccopy command options for per-variable chunk sizing, and minimum chunk size. See [GitHub #1087](https://github.com/Unidata/netcdf-c/pull/1087). +* [Bug Fix] Fix nccopy handling of user specified chunk sizes. See [GitHub #725](https://github.com/Unidata/netcdf-c/issues/725),[#1087](https://github.com/Unidata/netcdf-c/issues/1087). +* [Bug Fix] Avoid limit on number of times a netCDF4 attribute can be updated. Not a complete fix for the HDF5 "maximum creation order" problem, but should greatly reduce occurrences in many real-world cases. See [GitHub #350](https://github.com/Unidata/netcdf-c/issues/350). +* [Bug Fix] The use of NC_DISKLESS has been modified to make it cleaner. This adds a new flag called NC_PERSIST that takes over the now obsolete NC_MPIPOSIX. +* [Obsolete] Obsolete the MPIPOSIX flag. +* [Bug Fix] When using filters with HDF5 1.10.x or later, it is necessary to utilize the HDF5 replacements for malloc, realloc, and free in the filter code. + +## 4.6.2-rc1 - September 19, 2018 + +* [Enhancement] Create a new version of _NCProperties provenance attribute. This version (version 2) supports arbitrary key-value pairs. It is the default when new files are created. Version 1 continues to be accepted. +* [Enhancement] Allow user to set http read buffersize for DAP2 and DAP4 using the tag HTTP.READ.BUFFERSIZE in the .daprc file. +* [Enhancement] Allow user to set http keepalive for DAP2 and DAP4 using the tag HTTP.KEEPALIVE in the .daprc file (see the OPeNDAP documentation for details). +* [Enhancement] Support DAP4 remote tests using a new remote test server locatedon the Unidata JetStream project. +* [Enhancement] Improved the performance of the nc_get/put_vars operations by using the equivalent slab capabilities of hdf5. Result is a significant speedup of these operations. See [GitHub #1001](https://github.com/Unidata/netcdf-c/pull/1001) for more information. +* [Enhancement] Expanded the capabilities of `NC_INMEMORY` to support writing and accessing the final modified memory. See [GitHub #879](https://github.com/Unidata/netcdf-c/pull/879) for more information. +* [Enhancement] Made CDF5 support enabled by default. See [Github #931](https://github.com/Unidata/netcdf-c/issues/931) for more information. +* [Bug Fix] Corrected a number of memory issues identified in `ncgen`. See [GitHub #558 for more information](https://github.com/Unidata/netcdf-c/pull/558). + +## 4.6.1 - March 19, 2018 + +* [Bug Fix] Corrected an issue which could result in a dap4 failure. See [Github #888](https://github.com/Unidata/netcdf-c/pull/888) for more information. +* [Bug Fix][Enhancement] Allow `nccopy` to control output filter suppresion. See [Github #894](https://github.com/Unidata/netcdf-c/pull/894) for more information. +* [Enhancement] Reverted some new behaviors that, while in line with the netCDF specification, broke existing workflows. See [Github #843](https://github.com/Unidata/netcdf-c/issues/843) for more information. +* [Bug Fix] Improved support for CRT builds with Visual Studio, improves zlib detection in hdf5 library. See [Github #853](https://github.com/Unidata/netcdf-c/pull/853) for more information. +* [Enhancement][Internal] Moved HDF4 into a distinct dispatch layer. See [Github #849](https://github.com/Unidata/netcdf-c/pull/849) for more information. + +## 4.6.0 - January 24, 2018 +* [Enhancement] Full support for using HDF5 dynamic filters, both for reading and writing. See the file docs/filters.md. +* [Enhancement] Added an option to enable strict null-byte padding for headers; this padding was specified in the spec but was not enforced. Enabling this option will allow you to check your files, as it will return an E_NULLPAD error. It is possible for these files to have been written by older versions of libnetcdf. There is no effective problem caused by this lack of null padding, so enabling these options is informational only. The options for `configure` and `cmake` are `--enable-strict-null-byte-header-padding` and `-DENABLE_STRICT_NULL_BYTE_HEADER_PADDING`, respectively. See [Github #657](https://github.com/Unidata/netcdf-c/issues/657) for more information. +* [Enhancement] Reverted behavior/handling of out-of-range attribute values to pre-4.5.0 default. See [Github #512](https://github.com/Unidata/netcdf-c/issues/512) for more information. +* [Bug] Fixed error in tst_parallel2.c. See [Github #545](https://github.com/Unidata/netcdf-c/issues/545) for more information. +* [Bug] Fixed handling of corrupt files + proper offset handling for hdf5 files. See [Github #552](https://github.com/Unidata/netcdf-c/issues/552) for more information. +* [Bug] Corrected a memory overflow in `tst_h_dimscales`, see [Github #511](https://github.com/Unidata/netcdf-c/issues/511), [Github #505](https://github.com/Unidata/netcdf-c/issues/505), [Github #363](https://github.com/Unidata/netcdf-c/issues/363) and [Github #244](https://github.com/Unidata/netcdf-c/issues/244) for more information. + +## 4.5.0 - October 20, 2017 + +* Corrected an issue which could potential result in a hang while using parallel file I/O. See [Github #449](https://github.com/Unidata/netcdf-c/pull/449) for more information. +* Addressed an issue with `ncdump` not properly handling dates on a 366 day calendar. See [GitHub #359](https://github.com/Unidata/netcdf-c/issues/359) for more information. + +### 4.5.0-rc3 - September 29, 2017 + +* [Update] Due to ongoing issues, native CDF5 support has been disabled by **default**. You can use the options mentioned below (`--enable-cdf5` or `-DENABLE_CDF5=TRUE` for `configure` or `cmake`, respectively). Just be aware that for the time being, Reading/Writing CDF5 files on 32-bit platforms may result in unexpected behavior when using extremely large variables. For 32-bit platforms it is best to continue using `NC_FORMAT_64BIT_OFFSET`. +* [Bug] Corrected an issue where older versions of curl might fail. See [GitHub #487](https://github.com/Unidata/netcdf-c/issues/487) for more information. +* [Enhancement] Added options to enable/disable `CDF5` support at configure time for autotools and cmake-based builds. The options are `--enable/disable-cdf5` and `ENABLE_CDF5`, respectively. See [Github #484](https://github.com/Unidata/netcdf-c/issues/484) for more information. +* [Bug Fix] Corrected an issue when subsetting a netcdf3 file via `nccopy -v/-V`. See [Github #425](https://github.com/Unidata/netcdf-c/issues/425) and [Github #463](https://github.com/Unidata/netcdf-c/issues/463) for more information. +* [Bug Fix] Corrected `--has-dap` and `--has-dap4` output for cmake-based builds. See [GitHub #473](https://github.com/Unidata/netcdf-c/pull/473) for more information. +* [Bug Fix] Corrected an issue where `NC_64BIT_DATA` files were being read incorrectly by ncdump, despite the data having been written correctly. See [GitHub #457](https://github.com/Unidata/netcdf-c/issues/457) for more information. +* [Bug Fix] Corrected a potential stack buffer overflow. See [GitHub #450](https://github.com/Unidata/netcdf-c/pull/450) for more information. + +### 4.5.0-rc2 - August 7, 2017 + +* [Bug Fix] Addressed an issue with how cmake was implementing large file support on 32-bit systems. See [GitHub #385](https://github.com/Unidata/netcdf-c/issues/385) for more information. +* [Bug Fix] Addressed an issue where ncgen would not respect keyword case. See [GitHub #310](https://github.com/Unidata/netcdf-c/issues/310) for more information. + +### 4.5.0-rc1 - June 5, 2017 + +* [Enhancement] DAP4 is now included. Since dap2 is the default for urls, dap4 must be specified by +(1) using "dap4:" as the url protocol, or +(2) appending "#protocol=dap4" to the end of the url, or +(3) appending "#dap4" to the end of the url +Note that dap4 is enabled by default but remote-testing is +disbled until the testserver situation is resolved. +* [Enhancement] The remote testing server can now be specified with the `--with-testserver` option to ./configure. +* [Enhancement] Modified netCDF4 to use ASCII for NC_CHAR. See [Github Pull request #316](https://github.com/Unidata/netcdf-c/pull/316) for more information. +* [Bug Fix] Corrected an error with how dimsizes might be read. See [Github #410](https://github.com/unidata/netcdf-c/issues/410) for more information. +* [Bug Fix] Corrected an issue where 'make check' would fail if 'make' or 'make all' had not run first. See [Github #339](https://github.com/Unidata/netcdf-c/issues/339) for more information. +* [Bug Fix] Corrected an issue on Windows with Large file tests. See [Github #385](https://github.com/Unidata/netcdf-c/issues/385]) for more information. +* [Bug Fix] Corrected an issue with diskless file access, see [Pull Request #400](https://github.com/Unidata/netcdf-c/issues/400) and [Pull Request #403](https://github.com/Unidata/netcdf-c/issues/403) for more information. +* [Upgrade] The bash based test scripts have been upgraded to use a common test_common.sh include file that isolates build specific information. +* [Upgrade] The bash based test scripts have been upgraded to use a common test_common.sh include file that isolates build specific information. +* [Refactor] the oc2 library is no longer independent of the main netcdf-c library. For example, it now uses ncuri, nclist, and ncbytes instead of its homegrown equivalents. +* [Bug Fix] `NC_EGLOBAL` is now properly returned when attempting to set a global `_FillValue` attribute. See [GitHub #388](https://github.com/Unidata/netcdf-c/issues/388) and [GitHub #389](https://github.com/Unidata/netcdf-c/issues/389) for more information. +* [Bug Fix] Corrected an issue where data loss would occur when `_FillValue` was mistakenly allowed to be redefined. See [Github #390](https://github.com/Unidata/netcdf-c/issues/390), [GitHub #387](https://github.com/Unidata/netcdf-c/pull/387) for more information. +* [Upgrade][Bug] Corrected an issue regarding how "orphaned" DAS attributes were handled. See [GitHub #376](https://github.com/Unidata/netcdf-c/pull/376) for more information. +* [Upgrade] Update utf8proc.[ch] to use the version now maintained by the Julia Language project (https://github.com/JuliaLang/utf8proc/blob/master/LICENSE.md). +* [Bug] Addressed conversion problem with Windows sscanf. This primarily affected some OPeNDAP URLs on Windows. See [GitHub #365](https://github.com/Unidata/netcdf-c/issues/365) and [GitHub #366](https://github.com/Unidata/netcdf-c/issues/366) for more information. +* [Enhancement] Added support for HDF5 collective metadata operations when available. Patch submitted by Greg Sjaardema, see [Pull request #335](https://github.com/Unidata/netcdf-c/pull/335) for more information. +* [Bug] Addressed a potential type punning issue. See [GitHub #351](https://github.com/Unidata/netcdf-c/issues/351) for more information. +* [Bug] Addressed an issue where netCDF wouldn't build on Windows systems using MSVC 2012. See [GitHub #304](https://github.com/Unidata/netcdf-c/issues/304) for more information. +* [Bug] Fixed an issue related to potential type punning, see [GitHub #344](https://github.com/Unidata/netcdf-c/issues/344) for more information. +* [Enhancement] Incorporated an enhancement provided by Greg Sjaardema, which may improve read/write times for some complex files. Basically, linked lists were replaced in some locations where it was safe to use an array/table. See [Pull request #328](https://github.com/Unidata/netcdf-c/pull/328) for more information. ## 4.4.1.1 - November 21, 2016 @@ -90,7 +178,7 @@ This file contains a high-level description of this package's evolution. Release This cascaded into a number of other changes. - 1. Renamed libsrcp5 -> libsrcp because pnetcdf can do parallel io for CDF-1, CDF-2 and CDF-5, not just CDF-5. + 1. Renamed libsrcp5 -> libsrcp because PnetCDF can do parallel io for CDF-1, CDF-2 and CDF-5, not just CDF-5. 2. Given #1, then the NC_PNETCDF mode flag becomes a subset of NC_MPIIO, so made NC_PNETCDF an alias for NC_MPII. 3. NC_FORMAT_64BIT is now deprecated. Use NC_FORMAT_64BIT_OFFSET. @@ -206,7 +294,7 @@ Example Work Flow from netcdf-c source directory: * Added an explicit check in the build systems (autotools, cmake) for the CURL-related option `CURLOPT_CHUNK_BGN_FUNCTION`. This option was introduced in libcurl version `7.21.0`. On installations which require libcurl and have this version, `CURLOPT_CHUNK_BGN_FUNCTION` will be available. Otherwise, it will not. -* The pnetcdf support was not properly being used to provide mpi parallel io for netcdf-3 classic files. The wrong dispatch table was being used. [NCF-319](https://bugtracking.unidata.ucar.edu/browse/NCF-319) +* The PnetCDF support was not properly being used to provide mpi parallel io for netcdf-3 classic files. The wrong dispatch table was being used. [NCF-319](https://bugtracking.unidata.ucar.edu/browse/NCF-319) * In nccopy utility, provided proper default for unlimited dimension in chunk-size specification instead of requiring explicit chunk size. Added associated test. [NCF-321](https://bugtracking.unidata.ucar.edu/browse/NCF-321) @@ -534,7 +622,7 @@ subgroup getting the wrong dimension IDs for its dimensions. [NCF-247] [NCF-247]: https://bugtracking.unidata.ucar.edu/browse/NCF-247 * Fixed bug with incorrect fixed-size variable offsets in header getting -written when schema changed for files created by parallel-netcdf. Thanks +written when schema changed for files created by PnetCDF Thanks to Wei-keng Liao for developing and contributing the fix. [NCF-234] [NCF-234]: https://bugtracking.unidata.ucar.edu/browse/NCF-234 @@ -572,7 +660,7 @@ options for specifying which groups or variables are to be copied. [NCF-216]: https://bugtracking.unidata.ucar.edu/browse/NCF-216 -* Merged in parallel-netcdf bugs fixes from Greg Sjaardema. [NCF-214] +* Merged in PnetCDF bugs fixes from Greg Sjaardema. [NCF-214] [NCF-214]: https://bugtracking.unidata.ucar.edu/browse/NCF-214 @@ -1115,7 +1203,7 @@ definitions in the DAS, but they will be ignored. * Many documentation fixes. -* Added capability to use the parallel-netcdf (a.k.a. pnetcdf) library to +* Added capability to use the PnetCDF library to perform parallel I/O on classic and 32-bit offset files. Use the NC\_PNETCDF mode flag to get parallel I/O for non-netcdf-4 files. diff --git a/contrib/netcdf/netcdf-c-4.6.2/acinclude.m4 b/contrib/netcdf/netcdf-c-4.6.2/acinclude.m4 new file mode 100644 index 00000000000..315eeec1f26 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/acinclude.m4 @@ -0,0 +1,386 @@ +dnl UD macros for netcdf configure + +dnl +dnl UD_CHECK_IEEE +dnl If the 'double' is not an IEEE double +dnl or the 'float' is not and IEEE single, +dnl define NO_IEEE_FLOAT +dnl +AC_DEFUN([UD_CHECK_IEEE], +[ +AC_MSG_CHECKING(for IEEE floating point format) +AC_TRY_RUN([#ifndef NO_FLOAT_H +#include +#endif + +#define EXIT_NOTIEEE 1 +#define EXIT_MAYBEIEEE 0 + +int +main() +{ +#if defined(FLT_RADIX) && FLT_RADIX != 2 + return EXIT_NOTIEEE; +#elif defined(DBL_MAX_EXP) && DBL_MAX_EXP != 1024 + return EXIT_NOTIEEE; +#elif defined(DBL_MANT_DIG) && DBL_MANT_DIG != 53 + return EXIT_NOTIEEE; +#elif defined(FLT_MAX_EXP) && !(FLT_MAX_EXP == 1024 || FLT_MAX_EXP == 128) + return EXIT_NOTIEEE; +#elif defined(FLT_MANT_DIG) && !(FLT_MANT_DIG == 53 || FLT_MANT_DIG == 24) + return EXIT_NOTIEEE; +#else + /* (assuming eight bit char) */ + if(sizeof(double) != 8) + return EXIT_NOTIEEE; + if(!(sizeof(float) == 4 || sizeof(float) == 8)) + return EXIT_NOTIEEE; + + return EXIT_MAYBEIEEE; +#endif +}],ac_cv_c_ieeefloat=yes, ac_cv_c_ieeefloat=no, :) +AC_MSG_RESULT($ac_cv_c_ieeefloat) +if test "$ac_cv_c_ieeefloat" = no; then + AC_DEFINE([NO_IEEE_FLOAT], [], [no IEEE float on this platform]) +fi +]) + + +dnl +dnl Print which compilers are going to be used, the flags, and their +dnl locations. This is all to assist in debugging, and help with +dnl support questions. +dnl +AC_DEFUN([UD_DISPLAY_RESULTS], +[ +AC_MSG_CHECKING(CPPFLAGS) +AC_MSG_RESULT($CPPFLAGS) +AC_MSG_CHECKING(CC CFLAGS) +AC_MSG_RESULT($CC $CFLAGS) +ud_type_cc=`type $CC` +AC_MSG_CHECKING(type $CC) +AC_MSG_RESULT($ud_type_cc) + +AC_MSG_CHECKING(CXX) +if test -n "$CXX"; then + AC_MSG_RESULT($CXX) + AC_MSG_CHECKING(CXXFLAGS) + AC_MSG_RESULT($CXXFLAGS) + ud_type_CXX=`type $CXX` + AC_MSG_CHECKING(type $CXX) + AC_MSG_RESULT($ud_type_CXX) +else + AC_MSG_RESULT(unset) +fi + +AC_MSG_CHECKING(FC) +if test -n "$FC"; then + AC_MSG_RESULT($FC) + AC_MSG_CHECKING(FFLAGS) + AC_MSG_RESULT($FFLAGS) + ud_type_fc=`type $FC` + AC_MSG_CHECKING(type $FC) + AC_MSG_RESULT($ud_type_fc) +else + AC_MSG_RESULT(unset) +fi + +AC_MSG_CHECKING(F90) +if test -n "$F90"; then + AC_MSG_RESULT($F90) + AC_MSG_CHECKING(FCFLAGS) + AC_MSG_RESULT($FCFLAGS) + ud_type_F90=`type $F90` + AC_MSG_CHECKING(type $F90) + AC_MSG_RESULT($ud_type_F90) +else + AC_MSG_RESULT(unset) +fi + +AC_MSG_CHECKING(AR) +if test -n "$AR"; then + AC_MSG_RESULT($AR) + AC_MSG_CHECKING(AR_FLAGS) + AC_MSG_RESULT($AR_FLAGS) + ud_type_AR=`type $AR` + AC_MSG_CHECKING(type $AR) + AC_MSG_RESULT($ud_type_AR) +else + AC_MSG_RESULT(unset) +fi + +AC_MSG_CHECKING(NM) +if test -n "$NM"; then + AC_MSG_RESULT($NM) + AC_MSG_CHECKING(NMFLAGS) + AC_MSG_RESULT($NMFLAGS) +# ud_type_NM=`type $NM` +# AC_MSG_CHECKING(type $NM) +# AC_MSG_RESULT($ud_type_NM) +else + AC_MSG_RESULT(unset) +fi + +]) + +dnl Find the full path of a header file +dnl +dnl UD_CHECK_HEADER_PATH(file, [action-if-found], [action-if-not-found]) +dnl Example: +dnl UD_CHECK_HEADER_PATH([math.h]) +dnl AC_MSG_NOTICE([ac_cv_header_path_math_h=$ac_cv_header_path_math_h]) +dnl +dnl +AC_DEFUN([UD_CHECK_HEADER_PATH], +[ + AS_VAR_PUSHDEF([ac_Path], [ac_cv_header_path_$1])dnl + AC_CACHE_CHECK( + [for full path of header file $1], [ac_Path], + [AC_PREPROC_IFELSE( + [AC_LANG_PROGRAM([[#include <$1>]])], + [AS_VAR_SET([ac_Path], [`sed -n '/\.h"/s/.*"\(.*\)".*/\1/p' conftest.i | grep -m 1 $1`])], + [AC_MSG_RESULT([not found])] + )]) + AS_VAR_SET_IF([ac_Path], [$2], [$3]) + AS_VAR_POPDEF([ac_Path])dnl +]) + +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_VALGRIND_DFLT(memcheck|helgrind|drd|sgcheck, on|off) +# AX_VALGRIND_CHECK() +# +# DESCRIPTION +# +# AX_VALGRIND_CHECK checks whether Valgrind is present and, if so, allows +# running `make check` under a variety of Valgrind tools to check for +# memory and threading errors. +# +# Defines VALGRIND_CHECK_RULES which should be substituted in your +# Makefile; and $enable_valgrind which can be used in subsequent configure +# output. VALGRIND_ENABLED is defined and substituted, and corresponds to +# the value of the --enable-valgrind option, which defaults to being +# enabled if Valgrind is installed and disabled otherwise. Individual +# Valgrind tools can be disabled via --disable-valgrind-, the +# default is configurable via the AX_VALGRIND_DFLT command or is to use +# all commands not disabled via AX_VALGRIND_DFLT. All AX_VALGRIND_DFLT +# calls must be made before the call to AX_VALGRIND_CHECK. +# +# If unit tests are written using a shell script and automake's +# LOG_COMPILER system, the $(VALGRIND) variable can be used within the +# shell scripts to enable Valgrind, as described here: +# +# https://www.gnu.org/software/gnulib/manual/html_node/Running-self_002dtests-under-valgrind.html +# +# Usage example: +# +# configure.ac: +# +# AX_VALGRIND_DFLT([sgcheck], [off]) +# AX_VALGRIND_CHECK +# +# in each Makefile.am with tests: +# +# @VALGRIND_CHECK_RULES@ +# VALGRIND_SUPPRESSIONS_FILES = my-project.supp +# EXTRA_DIST = my-project.supp +# +# This results in a "check-valgrind" rule being added. Running `make +# check-valgrind` in that directory will recursively run the module's test +# suite (`make check`) once for each of the available Valgrind tools (out +# of memcheck, helgrind and drd) while the sgcheck will be skipped unless +# enabled again on the commandline with --enable-valgrind-sgcheck. The +# results for each check will be output to test-suite-$toolname.log. The +# target will succeed if there are zero errors and fail otherwise. +# +# Alternatively, a "check-valgrind-$TOOL" rule will be added, for $TOOL in +# memcheck, helgrind, drd and sgcheck. These are useful because often only +# some of those tools can be ran cleanly on a codebase. +# +# The macro supports running with and without libtool. +# +# LICENSE +# +# Copyright (c) 2014, 2015, 2016 Philip Withnall +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +# serial-17 + +dnl Configured tools +m4_define([valgrind_tool_list], [[memcheck], [helgrind], [drd], [sgcheck]]) +m4_set_add_all([valgrind_exp_tool_set], [sgcheck]) +m4_foreach([vgtool], [valgrind_tool_list], + [m4_define([en_dflt_valgrind_]vgtool, [on])]) + +AC_DEFUN([AX_VALGRIND_DFLT],[ + m4_define([en_dflt_valgrind_$1], [$2]) +])dnl + +AM_EXTRA_RECURSIVE_TARGETS([check-valgrind]) +m4_foreach([vgtool], [valgrind_tool_list], + [AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)]) + +AC_DEFUN([AX_VALGRIND_CHECK],[ + dnl Check for --enable-valgrind + AC_ARG_ENABLE([valgrind], + [AS_HELP_STRING([--enable-valgrind], [Whether to enable Valgrind on the unit tests])], + [enable_valgrind=$enableval],[enable_valgrind=]) + + AS_IF([test "$enable_valgrind" != "no"],[ + # Check for Valgrind. + AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind]) + AS_IF([test "$VALGRIND" = ""],[ + AS_IF([test "$enable_valgrind" = "yes"],[ + AC_MSG_ERROR([Could not find valgrind; either install it or reconfigure with --disable-valgrind]) + ],[ + enable_valgrind=no + ]) + ],[ + enable_valgrind=yes + ]) + ]) + + AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"]) + AC_SUBST([VALGRIND_ENABLED],[$enable_valgrind]) + + # Check for Valgrind tools we care about. + [valgrind_enabled_tools=] + m4_foreach([vgtool],[valgrind_tool_list],[ + AC_ARG_ENABLE([valgrind-]vgtool, + m4_if(m4_defn([en_dflt_valgrind_]vgtool),[off],dnl +[AS_HELP_STRING([--enable-valgrind-]vgtool, [Whether to use ]vgtool[ during the Valgrind tests])],dnl +[AS_HELP_STRING([--disable-valgrind-]vgtool, [Whether to skip ]vgtool[ during the Valgrind tests])]), + [enable_valgrind_]vgtool[=$enableval], + [enable_valgrind_]vgtool[=]) + AS_IF([test "$enable_valgrind" = "no"],[ + enable_valgrind_]vgtool[=no], + [test "$enable_valgrind_]vgtool[" ]dnl +m4_if(m4_defn([en_dflt_valgrind_]vgtool), [off], [= "yes"], [!= "no"]),[ + AC_CACHE_CHECK([for Valgrind tool ]vgtool, + [ax_cv_valgrind_tool_]vgtool,[ + ax_cv_valgrind_tool_]vgtool[=no + m4_set_contains([valgrind_exp_tool_set],vgtool, + [m4_define([vgtoolx],[exp-]vgtool)], + [m4_define([vgtoolx],vgtool)]) + AS_IF([`$VALGRIND --tool=]vgtoolx[ --help >/dev/null 2>&1`],[ + ax_cv_valgrind_tool_]vgtool[=yes + ]) + ]) + AS_IF([test "$ax_cv_valgrind_tool_]vgtool[" = "no"],[ + AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[ + AC_MSG_ERROR([Valgrind does not support ]vgtool[; reconfigure with --disable-valgrind-]vgtool) + ],[ + enable_valgrind_]vgtool[=no + ]) + ],[ + enable_valgrind_]vgtool[=yes + ]) + ]) + AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[ + valgrind_enabled_tools="$valgrind_enabled_tools ]m4_bpatsubst(vgtool,[^exp-])[" + ]) + AC_SUBST([ENABLE_VALGRIND_]vgtool,[$enable_valgrind_]vgtool) + ]) + AC_SUBST([valgrind_tools],["]m4_join([ ], valgrind_tool_list)["]) + AC_SUBST([valgrind_enabled_tools],[$valgrind_enabled_tools]) + +[VALGRIND_CHECK_RULES=' +# Valgrind check +# +# Optional: +# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions +# files to load. (Default: empty) +# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools. +# (Default: --num-callers=30) +# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of: +# memcheck, helgrind, drd, sgcheck). (Default: various) + +# Optional variables +VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES)) +VALGRIND_FLAGS ?= --num-callers=30 +VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no +VALGRIND_helgrind_FLAGS ?= --history-level=approx +VALGRIND_drd_FLAGS ?= +VALGRIND_sgcheck_FLAGS ?= + +# Internal use +valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools))) + +valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS) +valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS) +valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS) +valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS) + +valgrind_quiet = $(valgrind_quiet_$(V)) +valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY)) +valgrind_quiet_0 = --quiet +valgrind_v_use = $(valgrind_v_use_$(V)) +valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY)) +valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%-am,%,$''@):; + +# Support running with and without libtool. +ifneq ($(LIBTOOL),) +valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute +else +valgrind_lt = +endif + +# Use recursive makes in order to ignore errors during check +check-valgrind-am: +ifeq ($(VALGRIND_ENABLED),yes) + $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k \ + $(foreach tool, $(valgrind_enabled_tools), check-valgrind-$(tool)) +else + @echo "Need to reconfigure with --enable-valgrind" +endif + +# Valgrind running +VALGRIND_TESTS_ENVIRONMENT = \ + $(TESTS_ENVIRONMENT) \ + env VALGRIND=$(VALGRIND) \ + G_SLICE=always-malloc,debug-blocks \ + G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly + +VALGRIND_LOG_COMPILER = \ + $(valgrind_lt) \ + $(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS) + +define valgrind_tool_rule +check-valgrind-$(1)-am: +ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes) +ifneq ($$(TESTS),) + $$(valgrind_v_use)$$(MAKE) check-TESTS \ + TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \ + LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \ + LOG_FLAGS="$$(valgrind_$(1)_flags)" \ + TEST_SUITE_LOG=test-suite-$(1).log +endif +else ifeq ($$(VALGRIND_ENABLED),yes) + @echo "Need to reconfigure with --enable-valgrind-$(1)" +else + @echo "Need to reconfigure with --enable-valgrind" +endif +endef + +$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool)))) + +A''M_DISTCHECK_CONFIGURE_FLAGS ?= +A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind + +MOSTLYCLEANFILES ?= +MOSTLYCLEANFILES += $(valgrind_log_files) + +.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools)) +'] + + AC_SUBST([VALGRIND_CHECK_RULES]) + m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([VALGRIND_CHECK_RULES])]) +]) diff --git a/contrib/netcdf/netcdf-c-4.6.2/aclocal.m4 b/contrib/netcdf/netcdf-c-4.6.2/aclocal.m4 new file mode 100644 index 00000000000..2d5b3e761b8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/aclocal.m4 @@ -0,0 +1,896 @@ +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +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.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# AM_EXTRA_RECURSIVE_TARGETS -*- Autoconf -*- + +# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_EXTRA_RECURSIVE_TARGETS +# -------------------------- +# Define the list of user recursive targets. This macro exists only to +# be traced by Automake, which will ensure that a proper definition of +# user-defined recursive targets (and associated rules) is propagated +# into all the generated Makefiles. +# TODO: We should really reject non-literal arguments here... +AC_DEFUN([AM_EXTRA_RECURSIVE_TARGETS], []) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). 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: + +Please tell bug-automake@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: . + +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 +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +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@_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 +] +) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +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])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([acinclude.m4]) diff --git a/contrib/netcdf/4.4.1.1/cmake/ConfigUser.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/ConfigUser.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/ConfigUser.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/ConfigUser.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/FindHDF4.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindHDF4.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/FindHDF4.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindHDF4.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/FindMakeDist.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindMakeDist.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/FindMakeDist.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindMakeDist.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/FindSZIP.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindSZIP.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/FindSZIP.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindSZIP.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/FindXDR.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindXDR.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/FindXDR.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindXDR.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/FindZLIB.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindZLIB.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/FindZLIB.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/FindZLIB.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake/modules/windows/FindHDF5.cmake b/contrib/netcdf/netcdf-c-4.6.2/cmake/modules/windows/FindHDF5.cmake similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake/modules/windows/FindHDF5.cmake rename to contrib/netcdf/netcdf-c-4.6.2/cmake/modules/windows/FindHDF5.cmake diff --git a/contrib/netcdf/4.4.1.1/cmake_uninstall.cmake.in b/contrib/netcdf/netcdf-c-4.6.2/cmake_uninstall.cmake.in similarity index 100% rename from contrib/netcdf/4.4.1.1/cmake_uninstall.cmake.in rename to contrib/netcdf/netcdf-c-4.6.2/cmake_uninstall.cmake.in diff --git a/contrib/netcdf/4.4.1.1/compile b/contrib/netcdf/netcdf-c-4.6.2/compile similarity index 100% rename from contrib/netcdf/4.4.1.1/compile rename to contrib/netcdf/netcdf-c-4.6.2/compile diff --git a/contrib/netcdf/4.4.1.1/config.guess b/contrib/netcdf/netcdf-c-4.6.2/config.guess similarity index 100% rename from contrib/netcdf/4.4.1.1/config.guess rename to contrib/netcdf/netcdf-c-4.6.2/config.guess diff --git a/contrib/netcdf/netcdf-c-4.6.2/config.h.cmake.in b/contrib/netcdf/netcdf-c-4.6.2/config.h.cmake.in new file mode 100644 index 00000000000..912495581ed --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/config.h.cmake.in @@ -0,0 +1,588 @@ +#ifndef CONFIG_H +#define CONFIG_H + +#ifdef _MSC_VER + +/* Prevent an issue where there is a circular inclusion + of winsock.h/windows.h. This weird state occurs with + libdap4 and hdf4 support. The solution comes from the + following URL, found after a bit of research. + + Added in support of the 4.5.0-rc1. Hello, future generations. + + * https://stackoverflow.com/questions/1372480/c-redefinition-header-files-winsock2-h + + */ + +/* #cmakedefine HAVE_WINSOCK2_H + +#ifdef HAVE_WINSOCK2_H + #define _WINSOCKAPI_ +#endif +*/ + #if _MSC_VER>=1900 + #define STDC99 + #endif +/* Define O_BINARY so that the appropriate flags +are set when opening a binary file on Windows. */ + +/* Disable a few warnings under Visual Studio, for the + time being. */ + #include + #pragma warning( disable: 4018 4996 4244 4305 ) + #define unlink _unlink + #define open _open + #define close _close + #define read _read + #define lseek _lseeki64 + + #define fstat _fstat64 + + #define off_t __int64 + #define _off_t __int64 + + #ifndef _OFF_T_DEFINED + #define _OFF_T_DEFINED + #endif + + #ifdef _WIN32 + #ifndef strcasecmp + #define strcasecmp _stricmp + #endif + + #ifndef snprintf + #if _MSC_VER<1900 + #define snprintf _snprintf + #endif + #endif + #endif + + + #define strdup _strdup + #define fdopen _fdopen + #define write _write + #define strtoll _strtoi64 +#endif /*_MSC_VER */ + +#cmakedefine const + +#ifndef _FILE_OFFSET_BITS +#cmakedefine _FILE_OFFSET_BITS ${_FILE_OFFSET_BITS} +#cmakedefine _LARGEFILE64_SOURCE +#cmakedefine _LARGEFILE_SOURCE +#endif + +/* Define if building universal (internal helper macro) */ +#cmakedefine AC_APPLE_UNIVERSAL_BUILD 1 + +/* If true, will attempt to download and build netcdf-fortran. */ +#cmakedefine BUILD_FORTRAN 1 + +/* default file chunk cache nelems. */ +#cmakedefine CHUNK_CACHE_NELEMS ${CHUNK_CACHE_NELEMS} + +/* default file chunk cache preemption policy. */ +#cmakedefine CHUNK_CACHE_PREEMPTION ${CHUNK_CACHE_PREEMPTION} + +/* default file chunk cache size in bytes. */ +#cmakedefine CHUNK_CACHE_SIZE ${CHUNK_CACHE_SIZE} + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#cmakedefine CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#cmakedefine C_ALLOCA 1 + +/* num chunks in default per-var chunk cache. */ +#cmakedefine DEFAULT_CHUNKS_IN_CACHE ${DEFAULT_CHUNKS_IN_CACHE} + +/* default chunk size in bytes */ +#cmakedefine DEFAULT_CHUNK_SIZE ${DEFAULT_CHUNK_SIZE} + +/* set this only when building a DLL under MinGW */ +#cmakedefine DLL_EXPORT 1 + +/* set this only when building a DLL under MinGW */ +#cmakedefine DLL_NETCDF 1 + +/* if true, enable CDF5 Support */ +#cmakedefine ENABLE_CDF5 1 + +/* if true, enable strict null byte header padding. */ +#cmakedefine USE_STRICT_NULL_BYTE_HEADER_PADDING 1 + +/* if true, build DAP2 and DAP4 Client */ +#cmakedefine ENABLE_DAP 1 + +/* if true, build DAP4 Client */ +#cmakedefine ENABLE_DAP4 1 + +/* if true, build DAP4 Client */ +#cmakedefine ENABLE_DAP4 1 + +/* if true, enable DAP group names */ +#cmakedefine ENABLE_DAP_GROUPS 1 + +/* if true, do remote tests */ +#cmakedefine ENABLE_DAP_REMOTE_TESTS 1 + +/* define the possible sources for remote test servers */ +#cmakedefine REMOTETESTSERVERS "${REMOTETESTSERVERS}" + +/* if true, run extra tests which may not work yet */ +#cmakedefine EXTRA_TESTS 1 + +/* use HDF5 1.6 API */ +#cmakedefine H5_USE_16_API 1 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#cmakedefine HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#cmakedefine HAVE_ALLOCA_H 1 + +/* Define to 1 if you have hdf5_coll_metadata_ops */ +#cmakedefine HDF5_HAS_COLL_METADATA_OPS 1 + +/* Is CURLINFO_RESPONSE_CODE defined */ +#cmakedefine HAVE_CURLINFO_RESPONSE_CODE 1 + +/* Is CURLINFO_HTTP_CODE defined */ +#cmakedefine HAVE_CURLINFO_HTTP_CONNECTCODE 1 + +/* Is CURLOPT_BUFFERSIZE defined */ +#cmakedefine HAVE_CURLOPT_BUFFERSIZE 1 + +/* Is CURLOPT_TCP_KEEPALIVE defined */ +#cmakedefine HAVE_CURLOPT_KEEPALIVE 1 + +/* Is CURLOPT_KEYPASSWD defined */ +#cmakedefine HAVE_CURLOPT_KEYPASSWD 1 + +/* Is CURLOPT_PASSWORD defined */ +#cmakedefine HAVE_CURLOPT_PASSWORD 1 + +/* Is CURLOPT_USERNAME defined */ +#cmakedefine HAVE_CURLOPT_USERNAME 1 + +/* Define to 1 if you have the declaration of `isfinite', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_ISFINITE 1 + +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#cmakedefine HAVE_DECL_ISINF 1 + +/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. + */ +#cmakedefine HAVE_DECL_ISNAN 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H 1 + +/* Define to 1 if you have the BaseTsd.h header file. */ +#cmakedefine HAVE_BASETSD_H @HAVE_BASETSD_H@ + +/* Define if we have filelengthi64. */ +#cmakedefine HAVE_FILE_LENGTH_I64 @HAVE_FILE_LENGTH_I64@ + + +/* Define to 1 if you have the `fsync' function. */ +#cmakedefine HAVE_FSYNC 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_GETOPT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrlimit' function. */ +#cmakedefine HAVE_GETRLIMIT 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#cmakedefine HAVE_GETTIMEOFDAY 1 + +/* if true, netcdf4 file properties will be set using H5Pset_libver_bounds */ +#cmakedefine HDF5_HAS_LIBVER_BOUNDS 1 + +/* Define to 1 if you have the `H5Z_SZIP' function. */ +#cmakedefine HAVE_H5Z_SZIP 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_HDF5_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_HDF5_HL_H 1 + +/* Define to 1 if the system has the type `int64'. */ +#cmakedefine HAVE_INT64 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `dl' library (-ldl). */ +#cmakedefine HAVE_LIBDL 1 + +/* Define to 1 if you have the `jpeg' library (-ljpeg). */ +#cmakedefine HAVE_LIBJPEG 1 + +/* Define to 1 if you have the `m' library (-lm). */ +#cmakedefine HAVE_LIBM 1 + +/* Define to 1 if you have the `mfhdf' library (-lmfhdf). */ +#cmakedefine HAVE_LIBMFHDF 1 + +/* Define to 1 if you have the `pnetcdf' library (-lpnetcdf). */ +#cmakedefine HAVE_LIBPNETCDF 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `longlong'. */ +#cmakedefine HAVE_LONGLONG 1 + +/* Define to 1 if the system has the type 'long long int'. */ +#cmakedefine HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MALLOC_H 1 + +/* Define to 1 if you have the `memmove' function. */ +#cmakedefine HAVE_MEMMOVE 1 + +/* Define to 1 if you have the `mkstemp' function. */ +#cmakedefine HAVE_MKSTEMP 1 + +/* Define to 1 if you have the `mktemp' function. */ +#cmakedefine HAVE_MKTEMP 1 + +/* Define to 1 if you have the `MPI_Comm_f2c' function. */ +#cmakedefine HAVE_MPI_COMM_F2C 1 + +/* Define to 1 if you have the `mremap' function. */ +#cmakedefine HAVE_MREMAP 1 + +/* Define to 1 if you have the `random' function. */ +#cmakedefine HAVE_RANDOM 1 + +/* Define to 1 if you have the `snprintf' function. */ +#cmakedefine HAVE_SNPRINTF 1 + +/* Define to 1 if the system has the type `ssize_t'. */ +#cmakedefine HAVE_SSIZE_T 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDARG_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#cmakedefine HAVE_STRDUP 1 + +/* Define to 1 if you have the `strndup` function. */ +#cmakedefine HAVE_STRNDUP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FTW_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIBGEN_H 1 + +/* Define to 1 if you have the `strlcat' function. */ +#cmakedefine HAVE_STRLCAT 1 + +/* Define to 1 if you have the `strtoll' function. */ +#cmakedefine HAVE_STRTOLL 1 + +/* Define to 1 if you have the `strtoull' function. */ +#cmakedefine HAVE_STRTOULL 1 + +/* Define to 1 if you have the `stroull' function. */ +#cmakedefine HAVE_STROULL 1 + +/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +#cmakedefine HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define to 1 if you have the `sysconf' function. */ +#cmakedefine HAVE_SYSCONF 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H 1 + +/* Define to 1 if the system has the type `uchar'. */ +#cmakedefine HAVE_UCHAR 1 + +/* Define to 1 if the system has the type `uint'. */ +#cmakedefine HAVE_UINT 1 + +/* Define to 1 if the system has the type `uint64'. */ +#cmakedefine HAVE_UINT64 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H 1 +#cmakedefine YY_NO_UNISTD_H 1 + +/* Define to 1 if the system has the type `ushort'. */ +#cmakedefine HAVE_USHORT 1 + +/* if true, H5free_memory() will be used to free hdf5-allocated memory in + nc4file. */ +#cmakedefine HDF5_HAS_H5FREE 1 + +/* if true, hdf5 has parallelism enabled */ +#cmakedefine HDF5_PARALLEL 1 + +/* if true, include JNA bug fix */ +#cmakedefine JNA 1 + +/* do large file tests */ +#cmakedefine LARGE_FILE_TESTS 1 + +/* If true, turn on logging. */ +#cmakedefine LOGGING 1 + +/* If true, define nc_set_log_level. */ +#cmakedefine ENABLE_SET_LOG_LEVEL 1 + +/* max size of the default per-var chunk cache. */ +#cmakedefine MAX_DEFAULT_CACHE_SIZE ${MAX_DEFAULT_CACHE_SIZE} + +/* min blocksize for posixio. */ +#cmakedefine NCIO_MINBLOCKSIZE ${NCIO_MINBLOCKSIZE} + +/* Add extra properties to _NCProperties attribute */ +#cmakedefine NCPROPERTIES_EXTRA ${NCPROPERTIES_EXTRA} + +/* no IEEE float on this platform */ +#cmakedefine NO_IEEE_FLOAT 1 + +#cmakedefine BUILD_V2 1 +#cmakedefine ENABLE_DOXYGEN 1 +#cmakedefine ENABLE_INTERNAL_DOCS 1 +#cmakedefine VALGRIND_TESTS 1 +#cmakedefine ENABLE_CDMREMOTE 1 +#cmakedefine USE_HDF5 1 +#cmakedefine ENABLE_FILEINFO 1 +#cmakedefine TEST_PARALLEL ${TEST_PARALLEL} +#cmakedefine BUILD_RPC 1 +#cmakedefine USE_X_GETOPT 1 +#cmakedefine ENABLE_EXTREME_NUMBERS 1 + +/* do not build the netCDF version 2 API */ +#cmakedefine NO_NETCDF_2 1 + +/* Name of package */ +#define PACKAGE "netcdf" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "support-netcdf@unidata.ucar.edu" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "netCDF" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "netCDF ${netCDF_VERSION}" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "netcdf" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION "${netCDF_VERSION}" + +/* The size of `ulonglong` as computed by sizeof. */ +#cmakedefine SIZEOF_ULONGLONG @SIZEOF_ULONGLONG@ + +/* The size of `longlong` as computed by sizeof. */ +#cmakedefine SIZEOF_LONGLONG @SIZEOF_LONGLONG@ + +/* The size of `char` as computed by sizeof. */ +#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@ + +/* The size of `uchar` as computed by sizeof. */ +#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@ + +/* The size of `__int64` found on Windows systems. */ +#cmakedefine SIZEOF___INT64 ${SIZEOF___INT64} + +/* The size of `void*` as computed by sizeof. */ +#cmakedefine SIZEOF_VOIDSTAR ${SIZEOF_VOIDSTAR} + +/* The size of `short` as computed by sizeof. */ +#cmakedefine SIZEOF_OFF64_T ${SIZEOF_OFF64_T} + +/* The size of `double', as computed by sizeof. */ +#cmakedefine SIZEOF_DOUBLE ${SIZEOF_DOUBLE} + +/* The size of `float', as computed by sizeof. */ +#cmakedefine SIZEOF_FLOAT ${SIZEOF_FLOAT} + +/* The size of `int', as computed by sizeof. */ +#cmakedefine SIZEOF_INT ${SIZEOF_INT} + +/* The size of `long', as computed by sizeof. */ +#cmakedefine SIZEOF_LONG ${SIZEOF_LONG} + +/* The size of `long long', as computed by sizeof. */ +#cmakedefine SIZEOF_LONG_LONG ${SIZEOF_LONG_LONG} + +/* The size of `off_t', as computed by sizeof. */ +#cmakedefine SIZEOF_OFF_T ${SIZEOF_OFF_T} + +/* The size of `short', as computed by sizeof. */ +#cmakedefine SIZEOF_SHORT ${SIZEOF_SHORT} + +/* The size of `size_t', as computed by sizeof. */ +#cmakedefine SIZEOF_SIZE_T ${SIZEOF_SIZE_T} + +/* The size of `uint', as computed by sizeof. */ +#cmakedefine SIZEOF_UINT ${SIZEOF_UINT} + +/* The size of `unsigned int', as computed by sizeof. */ +#cmakedefine SIZEOF_UNSIGNED_INT ${SIZEOF_UNSIGNED_INT} + +/* The size of `unsigned long long', as computed by sizeof. */ +#cmakedefine SIZEOF_UNSIGNED_LONG_LONG ${SIZEOF_UNSIGNED_LONG_LONG} + +/* The size of `unsigned short int', as computed by sizeof. */ +#cmakedefine SIZEOF_UNSIGNED_SHORT_INT ${SIZEOF_UNSIGNED_SHORT_INT} + +/* The size of `ushort', as computed by sizeof. */ +#cmakedefine SIZEOF_USHORT ${SIZEOF_USHORT} + +/* The size of `void*', as computed by sizeof. */ +#cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP} + +/* Place to put very large netCDF test files. */ +#cmakedefine TEMP_LARGE "${TEMP_LARGE}" + +/* if true, build DAP Client */ +#cmakedefine USE_DAP 1 + +/* if true, include NC_DISKLESS code */ +#cmakedefine USE_DISKLESS 1 + +/* set this to use extreme numbers in tests */ +#cmakedefine USE_EXTREME_NUMBERS 1 + +/* if true, use ffio instead of posixio */ +#cmakedefine USE_FFIO 1 + +/* if true, include experimental fsync code */ +#cmakedefine USE_FSYNC 1 + +/* if true, use HDF4 too */ +#cmakedefine USE_HDF4 1 + +/* If true, use use wget to fetch some sample HDF4 data, and then test against + it. */ +//#cmakedefine USE_HDF4_FILE_TESTS 1 + +/* if true, use mmap for in-memory files */ +#cmakedefine USE_MMAP 1 + +/* if true, build netCDF-4 */ +#cmakedefine USE_NETCDF4 1 + +/* build the netCDF version 2 API */ +#cmakedefine USE_NETCDF_2 1 + +/* if true, pnetcdf or parallel netcdf-4 is in use */ +#cmakedefine USE_PARALLEL 1 + +/* if true, parallel netcdf-4 is in use */ +#cmakedefine USE_PARALLEL4 1 + +/* if true, parallel netCDF is used */ +#cmakedefine USE_PNETCDF 1 + +/* if true, use stdio instead of posixio */ +#cmakedefine USE_STDIO 1 + +/* if true, compile in szip compression in netCDF-4 variables */ +#cmakedefine USE_SZIP 1 + +/* Version number of package */ +#cmakedefine VERSION "${netCDF_VERSION}" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +#cmakedefine WORDS_BIGENDIAN +# endif +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Define for large files, on AIX-style hosts. */ +#cmakedefine _LARGE_FILES ${_LARGE_FILES} + +/* Define to `long int' if does not define. */ +#cmakedefine off_t long int + +/* Define to `unsigned int' if does not define. */ +#cmakedefine size_t unsigned int + +/* Define to `int' if does not define. */ +#cmakedefine ssize_t int + +/* Define to `unsigned long if does not define. */ +#cmakedefine uintptr_t unsigned long + +/* Define strcasecmp, snprintf on Win32 systems. */ +#ifdef _WIN32 + #ifndef HAVE_STRCASECMP + #define strcasecmp _stricmp + #endif + + #ifndef HAVE_SNPRINTF + #define snprintf _snprintf + #endif +#endif + +#cmakedefine WORDS_BIGENDIAN + +#include "ncconfigure.h" + +#endif diff --git a/contrib/netcdf/4.4.1.1/config.h.in b/contrib/netcdf/netcdf-c-4.6.2/config.h.in similarity index 78% rename from contrib/netcdf/4.4.1.1/config.h.in rename to contrib/netcdf/netcdf-c-4.6.2/config.h.in index 5b88c28c6fb..3084e7b2532 100644 --- a/contrib/netcdf/4.4.1.1/config.h.in +++ b/contrib/netcdf/netcdf-c-4.6.2/config.h.in @@ -29,23 +29,26 @@ /* default chunk size in bytes */ #undef DEFAULT_CHUNK_SIZE -/* set this only when building a DLL under MinGW */ -#undef DLL_EXPORT - -/* set this only when building a DLL under MinGW */ -#undef DLL_NETCDF +/* if true, enable CDF5 Support */ +#undef ENABLE_CDF5 /* if true, build DAP Client */ #undef ENABLE_DAP +/* if true, build DAP4 Client */ +#undef ENABLE_DAP4 + /* if true, enable DAP group names */ #undef ENABLE_DAP_GROUPS /* if true, do remote tests */ #undef ENABLE_DAP_REMOTE_TESTS -/* if true, run extra tests which may not work yet */ -#undef EXTRA_TESTS +/* If true, define nc_set_log_level. */ +#undef ENABLE_SET_LOG_LEVEL + +/* if true, use _FillValue for NC_ERANGE data elements */ +#undef ERANGE_FILL /* use HDF5 1.6 API */ #undef H5_USE_16_API @@ -57,14 +60,14 @@ */ #undef HAVE_ALLOCA_H -/* Define to 1 if you have the header file. */ -#undef HAVE_CTYPE_H - /* Is CURLINFO_RESPONSE_CODE defined */ #undef HAVE_CURLINFO_RESPONSE_CODE -/* Is CURLOPT_CHUNK_BGN_FUNCTION defined */ -#undef HAVE_CURLOPT_CHUNK_BGN_FUNCTION +/* Is CURLOPT_BUFFERSIZE defined */ +#undef HAVE_CURLOPT_BUFFERSIZE + +/* Is CURLOPT_TCP_KEEPALIVE defined */ +#undef HAVE_CURLOPT_KEEPALIVE /* Is CURLOPT_KEYPASSWD defined */ #undef HAVE_CURLOPT_KEYPASSWD @@ -87,29 +90,18 @@ */ #undef HAVE_DECL_ISNAN -/* Define to 1 if you have the declaration of `signbit', and to 0 if you - don't. */ -#undef HAVE_DECL_SIGNBIT - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_DIRENT_H - /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H -/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ -#undef HAVE_DOPRNT - -/* Define to 1 if you have the header file. */ -#undef HAVE_ERRNO_H - /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `fsync' function. */ #undef HAVE_FSYNC +/* Define to 1 if you have the header file. */ +#undef HAVE_FTW_H + /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H @@ -128,12 +120,15 @@ /* Define to 1 if you have the `H5Pget_fapl_mpio' function. */ #undef HAVE_H5PGET_FAPL_MPIO -/* Define to 1 if you have the `H5Pget_fapl_mpiposix' function. */ -#undef HAVE_H5PGET_FAPL_MPIPOSIX +/* Define to 1 if you have the `H5Pset_all_coll_metadata_ops' function. */ +#undef HAVE_H5PSET_ALL_COLL_METADATA_OPS /* Define to 1 if you have the `H5Pset_deflate' function. */ #undef HAVE_H5PSET_DEFLATE +/* Define to 1 if you have the `H5Pset_libver_bounds' function. */ +#undef HAVE_H5PSET_LIBVER_BOUNDS + /* Define to 1 if you have the `H5Z_SZIP' function. */ #undef HAVE_H5Z_SZIP @@ -149,8 +144,8 @@ /* Define to 1 if you have the `df' library (-ldf). */ #undef HAVE_LIBDF -/* Define to 1 if you have the `dl' library (-ldl). */ -#undef HAVE_LIBDL +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBGEN_H /* Define to 1 if you have the `jpeg' library (-ljpeg). */ #undef HAVE_LIBJPEG @@ -176,9 +171,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H -/* Define to 1 if you have the `memcmp' function. */ -#undef HAVE_MEMCMP - /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE @@ -191,27 +183,27 @@ /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP -/* Define to 1 if you have a working `mmap' system call. */ +/* Define to 1 if you have the `mktemp' function. */ +#undef HAVE_MKTEMP + +/* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define to 1 if you have the `MPI_Comm_f2c' function. */ #undef HAVE_MPI_COMM_F2C +/* Define to 1 if you have the `MPI_Info_f2c' function. */ +#undef HAVE_MPI_INFO_F2C + /* Define to 1 if you have the `mremap' function. */ #undef HAVE_MREMAP -/* Define to 1 if you have the header file, and it defines `DIR'. */ -#undef HAVE_NDIR_H - -/* Define to 1 if the system has the type `ptrdiff_t'. */ -#undef HAVE_PTRDIFF_T - -/* Define to 1 if you have the `rand' function. */ -#undef HAVE_RAND - /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM +/* Define to 1 if the system has the type `schar'. */ +#undef HAVE_SCHAR + /* Define to 1 if the system has the type `size_t'. */ #undef HAVE_SIZE_T @@ -224,9 +216,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H -/* Define to 1 if stdbool.h conforms to C99. */ -#undef HAVE_STDBOOL_H - /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -236,24 +225,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strcat' function. */ -#undef HAVE_STRCAT - -/* Define to 1 if you have the `strchr' function. */ -#undef HAVE_STRCHR - -/* Define to 1 if you have the `strcpy' function. */ -#undef HAVE_STRCPY - /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP -/* Define to 1 if you have the `strerror' function. */ -#undef HAVE_STRERROR - /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H @@ -263,15 +237,6 @@ /* Define to 1 if you have the `strlcat' function. */ #undef HAVE_STRLCAT -/* Define to 1 if you have the `strrchr' function. */ -#undef HAVE_STRRCHR - -/* Define to 1 if you have the `strstr' function. */ -#undef HAVE_STRSTR - -/* Define to 1 if you have the `strtod' function. */ -#undef HAVE_STRTOD - /* Define to 1 if you have the `strtoll' function. */ #undef HAVE_STRTOLL @@ -288,14 +253,6 @@ /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_DIR_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_NDIR_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H @@ -311,9 +268,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H -/* Define to 1 if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - /* Define to 1 if the system has the type `uchar'. */ #undef HAVE_UCHAR @@ -323,6 +277,9 @@ /* Define to 1 if the system has the type `uint64'. */ #undef HAVE_UINT64 +/* Define to 1 if the system has the type `uintptr_t'. */ +#undef HAVE_UINTPTR_T + /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H @@ -332,11 +289,8 @@ /* Define to 1 if the system has the type `ushort'. */ #undef HAVE_USHORT -/* Define to 1 if you have the `vprintf' function. */ -#undef HAVE_VPRINTF - -/* Define to 1 if the system has the type `_Bool'. */ -#undef HAVE__BOOL +/* if true, use collective metadata ops in parallel netCDF-4 */ +#undef HDF5_HAS_COLL_METADATA_OPS /* if true, H5free_memory() will be used to free hdf5-allocated memory in nc4file. */ @@ -366,18 +320,15 @@ /* min blocksize for posixio. */ #undef NCIO_MINBLOCKSIZE +/* Extra pairs for _NCProperties */ +#undef NCPROPERTIES_EXTRA + /* no IEEE float on this platform */ #undef NO_IEEE_FLOAT /* do not build the netCDF version 2 API */ #undef NO_NETCDF_2 -/* no stdlib.h */ -#undef NO_STDLIB_H - -/* no sys_types.h */ -#undef NO_SYS_TYPES_H - /* Name of package */ #undef PACKAGE @@ -399,6 +350,12 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* if true, NC_EINVALCOORDS check is more relaxed */ +#undef RELAX_COORD_BOUND + +/* the testservers for remote tests. */ +#undef REMOTETESTSERVERS + /* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE @@ -417,18 +374,24 @@ /* The size of `off_t', as computed by sizeof. */ #undef SIZEOF_OFF_T -/* The size of `ptrdiff_t', as computed by sizeof. */ -#undef SIZEOF_PTRDIFF_T - /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `size_t', as computed by sizeof. */ #undef SIZEOF_SIZE_T +/* The size of `ssize_t', as computed by sizeof. */ +#undef SIZEOF_SSIZE_T + +/* The size of `uchar', as computed by sizeof. */ +#undef SIZEOF_UCHAR + /* The size of `uint', as computed by sizeof. */ #undef SIZEOF_UINT +/* The size of `unsigned char', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_CHAR + /* The size of `unsigned int', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_INT @@ -441,6 +404,9 @@ /* The size of `ushort', as computed by sizeof. */ #undef SIZEOF_USHORT +/* The size of `void*', as computed by sizeof. */ +#undef SIZEOF_VOIDP + /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. @@ -455,15 +421,21 @@ /* Place to put very large netCDF test files. */ #undef TEMP_LARGE -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME +/* dispatch table for user-defined format 0. */ +#undef UDF0_DISPATCH + +/* function to get dispatch table for user-defined format 0. */ +#undef UDF0_DISPATCH_FUNC + +/* dispatch table for user-defined format 1. */ +#undef UDF1_DISPATCH + +/* function to get dispatch table for user-defined format 1. */ +#undef UDF1_DISPATCH_FUNC /* if true, build DAP Client */ #undef USE_DAP -/* if true, include NC_DISKLESS code */ -#undef USE_DISKLESS - /* set this to use extreme numbers in tests */ #undef USE_EXTREME_NUMBERS @@ -480,8 +452,8 @@ it. */ #undef USE_HDF4_FILE_TESTS -/* if true, enable dynamic loading support */ -#undef USE_LIBDL +/* if true, use HDF5 */ +#undef USE_HDF5 /* if true, use mmap for in-memory files */ #undef USE_MMAP @@ -492,29 +464,29 @@ /* build the netCDF version 2 API */ #undef USE_NETCDF_2 -/* if true, pnetcdf or parallel netcdf-4 is in use */ +/* if true, PnetCDF or parallel netcdf-4 is in use */ #undef USE_PARALLEL /* if true, parallel netcdf-4 is in use */ #undef USE_PARALLEL4 -/* if true, compile in parallel netCDF-4 based on MPI/IO */ -#undef USE_PARALLEL_MPIO - -/* if true, compile in parallel netCDF-4 based on MPI/POSIX */ -#undef USE_PARALLEL_POSIX - -/* if true, parallel netCDF is used */ +/* if true, PnetCDF is used */ #undef USE_PNETCDF /* if true, use stdio instead of posixio */ #undef USE_STDIO +/* if true, enable strict null byte header padding */ +#undef USE_STRICT_NULL_BYTE_HEADER_PADDING + /* if true, compile in szip compression in netCDF-4 variables */ #undef USE_SZIP -/* if true, compile in zlib compression in netCDF-4 variables */ -#undef USE_ZLIB +/* if true, use user-defined format 0 in utilities */ +#undef USE_UDF0 + +/* if true, use user-defined format 1 in utilities */ +#undef USE_UDF1 /* Version number of package */ #undef VERSION @@ -556,6 +528,10 @@ /* Define to `unsigned int' if does not define. */ #undef size_t +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +#undef uintptr_t + /* Define strcasecmp, snprintf on Win32 systems. */ #ifdef _WIN32 #define strcasecmp _stricmp diff --git a/contrib/netcdf/4.4.1.1/config.sub b/contrib/netcdf/netcdf-c-4.6.2/config.sub similarity index 100% rename from contrib/netcdf/4.4.1.1/config.sub rename to contrib/netcdf/netcdf-c-4.6.2/config.sub diff --git a/contrib/netcdf/4.4.1.1/configure b/contrib/netcdf/netcdf-c-4.6.2/configure similarity index 91% rename from contrib/netcdf/4.4.1.1/configure rename to contrib/netcdf/netcdf-c-4.6.2/configure index 004a7237ce0..92c99c217a6 100755 --- a/contrib/netcdf/4.4.1.1/configure +++ b/contrib/netcdf/netcdf-c-4.6.2/configure @@ -1,7 +1,6 @@ #! /bin/sh -# From configure.ac Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for netCDF 4.4.1.1. +# Generated by GNU Autoconf 2.69 for netCDF 4.6.2. # # Report bugs to . # @@ -590,9 +589,9 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='netCDF' -PACKAGE_TARNAME='netcdf' -PACKAGE_VERSION='4.4.1.1' -PACKAGE_STRING='netCDF 4.4.1.1' +PACKAGE_TARNAME='netcdf-c' +PACKAGE_VERSION='4.6.2' +PACKAGE_STRING='netCDF 4.6.2' PACKAGE_BUGREPORT='support-netcdf@unidata.ucar.edu' PACKAGE_URL='' @@ -633,18 +632,23 @@ ac_includes_default="\ # include #endif" -ac_header_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +MSVC +ISCMAKE +NC_RELAX_COORD_BOUND +NC_HAS_ERANGE_FILL +NC_HAS_CDF5 NC_HAS_PARALLEL4 NC_HAS_PARALLEL NC_HAS_PNETCDF NC_HAS_JNA NC_HAS_MMAP NC_HAS_DISKLESS -NC_HAS_DAP +NC_HAS_DAP4 +NC_HAS_DAP2 NC_HAS_SZIP NC_HAS_HDF5 NC_HAS_HDF4 @@ -657,6 +661,8 @@ AM_CPPFLAGS AM_CFLAGS enable_static enable_shared +HAS_ERANGE_FILL +RELAX_COORD_BOUND HAS_JNA HAS_MMAP HAS_DISKLESS @@ -664,18 +670,23 @@ HAS_PARALLEL4 HAS_PARALLEL HAS_SZLIB HAS_LOGGING -HAS_HDF5 HAS_PNETCDF +HAS_HDF5 HAS_HDF4 +HAS_CDF5 HAS_NC4 HAS_NC2 +HAS_DAP4 +HAS_DAP2 HAS_DAP NC_LIBS +ENABLE_FILTER_TESTING_FALSE +ENABLE_FILTER_TESTING_TRUE BINFILE_NAME +ENABLE_METADATA_PERF_FALSE +ENABLE_METADATA_PERF_TRUE BUILD_MMAP_FALSE BUILD_MMAP_TRUE -BUILD_DISKLESS_FALSE -BUILD_DISKLESS_TRUE USE_DISPATCH_FALSE USE_DISPATCH_TRUE USE_PNETCDF_FALSE @@ -688,10 +699,10 @@ USE_HDF4_FILE_TESTS_FALSE USE_HDF4_FILE_TESTS_TRUE USE_HDF4_FALSE USE_HDF4_TRUE +USE_HDF5_FALSE +USE_HDF5_TRUE USE_NETCDF4_FALSE USE_NETCDF4_TRUE -USE_VALGRIND_TESTS_FALSE -USE_VALGRIND_TESTS_TRUE CROSS_COMPILING_FALSE CROSS_COMPILING_TRUE USE_LOGGING_FALSE @@ -708,6 +719,10 @@ ENABLE_DAP_AUTH_TESTS_FALSE ENABLE_DAP_AUTH_TESTS_TRUE ENABLE_DAP_REMOTE_TESTS_FALSE ENABLE_DAP_REMOTE_TESTS_TRUE +ENABLE_DAP4_FALSE +ENABLE_DAP4_TRUE +ENABLE_DAP_FALSE +ENABLE_DAP_TRUE USE_DAP_FALSE USE_DAP_TRUE BUILD_DAP_FALSE @@ -716,6 +731,13 @@ TEST_PARALLEL4_FALSE TEST_PARALLEL4_TRUE BUILD_PARALLEL_FALSE BUILD_PARALLEL_TRUE +M4FLAGS +ENABLE_PARALLEL_FALSE +ENABLE_PARALLEL_TRUE +ENABLE_CDF5_FALSE +ENABLE_CDF5_TRUE +ISCYGWIN_FALSE +ISCYGWIN_TRUE ALLOCA HAVE_DOT DOT @@ -732,6 +754,8 @@ MANIFEST_TOOL RANLIB ac_ct_AR AR +DLLTOOL +OBJDUMP LN_S NM ac_ct_DUMPBIN @@ -742,9 +766,6 @@ EGREP GREP SED LIBTOOL -OBJDUMP -DLLTOOL -AS CC_VERSION BUILD_BENCHMARKS_FALSE BUILD_BENCHMARKS_TRUE @@ -762,19 +783,10 @@ USE_STDIO_FALSE USE_STDIO_TRUE USE_FFIO_FALSE USE_FFIO_TRUE -EXTRA_TESTS_FALSE -EXTRA_TESTS_TRUE +USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE +USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE INTERNAL_OCLIB_FALSE INTERNAL_OCLIB_TRUE -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__include -DEPDIR OBJEXT EXEEXT ac_ct_CC @@ -782,10 +794,13 @@ CPPFLAGS LDFLAGS CFLAGS CC +MPIEXEC +ENABLED_DOC_SECTIONS BUILD_INTERNAL_DOCS NC_ENABLE_DOXYGEN_PDF_OUTPUT NC_ENABLE_DOXYGEN_PDF_OUTPUT_FALSE NC_ENABLE_DOXYGEN_PDF_OUTPUT_TRUE +DOXYGEN_SERVER_BASED_SEARCH DOXYGEN_SEARCHENGINE DOXYGEN_HEADER_FILE DOXYGEN_CSS_FILE @@ -796,8 +811,19 @@ SHOW_DOXYGEN_TAG_LIST_FALSE SHOW_DOXYGEN_TAG_LIST_TRUE BUILD_DOCS_FALSE BUILD_DOCS_TRUE -BUILD_DLL_FALSE -BUILD_DLL_TRUE +ENABLE_VALGRIND_FALSE +ENABLE_VALGRIND_TRUE +VALGRIND_CHECK_RULES +valgrind_enabled_tools +valgrind_tools +ENABLE_VALGRIND_sgcheck +ENABLE_VALGRIND_drd +ENABLE_VALGRIND_helgrind +ENABLE_VALGRIND_memcheck +VALGRIND_ENABLED +VALGRIND_ENABLED_FALSE +VALGRIND_ENABLED_TRUE +VALGRIND MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -882,15 +908,18 @@ PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR -SHELL -am__quote' +SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode -enable_dll with_minblocksize +enable_valgrind +enable_valgrind_memcheck +enable_valgrind_helgrind +enable_valgrind_drd +enable_valgrind_sgcheck enable_doxygen enable_doxygen_tasks enable_doxygen_build_release_docs @@ -899,15 +928,15 @@ enable_dot enable_internal_docs enable_fsync enable_jna -enable_valgrind_tests enable_netcdf_4 enable_netcdf4 enable_dynamic_loading enable_hdf4 enable_hdf4_file_tests -enable_fortran +enable_remote_fortran_bootstrap enable_extra_example_tests enable_parallel_tests +with_mpiexec with_default_chunk_size with_max_default_cache_size with_default_chunks_in_cache @@ -915,13 +944,14 @@ with_chunk_cache_size with_chunk_cache_nelems with_chunk_cache_preemption enable_logging +enable_set_log_level_func enable_dap -enable_dependency_tracking enable_dap_remote_tests enable_dap_auth_tests enable_dap_groups +with_testservers enable_dap_long_tests -enable_extra_tests +enable_strict_null_byte_header_padding enable_ffio enable_stdio enable_examples @@ -932,6 +962,11 @@ enable_large_file_tests enable_benchmarks enable_extreme_numbers with_temp_large +with_ncproperties_extra +with_udf0 +with_udf0_magic_number +with_udf1 +with_udf1_magic_number enable_shared enable_static with_pic @@ -941,10 +976,14 @@ with_gnu_ld with_sysroot enable_libtool_lock enable_largefile -enable_diskless enable_mmap +enable_cdf5 enable_parallel4 enable_pnetcdf +enable_erange_fill +enable_zero_length_coord_bound +enable_metadata_perf +enable_filter_testing ' ac_precious_vars='build_alias host_alias @@ -1496,7 +1535,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 4.4.1.1 to adapt to many kinds of systems. +\`configure' configures netCDF 4.6.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1544,7 +1583,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] + --docdir=DIR documentation root [DATAROOTDIR/doc/netcdf-c] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1567,7 +1606,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of netCDF 4.4.1.1:";; + short | recursive ) echo "Configuration of netCDF 4.6.2:";; esac cat <<\_ACEOF @@ -1580,7 +1619,14 @@ Optional Features: --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer - --enable-dll build a win32 DLL (only works on mingw) + --enable-valgrind Whether to enable Valgrind on the unit tests + --disable-valgrind-memcheck + Whether to skip memcheck during the Valgrind tests + --disable-valgrind-helgrind + Whether to skip helgrind during the Valgrind tests + --disable-valgrind-drd Whether to skip drd during the Valgrind tests + --enable-valgrind-sgcheck + Whether to use sgcheck during the Valgrind tests --enable-doxygen Enable generation of documentation. --enable-doxygen-tasks Enable Doxygen-generated test, todo and bug list documentation. Developers only. @@ -1597,8 +1643,6 @@ Optional Features: library. --enable-fsync enable fsync support --enable-jna enable jna bug workaround - --enable-valgrind-tests build with valgrind-tests (valgrind is required, - static builds only) --disable-netcdf-4 do not build with netcdf-4 (else HDF5 and zlib required) --disable-netcdf4 (just a synonym for --disable-netcdf-4) @@ -1615,25 +1659,23 @@ Optional Features: --enable-extra-example-tests Run extra example tests; requires GNU sed. Ignored if netCDF-4 is not enabled. - --enable-parallel-tests Run extra parallel IO tests. Ignored if netCDF-4 is - not enabled, or built on a system without parallel - I/O support. + --enable-parallel-tests Run extra parallel IO tests. Requires netCDF-4 with + parallel I/O support. --enable-logging enable logging capability (only applies when netCDF-4 is built). This debugging features is only of interest to netCDF developers. Ignored if netCDF-4 is not enabled. + --disable-set-log-level-func + disable the nc_set_log_level function --disable-dap build without DAP client support. - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build --disable-dap-remote-tests disable dap remote tests --enable-dap-auth-tests enable dap remote authorization tests - --disable-dap-groups disable [netcdf4] dap group names + --disable-dap-groups disable [netcdf4] DAP2 group names --enable-dap-long-tests enable dap long tests - --enable-extra-tests enable some extra tests that may not pass because of - known issues + --enable-strict-null-byte-header-padding + enable strict null-byte header padding when reading + netCDF3 files. --enable-ffio use ffio instead of posixio (ex. on the Cray) --enable-stdio use stdio instead of posixio (ex. on the Cray) --disable-examples don't build the netCDF examples during make check @@ -1661,12 +1703,26 @@ Optional Features: optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-largefile omit support for large files - --disable-diskless disable support for in-memory (NC_DISKLESS) files --enable-mmap allow mmap for in-memory files + --disable-cdf5 build without CDF5 support. [default: auto] --disable-parallel4 disable parallel I/O for netcdf-4, even if it's enabled in libhdf5 - --enable-pnetcdf build with parallel I/O for classic files + --enable-pnetcdf build with parallel I/O for classic files. [default: + disabled] + --enable-erange-fill Enable use of fill value when out-of-range type + conversion causes NC_ERANGE error. [default: + disabled] + --disable-zero-length-coord-bound + Disable a more relaxed boundary error check + NC_EINVALCOORDS to allow coordinate start argument + equal to dimension size when argument count is zero. + [default: enabled] --enable-jna enable jna bug fix + --enable-metadata-perf Test performance of nc_create and nc_open on large + metadata + --disable-filter-testing + Do not run filter test and example; requires shared + libraries and netCDF-4 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1674,6 +1730,8 @@ Optional Packages: --with-minblocksize= Specify minimum I/O blocksize for netCDF classic and 64-bit offset format files. + --with-mpiexec= + Specify command to launch MPI parallel tests. --with-default-chunk-size= Specify default size of chunks in bytes. --with-max-default-cache-size= @@ -1693,10 +1751,24 @@ Optional Packages: Specify default file chunk cache preemption policy for HDF5 files (a number between 0 and 1, inclusive). + --with-testservers=,... + Specify the testserver(s) to try for remote tests. --with-temp-large= specify directory where large files (i.e. >2 GB) will be written, if large files tests are run with --enable-large-file-tests + --with-ncproperties-extra="=,... + specify extra pairs for _NCProperties + --with-udf0= + Specify a dispatch table for user-defined format 0. + --with-udf0-magic-number= + Specify a magic number for user-defined format 0 + (ignored unless --with-udf0 is also used). + --with-udf1= + Specify a dispatch table for user-defined format 1. + --with-udf1-magic-number= + Specify a magic number for user-defined format 1 + (ignored unless --with-udf1 is also used). --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both @@ -1784,7 +1856,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -netCDF configure 4.4.1.1 +netCDF configure 4.6.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2493,7 +2565,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 $as_me 4.4.1.1, which was +It was created by netCDF $as_me 4.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2773,9 +2845,6 @@ $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2853,9 +2922,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu : ${CFLAGS=""} NC_VERSION_MAJOR=4 - NC_VERSION_MINOR=4 - NC_VERSION_PATCH=1 - NC_VERSION_NOTE=".1" + NC_VERSION_MINOR=6 + NC_VERSION_PATCH=2 + NC_VERSION_NOTE="" ##### # Set some variables used to generate a libnetcdf.settings file, @@ -2864,11 +2933,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Create the VERSION file, which contains the package version from # AC_INIT. -echo 4.4.1.1>VERSION +echo 4.6.2>VERSION -{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.4.1.1" >&5 -$as_echo "$as_me: netCDF 4.4.1.1" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.6.2" >&5 +$as_echo "$as_me: netCDF 4.6.2" >&6;} # Keep libtool macros in an m4 directory. @@ -3041,7 +3110,11 @@ ac_config_links="$ac_config_links nc_test4/ref_hdf5_compat2.nc:nc_test4/ref_hdf5 ac_config_links="$ac_config_links nc_test4/ref_hdf5_compat3.nc:nc_test4/ref_hdf5_compat3.nc" -# This call is required by automake. +ac_config_links="$ac_config_links hdf4_test/ref_chunked.hdf4:hdf4_test/ref_chunked.hdf4" + +ac_config_links="$ac_config_links hdf4_test/ref_contiguous.hdf4:hdf4_test/ref_contiguous.hdf4" + + am__api_version='1.16' # Find a good install program. We prefer a C program (faster), @@ -3527,8 +3600,8 @@ fi # Define the identity of the package. - PACKAGE='netcdf' - VERSION='4.4.1.1' + PACKAGE='netcdf-c' + VERSION='4.6.2' cat >>confdefs.h <<_ACEOF @@ -3622,7 +3695,7 @@ END fi -# use silent rules - automake 1.11 +# use silent rules - requires at least automake 1.11 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; @@ -3693,35 +3766,6 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking user options" >&5 $as_echo "$as_me: checking user options" >&6;} -# If --enable-dll is specified the DLL will be built. This only works -# on mingw. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5 -$as_echo_n "checking whether a win32 DLL is desired... " >&6; } -# Check whether --enable-dll was given. -if test "${enable_dll+set}" = set; then : - enableval=$enable_dll; -fi - -test "x$enable_dll" = xyes || enable_dll=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dll" >&5 -$as_echo "$enable_dll" >&6; } -if test "x$enable_dll" = xyes; then - -$as_echo "#define DLL_NETCDF 1" >>confdefs.h - - -$as_echo "#define DLL_EXPORT 1" >>confdefs.h - -fi - if test x$enable_dll = xyes; then - BUILD_DLL_TRUE= - BUILD_DLL_FALSE='#' -else - BUILD_DLL_TRUE='#' - BUILD_DLL_FALSE= -fi - - # Did the user specify a default minimum blocksize (NCIO_MINBLOCKSIZE) for posixio? { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a NCIO_MINBLOCKSIZE was specified" >&5 $as_echo_n "checking whether a NCIO_MINBLOCKSIZE was specified... " >&6; } @@ -3741,6 +3785,423 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Find valgrind, if available, and add targets for it. + + + + + # Check whether --enable-valgrind was given. +if test "${enable_valgrind+set}" = set; then : + enableval=$enable_valgrind; enable_valgrind=$enableval +else + enable_valgrind= +fi + + + if test "$enable_valgrind" != "no"; then : + + # Check for Valgrind. + # Extract the first word of "valgrind", so it can be a program name with args. +set dummy valgrind; 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_VALGRIND+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$VALGRIND"; then + ac_cv_prog_VALGRIND="$VALGRIND" # 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_VALGRIND="valgrind" + $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 +VALGRIND=$ac_cv_prog_VALGRIND +if test -n "$VALGRIND"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 +$as_echo "$VALGRIND" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "$VALGRIND" = ""; then : + + if test "$enable_valgrind" = "yes"; then : + + as_fn_error $? "Could not find valgrind; either install it or reconfigure with --disable-valgrind" "$LINENO" 5 + +else + + enable_valgrind=no + +fi + +else + + enable_valgrind=yes + +fi + +fi + + if test "$enable_valgrind" = "yes"; then + VALGRIND_ENABLED_TRUE= + VALGRIND_ENABLED_FALSE='#' +else + VALGRIND_ENABLED_TRUE='#' + VALGRIND_ENABLED_FALSE= +fi + + VALGRIND_ENABLED=$enable_valgrind + + + # Check for Valgrind tools we care about. + valgrind_enabled_tools= + + # Check whether --enable-valgrind-memcheck was given. +if test "${enable_valgrind_memcheck+set}" = set; then : + enableval=$enable_valgrind_memcheck; enable_valgrind_memcheck=$enableval +else + enable_valgrind_memcheck= +fi + + if test "$enable_valgrind" = "no"; then : + + enable_valgrind_memcheck=no +elif test "$enable_valgrind_memcheck" != "no"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Valgrind tool memcheck" >&5 +$as_echo_n "checking for Valgrind tool memcheck... " >&6; } +if ${ax_cv_valgrind_tool_memcheck+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_cv_valgrind_tool_memcheck=no + + if `$VALGRIND --tool=memcheck --help >/dev/null 2>&1`; then : + + ax_cv_valgrind_tool_memcheck=yes + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_valgrind_tool_memcheck" >&5 +$as_echo "$ax_cv_valgrind_tool_memcheck" >&6; } + if test "$ax_cv_valgrind_tool_memcheck" = "no"; then : + + if test "$enable_valgrind_memcheck" = "yes"; then : + + as_fn_error $? "Valgrind does not support memcheck; reconfigure with --disable-valgrind-memcheck" "$LINENO" 5 + +else + + enable_valgrind_memcheck=no + +fi + +else + + enable_valgrind_memcheck=yes + +fi + +fi + if test "$enable_valgrind_memcheck" = "yes"; then : + + valgrind_enabled_tools="$valgrind_enabled_tools memcheck" + +fi + ENABLE_VALGRIND_memcheck=$enable_valgrind_memcheck + + + # Check whether --enable-valgrind-helgrind was given. +if test "${enable_valgrind_helgrind+set}" = set; then : + enableval=$enable_valgrind_helgrind; enable_valgrind_helgrind=$enableval +else + enable_valgrind_helgrind= +fi + + if test "$enable_valgrind" = "no"; then : + + enable_valgrind_helgrind=no +elif test "$enable_valgrind_helgrind" != "no"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Valgrind tool helgrind" >&5 +$as_echo_n "checking for Valgrind tool helgrind... " >&6; } +if ${ax_cv_valgrind_tool_helgrind+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_cv_valgrind_tool_helgrind=no + + if `$VALGRIND --tool=helgrind --help >/dev/null 2>&1`; then : + + ax_cv_valgrind_tool_helgrind=yes + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_valgrind_tool_helgrind" >&5 +$as_echo "$ax_cv_valgrind_tool_helgrind" >&6; } + if test "$ax_cv_valgrind_tool_helgrind" = "no"; then : + + if test "$enable_valgrind_helgrind" = "yes"; then : + + as_fn_error $? "Valgrind does not support helgrind; reconfigure with --disable-valgrind-helgrind" "$LINENO" 5 + +else + + enable_valgrind_helgrind=no + +fi + +else + + enable_valgrind_helgrind=yes + +fi + +fi + if test "$enable_valgrind_helgrind" = "yes"; then : + + valgrind_enabled_tools="$valgrind_enabled_tools helgrind" + +fi + ENABLE_VALGRIND_helgrind=$enable_valgrind_helgrind + + + # Check whether --enable-valgrind-drd was given. +if test "${enable_valgrind_drd+set}" = set; then : + enableval=$enable_valgrind_drd; enable_valgrind_drd=$enableval +else + enable_valgrind_drd= +fi + + if test "$enable_valgrind" = "no"; then : + + enable_valgrind_drd=no +elif test "$enable_valgrind_drd" != "no"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Valgrind tool drd" >&5 +$as_echo_n "checking for Valgrind tool drd... " >&6; } +if ${ax_cv_valgrind_tool_drd+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_cv_valgrind_tool_drd=no + + if `$VALGRIND --tool=drd --help >/dev/null 2>&1`; then : + + ax_cv_valgrind_tool_drd=yes + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_valgrind_tool_drd" >&5 +$as_echo "$ax_cv_valgrind_tool_drd" >&6; } + if test "$ax_cv_valgrind_tool_drd" = "no"; then : + + if test "$enable_valgrind_drd" = "yes"; then : + + as_fn_error $? "Valgrind does not support drd; reconfigure with --disable-valgrind-drd" "$LINENO" 5 + +else + + enable_valgrind_drd=no + +fi + +else + + enable_valgrind_drd=yes + +fi + +fi + if test "$enable_valgrind_drd" = "yes"; then : + + valgrind_enabled_tools="$valgrind_enabled_tools drd" + +fi + ENABLE_VALGRIND_drd=$enable_valgrind_drd + + + # Check whether --enable-valgrind-sgcheck was given. +if test "${enable_valgrind_sgcheck+set}" = set; then : + enableval=$enable_valgrind_sgcheck; enable_valgrind_sgcheck=$enableval +else + enable_valgrind_sgcheck= +fi + + if test "$enable_valgrind" = "no"; then : + + enable_valgrind_sgcheck=no +elif test "$enable_valgrind_sgcheck" = "yes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Valgrind tool sgcheck" >&5 +$as_echo_n "checking for Valgrind tool sgcheck... " >&6; } +if ${ax_cv_valgrind_tool_sgcheck+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_cv_valgrind_tool_sgcheck=no + + if `$VALGRIND --tool=exp-sgcheck --help >/dev/null 2>&1`; then : + + ax_cv_valgrind_tool_sgcheck=yes + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_valgrind_tool_sgcheck" >&5 +$as_echo "$ax_cv_valgrind_tool_sgcheck" >&6; } + if test "$ax_cv_valgrind_tool_sgcheck" = "no"; then : + + if test "$enable_valgrind_sgcheck" = "yes"; then : + + as_fn_error $? "Valgrind does not support sgcheck; reconfigure with --disable-valgrind-sgcheck" "$LINENO" 5 + +else + + enable_valgrind_sgcheck=no + +fi + +else + + enable_valgrind_sgcheck=yes + +fi + +fi + if test "$enable_valgrind_sgcheck" = "yes"; then : + + valgrind_enabled_tools="$valgrind_enabled_tools sgcheck" + +fi + ENABLE_VALGRIND_sgcheck=$enable_valgrind_sgcheck + + + valgrind_tools="memcheck helgrind drd sgcheck" + + valgrind_enabled_tools=$valgrind_enabled_tools + + +VALGRIND_CHECK_RULES=' +# Valgrind check +# +# Optional: +# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions +# files to load. (Default: empty) +# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools. +# (Default: --num-callers=30) +# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of: +# memcheck, helgrind, drd, sgcheck). (Default: various) + +# Optional variables +VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES)) +VALGRIND_FLAGS ?= --num-callers=30 +VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no +VALGRIND_helgrind_FLAGS ?= --history-level=approx +VALGRIND_drd_FLAGS ?= +VALGRIND_sgcheck_FLAGS ?= + +# Internal use +valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools))) + +valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS) +valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS) +valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS) +valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS) + +valgrind_quiet = $(valgrind_quiet_$(V)) +valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY)) +valgrind_quiet_0 = --quiet +valgrind_v_use = $(valgrind_v_use_$(V)) +valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY)) +valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%-am,%,$''@):; + +# Support running with and without libtool. +ifneq ($(LIBTOOL),) +valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute +else +valgrind_lt = +endif + +# Use recursive makes in order to ignore errors during check +check-valgrind-am: +ifeq ($(VALGRIND_ENABLED),yes) + $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k \ + $(foreach tool, $(valgrind_enabled_tools), check-valgrind-$(tool)) +else + @echo "Need to reconfigure with --enable-valgrind" +endif + +# Valgrind running +VALGRIND_TESTS_ENVIRONMENT = \ + $(TESTS_ENVIRONMENT) \ + env VALGRIND=$(VALGRIND) \ + G_SLICE=always-malloc,debug-blocks \ + G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly + +VALGRIND_LOG_COMPILER = \ + $(valgrind_lt) \ + $(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS) + +define valgrind_tool_rule +check-valgrind-$(1)-am: +ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes) +ifneq ($$(TESTS),) + $$(valgrind_v_use)$$(MAKE) check-TESTS \ + TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \ + LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \ + LOG_FLAGS="$$(valgrind_$(1)_flags)" \ + TEST_SUITE_LOG=test-suite-$(1).log +endif +else ifeq ($$(VALGRIND_ENABLED),yes) + @echo "Need to reconfigure with --enable-valgrind-$(1)" +else + @echo "Need to reconfigure with --enable-valgrind" +endif +endef + +$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool)))) + +A''M_DISTCHECK_CONFIGURE_FLAGS ?= +A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind + +MOSTLYCLEANFILES ?= +MOSTLYCLEANFILES += $(valgrind_log_files) + +.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools)) +' + + + + + if test "x$VALGRIND_ENABLED" = xyes; then + ENABLE_VALGRIND_TRUE= + ENABLE_VALGRIND_FALSE='#' +else + ENABLE_VALGRIND_TRUE='#' + ENABLE_VALGRIND_FALSE= +fi + + ### # Doxygen and doxygen-related options. ### @@ -3808,6 +4269,8 @@ else DOXYGEN_SEARCHENGINE="YES" fi +DOXYGEN_SERVER_BASED_SEARCH="NO" + # Check whether --enable-doxygen-pdf-output was given. if test "${enable_doxygen_pdf_output+set}" = set; then : @@ -3841,6 +4304,17 @@ test "x$enable_internal_docs" = xyes || enable_internal_docs=no BUILD_INTERNAL_DOCS=$enable_internal_docs +# Doxygen is apparently buggy when trying to combine a markdown +# file with @internal. The equivalent can be faked using +# the Doxygen ENABLED_SECTIONS mechanism. See docs/testserver.dox +# to see how this is done. +sections= +if test "x$enable_internal_docs" = xyes ; then +sections="$sections INTERNAL" +fi +ENABLED_DOC_SECTIONS=$sections + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsync support is enabled" >&5 $as_echo_n "checking if fsync support is enabled... " >&6; } # Check whether --enable-fsync was given. @@ -3860,9 +4334,13 @@ $as_echo "#define USE_FSYNC 1" >>confdefs.h fi # Temporary until JNA bug is fixed (which is probably never). -# See Jira NCF-298 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if jna bug workaround is enabledd" >&5 -$as_echo_n "checking if jna bug workaround is enabledd... " >&6; } +# The problem being solved is this: +# > On Windows using the microsoft runtime, it is an error +# > for one library to free memory allocated by a different library. +# This is probably only an issue when using the netcdf-c library +# via JNA under Java. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if jna bug workaround is enabled" >&5 +$as_echo_n "checking if jna bug workaround is enabled... " >&6; } # Check whether --enable-jna was given. if test "${enable_jna+set}" = set; then : enableval=$enable_jna; @@ -3879,18 +4357,6 @@ $as_echo "#define JNA 1" >>confdefs.h fi -# Does the user want to run extra tests with valgrind? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra valgrind tests should be run" >&5 -$as_echo_n "checking whether extra valgrind tests should be run... " >&6; } -# Check whether --enable-valgrind-tests was given. -if test "${enable_valgrind_tests+set}" = set; then : - enableval=$enable_valgrind_tests; -fi - -test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_valgrind_tests" >&5 -$as_echo "$enable_valgrind_tests" >&6; } - # Does the user want to build netcdf-4? { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should build netCDF-4" >&5 $as_echo_n "checking whether we should build netCDF-4... " >&6; } @@ -3900,6 +4366,7 @@ if test "${enable_netcdf_4+set}" = set; then : fi test "x$enable_netcdf_4" = xno || enable_netcdf_4=yes +enable_hdf5=enable_netcdf_4 # Synonym # Check whether --enable-netcdf4 was given. @@ -3936,6 +4403,9 @@ if test "${enable_hdf4+set}" = set; then : fi test "x$enable_hdf4" = xyes || enable_hdf4=no +if test "x$enable_hdf4" = xyes -a "x$enable_netcdf_4" = xno; then + as_fn_error $? "NetCDF-4 is required for HDF4 features" "$LINENO" 5 +fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hdf4" >&5 $as_echo "$enable_hdf4" >&6; } @@ -3960,9 +4430,9 @@ $as_echo "$enable_hdf4_file_tests" >&6; } # automatically? { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should attempt to install netcdf-fortran (EXPERIMENTAL)" >&5 $as_echo_n "checking whether we should attempt to install netcdf-fortran (EXPERIMENTAL)... " >&6; } -# Check whether --enable-fortran was given. -if test "${enable_fortran+set}" = set; then : - enableval=$enable_fortran; +# Check whether --enable-remote-fortran-bootstrap was given. +if test "${enable_remote_fortran_bootstrap+set}" = set; then : + enableval=$enable_remote_fortran_bootstrap; fi test "x$enable_remote_fortran_bootstrap" = xyes || enable_remote_fortran_bootstrap=no @@ -3993,6 +4463,22 @@ test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel_tests" >&5 $as_echo "$enable_parallel_tests" >&6; } +# Did the user specify an MPI launcher other than mpiexec? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a user specified program to run mpi programs" >&5 +$as_echo_n "checking whether a user specified program to run mpi programs... " >&6; } + +# Check whether --with-mpiexec was given. +if test "${with_mpiexec+set}" = set; then : + withval=$with_mpiexec; MPIEXEC=$with_mpiexec +else + MPIEXEC=mpiexec +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIEXEC" >&5 +$as_echo "$MPIEXEC" >&6; } +MPIEXEC=$MPIEXEC + + # Did the user specify a default chunk size? { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default chunk size in bytes was specified" >&5 $as_echo_n "checking whether a default chunk size in bytes was specified... " >&6; } @@ -4119,9 +4605,27 @@ test "x$enable_logging" = xyes || enable_logging=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_logging" >&5 $as_echo "$enable_logging" >&6; } -## Capture the state of the --enable-dap flag -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DAP client is to be built" >&5 -$as_echo_n "checking whether DAP client is to be built... " >&6; } +# Does the user want to turn off nc_set_log_level() function? (It will +# always be defined if --enable-logging is used.) +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nc_set_log_level() function is included (will do nothing unless enable-logging is also used)" >&5 +$as_echo_n "checking whether nc_set_log_level() function is included (will do nothing unless enable-logging is also used)... " >&6; } +# Check whether --enable-set_log_level_func was given. +if test "${enable_set_log_level_func+set}" = set; then : + enableval=$enable_set_log_level_func; +fi + +test "x$enable_set_log_level_func" = xno -a "x$enable_logging" = xno || enable_set_log_level_func=yes +if test "x$enable_set_log_level_func" = xyes -a "x$enable_netcdf_4" = xyes; then + +$as_echo "#define ENABLE_SET_LOG_LEVEL 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_set_log_level_func" >&5 +$as_echo "$enable_set_log_level_func" >&6; } + +## Capture the state of the --enable-dap flag => enable dap2+dap4 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DAP client(s) are to be built" >&5 +$as_echo_n "checking whether DAP client(s) are to be built... " >&6; } # Check whether --enable-dap was given. if test "${enable_dap+set}" = set; then : enableval=$enable_dap; @@ -4131,92 +4635,19 @@ test "x$enable_dap" = xno || enable_dap=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap" >&5 $as_echo "$enable_dap" >&6; } -# Curl support is required if and only if any of these flags are set: -# 1. --enable-dap - -if test "x$enable_dap" = "xyes" ; then -require_curl=yes -else -require_curl=no -fi - -# See if the user provided us with a curl library -# Do an initial lib test for curl, but suppress the default action -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 - (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - case $?:`cat confinc.out 2>/dev/null` in #( - '0:this is the am__doit target') : - case $s in #( - BSD) : - am__include='.include' am__quote='"' ;; #( - *) : - am__include='include' am__quote='' ;; -esac ;; #( - *) : - ;; -esac - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 +# We need curl for DAP. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -5053,134 +5484,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_setopt in -lcurl" >&5 $as_echo_n "checking for curl_easy_setopt in -lcurl... " >&6; } @@ -5224,21 +5527,8 @@ else found_curl=no fi -#AC_CHECK_LIB([curl.dll],[curl_easy_setopt]) -# If curl is required but there is no curl, then complain -if test $require_curl = yes ; then - # Removed. Why assume no curl if we are building DLL? - #if test $enable_dll = yes ; then - # AC_MSG_NOTICE([libcurl not found; continuing]) - #elif test $found_curl = no ; then - if test $found_curl = no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: libcurl not found; disabling remote protocol(s) support" >&5 -$as_echo "$as_me: libcurl not found; disabling remote protocol(s) support" >&6;} - enable_dap=no - elif test $found_curl = yes ; then - # Redo the check lib to actually add -lcurl - #AC_CHECK_LIB([curl], [curl_easy_setopt]) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing curl_easy_setopt" >&5 +if test "x$enable_dap" = "xyes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing curl_easy_setopt" >&5 $as_echo_n "checking for library containing curl_easy_setopt... " >&6; } if ${ac_cv_search_curl_easy_setopt+:} false; then : $as_echo_n "(cached) " >&6 @@ -5292,11 +5582,14 @@ ac_res=$ac_cv_search_curl_easy_setopt if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +else + as_fn_error $? "curl required for remote access. Install curl or build with --disable-dap." "$LINENO" 5 fi - fi fi +# --enable-dap => enable-dap4 +enable_dap4=$enable_dap # Default is now to always do the short remote tests { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dap remote testing should be enabled (default off)" >&5 $as_echo_n "checking whether dap remote testing should be enabled (default off)... " >&6; } @@ -5306,9 +5599,7 @@ if test "${enable_dap_remote_tests+set}" = set; then : else enable_dap_remote_tests=no fi - # BSK - disabled by default - - + # disabled by default test "x$enable_dap_remote_tests" = xno || enable_dap_remote_tests=yes if test "x$enable_dap" = "xno" ; then enable_dap_remote_tests=no @@ -5337,27 +5628,51 @@ fi $as_echo "$enable_dap_auth_tests" >&6; } # Control if groups are supported in [netcdf4]dap2 code -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netcdf4 group names should be enabled (default on)" >&5 -$as_echo_n "checking whether netcdf4 group names should be enabled (default on)... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netcdf4 group names for DAP2 should be enabled (default on)" >&5 +$as_echo_n "checking whether netcdf4 group names for DAP2 should be enabled (default on)... " >&6; } # Check whether --enable-dap-groups was given. if test "${enable_dap_groups+set}" = set; then : enableval=$enable_dap_groups; fi -test "x$enable_groups" = xno || enable_dap_groups=yes -if test "x$enable_dap" = "xno" -o "x$enable_enable_netcdf_4" = "xno" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: dap groups disabled because dap disabled or netcdf-4 disabled" >&5 -$as_echo "$as_me: dap groups disabled because dap disabled or netcdf-4 disabled" >&6;} - enable_dap_groups=no -fi +test "x$enable_dap_groups" = xno || enable_dap_groups=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_groups" >&5 $as_echo "$enable_dap_groups" >&6; } +if test "x$enable_dap" = "xno" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: DAP2 groups is being disabled because DAP2 support is disabled or netcdf-4 disabled" >&5 +$as_echo "$as_me: DAP2 groups is being disabled because DAP2 support is disabled or netcdf-4 disabled" >&6;} + enable_dap_groups=no +fi if test "x$enable_dap_groups" = xyes; then $as_echo "#define ENABLE_DAP_GROUPS 1" >>confdefs.h fi +# Did the user specify a list of test servers to try for remote tests? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which remote test server(s) to use" >&5 +$as_echo_n "checking which remote test server(s) to use... " >&6; } + +# Check whether --with-testservers was given. +if test "${with_testservers+set}" = set; then : + withval=$with_testservers; REMOTETESTSERVERS=$with_testservers +else + REMOTETESTSERVERS=no +fi + +msg="$REMOTETESTSERVERS" +if test "x$REMOTETESTSERVERS" = xno ; then + svclist="149.165.169.123:8080,remotetest.unidata.ucar.edu" + REMOTETESTSERVERS="$svclist" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $svclist" >&5 +$as_echo "$svclist" >&6; } + +cat >>confdefs.h <<_ACEOF +#define REMOTETESTSERVERS "$REMOTETESTSERVERS" +_ACEOF + + # Set the config.h flags if test "x$enable_dap" = xyes; then @@ -5397,28 +5712,31 @@ else fi -# 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. -if test "${enable_extra_tests+set}" = set; then : - enableval=$enable_extra_tests; +# Check whether we want to enable strict null byte header padding. +# See https://github.com/Unidata/netcdf-c/issues/657 for more information. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable strict null-byte header padding when reading (default off)" >&5 +$as_echo_n "checking whether to enable strict null-byte header padding when reading (default off)... " >&6; } +# Check whether --enable-strict-null-byte-header-padding was given. +if test "${enable_strict_null_byte_header_padding+set}" = set; then : + enableval=$enable_strict_null_byte_header_padding; fi -test "x$enable_extra_tests" = xno || enable_extra_tests=yes -{ $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 +test "x$enable_strict_null_byte_header_padding" = xyes || enable_strict_null_byte_header_padding=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_strict_null_byte_header_padding" >&5 +$as_echo "$enable_strict_null_byte_header_padding" >&6; } + +if test "x$enable_strict_null_byte_header_padding" = xyes; then -$as_echo "#define EXTRA_TESTS 1" >>confdefs.h +$as_echo "#define USE_STRICT_NULL_BYTE_HEADER_PADDING 1" >>confdefs.h fi - if test x$enable_extra_tests = xyes; then - EXTRA_TESTS_TRUE= - EXTRA_TESTS_FALSE='#' + + if test x$enable_strict_null_byte_header_padding = xyes ; then + USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE= + USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE='#' else - EXTRA_TESTS_TRUE='#' - EXTRA_TESTS_FALSE= + USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE='#' + USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE= fi @@ -5472,9 +5790,6 @@ else fi -# Does the user want to enable the user-provided NEC-SX vectorization -# patch. - nc_build_c=yes nc_build_v2=yes nc_build_utilities=yes @@ -5564,8 +5879,7 @@ if test "${enable_testsets+set}" = set; then : else enable_testsets=no fi - # BSK - disabled by default - + # disabled by default test "x$enable_testsets" = xno || enable_testsets=yes nc_build_tests=$enable_testsets { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_tests" >&5 @@ -5670,6 +5984,222 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Specify extra values to add to _NCProperties attribute +# --with-ncproperties-extra="=|...". +# Note: need to figure out a way to do this programmatically also +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Extra values for _NCProperties" >&5 +$as_echo_n "checking Extra values for _NCProperties... " >&6; } + +# Check whether --with-ncproperties-extra was given. +if test "${with_ncproperties_extra+set}" = set; then : + withval=$with_ncproperties_extra; NCPROPERTIES_EXTRA=$with_ncproperties_extra +else + NCPROPERTIES_EXTRA="" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $NCPROPERTIES_EXTRA" >&5 +$as_echo "$NCPROPERTIES_EXTRA" >&6; } + +cat >>confdefs.h <<_ACEOF +#define NCPROPERTIES_EXTRA "$NCPROPERTIES_EXTRA" +_ACEOF + + +# Did the user specify a user-defined format 0? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user-defined format 0 was specified" >&5 +$as_echo_n "checking whether user-defined format 0 was specified... " >&6; } + +# Check whether --with-udf0 was given. +if test "${with_udf0+set}" = set; then : + withval=$with_udf0; UDF0_DISPATCH=$with_udf0 +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UDF0_DISPATCH" >&5 +$as_echo "$UDF0_DISPATCH" >&6; } +if test -n "$UDF0_DISPATCH"; then + +cat >>confdefs.h <<_ACEOF +#define UDF0_DISPATCH $UDF0_DISPATCH +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define UDF0_DISPATCH_FUNC get_$UDF0_DISPATCH() +_ACEOF + + +$as_echo "#define USE_UDF0 1" >>confdefs.h + + as_ac_Lib=`$as_echo "ac_cv_lib_$UDF0_DISPATCH''_get_$UDF0_DISPATCH" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for get_$UDF0_DISPATCH in -l$UDF0_DISPATCH" >&5 +$as_echo_n "checking for get_$UDF0_DISPATCH in -l$UDF0_DISPATCH... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$UDF0_DISPATCH $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char get_$UDF0_DISPATCH (); +int +main () +{ +return get_$UDF0_DISPATCH (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_LIB$UDF0_DISPATCH" | $as_tr_cpp` 1 +_ACEOF + + LIBS="-l$UDF0_DISPATCH $LIBS" + +else + as_fn_error $? "Can't find or link to the user-defined format 0 library." "$LINENO" 5 +fi + +fi + +# Did the user specify a magic number for user-defined format 0? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a magic number for user-defined format 0 was specified" >&5 +$as_echo_n "checking whether a magic number for user-defined format 0 was specified... " >&6; } + +# Check whether --with-udf0-magic-number was given. +if test "${with_udf0_magic_number+set}" = set; then : + withval=$with_udf0_magic_number; UDF0_MAGIC_NUMBER=$with_udf0_magic_number +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UDF0_MAGIC_NUMBER" >&5 +$as_echo "$UDF0_MAGIC_NUMBER" >&6; } + +# Did the user specify a user-defined format 1? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether user-defined format 1 was specified" >&5 +$as_echo_n "checking whether user-defined format 1 was specified... " >&6; } + +# Check whether --with-udf1 was given. +if test "${with_udf1+set}" = set; then : + withval=$with_udf1; UDF1_DISPATCH=$with_udf1 +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UDF1_DISPATCH" >&5 +$as_echo "$UDF1_DISPATCH" >&6; } +if test -n "$UDF1_DISPATCH"; then + +cat >>confdefs.h <<_ACEOF +#define UDF1_DISPATCH $UDF1_DISPATCH +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define UDF1_DISPATCH_FUNC get_$UDF1_DISPATCH() +_ACEOF + + +$as_echo "#define USE_UDF1 1" >>confdefs.h + + as_ac_Lib=`$as_echo "ac_cv_lib_$UDF1_DISPATCH''_get_$UDF1_DISPATCH" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for get_$UDF1_DISPATCH in -l$UDF1_DISPATCH" >&5 +$as_echo_n "checking for get_$UDF1_DISPATCH in -l$UDF1_DISPATCH... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$UDF1_DISPATCH $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char get_$UDF1_DISPATCH (); +int +main () +{ +return get_$UDF1_DISPATCH (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_LIB$UDF1_DISPATCH" | $as_tr_cpp` 1 +_ACEOF + + LIBS="-l$UDF1_DISPATCH $LIBS" + +else + as_fn_error $? "Can't find or link to the user-defined format 1 library." "$LINENO" 5 +fi + +fi + +# Did the user specify a magic number for user-defined format 0? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a magic number for user-defined format 1 was specified" >&5 +$as_echo_n "checking whether a magic number for user-defined format 1 was specified... " >&6; } + +# Check whether --with-udf1-magic-number was given. +if test "${with_udf1_magic_number+set}" = set; then : + withval=$with_udf1_magic_number; UDF1_MAGIC_NUMBER=$with_udf1_magic_number +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UDF1_MAGIC_NUMBER" >&5 +$as_echo "$UDF1_MAGIC_NUMBER" >&6; } + +# Did the user specify a default cache preemption? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default cache preemption for HDF5 was specified" >&5 +$as_echo_n "checking whether a default cache preemption for HDF5 was specified... " >&6; } + +# Check whether --with-chunk-cache-preemption was given. +if test "${with_chunk_cache_preemption+set}" = set; then : + withval=$with_chunk_cache_preemption; CHUNK_CACHE_PREEMPTION=$with_chunk_cache_preemption +else + CHUNK_CACHE_PREEMPTION=0.75 +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHUNK_CACHE_PREEMPTION" >&5 +$as_echo "$CHUNK_CACHE_PREEMPTION" >&6; } + +cat >>confdefs.h <<_ACEOF +#define CHUNK_CACHE_PREEMPTION $CHUNK_CACHE_PREEMPTION +_ACEOF + + # According to the autoconf mailing list gurus, we must test for # compilers unconditionally. That is, we can't skip looking for the # fortran compilers, just because the user doesn't want fortran. This @@ -6299,134 +6829,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } @@ -6515,6 +6917,7 @@ fi # CURLOPT_KEYPASSWD is not defined until curl version 7.16.4 # CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7 # CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0 +# CURL_MAX_READ_SIZE is not defined until 7.59 # Save/restore CFLAGS SAVECFLAGS="$CFLAGS" @@ -6634,33 +7037,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int main () { -int x = CURLOPT_CHUNK_BGN_FUNCTION; +int x = CURLOPT_BUFFERSIZE; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - havebgnfunction=yes + havecurloption=yes else - havebgnfunction=no + havecurloption=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_CHUNK_BGN_FUNCTION is defined" >&5 -$as_echo_n "checking whether CURLOPT_CHUNK_BGN_FUNCTION is defined... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havebgnfunction}" >&5 -$as_echo "${havebgnfunction}" >&6; } -if test $havebgnfunction = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_BUFFERSIZE is defined" >&5 +$as_echo_n "checking whether CURLOPT_BUFFERSIZE is defined... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havecurloption}" >&5 +$as_echo "${havecurloption}" >&6; } +if test $havecurloption = yes; then -$as_echo "#define HAVE_CURLOPT_CHUNK_BGN_FUNCTION 1" >>confdefs.h +$as_echo "#define HAVE_CURLOPT_BUFFERSIZE 1" >>confdefs.h fi -CFLAGS="$SAVECFLAGS" - -# Set up libtool. -{ $as_echo "$as_me:${as_lineno-$LINENO}: setting up libtool" >&5 -$as_echo "$as_me: setting up libtool" >&6;} - +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include "curl/curl.h" +int +main () +{ +int x = CURLOPT_TCP_KEEPALIVE; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + havecurloption=yes +else + havecurloption=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_TCP_KEEPALIVE is defined" >&5 +$as_echo_n "checking whether CURLOPT_TCP_KEEPALIVE is defined... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havecurloption}" >&5 +$as_echo "${havecurloption}" >&6; } +if test $havecurloption = yes; then + +$as_echo "#define HAVE_CURLOPT_KEEPALIVE 1" >>confdefs.h + +fi + +CFLAGS="$SAVECFLAGS" + +# Set up libtool. +{ $as_echo "$as_me:${as_lineno-$LINENO}: setting up libtool" >&5 +$as_echo "$as_me: setting up libtool" >&6;} + case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 @@ -7774,6 +8204,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : @@ -8116,6 +8549,9 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : @@ -10357,365 +10793,67 @@ done # Set options -enable_win32_dll=yes -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; 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_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as" - $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 -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi + enable_dlopen=no -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi + enable_win32_dll=no - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac else - AS="$ac_cv_prog_AS" + enable_shared=yes fi - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes + enable_static=yes fi @@ -14951,14 +15089,6 @@ CC=$lt_save_CC -# Valgrind tests don't work with shared builds because of some libtool -# weirdness. -if test "x$enable_shared" = xyes; then - if test $enable_valgrind_tests = yes; then - as_fn_error $? "No valgrind tests with shared libraries" "$LINENO" 5 - fi -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: finding other utilities" >&5 $as_echo "$as_me: finding other utilities" >&6;} @@ -15450,26 +15580,6 @@ echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> c { $as_echo "$as_me:${as_lineno-$LINENO}: checking types, headers, and functions" >&5 $as_echo "$as_me: checking types, headers, and functions" >&6;} -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 : - -else - -$as_echo "#define NO_STDLIB_H /**/" >>confdefs.h - -fi - - -ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes; then : - -else - -$as_echo "#define NO_SYS_TYPES_H /**/" >>confdefs.h - -fi - - for ac_header in sys/param.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" @@ -15482,265 +15592,119 @@ fi done +for ac_header in libgen.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default" +if test "x$ac_cv_header_libgen_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBGEN_H 1 +_ACEOF + +fi + +done + #AC_CHECK_HEADERS([locale.h]) -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include <$ac_hdr> +#include +#include +#include +#include int main () { -if ((DIR *) 0) -return 0; + ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_ac_Header=yes" + ac_cv_header_stdc=yes else - eval "$as_ac_Header=no" + ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no fi -eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + _ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : -ac_header_dirent=$ac_hdr; break +else + ac_cv_header_stdc=no fi +rm -f conftest* -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif -char opendir (); + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { -return opendir (); - ; + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; return 0; } _ACEOF -for ac_lib in '' dir; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : +if ac_fn_c_try_run "$LINENO"; then : else - ac_cv_search_opendir=no + ac_cv_header_stdc=no fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : - -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi @@ -15753,83 +15717,7 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 -$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } -if ${ac_cv_header_sys_wait_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) -#endif -#ifndef WIFEXITED -# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif - -int -main () -{ - int s; - wait (&s); - s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_sys_wait_h=yes -else - ac_cv_header_sys_wait_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 -$as_echo "$ac_cv_header_sys_wait_h" >&6; } -if test $ac_cv_header_sys_wait_h = yes; then - -$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - -for ac_header in locale.h stdio.h stdarg.h errno.h ctype.h fcntl.h malloc.h stdlib.h string.h strings.h unistd.h sys/stat.h getopt.h sys/time.h +for ac_header in locale.h stdio.h stdarg.h fcntl.h malloc.h stdlib.h string.h strings.h unistd.h sys/stat.h getopt.h sys/time.h sys/types.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -15842,25 +15730,6 @@ fi done -for ac_func in vprintf -do : - ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" -if test "x$ac_cv_func_vprintf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_VPRINTF 1 -_ACEOF - -ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" -if test "x$ac_cv_func__doprnt" = xyes; then : - -$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h - -fi - -fi -done - - # Do sys/resource.h separately #AC_CHECK_HEADERS([sys/resource.h],[havesysresource=1],[havesysresource=0]) @@ -15879,106 +15748,25 @@ done #fi -# Check for that conforms to C99 requirements -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } -if ${ac_cv_header_stdbool_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; - -int -main () -{ - - bool e = &s; - *pq |= q; - *pq |= ! q; - /* 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; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdbool_h=yes -else - ac_cv_header_stdbool_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -$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 +# See if we have ftw.h to walk directory trees +for ac_header in ftw.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "ftw.h" "ac_cv_header_ftw_h" "$ac_includes_default" +if test "x$ac_cv_header_ftw_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FTW_H 1 _ACEOF - fi - -if test $ac_cv_header_stdbool_h = yes; then - -$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h - -fi +done # Check for these functions... -for ac_func in strlcat strerror snprintf strchr strrchr strcat strcpy \ - strdup strcasecmp strtod strtoll strtoull strstr \ - mkstemp rand random memcmp \ - getrlimit gettimeofday fsync MPI_Comm_f2c +for ac_func in strlcat snprintf \ + strdup strtoll strtoull \ + mkstemp mktemp random \ + getrlimit gettimeofday fsync MPI_Comm_f2c MPI_Info_f2c do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -15991,24 +15779,17 @@ fi done -# Does the user want to use NC_DISKLESS? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether in-memory files are enabled" >&5 -$as_echo_n "checking whether in-memory files are enabled... " >&6; } -# Check whether --enable-diskless was given. -if test "${enable_diskless+set}" = set; then : - enableval=$enable_diskless; +# disable dap4 if netcdf-4 is disabled +if test "x$enable_netcdf_4" = "xno" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: netcdf-4 not enabled; disabling DAP4" >&5 +$as_echo "$as_me: WARNING: netcdf-4 not enabled; disabling DAP4" >&2;} + enable_dap4=no fi -test "x$enable_diskless" = xno || enable_diskless=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_diskless" >&5 -$as_echo "$enable_diskless" >&6; } +if test "x$enable_dap4" = xyes; then + +$as_echo "#define ENABLE_DAP4 1" >>confdefs.h -# Check for enable DAP -if test "x$enable_dap" = "xyes" -a "xenable_diskless" = xno ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: --enable-dap requires --enable-diskless" >&5 -$as_echo "$as_me: --enable-dap requires --enable-diskless" >&6;} -{ $as_echo "$as_me:${as_lineno-$LINENO}: dap support disabled" >&5 -$as_echo "$as_me: dap support disabled" >&6;} fi # check for useful, but not essential, memio support @@ -16038,206 +15819,18 @@ test "x$enable_mmap" = xyes || enable_mmap=no $as_echo "$enable_mmap" >&6; } # check for mmap and mremap availability before committing to use mmap - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in getpagesize +for ac_func in mmap do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : + ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" +if test "x$ac_cv_func_mmap" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - const char *cdata2; - int i, pagesize; - int fd, fd2; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 2; - if (write (fd, data, pagesize) != pagesize) - return 3; - close (fd); - - /* Next, check that the tail of a page is zero-filled. File must have - non-zero length, otherwise we risk SIGBUS for entire page. */ - fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); - if (fd2 < 0) - return 4; - cdata2 = ""; - if (write (fd2, cdata2, 1) != 1) - return 5; - data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); - if (data2 == MAP_FAILED) - return 6; - for (i = 0; i < pagesize; ++i) - if (*(data2 + i)) - return 7; - close (fd2); - if (munmap (data2, pagesize)) - return 8; - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 9; - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 10; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 11; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 12; - if (read (fd, data3, pagesize) != pagesize) - return 13; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 14; - close (fd); - return 0; -} +#define HAVE_MMAP 1 _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes + have_mmap=yes else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "#define HAVE_MMAP 1" >>confdefs.h - + have_mmap=no fi -rm -f conftest.mmap conftest.txt +done for ac_func in mremap do : @@ -16246,26 +15839,26 @@ if test "x$ac_cv_func_mremap" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MREMAP 1 _ACEOF - + have_mremap=yes +else + have_mremap=no fi done -if test "x$ac_cv_func_mmap_fixed_mapped" != xyes -o "x$ac_cv_func_mremap" != xyes ; then - echo "mmap function or mremap function is not available: disabling mmap" +if test "x$have_mmap" != xyes ; then + echo "mmap function is not available: disabling mmap" + enable_mmap=no +fi +if test "x$have_mremap" != xyes ; then + echo "mremap function is not available: disabling mmap" enable_mmap=no fi -# Setup the diskless and mmap conditionals -if test "x$enable_diskless" = xyes ; then - -$as_echo "#define USE_DISKLESS 1" >>confdefs.h - - if test "x$enable_mmap" = xyes; then +if test "x$enable_mmap" = xyes; then $as_echo "#define USE_MMAP 1" >>confdefs.h - fi fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" @@ -16498,17 +16091,6 @@ fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_ISFINITE $ac_have_decl _ACEOF -ac_fn_c_check_decl "$LINENO" "signbit" "ac_cv_have_decl_signbit" "#include -" -if test "x$ac_cv_have_decl_signbit" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SIGNBIT $ac_have_decl -_ACEOF ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : @@ -16582,28 +16164,6 @@ 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 -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -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 : - cat >>confdefs.h <<_ACEOF #define HAVE_SIZE_T 1 _ACEOF @@ -16619,11 +16179,11 @@ _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 : +ac_fn_c_check_type "$LINENO" "schar" "ac_cv_type_schar" "$ac_includes_default" +if test "x$ac_cv_type_schar" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_PTRDIFF_T 1 +#define HAVE_SCHAR 1 _ACEOF @@ -16683,6 +16243,54 @@ _ACEOF fi +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + + + ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" +if test "x$ac_cv_type_uintptr_t" = xyes; then : + +$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h + +else + for ac_type in 'unsigned int' 'unsigned long int' \ + 'unsigned long long int'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +cat >>confdefs.h <<_ACEOF +#define uintptr_t $ac_type +_ACEOF + + ac_type= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test -z "$ac_type" && break + done +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 $as_echo_n "checking whether char is unsigned... " >&6; } if ${ac_cv_c_char_unsigned+:} false; then : @@ -16948,10 +16556,19 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h SLEEPCMD="" PLTFORMOUT="$(uname | cut -d '_' -f 1)" if test "$PLTFORMOUT" = "CYGWIN"; then + ISCYGWIN=yes SLEEPCMD="sleep 5" { $as_echo "$as_me:${as_lineno-$LINENO}: Pausing between sizeof() checks to mitigate a Cygwin issue." >&5 $as_echo "$as_me: Pausing between sizeof() checks to mitigate a Cygwin issue." >&6;} fi + if test "x$ISCYGWIN" = xyes; then + ISCYGWIN_TRUE= + ISCYGWIN_FALSE='#' +else + ISCYGWIN_TRUE='#' + ISCYGWIN_FALSE= +fi + $SLEEPCMD # The cast to long int works around a bug in the HP C Compiler @@ -17260,6 +16877,115 @@ _ACEOF +# Check whether we want to enable CDF5 support. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CDF5 support should be disabled" >&5 +$as_echo_n "checking whether CDF5 support should be disabled... " >&6; } +# Check whether --enable-cdf5 was given. +if test "${enable_cdf5+set}" = set; then : + enableval=$enable_cdf5; enable_cdf5=${enableval} +else + enable_cdf5=auto + +fi + +if test "$ac_cv_sizeof_size_t" -lt "8" ; then + if test "x${enable_cdf5}" = xyes ; then + as_fn_error $? "Unable to support CDF5 feature because size_t is less than 8 bytes" "$LINENO" 5 + fi + enable_cdf5=no +else + if test "x${enable_cdf5}" != xno ; then + enable_cdf5=yes + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cdf5" >&5 +$as_echo "$enable_cdf5" >&6; } + +if test "x${enable_cdf5}" = xyes; then + +$as_echo "#define ENABLE_CDF5 1" >>confdefs.h + +fi + if test x$enable_cdf5 = xyes ; then + ENABLE_CDF5_TRUE= + ENABLE_CDF5_FALSE='#' +else + ENABLE_CDF5_TRUE='#' + ENABLE_CDF5_FALSE= +fi + + +$SLEEPCMD +if test "$ac_cv_type_uchar" = yes ; then + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of uchar" >&5 +$as_echo_n "checking size of uchar... " >&6; } +if ${ac_cv_sizeof_uchar+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uchar))" "ac_cv_sizeof_uchar" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_uchar" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (uchar) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_uchar=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uchar" >&5 +$as_echo "$ac_cv_sizeof_uchar" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UCHAR $ac_cv_sizeof_uchar +_ACEOF + + +else + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned char" >&5 +$as_echo_n "checking size of unsigned char... " >&6; } +if ${ac_cv_sizeof_unsigned_char+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned char))" "ac_cv_sizeof_unsigned_char" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_unsigned_char" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (unsigned char) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_unsigned_char=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_char" >&5 +$as_echo "$ac_cv_sizeof_unsigned_char" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_CHAR $ac_cv_sizeof_unsigned_char +_ACEOF + + +fi + $SLEEPCMD if test "$ac_cv_type_ushort" = yes ; then # The cast to long int works around a bug in the HP C Compiler @@ -17401,42 +17127,6 @@ _ACEOF fi - -$SLEEPCMD -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long long" >&5 -$as_echo_n "checking size of unsigned long long... " >&6; } -if ${ac_cv_sizeof_unsigned_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long long))" "ac_cv_sizeof_unsigned_long_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned long long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_long_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_long" >&5 -$as_echo "$ac_cv_sizeof_unsigned_long_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long -_ACEOF - - - $SLEEPCMD if test "$ac_cv_type_ushort" = yes ; then # The cast to long int works around a bug in the HP C Compiler @@ -17582,35 +17272,68 @@ $SLEEPCMD # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ptrdiff_t" >&5 -$as_echo_n "checking size of ptrdiff_t... " >&6; } -if ${ac_cv_sizeof_ptrdiff_t+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 +$as_echo_n "checking size of ssize_t... " >&6; } +if ${ac_cv_sizeof_ssize_t+:} false; then : $as_echo_n "(cached) " >&6 else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ptrdiff_t))" "ac_cv_sizeof_ptrdiff_t" "$ac_includes_default"; then : + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default"; then : else - if test "$ac_cv_type_ptrdiff_t" = yes; then + if test "$ac_cv_type_ssize_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (ptrdiff_t) +as_fn_error 77 "cannot compute sizeof (ssize_t) See \`config.log' for more details" "$LINENO" 5; } else - ac_cv_sizeof_ptrdiff_t=0 + ac_cv_sizeof_ssize_t=0 fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ptrdiff_t" >&5 -$as_echo "$ac_cv_sizeof_ptrdiff_t" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5 +$as_echo "$ac_cv_sizeof_ssize_t" >&6; } cat >>confdefs.h <<_ACEOF -#define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t +#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t _ACEOF +$SLEEPCMD +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5 +$as_echo_n "checking size of void*... " >&6; } +if ${ac_cv_sizeof_voidp+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_voidp" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (void*) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_voidp=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 +$as_echo "$ac_cv_sizeof_voidp" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOIDP $ac_cv_sizeof_voidp +_ACEOF + if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then @@ -17671,19 +17394,15 @@ if test "$ac_res" != no; then : else as_fn_error $? "Can't find or link to the z library. Turn off netCDF-4 and \ - opendap with --disable-netcdf-4 --disable-dap, or see config.log for errors." "$LINENO" 5 + DAP clients with --disable-netcdf-4 --disable-dap, or see config.log for errors." "$LINENO" 5 fi -fi - -# We need the math library -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5 -$as_echo_n "checking for floor in -lm... " >&6; } -if ${ac_cv_lib_m_floor+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5 +$as_echo_n "checking for library containing SZ_Compress... " >&6; } +if ${ac_cv_search_SZ_Compress+:} false; then : $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" + ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17693,73 +17412,113 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char floor (); +char SZ_Compress (); int main () { -return floor (); +return SZ_Compress (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_floor=yes -else - ac_cv_lib_m_floor=no +for ac_lib in '' szip sz; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_SZ_Compress=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if ${ac_cv_search_SZ_Compress+:} false; then : + break fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_floor" >&5 -$as_echo "$ac_cv_lib_m_floor" >&6; } -if test "x$ac_cv_lib_m_floor" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" +done +if ${ac_cv_search_SZ_Compress+:} false; then : else - as_fn_error $? "Can't find or link to the math library." "$LINENO" 5 + ac_cv_search_SZ_Compress=no fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SZ_Compress" >&5 +$as_echo "$ac_cv_search_SZ_Compress" >&6; } +ac_res=$ac_cv_search_SZ_Compress +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +fi -if test "x$enable_netcdf_4" = xyes; then - - -$as_echo "#define USE_NETCDF4 1" >>confdefs.h - - -$as_echo "#define H5_USE_16_API 1" >>confdefs.h - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - # The user may have built HDF5 with libdl (dynamic loading support). - if test "x$enable_dynamic_loading" = xyes; then - for ac_header in dlfcn.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} _ACEOF +for ac_lib in '' dl dld; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_dlopen+:} false; then : + break +fi +done +if ${ac_cv_search_dlopen+:} false; then : else - nc_dlfcn_h_missing=yes + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -done +fi - if test "x$nc_dlfcn_h_missing" = xyes; then - as_fn_error $? "Cannot find dlfcn.h, yet --enable-dynamic-loading was used." "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : +fi + +# We need the math library +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5 +$as_echo_n "checking for floor in -lm... " >&6; } +if ${ac_cv_lib_m_floor+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" +LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17769,41 +17528,49 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char dlopen (); +char floor (); int main () { -return dlopen (); +return floor (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes + ac_cv_lib_m_floor=yes else - ac_cv_lib_dl_dlopen=no + ac_cv_lib_m_floor=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_floor" >&5 +$as_echo "$ac_cv_lib_m_floor" >&6; } +if test "x$ac_cv_lib_m_floor" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 +#define HAVE_LIBM 1 _ACEOF - LIBS="-ldl $LIBS" + LIBS="-lm $LIBS" else - as_fn_error $? "Can't find or link against libdf. See config.log for errors." "$LINENO" 5 + as_fn_error $? "Can't find or link to the math library." "$LINENO" 5 fi -$as_echo "#define USE_LIBDL 1" >>confdefs.h +if test "x$enable_netcdf_4" = xyes; then + + +$as_echo "#define USE_HDF5 1" >>confdefs.h + + +$as_echo "#define USE_NETCDF4 1" >>confdefs.h + + +$as_echo "#define H5_USE_16_API 1" >>confdefs.h - fi # Check for the main hdf5 and hdf5_hl library. @@ -17938,7 +17705,22 @@ fi done - for ac_func in H5Pget_fapl_mpiposix H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory + for ac_func in H5Z_SZIP +do : + ac_fn_c_check_func "$LINENO" "H5Z_SZIP" "ac_cv_func_H5Z_SZIP" +if test "x$ac_cv_func_H5Z_SZIP" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_H5Z_SZIP 1 +_ACEOF + +fi +done + + hdf5_parallel=no + + # H5Pset_fapl_mpiposix and H5Pget_fapl_mpiposix have been removed since HDF5 1.8.12. + # Use H5Pset_fapl_mpio and H5Pget_fapl_mpio, instead. + for ac_func in H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory H5Pset_libver_bounds H5Pset_all_coll_metadata_ops do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -17950,18 +17732,20 @@ _ACEOF fi done - # The user may have parallel HDF5 based on MPI POSIX. - if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then - -$as_echo "#define USE_PARALLEL_POSIX 1" >>confdefs.h - - fi + # if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then + # AC_DEFINE([USE_PARALLEL_POSIX], [1], [if true, compile in parallel netCDF-4 based on MPI/POSIX]) + # fi # The user may have parallel HDF5 based on MPI mumble mumble. - if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then + # if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then + # AC_DEFINE([USE_PARALLEL_MPIO], [1], [if true, compile in parallel netCDF-4 based on MPI/IO]) + # fi -$as_echo "#define USE_PARALLEL_MPIO 1" >>confdefs.h + # Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0) + if test "x$ac_cv_func_H5Pset_all_coll_metadata_ops" = xyes; then + +$as_echo "#define HDF5_HAS_COLL_METADATA_OPS 1" >>confdefs.h fi @@ -17970,28 +17754,52 @@ $as_echo "#define USE_PARALLEL_MPIO 1" >>confdefs.h if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then hdf5_parallel=yes fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel io is enabled in hdf5" >&5 $as_echo_n "checking whether parallel io is enabled in hdf5... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hdf5_parallel" >&5 $as_echo "$hdf5_parallel" >&6; } - # The user must have built HDF5 with the ZLIB library. - if test "x$ac_cv_func_H5Pset_deflate" = xyes; then - -$as_echo "#define USE_ZLIB 1" >>confdefs.h - - else - as_fn_error $? "HDF5 must be built with zlib for netCDF-4" "$LINENO" 5 + if test "x$hdf5_parallel" = "xno"; then + if test "x$enable_parallel_tests" = "xyes"; then + as_fn_error $? "Parallel tests requested, but no parallel HDF5 installation detected." "$LINENO" 5 + fi fi # The user may have built HDF5 with the SZLIB library. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether szlib was used when building HDF5" >&5 +$as_echo_n "checking whether szlib was used when building HDF5... " >&6; } + enable_szlib=no if test "x$ac_cv_func_H5Z_SZIP" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5 -$as_echo_n "checking for library containing SZ_Compress... " >&6; } -if ${ac_cv_search_SZ_Compress+:} false; then : + enable_szlib=yes + +$as_echo "#define USE_SZIP 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_szlib" >&5 +$as_echo "$enable_szlib" >&6; } + + if test "x$ac_cv_func_H5free_memory" = xyes; then + +$as_echo "#define HDF5_HAS_H5FREE 1" >>confdefs.h + + fi + + if test "x$ac_cv_func_H5Pset_libver_bounds" = xyes; then + +$as_echo "#define HDF5_HAS_LIBVER_BOUNDS 1" >>confdefs.h + + fi + + # If the user wants hdf4 built in, check it out. + if test "x$enable_hdf4" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_CreateCompress in -ljpeg" >&5 +$as_echo_n "checking for jpeg_CreateCompress in -ljpeg... " >&6; } +if ${ac_cv_lib_jpeg_jpeg_CreateCompress+:} false; then : $as_echo_n "(cached) " >&6 else - ac_func_search_save_LIBS=$LIBS + ac_check_lib_save_LIBS=$LIBS +LIBS="-ljpeg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18001,66 +17809,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char SZ_Compress (); +char jpeg_CreateCompress (); int main () { -return SZ_Compress (); +return jpeg_CreateCompress (); ; return 0; } _ACEOF -for ac_lib in '' szip sz; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_SZ_Compress=$ac_res +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_jpeg_jpeg_CreateCompress=yes +else + ac_cv_lib_jpeg_jpeg_CreateCompress=no fi rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_SZ_Compress+:} false; then : - break + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -done -if ${ac_cv_search_SZ_Compress+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 +$as_echo "$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6; } +if test "x$ac_cv_lib_jpeg_jpeg_CreateCompress" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBJPEG 1 +_ACEOF -else - ac_cv_search_SZ_Compress=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SZ_Compress" >&5 -$as_echo "$ac_cv_search_SZ_Compress" >&6; } -ac_res=$ac_cv_search_SZ_Compress -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + LIBS="-ljpeg $LIBS" +else + as_fn_error $? "Jpeg library required for --enable-hdf4 builds." "$LINENO" 5 fi - -$as_echo "#define USE_SZIP 1" >>confdefs.h - - fi - - if test "x$ac_cv_func_H5free_memory" = xyes; then - -$as_echo "#define HDF5_HAS_H5FREE 1" >>confdefs.h - - fi - - if test "x$ac_cv_func_H5Pset_libver_bounds" = xyes; then - -$as_echo "#define HDF5_HAS_LIBVER_BOUNDS 1" >>confdefs.h - - fi - - # If the user wants hdf4 built in, check it out. - if test "x$enable_hdf4" = xyes; then for ac_header in mfhdf.h do : ac_fn_c_check_header_mongrel "$LINENO" "mfhdf.h" "ac_cv_header_mfhdf_h" "$ac_includes_default" @@ -18125,6 +17904,46 @@ else as_fn_error $? "Can't find or link to the hdf4 df library. See config.log for errors." "$LINENO" 5 fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NC_arrayfill in -lmfhdf" >&5 +$as_echo_n "checking for NC_arrayfill in -lmfhdf... " >&6; } +if ${ac_cv_lib_mfhdf_NC_arrayfill+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmfhdf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char NC_arrayfill (); +int +main () +{ +return NC_arrayfill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_mfhdf_NC_arrayfill=yes +else + ac_cv_lib_mfhdf_NC_arrayfill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mfhdf_NC_arrayfill" >&5 +$as_echo "$ac_cv_lib_mfhdf_NC_arrayfill" >&6; } +if test "x$ac_cv_lib_mfhdf_NC_arrayfill" = xyes; then : + as_fn_error $? "HDF4 library must be built with --disable-netcdf." "$LINENO" 5 +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDcreate in -lmfhdf" >&5 $as_echo_n "checking for SDcreate in -lmfhdf... " >&6; } if ${ac_cv_lib_mfhdf_SDcreate+:} false; then : @@ -18221,43 +18040,49 @@ else fi - $as_echo "#define USE_HDF4 1" >>confdefs.h fi fi # There are several cases for parallelism: -# 1. pnetcdf enabled => we want to parallelism for CDF-1,CDF-2,and CDF-5 +# 1. PnetCDF enabled => we want to parallelism for CDF-1,CDF-2,and CDF-5 # 2. hdf5 has mpio enabled # a. do not want to use it for netcdf4 # b. do want to use it for netcdf4 -# Should we suppress parallel io for netcdf-4? +# Should we provide parallel io for netcdf-4? if test "x$enable_netcdf_4" = xyes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O is enabled for netcdf-4" >&5 -$as_echo_n "checking whether parallel I/O is enabled for netcdf-4... " >&6; } - # Check whether --enable-parallel4 was given. + # Check whether --enable-parallel4 was given. if test "${enable_parallel4+set}" = set; then : - enableval=$enable_parallel4; + enableval=$enable_parallel4; user_set_parallel4=${enableval} fi - test "x$enable_parallel4" = xno || enable_parallel4=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel4" >&5 -$as_echo "$enable_parallel4" >&6; } -else - enable_parallel4=no -fi -if test "x$hdf5_parallel" = xno; then - # hdf5 does not support parallel io, so disable parallel4 - enable_parallel4=no - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Parallel io disabled for netcdf-4 because hdf5 does not support" >&5 + test "x$enable_parallel4" = xno || enable_parallel4=yes + + # If user wants parallel IO for netCDF-4, make sure HDF5 can provide it. + if test "x$enable_parallel4" = xyes; then + if test "x$hdf5_parallel" = xno; then + # If user specifically asked for parallel4, then error out. + if test "x$user_set_parallel4" = xyes; then + as_fn_error $? "Paralllel IO in netCDF-4 requested, but HDF5 does not provide parallel IO." "$LINENO" 5 + fi + # User didn't specify, so disable parallel4 + enable_parallel4=no + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Parallel io disabled for netcdf-4 because hdf5 does not support" >&5 $as_echo "$as_me: WARNING: Parallel io disabled for netcdf-4 because hdf5 does not support" >&2;} + fi + fi +else + enable_parallel4=no fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O is enabled for netcdf-4" >&5 +$as_echo_n "checking whether parallel I/O is enabled for netcdf-4... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel4" >&5 +$as_echo "$enable_parallel4" >&6; } # We have already tested for parallel io in netcdf4 -# Now do it for netcdf-3 -# Does the user want parallel I/O for classic and 64-bit offset files using parallel-netcdf (pnetcdf)? +# parallel I/O for CDF-1, 2, and 5 files can also be done through PnetCDF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O for classic files is to be enabled" >&5 $as_echo_n "checking whether parallel I/O for classic files is to be enabled... " >&6; } # Check whether --enable-pnetcdf was given. @@ -18269,9 +18094,8 @@ test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pnetcdf" >&5 $as_echo "$enable_pnetcdf" >&6; } -# See if the pnetcdf lib is available and of the +# See if the PnetCDF lib is available and of the # right version (1.6.0 or later) - if test "x$enable_pnetcdf" = xyes; then pnetcdf_conflict=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ncmpi_create in -lpnetcdf" >&5 @@ -18322,95 +18146,231 @@ else fi - # Pnetcdf did not support utf-8 until 1.6.0 + if test "x$pnetcdf_conflict" = xyes ; then + as_fn_error $? "Cannot link to PnetCDF library." "$LINENO" 5 + fi + + # Pnetcdf did not support utf-8 until 1.6.0 + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Is libpnetcdf version 1.6.0 or later?" >&5 +$as_echo_n "checking Is libpnetcdf version 1.6.0 or later?... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#include +#if (PNETCDF_VERSION_MAJOR*1000 + PNETCDF_VERSION_MINOR < 1006) + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pnetcdf16=yes +else + pnetcdf16=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pnetcdf16" >&5 +$as_echo "$pnetcdf16" >&6; } + if test x$pnetcdf16 = xno; then + as_fn_error $? "--enable-pnetcdf requires version 1.6.0 or later" "$LINENO" 5 + fi +fi + +# Now, set enable_parallel if either enable_pnetcdf or enable_parallel4 is set +if test "x$enable_pnetcdf" = xyes -o "x$enable_parallel4" = xyes; then + enable_parallel=yes +else + enable_parallel=no +fi + if test x$enable_parallel = xyes ; then + ENABLE_PARALLEL_TRUE= + ENABLE_PARALLEL_FALSE='#' +else + ENABLE_PARALLEL_TRUE='#' + ENABLE_PARALLEL_FALSE= +fi + + +if test "x$hdf5_parallel" = xyes; then + # Provide more precise parallel control + +$as_echo "#define HDF5_PARALLEL 1" >>confdefs.h + +fi + +# Set config flags +if test "x$enable_parallel4" = xyes; then + # Provide more precise parallel control + +$as_echo "#define USE_PARALLEL4 1" >>confdefs.h + +fi + +if test "x$enable_pnetcdf" = xyes; then + +$as_echo "#define USE_PNETCDF 1" >>confdefs.h + +fi + +# If enable_parallel is in use, enable it in the C code. Also add some stuff to netcdf.h. +if test "x$enable_parallel" = xyes; then + +$as_echo "#define USE_PARALLEL 1" >>confdefs.h + +fi + +# Check whether --enable-erange_fill was given. +if test "${enable_erange_fill+set}" = set; then : + enableval=$enable_erange_fill; enable_erange_fill=${enableval} +else + enable_erange_fill=auto + +fi + + +# Check whether --enable-zero-length-coord-bound was given. +if test "${enable_zero_length_coord_bound+set}" = set; then : + enableval=$enable_zero_length_coord_bound; enable_zero_length_coord_bound=${enableval} +else + enable_zero_length_coord_bound=auto + +fi + + +# check PnetCDF's settings on enable_erange_fill and relax_coord_bound +if test "x$enable_pnetcdf" = xyes; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for full path of header file pnetcdf.h" >&5 +$as_echo_n "checking for full path of header file pnetcdf.h... " >&6; } +if ${ac_cv_header_path_pnetcdf_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_cv_header_path_pnetcdf_h=`sed -n '/\.h"/s/.*"\(.*\)".*/\1/p' conftest.i | grep -m 1 pnetcdf.h` +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_path_pnetcdf_h" >&5 +$as_echo "$ac_cv_header_path_pnetcdf_h" >&6; } + if ${ac_cv_header_path_pnetcdf_h+:} false; then : + +fi + - # Save/restore CFLAGS - SAVELIBS=$LIBS - LIBS="$LIBS -lpnetcdf" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if erange-fill is enabled in PnetCDF" >&5 +$as_echo_n "checking if erange-fill is enabled in PnetCDF... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include + int main () { - int major = PNETCDF_VERSION_MAJOR; - int minor = PNETCDF_VERSION_MINOR; - int version = major*1000 + minor; - int ok = (version >= (1*1000 + 6)); - return (ok?0:1); +#include +#if !defined(PNETCDF_ERANGE_FILL) || PNETCDF_ERANGE_FILL == 0 + choke me +#endif ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - pnetcdf16=yes +if ac_fn_c_try_compile "$LINENO"; then : + enable_erange_fill_pnetcdf=yes else - pnetcdf16=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + enable_erange_fill_pnetcdf=no fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_erange_fill_pnetcdf" >&5 +$as_echo "$enable_erange_fill_pnetcdf" >&6; } + if test "x$enable_erange_fill" = xauto ; then + enable_erange_fill=$enable_erange_fill_pnetcdf + elif test "$enable_erange_fill" != "$enable_erange_fill_pnetcdf"; then + if test "$enable_erange_fill" = yes; then + as_fn_error $? "Enabling erange-fill conflicts with PnetCDF setting" "$LINENO" 5 + else + as_fn_error $? "Disabling erange-fill conflicts with PnetCDF setting" "$LINENO" 5 + fi + fi - CFLAGS="$SAVECFLAGS" - LIBS="$SAVELIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Is libpnetcdf version 1.6.0 or later?" >&5 -$as_echo_n "checking Is libpnetcdf version 1.6.0 or later?... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pnetcdf16" >&5 -$as_echo "$pnetcdf16" >&6; } - if test x$pnetcdf16 = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-pnetcdf requires version 1.6.0 or later; disabling" >&5 -$as_echo "$as_me: WARNING: --enable-pnetcdf requires version 1.6.0 or later; disabling" >&2;} - pnetcdf_conflict=yes - fi -fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if relax-coord-bound is enabled in PnetCDF" >&5 +$as_echo_n "checking if relax-coord-bound is enabled in PnetCDF... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -if test "x$pnetcdf_conflict" = xyes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot link to pnetcdf library, --enable-pnetcdf disabled." >&5 -$as_echo "$as_me: WARNING: Cannot link to pnetcdf library, --enable-pnetcdf disabled." >&2;} - enable_pnetcdf=no -fi +int +main () +{ -# Now, set enable_parallel if either pnetcdf or parallel4 is set -if test "x$enable_pnetcdf" = xyes -o "x$enable_parallel4" = xyes; then -enable_parallel=yes +#include +#if !defined(PNETCDF_RELAX_COORD_BOUND) || PNETCDF_RELAX_COORD_BOUND == 0 + choke me +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + relax_coord_bound_pnetcdf=yes else -enable_parallel=no + relax_coord_bound_pnetcdf=no fi - -if test "x$hdf5_parallel" = xyes; then - # Provide more precise parallel control - -$as_echo "#define HDF5_PARALLEL 1" >>confdefs.h - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $relax_coord_bound_pnetcdf" >&5 +$as_echo "$relax_coord_bound_pnetcdf" >&6; } + if test "x$enable_zero_length_coord_bound" = xauto ; then + enable_zero_length_coord_bound=$relax_coord_bound_pnetcdf + elif test "$enable_zero_length_coord_bound" != "$relax_coord_bound_pnetcdf"; then + if test "$enable_zero_length_coord_bound" = yes; then + as_fn_error $? "Enabling relax-coord-bound conflicts with PnetCDF setting" "$LINENO" 5 + else + as_fn_error $? "Disabling relax-coord-bound conflicts with PnetCDF setting" "$LINENO" 5 + fi + fi +else + # default setting + enable_erange_fill=no + enable_zero_length_coord_bound=yes fi -# Set config flags -if test "x$enable_parallel4" = xyes; then - # Provide more precise parallel control +if test "x$enable_zero_length_coord_bound" = xyes; then -$as_echo "#define USE_PARALLEL4 1" >>confdefs.h +$as_echo "#define RELAX_COORD_BOUND 1" >>confdefs.h fi -if test "x$enable_pnetcdf" = xyes; then +if test "x$enable_erange_fill" = xyes ; then + if test "x$M4FLAGS" = x ; then + M4FLAGS="-DERANGE_FILL" + else + M4FLAGS="$M4FLAGS -DERANGE_FILL" + fi -$as_echo "#define USE_PNETCDF 1" >>confdefs.h +$as_echo "#define ERANGE_FILL 1" >>confdefs.h fi -# If enable_parallel is in use, enable it in the C code. Also add some stuff to netcdf.h. -if test "x$enable_parallel" = xyes; then - -$as_echo "#define USE_PARALLEL 1" >>confdefs.h - -fi # Check for downloading/building fortran via postinstall script. if test "x$enable_remote_fortran_bootstrap" = xyes; then @@ -18429,33 +18389,6 @@ $as_echo "#define LOGGING 1" >>confdefs.h fi - -# Like other libraries, udunits and libcf -# are no long part of the netcdf distribution. - -#AC_MSG_CHECKING([whether udunits is to be built]) -#AC_ARG_WITH([udunits], -# [AS_HELP_STRING([--with-udunits], -# [Build udunits2 package.])]) -#test "x$with_udunits" = xyes || with_udunits=no -#AC_MSG_RESULT($with_udunits) -#AM_CONDITIONAL(BUILD_UDUNITS, [test "x$with_udunits" = xyes]) - - -# Does the user want to also build the libcf library? -#AC_MSG_CHECKING([whether libcf is to be built]) -#AC_ARG_WITH([libcf], -# [AS_HELP_STRING([--with-libcf], -# [build and install libcf library, a library for \ -# handling data in conformance with the Climate and \ -# Forecast conventions. (Requires netCDF-4 and HDF5)])]) -#test "x$with_libcf" = xyes || with_libcf=no -#AC_MSG_RESULT($with_libcf) -#AM_CONDITIONAL(BUILD_LIBCF, [test "x$with_libcf" = xyes]) - -#AC_CONFIG_SUBDIRS([udunits libcf]) - - # Automake conditionals need to be called, whether the answer is yes # or no. if test x$enable_parallel = xyes; then @@ -18490,6 +18423,39 @@ else USE_DAP_FALSE= fi # Alias +# Provide protocol specific flags + if test "x$enable_dap" = xyes; then + ENABLE_DAP_TRUE= + ENABLE_DAP_FALSE='#' +else + ENABLE_DAP_TRUE='#' + ENABLE_DAP_FALSE= +fi + + if test "x$enable_dap4" = xyes; then + ENABLE_DAP4_TRUE= + ENABLE_DAP4_FALSE='#' +else + ENABLE_DAP4_TRUE='#' + ENABLE_DAP4_FALSE= +fi + + if test x$enable_strict_null_byte_header_padding = xyes; then + USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE= + USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE='#' +else + USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE='#' + USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE= +fi + + if test "x$enable_cdf5" = xyes; then + ENABLE_CDF5_TRUE= + ENABLE_CDF5_FALSE='#' +else + ENABLE_CDF5_TRUE='#' + ENABLE_CDF5_FALSE= +fi + if test "x$enable_dap_remote_tests" = xyes; then ENABLE_DAP_REMOTE_TESTS_TRUE= ENABLE_DAP_REMOTE_TESTS_FALSE='#' @@ -18554,14 +18520,6 @@ else CROSS_COMPILING_FALSE= fi - if test "x$enable_valgrind_tests" = xyes; then - USE_VALGRIND_TESTS_TRUE= - USE_VALGRIND_TESTS_FALSE='#' -else - USE_VALGRIND_TESTS_TRUE='#' - USE_VALGRIND_TESTS_FALSE= -fi - if test x$enable_netcdf_4 = xyes; then USE_NETCDF4_TRUE= USE_NETCDF4_FALSE='#' @@ -18570,6 +18528,14 @@ else USE_NETCDF4_FALSE= fi + if test x$enable_hdf5 = xyes; then + USE_HDF5_TRUE= + USE_HDF5_FALSE='#' +else + USE_HDF5_TRUE='#' + USE_HDF5_FALSE= +fi + if test x$enable_hdf4 = xyes; then USE_HDF4_TRUE= USE_HDF4_FALSE='#' @@ -18618,14 +18584,6 @@ else USE_DISPATCH_FALSE= fi - if test x$enable_diskless = xyes; then - BUILD_DISKLESS_TRUE= - BUILD_DISKLESS_FALSE='#' -else - BUILD_DISKLESS_TRUE='#' - BUILD_DISKLESS_FALSE= -fi - if test x$enable_mmap = xyes; then BUILD_MMAP_TRUE= BUILD_MMAP_FALSE='#' @@ -18650,6 +18608,14 @@ else SHOW_DOXYGEN_TAG_LIST_FALSE= fi + if test x$enable_metadata_perf = xyes; then + ENABLE_METADATA_PERF_TRUE= + ENABLE_METADATA_PERF_FALSE='#' +else + ENABLE_METADATA_PERF_TRUE='#' + ENABLE_METADATA_PERF_FALSE= +fi + # If the machine doesn't have a long long, and we want netCDF-4, then # we've got problems! @@ -18919,34 +18885,91 @@ $as_echo "#define JNA 1" >>confdefs.h fi +# Control large metadata performance test +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large metadata performance testing should be run" >&5 +$as_echo_n "checking whether large metadata performance testing should be run... " >&6; } +# Check whether --enable-metadata-perf was given. +if test "${enable_metadata_perf+set}" = set; then : + enableval=$enable_metadata_perf; +fi + +test "x$enable_metadata_perf" = xyes || enable_metadata_perf=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_metadata_perf" >&5 +$as_echo "$enable_metadata_perf" >&6; } + +# Control filter test/example +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether filter testing should be run" >&5 +$as_echo_n "checking whether filter testing should be run... " >&6; } +# Check whether --enable-filter-testing was given. +if test "${enable_filter_testing+set}" = set; then : + enableval=$enable_filter_testing; +fi + +test "x$enable_filter_testing" = xno || enable_filter_testing=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_filter_testing" >&5 +$as_echo "$enable_filter_testing" >&6; } + +if test "x$enable_netcdf_4" = xno ; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: netCDF-4 disabled => --disable-filter-testing" >&5 +$as_echo "$as_me: WARNING: netCDF-4 disabled => --disable-filter-testing" >&2;} +enable_filter_testing=no +fi + +if test "x$enable_shared" = xno ; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Shared libraries are disabled => --disable-filter-testing" >&5 +$as_echo "$as_me: WARNING: Shared libraries are disabled => --disable-filter-testing" >&2;} +enable_filter_testing=no +fi + if test x$enable_filter_testing = xyes; then + ENABLE_FILTER_TESTING_TRUE= + ENABLE_FILTER_TESTING_FALSE='#' +else + ENABLE_FILTER_TESTING_TRUE='#' + ENABLE_FILTER_TESTING_FALSE= +fi + + NC_LIBS=$NC_LIBS HAS_DAP=$enable_dap +HAS_DAP2=$enable_dap + +HAS_DAP4=$enable_dap4 + HAS_NC2=$nc_build_v2 HAS_NC4=$enable_netcdf_4 +HAS_CDF5=$enable_cdf5 + HAS_HDF4=$enable_hdf4 +HAS_HDF5=$enable_hdf5 + HAS_PNETCDF=$enable_pnetcdf HAS_HDF5=$enable_netcdf_4 HAS_LOGGING=$enable_logging -HAS_SZLIB=$ac_cv_func_H4Z_SZIP +HAS_SZLIB=$enable_szlib HAS_PARALLEL=$enable_parallel HAS_PARALLEL4=$enable_parallel4 -HAS_DISKLESS=$enable_diskless +HAS_DISKLESS=yes HAS_MMAP=$enable_mmap HAS_JNA=$enable_jna +RELAX_COORD_BOUND=$enable_zero_length_coord_bound + +HAS_ERANGE_FILL=$enable_erange_fill + + # Include some specifics for netcdf on windows. #AH_VERBATIM([_WIN32_STRICMP], @@ -19025,13 +19048,20 @@ HAS_JNA=$enable_jna if test "x$enable_dap" = xyes ; then - NC_HAS_DAP=1 + NC_HAS_DAP2=1 + else + NC_HAS_DAP2=0 + fi + + + if test "x$enable_dap4" = xyes ; then + NC_HAS_DAP4=1 else - NC_HAS_DAP=0 + NC_HAS_DAP4=0 fi - if test "x$enable_diskless" = xyes ; then + if test "xyes" = xyes ; then NC_HAS_DISKLESS=1 else NC_HAS_DISKLESS=0 @@ -19073,13 +19103,67 @@ HAS_JNA=$enable_jna fi + if test "x$enable_cdf5" = xyes ; then + NC_HAS_CDF5=1 + else + NC_HAS_CDF5=0 + fi + + + if test "x$enable_erange_fill" = xyes ; then + NC_HAS_ERANGE_FILL=1 + else + NC_HAS_ERANGE_FILL=0 + fi + + + if test "x$enable_zero_length_coord_bound" = xyes ; then + NC_RELAX_COORD_BOUND=1 + else + NC_RELAX_COORD_BOUND=0 + fi + + +# Automake says that this is always run in top_builddir +# and that srcdir is defined (== top_srcdir) +abs_top_builddir=`pwd` +cd $srcdir +abs_top_srcdir=`pwd` +cd $abs_top_builddir + +# test_common.sh setup +ac_config_files="$ac_config_files test_common.sh:test_common.in" + +#rm -f ${abs_top_builddir}/test_common.sh +#sed -e "s|@TOPSRCDIR@|${abs_top_srcdir}|" -e "s|@TOPBUILDDIR@|${abs_top_builddir}|" <${abs_top_srcdir}/test_common.in >${abs_top_builddir}/test_common.sh + +# nc_test4/findplugin.sh setup + + +ac_config_files="$ac_config_files nc_test4/findplugin.sh:nc_test4/findplugin.in" + +ac_config_files="$ac_config_files examples/C/findplugin.sh:nc_test4/findplugin.in" + + +# DAP 2/4 findtestserver[4].c setup +ac_config_files="$ac_config_files ncdap_test/findtestserver.c:ncdap_test/findtestserver.c.in" + +ac_config_files="$ac_config_files dap4_test/findtestserver4.c:ncdap_test/findtestserver.c.in" + + ##### # End netcdf_meta.h definitions. ##### { $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 nc-config netcdf.pc libnetcdf.settings postinstall.sh include/netcdf_meta.h include/Makefile h5_test/Makefile docs/Makefile docs/images/Makefile libsrc/Makefile libsrc4/Makefile libsrcp/Makefile nctest/Makefile nc_test4/Makefile nc_test/Makefile ncdump/Makefile ncgen3/Makefile ncgen/Makefile examples/Makefile examples/C/Makefile examples/CDL/Makefile oc2/Makefile libdap2/Makefile libdispatch/Makefile liblib/Makefile ncdump/cdl/Makefile ncdump/expected/Makefile ncdap_test/Makefile ncdap_test/testdata3/Makefile ncdap_test/expected3/Makefile ncdap_test/expected4/Makefile ncdap_test/expectremote3/Makefile ncdap_test/expectremote4/Makefile" +ac_config_files="$ac_config_files nc_test4/run_par_test.sh" + +ac_config_files="$ac_config_files nc_test4/run_par_bm_test.sh" + +ac_config_files="$ac_config_files nc-config" + +ac_config_files="$ac_config_files Makefile netcdf.pc libnetcdf.settings postinstall.sh include/netcdf_meta.h include/Makefile h5_test/Makefile hdf4_test/Makefile libsrc/Makefile libsrc4/Makefile libhdf5/Makefile libsrcp/Makefile ncdump/Makefile ncgen3/Makefile ncgen/Makefile examples/Makefile examples/C/Makefile examples/CDL/Makefile oc2/Makefile libdap2/Makefile libdap4/Makefile libhdf4/Makefile libdispatch/Makefile liblib/Makefile ncdump/cdl/Makefile ncdump/expected/Makefile docs/Makefile docs/images/Makefile nctest/Makefile nc_test4/Makefile nc_test/Makefile ncdap_test/Makefile ncdap_test/testdata3/Makefile ncdap_test/expected3/Makefile ncdap_test/expectremote3/Makefile dap4_test/Makefile plugins/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -19210,8 +19294,12 @@ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${BUILD_DLL_TRUE}" && test -z "${BUILD_DLL_FALSE}"; then - as_fn_error $? "conditional \"BUILD_DLL\" was never defined. +if test -z "${VALGRIND_ENABLED_TRUE}" && test -z "${VALGRIND_ENABLED_FALSE}"; then + as_fn_error $? "conditional \"VALGRIND_ENABLED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_VALGRIND_TRUE}" && test -z "${ENABLE_VALGRIND_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_VALGRIND\" 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 @@ -19230,20 +19318,12 @@ if test -z "${NC_ENABLE_DOXYGEN_PDF_OUTPUT_TRUE}" && test -z "${NC_ENABLE_DOXYGE as_fn_error $? "conditional \"NC_ENABLE_DOXYGEN_PDF_OUTPUT\" 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 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${INTERNAL_OCLIB_TRUE}" && test -z "${INTERNAL_OCLIB_FALSE}"; then as_fn_error $? "conditional \"INTERNAL_OCLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${EXTRA_TESTS_TRUE}" && test -z "${EXTRA_TESTS_FALSE}"; then - as_fn_error $? "conditional \"EXTRA_TESTS\" was never defined. +if test -z "${USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE}" && test -z "${USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE}"; then + as_fn_error $? "conditional \"USE_STRICT_NULL_BYTE_HEADER_PADDING\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_FFIO_TRUE}" && test -z "${USE_FFIO_FALSE}"; then @@ -19278,11 +19358,19 @@ 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 "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. + +if test -z "${ISCYGWIN_TRUE}" && test -z "${ISCYGWIN_FALSE}"; then + as_fn_error $? "conditional \"ISCYGWIN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_CDF5_TRUE}" && test -z "${ENABLE_CDF5_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_CDF5\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_PARALLEL_TRUE}" && test -z "${ENABLE_PARALLEL_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_PARALLEL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi - 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 @@ -19299,6 +19387,22 @@ if test -z "${USE_DAP_TRUE}" && test -z "${USE_DAP_FALSE}"; then as_fn_error $? "conditional \"USE_DAP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_DAP_TRUE}" && test -z "${ENABLE_DAP_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DAP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_DAP4_TRUE}" && test -z "${ENABLE_DAP4_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DAP4\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_STRICT_NULL_BYTE_HEADER_PADDING_TRUE}" && test -z "${USE_STRICT_NULL_BYTE_HEADER_PADDING_FALSE}"; then + as_fn_error $? "conditional \"USE_STRICT_NULL_BYTE_HEADER_PADDING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_CDF5_TRUE}" && test -z "${ENABLE_CDF5_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_CDF5\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_DAP_REMOTE_TESTS_TRUE}" && test -z "${ENABLE_DAP_REMOTE_TESTS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DAP_REMOTE_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19331,14 +19435,14 @@ if test -z "${CROSS_COMPILING_TRUE}" && test -z "${CROSS_COMPILING_FALSE}"; then as_fn_error $? "conditional \"CROSS_COMPILING\" 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 -fi if test -z "${USE_NETCDF4_TRUE}" && test -z "${USE_NETCDF4_FALSE}"; then as_fn_error $? "conditional \"USE_NETCDF4\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USE_HDF5_TRUE}" && test -z "${USE_HDF5_FALSE}"; then + as_fn_error $? "conditional \"USE_HDF5\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${USE_HDF4_TRUE}" && test -z "${USE_HDF4_FALSE}"; then as_fn_error $? "conditional \"USE_HDF4\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19363,10 +19467,6 @@ if test -z "${USE_DISPATCH_TRUE}" && test -z "${USE_DISPATCH_FALSE}"; then as_fn_error $? "conditional \"USE_DISPATCH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${BUILD_DISKLESS_TRUE}" && test -z "${BUILD_DISKLESS_FALSE}"; then - as_fn_error $? "conditional \"BUILD_DISKLESS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${BUILD_MMAP_TRUE}" && test -z "${BUILD_MMAP_FALSE}"; then as_fn_error $? "conditional \"BUILD_MMAP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19379,6 +19479,14 @@ if test -z "${SHOW_DOXYGEN_TAG_LIST_TRUE}" && test -z "${SHOW_DOXYGEN_TAG_LIST_F as_fn_error $? "conditional \"SHOW_DOXYGEN_TAG_LIST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_METADATA_PERF_TRUE}" && test -z "${ENABLE_METADATA_PERF_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_METADATA_PERF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_FILTER_TESTING_TRUE}" && test -z "${ENABLE_FILTER_TESTING_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_FILTER_TESTING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -19776,7 +19884,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 $as_me 4.4.1.1, which was +This file was extended by netCDF $as_me 4.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19846,7 +19954,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 config.status 4.4.1.1 +netCDF config.status 4.6.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19965,7 +20073,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # -AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout @@ -19977,9 +20084,6 @@ double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' @@ -20012,10 +20116,12 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' @@ -20125,10 +20231,7 @@ _LTECHO_EOF' } # Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ +for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ @@ -20141,10 +20244,12 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ +OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ +DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ @@ -20264,25 +20369,30 @@ do "nc_test4/ref_hdf5_compat1.nc") CONFIG_LINKS="$CONFIG_LINKS nc_test4/ref_hdf5_compat1.nc:nc_test4/ref_hdf5_compat1.nc" ;; "nc_test4/ref_hdf5_compat2.nc") CONFIG_LINKS="$CONFIG_LINKS nc_test4/ref_hdf5_compat2.nc:nc_test4/ref_hdf5_compat2.nc" ;; "nc_test4/ref_hdf5_compat3.nc") CONFIG_LINKS="$CONFIG_LINKS nc_test4/ref_hdf5_compat3.nc:nc_test4/ref_hdf5_compat3.nc" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "hdf4_test/ref_chunked.hdf4") CONFIG_LINKS="$CONFIG_LINKS hdf4_test/ref_chunked.hdf4:hdf4_test/ref_chunked.hdf4" ;; + "hdf4_test/ref_contiguous.hdf4") CONFIG_LINKS="$CONFIG_LINKS hdf4_test/ref_contiguous.hdf4:hdf4_test/ref_contiguous.hdf4" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "test_common.sh") CONFIG_FILES="$CONFIG_FILES test_common.sh:test_common.in" ;; + "nc_test4/findplugin.sh") CONFIG_FILES="$CONFIG_FILES nc_test4/findplugin.sh:nc_test4/findplugin.in" ;; + "examples/C/findplugin.sh") CONFIG_FILES="$CONFIG_FILES examples/C/findplugin.sh:nc_test4/findplugin.in" ;; + "ncdap_test/findtestserver.c") CONFIG_FILES="$CONFIG_FILES ncdap_test/findtestserver.c:ncdap_test/findtestserver.c.in" ;; + "dap4_test/findtestserver4.c") CONFIG_FILES="$CONFIG_FILES dap4_test/findtestserver4.c:ncdap_test/findtestserver.c.in" ;; + "nc_test4/run_par_test.sh") CONFIG_FILES="$CONFIG_FILES nc_test4/run_par_test.sh" ;; + "nc_test4/run_par_bm_test.sh") CONFIG_FILES="$CONFIG_FILES nc_test4/run_par_bm_test.sh" ;; "nc-config") CONFIG_FILES="$CONFIG_FILES nc-config" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "netcdf.pc") CONFIG_FILES="$CONFIG_FILES netcdf.pc" ;; "libnetcdf.settings") CONFIG_FILES="$CONFIG_FILES libnetcdf.settings" ;; "postinstall.sh") CONFIG_FILES="$CONFIG_FILES postinstall.sh" ;; "include/netcdf_meta.h") CONFIG_FILES="$CONFIG_FILES include/netcdf_meta.h" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "h5_test/Makefile") CONFIG_FILES="$CONFIG_FILES h5_test/Makefile" ;; - "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; - "docs/images/Makefile") CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;; + "hdf4_test/Makefile") CONFIG_FILES="$CONFIG_FILES hdf4_test/Makefile" ;; "libsrc/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc/Makefile" ;; "libsrc4/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc4/Makefile" ;; + "libhdf5/Makefile") CONFIG_FILES="$CONFIG_FILES libhdf5/Makefile" ;; "libsrcp/Makefile") CONFIG_FILES="$CONFIG_FILES libsrcp/Makefile" ;; - "nctest/Makefile") CONFIG_FILES="$CONFIG_FILES nctest/Makefile" ;; - "nc_test4/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test4/Makefile" ;; - "nc_test/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test/Makefile" ;; "ncdump/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/Makefile" ;; "ncgen3/Makefile") CONFIG_FILES="$CONFIG_FILES ncgen3/Makefile" ;; "ncgen/Makefile") CONFIG_FILES="$CONFIG_FILES ncgen/Makefile" ;; @@ -20291,16 +20401,23 @@ do "examples/CDL/Makefile") CONFIG_FILES="$CONFIG_FILES examples/CDL/Makefile" ;; "oc2/Makefile") CONFIG_FILES="$CONFIG_FILES oc2/Makefile" ;; "libdap2/Makefile") CONFIG_FILES="$CONFIG_FILES libdap2/Makefile" ;; + "libdap4/Makefile") CONFIG_FILES="$CONFIG_FILES libdap4/Makefile" ;; + "libhdf4/Makefile") CONFIG_FILES="$CONFIG_FILES libhdf4/Makefile" ;; "libdispatch/Makefile") CONFIG_FILES="$CONFIG_FILES libdispatch/Makefile" ;; "liblib/Makefile") CONFIG_FILES="$CONFIG_FILES liblib/Makefile" ;; "ncdump/cdl/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/cdl/Makefile" ;; "ncdump/expected/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/expected/Makefile" ;; + "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; + "docs/images/Makefile") CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;; + "nctest/Makefile") CONFIG_FILES="$CONFIG_FILES nctest/Makefile" ;; + "nc_test4/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test4/Makefile" ;; + "nc_test/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test/Makefile" ;; "ncdap_test/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/Makefile" ;; "ncdap_test/testdata3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/testdata3/Makefile" ;; "ncdap_test/expected3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expected3/Makefile" ;; - "ncdap_test/expected4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expected4/Makefile" ;; "ncdap_test/expectremote3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expectremote3/Makefile" ;; - "ncdap_test/expectremote4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expectremote4/Makefile" ;; + "dap4_test/Makefile") CONFIG_FILES="$CONFIG_FILES dap4_test/Makefile" ;; + "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -20928,100 +21045,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - case $CONFIG_FILES in #( - *\'*) : - eval set x "$CONFIG_FILES" ;; #( - *) : - set x $CONFIG_FILES ;; #( - *) : - ;; -esac - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`$as_dirname -- "$am_mf" || -$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$am_mf" : 'X\(//\)[^/]' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - am_filepart=`$as_basename -- "$am_mf" || -$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { echo "$as_me:$LINENO: cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles" >&5 - (cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } || am_rc=$? - done - if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking). -See \`config.log' for more details" "$LINENO" 5; } - fi - { am_dirpart=; unset am_dirpart;} - { am_filepart=; unset am_filepart;} - { am_mf=; unset am_mf;} - { am_rc=; unset am_rc;} - rm -f conftest-deps.mk -} - ;; "libtool":C) # See if we are running on zsh, and set the options that allow our @@ -21078,15 +21101,6 @@ available_tags='' macro_version=$macro_version macro_revision=$macro_revision -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - # Whether or not to build shared libraries. build_libtool_libs=$enable_shared @@ -21166,6 +21180,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -21178,6 +21195,9 @@ file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd @@ -21568,40 +21588,9 @@ ltmain=$ac_aux_dir/ltmain.sh chmod +x "$ofile" ;; - "Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "nc-config":F) test -f nc-config && chmod 755 nc-config ;; - "netcdf.pc":F) test -f nc-config && chmod 755 nc-config ;; - "libnetcdf.settings":F) test -f nc-config && chmod 755 nc-config ;; - "postinstall.sh":F) test -f nc-config && chmod 755 nc-config ;; - "include/netcdf_meta.h":F) test -f nc-config && chmod 755 nc-config ;; - "include/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "h5_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "docs/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "docs/images/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "libsrc/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "libsrc4/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "libsrcp/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "nctest/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "nc_test4/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "nc_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdump/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncgen3/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncgen/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "examples/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "examples/C/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "examples/CDL/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "oc2/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "libdap2/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "libdispatch/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "liblib/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdump/cdl/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdump/expected/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/testdata3/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/expected3/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/expected4/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/expectremote3/Makefile":F) test -f nc-config && chmod 755 nc-config ;; - "ncdap_test/expectremote4/Makefile":F) test -f nc-config && chmod 755 nc-config ;; + "nc_test4/run_par_test.sh":F) chmod ugo+x nc_test4/run_par_test.sh ;; + "nc_test4/run_par_bm_test.sh":F) chmod ugo+x nc_test4/run_par_bm_test.sh ;; + "nc-config":F) chmod 755 nc-config ;; esac done # for ac_tag diff --git a/contrib/netcdf/netcdf-c-4.6.2/configure.ac b/contrib/netcdf/netcdf-c-4.6.2/configure.ac new file mode 100644 index 00000000000..0841cf8e009 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/configure.ac @@ -0,0 +1,1581 @@ +# -*- Autoconf -*- +## Process this file with autoconf to produce a configure script. + +# This is part of Unidata's netCDF package. Copyright 2005-2018, see +# the COPYRIGHT file for more information. +# Ed Hartnett, Ward Fisher, Dennis Heimbigner + +# Recall that ${VAR-exp} expands to $VAR if var is set (even to null), +# and to exp otherwise. + +# Running autoconf on this file will trigger a warning if +# autoconf is not at least the specified version. +AC_PREREQ([2.59]) + +# Initialize with name, version, and support email address. +AC_INIT([netCDF], [4.6.2], [support-netcdf@unidata.ucar.edu], [netcdf-c]) + +## +# Prefer an empty CFLAGS variable instead of the default -g -O2. +# See: +# * http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/C-Compiler.html#C-Compiler +## +: ${CFLAGS=""} + +AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4 +AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=6 +AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=2 +AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="" + +##### +# Set some variables used to generate a libnetcdf.settings file, +# pattered after the files generated by libhdf4, libhdf5. +##### + +# Create the VERSION file, which contains the package version from +# AC_INIT. +echo AC_PACKAGE_VERSION>VERSION +AC_SUBST(PACKAGE_VERSION) + +AC_MSG_NOTICE([netCDF AC_PACKAGE_VERSION]) + +# Keep libtool macros in an m4 directory. +AC_CONFIG_MACRO_DIR([m4]) + +# Configuration Date +if test "x$SOURCE_DATE_EPOCH" != "x" ; then + AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date -u -d "${SOURCE_DATE_EPOCH}"`" +else + AC_SUBST([CONFIG_DATE]) CONFIG_DATE="`date`" +fi + +# Find out about the host we're building on. +AC_CANONICAL_HOST + +# Find out about the target we're building for. +AC_CANONICAL_TARGET + +AC_CONFIG_HEADERS([config.h]) + +## +# Some files need to exist in build directories +# that do not correspond to their source directory, or +# the test program makes an assumption about where files +# live. AC_CONFIG_LINKS provides a mechanism to link/copy files +# if an out-of-source build is happening. +## + +AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat1.nc:nc_test4/ref_hdf5_compat1.nc]) +AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat2.nc:nc_test4/ref_hdf5_compat2.nc]) +AC_CONFIG_LINKS([nc_test4/ref_hdf5_compat3.nc:nc_test4/ref_hdf5_compat3.nc]) + +AC_CONFIG_LINKS([hdf4_test/ref_chunked.hdf4:hdf4_test/ref_chunked.hdf4]) +AC_CONFIG_LINKS([hdf4_test/ref_contiguous.hdf4:hdf4_test/ref_contiguous.hdf4]) + +AM_INIT_AUTOMAKE([foreign dist-xz dist-bzip2 color-tests subdir-objects 1.11 serial-tests no-dependencies]) + +# use silent rules - requires at least automake 1.11 +AM_SILENT_RULES(yes) + +AM_MAINTAINER_MODE() + +# Check for the existence of this file before proceeding. +AC_CONFIG_SRCDIR([include/netcdf.h]) + +AC_MSG_NOTICE([checking user options]) + +# Did the user specify a default minimum blocksize (NCIO_MINBLOCKSIZE) for posixio? +AC_MSG_CHECKING([whether a NCIO_MINBLOCKSIZE was specified]) +AC_ARG_WITH([minblocksize], + [AS_HELP_STRING([--with-minblocksize=], + [Specify minimum I/O blocksize for netCDF classic and 64-bit offset format files.])], + [NCIO_MINBLOCKSIZE=$with_minblocksize], [NCIO_MINBLOCKSIZE=256]) +AC_MSG_RESULT([$NCIO_MINBLOCKSIZE]) +AC_DEFINE_UNQUOTED([NCIO_MINBLOCKSIZE], [$NCIO_MINBLOCKSIZE], [min blocksize for posixio.]) + +# Find valgrind, if available, and add targets for it. +AX_VALGRIND_DFLT([sgcheck], [off]) +AX_VALGRIND_CHECK +AM_CONDITIONAL(ENABLE_VALGRIND, [test "x$VALGRIND_ENABLED" = xyes]) + +### +# 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]) + +AC_ARG_ENABLE([doxygen-tasks], + [AS_HELP_STRING([--enable-doxygen-tasks], + [Enable Doxygen-generated test, todo and bug list documentation. Developers only.])]) +test "x$enable_doxygen_tasks" = xyes || enable_doxygen_tasks=no +AM_CONDITIONAL([SHOW_DOXYGEN_TAG_LIST], [test "x$enable_doxygen_tasks" = xyes]) +AC_SUBST([SHOW_DOXYGEN_TAG_LIST], [$enable_doxygen_tasks]) + +### +# Determine if we should build documentation +# configured for releases on the Unidata web server. +### +AC_ARG_ENABLE([doxygen-build-release-docs], + [AS_HELP_STRING([--enable-doxygen-build-release-docs], + [Build release documentation. This is of interest only to developers.])]) +test "x$enable_doxygen_build_release_docs" = xyes || enable_doxygen_build_release_docs=no +AM_CONDITIONAL([DOXYGEN_BUILD_RELEASE_DOCS], [test "x$enable_doxygen_build_release_docs" = xyes]) + +if test $enable_doxygen_build_release_docs = yes; then + AC_SUBST([DOXYGEN_CSS_FILE], ["release.css"]) + AC_SUBST([DOXYGEN_HEADER_FILE], ["release_header.html"]) + AC_SUBST([DOXYGEN_SEARCHENGINE], ["NO"]) +else + AC_SUBST([DOXYGEN_CSS_FILE], []) + AC_SUBST([DOXYGEN_HEADER_FILE], []) + AC_SUBST([DOXYGEN_SEARCHENGINE], ["YES"]) +fi +AC_SUBST([DOXYGEN_SERVER_BASED_SEARCH], ["NO"]) + +AC_ARG_ENABLE([doxygen-pdf-output], + [AS_HELP_STRING([--enable-doxygen-pdf-output], + [Build netCDF library documentation in PDF format. Experimental.])]) + AM_CONDITIONAL([NC_ENABLE_DOXYGEN_PDF_OUTPUT], [test "x$enable_doxygen_pdf_output" = xyes]) +AC_SUBST([NC_ENABLE_DOXYGEN_PDF_OUTPUT], [$enable_doxygen_pdf_output]) + +AC_ARG_ENABLE([dot], + [AS_HELP_STRING([--enable-dot], + [Use dot (provided by graphviz) to generate charts and graphs in the doxygen-based documentation.])]) + test "x$enable_dot" = xyes || enable_dot=no + +AC_ARG_ENABLE([internal-docs], + [AS_HELP_STRING([--enable-internal-docs], + [Include documentation of library internals. This is of interest only to those developing the netCDF library.])]) +test "x$enable_internal_docs" = xyes || enable_internal_docs=no +AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs]) + +# Doxygen is apparently buggy when trying to combine a markdown +# file with @internal. The equivalent can be faked using +# the Doxygen ENABLED_SECTIONS mechanism. See docs/testserver.dox +# to see how this is done. +sections= +if test "x$enable_internal_docs" = xyes ; then +sections="$sections INTERNAL" +fi +AC_SUBST([ENABLED_DOC_SECTIONS], [$sections]) + +AC_MSG_CHECKING([if fsync support is enabled]) +AC_ARG_ENABLE([fsync], + [AS_HELP_STRING([--enable-fsync], + [enable fsync support])], + [], + [enable_fsync=no]) +test "x$enable_fsync" = xno || enable_fsync=yes +AC_MSG_RESULT($enable_fsync) +if test "x$enable_fsync" = xyes ; then +AC_DEFINE([USE_FSYNC], [1], [if true, include experimental fsync code]) +fi + +# Temporary until JNA bug is fixed (which is probably never). +# The problem being solved is this: +# > On Windows using the microsoft runtime, it is an error +# > for one library to free memory allocated by a different library. +# This is probably only an issue when using the netcdf-c library +# via JNA under Java. +AC_MSG_CHECKING([if jna bug workaround is enabled]) +AC_ARG_ENABLE([jna], + [AS_HELP_STRING([--enable-jna], + [enable jna bug workaround])], + [], + [enable_jna=no]) +test "x$enable_jna" = xno || enable_jna=yes +AC_MSG_RESULT($enable_jna) +if test "x$enable_jna" = xyes ; then +AC_DEFINE([JNA], [1], [if true, include jna bug workaround code]) +fi + +# Does the user want to build netcdf-4? +AC_MSG_CHECKING([whether we should build netCDF-4]) +AC_ARG_ENABLE([netcdf-4], [AS_HELP_STRING([--disable-netcdf-4], + [do not build with netcdf-4 (else HDF5 and zlib required)])]) +test "x$enable_netcdf_4" = xno || enable_netcdf_4=yes +enable_hdf5=enable_netcdf_4 + +# Synonym +AC_ARG_ENABLE([netcdf4], [AS_HELP_STRING([--disable-netcdf4], + [(just a synonym for --disable-netcdf-4)])]) +test "x$enable_netcdf4" = xno || enable_netcdf4=yesi +if test "x$enable_netcdf4" = xno ; then +enable_netcdf_4=no +fi +AC_MSG_RESULT([$enable_netcdf_4]) + +# Does the user require dynamic loading? +# This is only for those hdf5 installs that support it. +AC_MSG_CHECKING([do we require hdf5 dynamic-loading support]) +AC_ARG_ENABLE([dynamic-loading], [AS_HELP_STRING([--enable-dynamic-loading], + [enable dynamic loading for use with supported hdf5 installs (libdl, HDF5 required)])]) +test "x$enable_dynamic_loading" = xno || enable_dynamic_loading=yes +AC_MSG_RESULT([$enable_dynamic_loading]) + +# Does the user want to turn on HDF4 read ability? +AC_MSG_CHECKING([whether reading of HDF4 SD files is to be enabled]) +AC_ARG_ENABLE([hdf4], [AS_HELP_STRING([--enable-hdf4], + [build netcdf-4 with HDF4 read capability (HDF4, HDF5 and zlib required)])]) +test "x$enable_hdf4" = xyes || enable_hdf4=no +if test "x$enable_hdf4" = xyes -a "x$enable_netcdf_4" = xno; then + AC_MSG_ERROR([NetCDF-4 is required for HDF4 features]) +fi +AC_MSG_RESULT($enable_hdf4) + +# Does the user want to turn on extra HDF4 file tests? +AC_MSG_CHECKING([whether to fetch some sample HDF4 files from Unidata ftp site to test HDF4 reading (requires wget)]) +AC_ARG_ENABLE([hdf4-file-tests], [AS_HELP_STRING([--enable-hdf4-file-tests], + [get some HDF4 files from Unidata ftp site and test that they can be read])]) +test "x$enable_hdf4" = xyes -a "x$enable_hdf4_file_tests" = xyes || enable_hdf4_file_tests=no +if test "x$enable_hdf4_file_tests" = xyes; then + AC_DEFINE([USE_HDF4_FILE_TESTS], 1, [If true, use use wget to fetch some sample HDF4 data, and then test against it.]) +fi +AC_MSG_RESULT($enable_hdf4_file_tests) + +# Does the user want to try to install netcdf-fortran +# automatically? +AC_MSG_CHECKING([whether we should attempt to install netcdf-fortran (EXPERIMENTAL)]) +AC_ARG_ENABLE([remote-fortran-bootstrap], [AS_HELP_STRING([--enable-remote-fortran-bootstrap], + [Download and install netcdf-fortran (EXPERIMENTAL)])]) +test "x$enable_remote_fortran_bootstrap" = xyes || enable_remote_fortran_bootstrap=no +AC_MSG_RESULT([$enable_remote_fortran_bootstrap]) + +# Does the user want to run extra example tests +AC_MSG_CHECKING([whether extra example tests should be run]) +AC_ARG_ENABLE([extra-example-tests], + [AS_HELP_STRING([--enable-extra-example-tests], + [Run extra example tests; requires GNU sed. Ignored if \ + netCDF-4 is not enabled.])]) +test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no +AC_MSG_RESULT($enable_extra_example_tests) + +# Does the user want to run extra parallel tests when parallel netCDF-4 is built? +AC_MSG_CHECKING([whether parallel IO tests should be run]) +AC_ARG_ENABLE([parallel-tests], + [AS_HELP_STRING([--enable-parallel-tests], + [Run extra parallel IO tests. Requires netCDF-4 + with parallel I/O support.])]) +test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no +AC_MSG_RESULT($enable_parallel_tests) + +# Did the user specify an MPI launcher other than mpiexec? +AC_MSG_CHECKING([whether a user specified program to run mpi programs]) +AC_ARG_WITH([mpiexec], + [AS_HELP_STRING([--with-mpiexec=], + [Specify command to launch MPI parallel tests.])], + [MPIEXEC=$with_mpiexec], [MPIEXEC=mpiexec]) +AC_MSG_RESULT([$MPIEXEC]) +AC_SUBST([MPIEXEC], [$MPIEXEC]) + +# Did the user specify a default chunk size? +AC_MSG_CHECKING([whether a default chunk size in bytes was specified]) +AC_ARG_WITH([default-chunk-size], + [AS_HELP_STRING([--with-default-chunk-size=], + [Specify default size of chunks in bytes.])], + [DEFAULT_CHUNK_SIZE=$with_default_chunk_size], [DEFAULT_CHUNK_SIZE=4194304]) +AC_MSG_RESULT([$DEFAULT_CHUNK_SIZE]) +AC_DEFINE_UNQUOTED([DEFAULT_CHUNK_SIZE], [$DEFAULT_CHUNK_SIZE], [default chunk size in bytes]) + +# Did the user specify a max per-var cache size? +AC_MSG_CHECKING([whether a maximum per-variable cache size for HDF5 was specified]) +AC_ARG_WITH([max-default-cache-size], + [AS_HELP_STRING([--with-max-default-cache-size=], + [Specify maximum size (in bytes) for the default per-var chunk cache.])], + [MAX_DEFAULT_CACHE_SIZE=$with_max_default_cache_size], [MAX_DEFAULT_CACHE_SIZE=67108864]) +AC_MSG_RESULT([$MAX_DEFAULT_CACHE_SIZE]) +AC_DEFINE_UNQUOTED([MAX_DEFAULT_CACHE_SIZE], [$MAX_DEFAULT_CACHE_SIZE], [max size of the default per-var chunk cache.]) + +# Did the user specify a number of chunks in default per-var cache size? +AC_MSG_CHECKING([whether a number of chunks for the default per-variable cache was specified]) +AC_ARG_WITH([default-chunks-in-cache], + [AS_HELP_STRING([--with-default-chunks-in-cache=], + [Specify the number of chunks to store in default per-variable cache.])], + [DEFAULT_CHUNKS_IN_CACHE=$with_default_chunks_in_cache], [DEFAULT_CHUNKS_IN_CACHE=10]) +AC_MSG_RESULT([$DEFAULT_CHUNKS_IN_CACHE]) +AC_DEFINE_UNQUOTED([DEFAULT_CHUNKS_IN_CACHE], [$DEFAULT_CHUNKS_IN_CACHE], [num chunks in default per-var chunk cache.]) + +# Did the user specify a default cache size? +AC_MSG_CHECKING([whether a default file cache size for HDF5 was specified]) +AC_ARG_WITH([chunk-cache-size], + [AS_HELP_STRING([--with-chunk-cache-size=], + [Specify default file cache chunk size for HDF5 files in bytes.])], + [CHUNK_CACHE_SIZE=$with_chunk_cache_size], [CHUNK_CACHE_SIZE=4194304]) +AC_MSG_RESULT([$CHUNK_CACHE_SIZE]) +AC_DEFINE_UNQUOTED([CHUNK_CACHE_SIZE], [$CHUNK_CACHE_SIZE], [default file chunk cache size in bytes.]) + +# Did the user specify a default cache nelems? +AC_MSG_CHECKING([whether a default file cache maximum number of elements for HDF5 was specified]) +AC_ARG_WITH([chunk-cache-nelems], + [AS_HELP_STRING([--with-chunk-cache-nelems=], + [Specify default maximum number of elements in the file chunk cache chunk for HDF5 files (should be prime number).])], + [CHUNK_CACHE_NELEMS=$with_chunk_cache_nelems], [CHUNK_CACHE_NELEMS=1009]) +AC_MSG_RESULT([$CHUNK_CACHE_NELEMS]) +AC_DEFINE_UNQUOTED([CHUNK_CACHE_NELEMS], [$CHUNK_CACHE_NELEMS], [default file chunk cache nelems.]) + +# Did the user specify a default cache preemption? +AC_MSG_CHECKING([whether a default cache preemption for HDF5 was specified]) +AC_ARG_WITH([chunk-cache-preemption], + [AS_HELP_STRING([--with-chunk-cache-preemption=], + [Specify default file chunk cache preemption policy for HDF5 files (a number between 0 and 1, inclusive).])], + [CHUNK_CACHE_PREEMPTION=$with_chunk_cache_preemption], [CHUNK_CACHE_PREEMPTION=0.75]) +AC_MSG_RESULT([$CHUNK_CACHE_PREEMPTION]) +AC_DEFINE_UNQUOTED([CHUNK_CACHE_PREEMPTION], [$CHUNK_CACHE_PREEMPTION], [default file chunk cache preemption policy.]) + +# Does the user want to enable netcdf-4 logging? +AC_MSG_CHECKING([whether netCDF-4 logging is enabled]) +AC_ARG_ENABLE([logging], + [AS_HELP_STRING([--enable-logging], + [enable logging capability (only applies when netCDF-4 is built). \ + This debugging features is only of interest to netCDF developers. \ + Ignored if netCDF-4 is not enabled.])]) +test "x$enable_logging" = xyes || enable_logging=no +AC_MSG_RESULT([$enable_logging]) + +# Does the user want to turn off nc_set_log_level() function? (It will +# always be defined if --enable-logging is used.) +AC_MSG_CHECKING([whether nc_set_log_level() function is included (will do nothing unless enable-logging is also used)]) +AC_ARG_ENABLE([set_log_level_func], [AS_HELP_STRING([--disable-set-log-level-func], + [disable the nc_set_log_level function])]) +test "x$enable_set_log_level_func" = xno -a "x$enable_logging" = xno || enable_set_log_level_func=yes +if test "x$enable_set_log_level_func" = xyes -a "x$enable_netcdf_4" = xyes; then + AC_DEFINE([ENABLE_SET_LOG_LEVEL], 1, [If true, define nc_set_log_level.]) +fi +AC_MSG_RESULT($enable_set_log_level_func) + +## Capture the state of the --enable-dap flag => enable dap2+dap4 +AC_MSG_CHECKING([whether DAP client(s) are to be built]) +AC_ARG_ENABLE([dap], + [AS_HELP_STRING([--disable-dap], + [build without DAP client support.])]) +test "x$enable_dap" = xno || enable_dap=yes +AC_MSG_RESULT($enable_dap) + +# We need curl for DAP. +AC_CHECK_LIB([curl],[curl_easy_setopt],[found_curl=yes],[found_curl=no]) +if test "x$enable_dap" = "xyes" ; then + AC_SEARCH_LIBS([curl_easy_setopt],[curl curl.dll], [], + [AC_MSG_ERROR([curl required for remote access. Install curl or build with --disable-dap.])]) +fi + +# --enable-dap => enable-dap4 +enable_dap4=$enable_dap +# Default is now to always do the short remote tests +AC_MSG_CHECKING([whether dap remote testing should be enabled (default off)]) +AC_ARG_ENABLE([dap-remote-tests], + [AS_HELP_STRING([--disable-dap-remote-tests], + [disable dap remote tests])], + [], + [enable_dap_remote_tests=no]) # disabled by default +test "x$enable_dap_remote_tests" = xno || enable_dap_remote_tests=yes +if test "x$enable_dap" = "xno" ; then + enable_dap_remote_tests=no +fi +AC_MSG_RESULT($enable_dap_remote_tests) + +# Default is now to do the remote authorization tests +AC_MSG_CHECKING([whether dap remote authorization testing should be enabled (default off)]) +AC_ARG_ENABLE([dap-auth-tests], + [AS_HELP_STRING([--enable-dap-auth-tests], + [enable dap remote authorization tests])]) +test "x$enable_dap_auth_tests" = xyes || enable_dap_auth_tests=no +# dap must be enabled +if test "x$enable_dap" = "xno" ; then + enable_dap_auth_tests=no +fi +# if remote tests are disabled, then so is this +if test "x$enable_dap_remote_tests" = "xno" ; then + enable_dap_remote_tests=no +fi +AC_MSG_RESULT($enable_dap_auth_tests) + +# Control if groups are supported in [netcdf4]dap2 code +AC_MSG_CHECKING([whether [netcdf4] group names for DAP2 should be enabled (default on)]) +AC_ARG_ENABLE([dap-groups], + [AS_HELP_STRING([--disable-dap-groups], + [disable [netcdf4] DAP2 group names])]) +test "x$enable_dap_groups" = xno || enable_dap_groups=yes +AC_MSG_RESULT($enable_dap_groups) +if test "x$enable_dap" = "xno" ; then + AC_MSG_NOTICE([DAP2 groups is being disabled because DAP2 support is disabled or netcdf-4 disabled]) + enable_dap_groups=no +fi +if test "x$enable_dap_groups" = xyes; then +AC_DEFINE([ENABLE_DAP_GROUPS], [1], [if true, enable DAP group names]) +fi + +# Did the user specify a list of test servers to try for remote tests? +AC_MSG_CHECKING([which remote test server(s) to use]) +AC_ARG_WITH([testservers], + [AS_HELP_STRING([--with-testservers=,...], + [Specify the testserver(s) to try for remote tests.])], + [REMOTETESTSERVERS=$with_testservers], [REMOTETESTSERVERS=no]) +msg="$REMOTETESTSERVERS" +if test "x$REMOTETESTSERVERS" = xno ; then + svclist="149.165.169.123:8080,remotetest.unidata.ucar.edu" + REMOTETESTSERVERS="$svclist" +fi +AC_MSG_RESULT([$svclist]) +AC_DEFINE_UNQUOTED([REMOTETESTSERVERS], ["$REMOTETESTSERVERS"], [the testservers for remote tests.]) + +# Set the config.h flags +if test "x$enable_dap" = xyes; then + AC_DEFINE([USE_DAP], [1], [if true, build DAP Client]) + AC_DEFINE([ENABLE_DAP], [1], [if true, build DAP Client]) +fi + +if test "x$enable_dap_remote_tests" = xyes; then + AC_DEFINE([ENABLE_DAP_REMOTE_TESTS], [1], [if true, do remote tests]) +fi + +AC_MSG_CHECKING([whether the time-consuming dap tests should be enabled (default off)]) +AC_ARG_ENABLE([dap-long-tests], + [AS_HELP_STRING([--enable-dap-long-tests], + [enable dap long tests])]) +test "x$enable_dap_long_tests" = xyes || enable_dap_long_tests=no +if test "x$enable_dap_remote_tests" = "xno" ; then + enable_dap_long_tests=no +fi +AC_MSG_RESULT([$enable_dap_long_tests]) + +AM_CONDITIONAL(INTERNAL_OCLIB,[test "x" = "x"]) + +# Check whether we want to enable strict null byte header padding. +# See https://github.com/Unidata/netcdf-c/issues/657 for more information. +AC_MSG_CHECKING([whether to enable strict null-byte header padding when reading (default off)]) +AC_ARG_ENABLE([strict-null-byte-header-padding], + [AS_HELP_STRING([--enable-strict-null-byte-header-padding], + [enable strict null-byte header padding when reading netCDF3 files.])]) +test "x$enable_strict_null_byte_header_padding" = xyes || enable_strict_null_byte_header_padding=no +AC_MSG_RESULT($enable_strict_null_byte_header_padding) + +if test "x$enable_strict_null_byte_header_padding" = xyes; then + AC_DEFINE([USE_STRICT_NULL_BYTE_HEADER_PADDING], [1], [if true, enable strict null byte header padding]) +fi + +AM_CONDITIONAL(USE_STRICT_NULL_BYTE_HEADER_PADDING, [test x$enable_strict_null_byte_header_padding = xyes ]) + +# Does the user want to use the ffio module? +AC_MSG_CHECKING([whether FFIO will be used]) +AC_ARG_ENABLE([ffio], + [AS_HELP_STRING([--enable-ffio], + [use ffio instead of posixio (ex. on the Cray)])]) +test "x$enable_ffio" = xyes || enable_ffio=no +AC_MSG_RESULT($enable_ffio) +if test "x$enable_ffio" = xyes; then + AC_DEFINE([USE_FFIO], [1], [if true, use ffio instead of posixio]) +fi +AM_CONDITIONAL(USE_FFIO, [test x$enable_ffio = xyes]) + +# Does the user want to use the stdio module? +AC_MSG_CHECKING([whether STDIO will be used]) +AC_ARG_ENABLE([stdio], + [AS_HELP_STRING([--enable-stdio], + [use stdio instead of posixio (ex. on the Cray)])]) +test "x$enable_stdio" = xyes || enable_stdio=no +AC_MSG_RESULT($enable_stdio) +if test "x$enable_stdio" = xyes; then + AC_DEFINE([USE_STDIO], [1], [if true, use stdio instead of posixio]) +fi +AM_CONDITIONAL(USE_STDIO, [test x$enable_stdio = xyes]) + +nc_build_c=yes +nc_build_v2=yes +nc_build_utilities=yes +nc_build_tests=yes +nc_build_examples=yes + +# Does the user want to build examples? +AC_MSG_CHECKING([whether examples should be built]) +AC_ARG_ENABLE([examples], + [AS_HELP_STRING([--disable-examples], + [don't build the netCDF examples during make check \ + (examples are treated as extra tests by netCDF)])]) +test "x$enable_examples" = xno && nc_build_examples=no +AC_MSG_RESULT($nc_build_examples) +AM_CONDITIONAL(BUILD_EXAMPLES, [test x$nc_build_examples = xyes]) + +# Does the user want to disable the V2 API? +AC_MSG_CHECKING([whether v2 netCDF API should be built]) +AC_ARG_ENABLE([v2], + [AS_HELP_STRING([--disable-v2], + [turn off the netCDF version 2 API])]) +test "x$enable_v2" = xno && nc_build_v2=no +AC_MSG_RESULT($nc_build_v2) +AM_CONDITIONAL(BUILD_V2, [test x$nc_build_v2 = xyes]) +if test "x$nc_build_v2" = xno; then + AC_DEFINE_UNQUOTED(NO_NETCDF_2, 1, [do not build the netCDF version 2 API]) +else + AC_DEFINE_UNQUOTED(USE_NETCDF_2, 1, [build the netCDF version 2 API]) +fi + +# Does the user want to disable ncgen/ncdump/nccopy? +AC_MSG_CHECKING([whether the ncgen/ncdump/nccopy should be built]) +AC_ARG_ENABLE([utilities], + [AS_HELP_STRING([--disable-utilities], + [don't build netCDF utilities ncgen, ncdump, and nccopy])]) +test "x$nc_build_c" = xno && enable_utilities=no +test "x$enable_utilities" = xno && nc_build_utilities=no +AC_MSG_RESULT($nc_build_utilities) +AM_CONDITIONAL(BUILD_UTILITIES, [test x$nc_build_utilities = xyes]) + +# Does the user want to disable all tests? +AC_MSG_CHECKING([whether test should be built and run]) +AC_ARG_ENABLE([testsets], + [AS_HELP_STRING([--disable-testsets], + [don't build or run netCDF tests])], + [], + enable_testsets=no) # disabled by default +test "x$enable_testsets" = xno || enable_testsets=yes +nc_build_tests=$enable_testsets +AC_MSG_RESULT($nc_build_tests) +AM_CONDITIONAL(BUILD_TESTSETS, [test x$nc_build_tests = xyes]) + +# Does the user want to run tests for large files (> 2GiB)? +AC_MSG_CHECKING([whether large file (> 2GB) tests should be run]) +AC_ARG_ENABLE([large-file-tests], + [AS_HELP_STRING([--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])]) +test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no +AC_MSG_RESULT($enable_large_file_tests) +AM_CONDITIONAL(LARGE_FILE_TESTS, [test x$enable_large_file_tests = xyes]) +if test "x$enable_large_file_tests" = xyes; then + AC_DEFINE([LARGE_FILE_TESTS], [1], [do large file tests]) +fi + +# Does the user want to run benchmarks? +AC_MSG_CHECKING([whether benchmarks should be run (experimental)]) +AC_ARG_ENABLE([benchmarks], + [AS_HELP_STRING([--enable-benchmarks], + [Run benchmarks. This is an experimental feature. You must fetch + sample data files from the Unidata ftp site to use these benchmarks. + The benchmarks are a bunch of extra tests, which are timed. We use these + tests to check netCDF performance.])]) +test "x$enable_benchmarks" = xyes || enable_benchmarks=no +AC_MSG_RESULT($enable_benchmarks) +AM_CONDITIONAL(BUILD_BENCHMARKS, [test x$enable_benchmarks = xyes]) + +# Does the user want to use extreme numbers in testing. +AC_MSG_CHECKING([whether extreme numbers should be used in tests]) +AC_ARG_ENABLE([extreme-numbers], + [AS_HELP_STRING([--disable-extreme-numbers], + [don't use extreme numbers during testing, such as MAX_INT - 1])]) +case "$host_cpu $host_os" in + *386*solaris*) + test "x$enable_extreme_numbers" = xyes || enable_extreme_numbers=no + ;; + *) + test "x$enable_extreme_numbers" = xno || enable_extreme_numbers=yes + ;; +esac +AC_MSG_RESULT($enable_extreme_numbers) + +if test "x$enable_extreme_numbers" = xyes; then + AC_DEFINE(USE_EXTREME_NUMBERS, 1, [set this to use extreme numbers in tests]) +fi + +# If the env. variable TEMP_LARGE is set, or if +# --with-temp-large=, use it as a place for the large +# (i.e. > 2 GiB) files created during the large file testing. +AC_MSG_CHECKING([where to put large temp files if large file tests are run]) +AC_ARG_WITH([temp-large], + [AS_HELP_STRING([--with-temp-large=], + [specify directory where large files (i.e. >2 GB) \ + will be written, if large files tests are run with + --enable-large-file-tests])], + [TEMP_LARGE=$with_temp_large]) +TEMP_LARGE=${TEMP_LARGE-.} +AC_MSG_RESULT($TEMP_LARGE) +#AC_SUBST(TEMP_LARGE) +AC_DEFINE_UNQUOTED([TEMP_LARGE], ["$TEMP_LARGE"], [Place to put very large netCDF test files.]) + +# Specify extra values to add to _NCProperties attribute +# --with-ncproperties-extra="=|...". +# Note: need to figure out a way to do this programmatically also +AC_MSG_CHECKING([Extra values for _NCProperties]) +AC_ARG_WITH([ncproperties-extra], + [AS_HELP_STRING([--with-ncproperties-extra="=,...], + [specify extra pairs for _NCProperties])], + [NCPROPERTIES_EXTRA=$with_ncproperties_extra], + [NCPROPERTIES_EXTRA=""]) +AC_MSG_RESULT([$NCPROPERTIES_EXTRA]) +AC_DEFINE_UNQUOTED([NCPROPERTIES_EXTRA], ["$NCPROPERTIES_EXTRA"], [Extra pairs for _NCProperties]) + +# Did the user specify a user-defined format 0? +AC_MSG_CHECKING([whether user-defined format 0 was specified]) +AC_ARG_WITH([udf0], + [AS_HELP_STRING([--with-udf0=], + [Specify a dispatch table for user-defined format 0.])], + [UDF0_DISPATCH=$with_udf0]) +AC_MSG_RESULT([$UDF0_DISPATCH]) +if test -n "$UDF0_DISPATCH"; then + AC_DEFINE_UNQUOTED([UDF0_DISPATCH], [$UDF0_DISPATCH], [dispatch table for user-defined format 0.]) + AC_DEFINE_UNQUOTED([UDF0_DISPATCH_FUNC], [get_$UDF0_DISPATCH()], [function to get dispatch table for user-defined format 0.]) + AC_DEFINE([USE_UDF0], [1], [if true, use user-defined format 0 in utilities]) + AC_CHECK_LIB([$UDF0_DISPATCH], [get_$UDF0_DISPATCH], [], + [AC_MSG_ERROR([Can't find or link to the user-defined format 0 library.])], + []) +fi + +# Did the user specify a magic number for user-defined format 0? +AC_MSG_CHECKING([whether a magic number for user-defined format 0 was specified]) +AC_ARG_WITH([udf0-magic-number], + [AS_HELP_STRING([--with-udf0-magic-number=], + [Specify a magic number for user-defined format 0 (ignored unless --with-udf0 is also used).])], + [UDF0_MAGIC_NUMBER=$with_udf0_magic_number]) +AC_MSG_RESULT([$UDF0_MAGIC_NUMBER]) + +# Did the user specify a user-defined format 1? +AC_MSG_CHECKING([whether user-defined format 1 was specified]) +AC_ARG_WITH([udf1], + [AS_HELP_STRING([--with-udf1=], + [Specify a dispatch table for user-defined format 1.])], + [UDF1_DISPATCH=$with_udf1]) +AC_MSG_RESULT([$UDF1_DISPATCH]) +if test -n "$UDF1_DISPATCH"; then + AC_DEFINE_UNQUOTED([UDF1_DISPATCH], [$UDF1_DISPATCH], [dispatch table for user-defined format 1.]) + AC_DEFINE_UNQUOTED([UDF1_DISPATCH_FUNC], [get_$UDF1_DISPATCH()], [function to get dispatch table for user-defined format 1.]) + AC_DEFINE([USE_UDF1], [1], [if true, use user-defined format 1 in utilities]) + AC_CHECK_LIB([$UDF1_DISPATCH], [get_$UDF1_DISPATCH], [], + [AC_MSG_ERROR([Can't find or link to the user-defined format 1 library.])], + []) +fi + +# Did the user specify a magic number for user-defined format 0? +AC_MSG_CHECKING([whether a magic number for user-defined format 1 was specified]) +AC_ARG_WITH([udf1-magic-number], + [AS_HELP_STRING([--with-udf1-magic-number=], + [Specify a magic number for user-defined format 1 (ignored unless --with-udf1 is also used).])], + [UDF1_MAGIC_NUMBER=$with_udf1_magic_number]) +AC_MSG_RESULT([$UDF1_MAGIC_NUMBER]) + +# Did the user specify a default cache preemption? +AC_MSG_CHECKING([whether a default cache preemption for HDF5 was specified]) +AC_ARG_WITH([chunk-cache-preemption], + [AS_HELP_STRING([--with-chunk-cache-preemption=], + [Specify default file chunk cache preemption policy for HDF5 files (a number between 0 and 1, inclusive).])], + [CHUNK_CACHE_PREEMPTION=$with_chunk_cache_preemption], [CHUNK_CACHE_PREEMPTION=0.75]) +AC_MSG_RESULT([$CHUNK_CACHE_PREEMPTION]) +AC_DEFINE_UNQUOTED([CHUNK_CACHE_PREEMPTION], [$CHUNK_CACHE_PREEMPTION], [default file chunk cache preemption policy.]) + +# According to the autoconf mailing list gurus, we must test for +# compilers unconditionally. That is, we can't skip looking for the +# fortran compilers, just because the user doesn't want fortran. This +# is due to a limitation in autoconf. + +# Find the C compiler. +AC_MSG_NOTICE([finding C compiler]) + +## Compiler with version information. This consists of the full path +## name of the compiler and the reported version number. +AC_SUBST([CC_VERSION]) +## Strip anything that looks like a flag off of $CC +CC_NOFLAGS=`echo $CC | sed 's/ -.*//'` + +if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then + CC_VERSION="$CC" +else + CC_VERSION="$CC"; + for x in `echo $PATH | sed -e 's/:/ /g'`; do + if test -x $x/$CC_NOFLAGS; then + CC_VERSION="$x/$CC" + break + fi + done +fi +if test -n "$cc_version_info"; then + CC_VERSION="$CC_VERSION ( $cc_version_info)" +fi + + +AC_PROG_CC +AM_PROG_CC_C_O +AC_C_CONST + +# CURLOPT_USERNAME is not defined until curl version 7.19.1 +# CURLOPT_PASSWORD is not defined until curl version 7.19.1 +# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4 +# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7 +# CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0 +# CURL_MAX_READ_SIZE is not defined until 7.59 + +# Save/restore CFLAGS +SAVECFLAGS="$CFLAGS" +CFLAGS="${curl_cflags}" + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLOPT_USERNAME;]])], + [haveusername=yes], + [haveusername=no]) +AC_MSG_CHECKING([whether CURLOPT_USERNAME is defined]) +AC_MSG_RESULT([${haveusername}]) +if test $haveusername = yes; then + AC_DEFINE([HAVE_CURLOPT_USERNAME],[1],[Is CURLOPT_USERNAME defined]) +fi + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLOPT_PASSWORD;]])], + [havepassword=yes], + [havepassword=no]) +AC_MSG_CHECKING([whether CURLOPT_PASSWORD is defined]) +AC_MSG_RESULT([${havepassword}]) +if test $havepassword = yes; then + AC_DEFINE([HAVE_CURLOPT_PASSWORD],[1],[Is CURLOPT_PASSWORD defined]) +fi + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLOPT_KEYPASSWD;]])], + [havekeypassword=yes], + [havekeypassword=no]) +AC_MSG_CHECKING([whether CURLOPT_KEYPASSWD is defined]) +AC_MSG_RESULT([${havekeypassword}]) +if test $havekeypassword = yes; then + AC_DEFINE([HAVE_CURLOPT_KEYPASSWD],[1],[Is CURLOPT_KEYPASSWD defined]) +fi + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLINFO_RESPONSE_CODE;]])], + [haveresponsecode=yes], + [haveresponsecode=no]) +AC_MSG_CHECKING([whether CURLINFO_RESPONSE_CODE is defined]) +AC_MSG_RESULT([${haveresponsecode}]) +if test $haveresponsecode = yes; then + AC_DEFINE([HAVE_CURLINFO_RESPONSE_CODE],[1],[Is CURLINFO_RESPONSE_CODE defined]) +fi + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLOPT_BUFFERSIZE;]])], + [havecurloption=yes], + [havecurloption=no]) +AC_MSG_CHECKING([whether CURLOPT_BUFFERSIZE is defined]) +AC_MSG_RESULT([${havecurloption}]) +if test $havecurloption = yes; then + AC_DEFINE([HAVE_CURLOPT_BUFFERSIZE],[1],[Is CURLOPT_BUFFERSIZE defined]) +fi + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[#include "curl/curl.h"], +[[int x = CURLOPT_TCP_KEEPALIVE;]])], + [havecurloption=yes], + [havecurloption=no]) +AC_MSG_CHECKING([whether CURLOPT_TCP_KEEPALIVE is defined]) +AC_MSG_RESULT([${havecurloption}]) +if test $havecurloption = yes; then + AC_DEFINE([HAVE_CURLOPT_KEEPALIVE],[1],[Is CURLOPT_TCP_KEEPALIVE defined]) +fi + +CFLAGS="$SAVECFLAGS" + +# Set up libtool. +AC_MSG_NOTICE([setting up libtool]) +LT_PREREQ([2.2]) +LT_INIT() + +AC_MSG_NOTICE([finding other utilities]) + +# Is m4 installed? If not, bail. +AC_CHECK_PROGS([NC_M4], [m4]) +if test -z "$NC_M4"; then + AC_MSG_ERROR([Cannot find m4 utility. Install m4 and try again.]) +fi + +# 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 + +# Find the install program. +AC_PROG_INSTALL + +# Check to see if any macros must be set to enable large (>2GB) files. +AC_SYS_LARGEFILE + +AC_MSG_NOTICE([displaying some results]) + +## This next macro just prints some results for debugging +## support issues. +UD_DISPLAY_RESULTS + +# For nightly build testing, output CC, FC, etc. +echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt + +AC_MSG_NOTICE([checking types, headers, and functions]) + +AC_CHECK_HEADERS([sys/param.h]) +AC_CHECK_HEADERS([libgen.h]) +#AC_CHECK_HEADERS([locale.h]) +AC_HEADER_STDC +AC_CHECK_HEADERS([locale.h stdio.h stdarg.h fcntl.h malloc.h stdlib.h string.h strings.h unistd.h sys/stat.h getopt.h sys/time.h sys/types.h]) + +# Do sys/resource.h separately +#AC_CHECK_HEADERS([sys/resource.h],[havesysresource=1],[havesysresource=0]) +#if test "x$enable_dll" != xyes ; then +AC_CHECK_HEADERS([sys/resource.h]) +#fi + +# See if we have ftw.h to walk directory trees +AC_CHECK_HEADERS([ftw.h]) + +# Check for these functions... +AC_CHECK_FUNCS([strlcat snprintf \ + strdup strtoll strtoull \ + mkstemp mktemp random \ + getrlimit gettimeofday fsync MPI_Comm_f2c MPI_Info_f2c]) + +# disable dap4 if netcdf-4 is disabled +if test "x$enable_netcdf_4" = "xno" ; then + AC_MSG_WARN([netcdf-4 not enabled; disabling DAP4]) + enable_dap4=no +fi + +if test "x$enable_dap4" = xyes; then + AC_DEFINE([ENABLE_DAP4], [1], [if true, build DAP4 Client]) +fi + +# check for useful, but not essential, memio support +AC_CHECK_FUNCS([memmove getpagesize sysconf]) + +# Does the user want to allow use of mmap for NC_DISKLESS? +AC_MSG_CHECKING([whether mmap is enabled for in-memory files]) +AC_ARG_ENABLE([mmap], + [AS_HELP_STRING([--enable-mmap], + [allow mmap for in-memory files])]) +test "x$enable_mmap" = xyes || enable_mmap=no +AC_MSG_RESULT($enable_mmap) + +# check for mmap and mremap availability before committing to use mmap +AC_CHECK_FUNCS([mmap],[have_mmap=yes],[have_mmap=no]) +AC_CHECK_FUNCS([mremap],[have_mremap=yes],[have_mremap=no]) + +if test "x$have_mmap" != xyes ; then + echo "mmap function is not available: disabling mmap" + enable_mmap=no +fi +if test "x$have_mremap" != xyes ; then + echo "mremap function is not available: disabling mmap" + enable_mmap=no +fi + +if test "x$enable_mmap" = xyes; then + AC_DEFINE([USE_MMAP], [1], [if true, use mmap for in-memory files]) +fi + +AC_FUNC_ALLOCA +AC_CHECK_DECLS([isnan, isinf, isfinite],,,[#include ]) +AC_STRUCT_ST_BLKSIZE +UD_CHECK_IEEE +AC_CHECK_TYPES([size_t, ssize_t, schar, uchar, longlong, ushort, uint, int64, uint64]) +AC_TYPE_OFF_T +AC_TYPE_UINTPTR_T +AC_C_CHAR_UNSIGNED +AC_C_BIGENDIAN + +### +# Crude hack to work around an issue +# in Cygwin. +### +SLEEPCMD="" +PLTFORMOUT="$(uname | cut -d '_' -f 1)" +if test "$PLTFORMOUT" = "CYGWIN"; then + ISCYGWIN=yes + SLEEPCMD="sleep 5" + AC_MSG_NOTICE([Pausing between sizeof() checks to mitigate a Cygwin issue.]) +fi +AM_CONDITIONAL(ISCYGWIN, [test "x$ISCYGWIN" = xyes]) + +$SLEEPCMD +AC_CHECK_SIZEOF(short) +$SLEEPCMD +AC_CHECK_SIZEOF(int) +$SLEEPCMD +AC_CHECK_SIZEOF(long) +$SLEEPCMD +AC_CHECK_SIZEOF(long long) +$SLEEPCMD +AC_CHECK_SIZEOF(float) +$SLEEPCMD +AC_CHECK_SIZEOF(double) +$SLEEPCMD +AC_CHECK_SIZEOF(off_t) +$SLEEPCMD +AC_CHECK_SIZEOF(size_t) +$SLEEPCMD +AC_CHECK_SIZEOF(unsigned long long) + +# Check whether we want to enable CDF5 support. +AC_MSG_CHECKING([whether CDF5 support should be disabled]) +AC_ARG_ENABLE([cdf5], + [AS_HELP_STRING([--disable-cdf5], + [build without CDF5 support. @<:@default: auto@:>@])], + [enable_cdf5=${enableval}], [enable_cdf5=auto] +) +if test "$ac_cv_sizeof_size_t" -lt "8" ; then + if test "x${enable_cdf5}" = xyes ; then + dnl unable to support CDF5, but --enable-cdf5 is explicitly set + AC_MSG_ERROR([Unable to support CDF5 feature because size_t is less than 8 bytes]) + fi + enable_cdf5=no +else + if test "x${enable_cdf5}" != xno ; then + enable_cdf5=yes + fi +fi +AC_MSG_RESULT($enable_cdf5) + +if test "x${enable_cdf5}" = xyes; then + AC_DEFINE([ENABLE_CDF5], [1], [if true, enable CDF5 Support]) +fi +AM_CONDITIONAL(ENABLE_CDF5, [test x$enable_cdf5 = xyes ]) + +$SLEEPCMD +if test "$ac_cv_type_uchar" = yes ; then + AC_CHECK_SIZEOF(uchar) +else + AC_CHECK_SIZEOF(unsigned char) +fi + +$SLEEPCMD +if test "$ac_cv_type_ushort" = yes ; then + AC_CHECK_SIZEOF(ushort) +else + AC_CHECK_SIZEOF(unsigned short int) +fi + +$SLEEPCMD +if test "$ac_cv_type_uint" = yes ; then + AC_CHECK_SIZEOF(uint) +else + AC_CHECK_SIZEOF(unsigned int) +fi +$SLEEPCMD +if test "$ac_cv_type_ushort" = yes ; then + AC_CHECK_SIZEOF(ushort) +else + AC_CHECK_SIZEOF(unsigned short int) +fi +$SLEEPCMD +if test "$ac_cv_type_uint" = yes ; then + AC_CHECK_SIZEOF(uint) +else + AC_CHECK_SIZEOF(unsigned int) +fi +$SLEEPCMD +AC_CHECK_SIZEOF(ssize_t) +$SLEEPCMD +AC_CHECK_SIZEOF([void*]) + +if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then + AC_SEARCH_LIBS([deflate], [zlibwapi zlibstat zlib zlib1 z], [], [ + AC_MSG_ERROR([Can't find or link to the z library. Turn off netCDF-4 and \ + DAP clients with --disable-netcdf-4 --disable-dap, or see config.log for errors.])]) + AC_SEARCH_LIBS([SZ_Compress], [szip sz], [], []) + AC_SEARCH_LIBS([dlopen], [dl dld], [], []) +fi + +# We need the math library +AC_CHECK_LIB([m], [floor], [], +[AC_MSG_ERROR([Can't find or link to the math library.])]) + +if test "x$enable_netcdf_4" = xyes; then + + AC_DEFINE([USE_HDF5], [1], [if true, use HDF5]) + AC_DEFINE([USE_NETCDF4], [1], [if true, build netCDF-4]) + AC_DEFINE([H5_USE_16_API], [1], [use HDF5 1.6 API]) + + # Check for the main hdf5 and hdf5_hl library. + + AC_SEARCH_LIBS([H5Fflush], [hdf5dll hdf5], [], + [AC_MSG_ERROR([Can't find or link to the hdf5 library. Use --disable-netcdf-4, or see config.log for errors.])]) + AC_SEARCH_LIBS([H5DSis_scale], [hdf5_hldll hdf5_hl], [], + [AC_MSG_ERROR([Can't find or link to the hdf5 high-level. Use --disable-netcdf-4, or see config.log for errors.])]) + + AC_CHECK_HEADERS([hdf5.h], [], [AC_MSG_ERROR([Compiling a test with HDF5 failed. Either hdf5.h cannot be found, or config.log should be checked for other reason.])]) + AC_CHECK_FUNCS([H5Z_SZIP]) + hdf5_parallel=no + + # H5Pset_fapl_mpiposix and H5Pget_fapl_mpiposix have been removed since HDF5 1.8.12. + # Use H5Pset_fapl_mpio and H5Pget_fapl_mpio, instead. + AC_CHECK_FUNCS([H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory H5Pset_libver_bounds H5Pset_all_coll_metadata_ops]) + # The user may have parallel HDF5 based on MPI POSIX. + # if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then + # AC_DEFINE([USE_PARALLEL_POSIX], [1], [if true, compile in parallel netCDF-4 based on MPI/POSIX]) + # fi + + # The user may have parallel HDF5 based on MPI mumble mumble. + # if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then + # AC_DEFINE([USE_PARALLEL_MPIO], [1], [if true, compile in parallel netCDF-4 based on MPI/IO]) + # fi + + # Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0) + if test "x$ac_cv_func_H5Pset_all_coll_metadata_ops" = xyes; then + AC_DEFINE([HDF5_HAS_COLL_METADATA_OPS], [1], [if true, use collective metadata ops in parallel netCDF-4]) + fi + + # If parallel is available in hdf5, enable it in the C code. Also add some stuff to netcdf.h. + hdf5_parallel=no + if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then + hdf5_parallel=yes + fi + + AC_MSG_CHECKING([whether parallel io is enabled in hdf5]) + AC_MSG_RESULT([$hdf5_parallel]) + + if test "x$hdf5_parallel" = "xno"; then + if test "x$enable_parallel_tests" = "xyes"; then + AC_MSG_ERROR([Parallel tests requested, but no parallel HDF5 installation detected.]) + fi + fi + + # The user may have built HDF5 with the SZLIB library. + AC_MSG_CHECKING([whether szlib was used when building HDF5]) + enable_szlib=no + if test "x$ac_cv_func_H5Z_SZIP" = xyes; then + enable_szlib=yes + AC_DEFINE([USE_SZIP], [1], [if true, compile in szip compression in netCDF-4 variables]) + fi + AC_MSG_RESULT([$enable_szlib]) + + if test "x$ac_cv_func_H5free_memory" = xyes; then + AC_DEFINE([HDF5_HAS_H5FREE], [1], [if true, H5free_memory() will be used to free hdf5-allocated memory in nc4file.]) + fi + + if test "x$ac_cv_func_H5Pset_libver_bounds" = xyes; then + AC_DEFINE([HDF5_HAS_LIBVER_BOUNDS], [1], [if true, netcdf4 file properties will be set using H5Pset_libver_bounds]) + fi + + # If the user wants hdf4 built in, check it out. + if test "x$enable_hdf4" = xyes; then + AC_CHECK_LIB([jpeg], [jpeg_CreateCompress], [], + [AC_MSG_ERROR([Jpeg library required for --enable-hdf4 builds.])]) + AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes]) + if test "x$nc_mfhdf_h_missing" = xyes; then + AC_MSG_ERROR([Cannot find mfhdf.h, yet --enable-hdf4 was used.]) + fi + AC_CHECK_LIB([df], [Hclose], [], [AC_MSG_ERROR([Can't find or link to the hdf4 df library. See config.log for errors.])]) + AC_CHECK_LIB([mfhdf], [NC_arrayfill], [AC_MSG_ERROR([HDF4 library must be built with --disable-netcdf.])], []) + AC_CHECK_LIB([mfhdf], [SDcreate], [], [AC_MSG_ERROR([Can't find or link to the hdf4 mfhdf library. See config.log for errors.])]) + + AC_CHECK_LIB([jpeg], [jpeg_set_quality], [], [AC_MSG_ERROR([Can't find or link to the jpeg library (required by hdf4). See config.log for errors.])]) + AC_DEFINE([USE_HDF4], [1], [if true, use HDF4 too]) + fi +fi + +# There are several cases for parallelism: +# 1. PnetCDF enabled => we want to parallelism for CDF-1,CDF-2,and CDF-5 +# 2. hdf5 has mpio enabled +# a. do not want to use it for netcdf4 +# b. do want to use it for netcdf4 + +# Should we provide parallel io for netcdf-4? +if test "x$enable_netcdf_4" = xyes ; then + AC_ARG_ENABLE([parallel4], + [AS_HELP_STRING([--disable-parallel4], + [disable parallel I/O for netcdf-4, even if it's enabled in libhdf5])], + [user_set_parallel4=${enableval}]) + test "x$enable_parallel4" = xno || enable_parallel4=yes + + # If user wants parallel IO for netCDF-4, make sure HDF5 can provide it. + if test "x$enable_parallel4" = xyes; then + if test "x$hdf5_parallel" = xno; then + # If user specifically asked for parallel4, then error out. + if test "x$user_set_parallel4" = xyes; then + AC_MSG_ERROR([Paralllel IO in netCDF-4 requested, but HDF5 does not provide parallel IO.]) + fi + # User didn't specify, so disable parallel4 + enable_parallel4=no + AC_MSG_WARN([Parallel io disabled for netcdf-4 because hdf5 does not support]) + fi + fi +else + enable_parallel4=no +fi +AC_MSG_CHECKING([whether parallel I/O is enabled for netcdf-4]) +AC_MSG_RESULT($enable_parallel4) + +# We have already tested for parallel io in netcdf4 +# parallel I/O for CDF-1, 2, and 5 files can also be done through PnetCDF +AC_MSG_CHECKING([whether parallel I/O for classic files is to be enabled]) +AC_ARG_ENABLE([pnetcdf], [AS_HELP_STRING([--enable-pnetcdf], + [build with parallel I/O for classic files. @<:@default: disabled@:>@])]) +test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no +AC_MSG_RESULT($enable_pnetcdf) + +# See if the PnetCDF lib is available and of the +# right version (1.6.0 or later) +if test "x$enable_pnetcdf" = xyes; then + pnetcdf_conflict=no + AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],[pnetcdf_conflict=yes]) + + if test "x$pnetcdf_conflict" = xyes ; then + AC_MSG_ERROR([Cannot link to PnetCDF library.]) + fi + + # Pnetcdf did not support utf-8 until 1.6.0 + + AC_MSG_CHECKING([Is libpnetcdf version 1.6.0 or later?]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ +#include +#if (PNETCDF_VERSION_MAJOR*1000 + PNETCDF_VERSION_MINOR < 1006) + choke me +#endif + ]])], [pnetcdf16=yes], [pnetcdf16=no]) + AC_MSG_RESULT([$pnetcdf16]) + if test x$pnetcdf16 = xno; then + AC_MSG_ERROR([--enable-pnetcdf requires version 1.6.0 or later]) + fi +fi + +# Now, set enable_parallel if either enable_pnetcdf or enable_parallel4 is set +if test "x$enable_pnetcdf" = xyes -o "x$enable_parallel4" = xyes; then + enable_parallel=yes +else + enable_parallel=no +fi +AM_CONDITIONAL(ENABLE_PARALLEL, [test x$enable_parallel = xyes ]) + +if test "x$hdf5_parallel" = xyes; then + # Provide more precise parallel control + AC_DEFINE([HDF5_PARALLEL], [1], [if true, hdf5 has parallelism enabled]) +fi + +# Set config flags +if test "x$enable_parallel4" = xyes; then + # Provide more precise parallel control + AC_DEFINE([USE_PARALLEL4], [1], [if true, parallel netcdf-4 is in use]) +fi + +if test "x$enable_pnetcdf" = xyes; then + AC_DEFINE([USE_PNETCDF], [1], [if true, PnetCDF is used]) +fi + +# If enable_parallel is in use, enable it in the C code. Also add some stuff to netcdf.h. +if test "x$enable_parallel" = xyes; then + AC_DEFINE([USE_PARALLEL], [1], [if true, PnetCDF or parallel netcdf-4 is in use]) +fi + +AC_ARG_ENABLE([erange_fill], + [AS_HELP_STRING([--enable-erange-fill], + [Enable use of fill value when out-of-range type + conversion causes NC_ERANGE error. @<:@default: disabled@:>@])], + [enable_erange_fill=${enableval}], [enable_erange_fill=auto] +) + +AC_ARG_ENABLE([zero-length-coord-bound], + [AS_HELP_STRING([--disable-zero-length-coord-bound], + [Disable a more relaxed boundary error check NC_EINVALCOORDS + to allow coordinate start argument equal to dimension size + when argument count is zero. @<:@default: enabled@:>@])], + [enable_zero_length_coord_bound=${enableval}], [enable_zero_length_coord_bound=auto] +) + +# check PnetCDF's settings on enable_erange_fill and relax_coord_bound +if test "x$enable_pnetcdf" = xyes; then + UD_CHECK_HEADER_PATH([pnetcdf.h]) + + AC_MSG_CHECKING([if erange-fill is enabled in PnetCDF]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ +#include +#if !defined(PNETCDF_ERANGE_FILL) || PNETCDF_ERANGE_FILL == 0 + choke me +#endif]])], [enable_erange_fill_pnetcdf=yes], [enable_erange_fill_pnetcdf=no]) + AC_MSG_RESULT([$enable_erange_fill_pnetcdf]) + if test "x$enable_erange_fill" = xauto ; then + enable_erange_fill=$enable_erange_fill_pnetcdf + elif test "$enable_erange_fill" != "$enable_erange_fill_pnetcdf"; then + if test "$enable_erange_fill" = yes; then + AC_MSG_ERROR([Enabling erange-fill conflicts with PnetCDF setting]) + else + AC_MSG_ERROR([Disabling erange-fill conflicts with PnetCDF setting]) + fi + fi + + AC_MSG_CHECKING([if relax-coord-bound is enabled in PnetCDF]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ +#include +#if !defined(PNETCDF_RELAX_COORD_BOUND) || PNETCDF_RELAX_COORD_BOUND == 0 + choke me +#endif]])], [relax_coord_bound_pnetcdf=yes], [relax_coord_bound_pnetcdf=no]) + AC_MSG_RESULT([$relax_coord_bound_pnetcdf]) + if test "x$enable_zero_length_coord_bound" = xauto ; then + enable_zero_length_coord_bound=$relax_coord_bound_pnetcdf + elif test "$enable_zero_length_coord_bound" != "$relax_coord_bound_pnetcdf"; then + if test "$enable_zero_length_coord_bound" = yes; then + AC_MSG_ERROR([Enabling relax-coord-bound conflicts with PnetCDF setting]) + else + AC_MSG_ERROR([Disabling relax-coord-bound conflicts with PnetCDF setting]) + fi + fi +else + # default setting + enable_erange_fill=no + enable_zero_length_coord_bound=yes +fi + +if test "x$enable_zero_length_coord_bound" = xyes; then + AC_DEFINE([RELAX_COORD_BOUND], [1], [if true, NC_EINVALCOORDS check is more relaxed]) +fi + +if test "x$enable_erange_fill" = xyes ; then + if test "x$M4FLAGS" = x ; then + M4FLAGS="-DERANGE_FILL" + else + M4FLAGS="$M4FLAGS -DERANGE_FILL" + fi + AC_DEFINE([ERANGE_FILL], [1], [if true, use _FillValue for NC_ERANGE data elements]) +fi +AC_SUBST(M4FLAGS) + +# Check for downloading/building fortran via postinstall script. +if test "x$enable_remote_fortran_bootstrap" = xyes; then + AC_DEFINE([BUILD_FORTRAN], 1, [If true, will attempt to download and build netcdf-fortran.]) +fi + +# No logging for netcdf-3. +if test "x$enable_netcdf_4" = xno; then + enable_logging=no +fi +if test "x$enable_logging" = xyes; then + AC_DEFINE([LOGGING], 1, [If true, turn on logging.]) +fi + +# Automake conditionals need to be called, whether the answer is yes +# or no. +AM_CONDITIONAL(BUILD_PARALLEL, [test x$enable_parallel = xyes]) +AM_CONDITIONAL(TEST_PARALLEL4, [test "x$enable_parallel4" = xyes -a "x$enable_parallel_tests" = xyes]) +AM_CONDITIONAL(BUILD_DAP, [test "x$enable_dap" = xyes]) +AM_CONDITIONAL(USE_DAP, [test "x$enable_dap" = xyes]) # Alias +# Provide protocol specific flags +AM_CONDITIONAL(ENABLE_DAP, [test "x$enable_dap" = xyes]) +AM_CONDITIONAL(ENABLE_DAP4, [test "x$enable_dap4" = xyes]) +AM_CONDITIONAL(USE_STRICT_NULL_BYTE_HEADER_PADDING, [test x$enable_strict_null_byte_header_padding = xyes]) +AM_CONDITIONAL(ENABLE_CDF5, [test "x$enable_cdf5" = xyes]) +AM_CONDITIONAL(ENABLE_DAP_REMOTE_TESTS, [test "x$enable_dap_remote_tests" = xyes]) +AM_CONDITIONAL(ENABLE_DAP_AUTH_TESTS, [test "x$enable_dap_auth_tests" = xyes]) +AM_CONDITIONAL(ENABLE_DAP_LONG_TESTS, [test "x$enable_dap_long_tests" = xyes]) +AM_CONDITIONAL(EXTRA_EXAMPLE_TESTS, [test "x$enable_extra_example_tests" = xyes]) +AM_CONDITIONAL(USE_SZIP, [test "x$ac_cv_func_H5Z_SZIP" = xyes]) +AM_CONDITIONAL(USE_PNETCDF_DIR, [test ! "x$PNETCDFDIR" = x]) +AM_CONDITIONAL(USE_LOGGING, [test "x$enable_logging" = xyes]) +AM_CONDITIONAL(CROSS_COMPILING, [test "x$cross_compiling" = xyes]) +AM_CONDITIONAL(USE_NETCDF4, [test x$enable_netcdf_4 = xyes]) +AM_CONDITIONAL(USE_HDF5, [test x$enable_hdf5 = xyes]) +AM_CONDITIONAL(USE_HDF4, [test x$enable_hdf4 = xyes]) +AM_CONDITIONAL(USE_HDF4_FILE_TESTS, [test x$enable_hdf4_file_tests = xyes]) +AM_CONDITIONAL(USE_RENAMEV3, [test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes]) +AM_CONDITIONAL(BUILD_FORTRAN, [test x$enable_remote_fortran_bootstrap = xyes]) +AM_CONDITIONAL(USE_PNETCDF, [test x$enable_pnetcdf = xyes]) +AM_CONDITIONAL(USE_DISPATCH, [test x$enable_dispatch = xyes]) +AM_CONDITIONAL(BUILD_MMAP, [test x$enable_mmap = xyes]) +AM_CONDITIONAL(BUILD_DOCS, [test x$enable_doxygen = xyes]) +AM_CONDITIONAL(SHOW_DOXYGEN_TAG_LIST, [test x$enable_doxygen_tasks = xyes]) +AM_CONDITIONAL(ENABLE_METADATA_PERF, [test x$enable_metadata_perf = xyes]) + +# If the machine doesn't have a long long, and we want netCDF-4, then +# we've got problems! +if test "x$enable_netcdf_4" = xyes; then + AC_TYPE_LONG_LONG_INT + AC_TYPE_UNSIGNED_LONG_LONG_INT +dnl if test ! "x$ac_cv_type_long_long_int" = xyes -o ! "x$ac_cv_type_unsigned_long_long_int" = xyes; then +dnl AC_MSG_ERROR([This platform does not support long long types. These are required for netCDF-4.]) +dnl fi +fi + +# Create the file name for a "make ftpbin" which is used to generate a +# binary distribution. For each release we generate binary releases on +# the thousands of machines in Unidata's vast underground complex at +# an undisclosed location in the Rocky Mountains. The binary +# distributions, along with the 25-foot thick cement slabs and the +# giant springs, will help distribute netCDF even after a catastrophic +# meteor strike. +AC_MSG_CHECKING([what to call the output of the ftpbin target]) +BINFILE_NAME=binary-netcdf-$PACKAGE_VERSION +test "x$enable_netcdf_4" = xno && BINFILE_NAME=${BINFILE_NAME}_nc3 +BINFILE_NAME=${BINFILE_NAME}.tar +AC_SUBST(BINFILE_NAME) +AC_MSG_RESULT([$BINFILE_NAME $FC $CXX]) + +## +# Bugfix for Cygwin. +## +AC_MSG_CHECKING([if libtool needs -no-undefined flag to build shared libraries]) +case "`uname`" in + CYGWIN*|MINGW*|AIX*) + ## Add in the -no-undefined flag to LDFLAGS for libtool. + AC_MSG_RESULT([yes]) + NOUNDEFINED=" -no-undefined" + ;; + *) + ## Don't add anything + AC_MSG_RESULT([no]) + ;; +esac + +AC_MSG_CHECKING([value of LIBS]) +AC_MSG_RESULT([$LIBS]) + +# Flags for nc-config script; by design $prefix, $includir, $libdir, +# etc. are left as shell variables in the script so as to facilitate +# relocation +if test "x$with_netcdf_c_lib" = x ; then + NC_LIBS="-lnetcdf" +else + NC_LIBS="$with_netcdf_c_lib" +fi +if test "x$enable_shared" != xyes; then + NC_LIBS="$LDFLAGS $NC_LIBS $LIBS" +fi + +case "x$target_os" in +xsolaris*) + NEWNCLIBS="" + for x in $NC_LIBS ; do + case "$x" in + -L*) r=`echo "$x" | sed -e 's|^-L|-R|'` + NEWNCLIBS="$NEWNCLIBS $x $r" + ;; + *) NEWNCLIBS="$NEWNCLIBS $x" ;; + esac + done + NC_LIBS="$NEWNCLIBS" + ;; +*);; +esac + +NC_FLIBS="-lnetcdff $NC_LIBS" + +# temporary to deal with a JNA problem +AC_MSG_CHECKING([If compilation is for use with JNA]) +AC_ARG_ENABLE([jna], + [AS_HELP_STRING([--enable-jna], + [enable jna bug fix])], + [], + [enable_jna=no]) +test "x$enable_jna" = xno || enable_jna=yes +AC_MSG_RESULT($enable_jna) +if test "x$enable_jna" = xyes ; then +AC_DEFINE([JNA], [1], [if true, include JNA bug fix]) +fi + +# Control large metadata performance test +AC_MSG_CHECKING([whether large metadata performance testing should be run]) +AC_ARG_ENABLE([metadata-perf], + [AS_HELP_STRING([--enable-metadata-perf], + [Test performance of nc_create and nc_open on large metadata])]) +test "x$enable_metadata_perf" = xyes || enable_metadata_perf=no +AC_MSG_RESULT($enable_metadata_perf) + +# Control filter test/example +AC_MSG_CHECKING([whether filter testing should be run]) +AC_ARG_ENABLE([filter-testing], + [AS_HELP_STRING([--disable-filter-testing], + [Do not run filter test and example; requires shared libraries and netCDF-4])]) +test "x$enable_filter_testing" = xno || enable_filter_testing=yes +AC_MSG_RESULT($enable_filter_testing) + +if test "x$enable_netcdf_4" = xno ; then +AC_MSG_WARN([netCDF-4 disabled => --disable-filter-testing]) +enable_filter_testing=no +fi + +if test "x$enable_shared" = xno ; then +AC_MSG_WARN([Shared libraries are disabled => --disable-filter-testing]) +enable_filter_testing=no +fi +AM_CONDITIONAL(ENABLE_FILTER_TESTING, [test x$enable_filter_testing = xyes]) + +AC_SUBST(NC_LIBS,[$NC_LIBS]) +AC_SUBST(HAS_DAP,[$enable_dap]) +AC_SUBST(HAS_DAP2,[$enable_dap]) +AC_SUBST(HAS_DAP4,[$enable_dap4]) +AC_SUBST(HAS_NC2,[$nc_build_v2]) +AC_SUBST(HAS_NC4,[$enable_netcdf_4]) +AC_SUBST(HAS_CDF5,[$enable_cdf5]) +AC_SUBST(HAS_HDF4,[$enable_hdf4]) +AC_SUBST(HAS_HDF5,[$enable_hdf5]) +AC_SUBST(HAS_PNETCDF,[$enable_pnetcdf]) +AC_SUBST(HAS_HDF5,[$enable_netcdf_4]) +AC_SUBST(HAS_LOGGING, [$enable_logging]) +AC_SUBST(HAS_SZLIB,[$enable_szlib]) +AC_SUBST(HAS_PARALLEL,[$enable_parallel]) +AC_SUBST(HAS_PARALLEL4,[$enable_parallel4]) +AC_SUBST(HAS_DISKLESS,[yes]) +AC_SUBST(HAS_MMAP,[$enable_mmap]) +AC_SUBST(HAS_JNA,[$enable_jna]) +AC_SUBST(RELAX_COORD_BOUND,[$enable_zero_length_coord_bound]) +AC_SUBST(HAS_ERANGE_FILL,[$enable_erange_fill]) + + +# Include some specifics for netcdf on windows. +#AH_VERBATIM([_WIN32_STRICMP], +AH_BOTTOM( +[/* Define strcasecmp, snprintf on Win32 systems. */ +#ifdef _WIN32 + #define strcasecmp _stricmp + #define snprintf _snprintf +#endif]) + +# Access netcdf specific version of config.h +AH_BOTTOM([#include "ncconfigure.h"]) + +################################################## +# Uncomment this to keep a copy of autoconf defines at this point, for +# debugging purposes. +# cp confdefs.h my_config.h + +##### +# Create output variables from various +# shell variables, for use in generating +# libnetcdf.settings. +##### +AC_SUBST([enable_shared]) +AC_SUBST([enable_static]) +AC_SUBST([CFLAGS]) +AC_SUBST([CPPFLAGS]) +AC_SUBST([LDFLAGS]) +AC_SUBST([AM_CFLAGS]) +AC_SUBST([AM_CPPFLAGS]) +AC_SUBST([AM_LDFLAGS]) +AC_SUBST([NOUNDEFINED]) + +# Args: +# 1. netcdf_meta.h variable +# 2. conditional variable that is yes or no. +# 3. default condition +# +# example: AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[]) # Because it checks for no. +# AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes]) +AC_DEFUN([AX_SET_META],[ + if [ test "x$2" = x$3 ]; then + AC_SUBST([$1]) $1=1 + else + AC_SUBST([$1]) $1=0 + fi +]) + +##### +# Define values used in include/netcdf_meta.h +##### +AC_SUBST([NC_VERSION]) NC_VERSION=$VERSION +AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[yes]) +AX_SET_META([NC_HAS_NC4],[$enable_netcdf_4],[yes]) +AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes]) +AX_SET_META([NC_HAS_HDF5],[$enable_netcdf_4],[yes]) +AX_SET_META([NC_HAS_SZIP],[$ac_cv_func_H5Z_SZIP],[yes]) +AX_SET_META([NC_HAS_DAP2],[$enable_dap],[yes]) +AX_SET_META([NC_HAS_DAP4],[$enable_dap4],[yes]) +AX_SET_META([NC_HAS_DISKLESS],[yes],[yes]) +AX_SET_META([NC_HAS_MMAP],[$enable_mmap],[yes]) +AX_SET_META([NC_HAS_JNA],[$enable_jna],[yes]) +AX_SET_META([NC_HAS_PNETCDF],[$enable_pnetcdf],[yes]) +AX_SET_META([NC_HAS_PARALLEL],[$enable_parallel],[yes]) +AX_SET_META([NC_HAS_PARALLEL4],[$enable_parallel4],[yes]) +AX_SET_META([NC_HAS_CDF5],[$enable_cdf5],[yes]) +AX_SET_META([NC_HAS_ERANGE_FILL], [$enable_erange_fill],[yes]) +AX_SET_META([NC_RELAX_COORD_BOUND], [$enable_zero_length_coord_bound],[yes]) + +# Automake says that this is always run in top_builddir +# and that srcdir is defined (== top_srcdir) +abs_top_builddir=`pwd` +cd $srcdir +abs_top_srcdir=`pwd` +cd $abs_top_builddir + +# test_common.sh setup +AC_CONFIG_FILES(test_common.sh:test_common.in) +#rm -f ${abs_top_builddir}/test_common.sh +#sed -e "s|@TOPSRCDIR@|${abs_top_srcdir}|" -e "s|@TOPBUILDDIR@|${abs_top_builddir}|" <${abs_top_srcdir}/test_common.in >${abs_top_builddir}/test_common.sh + +# nc_test4/findplugin.sh setup +AC_SUBST([ISCMAKE], []) +AC_SUBST([MSVC], []) +AC_CONFIG_FILES(nc_test4/findplugin.sh:nc_test4/findplugin.in) +AC_CONFIG_FILES(examples/C/findplugin.sh:nc_test4/findplugin.in) + +# DAP 2/4 findtestserver[4].c setup +AC_CONFIG_FILES(ncdap_test/findtestserver.c:ncdap_test/findtestserver.c.in) +AC_CONFIG_FILES(dap4_test/findtestserver4.c:ncdap_test/findtestserver.c.in) + +##### +# End netcdf_meta.h definitions. +##### + +AC_MSG_NOTICE([generating header files and makefiles]) +AC_CONFIG_FILES([nc_test4/run_par_test.sh], [chmod ugo+x nc_test4/run_par_test.sh]) +AC_CONFIG_FILES([nc_test4/run_par_bm_test.sh], [chmod ugo+x nc_test4/run_par_bm_test.sh]) +AC_CONFIG_FILES([nc-config], [chmod 755 nc-config]) +AC_CONFIG_FILES([Makefile + netcdf.pc + libnetcdf.settings + postinstall.sh + include/netcdf_meta.h + include/Makefile + h5_test/Makefile + hdf4_test/Makefile + libsrc/Makefile + libsrc4/Makefile + libhdf5/Makefile + libsrcp/Makefile + ncdump/Makefile + ncgen3/Makefile + ncgen/Makefile + examples/Makefile + examples/C/Makefile + examples/CDL/Makefile + oc2/Makefile + libdap2/Makefile + libdap4/Makefile + libhdf4/Makefile + libdispatch/Makefile + liblib/Makefile + ncdump/cdl/Makefile + ncdump/expected/Makefile + docs/Makefile + docs/images/Makefile + nctest/Makefile + nc_test4/Makefile + nc_test/Makefile + ncdap_test/Makefile + ncdap_test/testdata3/Makefile + ncdap_test/expected3/Makefile + ncdap_test/expectremote3/Makefile + dap4_test/Makefile + plugins/Makefile + ]) +AC_OUTPUT() + +cat libnetcdf.settings diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/CMakeLists.txt new file mode 100644 index 00000000000..e846e9b921b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/CMakeLists.txt @@ -0,0 +1,56 @@ +SET(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) + +remove_definitions(-DDLL_EXPORT) + +ADD_SUBDIRECTORY(baseline) +ADD_SUBDIRECTORY(baselineraw) +ADD_SUBDIRECTORY(baselineremote) +ADD_SUBDIRECTORY(cdltestfiles) +ADD_SUBDIRECTORY(daptestfiles) +ADD_SUBDIRECTORY(dmrtestfiles) +ADD_SUBDIRECTORY(nctestfiles) +ADD_SUBDIRECTORY(misctestfiles) + +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) + +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) + +IF(ENABLE_TESTS) + + # Base tests + # The tests are set up as a combination of shell scripts and executables that + # must be run in a particular order. It is painful but will use macros to help + # keep it from being too bad. + + IF(BUILD_UTILITIES) + add_sh_test(dap4_test test_raw) + ENDIF(BUILD_UTILITIES) + + IF(ENABLE_DAP_REMOTE_TESTS) + + # Change name (add '4') to avoid cmake + # complaint about duplicate targets. + BUILD_BIN_TEST(findtestserver4) + + IF(BUILD_UTILITIES) + add_sh_test(dap4_test test_remote) + ENDIF(BUILD_UTILITIES) + ENDIF(ENABLE_DAP_REMOTE_TESTS) +ENDIF(ENABLE_TESTS) + +FILE(COPY ./baselineraw DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +#FILE(COPY ./baseline DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +#FILE(COPY ./cdltestfiles DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +#FILE(COPY ./daptestfiles DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +#FILE(COPY ./dmrtestfiles DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) + +## Specify files to be distributed by 'make dist' +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh +#${CMAKE_CURRENT_SOURCE_DIR}/daptestfiles +#${CMAKE_CURRENT_SOURCE_DIR}/dmrtestfiles +#${CMAKE_CURRENT_SOURCE_DIR}/cdltestfiles +#${CMAKE_CURRENT_SOURCE_DIR}/baseline +${CMAKE_CURRENT_SOURCE_DIR}/baselineraw +) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.am new file mode 100644 index 00000000000..402a12318ef --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.am @@ -0,0 +1,91 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2011, see the COPYRIGHT file for more information. + +# This file builds and runs DAP4 tests. + +# Put together AM_CPPFLAGS and AM_LDFLAGS. +include $(top_srcdir)/lib_flags.am + +#TEST_EXTENSIONS = .sh + +#SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#TESTS_ENVIRONMENT = export SETX=1; + +LDADD = ${top_builddir}/liblib/libnetcdf.la +AM_CPPFLAGS += -I$(top_srcdir)/libdap4 + +# Set up the tests; do the .sh first, then .c +check_PROGRAMS = +TESTS = + +if ENABLE_DAP4 + +# WARNING: these are unit tests, so they will not +# appear in CMakeLists.txt +check_PROGRAMS += test_parse test_meta test_data +test_parse_SOURCES = test_parse.c test_common.h +test_meta_SOURCES = test_meta.c test_common.h +test_data_SOURCES = test_data.c test_common.h +TESTS += test_parse.sh + +if BUILD_UTILITIES +# These rely on ncdump +TESTS += test_raw.sh +TESTS += test_meta.sh +TESTS += test_data.sh +TESTS += test_fillmismatch.sh +endif + +# Note which tests depend on other tests. Necessary for make -j check. +test_raw.log: test_parse.log +test_meta.log: test_raw.log +test_data.log: test_meta.log + +if ENABLE_DAP_REMOTE_TESTS +# Note: This program name was changed to findtestserver4 +# to avoid cmake complaint about duplicate targets. +check_PROGRAMS += findtestserver4 +findtestserver4_SOURCES = findtestserver4.c +if BUILD_UTILITIES + # relies on ncdump + TESTS += test_remote.sh +endif +endif + +endif #ENABLE_DAP4 + +EXTRA_DIST = test_parse.sh test_meta.sh test_data.sh \ + test_raw.sh test_remote.sh test_hyrax.sh test_fillmismatch.sh \ + tst_curlopt.sh d4test_common.sh \ + daptestfiles dmrtestfiles cdltestfiles nctestfiles misctestfiles \ + baseline baselineraw baselineremote CMakeLists.txt + +CLEANFILES = *.exe +# This should only be left behind if using parallel io +CLEANFILES += tmp_* + +DISTCLEANFILES = findtestserver4.c + +# One last thing +BUILT_SOURCES = .daprc + +.daprc: + echo "#DAPRC" >.daprc + +clean-local: clean-local-check + +.PHONY: clean-local-check + +clean-local-check: + -rm -rf results + -rm -f .dodsrc .daprc + +# The shell file maketests.sh is used to build the testdata +# for dap4 testing. It creates and fills the directories +# daptestfiles, dmrtestfiles, and cdltestfiles +# As a rule, this will only be invoked if there was a change +# in the GenerateRaw.java program in the thredds tree. +maketests:: + bash ./maketests.sh diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.in new file mode 100644 index 00000000000..bd4448f1f0e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/Makefile.in @@ -0,0 +1,919 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2011, see the COPYRIGHT file for more information. + +# This file builds and runs DAP4 tests. + +# This is part of the netCDF package. +# Copyright 2005 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# Assemble the CPPFLAGS and LDFLAGS that point to all the needed +# libraries for netCDF-4. +# +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 +check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) + +# WARNING: these are unit tests, so they will not +# appear in CMakeLists.txt +@ENABLE_DAP4_TRUE@am__append_2 = test_parse test_meta test_data +@ENABLE_DAP4_TRUE@am__append_3 = test_parse.sh + +# These rely on ncdump +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@am__append_4 = test_raw.sh \ +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@ test_meta.sh \ +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@ test_data.sh \ +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@ test_fillmismatch.sh + +# Note: This program name was changed to findtestserver4 +# to avoid cmake complaint about duplicate targets. +@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_5 = findtestserver4 +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_6 = test_remote.sh +subdir = dap4_test +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = findtestserver4.c +CONFIG_CLEAN_VPATH_FILES = +@ENABLE_DAP4_TRUE@am__EXEEXT_1 = test_parse$(EXEEXT) \ +@ENABLE_DAP4_TRUE@ test_meta$(EXEEXT) test_data$(EXEEXT) +@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_2 = findtestserver4$(EXEEXT) +am__findtestserver4_SOURCES_DIST = findtestserver4.c +@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@am_findtestserver4_OBJECTS = findtestserver4.$(OBJEXT) +findtestserver4_OBJECTS = $(am_findtestserver4_OBJECTS) +findtestserver4_LDADD = $(LDADD) +findtestserver4_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am__test_data_SOURCES_DIST = test_data.c test_common.h +@ENABLE_DAP4_TRUE@am_test_data_OBJECTS = test_data.$(OBJEXT) +test_data_OBJECTS = $(am_test_data_OBJECTS) +test_data_LDADD = $(LDADD) +test_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la +am__test_meta_SOURCES_DIST = test_meta.c test_common.h +@ENABLE_DAP4_TRUE@am_test_meta_OBJECTS = test_meta.$(OBJEXT) +test_meta_OBJECTS = $(am_test_meta_OBJECTS) +test_meta_LDADD = $(LDADD) +test_meta_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la +am__test_parse_SOURCES_DIST = test_parse.c test_common.h +@ENABLE_DAP4_TRUE@am_test_parse_OBJECTS = test_parse.$(OBJEXT) +test_parse_OBJECTS = $(am_test_parse_OBJECTS) +test_parse_LDADD = $(LDADD) +test_parse_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(findtestserver4_SOURCES) $(test_data_SOURCES) \ + $(test_meta_SOURCES) $(test_parse_SOURCES) +DIST_SOURCES = $(am__findtestserver4_SOURCES_DIST) \ + $(am__test_data_SOURCES_DIST) $(am__test_meta_SOURCES_DIST) \ + $(am__test_parse_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/lib_flags.am \ + $(top_srcdir)/ncdap_test/findtestserver.c.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) \ + -I$(top_srcdir)/libdap4 +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; + +# Put together AM_CPPFLAGS and AM_LDFLAGS. + +#TEST_EXTENSIONS = .sh + +#SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#TESTS_ENVIRONMENT = export SETX=1; +LDADD = ${top_builddir}/liblib/libnetcdf.la +TESTS = $(am__append_3) $(am__append_4) $(am__append_6) +@ENABLE_DAP4_TRUE@test_parse_SOURCES = test_parse.c test_common.h +@ENABLE_DAP4_TRUE@test_meta_SOURCES = test_meta.c test_common.h +@ENABLE_DAP4_TRUE@test_data_SOURCES = test_data.c test_common.h +@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@findtestserver4_SOURCES = findtestserver4.c +EXTRA_DIST = test_parse.sh test_meta.sh test_data.sh \ + test_raw.sh test_remote.sh test_hyrax.sh test_fillmismatch.sh \ + tst_curlopt.sh d4test_common.sh \ + daptestfiles dmrtestfiles cdltestfiles nctestfiles misctestfiles \ + baseline baselineraw baselineremote CMakeLists.txt + +# This should only be left behind if using parallel io +CLEANFILES = *.exe tmp_* +DISTCLEANFILES = findtestserver4.c + +# One last thing +BUILT_SOURCES = .daprc +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 --ignore-deps dap4_test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps dap4_test/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/lib_flags.am $(am__empty): + +$(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): +findtestserver4.c: $(top_builddir)/config.status $(top_srcdir)/ncdap_test/findtestserver.c.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +findtestserver4$(EXEEXT): $(findtestserver4_OBJECTS) $(findtestserver4_DEPENDENCIES) $(EXTRA_findtestserver4_DEPENDENCIES) + @rm -f findtestserver4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(findtestserver4_OBJECTS) $(findtestserver4_LDADD) $(LIBS) + +test_data$(EXEEXT): $(test_data_OBJECTS) $(test_data_DEPENDENCIES) $(EXTRA_test_data_DEPENDENCIES) + @rm -f test_data$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_data_OBJECTS) $(test_data_LDADD) $(LIBS) + +test_meta$(EXEEXT): $(test_meta_OBJECTS) $(test_meta_DEPENDENCIES) $(EXTRA_test_meta_DEPENDENCIES) + @rm -f test_meta$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_meta_OBJECTS) $(test_meta_LDADD) $(LIBS) + +test_parse$(EXEEXT): $(test_parse_OBJECTS) $(test_parse_DEPENDENCIES) $(EXTRA_test_parse_DEPENDENCIES) + @rm -f test_parse$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_parse_OBJECTS) $(test_parse_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Note which tests depend on other tests. Necessary for make -j check. +@ENABLE_DAP4_TRUE@test_raw.log: test_parse.log +@ENABLE_DAP4_TRUE@test_meta.log: test_raw.log +@ENABLE_DAP4_TRUE@test_data.log: test_meta.log +@BUILD_UTILITIES_TRUE@@ENABLE_DAP4_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE@ # relies on ncdump + +.daprc: + echo "#DAPRC" >.daprc + +clean-local: clean-local-check + +.PHONY: clean-local-check + +clean-local-check: + -rm -rf results + -rm -f .dodsrc .daprc + +# The shell file maketests.sh is used to build the testdata +# for dap4 testing. It creates and fills the directories +# daptestfiles, dmrtestfiles, and cdltestfiles +# As a rule, this will only be invoked if there was a change +# in the GenerateRaw.java program in the thredds tree. +maketests:: + bash ./maketests.sh + +# 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/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4d new file mode 100644 index 00000000000..16bf1f35060 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4d @@ -0,0 +1,13 @@ +netcdf test_anon_dim.2.syn { +dimensions: + _Anonymous4 = 4 ; +variables: + int vu32(_Anonymous4) ; + +// global attributes: + string :_dap4.ce = "/vu32[0:3]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vu32 = -1169720286, -920699049, -2088732436, 1060190036 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4m new file mode 100644 index 00000000000..866dcc2702a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4m @@ -0,0 +1,10 @@ +netcdf test_anon_dim.2 { +dimensions: + _Anonymous4 = 4 ; +variables: + int vu32(_Anonymous4) ; + +// global attributes: + string :_dap4.ce = "/vu32[0:3]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4p new file mode 100644 index 00000000000..a28df7f54e0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.2.syn.d4p @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4d new file mode 100644 index 00000000000..783f71e058a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4d @@ -0,0 +1,13 @@ +netcdf test_anon_dim.syn { +dimensions: + _Anonymous6 = 6 ; +variables: + int vu32(_Anonymous6) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu32 = -1169720286, -920699049, -2088732436, 1060190036, -1123468835, + 922940053 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4m new file mode 100644 index 00000000000..a5cd0ef23fa --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4m @@ -0,0 +1,9 @@ +netcdf test_anon_dim { +dimensions: + _Anonymous6 = 6 ; +variables: + int vu32(_Anonymous6) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4p new file mode 100644 index 00000000000..324103e5e50 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_anon_dim.syn.d4p @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4d new file mode 100644 index 00000000000..f398ff42bfd --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4d @@ -0,0 +1,29 @@ +netcdf test_atomic_array.5.nc { +types: + opaque(16) opaque16_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + ubyte vu8(_Anonymous1, _Anonymous2) ; + double vd(_Anonymous1) ; + string vs(_Anonymous1, _Anonymous1) ; + opaque16_t vo(_Anonymous1, _Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 3, 5 ; + + vd = 1024.8 ; + + vs = + "Καλημέα" ; + + vo = + 0XABCDEF00000000000000000000000000 ; + +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4m new file mode 100644 index 00000000000..860e8f4335c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4m @@ -0,0 +1,16 @@ +netcdf test_atomic_array.5 { +types: + opaque(8) opaque8_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + ubyte vu8(_Anonymous1, _Anonymous2) ; + double vd(_Anonymous1) ; + string vs(_Anonymous1, _Anonymous1) ; + opaque8_t vo(_Anonymous1, _Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4p new file mode 100644 index 00000000000..23427774480 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.5.nc.d4p @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4d new file mode 100644 index 00000000000..d4634ae92c4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4d @@ -0,0 +1,13 @@ +netcdf test_atomic_array.8.nc { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[0:1,3]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + v16 = 1, 2, 4 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4m new file mode 100644 index 00000000000..80a8d5402cd --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4m @@ -0,0 +1,10 @@ +netcdf test_atomic_array.8 { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[0:1,3]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4p new file mode 100644 index 00000000000..2fbd38d2253 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.8.nc.d4p @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4d new file mode 100644 index 00000000000..62bf258d67a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4d @@ -0,0 +1,13 @@ +netcdf test_atomic_array.9.nc { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[3,0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + v16 = 4, 1, 2 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4m new file mode 100644 index 00000000000..cf517dc4607 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4m @@ -0,0 +1,10 @@ +netcdf test_atomic_array.9 { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[3,0:1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4p new file mode 100644 index 00000000000..989bb62dafd --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.9.nc.d4p @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4d new file mode 100644 index 00000000000..cb4008296ce --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4d @@ -0,0 +1,51 @@ +netcdf test_atomic_array.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 255, 1, 2, + 3, 4, 5 ; + + v16 = 1, 2, 3, 4 ; + + vu32 = + 5, 4, 3, + 2, 1, 0 ; + + vd = 17.9, 1024.8 ; + + vc = "@&" ; + + vs = + "hello\tworld", "\r\n", + "Καλημέα", "abc" ; + + vo = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000 ; + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4m new file mode 100644 index 00000000000..0f26f770b51 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4m @@ -0,0 +1,27 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(8) opaque8_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque8_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4p new file mode 100644 index 00000000000..1367230516e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.nc.d4p @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4d new file mode 100644 index 00000000000..2b764e90105 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4d @@ -0,0 +1,53 @@ +netcdf test_atomic_array.syn { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 186, 201, 131, + 63, 189, 55 ; + + v16 = -341, -21899, -13413, -22144 ; + + vu32 = + 2367803413, 3586730583, 511843988, + 3754752863, 2950934681, 2366232135 ; + + vd = 0.217870081192792, 0.602450791996768 ; + + vc = "CO" ; + + vs = + "{S", "gb8^OE$", + "4a/q%n9;5Y", "{fIl?T\"\\A[" ; + + vo = + + 0XA2177AA7287C04FA8BB57BCDF76EC80F, 0X34FA472AA9404DD543143CADED303A75 ; + + primary_cloud = Stratus, Cirrocumulus, Nimbostratus, Cirrostratus, + Stratocumulus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4m new file mode 100644 index 00000000000..3ad1f6471c6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4m @@ -0,0 +1,27 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4p new file mode 100644 index 00000000000..5bfe27742f7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_array.syn.d4p @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4d new file mode 100644 index 00000000000..532106d9888 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4d @@ -0,0 +1,60 @@ +netcdf test_atomic_types.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = -128 ; + + vu8 = 255 ; + + v16 = -32768 ; + + vu16 = _ ; + + v32 = 2147483647 ; + + vu32 = _ ; + + v64 = 9223372036854775807 ; + + vu64 = 18446744073709551615 ; + + vf = 3.141593 ; + + vd = 3.14159265358979 ; + + vc = "@" ; + + vs = "hello\tworld" ; + + vo = 0X0123456789ABCDEF0000000000000000 ; + + primary_cloud = Stratus ; + + secondary_cloud = _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4m new file mode 100644 index 00000000000..cee4c106c37 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4m @@ -0,0 +1,29 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(8) opaque8_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque8_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4p new file mode 100644 index 00000000000..b0cce1de323 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.nc.d4p @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4d new file mode 100644 index 00000000000..e2fcd8a1a24 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4d @@ -0,0 +1,60 @@ +netcdf test_atomic_types.syn { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = 58 ; + + vu8 = 201 ; + + v16 = 896 ; + + vu16 = 16177 ; + + v32 = -1123468835 ; + + vu32 = 2125143125 ; + + v64 = 3059391736915381031 ; + + vu64 = 11577488182652895291 ; + + vf = 0.5512972 ; + + vd = 0.790267301128816 ; + + vc = "*" ; + + vs = "O,L?c8A%V" ; + + vo = 0X46F169EF23CBAF9B1FEBD99E4E16CEC9 ; + + primary_cloud = Altocumulus ; + + secondary_cloud = Stratocumulus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4m new file mode 100644 index 00000000000..98f77811b65 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4m @@ -0,0 +1,29 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4p new file mode 100644 index 00000000000..83d1447e995 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_atomic_types.syn.d4p @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4d new file mode 100644 index 00000000000..ca1c5daf674 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4d @@ -0,0 +1,16 @@ +netcdf test_enum.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Stratus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4m new file mode 100644 index 00000000000..040a808d77c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4m @@ -0,0 +1,13 @@ +netcdf test_enum { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4p new file mode 100644 index 00000000000..c096660228c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum.nc.d4p @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4d new file mode 100644 index 00000000000..0c8de41882e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4d @@ -0,0 +1,19 @@ +netcdf test_enum_2.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: h { + variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + data: + + primary_cloud = Stratus ; + } // group h +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4m new file mode 100644 index 00000000000..2d5753cb21f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4m @@ -0,0 +1,16 @@ +netcdf test_enum_2 { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: h { + variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + } // group h +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4p new file mode 100644 index 00000000000..294fcd6ffbd --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_2.nc.d4p @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4d new file mode 100644 index 00000000000..253e6682503 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4d @@ -0,0 +1,19 @@ +netcdf test_enum_array.4.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + _Anonymous2 = 2 ; +variables: + cloud_class_t primary_cloud(_Anonymous2) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + string :_dap4.ce = "/primary_cloud[1:2:4]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Stratus, Cumulonimbus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4m new file mode 100644 index 00000000000..dd9a73af119 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4m @@ -0,0 +1,16 @@ +netcdf test_enum_array.4 { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + _Anonymous2 = 2 ; +variables: + cloud_class_t primary_cloud(_Anonymous2) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + string :_dap4.ce = "/primary_cloud[1:2:4]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4p new file mode 100644 index 00000000000..80486b71d95 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.4.nc.d4p @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4d new file mode 100644 index 00000000000..0de49ca036a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4d @@ -0,0 +1,18 @@ +netcdf test_enum_array.nc { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d5 = 5 ; +variables: + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4m new file mode 100644 index 00000000000..c4c35a0aa54 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_enum_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d5 = 5 ; +variables: + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4p new file mode 100644 index 00000000000..5580855831b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_enum_array.nc.d4p @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4d new file mode 100644 index 00000000000..44b034271ac --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4d @@ -0,0 +1,17 @@ +netcdf test_fill.nc { +variables: + ubyte uv8 ; + short v16 ; + uint uv32 ; + uv32:_FillValue = 17U ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + uv8 = 240 ; + + v16 = 32700 ; + + uv32 = 111000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4m new file mode 100644 index 00000000000..6de6e8659b0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4m @@ -0,0 +1,10 @@ +netcdf test_fill { +variables: + ubyte uv8 ; + short v16 ; + uint uv32 ; + uv32:_FillValue = 17U ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4p new file mode 100644 index 00000000000..69888eece0c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_fill.nc.d4p @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4d new file mode 100644 index 00000000000..7cf38d7867b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4d @@ -0,0 +1,38 @@ +netcdf test_groups1.nc { +dimensions: + dim1 = 5 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v2(dim2) ; + data: + + v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969 ; + + v2 = 12, -100, _ ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v3(dim3) ; + data: + + v1 = 2, 3, 5, 7, 11 ; + + v3 = 23, 29, 19, 31, 17, 37, 13 ; + } // group i + } // group g +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4m new file mode 100644 index 00000000000..f7b09cfca07 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4m @@ -0,0 +1,28 @@ +netcdf test_groups1 { +dimensions: + dim1 = 5 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v2(dim2) ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v3(dim3) ; + } // group i + } // group g +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4p new file mode 100644 index 00000000000..62f773b0ce9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_groups1.nc.d4p @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4d new file mode 100644 index 00000000000..9795d0c8e24 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4d @@ -0,0 +1,10 @@ +netcdf test_one_var.nc { +variables: + int t ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4m new file mode 100644 index 00000000000..0346f7f5b12 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4m @@ -0,0 +1,7 @@ +netcdf test_one_var { +variables: + int t ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4p new file mode 100644 index 00000000000..64fb2511585 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_var.nc.d4p @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4d new file mode 100644 index 00000000000..e042b26a6eb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4d @@ -0,0 +1,13 @@ +netcdf test_one_vararray.1.nc { +dimensions: + _Anonymous1 = 1 ; +variables: + int t(_Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/t[1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + t = 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4m new file mode 100644 index 00000000000..88290bcc5ca --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4m @@ -0,0 +1,10 @@ +netcdf test_one_vararray.1 { +dimensions: + _Anonymous1 = 1 ; +variables: + int t(_Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/t[1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4p new file mode 100644 index 00000000000..dad21451745 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.1.nc.d4p @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4d new file mode 100644 index 00000000000..45f229cb3ee --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4d @@ -0,0 +1,13 @@ +netcdf test_one_vararray.3.nc { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + string :_dap4.ce = "/t[0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17, 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4m new file mode 100644 index 00000000000..c4a0e23357e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4m @@ -0,0 +1,10 @@ +netcdf test_one_vararray.3 { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + string :_dap4.ce = "/t[0:1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4p new file mode 100644 index 00000000000..1cc58642e47 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.3.nc.d4p @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4d new file mode 100644 index 00000000000..adb28b4c601 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4d @@ -0,0 +1,12 @@ +netcdf test_one_vararray.nc { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17, 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4m new file mode 100644 index 00000000000..b2ea8b41774 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4m @@ -0,0 +1,9 @@ +netcdf test_one_vararray { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4p new file mode 100644 index 00000000000..5c111c30bf4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_one_vararray.nc.d4p @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4d new file mode 100644 index 00000000000..b66dfe22e1c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4d @@ -0,0 +1,12 @@ +netcdf test_opaque.nc { +types: + opaque(16) opaque16_t ; +variables: + opaque16_t vo1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vo1 = 0X0123456789ABCDEF0000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4m new file mode 100644 index 00000000000..2e33c70132b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4m @@ -0,0 +1,9 @@ +netcdf test_opaque { +types: + opaque(8) opaque8_t ; +variables: + opaque8_t vo1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4p new file mode 100644 index 00000000000..43a4016bae3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque.nc.d4p @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4d new file mode 100644 index 00000000000..208c00b54bb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4d @@ -0,0 +1,17 @@ +netcdf test_opaque_array.7.nc { +types: + opaque(16) opaque16_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + opaque16_t vo2(_Anonymous1, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/vo2[1][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vo2 = + 0XFEDCBA98765432100000000000000000, 0XFEDCBA99999999990000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4m new file mode 100644 index 00000000000..f01183fe174 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4m @@ -0,0 +1,13 @@ +netcdf test_opaque_array.7 { +types: + opaque(8) opaque8_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + opaque8_t vo2(_Anonymous1, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/vo2[1][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4p new file mode 100644 index 00000000000..0a886bfb694 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.7.nc.d4p @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4d new file mode 100644 index 00000000000..6d9544a7dd3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4d @@ -0,0 +1,16 @@ +netcdf test_opaque_array.nc { +types: + opaque(16) opaque16_t ; +dimensions: + d2 = 2 ; +variables: + opaque16_t vo2(d2, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vo2 = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000, + 0XFEDCBA98765432100000000000000000, 0XFEDCBA99999999990000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4m new file mode 100644 index 00000000000..f1cd2eb4b4f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4m @@ -0,0 +1,11 @@ +netcdf test_opaque_array { +types: + opaque(8) opaque8_t ; +dimensions: + d2 = 2 ; +variables: + opaque8_t vo2(d2, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4p new file mode 100644 index 00000000000..7f177db8211 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_opaque_array.nc.d4p @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4d new file mode 100644 index 00000000000..9ddfc09547d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4d @@ -0,0 +1,16 @@ +netcdf test_sequence_1.syn { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4m new file mode 100644 index 00000000000..66c5b9d08ab --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4m @@ -0,0 +1,13 @@ +netcdf test_sequence_1 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4p new file mode 100644 index 00000000000..21204dbb10a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_1.syn.d4p @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4d new file mode 100644 index 00000000000..fc453190fa2 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4d @@ -0,0 +1,19 @@ +netcdf test_sequence_2.syn { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}}, + {{-1123468835, -18686}, {2125143125, -21899}, {1268468519, -22144}, {989876086, 3361}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4m new file mode 100644 index 00000000000..531aff2d797 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4m @@ -0,0 +1,15 @@ +netcdf test_sequence_2 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4p new file mode 100644 index 00000000000..12168b24284 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_sequence_2.syn.d4p @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4d new file mode 100644 index 00000000000..e246bc9f051 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4d @@ -0,0 +1,15 @@ +netcdf test_struct1.nc { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4m new file mode 100644 index 00000000000..c75622af99b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4m @@ -0,0 +1,12 @@ +netcdf test_struct1 { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4p new file mode 100644 index 00000000000..d4dd744411e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct1.nc.d4p @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4d new file mode 100644 index 00000000000..c5b3e6fe7a6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4d @@ -0,0 +1,20 @@ +netcdf test_struct_array.6.nc { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/s[0:2:3][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + s = + {1, -1}, {17, 37}, + {-4, 12}, {-8, 8} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4m new file mode 100644 index 00000000000..09940fad008 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_struct_array.6 { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/s[0:2:3][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4p new file mode 100644 index 00000000000..6c695a17298 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.6.nc.d4p @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4d new file mode 100644 index 00000000000..68fded454a5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4d @@ -0,0 +1,22 @@ +netcdf test_struct_array.nc { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + s_t s(dx, dy) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = + {1, -1}, {17, 37}, {-32767, 32767}, + {-1, 3}, {-2, 2}, {-3, 1}, + {-4, 12}, {-8, 8}, {-12, 4}, + {-5, 15}, {-10, 10}, {-15, 5} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4m new file mode 100644 index 00000000000..b0684a3e6a3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + s_t s(dx, dy) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4p new file mode 100644 index 00000000000..3d931328710 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.nc.d4p @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4d new file mode 100644 index 00000000000..73d6092a5d4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4d @@ -0,0 +1,31 @@ +netcdf test_struct_array.syn { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + float z(dx) ; + float t(dy) ; + s_t s(dx, dy) ; + string s:_edu.ucar.maps = "/z", "/t" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + z = 0.7276533, 0.785633, 0.513679, 0.2468447 ; + + t = 0.738422, 0.2148887, 0.4947984 ; + + s = + {712320147, 1268468519}, {696298400, 989876086}, {-1927163883, -900795134}, + {-708236713, 1377500019}, {511843988, 1699265896}, {-540214433, -914532520}, + {-1344032615, -871416961}, {-1928735161, 935744880}, + {-1509955773, -1707460853}, + {1145911788, -415231529}, {-278269626, -1682978013}, + {-1629885665, -909240754} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4m new file mode 100644 index 00000000000..2326dbd8bcc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4m @@ -0,0 +1,18 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + float z(dx) ; + float t(dy) ; + s_t s(dx, dy) ; + string s:_edu.ucar.maps = "/z", "/t" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4p new file mode 100644 index 00000000000..9edc3264d16 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_array.syn.d4p @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4d new file mode 100644 index 00000000000..83bc77b6797 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4d @@ -0,0 +1,23 @@ +netcdf test_struct_nested.nc { +types: + compound x_field1_t { + int x ; + int y ; + }; // x_field1_t + compound x_field2_t { + int x ; + int y ; + }; // x_field2_t + compound x_t { + x_field1_t field1 ; + x_field1_t field2 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1, -2}, {255, 90}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4m new file mode 100644 index 00000000000..78567d8beee --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4m @@ -0,0 +1,20 @@ +netcdf test_struct_nested { +types: + compound x_field1_t { + int x ; + int y ; + }; // x_field1_t + compound x_field2_t { + int x ; + int y ; + }; // x_field2_t + compound x_t { + x_field1_t field1 ; + x_field1_t field2 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4p new file mode 100644 index 00000000000..5f875795bbe --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested.nc.d4p @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4d new file mode 100644 index 00000000000..5a523eeaaf1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4d @@ -0,0 +1,20 @@ +netcdf test_struct_nested3.nc { +types: + compound x_field3_field2_t { + int field1 ; + }; // x_field3_field2_t + compound x_field3_t { + x_field3_field2_t field2 ; + }; // x_field3_t + compound x_t { + x_field3_t field3 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{{17}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4m new file mode 100644 index 00000000000..8b711ab36c7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4m @@ -0,0 +1,17 @@ +netcdf test_struct_nested3 { +types: + compound x_field3_field2_t { + int field1 ; + }; // x_field3_field2_t + compound x_field3_t { + x_field3_field2_t field2 ; + }; // x_field3_t + compound x_t { + x_field3_t field3 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4p new file mode 100644 index 00000000000..a4e797b659c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_nested3.nc.d4p @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4d new file mode 100644 index 00000000000..6d6e924b25a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4d @@ -0,0 +1,15 @@ +netcdf test_struct_type.nc { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4m new file mode 100644 index 00000000000..319a6d77eb0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4m @@ -0,0 +1,12 @@ +netcdf test_struct_type { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4p new file mode 100644 index 00000000000..4fc19ba0289 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_struct_type.nc.d4p @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4d new file mode 100644 index 00000000000..9c648421d2a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4d @@ -0,0 +1,36 @@ +netcdf test_unlim1.nc { +dimensions: + lat = 3 ; + lon = 2 ; + time = UNLIMITED ; // (2 currently) +variables: + float lat(lat) ; + string lat:units = "degrees_north" ; + float lon(lon) ; + string lon:units = "degrees_east" ; + double time(time) ; + string time:units = "seconds since 2009-01-01" ; + float pr(time, lat, lon) ; + string pr:standard_name = "air_pressure_at_sea_level" ; + string pr:units = "hPa" ; + string pr:_edu.ucar.maps = "/time", "/lat", "/lon" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + string :title = "example for workshop" ; +data: + + lat = _, _, _ ; + + lon = _, _ ; + + time = _, _ ; + + pr = + 0, 1, + 2, 3, + 4, 5, + 10, 11, + 12, 13, + 14, 15 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4m new file mode 100644 index 00000000000..75f56fd4d6b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4m @@ -0,0 +1,21 @@ +netcdf test_unlim1 { +dimensions: + lat = 3 ; + lon = 2 ; + time = UNLIMITED ; // (0 currently) +variables: + float lat(lat) ; + string lat:units = "degrees_north" ; + float lon(lon) ; + string lon:units = "degrees_east" ; + double time(time) ; + string time:units = "seconds since 2009-01-01" ; + float pr(time, lat, lon) ; + string pr:standard_name = "air_pressure_at_sea_level" ; + string pr:units = "hPa" ; + string pr:_edu.ucar.maps = "/time", "/lat", "/lon" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + string :title = "example for workshop" ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4p new file mode 100644 index 00000000000..7e66beff66e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_unlim1.nc.d4p @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4d new file mode 100644 index 00000000000..0ca491fa62c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4d @@ -0,0 +1,12 @@ +netcdf test_utf8.nc { +dimensions: + d2 = 2 ; +variables: + string vs(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vs = "Καλημέα", "abc" ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4m new file mode 100644 index 00000000000..74d749d7122 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4m @@ -0,0 +1,9 @@ +netcdf test_utf8 { +dimensions: + d2 = 2 ; +variables: + string vs(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4p new file mode 100644 index 00000000000..1f4cf84def0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_utf8.nc.d4p @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4d new file mode 100644 index 00000000000..cd81284f9f6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4d @@ -0,0 +1,15 @@ +netcdf test_vlen1.nc { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1}, {3}, {5}, {7}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4m new file mode 100644 index 00000000000..bb7df1f1a2b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4m @@ -0,0 +1,12 @@ +netcdf test_vlen1 { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4p new file mode 100644 index 00000000000..163e146fcc5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen1.nc.d4p @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4d new file mode 100644 index 00000000000..d534c511c5e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4d @@ -0,0 +1,21 @@ +netcdf test_vlen2.nc { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +dimensions: + d3 = 3 ; + d2 = 2 ; +variables: + x_t x(d3, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = + {{1}, {3}, {5}, {7}}, {{100}, {200}}, + {{-1}, {-2}}, {{1}, {3}, {5}, {7}}, + {{100}, {200}}, {{-1}, {-2}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4m new file mode 100644 index 00000000000..b1c839379e4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_vlen2 { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +dimensions: + d3 = 3 ; + d2 = 2 ; +variables: + x_t x(d3, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4p new file mode 100644 index 00000000000..c7078e39236 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen2.nc.d4p @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4d new file mode 100644 index 00000000000..8e66d90aad6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4d @@ -0,0 +1,18 @@ +netcdf test_vlen3.nc { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1 ; + }; // v1_t +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4m new file mode 100644 index 00000000000..216b9db5e61 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_vlen3 { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1 ; + }; // v1_t +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4p new file mode 100644 index 00000000000..c4876338d79 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen3.nc.d4p @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4d new file mode 100644 index 00000000000..9745c3307f0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4d @@ -0,0 +1,20 @@ +netcdf test_vlen4.nc { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1(2) ; + }; // v1_t +dimensions: + _Anonymous2 = 2 ; +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{{1}, {3}, {5}, {7}}, {}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4m new file mode 100644 index 00000000000..223ceca09b6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4m @@ -0,0 +1,17 @@ +netcdf test_vlen4 { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1(2) ; + }; // v1_t +dimensions: + _Anonymous2 = 2 ; +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4p new file mode 100644 index 00000000000..ae36a83b88c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen4.nc.d4p @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4d new file mode 100644 index 00000000000..28907b830ab --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4d @@ -0,0 +1,20 @@ +netcdf test_vlen5.nc { +types: + compound v1_v_base_t { + int v ; + }; // v1_v_base_t + v1_v_base_t(*) v1_v_t ; + compound v1_t { + v1_v_t v ; + }; // v1_t +dimensions: + d2 = 2 ; +variables: + v1_t v1(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}}, {{{100}, {200}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4m new file mode 100644 index 00000000000..86bc126a840 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4m @@ -0,0 +1,17 @@ +netcdf test_vlen5 { +types: + compound v1_v_base_t { + int v ; + }; // v1_v_base_t + v1_v_base_t(*) v1_v_t ; + compound v1_t { + v1_v_t v ; + }; // v1_t +dimensions: + d2 = 2 ; +variables: + v1_t v1(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4p new file mode 100644 index 00000000000..b357c78592c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen5.nc.d4p @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4d new file mode 100644 index 00000000000..b6512a5e6fb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4d @@ -0,0 +1,17 @@ +netcdf test_vlen6.nc { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 2 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{1}, {3}, {5}, {7}}, {{17}, {19}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4m new file mode 100644 index 00000000000..30f62cc16e6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4m @@ -0,0 +1,14 @@ +netcdf test_vlen6 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 2 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4p new file mode 100644 index 00000000000..30adfef6916 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen6.nc.d4p @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4d new file mode 100644 index 00000000000..9c90401b954 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4d @@ -0,0 +1,17 @@ +netcdf test_vlen7.nc { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 1 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{17}, {19}, {21}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4m new file mode 100644 index 00000000000..b2c712f0f58 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4m @@ -0,0 +1,14 @@ +netcdf test_vlen7 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 1 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4p new file mode 100644 index 00000000000..edbb4200a77 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen7.nc.d4p @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4d b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4d new file mode 100644 index 00000000000..54320e5e51b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4d @@ -0,0 +1,20 @@ +netcdf test_vlen8.nc { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d1 = 2 ; + d2 = 2 ; +variables: + v1_t v1(d1, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = + {{1}, {3}, {5}, {7}}, {{17}, {19}}, + {{11}, {33}, {55}, {77}}, {{717}, {919}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4m b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4m new file mode 100644 index 00000000000..240b646e6da --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4m @@ -0,0 +1,15 @@ +netcdf test_vlen8 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d1 = 2 ; + d2 = 2 ; +variables: + v1_t v1(d1, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4p b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4p new file mode 100644 index 00000000000..58ae8a6cfd8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baseline/test_vlen8.nc.d4p @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.2.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.2.syn.dmp new file mode 100644 index 00000000000..d9c10568675 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.2.syn.dmp @@ -0,0 +1,13 @@ +netcdf test_anon_dim.2 { +dimensions: + _Anonymous4 = 4 ; +variables: + int vu32(_Anonymous4) ; + +// global attributes: + string :_dap4.ce = "/vu32[0:3]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vu32 = -1169720286, -920699049, -2088732436, 1060190036 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.syn.dmp new file mode 100644 index 00000000000..f4416494074 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_anon_dim.syn.dmp @@ -0,0 +1,13 @@ +netcdf test_anon_dim { +dimensions: + _Anonymous6 = 6 ; +variables: + int vu32(_Anonymous6) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu32 = -1169720286, -920699049, -2088732436, 1060190036, -1123468835, + 922940053 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.5.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.5.nc.dmp new file mode 100644 index 00000000000..2bc97016fd8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.5.nc.dmp @@ -0,0 +1,28 @@ +netcdf test_atomic_array.5 { +types: + opaque(16) opaque16_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + ubyte vu8(_Anonymous1, _Anonymous2) ; + double vd(_Anonymous1) ; + string vs(_Anonymous1, _Anonymous1) ; + opaque16_t vo(_Anonymous1, _Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 3, 5 ; + + vd = 1024.8 ; + + vs = + "Καλημέα" ; + + vo = + 0XABCDEF00000000000000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.8.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.8.nc.dmp new file mode 100644 index 00000000000..cef5bb904ea --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.8.nc.dmp @@ -0,0 +1,13 @@ +netcdf test_atomic_array.8 { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[0:1,3]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + v16 = 1, 2, 4 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.9.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.9.nc.dmp new file mode 100644 index 00000000000..e54e10d4cf4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.9.nc.dmp @@ -0,0 +1,13 @@ +netcdf test_atomic_array.9 { +dimensions: + _Anonymous3 = 3 ; +variables: + short v16(_Anonymous3) ; + +// global attributes: + string :_dap4.ce = "/v16[3,0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + v16 = 4, 1, 2 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.nc.dmp new file mode 100644 index 00000000000..0b8b45096e5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.nc.dmp @@ -0,0 +1,51 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 255, 1, 2, + 3, 4, 5 ; + + v16 = 1, 2, 3, 4 ; + + vu32 = + 5, 4, 3, + 2, 1, 0 ; + + vd = 17.9, 1024.8 ; + + vc = "@&" ; + + vs = + "hello\tworld", "\r\n", + "Καλημέα", "abc" ; + + vo = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000 ; + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.syn.dmp new file mode 100644 index 00000000000..30bc769d98e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_array.syn.dmp @@ -0,0 +1,52 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 186, 201, 131, + 63, 189, 55 ; + + v16 = -341, -21899, -13413, -22144 ; + + vu32 = + 2367803413, 3586730583, 511843988, + 3754752863, 2950934681, 2366232135 ; + + vd = 0.217870081192792, 0.602450791996768 ; + + vc = "CO" ; + + vs = + "{S", "gb8^OE$", + "4a/q%n9;5Y", "{fIl?T\"\\A[" ; + + vo = + 0XA2177AA7287C04FA8BB57BCDF76EC80F, 0X34FA472AA9404DD543143CADED303A75 ; + + primary_cloud = Stratus, Cirrocumulus, Nimbostratus, Cirrostratus, + Stratocumulus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.nc.dmp new file mode 100644 index 00000000000..f37eeb73ac5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.nc.dmp @@ -0,0 +1,60 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = -128 ; + + vu8 = 255 ; + + v16 = -32768 ; + + vu16 = _ ; + + v32 = 2147483647 ; + + vu32 = _ ; + + v64 = 9223372036854775807 ; + + vu64 = 18446744073709551615 ; + + vf = 3.141593 ; + + vd = 3.14159265358979 ; + + vc = "@" ; + + vs = "hello\tworld" ; + + vo = 0X0123456789ABCDEF0000000000000000 ; + + primary_cloud = Stratus ; + + secondary_cloud = _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.syn.dmp new file mode 100644 index 00000000000..fa364006528 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_atomic_types.syn.dmp @@ -0,0 +1,60 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = 58 ; + + vu8 = 201 ; + + v16 = 896 ; + + vu16 = 16177 ; + + v32 = -1123468835 ; + + vu32 = 2125143125 ; + + v64 = 3059391736915381031 ; + + vu64 = 11577488182652895291 ; + + vf = 0.5512972 ; + + vd = 0.790267301128816 ; + + vc = "*" ; + + vs = "O,L?c8A%V" ; + + vo = 0X46F169EF23CBAF9B1FEBD99E4E16CEC9 ; + + primary_cloud = Altocumulus ; + + secondary_cloud = Stratocumulus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum.nc.dmp new file mode 100644 index 00000000000..03d15f8dbad --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum.nc.dmp @@ -0,0 +1,16 @@ +netcdf test_enum { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Stratus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_2.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_2.nc.dmp new file mode 100644 index 00000000000..f1e0e478d9d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_2.nc.dmp @@ -0,0 +1,19 @@ +netcdf test_enum_2 { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: h { + variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + data: + + primary_cloud = Stratus ; + } // group h +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.4.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.4.nc.dmp new file mode 100644 index 00000000000..3143d79d961 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.4.nc.dmp @@ -0,0 +1,19 @@ +netcdf test_enum_array.4 { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + _Anonymous2 = 2 ; +variables: + cloud_class_t primary_cloud(_Anonymous2) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + string :_dap4.ce = "/primary_cloud[1:2:4]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Stratus, Cumulonimbus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.nc.dmp new file mode 100644 index 00000000000..e84c50deed0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_enum_array.nc.dmp @@ -0,0 +1,18 @@ +netcdf test_enum_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d5 = 5 ; +variables: + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fill.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fill.nc.dmp new file mode 100644 index 00000000000..36a19749c4f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fill.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_fill { +variables: + ubyte uv8 ; + short v16 ; + uint uv32 ; + uv32:_FillValue = 17U ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + uv8 = 240 ; + + v16 = 32700 ; + + uv32 = 111000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fillmismatch.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fillmismatch.nc.dmp new file mode 100644 index 00000000000..b9c37984a8d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_fillmismatch.nc.dmp @@ -0,0 +1,10 @@ +netcdf test_fillmismatch { +variables: + ubyte uv8 ; + short v16 ; + uint uv32 ; + uv32:_FillValue = 17U ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_groups1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_groups1.nc.dmp new file mode 100644 index 00000000000..99c7aca8558 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_groups1.nc.dmp @@ -0,0 +1,38 @@ +netcdf test_groups1 { +dimensions: + dim1 = 5 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v2(dim2) ; + data: + + v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969 ; + + v2 = 12, -100, _ ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v3(dim3) ; + data: + + v1 = 2, 3, 5, 7, 11 ; + + v3 = 23, 29, 19, 31, 17, 37, 13 ; + } // group i + } // group g +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_var.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_var.nc.dmp new file mode 100644 index 00000000000..cd2315d8f59 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_var.nc.dmp @@ -0,0 +1,10 @@ +netcdf test_one_var { +variables: + int t ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.1.nc.dmp new file mode 100644 index 00000000000..7cc7a835b4b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.1.nc.dmp @@ -0,0 +1,13 @@ +netcdf test_one_vararray.1 { +dimensions: + _Anonymous1 = 1 ; +variables: + int t(_Anonymous1) ; + +// global attributes: + string :_dap4.ce = "/t[1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + t = 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.3.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.3.nc.dmp new file mode 100644 index 00000000000..00386a326a9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.3.nc.dmp @@ -0,0 +1,13 @@ +netcdf test_one_vararray.3 { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + string :_dap4.ce = "/t[0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17, 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.nc.dmp new file mode 100644 index 00000000000..4417d9a5a68 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_one_vararray.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_one_vararray { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17, 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque.nc.dmp new file mode 100644 index 00000000000..0e969a833a3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_opaque { +types: + opaque(16) opaque16_t ; +variables: + opaque16_t vo1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + +vo1 = 0X0123456789ABCDEF0000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.7.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.7.nc.dmp new file mode 100644 index 00000000000..10145247645 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.7.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_opaque_array.7 { +types: + opaque(16) opaque16_t ; +dimensions: + _Anonymous1 = 1 ; + _Anonymous2 = 2 ; +variables: + opaque16_t vo2(_Anonymous1, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/vo2[1][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + vo2 = + 0XFEDCBA98765432100000000000000000, 0XFEDCBA99999999990000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.nc.dmp new file mode 100644 index 00000000000..86501fbe4da --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_opaque_array.nc.dmp @@ -0,0 +1,16 @@ +netcdf test_opaque_array { +types: + opaque(16) opaque16_t ; +dimensions: + d2 = 2 ; +variables: + opaque16_t vo2(d2, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vo2 = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000, + 0XFEDCBA98765432100000000000000000, 0XFEDCBA99999999990000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_1.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_1.syn.dmp new file mode 100644 index 00000000000..01bdce661a4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_1.syn.dmp @@ -0,0 +1,16 @@ +netcdf test_sequence_1 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_2.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_2.syn.dmp new file mode 100644 index 00000000000..4919d953406 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_sequence_2.syn.dmp @@ -0,0 +1,19 @@ +netcdf test_sequence_2 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}}, + {{-1123468835, -18686}, {2125143125, -21899}, {1268468519, -22144}, {989876086, 3361}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct1.nc.dmp new file mode 100644 index 00000000000..23d3a2ef500 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct1.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_struct1 { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.6.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.6.nc.dmp new file mode 100644 index 00000000000..00c92c06caa --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.6.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_struct_array.6 { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2, _Anonymous2) ; + +// global attributes: + string :_dap4.ce = "/s[0:2:3][0:1]" ; + :_DAP4_Little_Endian = 1UB ; +data: + + s = + {1, -1}, {17, 37}, + {-4, 12}, {-8, 8} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.nc.dmp new file mode 100644 index 00000000000..c1d4a5b12d2 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.nc.dmp @@ -0,0 +1,22 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + s_t s(dx, dy) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = + {1, -1}, {17, 37}, {-32767, 32767}, + {-1, 3}, {-2, 2}, {-3, 1}, + {-4, 12}, {-8, 8}, {-12, 4}, + {-5, 15}, {-10, 10}, {-15, 5} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.syn.dmp new file mode 100644 index 00000000000..8fcf876f7db --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_array.syn.dmp @@ -0,0 +1,31 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + float z(dx) ; + float t(dy) ; + s_t s(dx, dy) ; + string s:_edu.ucar.maps = "/z", "/t" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + z = 0.7276533, 0.785633, 0.513679, 0.2468447 ; + + t = 0.738422, 0.2148887, 0.4947984 ; + + s = + {712320147, 1268468519}, {696298400, 989876086}, {-1927163883, -900795134}, + {-708236713, 1377500019}, {511843988, 1699265896}, {-540214433, -914532520}, + {-1344032615, -871416961}, {-1928735161, 935744880}, + {-1509955773, -1707460853}, + {1145911788, -415231529}, {-278269626, -1682978013}, + {-1629885665, -909240754} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested.nc.dmp new file mode 100644 index 00000000000..fb83ca2f629 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested.nc.dmp @@ -0,0 +1,23 @@ +netcdf test_struct_nested { +types: + compound x_field1_t { + int x ; + int y ; + }; // x_field1_t + compound x_field2_t { + int x ; + int y ; + }; // x_field2_t + compound x_t { + x_field1_t field1 ; + x_field2_t field2 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1, -2}, {255, 90}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested3.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested3.nc.dmp new file mode 100644 index 00000000000..6d457244d1b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_nested3.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_struct_nested3 { +types: + compound x_field3_field2_t { + int field1 ; + }; // x_field3_field2_t + compound x_field3_t { + x_field3_field2_t field2 ; + }; // x_field3_t + compound x_t { + x_field3_t field3 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{{17}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_type.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_type.nc.dmp new file mode 100644 index 00000000000..1675cbdc85d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_struct_type.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_struct_type { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_unlim1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_unlim1.nc.dmp new file mode 100644 index 00000000000..9f28f2014f5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_unlim1.nc.dmp @@ -0,0 +1,36 @@ +netcdf test_unlim1 { +dimensions: + lat = 3 ; + lon = 2 ; + time = UNLIMITED ; // (2 currently) +variables: + float lat(lat) ; + string lat:units = "degrees_north" ; + float lon(lon) ; + string lon:units = "degrees_east" ; + double time(time) ; + string time:units = "seconds since 2009-01-01" ; + float pr(time, lat, lon) ; + string pr:standard_name = "air_pressure_at_sea_level" ; + string pr:units = "hPa" ; + string pr:_edu.ucar.maps = "/time", "/lat", "/lon" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + string :title = "example for workshop" ; +data: + + lat = _, _, _ ; + + lon = _, _ ; + + time = _, _ ; + + pr = + 0, 1, + 2, 3, + 4, 5, + 10, 11, + 12, 13, + 14, 15 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_utf8.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_utf8.nc.dmp new file mode 100644 index 00000000000..385a629bb2d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_utf8.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_utf8 { +dimensions: + d2 = 2 ; +variables: + string vs(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vs = "Καλημέα", "abc" ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen1.nc.dmp new file mode 100644 index 00000000000..c96dcce67bc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen1.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_vlen1 { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1}, {3}, {5}, {7}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen2.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen2.nc.dmp new file mode 100644 index 00000000000..5d79fb5cea3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen2.nc.dmp @@ -0,0 +1,21 @@ +netcdf test_vlen2 { +types: + compound x_base_t { + int x ; + }; // x_base_t + x_base_t(*) x_t ; +dimensions: + d3 = 3 ; + d2 = 2 ; +variables: + x_t x(d3, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = + {{1}, {3}, {5}, {7}}, {{100}, {200}}, + {{-1}, {-2}}, {{1}, {3}, {5}, {7}}, + {{100}, {200}}, {{-1}, {-2}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen3.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen3.nc.dmp new file mode 100644 index 00000000000..44e98e2a726 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen3.nc.dmp @@ -0,0 +1,18 @@ +netcdf test_vlen3 { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1 ; + }; // v1_t +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen4.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen4.nc.dmp new file mode 100644 index 00000000000..0f79b71cb26 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen4.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen4 { +types: + compound v1_f1_base_t { + int f1 ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1(2) ; + }; // v1_t +dimensions: + _Anonymous2 = 2 ; +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{{1}, {3}, {5}, {7}}, {}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen5.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen5.nc.dmp new file mode 100644 index 00000000000..923f7076f61 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen5.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen5 { +types: + compound v1_v_base_t { + int v ; + }; // v1_v_base_t + v1_v_base_t(*) v1_v_t ; + compound v1_t { + v1_v_t v ; + }; // v1_t +dimensions: + d2 = 2 ; +variables: + v1_t v1(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}}, {{{100}, {200}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen6.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen6.nc.dmp new file mode 100644 index 00000000000..4e33886e2d1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen6.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_vlen6 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 2 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{1}, {3}, {5}, {7}}, {{17}, {19}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen7.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen7.nc.dmp new file mode 100644 index 00000000000..85b35545c2b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen7.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_vlen7 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 1 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{17}, {19}, {21}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen8.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen8.nc.dmp new file mode 100644 index 00000000000..9d1f4c188ea --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineraw/test_vlen8.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen8 { +types: + compound v1_base_t { + int v1 ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d1 = 2 ; + d2 = 2 ; +variables: + v1_t v1(d1, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = + {{1}, {3}, {5}, {7}}, {{17}, {19}}, + {{11}, {33}, {55}, {77}}, {{717}, {919}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/nc4_unsigned_types.nc.hyrax b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/nc4_unsigned_types.nc.hyrax new file mode 100644 index 00000000000..5121b97a9eb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/nc4_unsigned_types.nc.hyrax @@ -0,0 +1,53 @@ +netcdf nc4_unsigned_types { +dimensions: + lat = 6 ; + lon = 5 ; + time = 2 ; +variables: + int lat(lat) ; + string lat:units = "degrees_north" ; + int lon(lon) ; + string lon:units = "degrees_east" ; + int time(time) ; + string time:units = "seconds" ; + uint temp(time, lat, lon) ; + string temp:_edu.ucar.maps = "/time", "/lat", "/lon" ; + ushort rh(time, lat, lon) ; + rh:_FillValue = 9999US ; + string rh:_edu.ucar.maps = "/time", "/lat", "/lon" ; +data: + + lat = 0, 10, 20, 30, 40, 50 ; + + lon = -140, -118, -96, -84, -52 ; + + time = 1, 2 ; + + temp = + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7 ; + + rh = + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_anon_dim.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_anon_dim.syn.dmp new file mode 100644 index 00000000000..f4416494074 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_anon_dim.syn.dmp @@ -0,0 +1,13 @@ +netcdf test_anon_dim { +dimensions: + _Anonymous6 = 6 ; +variables: + int vu32(_Anonymous6) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu32 = -1169720286, -920699049, -2088732436, 1060190036, -1123468835, + 922940053 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.nc.dmp new file mode 100644 index 00000000000..0b8b45096e5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.nc.dmp @@ -0,0 +1,51 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 255, 1, 2, + 3, 4, 5 ; + + v16 = 1, 2, 3, 4 ; + + vu32 = + 5, 4, 3, + 2, 1, 0 ; + + vd = 17.9, 1024.8 ; + + vc = "@&" ; + + vs = + "hello\tworld", "\r\n", + "Καλημέα", "abc" ; + + vo = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000 ; + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.syn.dmp new file mode 100644 index 00000000000..f499f430de7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_array.syn.dmp @@ -0,0 +1,54 @@ +netcdf test_atomic_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +dimensions: + d1 = 1 ; + d2 = 2 ; + d3 = 3 ; + d4 = 4 ; + d5 = 5 ; +variables: + ubyte vu8(d2, d3) ; + short v16(d4) ; + uint vu32(d2, d3) ; + double vd(d2) ; + char vc(d2) ; + string vs(d2, d2) ; + opaque16_t vo(d1, d2) ; + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vu8 = + 186, 201, 131, + 63, 189, 55 ; + + v16 = -341, -21899, -13413, -22144 ; + + vu32 = + 2367803413, 3586730583, 511843988, + 3754752863, 2950934681, 2366232135 ; + + vd = 0.217870081192792, 0.602450791996768 ; + + vc = "CO" ; + + vs = + "{S", "gb8^OE$", + "4a/q%n9;5Y", "{fIl?T\"\\A[" ; + + vo = + 0XA2177AA7287C04FA8BB57BCDF76EC80F, 0X34FA472AA9404DD543143CADED303A75 ; + + + primary_cloud = Stratus, Cirrocumulus, Nimbostratus, Cirrostratus, + Stratocumulus ; + +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.nc.dmp new file mode 100644 index 00000000000..f37eeb73ac5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.nc.dmp @@ -0,0 +1,60 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = -128 ; + + vu8 = 255 ; + + v16 = -32768 ; + + vu16 = _ ; + + v32 = 2147483647 ; + + vu32 = _ ; + + v64 = 9223372036854775807 ; + + vu64 = 18446744073709551615 ; + + vf = 3.141593 ; + + vd = 3.14159265358979 ; + + vc = "@" ; + + vs = "hello\tworld" ; + + vo = 0X0123456789ABCDEF0000000000000000 ; + + primary_cloud = Stratus ; + + secondary_cloud = _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.syn.dmp new file mode 100644 index 00000000000..fa364006528 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_atomic_types.syn.dmp @@ -0,0 +1,60 @@ +netcdf test_atomic_types { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + opaque(16) opaque16_t ; +variables: + byte v8 ; + ubyte vu8 ; + short v16 ; + ushort vu16 ; + int v32 ; + uint vu32 ; + int64 v64 ; + uint64 vu64 ; + float vf ; + double vd ; + char vc ; + string vs ; + opaque16_t vo ; + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud ; + cloud_class_t secondary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v8 = 58 ; + + vu8 = 201 ; + + v16 = 896 ; + + vu16 = 16177 ; + + v32 = -1123468835 ; + + vu32 = 2125143125 ; + + v64 = 3059391736915381031 ; + + vu64 = 11577488182652895291 ; + + vf = 0.5512972 ; + + vd = 0.790267301128816 ; + + vc = "*" ; + + vs = "O,L?c8A%V" ; + + vo = 0X46F169EF23CBAF9B1FEBD99E4E16CEC9 ; + + primary_cloud = Altocumulus ; + + secondary_cloud = Stratocumulus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum.nc.dmp new file mode 100644 index 00000000000..03d15f8dbad --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum.nc.dmp @@ -0,0 +1,16 @@ +netcdf test_enum { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Stratus ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_2.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_2.nc.dmp new file mode 100644 index 00000000000..f1e0e478d9d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_2.nc.dmp @@ -0,0 +1,19 @@ +netcdf test_enum_2 { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: h { + variables: + cloud_class_t primary_cloud ; + cloud_class_t primary_cloud:_FillValue = Missing ; + data: + + primary_cloud = Stratus ; + } // group h +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_array.nc.dmp new file mode 100644 index 00000000000..e84c50deed0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_enum_array.nc.dmp @@ -0,0 +1,18 @@ +netcdf test_enum_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d5 = 5 ; +variables: + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_fill.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_fill.nc.dmp new file mode 100644 index 00000000000..36a19749c4f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_fill.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_fill { +variables: + ubyte uv8 ; + short v16 ; + uint uv32 ; + uv32:_FillValue = 17U ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + uv8 = 240 ; + + v16 = 32700 ; + + uv32 = 111000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_groups1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_groups1.nc.dmp new file mode 100644 index 00000000000..99c7aca8558 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_groups1.nc.dmp @@ -0,0 +1,38 @@ +netcdf test_groups1 { +dimensions: + dim1 = 5 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v2(dim2) ; + data: + + v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969 ; + + v2 = 12, -100, _ ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v3(dim3) ; + data: + + v1 = 2, 3, 5, 7, 11 ; + + v3 = 23, 29, 19, 31, 17, 37, 13 ; + } // group i + } // group g +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_misc1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_misc1.nc.dmp new file mode 100644 index 00000000000..58d6d4c885f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_misc1.nc.dmp @@ -0,0 +1,29 @@ +netcdf test_misc1 { +dimensions: + lat = 6 ; + lon = 4 ; + time = UNLIMITED ; // (0 currently) + unlim = UNLIMITED ; // (3 currently) +variables: + float lat(lat) ; + lat:units = "d" ; + float lon(lon) ; + lon:units = "d" ; + double time(time) ; + time:units = "s" ; + float pr(time, lat, lon) ; + pr:standard_name = "a" ; + pr:units = "h" ; + float var(unlim) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + :title = "e" ; +data: + + lat = _, _, _, _, _, _ ; + + lon = _, _, _, _ ; + + var = 0, 1, 3 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_var.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_var.nc.dmp new file mode 100644 index 00000000000..cd2315d8f59 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_var.nc.dmp @@ -0,0 +1,10 @@ +netcdf test_one_var { +variables: + int t ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_vararray.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_vararray.nc.dmp new file mode 100644 index 00000000000..4417d9a5a68 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_one_vararray.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_one_vararray { +dimensions: + d2 = 2 ; +variables: + int t(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + t = 17, 37 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque.nc.dmp new file mode 100644 index 00000000000..c5722b767b5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_opaque { +types: + opaque(16) opaque16_t ; +variables: + opaque16_t vo1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vo1 = 0X0123456789ABCDEF0000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque_array.nc.dmp new file mode 100644 index 00000000000..86501fbe4da --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_opaque_array.nc.dmp @@ -0,0 +1,16 @@ +netcdf test_opaque_array { +types: + opaque(16) opaque16_t ; +dimensions: + d2 = 2 ; +variables: + opaque16_t vo2(d2, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vo2 = + 0X0123456789ABCDEF0000000000000000, 0XABCDEF00000000000000000000000000, + 0XFEDCBA98765432100000000000000000, 0XFEDCBA99999999990000000000000000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_1.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_1.syn.dmp new file mode 100644 index 00000000000..01bdce661a4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_1.syn.dmp @@ -0,0 +1,16 @@ +netcdf test_sequence_1 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_2.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_2.syn.dmp new file mode 100644 index 00000000000..4919d953406 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_sequence_2.syn.dmp @@ -0,0 +1,19 @@ +netcdf test_sequence_2 { +types: + compound s_base_t { + int i1 ; + short sh1 ; + }; // s_base_t + s_base_t(*) s_t ; +dimensions: + _Anonymous2 = 2 ; +variables: + s_t s(_Anonymous2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {{-920699049, 896}}, + {{-1123468835, -18686}, {2125143125, -21899}, {1268468519, -22144}, {989876086, 3361}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct1.nc.dmp new file mode 100644 index 00000000000..23d3a2ef500 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct1.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_struct1 { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.nc.dmp new file mode 100644 index 00000000000..c1d4a5b12d2 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.nc.dmp @@ -0,0 +1,22 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + s_t s(dx, dy) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = + {1, -1}, {17, 37}, {-32767, 32767}, + {-1, 3}, {-2, 2}, {-3, 1}, + {-4, 12}, {-8, 8}, {-12, 4}, + {-5, 15}, {-10, 10}, {-15, 5} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.syn.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.syn.dmp new file mode 100644 index 00000000000..8fcf876f7db --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_array.syn.dmp @@ -0,0 +1,31 @@ +netcdf test_struct_array { +types: + compound s_t { + int x ; + int y ; + }; // s_t +dimensions: + dx = 4 ; + dy = 3 ; +variables: + float z(dx) ; + float t(dy) ; + s_t s(dx, dy) ; + string s:_edu.ucar.maps = "/z", "/t" ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + z = 0.7276533, 0.785633, 0.513679, 0.2468447 ; + + t = 0.738422, 0.2148887, 0.4947984 ; + + s = + {712320147, 1268468519}, {696298400, 989876086}, {-1927163883, -900795134}, + {-708236713, 1377500019}, {511843988, 1699265896}, {-540214433, -914532520}, + {-1344032615, -871416961}, {-1928735161, 935744880}, + {-1509955773, -1707460853}, + {1145911788, -415231529}, {-278269626, -1682978013}, + {-1629885665, -909240754} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.hdf5.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.hdf5.dmp new file mode 100644 index 00000000000..fb83ca2f629 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.hdf5.dmp @@ -0,0 +1,23 @@ +netcdf test_struct_nested { +types: + compound x_field1_t { + int x ; + int y ; + }; // x_field1_t + compound x_field2_t { + int x ; + int y ; + }; // x_field2_t + compound x_t { + x_field1_t field1 ; + x_field2_t field2 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1, -2}, {255, 90}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.nc.dmp new file mode 100644 index 00000000000..fb83ca2f629 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested.nc.dmp @@ -0,0 +1,23 @@ +netcdf test_struct_nested { +types: + compound x_field1_t { + int x ; + int y ; + }; // x_field1_t + compound x_field2_t { + int x ; + int y ; + }; // x_field2_t + compound x_t { + x_field1_t field1 ; + x_field2_t field2 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1, -2}, {255, 90}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.hdf5.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.hdf5.dmp new file mode 100644 index 00000000000..6d457244d1b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.hdf5.dmp @@ -0,0 +1,20 @@ +netcdf test_struct_nested3 { +types: + compound x_field3_field2_t { + int field1 ; + }; // x_field3_field2_t + compound x_field3_t { + x_field3_field2_t field2 ; + }; // x_field3_t + compound x_t { + x_field3_t field3 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{{17}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.nc.dmp new file mode 100644 index 00000000000..6d457244d1b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_nested3.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_struct_nested3 { +types: + compound x_field3_field2_t { + int field1 ; + }; // x_field3_field2_t + compound x_field3_t { + x_field3_field2_t field2 ; + }; // x_field3_t + compound x_t { + x_field3_t field3 ; + }; // x_t +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{{17}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_type.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_type.nc.dmp new file mode 100644 index 00000000000..1675cbdc85d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_struct_type.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_struct_type { +types: + compound s_t { + int x ; + int y ; + }; // s_t +variables: + s_t s ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + s = {1, -2} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_utf8.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_utf8.nc.dmp new file mode 100644 index 00000000000..385a629bb2d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_utf8.nc.dmp @@ -0,0 +1,12 @@ +netcdf test_utf8 { +dimensions: + d2 = 2 ; +variables: + string vs(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + vs = "Καλημέα", "abc" ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen1.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen1.nc.dmp new file mode 100644 index 00000000000..6cf5121aef4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen1.nc.dmp @@ -0,0 +1,15 @@ +netcdf test_vlen1 { +types: + compound x_base_t { + int vlen_t ; + }; // x_base_t + x_base_t(*) x_t ; +variables: + x_t x ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = {{1}, {3}, {5}, {7}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen10.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen10.nc.dmp new file mode 100644 index 00000000000..3d1413e6c7a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen10.nc.dmp @@ -0,0 +1,19 @@ +netcdf test_vlen10 { +types: + compound v_base_v_t_t { + int x ; + float y ; + }; // v_base_v_t_t + compound v_base_t { + v_base_v_t_t v_t ; + }; // v_base_t + v_base_t(*) v_t ; +variables: + v_t v ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v = {{{17, 30.7}}, {{19, 101.1}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen11.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen11.nc.dmp new file mode 100644 index 00000000000..d7a7d9dc66e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen11.nc.dmp @@ -0,0 +1,19 @@ +netcdf test_vlen11 { +types: + compound v_base_v2_t_base_t { + int v1_t ; + }; // v_base_v2_t_base_t + v_base_v2_t_base_t(*) v_base_v2_t_t ; + compound v_base_t { + v_base_v2_t_t v2_t ; + }; // v_base_t + v_base_t(*) v_t ; +variables: + v_t v ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v = {{{{1}, {3}, {5}, {7}}}, {{{100}, {200}}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen2.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen2.nc.dmp new file mode 100644 index 00000000000..4a94e83f058 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen2.nc.dmp @@ -0,0 +1,21 @@ +netcdf test_vlen2 { +types: + compound x_base_t { + int vlen_t ; + }; // x_base_t + x_base_t(*) x_t ; +dimensions: + d3 = 3 ; + d2 = 2 ; +variables: + x_t x(d3, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + x = + {{1}, {3}, {5}, {7}}, {{100}, {200}}, + {{-1}, {-2}}, {{1}, {3}, {5}, {7}}, + {{100}, {200}}, {{-1}, {-2}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.hdf5.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.hdf5.dmp new file mode 100644 index 00000000000..e341da416f8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.hdf5.dmp @@ -0,0 +1,18 @@ +netcdf test_vlen3 { +types: + compound v1_f1_base_t { + int v_t ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1 ; + }; // v1_t +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.nc.dmp new file mode 100644 index 00000000000..e341da416f8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen3.nc.dmp @@ -0,0 +1,18 @@ +netcdf test_vlen3 { +types: + compound v1_f1_base_t { + int v_t ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1 ; + }; // v1_t +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.hdf5.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.hdf5.dmp new file mode 100644 index 00000000000..bccab75fea0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.hdf5.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen4 { +types: + compound v1_f1_base_t { + int v_t ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1(2) ; + }; // v1_t +dimensions: + _Anonymous2 = 2 ; +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{{1}, {3}, {5}, {7}}, {}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.nc.dmp new file mode 100644 index 00000000000..bccab75fea0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen4.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen4 { +types: + compound v1_f1_base_t { + int v_t ; + }; // v1_f1_base_t + v1_f1_base_t(*) v1_f1_t ; + compound v1_t { + v1_f1_t f1(2) ; + }; // v1_t +dimensions: + _Anonymous2 = 2 ; +variables: + v1_t v1 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{{1}, {3}, {5}, {7}}, {}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.hdf5.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.hdf5.dmp new file mode 100644 index 00000000000..2dde2d855c8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.hdf5.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen5 { +types: + compound v1_v_base_t { + int v_t ; + }; // v1_v_base_t + v1_v_base_t(*) v1_v_t ; + compound v1_t { + v1_v_t v ; + }; // v1_t +dimensions: + d2 = 2 ; +variables: + v1_t v1(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}}, {{{100}, {200}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.nc.dmp new file mode 100644 index 00000000000..2dde2d855c8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen5.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen5 { +types: + compound v1_v_base_t { + int v_t ; + }; // v1_v_base_t + v1_v_base_t(*) v1_v_t ; + compound v1_t { + v1_v_t v ; + }; // v1_t +dimensions: + d2 = 2 ; +variables: + v1_t v1(d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{{1}, {3}, {5}, {7}}}, {{{100}, {200}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen6.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen6.nc.dmp new file mode 100644 index 00000000000..ad5a5a88dbc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen6.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_vlen6 { +types: + compound v1_base_t { + int v_t ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 2 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{1}, {3}, {5}, {7}}, {{17}, {19}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen7.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen7.nc.dmp new file mode 100644 index 00000000000..363df8c27fc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen7.nc.dmp @@ -0,0 +1,17 @@ +netcdf test_vlen7 { +types: + compound v1_base_t { + int v_t ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d = 1 ; +variables: + v1_t v1(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = {{17}, {19}, {21}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen8.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen8.nc.dmp new file mode 100644 index 00000000000..976bd445eed --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen8.nc.dmp @@ -0,0 +1,20 @@ +netcdf test_vlen8 { +types: + compound v1_base_t { + int v_t ; + }; // v1_base_t + v1_base_t(*) v1_t ; +dimensions: + d1 = 2 ; + d2 = 2 ; +variables: + v1_t v1(d1, d2) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v1 = + {{1}, {3}, {5}, {7}}, {{17}, {19}}, + {{11}, {33}, {55}, {77}}, {{717}, {919}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen9.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen9.nc.dmp new file mode 100644 index 00000000000..42cd1b5800e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/test_vlen9.nc.dmp @@ -0,0 +1,21 @@ +netcdf test_vlen9 { +types: + compound v_base_v_t_t { + int x ; + float y ; + }; // v_base_v_t_t + compound v_base_t { + v_base_v_t_t v_t ; + }; // v_base_t + v_base_t(*) v_t ; +dimensions: + d = 2 ; +variables: + v_t v(d) ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + v = {{{17, 30.7}}}, {{{19, 101.1}}, {{2, 1}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/tst_fills.nc.dmp b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/tst_fills.nc.dmp new file mode 100644 index 00000000000..2070bc7eef3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/baselineremote/tst_fills.nc.dmp @@ -0,0 +1,17 @@ +netcdf tst_fills { +variables: + ubyte uv8 ; + short v16 ; + int uv32 ; + uv32:_FillValue = 17 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +data: + + uv8 = 240 ; + + v16 = 32700 ; + + uv32 = 111000 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_array.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_array.cdl new file mode 100644 index 00000000000..ea901a8db6f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_array.cdl @@ -0,0 +1,39 @@ +netcdf test_atomic_array { +types: + opaque(8) o_t; + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; +variables: + ubyte vu8(d2,d3); + short v16(d4); + uint vu32(d2,d3); + double vd(d2); + char vc(d2); + string vs(d2,d2); + o_t vo(d1,d2); + cloud_class_t primary_cloud(d5) ; + cloud_class_t primary_cloud:_FillValue = Missing ; + +data: + vu8 = + 255, 1, 2, + 3, 4, 5 ; + v16 = 1, 2, 3, 4 ; + vu32 = + 5, 4, 3, + 2, 1, 0 ; + vd = 17.9, 1024.8 ; + vc = '@', '&' ; + vs = "hello\tworld", "\r\n", "Καλημέα", "abc" ; + vo = + 0X0123456789ABCDEF, 0XABCDEF0000000000 ; + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_types.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_types.cdl new file mode 100644 index 00000000000..d43301a2014 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_atomic_types.cdl @@ -0,0 +1,42 @@ +netcdf test_atomic_types { +types: + opaque(8) o_t; + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + byte v8; + ubyte vu8; + short v16; + ushort vu16; + int v32; + uint vu32; + int64 v64; + uint64 vu64; + float vf; + double vd; + char vc; + string vs; + o_t vo; + cloud_class_t primary_cloud; + cloud_class_t primary_cloud:_FillValue = Missing ; + cloud_class_t secondary_cloud; + cloud_class_t secondary_cloud:_FillValue = Missing ; +data: + v8 = -128; + vu8 = 255; + v16 = -32768; + vu16 = 65535; + v32 = 2147483647; + vu32 = 4294967295; + v64 = 9223372036854775807; + vu64 = 18446744073709551615; + vf = 3.1415926535897932384626433832795; + vd = 3.141592653589793238462643383279502884197169399375105820974944592; + vc = '@'; + vs = "hello\tworld"; + vo = 0x0123456789abcdef; + primary_cloud = Stratus; + secondary_cloud = _; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum.cdl new file mode 100644 index 00000000000..6cd1ceb34b3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum.cdl @@ -0,0 +1,12 @@ +netcdf test_enum { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +variables: + cloud_class_t primary_cloud; + cloud_class_t primary_cloud:_FillValue = Missing ; +data: + primary_cloud = Stratus; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_2.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_2.cdl new file mode 100644 index 00000000000..ef6ab50d1d7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_2.cdl @@ -0,0 +1,15 @@ +// Test cross group enum references +netcdf test_enum_2 { + types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; + group: h { + variables: + /cloud_class_t primary_cloud; + /cloud_class_t primary_cloud:_FillValue = Missing ; + data: + primary_cloud = Stratus; + } +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_array.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_array.cdl new file mode 100644 index 00000000000..d395990b64d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_enum_array.cdl @@ -0,0 +1,14 @@ +netcdf test_enum_array { +types: + byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, + Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, + Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, + Missing = 127} ; +dimensions: + d5 = 5; +variables: + cloud_class_t primary_cloud(d5); + cloud_class_t primary_cloud:_FillValue = Missing ; +data: + primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_fill.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_fill.cdl new file mode 100644 index 00000000000..7d2af998fc3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_fill.cdl @@ -0,0 +1,11 @@ +netcdf test_fill { +variables: + ubyte uv8; + short v16; + uint uv32; + uv32:_FillValue=17; +data: + uv8 = 240; + v16 = 32700; + uv32 = 111000; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_groups1.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_groups1.cdl new file mode 100644 index 00000000000..bde2677083e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_groups1.cdl @@ -0,0 +1,35 @@ +netcdf test_groups1 { +dimensions: + dim1 = 5 ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1); + float v2(dim2); + data: + + v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969; + + v2 = 12, -100, _ ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1); + float v3(dim3); + data: + + v1 = 2, 3, 5, 7, 11 ; + + v3 = 23, 29, 19, 31, 17, 37, 13 ; + } // group i +} // group g +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_var.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_var.cdl new file mode 100644 index 00000000000..f5edd1268f4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_var.cdl @@ -0,0 +1,6 @@ +netcdf test_one_var { +variables: + int t; +data: + t = 17; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_vararray.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_vararray.cdl new file mode 100644 index 00000000000..78d1ef14de9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_one_vararray.cdl @@ -0,0 +1,8 @@ +netcdf test_one_vararray { +dimensions: + d2 = 2; +variables: + int t(d2); +data: + t = 17, 37; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque.cdl new file mode 100644 index 00000000000..5cc4e7abb37 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque.cdl @@ -0,0 +1,8 @@ +netcdf test_opaque { +types: + opaque(8) o_t; +variables: + o_t vo1; +data: + vo1 = 0X0123456789ABCDEF ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque_array.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque_array.cdl new file mode 100644 index 00000000000..bd331199642 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_opaque_array.cdl @@ -0,0 +1,12 @@ +netcdf test_opaque_array { +types: + opaque(8) o_t; +dimensions: + d2 = 2; +variables: + o_t vo2(d2,d2); +data: + vo2 = + 0X0123456789ABCDEF, 0XABCDEF0000000000, + 0XFEDCBA9876543210, 0XFEDCBA9999999999; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct1.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct1.cdl new file mode 100644 index 00000000000..005f897c524 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct1.cdl @@ -0,0 +1,11 @@ +netcdf test_struct_type { + types: + compound c_t { + int x ; + int y ; + }; // c_t +variables: + c_t s; +data: + s = {1,-2}; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_array.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_array.cdl new file mode 100644 index 00000000000..bc5f7230064 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_array.cdl @@ -0,0 +1,18 @@ +netcdf test_struct_array { +types: + compound c_t { + int x ; + int y ; + }; // c_t +dimensions: + dx = 4; + dy = 3; +variables: + c_t s(dx,dy); +data: + s = +/*[0][0..2]*/ {1, -1}, {17, 37}, {-32767, 32767}, +/*[1][0..2]*/ {-1, 3}, {-2, 2}, {-3, 1}, +/*[2][0..2]*/ {-4, 12}, {-8, 8}, {-12, 4}, +/*[3][0..2]*/ {-5, 15}, {-10, 10}, {-15, 5} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested.cdl new file mode 100644 index 00000000000..399d8954ef4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested.cdl @@ -0,0 +1,15 @@ +netcdf test_struct_nested { + types: + compound s1_t { + int x ; + int y ; + }; // s1_t + compound s2_t { + s1_t field1 ; + s1_t field2 ; + }; // s2_t +variables: + s2_t x; +data: + x = {{1,-2}, {255, 90}}; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested3.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested3.cdl new file mode 100644 index 00000000000..e52eba81790 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_nested3.cdl @@ -0,0 +1,16 @@ +netcdf test_struct_nested3 { + types: + compound s1_t { + int field1 ; + }; // s1_t + compound s2_t { + s1_t field2 ; + }; // s2_t + compound s3_t { + s2_t field3 ; + }; // s2_t +variables: + s3_t x; +data: + x = {{{17}}} ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_type.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_type.cdl new file mode 100644 index 00000000000..005f897c524 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_struct_type.cdl @@ -0,0 +1,11 @@ +netcdf test_struct_type { + types: + compound c_t { + int x ; + int y ; + }; // c_t +variables: + c_t s; +data: + s = {1,-2}; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_unlim1.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_unlim1.cdl new file mode 100644 index 00000000000..e3004428376 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_unlim1.cdl @@ -0,0 +1,27 @@ +netcdf test_unlim1 { +dimensions: + lat = 3 ; + lon = 2 ; + time = UNLIMITED ; // (2 currently) +variables: + float lat(lat) ; + lat:units = "degrees_north" ; + float lon(lon) ; + lon:units = "degrees_east" ; + double time(time) ; + time:units = "seconds since 2009-01-01" ; + float pr(time, lat, lon) ; + pr:standard_name = "air_pressure_at_sea_level" ; + pr:units = "hPa" ; + +// global attributes: + :title = "example for workshop" ; +data: + pr = + 0, 1, + 2, 3, + 4, 5, + 10, 11, + 12, 13, + 14, 15 ; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_utf8.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_utf8.cdl new file mode 100644 index 00000000000..14025f5a36f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_utf8.cdl @@ -0,0 +1,8 @@ +netcdf test_utf8 { +dimensions: + d2 = 2; +variables: + string vs(d2); +data: + vs = "Καλημέα" , "abc"; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen1.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen1.cdl new file mode 100644 index 00000000000..3ec2f06543b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen1.cdl @@ -0,0 +1,11 @@ +netcdf test_vlen1 { + +types: + int(*) vlen_t; + +variables: + vlen_t x; + +data: + x = {1, 3, 5, 7}; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen2.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen2.cdl new file mode 100644 index 00000000000..8e3a578c183 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen2.cdl @@ -0,0 +1,15 @@ +netcdf test_vlen2 { + +types: + int(*) vlen_t; + +dimensions: + d3=3; + d2=2; + +variables: + vlen_t x(d3,d2); + +data: + x = {1, 3, 5, 7}, {100,200}, {-1,-2},{1, 3, 5, 7}, {100,200}, {-1,-2}; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen3.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen3.cdl new file mode 100644 index 00000000000..a4365fe4b9f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen3.cdl @@ -0,0 +1,13 @@ +netcdf test_vlen3 { + +types: + int(*) v_t; + compound c_t {v_t f1;}; + +variables: + c_t v1; + +data: + v1 = {{1, 3, 5, 7}} ; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen4.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen4.cdl new file mode 100644 index 00000000000..b6db7ff2e7a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen4.cdl @@ -0,0 +1,13 @@ +netcdf test_vlen4 { + +types: + int(*) v_t; + compound c_t {v_t f1(2);}; + +variables: + c_t v1; + +data: + v1 = {{{1, 3, 5, 7},{100,200}}} ; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen5.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen5.cdl new file mode 100644 index 00000000000..11d8efa54a7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen5.cdl @@ -0,0 +1,16 @@ +netcdf test_vlen5 { + +types: + int(*) v_t; + compound c_t {v_t v;}; + +dimensions: + d2=2; + +variables: + c_t v1(d2); + +data: + v1 = {{1, 3, 5, 7}},{{100,200}} ; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen6.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen6.cdl new file mode 100644 index 00000000000..b116583de5e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen6.cdl @@ -0,0 +1,16 @@ +netcdf test_vlen6 { + +types: + int(*) v_t; + +dimensions: + d=2; + +variables: + v_t v1(d); + +data: + + v1 = {1,3,5,7}, {17,19} ; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen7.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen7.cdl new file mode 100644 index 00000000000..37117507298 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen7.cdl @@ -0,0 +1,16 @@ +netcdf test_vlen7 { + +types: + int(*) v_t; + +dimensions: + d=1; + +variables: + v_t v1(d); + +data: + + v1 = {17,19,21} ; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen8.cdl b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen8.cdl new file mode 100644 index 00000000000..f7522a93dd6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/cdltestfiles/test_vlen8.cdl @@ -0,0 +1,19 @@ +netcdf test_vlen8 { + +types: + int(*) v_t; + +dimensions: + d1=2; + d2=2; + +variables: + v_t v1(d1,d2); + +data: + + v1 = + {1,3,5,7}, {17,19}, + {11,33,55,77}, {717,919}; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/d4test_common.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/d4test_common.sh new file mode 100755 index 00000000000..f9af539433b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/d4test_common.sh @@ -0,0 +1,78 @@ +if test $# = 0 ; then +TEST=1 +else +for arg in "$@"; do + case "${arg}" in + test) TEST=1 ;; + reset) RESET=1 ;; + diff) DIFF=1 ;; + cdl) CDLDIFF=1 ;; + log) ;; + *) echo unknown argument $arg ;; + esac +done +fi + +# Define input paths +WD=`pwd` +cd ${srcdir}/daptestfiles; DAPTESTFILES=`pwd` ; cd ${WD} +cd ${srcdir}/dmrtestfiles; DMRTESTFILES=`pwd` ; cd ${WD} +cd ${srcdir}/cdltestfiles; CDLTESTFILES=`pwd` ; cd ${WD} +cd ${srcdir}/baseline; BASELINE=`pwd` ; cd ${WD} +cd ${srcdir}/baselineraw; BASELINERAW=`pwd` ; cd ${WD} +cd ${srcdir}/baselineremote; BASELINEREM=`pwd` ; cd ${WD} +BASELINEH=${BASELINEREM} + +setresultdir() { +rm -fr ${builddir}/$1 +mkdir -p ${builddir}/$1 +} + +FAILURES= +failure() { + echo "*** Fail: $1" + FAILURES=1 + if test "x$2" != x ; then + exit 1 + fi +} + +PUSHD() { +pushd $1 >>/dev/null +} +POPD() { +popd >>/dev/null +} + +filesexist() { + for x in "$@" ; do + if ! test -e $x ; then + failure "missing file: $x" + fi + done +} + +finish() { +if test "x$FAILURES" = x1 ; then +echo "*** Fail" +exit 1 +else +echo "*** Pass" +exit 0 +fi +} + +# Return the complete set of arguments minus any found in $SUPPRESS +suppress() { + local args="$@" + suppress= + for a in $args; do + for s in $SUPPRESS; do if test "x$a" != "x$s" ; then suppress="$suppress $a"; fi; done + done +} + +VG="valgrind --leak-check=full --error-exitcode=1 --num-callers=100" +if test "x$USEVG" = x ; then VG=; fi + +DUMPFLAGS= + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.2.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.2.syn.dap new file mode 100644 index 00000000000..02521f8b96f Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.2.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.syn.dap new file mode 100644 index 00000000000..90cf83423e4 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_anon_dim.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.5.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.5.nc.dap new file mode 100644 index 00000000000..d9c966949bf Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.5.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.8.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.8.nc.dap new file mode 100644 index 00000000000..9c55a80646c Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.8.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.9.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.9.nc.dap new file mode 100644 index 00000000000..6f172413294 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.9.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.nc.dap new file mode 100644 index 00000000000..ee66dbeb44d Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.syn.dap new file mode 100644 index 00000000000..30138ab7b14 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_array.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.nc.dap new file mode 100644 index 00000000000..154de8165e8 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.syn.dap new file mode 100644 index 00000000000..906759bc746 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_atomic_types.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum.nc.dap new file mode 100644 index 00000000000..ec697568222 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_2.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_2.nc.dap new file mode 100644 index 00000000000..d38f5337ffd Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_2.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.4.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.4.nc.dap new file mode 100644 index 00000000000..e89b3c55fda Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.4.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.nc.dap new file mode 100644 index 00000000000..60a17c75246 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_enum_array.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_fill.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_fill.nc.dap new file mode 100644 index 00000000000..151559c495a Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_fill.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_groups1.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_groups1.nc.dap new file mode 100644 index 00000000000..fc6a4a66d70 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_groups1.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_var.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_var.nc.dap new file mode 100644 index 00000000000..8b29a0bd17c Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_var.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.1.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.1.nc.dap new file mode 100644 index 00000000000..814c0ed7bb7 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.1.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.3.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.3.nc.dap new file mode 100644 index 00000000000..42ed5d73470 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.3.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.nc.dap new file mode 100644 index 00000000000..15ca928b3d1 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_one_vararray.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque.nc.dap new file mode 100644 index 00000000000..0e2a6114476 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.7.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.7.nc.dap new file mode 100644 index 00000000000..eae87b40fe2 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.7.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.nc.dap new file mode 100644 index 00000000000..5276ab4a61e Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_opaque_array.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_1.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_1.syn.dap new file mode 100644 index 00000000000..6b83150005f Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_1.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_2.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_2.syn.dap new file mode 100644 index 00000000000..2b7c5072b75 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_sequence_2.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct1.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct1.nc.dap new file mode 100644 index 00000000000..1060ad4ff28 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct1.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.6.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.6.nc.dap new file mode 100644 index 00000000000..f551cc10207 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.6.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.nc.dap new file mode 100644 index 00000000000..78814dff9cc Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.syn.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.syn.dap new file mode 100644 index 00000000000..06ce49201d7 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_array.syn.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested.nc.dap new file mode 100644 index 00000000000..33eb9ef1434 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested3.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested3.nc.dap new file mode 100644 index 00000000000..ecc6d61c8cc Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_nested3.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_type.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_type.nc.dap new file mode 100644 index 00000000000..2b3ffbf1bb6 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_struct_type.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_unlim1.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_unlim1.nc.dap new file mode 100644 index 00000000000..7026f9e1cb2 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_unlim1.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_utf8.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_utf8.nc.dap new file mode 100644 index 00000000000..b1518cf6b8a Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_utf8.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen1.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen1.nc.dap new file mode 100644 index 00000000000..e8df27ba884 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen1.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen2.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen2.nc.dap new file mode 100644 index 00000000000..c9a158f1709 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen2.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen3.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen3.nc.dap new file mode 100644 index 00000000000..5c49762f1fd Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen3.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen4.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen4.nc.dap new file mode 100644 index 00000000000..62701fd1b14 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen4.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen5.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen5.nc.dap new file mode 100644 index 00000000000..037977c3aad Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen5.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen6.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen6.nc.dap new file mode 100644 index 00000000000..8ef29f7e226 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen6.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen7.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen7.nc.dap new file mode 100644 index 00000000000..39e8922a396 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen7.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen8.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen8.nc.dap new file mode 100644 index 00000000000..f96699f3137 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/daptestfiles/test_vlen8.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.2.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.2.syn.dmr new file mode 100644 index 00000000000..8015db06555 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.2.syn.dmr @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.syn.dmr new file mode 100644 index 00000000000..4256a40ba8d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_anon_dim.syn.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.5.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.5.nc.dmr new file mode 100644 index 00000000000..4f682a1edfc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.5.nc.dmr @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.8.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.8.nc.dmr new file mode 100644 index 00000000000..56fd2811f99 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.8.nc.dmr @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.9.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.9.nc.dmr new file mode 100644 index 00000000000..24a858eec8c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.9.nc.dmr @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.nc.dmr new file mode 100644 index 00000000000..5ede1b99f64 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.nc.dmr @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.syn.dmr new file mode 100644 index 00000000000..a539d8dca03 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_array.syn.dmr @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.nc.dmr new file mode 100644 index 00000000000..e34b9e6b911 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.nc.dmr @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.syn.dmr new file mode 100644 index 00000000000..ac11cb21c4c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_atomic_types.syn.dmr @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum.nc.dmr new file mode 100644 index 00000000000..456ef68a2df --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum.nc.dmr @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_2.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_2.nc.dmr new file mode 100644 index 00000000000..ea663f8731d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_2.nc.dmr @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.4.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.4.nc.dmr new file mode 100644 index 00000000000..aee224f8408 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.4.nc.dmr @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.nc.dmr new file mode 100644 index 00000000000..1899edfcda5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_enum_array.nc.dmr @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_fill.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_fill.nc.dmr new file mode 100644 index 00000000000..fb0392c57ea --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_fill.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_groups1.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_groups1.nc.dmr new file mode 100644 index 00000000000..f3abeff17c7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_groups1.nc.dmr @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_var.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_var.nc.dmr new file mode 100644 index 00000000000..cc90b612cc8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_var.nc.dmr @@ -0,0 +1,12 @@ + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.1.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.1.nc.dmr new file mode 100644 index 00000000000..993f297bf5a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.1.nc.dmr @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.3.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.3.nc.dmr new file mode 100644 index 00000000000..570ee27b9bc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.3.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.nc.dmr new file mode 100644 index 00000000000..e611a15f13c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_one_vararray.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque.nc.dmr new file mode 100644 index 00000000000..a710b3ce6b7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque.nc.dmr @@ -0,0 +1,12 @@ + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.7.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.7.nc.dmr new file mode 100644 index 00000000000..505b49b68f8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.7.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.nc.dmr new file mode 100644 index 00000000000..9bd62805bff --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_opaque_array.nc.dmr @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_1.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_1.syn.dmr new file mode 100644 index 00000000000..afa917c99bc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_1.syn.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_2.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_2.syn.dmr new file mode 100644 index 00000000000..c4811e32ba1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_sequence_2.syn.dmr @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct1.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct1.nc.dmr new file mode 100644 index 00000000000..95b9d84ff2a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct1.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.6.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.6.nc.dmr new file mode 100644 index 00000000000..914753b5b69 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.6.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.nc.dmr new file mode 100644 index 00000000000..44414528d52 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.nc.dmr @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.syn.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.syn.dmr new file mode 100644 index 00000000000..991203ed916 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_array.syn.dmr @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested.nc.dmr new file mode 100644 index 00000000000..d9c7588669b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested.nc.dmr @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested3.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested3.nc.dmr new file mode 100644 index 00000000000..67dea17ee64 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_nested3.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_type.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_type.nc.dmr new file mode 100644 index 00000000000..d926dfcaaaa --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_struct_type.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_unlim1.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_unlim1.nc.dmr new file mode 100644 index 00000000000..dbe37570514 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_unlim1.nc.dmr @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_utf8.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_utf8.nc.dmr new file mode 100644 index 00000000000..48fd7a6cae2 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_utf8.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen1.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen1.nc.dmr new file mode 100644 index 00000000000..bfbda523b1c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen1.nc.dmr @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen2.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen2.nc.dmr new file mode 100644 index 00000000000..4a2f2b4fce5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen2.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen3.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen3.nc.dmr new file mode 100644 index 00000000000..bdad56e9285 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen3.nc.dmr @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen4.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen4.nc.dmr new file mode 100644 index 00000000000..cf617086205 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen4.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen5.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen5.nc.dmr new file mode 100644 index 00000000000..4d398ca158b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen5.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen6.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen6.nc.dmr new file mode 100644 index 00000000000..be7226573fb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen6.nc.dmr @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen7.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen7.nc.dmr new file mode 100644 index 00000000000..09a512dcbf4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen7.nc.dmr @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen8.nc.dmr b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen8.nc.dmr new file mode 100644 index 00000000000..b349bc63c2b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/dmrtestfiles/test_vlen8.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/findtestserver4.c b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/findtestserver4.c new file mode 100644 index 00000000000..339301a6a3b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/findtestserver4.c @@ -0,0 +1,82 @@ +#include "config.h" +#include +#include +#include +#include "nctestserver.h" + +/* Support stringification of -D macros */ +#define XSTRINGIFY(s) #s +#define STRINGIFY(s) XSTRINGIFY(s) + + +/** +usage: findtestserver dap2|dap4 suffix [serverlist] + +Given a partial suffix path, try to find a +server for which a request to server + suffix +returns some kind of result using the +specified protocol. This indicates that the +server is up and running. Return the complete +url for the server plus the path. +If serverlist is present, then is should be a comma +separated list of servers (host+port) to try. +It defaults to REMOTETESTSERVERS. +*/ + +static void +usage() +{ + fprintf(stderr,"usage: findtestserver dap2|dap4 suffix [serverlist]\n"); + exit(1); +} + + +int +main(int argc, char** argv) +{ + char* url = NULL; + const char* servlet = NULL; + const char* proto = NULL; + char* serverlist = NULL; + int isdap4 = 0; /* 1 => dap4 */ + + argc--; argv++; + if(argc < 2) + usage(); + proto = strdup(argv[0]); + servlet = strdup(argv[1]); + if(argc >= 3) + serverlist = strdup(argv[2]); + +#ifdef ENABLE_DAP + if(strcasecmp(proto,"dap2")==0) + isdap4 = 0; + else +#endif +#ifdef ENABLE_DAP4 + if(strcasecmp(proto,"dap4")==0) + isdap4 = 1; + else +#endif + usage(); + + if(serverlist == NULL) { +#ifdef REMOTETESTSERVERS + serverlist = strdup(REMOTETESTSERVERS); +#endif + } + if(serverlist == NULL || strlen(serverlist) == 0) + fprintf(stderr,"Cannot determine a server list"); + + url = nc_findtestserver(servlet,isdap4,serverlist); + if(url == NULL) { + url = ""; + fprintf(stderr,"not found: %s\n",servlet); + } + printf("%s",url); + fflush(stdout); + /* clean up */ + free(serverlist); + free(url); + exit(0); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/test_fillmismatch.nc.dap b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/test_fillmismatch.nc.dap new file mode 100644 index 00000000000..7c858f08a9c Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/misctestfiles/test_fillmismatch.nc.dap differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/CMakeLists.txt new file mode 100644 index 00000000000..2332d8f855b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/CMakeLists.txt @@ -0,0 +1,6 @@ +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_array.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_array.nc new file mode 100644 index 00000000000..076337bd2b3 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_array.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_types.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_types.nc new file mode 100644 index 00000000000..335845c71f3 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_atomic_types.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum.nc new file mode 100644 index 00000000000..d50b5056b58 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_2.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_2.nc new file mode 100644 index 00000000000..4e0e0a3a9dd Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_2.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_array.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_array.nc new file mode 100644 index 00000000000..d139a975806 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_enum_array.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_fill.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_fill.nc new file mode 100644 index 00000000000..f40d8abc407 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_fill.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_groups1.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_groups1.nc new file mode 100644 index 00000000000..41b61000f18 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_groups1.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_var.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_var.nc new file mode 100644 index 00000000000..4e0f4358095 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_var.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_vararray.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_vararray.nc new file mode 100644 index 00000000000..4d46d2e7503 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_one_vararray.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque.nc new file mode 100644 index 00000000000..428125bc499 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque_array.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque_array.nc new file mode 100644 index 00000000000..104e8397395 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_opaque_array.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct1.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct1.nc new file mode 100644 index 00000000000..2a6b4046143 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct1.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_array.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_array.nc new file mode 100644 index 00000000000..5ca7c63bd2b Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_array.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested.nc new file mode 100644 index 00000000000..74e09355c34 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested3.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested3.nc new file mode 100644 index 00000000000..4c41a64a065 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_nested3.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_type.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_type.nc new file mode 100644 index 00000000000..2a6b4046143 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_struct_type.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_unlim1.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_unlim1.nc new file mode 100644 index 00000000000..c9f5d85330d Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_unlim1.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_utf8.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_utf8.nc new file mode 100644 index 00000000000..4f7e8429d0f Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_utf8.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen1.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen1.nc new file mode 100644 index 00000000000..d17c68acd68 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen1.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen2.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen2.nc new file mode 100644 index 00000000000..a434a12dea4 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen2.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen3.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen3.nc new file mode 100644 index 00000000000..2b389890aba Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen3.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen4.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen4.nc new file mode 100644 index 00000000000..c2c09b55303 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen4.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen5.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen5.nc new file mode 100644 index 00000000000..7722663b6da Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen5.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen6.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen6.nc new file mode 100644 index 00000000000..162cef9b669 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen6.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen7.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen7.nc new file mode 100644 index 00000000000..cb362cb1bff Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen7.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen8.nc b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen8.nc new file mode 100644 index 00000000000..6b19ea84039 Binary files /dev/null and b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/nctestfiles/test_vlen8.nc differ diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_common.h b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_common.h new file mode 100644 index 00000000000..da3336d89e7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_common.h @@ -0,0 +1,187 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +/* Define various things common to all the t_dmr*.c testers */ +#undef DEBUG +#undef DUMP + +#include "d4includes.h" + +#ifdef DEBUG +#include "ezxml.h" +#endif + +typedef int TDMR; +#define TDMR_PARSE 1 +#define TDMR_META 2 +#define TDMR_DATA 4 + +static NCbytes* input = NULL; +static NCbytes* output = NULL; +static NCD4meta* metadata = NULL; +static char* infile = NULL; +static char* outfile = NULL; +static int ncid = 0; +static int translatenc4 = 0; + +static int +readfile(const char* filename, NCbytes* content) +{ + FILE* stream; + char part[1024]; + + stream = fopen(filename,"r"); + if(stream == NULL) return errno; + for(;;) { + size_t count = fread(part, 1, sizeof(part), stream); + if(count <= 0) break; + ncbytesappendn(content,part,count); + if(ferror(stream)) {fclose(stream); return NC_EIO;} + if(feof(stream)) break; + } + ncbytesnull(content); + fclose(stream); + return NC_NOERR; +} + +static void +fail(int code) +{ + if(code != NC_NOERR) + fprintf(stderr,"***Fail: %s\n",nc_strerror(code)); + exit((code==NC_NOERR?EXIT_SUCCESS:EXIT_FAILURE)); +} + +static void +setup(int tdmr, int argc, char** argv) +{ + int ret = NC_NOERR; + argc--; argv++; + int expected = 0; + NCD4mode mode = 0; + + switch(tdmr) { + case TDMR_PARSE: + expected = 1; + mode = NCD4_DMR; + break; + case TDMR_META: + expected = 2; + mode = NCD4_DMR; + break; + case TDMR_DATA: + fprintf(stderr,"setup is not used for t_dmrdata\n"); + mode = NCD4_DAP; + exit(1); + } + + if(argc < expected) { + fprintf(stderr, "too few arguments\n"); + exit(1); + } + infile = argv[0]; + outfile = NULL; + input = ncbytesnew(); + output = ncbytesnew(); + if((ret = readfile(infile,input))) fail(ret); + { + const char* trans = getenv("translatenc4"); + if(trans != NULL) + translatenc4 = 1; + } + +#ifdef DUMP + NCD4_dumpbytes(ncbyteslength(input),ncbytescontents(input),0); +#endif + + if((metadata=NCD4_newmeta(ncbyteslength(input),ncbytescontents(input)))==NULL) + fail(NC_ENOMEM); + metadata->mode = mode; + + /* Create a fake NCD4INFO */ + { + NCD4INFO* controller = (NCD4INFO*)calloc(1,sizeof(NCD4INFO)); + if(controller == NULL) + fail(NC_ENOMEM); + metadata->controller = controller; + controller->controls.translation = NCD4_TRANSNC4; + if(translatenc4) + controller->controls.translation = NCD4_TRANSNC4; + NCD4_applyclientparamcontrols(controller); + } + if((ret=NCD4_dechunk(metadata))) /* ok for mode == DMR or mode == DAP */ + fail(ret); +#ifdef DEBUG + { + int swap = (metadata->serial.hostbigendian != metadata->serial.remotebigendian); + void* d = metadata->serial.dap; + size_t sz = metadata->serial.dapsize; + fprintf(stderr,"====================\n"); + fprintf(stderr,"%s\n",metadata->serial.dmr); + fprintf(stderr,"----------\n"); + NCD4_dumpbytes(sz,d,swap); + fprintf(stderr,"====================\n"); + fflush(stderr); + } +#endif + if(expected > 1) { + outfile = argv[1]; + if((ret = nc_create(outfile,NC_CLOBBER|NC_NETCDF4,&ncid))) fail(ret); + } + +#ifdef DEBUG + { + char* tree; + ezxml_t dom = ezxml_parse_str(ncbytescontents(input),ncbyteslength(input)); + if(dom == NULL) exit(1); + tree = ezxml_toxml(dom); + fprintf(stderr,"////////////////////\n"); + fprintf(stderr,"%s\n",tree); + fprintf(stderr,"////////////////////\n"); + } +#endif + { + const char* slevel = getenv("d4loglevel"); + int level; + if(slevel != NULL && sscanf(slevel,"%d",&level) == 1) { + nc_set_log_level(level); + } + } +} + +int +cleanup(int ret) +{ + if(outfile != NULL) { + if(ret != NC_NOERR) + ret = nc_abort(ncid); + else + ret = nc_close(ncid); + } + if(metadata->controller != NULL) + free(metadata->controller); + NCD4_reclaimMeta(metadata); + ncbytesfree(input); + ncbytesfree(output); + if(ret) + fail(ret); + else + exit(EXIT_SUCCESS); + return 0; +} + +#if 0 +static void +printxml(const char* input) +{ + char* tree; + ezxml_t dom = ezxml_parse_str(input,strlen(input)); + if(dom == NULL) exit(1); + tree = ezxml_toxml(dom); + fprintf(stderr,"////////////////////\n"); + fprintf(stderr,"%s\n",tree); + fprintf(stderr,"////////////////////\n"); +} +#endif diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.c b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.c new file mode 100644 index 00000000000..5b4569e953c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.c @@ -0,0 +1,54 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +/** +Test the netcdf-4 data building process. +*/ + +#include +#include +#include "netcdf.h" + +static void +fail(int code) +{ + if(code != NC_NOERR) + fprintf(stderr,"***Fail: %s\n",nc_strerror(code)); + exit((code==NC_NOERR?EXIT_SUCCESS:EXIT_FAILURE)); +} + +int +main(int argc, char** argv) +{ + int ret = NC_NOERR; + char url[4096]; + int ncid; + + /* Skip cmd name */ + argc++; + argv++; + + if(argc < 2) { + fprintf(stderr, "too few arguments: t_dmrdata.c \n"); + fail(NC_NOERR); + } + + /* build the url */ + snprintf(url,sizeof(url),"file://%s#dap4&debug=copy&substratename=%s",argv[0],argv[1]); + +#ifdef DEBUG + fprintf(stderr,"t_dmrbuild %s -> %s\n",url,outfile); +#endif + + /* Use the open/close mechanism */ + if((ret=nc_open(url,NC_NETCDF4,&ncid))) goto done; + if((ret=nc_close(ncid))) goto done; + +done: +#ifdef DEBUG + fprintf(stderr,"code=%d %s\n",ret,nc_strerror(ret)); +#endif + return (ret ? 1 : 0); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.sh new file mode 100755 index 00000000000..78a040d79c9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_data.sh @@ -0,0 +1,93 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +. ${srcdir}/d4test_common.sh + +echo "test_data.sh:" + +cd ${DAPTESTFILES} +F=`ls -1 *.dap | sed -e 's/[.]dap//g' | tr '\r\n' ' '` +cd $WD + +setresultdir results_test_data + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINE}/*.d4d ; fi +for f in $F ; do + echo "testing: ${f}" + if ! ${VG} ${execdir}/test_data ${DAPTESTFILES}/${f} ./results_test_data/${f}.nc ; then + failure "${execdir}/test_data ${DAPTESTFILES}/${f} ./results_test_data/${f}.nc" + fi + ${NCDUMP} ./results_test_data/${f}.nc > ./results_test_data/${f}.d4d + if test "x${TEST}" = x1 ; then + if ! diff -wBb ${BASELINE}/${f}.d4d ./results_test_data/${f}.d4d ; then + failure "diff -wBb ${BASELINE}/${f}.d4d ./results_test_data/${f}.d4d" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp ./results_test_data/${f}.d4d ${BASELINE}/${f}.d4d + fi +done + +# Remove empty lines and trim lines in a cdl file +trim() { + if test $# != 2 ; then + echo "simplify: too few args" + else + rm -f $2 + while read -r iline; do + oline=`echo $iline | sed -e 's/^[\t ]*\([^\t ]*\)[\t ]*$/\\1/'` + if test "x$oline" = x ; then continue ; fi + echo "$oline" >> $2 + done < $1 + fi +} + +# Do cleanup on the baseline file +baseclean() { + if test $# != 2 ; then + echo "simplify: too few args" + else + rm -f $2 + while read -r iline; do + oline=`echo $iline | tr "'" '"'` + echo "$oline" >> $2 + done < $1 + fi +} + +# Do cleanup on the result file +resultclean() { + if test $# != 2 ; then + echo "simplify: too few args" + else + rm -f $2 + while read -r iline; do + oline=`echo $iline | sed -e 's|^\(netcdf.*\)[.]nc\(.*\)$|\\1\\2|'` + echo "$oline" >> $2 + done < $1 + fi +} + +if test "x${CDLDIFF}" = x1 ; then + for f in $F ; do + STEM=`echo $f | cut -d. -f 1` + if ! test -e ${CDLTESTFILES}/${STEM}.cdl ; then + echo "Not found: ${CDLTESTFILES}/${STEM}.cdl" + continue + fi + echo "diff -wBb ${CDLTESTFILES}/${STEM}.cdl ./results_test_data/${f}.d4d" + rm -f ./b1 ./b2 ./r1 ./r2 + trim ${CDLTESTFILES}/${STEM}.cdl ./b1 + trim ./results_test_data/${f}.d4d ./r1 + baseclean b1 b2 + resultclean r1 r2 + if ! diff -wBb ./b2 ./r2 ; then + failure "${f}" + fi + done +fi +rm -rf ./results_test_data + +finish diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_fillmismatch.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_fillmismatch.sh new file mode 100755 index 00000000000..03a02c4ca33 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_fillmismatch.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +set -e +. ${srcdir}/d4test_common.sh + +echo "test_fillmismatch.sh:" + +F="test_fillmismatch.nc" + +URL='[dap4]file://' +URL="${URL}${srcdir}/misctestfiles/$F" + +# First check that without [fillmismatch], we get a failure +rm -f ./tmp_dap4_mismatch +if ${NCDUMP} -h "${URL}" > ./tmp_dap4_mismatch 2>&1 ; then +echo "*** Fail: ${NCDUMP} ${URL} passed" +exit 1 +else +echo "*** XFail: ${NCDUMP} ${URL} failed" +fi + +# Now check that with [fillmismatch], we get sucess +URL="[fillmismatch]${URL}" +rm -f ./tmp_dap4_mismatch +if ${NCDUMP} -h "${URL}" > ./tmp_dap4_mismatch ; then +echo "*** Pass: ${NCDUMP} ${URL} passed" +else +echo "*** Fail: ${NCDUMP} ${URL} failed" +exit 1 +fi + +# Verify result +diff -w ${srcdir}/baselineraw/$F.dmp ./tmp_dap4_mismatch +#cleanup +rm -f ./tmp_dap4_mismatch +exit diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_hyrax.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_hyrax.sh new file mode 100755 index 00000000000..2f43864c725 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_hyrax.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +if test "x$srcdir" = "x"; then srcdir=`dirname $0`; fi +export srcdir; + +. ${srcdir}/../test_common.sh + +FRAG="#checksummode=ignore" + +F="\ +nc4_nc_classic_comp.nc \ +nc4_nc_classic_no_comp.nc \ +nc4_strings.nc \ +nc4_strings_comp.nc \ +nc4_unsigned_types.nc \ +nc4_unsigned_types_comp.nc \ +ref_tst_compounds.nc \ +" + +failure() { + echo "*** Fail: $1" + exit 1 +} + +setresultdir results_test_hyrax + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINEH}/*.dmp ; fi +for f in $F ; do + URL="dap4://test.opendap.org:8080/opendap/nc4_test_files/${f}${FRAG}" + echo "testing: $URL" + if ! ${NCDUMP} "${URL}" > ./results_test_hyrax/${f}.hyrax; then + failure "${URL}" + fi + if test "x${TEST}" = x1 ; then + if ! diff -wBb ${BASELINEREM}/${f}.hyrax ./results_test_hyrax/${f}.hyrax ; then + failure "diff ${f}.hyrax" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp ./results_test_hyrax/${f}.hyrax ${BASELINEH}/${f}.hyrax + fi +done + +rm -rf ./results_test_hyrax + +echo "*** Pass" +exit 0 + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.c b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.c new file mode 100644 index 00000000000..f0bf2273b48 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.c @@ -0,0 +1,29 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +/** +Test the netcdf-4 metadata building process. +*/ + +#include "test_common.h" + +int +main(int argc, char** argv) +{ + int ret = NC_NOERR; + + setup(TDMR_META,argc,argv); + +#ifdef DEBUG + fprintf(stderr,"t_dmrmeta %s -> %s\n",infile,outfile); +#endif + + if((ret = NCD4_parse(metadata))) goto done; + if((ret = NCD4_metabuild(metadata,ncid))) goto done; + +done: + return cleanup(ret); +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.sh new file mode 100755 index 00000000000..197ccdbe84b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_meta.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +. ${srcdir}/d4test_common.sh + +echo "test_meta.sh:" + +set -e + +cd ${DMRTESTFILES} +F=`ls -1 *.dmr | sed -e 's/[.]dmr//g' | tr '\r\n' ' '` +cd $WD + +CDL= +for f in ${F} ; do +STEM=`echo $f | cut -d. -f 1` +if test -e ${CDLTESTFILES}/${STEM}.cdl ; then + CDL="${CDL} ${STEM}" +else + echo "Not found: ${CDLTESTFILES}/${STEM}.cdl; ignored" +fi +done + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINE}/*.d4m ; fi + +setresultdir results_test_meta + +for f in ${F} ; do + echo "checking: $f" + if ! ${VG} ${execdir}/test_meta ${DMRTESTFILES}/${f}.dmr ./results_test_meta/${f} ; then + failure "${execdir}/test_meta ${DMRTESTFILES}/${f}.dmr ./results_test_meta/${f}" + fi + ${NCDUMP} ${DUMPFLAGS} -h ./results_test_meta/${f} > ./results_test_meta/${f}.d4m + if test "x${TEST}" = x1 ; then + if ! diff -wBb ${BASELINE}/${f}.d4m ./results_test_meta/${f}.d4m ; then + failure "diff -wBb ${BASELINE}/${f}.ncdump ./results_test_meta/${f}.d4m" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp ./results_test_meta/${f}.d4m ${BASELINE}/${f}.d4m + fi +done + +if test "x${CDLDIFF}" = x1 ; then + for f in $CDL ; do + echo "diff -wBb ${CDLTESTFILES}/${f}.cdl ./results_test_meta/${f}.d4m" + rm -f ./tmp + cat ${CDLTESTFILES}/${f}.cdl \ + cat >./tmp + echo diff -wBbu ./tmp ./results_test_meta/${f}.d4m + if ! diff -wBbu ./tmp ./results_test_meta/${f}.d4m ; then + failure "${f}" + fi + done +fi +rm -rf ./results_test_meta +finish + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.c b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.c new file mode 100644 index 00000000000..44075ffaa8e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.c @@ -0,0 +1,29 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +/** +This provides a simple dap4 metadata -> xml printer. +Used to test the parser +*/ + +#include "test_common.h" + +int +main(int argc, char** argv) +{ + int ret = NC_NOERR; + + setup(TDMR_PARSE,argc,argv); + + if((ret = NCD4_parse(metadata))) goto done; + ret = NCD4_print(metadata,output); + ncbytesnull(output); + if(ret == NC_NOERR) { + fprintf(stdout,"%s\n",ncbytescontents(output)); + fflush(stdout); + } +done: + return cleanup(ret); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.sh new file mode 100755 index 00000000000..5110aae7fa4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_parse.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +. ${srcdir}/d4test_common.sh + +echo "test_parse.sh:" + +cd ${DMRTESTFILES} +F=`ls -1 *.dmr | sed -e 's/[.]dmr//' |tr '\r\n' ' '` +cd $WD + +setresultdir results_test_parse + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINE}/*.d4p ; fi +for f in $F ; do + echo "testing: $f" + if ! ${VG} ${execdir}/test_parse ${DMRTESTFILES}/${f}.dmr > ./results_test_parse/${f}.d4p ; then + failure "${f}" + fi + if test "x${TEST}" = x1 ; then + if ! diff -wBb ${BASELINE}/${f}.d4p ./results_test_parse/${f}.d4p ; then + failure "${f}" + fi + elif test "x${DIFF}" = x1 ; then + echo "diff -wBb ${DMRTESTFILES}/${f}.dmr ./results_test_parse/${f}.d4p" + rm -f ./tmp + cat ./results_test_parse/${f}.d4p \ + | sed -e '//d' -e '/'/d -e '/'/d -e '/'/d \ + | sed -e '/<\/Dimensions>/d' -e '/<\/Types>'/d -e '/<\/Variables>'/d -e '/<\/Groups>'/d \ + | sed -e '/_edu.ucar.opaque.size/,+2d' \ + | cat > ./tmp + if ! diff -wBb ${DMRTESTFILES}/${f}.dmr ./tmp ; then + failure "${f}" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp ./results_test_parse/${f}.d4p ${BASELINE}/${f}.d4p + fi +done +rm -rf ./results_test_parse + +finish + +exit 0 + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_raw.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_raw.sh new file mode 100755 index 00000000000..ef46a1a6d36 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_raw.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +set -e +. ${srcdir}/d4test_common.sh + +echo "test_raw.sh:" + +# Compute the set of testfiles +cd ${srcdir}/daptestfiles +F=`ls -1d *.dap` +cd - +F=`echo $F | tr '\r\n' ' '` +F=`echo $F | sed -e s/.dap//g` + +# Do cleanup on the baseline file +baseclean() { + if test $# != 2 ; then + echo "simplify: too few args" + else + rm -f $2 + while read -r iline; do + oline=`echo $iline | tr "'" '"'` + echo "$oline" >> $2 + done < $1 + fi +} + +# Do cleanup on the result file +resultclean() { + if test $# != 2 ; then + echo "simplify: too few args" + else + rm -f $2 + while read -r iline; do + oline=`echo $iline | sed -e 's|^\(netcdf.*\)[.]nc\(.*\)$|\\1\\2|'` + echo "$oline" >> $2 + done < $1 + fi +} + +setresultdir results_test_raw + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINERAW}/*.dmp ; fi +for f in $F ; do + echo "testing: $f" + URL="[log][dap4]file://${DAPTESTFILES}/${f}" + if ! ${NCDUMP} "${URL}" > ${builddir}/results_test_raw/${f}.dmp; then + failure "${URL}" + fi + if test "x${TEST}" = x1 ; then + if ! diff -wBb ${BASELINERAW}/${f}.dmp ${builddir}/results_test_raw/${f}.dmp ; then + failure "diff ${f}.dmp" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp ${builddir}/results_test_raw/${f}.dmp ${BASELINERAW}/${f}.dmp + elif test "x${DIFF}" = x1 ; then + echo "hdrtest: ${f}" + baseclean + if ! diff -wBb ${BASELINERAW}/${f}.dmp ${BASELINE}/${f}.ncdump ; then + failure diff -wBb ${BASELINERAW}/${f}.dmp ${BASELINE}/${f}.ncdump + fi + fi +done +rm -rf ${builddir}/results_test_raw + +finish diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_remote.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_remote.sh new file mode 100755 index 00000000000..210032245a7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/test_remote.sh @@ -0,0 +1,92 @@ +#!/bin/sh + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +. ${srcdir}/d4test_common.sh + +set -e + +echo "test_remote.sh:" + +#BIG=1 +#NOCSUM=1 + +F="\ +test_atomic_array.nc \ +test_atomic_types.nc \ +test_enum.nc \ +test_enum_2.nc \ +test_enum_array.nc \ +test_fill.nc \ +test_groups1.nc \ +test_misc1.nc \ +test_one_var.nc \ +test_one_vararray.nc \ +test_opaque.nc \ +test_opaque_array.nc \ +test_struct1.nc \ +test_struct_array.nc \ +test_struct_nested.nc \ +test_struct_nested3.nc \ +test_struct_type.nc \ +test_utf8.nc \ +test_vlen1.nc \ +test_vlen2.nc \ +test_vlen3.nc \ +test_vlen4.nc \ +test_vlen5.nc \ +test_vlen6.nc \ +test_vlen7.nc \ +test_vlen8.nc \ +test_vlen9.nc \ +test_vlen10.nc \ +test_vlen11.nc \ +tst_fills.nc \ +test_struct_nested.hdf5 \ +test_struct_nested3.hdf5 \ +test_vlen3.hdf5 \ +test_vlen4.hdf5 \ +test_vlen5.hdf5 \ +test_anon_dim.syn \ +test_atomic_array.syn \ +test_atomic_types.syn \ +test_sequence_1.syn \ +test_sequence_2.syn \ +test_struct_array.syn \ +" + +setresultdir results_test_remote + +TESTSERVER=`${execdir}/findtestserver4 dap4 d4ts` +if test "x$TESTSERVER" = x ; then +echo "***XFAIL: Cannot find d4ts testserver" +exit 1 +fi + +if test "x${RESET}" = x1 ; then rm -fr ${BASELINER}/*.dmp ; fi +for f in $F ; do + URL="[log][show=fetch][dap4]${TESTSERVER}/testfiles/${f}" + if test "x$BIG" = x1; then + URL="[ucar.littleendian=0]${URL}" + fi + if test "x$NOCSUM" = x1; then + URL="[ucar.checksummode=none]${URL}" + fi + if ! ${NCDUMP} ${DUMPFLAGS} "${URL}" > ${builddir}/results_test_remote/${f}.dmp; then + failure "${URL}" + fi + if test "x${TEST}" = x1 ; then + if ! diff -wBb "${BASELINEREM}/${f}.dmp" "${builddir}/results_test_remote/${f}.dmp" ; then + failure "diff ${f}.dmp" + fi + elif test "x${RESET}" = x1 ; then + echo "${f}:" + cp "${builddir}/results_test_remote/${f}.dmp" "${BASELINEREM}/${f}.dmp" + fi +done + +rm -fr ${builddir}/results_test_remote + +finish + diff --git a/contrib/netcdf/netcdf-c-4.6.2/dap4_test/tst_curlopt.sh b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/tst_curlopt.sh new file mode 100644 index 00000000000..613864aebcc --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/dap4_test/tst_curlopt.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# These tests are intended to be run only manually. +# The idea is to gdb ncdump and check that the CURLOPT flags +# is being processed correctly. +# As a rule, you will need to set the breakpoint in +# NCD4_get_rcproperties + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +# Figure our server; if none, then just stop +SVC=`${execdir}/findtestserver4 dap4 d4ts` +TESTCASE=test_atomic_types.nc + +if test "x$SVC" = "x" ; then +echo "WARNING: Cannot locate test server" +exit +fi + +URL="[log][dap4][show=fetch]${SVC}/testfiles/${TESTCASE}" + +# Create the .daprc file +rm -f ./.daprc +echo '# tst_curlopt.sh' > ./.daprc +echo 'HTTP.READ.BUFFERSIZE=max' >> ./.daprc +echo 'HTTP.KEEPALIVE=60/60' >> ./.daprc +gdb --args ${NCDUMP} "${URL}" + +# cleanup +rm -f ./.daprc + +exit diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/docs/CMakeLists.txt new file mode 100644 index 00000000000..70a8bf7add4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/CMakeLists.txt @@ -0,0 +1,89 @@ +##### +# Build doxygen documentation, if need be. +##### +IF(ENABLE_DOXYGEN) + # The following is redundant but does not hurt anything. + + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.html ${CMAKE_CURRENT_SOURCE_DIR}/images ${CMAKE_CURRENT_SOURCE_DIR}/*.doc ${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${CMAKE_CURRENT_SOURCE_DIR}/*.m4 ${CMAKE_CURRENT_SOURCE_DIR}/*.texi ${CMAKE_SOURCE_DIR}/oc2/auth.html.in) + FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) + + # Set abs_top_srcdir to work with the autotools + # doxyfile template. + SET(abs_top_srcdir ${CMAKE_SOURCE_DIR}) + SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR}) + + # Create general and guide 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 + COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/auth.html ${CMAKE_CURRENT_BINARY_DIR}/html + COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/obsolete/fan_utils.html ${CMAKE_CURRENT_BINARY_DIR}/html + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API Documentation" VERBATIM) + + # Create auth.html with some sed commands. + ADD_CUSTOM_TARGET(oc2-auth + + cat ${CMAKE_SOURCE_DIR}/oc2/auth.html.in | sed -e "//d" | sed -e "s|^||" | sed -e "s|zz|netcdf|g" -e "s|ZZ|netCDF|g" | sed -e "/stylesheet/r${CMAKE_SOURCE_DIR}/oc2/oc.css" -e "/stylesheet/d" > ${CMAKE_CURRENT_SOURCE_DIR}/auth.html + COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/auth.html ${CMAKE_CURRENT_BINARY_DIR}/html + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + VERBATIM + ) + + # If ENABLE_DOXYGEN_LATEX_OUTPUT is true, automatically build + # the PDF files. + IF(ENABLE_DOXYGEN_PDF_OUTPUT) + # Process 'main' netcdf documentation. + FIND_PROGRAM(NC_MAKE NAMES make) + FIND_PROGRAM(NC_PDFLATEX NAMES pdflatex) + IF(NOT NC_MAKE OR NOT NC_PDFLATEX) + MESSAGE(WARNING "Unable to locate 'make' and/or 'pdflatex' program. Unable to build pdf documentation.") + ELSE() + ADD_CUSTOM_TARGET(doc_all_pdf ALL + make + COMMAND mv refman.pdf ../netcdf.pdf + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/latex_main" + COMMENT "Building NetCDF PDF Documentation" VERBATIM + ) + + INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/netcdf.pdf" + "${CMAKE_CURRENT_BINARY_DIR}/netcdf-guide.pdf" + "${CMAKE_CURRENT_BINARY_DIR}/netcdf-tutorial.pdf" + DESTINATION "${CMAKE_INSTALL_DOCDIR}/pdf" + + COMPONENT documentation) + + ENDIF() + + ENDIF() + + + # Copy the image files used by markdown documentation + # manually. + FILE(GLOB IMG_FILES ${CMAKE_CURRENT_BINARY_DIR}/images/*.jpg + ${CMAKE_CURRENT_BINARY_DIR}/images/*.png) + + FILE(COPY ${IMG_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html) + + INSTALL(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" + DESTINATION "${CMAKE_INSTALL_DOCDIR}/html" + COMPONENT documentation) + +ENDIF(ENABLE_DOXYGEN) + +# Should match list in Makefile.am +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} +netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html +mainpage.dox tutorial.dox guide.dox types.dox cdl.dox +architecture.dox internal.dox windows-binaries.md +building-with-cmake.md CMakeLists.txt groups.dox install.md notes.md +install-fortran.md all-error-codes.md credits.md auth.md +obsolete/fan_utils.html bestpractices.md filters.md indexing.md +inmemory.md DAP2.dox attribute_conventions.md FAQ.md +file_format_specifications.md known_problems.md +COPYRIGHT.dox user_defined_formats.md DAP4.md DAP4.dox) + +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/COPYRIGHT.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/COPYRIGHT.dox new file mode 100644 index 00000000000..1062dd52995 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/COPYRIGHT.dox @@ -0,0 +1,37 @@ +/*! \page copyright COPYRIGHT + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +University Corporation for Atmospheric Research/Unidata. + +Portions of this software were developed by the Unidata Program at the +University Corporation for Atmospheric Research. + +Access and use of this software shall impose the following obligations +and understandings on the user. The user is granted the right, without +any fee or cost, to use, copy, modify, alter, enhance and distribute +this software, and any derivative works thereof, and its supporting +documentation for any purpose whatsoever, provided that this entire +notice appears in all copies of the software, derivative works and +supporting documentation. Further, UCAR requests that the user credit +UCAR/Unidata in any publications that result from the use of this +software or in any product that includes this software, although this +is not an obligation. The names UCAR and/or Unidata, however, may not +be used in any advertising or publicity to endorse or promote any +products or commercial entity unless specific written permission is +obtained from UCAR/Unidata. The user also understands that +UCAR/Unidata is not obligated to provide the user with any support, +consulting, training or assistance of any kind with regard to the use, +operation and performance of this software nor to provide the user +with any updates, revisions, new versions or "bug fixes." + +THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. + +*/ \ No newline at end of file diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/DAP2.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP2.dox new file mode 100644 index 00000000000..e8804761618 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP2.dox @@ -0,0 +1,673 @@ +/*! +\page dap2 DAP2 Protocol Support + +\tableofcontents + + + + +# DAP2 (OPeNDAP) Introduction {#dap2_intro} + +Beginning with netCDF version 4.1, optional support is provided for +accessing data through servers supporting the DAP2 protocol. + +DAP2 support is enabled if the _--enable-dap__ option +is used with _./configure_. If DAP2 support is enabled, then +a usable version of _libcurl_ must be specified +using the _LDFLAGS_ environment variable (similar to the way +that the _HDF5_ libraries are referenced). +Refer to the installation manual for details. +By default DAP2 support is enabled if _libcurl_ is found. +DAP2 support can be disabled using the _--disable-dap_. + +DAP2 uses a data model that is different from that supported by +netCDF, either classic or enhanced. Generically, the DAP2 +meta-data is encoded textually in a _DDS_ (Dataset Descriptor +Structure). There is a second textual object, the _DAS_ (Dataset +Attribute Structure), for specifying DAP2 attributes. . For +detailed information about the DAP2 DDS and DAS, refer to the +OPeNDAP web site http://opendap.org. + +# Accessing DAP2 Data {#dap2_accessing_data} + +In order to access an OPeNDAP data source through the netCDF API, the +file name normally used is replaced with a URL with a specific +format. The URL is composed of three parts. +- URL - this is a standard form URL such as + http://remotetest.unidata.ucar.edu/dts/test.01 + +- Constraints - these are suffixed to the URL and take the form + “?\&\”. The meaning of the terms "projection" + and "selection" is somewhat complicated; and the OPeNDAP web site, + http://www.opendap.org, should be consulted. The interaction of DAP2 + constraints with netCDF is complex and at the moment requires an + understanding of how DAP2 is translated to netCDF. + +- Client parameters - these may be specified in either of + two ways. The older, deprecated form prefixes text to the + front of the url and is of the the general form [\] + or [\=value]. Examples include [show=fetch] and + [noprefetch]. The newer, preferred form prefixes the + parameters to the end of the url using the semi-standard '#' + format: e.g. http://....#show=fetch&noprefetch. + +It is possible to see what the translation does to a particular +DAP2 data source by examining the DDS source through a web +browser and then examining the translation using the _ncdump -h_ +command to see the netCDF Classic translation. The ncdump output +will actually be the union of the DDS with the DAS, so to see +the complete translation, it is necessary to view both via the +browser. + +For example, if a web browser is given the following, the first URL +will return the DDS for the specified dataset, and the second URL will +return the DAS for the specified dataset. +```` + http://remotetest.unidata.ucar.edu/dts/test.01.dds + http://remotetest.unidata.ucar.edu/dts/test.01.das +```` + +Then by using the following ncdump command, it is possible to see the +equivalent netCDF Classic translation. +```` + ncdump -h http://remotetest.unidata.ucar.edu/dts/test.01 +```` + +The DDS output from the web server should look like this. +```` +Dataset { + Byte b; + Int32 i32; + UInt32 ui32; + Int16 i16; + UInt16 ui16; + Float32 f32; + Float64 f64; + String s; + Url u; +} SimpleTypes; +```` + +The DAS output from the web server should look like this. +```` +Attributes { + Facility { + String PrincipleInvestigator ``Mark Abbott'', ``Ph.D''; + String DataCenter ``COAS Environmental Computer Facility''; + String DrifterType ``MetOcean WOCE/OCM''; + } + b { + String Description ``A test byte''; + String units ``unknown''; + } + i32 { + String Description ``A 32 bit test server int''; + String units ``unknown''; + } +} +```` + +The output from ncdump should look like this. +```` +netcdf test { +dimensions: + stringdim64 = 64 ; +variables: + byte b ; + b:Description = "A test byte" ; + b:units = "unknown" ; + int i32 ; + i32:Description = "A 32 bit test server int" ; + i32:units = "unknown" ; + int ui32 ; + short i16 ; + short ui16 ; + float f32 ; + double f64 ; + char s(stringdim64) ; + char u(stringdim64) ; +} +```` + +Note that the fields of type String and type URL have suddenly +acquired a dimension. This is because the netCDF model does +not support strings, but DAP2 does support strings. +So, DAP2 strings are translated to arrays +of char, which requires adding an extra dimension. The size of the +dimension is determined in a variety of ways and can be specified. It +defaults to 64 and when read, the underlying string is either padded +or truncated to that length. + +Also note that the "Facility" attributes do not appear in the +translation because they are neither global nor associated with a +variable in the DDS. + +# DAP2 to NetCDF Translation Rules {#dap2_to_netcdf} + +The netCDF library DAP2 support code translate the DAP2 data model +into the netCDF classic (netCDF-3) data model. + +## netCDF-3 Translation Rules {#dap2_nc32_trans_rules} + +The netCDF-3 translation is designed to mimic as closely as +possible the translation provided by the now obsolete libnc-dap2 +system, except that some errors in that older translation have +been fixed. + +For illustrative purposes, the following example will be used. +```` +Dataset { + Int32 f1; + Structure { + Int32 f11; + Structure { + Int32 f1[3]; + Int32 f2; + } FS2[2]; + } S1; + Structure { + Grid { + Array: + Float32 temp[lat=2][lon=2]; + Maps: + Int32 lat[lat=2]; + Int32 lon[lon=2]; + } G1; + } S2; + Grid { + Array: + Float32 G2[lat=2][lon=2]; + Maps: + Int32 lat[2]; + Int32 lon[2]; + } G2; + Int32 lat[lat=2]; + Int32 lon[lon=2]; +} D1; +```` + +## Variable Definition {#dap2_var2_def} + +The set of netCDF variables is derived from the fields with primitive +base types as they occur in Sequences, Grids, and Structures. The +field names are modified to be fully qualified initially. For the +above, the set of variables are as follows. The coordinate variables +within grids are left out in order to mimic the behavior of libnc-dap2. +```` + f1 + S1.f11 + S1.FS2.f1 + S1.FS2.f2 + S2.G1.temp + S2.G2.G2 + lat + lon +```` + +## DAP2 Reserved Keywords {#dap2_reserved_keywords} + +In the OPeNDAP DAP2 protocol, there are a number of reserved keywords. These keywords are case insensitive and if you use one as a netCDF variable name, you may encounter odd behavior such as case changes (depending on the client DDS/DAS parser). The list of reserved keywords as used by the netCDF-C library parser are as follows: + +- alias +- array +- attributes +- byte +- dataset +- error +- float32 +- float64 +- grid +- int16 +- int32 +- maps +- sequence +- string +- structure +- uint16 +- uint32 +- url +- code +- message +- program_type +- program + + +## Variable Dimension Translation {#dap2_var_dim_trans} + +A variable's rank is determined from three sources. +- The variable has the dimensions associated with the field it +represents (e.g. S1.FS2.f1[3] in the above example). +- The variable inherits the dimensions associated with any containing +structure that has a rank greater than zero. These dimensions precede +those of case 1. Thus, we have in our example, f1[2][3], where the +first dimension comes from the containing Structure FS2[2]. +- The variable's set of dimensions are altered if any of its +containers is a DAP2 DDS Sequence. This is discussed more fully below. + +If the type of the netCDF variable is char, then an extra string +dimension is added as the last dimension. + +## Dimension translation {#dap2_dim2_trans} + +For dimensions, the rules are as follows. + +Fields in dimensioned structures inherit the dimension of the +structure; thus the above list would have the following dimensioned +variables. +```` + S1.FS2.f1 -> S1.FS2.f1[2][3] + S1.FS2.f2 -> S1.FS2.f2[2] + S2.G1.temp -> S2.G1.temp[lat=2][lon=2] + S2.G1.lat -> S2.G1.lat[lat=2] + S2.G1.lon -> S2.G1.lon[lon=2] + S2.G2.G2 -> S2.G2.lon[lat=2][lon=2] + S2.G2.lat -> S2.G2.lat[lat=2] + S2.G2.lon -> S2.G2.lon[lon=2] + lat -> lat[lat=2] + lon -> lon[lon=2] +```` + +Collect all of the dimension specifications from the DDS, both named +and anonymous (unnamed) For each unique anonymous dimension with value +NN create a netCDF dimension of the form "XX_\=NN", where XX is the +fully qualified name of the variable and i is the i'th (inherited) +dimension of the array where the anonymous dimension occurs. For our +example, this would create the following dimensions. +```` + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; + S2.G2.lat_0 = 2 ; + S2.G2.lon_0 = 2 ; +```` + +If however, the anonymous dimension is the single dimension of a MAP +vector in a Grid then the dimension is given the same name as the map +vector This leads to the following. +```` + S2.G2.lat_0 -> S2.G2.lat + S2.G2.lon_0 -> S2.G2.lon +```` + +For each unique named dimension "=NN", create a netCDF dimension +of the form "=NN", where name has the qualifications removed. If +this leads to duplicates (i.e. same name and same value), then the +duplicates are ignored. This produces the following. +```` + S2.G2.lat -> lat + S2.G2.lon -> lon +```` + +Note that this produces duplicates that will be ignored later. + +At this point the only dimensions left to process should be named +dimensions with the same name as some dimension from step number 3, +but with a different value. For those dimensions create a dimension of +the form "M=NN" where M is a counter starting at 1. The example +has no instances of this. + +Finally and if needed, define a single UNLIMITED dimension named +"unlimited" with value zero. Unlimited will be used to handle certain +kinds of DAP2 sequences (see below). + +This leads to the following set of dimensions. +```` +dimensions: + unlimited = UNLIMITED; + lat = 2 ; + lon = 2 ; + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; +```` + +## Variable Name Translation {#dap2_var_name_trans} + +The steps for variable name translation are as follows. + +Take the set of variables captured above. Thus for the above DDS, the +following fields would be collected. +```` + f1 + S1.f11 + S1.FS2.f1 + S1.FS2.f2 + S2.G1.temp + S2.G2.G2 + lat + lon +```` + +All grid array variables are renamed to be the same as the containing +grid and the grid prefix is removed. In the above DDS, this results in +the following changes. +```` + G1.temp -> G1 + G2.G2 -> G2 +```` + +It is important to note that this process could produce duplicate +variables (i.e. with the same name); in that case they are all assumed +to have the same content and the duplicates are ignored. If it turns +out that the duplicates have different content, then the translation +will not detect this. YOU HAVE BEEN WARNED. + +The final netCDF-3 schema (minus attributes) is then as follows. +```` +netcdf t { +dimensions: + unlimited = UNLIMITED ; + lat = 2 ; + lon = 2 ; + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; +variables: + int f1 ; + int lat(lat) ; + int lon(lon) ; + int S1.f11 ; + int S1.FS2.f1(S1.FS2.f1_0, S1.FS2.f1_1) ; + int S1.FS2.f2(S1_FS2_f2_0) ; + float S2.G1(lat, lon) ; + float G2(lat, lon) ; +} +```` + +In practice, the unlimited dimension is dropped because it is unused. + +There are differences with the original libnc-dap2 here because +libnc-dap2 technically was incorrect. The original would have said +this, for example. +```` +int S1.FS2.f1(lat, lat) ; +```` + +Note that this is incorrect because it dimensions S1.FS2.f1(2,2) +rather than S1.FS2.f1(2,3). + +## Translating DAP2 DDS Sequences {#dap2_translation} + +Any variable (as determined above) that is contained directly or +indirectly by a Sequence is subject to revision of its rank using the +following rules. + +Let the variable be contained in Sequence Q1, where Q1 is the +innermost containing sequence. If Q1 is itself contained (directly or +indirectly) in a sequence, or Q1 is contained (again directly or +indirectly) in a structure that has rank greater than 0, then the +variable will have an initial UNLIMITED dimension. Further, all +dimensions coming from "above" and including (in the containment +sense) the innermost Sequence, Q1, will be removed and replaced by +that single UNLIMITED dimension. The size associated with that +UNLIMITED is zero, which means that its contents are inaccessible +through the netCDF-3 API. Again, this differs from libnc-dap2, which +leaves out such variables. Again, however, this difference is backward +compatible. + +If the variable is contained in a single Sequence (i.e. not nested) +and all containing structures have rank 0, then the variable will have +an initial dimension whose size is the record count for that +Sequence. The name of the new dimension will be the name of the +Sequence. + +Consider this example. +```` +Dataset { + Structure { + Sequence { + Int32 f1[3]; + Int32 f2; + } SQ1; + } S1[2]; + Sequence { + Structure { + Int32 x1[7]; + } S2[5]; + } Q2; +} D; +```` + +The corresponding netCDF-3 translation is pretty much as follows (the +value for dimension Q2 may differ). +```` +dimensions: + unlimited = UNLIMITED ; // (0 currently) + S1.SQ1.f1_0 = 2 ; + S1.SQ1.f1_1 = 3 ; + S1.SQ1.f2_0 = 2 ; + Q2.S2.x1_0 = 5 ; + Q2.S2.x1_1 = 7 ; + Q2 = 5 ; +variables: + int S1.SQ1.f1(unlimited, S1.SQ1.f1_1) ; + int S1.SQ1.f2(unlimited) ; + int Q2.S2.x1(Q2, Q2.S2.x1_0, Q2.S2.x1_1) ; +```` + +Note that for example S1.SQ1.f1_0 is not actually used because it has +been folded into the unlimited dimension. + +Note that for sequences without a leading unlimited dimension, there +is a performance cost because the translation code has to walk the +data to determine how many records are associated with the +sequence. Since libnc-dap2 did essentially the same thing, it can be +assumed that the cost is not prohibitive. + +# Caching {#dap2_dap2_caching} + +In an effort to provide better performance for some access patterns, +client-side caching of data is available. The default is no caching, +but it may be enabled by prefixing the URL with the parameter "cache". + +Caching operates basically as follows. + +When a URL is first accessed using _nc_open()_, netCDF automatically +does a pre-fetch of selected variables. These include all variables +smaller than a specified (and user definable) size. This allows, for +example, quick access to coordinate variables. This can be suppressed +with the parameter "noprefetch". + +Whenever a request is made using some variant of the _nc_get_var()_ API +procedures, the complete variable is fetched and stored in the cache +as a new cache entry. Subsequence requests for any part of that +variable will access the cache entry to obtain the data. + +The cache may become too full, either because there are too many +entries or because it is taking up too much disk space. In this case +cache entries are purged until the cache size limits are reached. The +cache purge algorithm is LRU (least recently used) so that variables +that are repeatedly referenced will tend to stay in the cache. + +The cache is completely purged when _nc_close()_ is invoked. + +In order to decide if you should enable caching, you will need to have +some understanding of the access patterns of your program. + +The ncdump program always dumps one or more whole variables so it +turns on caching. + +If your program accesses only parts of a number of variables, then +caching should probably not be used since fetching whole variables +will probably slow down your program for no purpose. + +Unfortunately, caching is currently an all or nothing proposition, so +for more complex access patterns, the decision to cache or not may not +have an obvious answer. Probably a good rule of thumb is to avoid +caching initially and later turn it on to see its effect on +performance. + +# Defined Client Parameters {#dap2_dap2_defined_params} + +Currently, a limited set of client parameters is +recognized. Parameters not listed here are ignored, but no error is +signalled. All names are case insensitive. + +Parameter Name Legal Values Semantics +- "log" | "log=" - Turn on logging and send the log output to + the specified file. If no file is specified, then log output is sent + to standard error. +- "show=... das|dds|url" - This causes information to appear as + specific global attributes. The currently recognized tags are "dds" + to display the underlying DDS, "das" similarly, and "url" to display + the url used to retrieve the data. This parameter may be specified + multiple times (e.g. “show=dds&show=url”). +- "show=fetch" - This parameter causes the netCDF code to log a copy + of the complete url for every HTTP get request. If logging is + enabled, then this can be helpful in checking to see the access + behavior of the netCDF code. +- "stringlength=NN" - Specify the default string length to use for + string dimensions. The default is 64. The name "maxstrlen" is an + alias for "stringlength". +- "stringlength_\=NN" - Specify the default string length to use + for a string dimension for the specified variable. The default is + 64. The name "maxstrlen_\" is an alias for "stringlength_\". +- "cache" - This enables caching. +- "nocache" - This disbles caching. +- "cachelimit=NN" - Specify the maximum amount of space allowed for + the cache. +- "cachecount=NN" - Specify the maximum number of entries in the + cache. +- "prefetch" - This enables prefetch of small variables (default). +- "noprefetch" - This disables prefetch of small variables. +- "fillmismatch" - This enables _FillValue/Variable type mismatch. +- "nofillmismatch" - This disables _FillValue/Variable type mismatch (default). + +# Notes on Debugging OPeNDAP Access {#dap2_dap2_debug} + +The OPeNDAP support makes use of the logging facility of the +underlying oc system (see http://www.OPeNDAP.org/oc). +Note that this is currently separate from the +existing netCDF logging facility. Turning on this logging can +sometimes give important information. Logging can be enabled by +using the client parameter "log" or "log=filename", +where the first case will send log output to standard error and the +second will send log output to the specified file. + +Users should also be aware that if one is +accessing data over an NFS mount, one may see some .nfsxxxxx files; +those can be ignored. + +## HTTP Configuration. {#dap2_http2_config} + +Limited support for configuring the http connection is provided via +parameters in the “.dodsrc” configuration file. The relevant .dodsrc file is +located by first looking in the current working directory, and if not +found, then looking in the directory specified by the “$HOME” +environment variable. + +Entries in the .dodsrc file are of the form: +```` + ['['']']= +```` + +That is, it consists of a key name and value pair and optionally +preceded by a url enclosed in square brackets. + +For given KEY and URL strings, the value chosen is as follows: + +If URL is null, then look for the .dodsrc entry that has no url prefix +and whose key is same as the KEY for which we are looking. + +If the URL is not null, then look for all the .dodsrc entries that +have a url, URL1, say, and for which URL1 has the same host and port +as URL. All parts of the url's except host and port are ignored. +For example, if URL = http//x.y/a, then it will match +entries of the form +_[http//x.y/a]KEY=VALUE_ or _[http//x.y/b]KEY=VALUE_. +It will not match an entry of the form _[http//x.y:8080]KEY=VALUE +because the second has a port number (8080) different than the URL. +Finally from the set so constructed, choose the first matching entry. + +Currently, the supported set of keys (with descriptions) are as +follows. + +1. HTTP.VERBOSE + Type: boolean ("1"/"0") + Description: Produce verbose output, especially using SSL. + Related CURL Flags: CURLOPT_VERBOSE +1. HTTP.DEFLATE + Type: boolean ("1"/"0") + Description: Allow use of compression by the server. + Related CURL Flags: CURLOPT_ENCODING +1. HTTP.COOKIEJAR + Type: String representing file path + Description: Specify the name of file into which to store cookies. Defaults to in-memory storage. + Related CURL Flags:CURLOPT_COOKIEJAR +1. HTTP.CREDENTIALS.USER + Type: String representing user name + Description: Specify the user name for Digest and Basic authentication. + Related CURL Flags: +1. HTTP.CREDENTIALS.PASSWORD + Type: String representing password + Type: boolean ("1"/"0") + Description: Specify the password for Digest and Basic authentication. + Related CURL Flags: +1. HTTP.SSL.CERTIFICATE + Type: String representing file path + Description: Path to a file containing a PEM cerficate. + Related CURL Flags: CURLOPT_CERT +1. HTTP.SSL.KEY + Type: String representing file path + Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value. + Related CURL Flags: CURLOPT_SSLKEY +1. HTTP.SSL.KEYPASSWORD + Type: String representing password + Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE + Related CURL Flags: CURLOPT_KEYPASSWORD +1. HTTP.SSL.CAPATH + Type: String representing directory + Description: Path to a directory containing trusted certificates for validating server certificates. + Related CURL Flags: CURLOPT_CAPATH +1. HTTP.SSL.VALIDATE + Type: boolean ("1"/"0") + Description: Cause the client to verify the server's presented certificate. + Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST +1. HTTP.TIMEOUT + Type: String ("dddddd") + Description: Specify the maximum time in seconds that you allow the http transfer operation to take. + Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL +1. HTTP.PROXY_SERVER + Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port]) + Description: Specify the needed information for accessing a proxy. + Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD +1. HTTP.READ.BUFFERSIZE + Type: String ("dddddd") + Description: Specify the the internal buffer size for curl reads. + Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB), + CURL_MAX_READ_SIZE (512kB). + +1. HTTP.KEEPALIVE + Type: String ("on|n/m") + Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval. + Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE, + CURLOPT_TCP_KEEPINTVL. + +The related curl flags line indicates the curl flags modified by this +key. See the libcurl documentation of the _curl_easy_setopt()_ function +for more detail (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html). + +For ESG client side key support, the following entries must be specified: +```` +HTTP.SSL.VALIDATE +HTTP.COOKIEJAR +HTTP.SSL.CERTIFICATE +HTTP.SSL.KEY +HTTP.SSL.CAPATH +```` + +Additionally, for ESG, the _HTTP.SSL.CERTIFICATE_ and _HTTP.SSL.KEY_ +entries should have same value, which is the file path for the +certificate produced by MyProxyLogon. The HTTP.SSL.CAPATH entry should +be the path to the "certificates" directory produced by MyProxyLogon. + +# Point of Contact {#dap2_poc} + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu
+__Initial Version__: 3/26/2009
+__Last Revised__: 9/25/2018 + + + +*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.dox new file mode 100644 index 00000000000..e0a3838094b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.dox @@ -0,0 +1,254 @@ +/*! +\page dap4 DAP4 Protocol Support + + + + + +\tableofcontents + +# DAP4 Introduction {#dap4_introduction} + +Beginning with netCDF version 4.5.0, optional support is provided for +accessing data from servers supporting the DAP4 protocol. + +DAP4 support is enabled if the _--enable-dap_ option +is used with './configure'. If DAP4 support is enabled, then +a usable version of _libcurl_ must be specified +using the _LDFLAGS_ environment variable (similar to the way +that the _HDF5_ libraries are referenced). +Refer to the installation manual for details. +By default DAP4 support is enabled if _libcurl_ is found. +DAP4 support can be disabled using the _--disable-dap_. + +DAP4 uses a data model that is, by design, similar to, +but -- for historical reasons -- not identical with, +the netCDF-Enhanced (aka netcdf-4) model. +Generically, the DAP4 data model is encoded in XML document +called a DMR. +For detailed information about the DAP4 DMR, refer to +the DAP4 specification Volume 1: +http://docs.opendap.org/index.php/DAP4:_Specification_Volume_1 + +# Accessing Data Using the DAP4 Prototocol {#dap4_accessing_data} + +In order to access a DAP4 data source through the netCDF API, the +file name normally used is replaced with a URL with a specific +format. The URL is composed of three parts. +- URL - this is a standard form URL with specific markers to indicate that + it refers to a DAP4 encoded dataset. The markers are of the form + "dap4", "protocol=dap4", or "/thredds/dap4". The following + examples show how they are specified. Note that the "/thredds/dap4" + case will only work when accessing a Thredds-based server. + + [dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01 + + [protocol=dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01 + + http://remotetest.unidata.ucar.edu/d4ts/test.01#dap4 + + http://remotetest.unidata.ucar.edu/d4ts/test.01#protocol=dap4 + + http://thredds.ucar.edu/thredds/dap4/... + + - Constraints - these are suffixed to the URL and take the form + “?dap4.ce=\”. The form of the constraint expression + is somewhat complicated, and the specification should be consulted. + + - Client parameters - these may be specified in either of + two ways. The older, deprecated form prefixes text to the + front of the url and is of the the general form [\] + or [\=value]. Examples include [show=fetch] or [noprefetch]. + The newer, preferred form prefixes the + parameters to the end of the url using the semi-standard '#' + format: e.g. http://....#show=fetch&noprefetch. + +It is possible to see what the translation does to a particular DAP4 +data source in two steps. First, one can examine the DMR +source through a web browser and then second, one can examine +the translation using the "ncdump -h" command to see the +corresponding netCDF-4 representation. + +For example, if a web browser is given the following (fictional) URL, +it will return the DMR for the specified dataset (in XML format). +\code + http://remotetest.unidata.ucar.edu/d4ts/test.01.dmr.xml#dap4 +\endcode + +By using the following ncdump command, it is possible to see the +equivalent netCDF-4 translation. + +\code + ncdump -h '[dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01' +\endcode + +# Defined Client Parameters {#dap4_defined_params} + +Currently, a limited set of client parameters is +recognized. Parameters not listed here are +ignored, but no error is signalled. + +Parameter Name Legal Values Semantics +- "log" | "log=" - Turn on logging and send the log output to + the specified file. If no file is specified, then output is sent to standard + error. +- "show=fetch" - This parameter causes the netCDF code to log a copy + of the complete url for every HTTP get request. If logging is + enabled, then this can be helpful in checking to see the access + behavior of the netCDF code. +- "translate=nc4" - This parameter causes the netCDF code to look + for specially named elements in the DMR XML in order to + achieve a better translation of the DAP4 meta-data to NetCDF enhanced + metadata. +- "opaquesize=" - This parameter causes the netCDF code to + convert DAP4 variable size OPAQUE objects to netcdf-4 fixed size + objects and forces all of them to be of the size specified. +- "fillmismatch" - Unfortunately, a number of servers sometimes + fail to make sure that the type of the "_FillValue" attribute of a variable + is the same as the type of the containing variable. Setting this tag + caused the netcdf translation to attempt to fix this mismatch. If not set, + then an error will occur. + +# Notes on Debugging DAP4 Access {#dap4_debug} + +The DAP4 support has a logging facility. +Turning on this logging can +sometimes give important information. Logging can be enabled by +using the client parameter "log" or "log=filename", +where the first case will send log output to standard error and the +second will send log output to the specified file. + +Users should also be aware that if one is +accessing data over an NFS mount, one may see some .nfsxxxxx files; +those can be ignored. + +## HTTP Configuration. {#dap4_http2_config} + +Limited support for configuring the http connection is provided via +parameters in the “.daprc” configuration file (aka ".dodsrc"). +The relevant .daprc file is +located by first looking in the current working directory, and if not +found, then looking in the directory specified by the “$HOME” +environment variable. + +Entries in the .daprc file are of the form: +```` + ['['']']= +```` + +That is, it consists of a key name and value pair and optionally +preceded by a url enclosed in square brackets. + +For given KEY and URL strings, the value chosen is as follows: + +If URL is null, then look for the .daprc entry that has no url prefix +and whose key is same as the KEY for which we are looking. + +If the URL is not null, then look for all the .daprc entries that +have a url, URL1, say, and for which URL1 has the same host and port +as URL. All parts of the url's except host and port are ignored. +For example, if URL = http//x.y/a, then it will match +entries of the form +_[http//x.y/a]KEY=VALUE_ or _[http//x.y/b]KEY=VALUE_. +It will not match an entry of the form _[http//x.y:8080]KEY=VALUE +because the second has a port number (8080) different than the URL. +Finally from the set so constructed, choose the first matching entry. + +Currently, the supported set of keys (with descriptions) are as +follows. + +-# HTTP.VERBOSE + Type: boolean ("1"/"0") + Description: Produce verbose output, especially using SSL. + Related CURL Flags: CURLOPT_VERBOSE + +-# HTTP.DEFLATE + Type: boolean ("1"/"0") + Description: Allow use of compression by the server. + Related CURL Flags: CURLOPT_ENCODING + +-# HTTP.COOKIEJAR + Type: String representing file path + Description: Specify the name of file into which to store cookies. Defaults to in-memory storage. + Related CURL Flags:CURLOPT_COOKIEJAR + +-# HTTP.CREDENTIALS.USER + Type: String representing user name + Description: Specify the user name for Digest and Basic authentication. + Related CURL Flags: + +-# HTTP.CREDENTIALS.PASSWORD + Type: String representing password + Type: boolean ("1"/"0") + Description: Specify the password for Digest and Basic authentication. + Related CURL Flags: + +-# HTTP.SSL.CERTIFICATE + Type: String representing file path + Description: Path to a file containing a PEM cerficate. + Related CURL Flags: CURLOPT_CERT + +-# HTTP.SSL.KEY + Type: String representing file path + Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value. + Related CURL Flags: CURLOPT_SSLKEY + +-# HTTP.SSL.KEYPASSWORD + Type: String representing password + Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE + Related CURL Flags: CURLOPT_KEYPASSWORD + +-# HTTP.SSL.CAPATH + Type: String representing directory + Description: Path to a directory containing trusted certificates for validating server certificates. + Related CURL Flags: CURLOPT_CAPATH + +-# HTTP.SSL.VALIDATE + Type: boolean ("1"/"0") + Description: Cause the client to verify the server's presented certificate. + Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST + +-# HTTP.TIMEOUT + Type: String ("dddddd") + Description: Specify the maximum time in seconds that you allow the http transfer operation to take. + Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL + +-# HTTP.PROXY_SERVER + Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port]) + Description: Specify the needed information for accessing a proxy. + Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD + +-# HTTP.READ.BUFFERSIZE + Type: String ("dddddd") + Description: Specify the the internal buffer size for curl reads. + Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB), + CURL_MAX_READ_SIZE (512kB). + +-# HTTP.KEEPALIVE + Type: String ("on|n/m") + Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval. + Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE, + CURLOPT_TCP_KEEPINTVL. + +The related curl flags line indicates the curl flags modified by this +key. See the libcurl documentation of the _curl_easy_setopt()_ function +for more detail (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html). + +For servers that require client authentication, as a rule, the following +.daprc entries should be specified. +```` +HTTP.SSL.VALIDATE +HTTP.COOKIEJAR +HTTP.SSL.CERTIFICATE +HTTP.SSL.KEY +HTTP.SSL.CAPATH +```` + +Additionally, the _HTTP.SSL.CERTIFICATE_ and _HTTP.SSL.KEY_ +entries should have same value, which is the file path for a +certificate. The HTTP.SSL.CAPATH entry should +be the path to a directory containing validation "certificates". + +# Point of Contact {#dap4_poc} + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu
+__Initial Version__: 6/5/2017
+__Last Revised__: 11/7/2018 + +*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.md b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.md new file mode 100644 index 00000000000..165c4757ef4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/DAP4.md @@ -0,0 +1,624 @@ +# DAP4 Introduction {#dap4_intro} + +Beginning with netCDF version 4.5.0, optional support is provided for +accessing data through servers supporting the DAP4 protocol. + +DAP4 support is enabled if the _--enable-dap__ option +is used with _./configure_. If DAP4 support is enabled, then +a usable version of _libcurl_ must be specified +using the _LDFLAGS_ environment variable (similar to the way +that the _HDF5_ libraries are referenced). +Refer to the installation manual for details. +By default DAP4 support is enabled if _libcurl_ is found. +DAP4 support can be disabled using the _--disable-dap_. + +DAP4 uses a data model that is by design similar to the netCDF enhanced +(netCDF-4) data model. +Generically, the DAP4 meta-data is encoded textually in a _DMR_ +object. For detailed information about DAP4, refer to the +DAP4 specification +https://docs.opendap.org/index.php/OPULS_Development#DAP4_Specification + +# Accessing DAP4 Data {#dap4_accessing_data} + +In order to access a DAP4 data source through the netCDF API, the +file name normally used is replaced with a URL with a specific +format. The URL is composed of three parts. +- URL - this is a standard form URL such as + http://remotetest.unidata.ucar.edu/d4ts/test.01 + +- Constraints - these are suffixed to the URL in the query part + of the url (“?\”. The structure of the constraint + is somewhat complicated; and DAP4 specification + should be consulted. The interaction of DAP4 + constraints with netCDF is complex and at the moment requires an + understanding of how DAP4 is translated to netCDF. + +- Client parameters - these may be specified in either of + two ways. The older, deprecated form prefixes text to the + front of the url and is of the the general form [\] + or [\=value]. Examples include [show=fetch] and + [noprefetch]. The newer, preferred form prefixes the + parameters to the end of the url using the semi-standard '#' + format: e.g. http://....#show=fetch&noprefetch. + +It is possible to see what the translation does to a particular +DAP4 data source by examining the DMR source through a web +browser and then examining the translation using the _ncdump -h_ +command to see the netCDF Classic translation. + +For example, if a web browser is given the following, this URL +will return the DMR in XML format for the specified dataset. +```` +http://149.165.169.123:8080/d4ts/testfiles/test_one_var.nc.dmr.xml +```` + +Then by using the following ncdump command, it is possible to see the +equivalent netCDF enhanced translation. +```` +ncdump -h http://149.165.169.123:8080/d4ts/testfiles/test_one_var.nc#dap4 +```` +Note the use of the "dap4" fragment added at the end. This tells the netCDF +library to use the DAP4 protocol instead of the default DAP2 protocol. + +The DMR output from the web server should look like this. +```` + + + + + + +```` + +The output from ncdump should look like this. +```` +netcdf test_one_var { +variables: + int t ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; +} +```` + +# DAP4 to NetCDF Translation Rules {#dap4_to_netcdf} + +The netCDF library DAP4 code translates the DAP4 data model +into the netCDF enhanced (netCDF-4) data model. + +## netCDF-4 Translation Rules {#dap4_nc42_trans_rules} + +For illustrative purposes, the following example DMR will be used. +```` + + + + + + + + + + + + + + + + + +```` +This will translate (via ncdump) into this. +```` +netcdf test_groups1 { +dimensions: + dim1 = 5 ; + +// global attributes: + :_DAP4_Little_Endian = 1UB ; + +group: g { + dimensions: + dim2 = 3 ; + + group: h { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v2(dim2) ; + } // group h + + group: i { + dimensions: + dim3 = 7 ; + variables: + int v1(dim1) ; + float v3(dim3) ; + } // group i + } // group g +} +```` + +## Variable Definition {#dap4_var2_def} + +The set of netCDF variables is derived from the fields with primitive +base types as they occur in Sequences, Grids, and Structures. The +field names are modified to be fully qualified initially. For the +above, the set of variables are as follows. The coordinate variables +within grids are left out in order to mimic the behavior of libnc-dap4. +```` + f1 + S1.f11 + S1.FS2.f1 + S1.FS2.f2 + S2.G1.temp + S2.G2.G2 + lat + lon +```` + +## DAP4 Reserved Keywords {#dap4_reserved_keywords} + +In the OPeNDAP DAP4 protocol, there are a number of reserved keywords. These keywords are case insensitive and if you use one as a netCDF variable name, you may encounter odd behavior such as case changes (depending on the client DDS/DAS parser). The list of reserved keywords as used by the netCDF-C library parser are as follows: + +- alias +- array +- attributes +- byte +- dataset +- error +- float32 +- float64 +- grid +- int16 +- int32 +- maps +- sequence +- string +- structure +- uint16 +- uint32 +- url +- code +- message +- program_type +- program + + +## Variable Dimension Translation {#dap4_var_dim_trans} + +A variable's rank is determined from three sources. +- The variable has the dimensions associated with the field it +represents (e.g. S1.FS2.f1[3] in the above example). +- The variable inherits the dimensions associated with any containing +structure that has a rank greater than zero. These dimensions precede +those of case 1. Thus, we have in our example, f1[2][3], where the +first dimension comes from the containing Structure FS2[2]. +- The variable's set of dimensions are altered if any of its +containers is a DAP4 DDS Sequence. This is discussed more fully below. + +If the type of the netCDF variable is char, then an extra string +dimension is added as the last dimension. + +## Dimension translation {#dap4_dim2_trans} + +For dimensions, the rules are as follows. + +Fields in dimensioned structures inherit the dimension of the +structure; thus the above list would have the following dimensioned +variables. +```` + S1.FS2.f1 -> S1.FS2.f1[2][3] + S1.FS2.f2 -> S1.FS2.f2[2] + S2.G1.temp -> S2.G1.temp[lat=2][lon=2] + S2.G1.lat -> S2.G1.lat[lat=2] + S2.G1.lon -> S2.G1.lon[lon=2] + S2.G2.G2 -> S2.G2.lon[lat=2][lon=2] + S2.G2.lat -> S2.G2.lat[lat=2] + S2.G2.lon -> S2.G2.lon[lon=2] + lat -> lat[lat=2] + lon -> lon[lon=2] +```` + +Collect all of the dimension specifications from the DDS, both named +and anonymous (unnamed) For each unique anonymous dimension with value +NN create a netCDF dimension of the form "XX_\=NN", where XX is the +fully qualified name of the variable and i is the i'th (inherited) +dimension of the array where the anonymous dimension occurs. For our +example, this would create the following dimensions. +```` + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; + S2.G2.lat_0 = 2 ; + S2.G2.lon_0 = 2 ; +```` + +If however, the anonymous dimension is the single dimension of a MAP +vector in a Grid then the dimension is given the same name as the map +vector This leads to the following. +```` + S2.G2.lat_0 -> S2.G2.lat + S2.G2.lon_0 -> S2.G2.lon +```` + +For each unique named dimension "=NN", create a netCDF dimension +of the form "=NN", where name has the qualifications removed. If +this leads to duplicates (i.e. same name and same value), then the +duplicates are ignored. This produces the following. +```` + S2.G2.lat -> lat + S2.G2.lon -> lon +```` + +Note that this produces duplicates that will be ignored later. + +At this point the only dimensions left to process should be named +dimensions with the same name as some dimension from step number 3, +but with a different value. For those dimensions create a dimension of +the form "M=NN" where M is a counter starting at 1. The example +has no instances of this. + +Finally and if needed, define a single UNLIMITED dimension named +"unlimited" with value zero. Unlimited will be used to handle certain +kinds of DAP4 sequences (see below). + +This leads to the following set of dimensions. +```` +dimensions: + unlimited = UNLIMITED; + lat = 2 ; + lon = 2 ; + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; +```` + +## Variable Name Translation {#dap4_var_name_trans} + +The steps for variable name translation are as follows. + +Take the set of variables captured above. Thus for the above DDS, the +following fields would be collected. +```` + f1 + S1.f11 + S1.FS2.f1 + S1.FS2.f2 + S2.G1.temp + S2.G2.G2 + lat + lon +```` + +All grid array variables are renamed to be the same as the containing +grid and the grid prefix is removed. In the above DDS, this results in +the following changes. +```` + G1.temp -> G1 + G2.G2 -> G2 +```` + +It is important to note that this process could produce duplicate +variables (i.e. with the same name); in that case they are all assumed +to have the same content and the duplicates are ignored. If it turns +out that the duplicates have different content, then the translation +will not detect this. YOU HAVE BEEN WARNED. + +The final netCDF-3 schema (minus attributes) is then as follows. +```` +netcdf t { +dimensions: + unlimited = UNLIMITED ; + lat = 2 ; + lon = 2 ; + S1.FS2.f1_0 = 2 ; + S1.FS2.f1_1 = 3 ; + S1.FS2.f2_0 = 2 ; +variables: + int f1 ; + int lat(lat) ; + int lon(lon) ; + int S1.f11 ; + int S1.FS2.f1(S1.FS2.f1_0, S1.FS2.f1_1) ; + int S1.FS2.f2(S1_FS2_f2_0) ; + float S2.G1(lat, lon) ; + float G2(lat, lon) ; +} +```` + +In practice, the unlimited dimension is dropped because it is unused. + +There are differences with the original libnc-dap4 here because +libnc-dap4 technically was incorrect. The original would have said +this, for example. +```` +int S1.FS2.f1(lat, lat) ; +```` + +Note that this is incorrect because it dimensions S1.FS2.f1(2,2) +rather than S1.FS2.f1(2,3). + +## Translating DAP4 DDS Sequences {#dap4_translation} + +Any variable (as determined above) that is contained directly or +indirectly by a Sequence is subject to revision of its rank using the +following rules. + +Let the variable be contained in Sequence Q1, where Q1 is the +innermost containing sequence. If Q1 is itself contained (directly or +indirectly) in a sequence, or Q1 is contained (again directly or +indirectly) in a structure that has rank greater than 0, then the +variable will have an initial UNLIMITED dimension. Further, all +dimensions coming from "above" and including (in the containment +sense) the innermost Sequence, Q1, will be removed and replaced by +that single UNLIMITED dimension. The size associated with that +UNLIMITED is zero, which means that its contents are inaccessible +through the netCDF-3 API. Again, this differs from libnc-dap4, which +leaves out such variables. Again, however, this difference is backward +compatible. + +If the variable is contained in a single Sequence (i.e. not nested) +and all containing structures have rank 0, then the variable will have +an initial dimension whose size is the record count for that +Sequence. The name of the new dimension will be the name of the +Sequence. + +Consider this example. +```` +Dataset { + Structure { + Sequence { + Int32 f1[3]; + Int32 f2; + } SQ1; + } S1[2]; + Sequence { + Structure { + Int32 x1[7]; + } S2[5]; + } Q2; +} D; +```` + +The corresponding netCDF-3 translation is pretty much as follows (the +value for dimension Q2 may differ). +```` +dimensions: + unlimited = UNLIMITED ; // (0 currently) + S1.SQ1.f1_0 = 2 ; + S1.SQ1.f1_1 = 3 ; + S1.SQ1.f2_0 = 2 ; + Q2.S2.x1_0 = 5 ; + Q2.S2.x1_1 = 7 ; + Q2 = 5 ; +variables: + int S1.SQ1.f1(unlimited, S1.SQ1.f1_1) ; + int S1.SQ1.f2(unlimited) ; + int Q2.S2.x1(Q2, Q2.S2.x1_0, Q2.S2.x1_1) ; +```` + +Note that for example S1.SQ1.f1_0 is not actually used because it has +been folded into the unlimited dimension. + +Note that for sequences without a leading unlimited dimension, there +is a performance cost because the translation code has to walk the +data to determine how many records are associated with the +sequence. Since libnc-dap4 did essentially the same thing, it can be +assumed that the cost is not prohibitive. + +# Caching {#dap4_dap4_caching} + +In an effort to provide better performance for some access patterns, +client-side caching of data is available. The default is no caching, +but it may be enabled by prefixing the URL with the parameter "cache". + +Caching operates basically as follows. + +When a URL is first accessed using _nc_open()_, netCDF automatically +does a pre-fetch of selected variables. These include all variables +smaller than a specified (and user definable) size. This allows, for +example, quick access to coordinate variables. This can be suppressed +with the parameter "noprefetch". + +Whenever a request is made using some variant of the _nc_get_var()_ API +procedures, the complete variable is fetched and stored in the cache +as a new cache entry. Subsequence requests for any part of that +variable will access the cache entry to obtain the data. + +The cache may become too full, either because there are too many +entries or because it is taking up too much disk space. In this case +cache entries are purged until the cache size limits are reached. The +cache purge algorithm is LRU (least recently used) so that variables +that are repeatedly referenced will tend to stay in the cache. + +The cache is completely purged when _nc_close()_ is invoked. + +In order to decide if you should enable caching, you will need to have +some understanding of the access patterns of your program. + +The ncdump program always dumps one or more whole variables so it +turns on caching. + +If your program accesses only parts of a number of variables, then +caching should probably not be used since fetching whole variables +will probably slow down your program for no purpose. + +Unfortunately, caching is currently an all or nothing proposition, so +for more complex access patterns, the decision to cache or not may not +have an obvious answer. Probably a good rule of thumb is to avoid +caching initially and later turn it on to see its effect on +performance. + +# Defined Client Parameters {#dap4_dap4_defined_params} + +Currently, a limited set of client parameters is +recognized. Parameters not listed here are ignored, but no error is +signalled. All names are case insensitive. + +Parameter Name Legal Values Semantics +- "log" | "log=" - Turn on logging and send the log output to + the specified file. If no file is specified, then log output is sent + to standard error. +- "show=... das|dds|url" - This causes information to appear as + specific global attributes. The currently recognized tags are "dds" + to display the underlying DDS, "das" similarly, and "url" to display + the url used to retrieve the data. This parameter may be specified + multiple times (e.g. “show=dds&show=url”). +- "show=fetch" - This parameter causes the netCDF code to log a copy + of the complete url for every HTTP get request. If logging is + enabled, then this can be helpful in checking to see the access + behavior of the netCDF code. +- "stringlength=NN" - Specify the default string length to use for + string dimensions. The default is 64. The name "maxstrlen" is an + alias for "stringlength". +- "stringlength_\=NN" - Specify the default string length to use + for a string dimension for the specified variable. The default is + 64. The name "maxstrlen_\" is an alias for "stringlength_\". +- "cache" - This enables caching. +- "nocache" - This disbles caching. +- "cachelimit=NN" - Specify the maximum amount of space allowed for + the cache. +- "cachecount=NN" - Specify the maximum number of entries in the + cache. +- "prefetch" - This enables prefetch of small variables (default). +- "noprefetch" - This disables prefetch of small variables. +- "fillmismatch" - This enables _FillValue/Variable type mismatch. +- "nofillmismatch" - This disables _FillValue/Variable type mismatch (default). + +# Notes on Debugging OPeNDAP Access {#dap4_dap4_debug} + +The OPeNDAP support makes use of the logging facility of the +underlying oc system (see http://www.OPeNDAP.org/oc). +Note that this is currently separate from the +existing netCDF logging facility. Turning on this logging can +sometimes give important information. Logging can be enabled by +using the client parameter "log" or "log=filename", +where the first case will send log output to standard error and the +second will send log output to the specified file. + +Users should also be aware that if one is +accessing data over an NFS mount, one may see some .nfsxxxxx files; +those can be ignored. + +## HTTP Configuration. {#dap4_http2_config} + +Limited support for configuring the http connection is provided via +parameters in the “.dodsrc” configuration file. The relevant .dodsrc file is +located by first looking in the current working directory, and if not +found, then looking in the directory specified by the “$HOME” +environment variable. + +Entries in the .dodsrc file are of the form: +```` + ['['']']= +```` + +That is, it consists of a key name and value pair and optionally +preceded by a url enclosed in square brackets. + +For given KEY and URL strings, the value chosen is as follows: + +If URL is null, then look for the .dodsrc entry that has no url prefix +and whose key is same as the KEY for which we are looking. + +If the URL is not null, then look for all the .dodsrc entries that +have a url, URL1, say, and for which URL1 has the same host and port +as URL. All parts of the url's except host and port are ignored. +For example, if URL = http//x.y/a, then it will match +entries of the form +_[http//x.y/a]KEY=VALUE_ or _[http//x.y/b]KEY=VALUE_. +It will not match an entry of the form _[http//x.y:8080]KEY=VALUE +because the second has a port number (8080) different than the URL. +Finally from the set so constructed, choose the first matching entry. + +Currently, the supported set of keys (with descriptions) are as +follows. + +1. HTTP.VERBOSE + Type: boolean ("1"/"0") + Description: Produce verbose output, especially using SSL. + Related CURL Flags: CURLOPT_VERBOSE +1. HTTP.DEFLATE + Type: boolean ("1"/"0") + Description: Allow use of compression by the server. + Related CURL Flags: CURLOPT_ENCODING +1. HTTP.COOKIEJAR + Type: String representing file path + Description: Specify the name of file into which to store cookies. Defaults to in-memory storage. + Related CURL Flags:CURLOPT_COOKIEJAR +1. HTTP.CREDENTIALS.USER + Type: String representing user name + Description: Specify the user name for Digest and Basic authentication. + Related CURL Flags: +1. HTTP.CREDENTIALS.PASSWORD + Type: String representing password + Type: boolean ("1"/"0") + Description: Specify the password for Digest and Basic authentication. + Related CURL Flags: +1. HTTP.SSL.CERTIFICATE + Type: String representing file path + Description: Path to a file containing a PEM cerficate. + Related CURL Flags: CURLOPT_CERT +1. HTTP.SSL.KEY + Type: String representing file path + Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value. + Related CURL Flags: CURLOPT_SSLKEY +1. HTTP.SSL.KEYPASSWORD + Type: String representing password + Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE + Related CURL Flags: CURLOPT_KEYPASSWORD +1. HTTP.SSL.CAPATH + Type: String representing directory + Description: Path to a directory containing trusted certificates for validating server certificates. + Related CURL Flags: CURLOPT_CAPATH +1. HTTP.SSL.VALIDATE + Type: boolean ("1"/"0") + Description: Cause the client to verify the server's presented certificate. + Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST +1. HTTP.TIMEOUT + Type: String ("dddddd") + Description: Specify the maximum time in seconds that you allow the http transfer operation to take. + Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL +1. HTTP.PROXY_SERVER + Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port]) + Description: Specify the needed information for accessing a proxy. + Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD +1. HTTP.READ.BUFFERSIZE + Type: String ("dddddd") + Description: Specify the the internal buffer size for curl reads. + Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB), + CURL_MAX_READ_SIZE (512kB). + +1. HTTP.KEEPALIVE + Type: String ("on|n/m") + Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval. + Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE, + CURLOPT_TCP_KEEPINTVL. + +The related curl flags line indicates the curl flags modified by this +key. See the libcurl documentation of the _curl_easy_setopt()_ function +for more detail (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html). + +For ESG client side key support, the following entries must be specified: +```` +HTTP.SSL.VALIDATE +HTTP.COOKIEJAR +HTTP.SSL.CERTIFICATE +HTTP.SSL.KEY +HTTP.SSL.CAPATH +```` + +Additionally, for ESG, the _HTTP.SSL.CERTIFICATE_ and _HTTP.SSL.KEY_ +entries should have same value, which is the file path for the +certificate produced by MyProxyLogon. The HTTP.SSL.CAPATH entry should +be the path to the "certificates" directory produced by MyProxyLogon. + +# Point of Contact {#dap4_poc} + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu
+__Initial Version__: 6/5/2017
+__Last Revised__: 9/25/2018 diff --git a/contrib/netcdf/4.4.1.1/docs/Doxyfile.in b/contrib/netcdf/netcdf-c-4.6.2/docs/Doxyfile.in similarity index 98% rename from contrib/netcdf/4.4.1.1/docs/Doxyfile.in rename to contrib/netcdf/netcdf-c-4.6.2/docs/Doxyfile.in index 40daf82b45d..6c5e98a9969 100644 --- a/contrib/netcdf/4.4.1.1/docs/Doxyfile.in +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/Doxyfile.in @@ -1,5 +1,3 @@ -# 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. # @@ -606,7 +604,7 @@ GENERATE_DEPRECATEDLIST= YES # sections, marked by \if ... \endif and \cond # ... \endcond blocks. -ENABLED_SECTIONS = +ENABLED_SECTIONS = @ENABLED_DOC_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 @@ -748,23 +746,29 @@ INPUT = \ @abs_top_srcdir@/RELEASE_NOTES.md \ @abs_top_srcdir@/docs/install.md \ @abs_top_srcdir@/docs/install-fortran.md \ - @abs_top_srcdir@/docs/dispatch.dox \ @abs_top_srcdir@/docs/types.dox \ - @abs_top_srcdir@/docs/internal.dox \ @abs_top_srcdir@/docs/windows-binaries.md \ @abs_top_srcdir@/docs/guide.dox \ - @abs_top_srcdir@/docs/OPeNDAP.dox \ @abs_top_srcdir@/docs/attribute_conventions.md \ @abs_top_srcdir@/docs/file_format_specifications.md \ - @abs_top_srcdir@/docs/tutorial.dox \ + @abs_top_srcdir@/docs/DAP2.dox \ + @abs_top_srcdir@/docs/DAP4.dox \ + @abs_top_srcdir@/docs/user_defined_formats.md \ + @abs_top_srcdir@/docs/filters.md \ + @abs_top_srcdir@/docs/inmemory.md \ + @abs_top_srcdir@/docs/auth.md \ @abs_top_srcdir@/docs/notes.md \ - @abs_top_srcdir@/docs/esg.md \ @abs_top_srcdir@/docs/all-error-codes.md \ @abs_top_srcdir@/docs/FAQ.md \ @abs_top_srcdir@/docs/known_problems.md \ @abs_top_srcdir@/docs/COPYRIGHT.dox \ @abs_top_srcdir@/docs/credits.md \ @abs_top_srcdir@/docs/bestpractices.md \ + @abs_top_srcdir@/docs/tutorial.dox \ + @abs_top_srcdir@/docs/internal.dox \ + @abs_top_srcdir@/docs/inmeminternal.dox \ + @abs_top_srcdir@/docs/indexing.dox \ + @abs_top_srcdir@/docs/testserver.dox \ @abs_top_srcdir@/include/netcdf.h \ @abs_top_srcdir@/include/netcdf_mem.h \ @abs_top_srcdir@/include/netcdf_par.h \ @@ -787,7 +791,18 @@ INPUT = \ @abs_top_srcdir@/libdispatch/dparallel.c \ @abs_top_srcdir@/libdispatch/derror.c \ @abs_top_srcdir@/libdispatch/dv2i.c \ - @abs_top_srcdir@/libsrc4/nc4file.c \ + @abs_top_srcdir@/libdispatch/dcopy.c \ + @abs_top_srcdir@/libhdf5/hdf5file.c \ + @abs_top_srcdir@/libsrc4/nc4var.c \ + @abs_top_srcdir@/libhdf5/nc4hdf.c \ + @abs_top_srcdir@/libsrc4/nc4internal.c \ + @abs_top_srcdir@/libsrc4/nc4type.c \ + @abs_top_srcdir@/libsrc4/nc4grp.c \ + @abs_top_srcdir@/libsrc4/ncfunc.c \ + @abs_top_srcdir@/libsrc4/nc4dim.c \ + @abs_top_srcdir@/libsrc4/nc4attr.c \ + @abs_top_srcdir@/libhdf5/nc4info.c \ + @abs_top_srcdir@/libsrc4/nc4dispatch.c \ @abs_top_srcdir@/examples/C/simple_xy_wr.c \ @abs_top_srcdir@/examples/C/simple_xy_rd.c \ @abs_top_srcdir@/examples/C/sfc_pres_temp_wr.c \ @@ -797,7 +812,8 @@ INPUT = \ @abs_top_srcdir@/examples/C/simple_nc4_wr.c \ @abs_top_srcdir@/examples/C/simple_nc4_rd.c \ @abs_top_srcdir@/examples/C/simple_xy_nc4_wr.c \ - @abs_top_srcdir@/examples/C/simple_xy_nc4_rd.c + @abs_top_srcdir@/examples/C/simple_xy_nc4_rd.c \ + @abs_top_srcdir@/examples/C/filter_example.c # This tag can be used to specify the character encoding of the source files @@ -1035,7 +1051,7 @@ USE_HTAGS = NO 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 +# clang parser (see: http://clang.llvm.org/) for more accurate 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. @@ -1149,7 +1165,7 @@ HTML_STYLESHEET = # 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. +# standard style sheet and is therefore 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. diff --git a/contrib/netcdf/4.4.1.1/docs/DoxygenLayout.xml b/contrib/netcdf/netcdf-c-4.6.2/docs/DoxygenLayout.xml similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/DoxygenLayout.xml rename to contrib/netcdf/netcdf-c-4.6.2/docs/DoxygenLayout.xml diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/FAQ.md b/contrib/netcdf/netcdf-c-4.6.2/docs/FAQ.md new file mode 100644 index 00000000000..80db23806a9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/FAQ.md @@ -0,0 +1,1994 @@ +FAQ {#faq} +======================= + +[TOC] + +General {#ncFAQGeneral} +======= + +What Is netCDF? {#What-Is-netCDF} +----------------- + + +NetCDF (network Common Data Form) is a set of interfaces for +array-oriented data access and a [freely](http://www.unidata.ucar.edu/software/netcdf/docs/copyright.html) distributed +collection of data access libraries for C, Fortran, C++, Java, and other +languages. The netCDF libraries support a machine-independent format for +representing scientific data. Together, the interfaces, libraries, and +format support the creation, access, and sharing of scientific data. + +NetCDF data is: + +- *Self-Describing*. A netCDF file includes information about the data + it contains. +- *Portable*. A netCDF file can be accessed by computers with + different ways of storing integers, characters, and floating-point + numbers. +- *Scalable*. A small subset of a large dataset may be accessed + efficiently. +- *Appendable*. Data may be appended to a properly structured netCDF + file without copying the dataset or redefining its structure. +- *Sharable*. One writer and multiple readers may simultaneously + access the same netCDF file. +- *Archivable*. Access to all earlier forms of netCDF data will be + supported by current and future versions of the software. + +The netCDF software was developed by Glenn Davis, Russ Rew, Ed Hartnett, +John Caron, Dennis Heimbigner, Steve Emmerson, Harvey Davies, and Ward +Fisher at the Unidata Program Center in Boulder, Colorado, with +[contributions](http://www.unidata.ucar.edu/software/netcdf/docs/credits.html) from many other netCDF users. + +---------- + +How do I get the netCDF software package? {#HowdoIgetthenetCDFsoftwarepackage} +----------------- + + +The latest source distribution, which includes the C libraries and +utility programs, is available from [the NetCDF Downloads +page](/downloads/netcdf/index.jsp). Separate source distributions for +the Java library, Fortran libraries, and C++ libraries are also +available there. Installation instructions are available with the +distribution or [online](http://www.unidata.ucar.edu/software/netcdf/docs/building.html). + +Binary distributions of netCDF are available for various platforms from +package management systems such as dpkg, RPM, fink, MacPorts, Homebrew, +OpenCSW, OpenPKG, and the FreeBSD Ports Collection. + +---------- + +How do I convert netCDF data to ASCII or text? {#How-do-I-convert-netCDF-data-to-ASCII-or-text} +----------------- + + + +One way to convert netCDF data to text is to use the **ncdump** tool +that is part of the netCDF software distribution. It is a command line +tool that provides a text representation of a netCDF file's data, just its +metadata, or just the data for specified +variables, depending on what arguments you use. For more information, +see the \ref ncdump_guide documentation. + +Another good tool for conversion of netCDF data to text is the ["ncks" program](http://nco.sourceforge.net/nco.html#ncks-netCDF-Kitchen-Sink) that's one of the utility programs in the [NCO (NetCDF Operators)](software.html#NCO) package. Similar capabilities are available using programs from the [CDO (Climate Data Operators)](software.html#CDO) software, commands from [NCL (NCAR Command Language)](software.html#NCL), or various other packages such as [ANAX](http://science.arm.gov/~cflynn/ARM_Tested_Tools/), cdf2asc, and NOESYS, all "third party" netCDF utilities developed and supported by other organizations. You can find more information about these third-party packages on the [Software for Manipulating or Displaying NetCDF Data](software.html) page. + +You can also get netCDF data in ASCII from an OPeNDAP server by using a +".ascii" extension with the URL that specifies the data. For details, +see the OPeNDAP page on [Using a Spreadsheet Application with DODS](http://www.opendap.org/useExcel). + +Another freely available tool, [netcdf4excel](https://code.google.com/p/netcdf4excel/), has been developed as a netCDF add-in for MS Excel that can facilitate the conversion of netCDF data to and from text form. + +Note that **ncdump** and similar tools can print metadata and data values +from netCDF files, but in general they don't understand coordinate +systems specified in the metadata, only variable arrays and their +indices. To interpret georeferencing metadata so you can print the data +within a latitude/longitude bounding box, for example, you need a higher +level tool that interprets conventions for specifying coordinates, such +as the CF conventions. Or you can write a small program using one of the +language APIs that provide netCDF support, for which [examples are available](http://www.unidata.ucar.edu/software/netcdf/examples/programs/). + +---------- + +How do I convert ASCII or text data to netCDF? {#How-do-I-convert-ASCII-or-text-data-to-netCDF} +----------------- + + +One way to convert data in text form to netCDF is to use the **ncgen** +tool that is part of the netCDF software distribution. Using **ncgen** for +this purpose is a two-step process: + +1. Convert text data to a file in [CDL form](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#CDL-Syntax) using a text + editor or text manipulation tools +2. Convert the CDL representation to netCDF using the **ncgen** tool with + the "-o" or "-b" option + +For more information, see the [ncgen documentation](http://www.unidata.ucar.edu/software/netcdf/docs/ncgen-man-1.html). + +If you have installed the NCAR Command Language +([NCL](http://www.ncl.ucar.edu/)) software, there are functions +available and described +[here](http://www.ncl.ucar.edu/Applications/list_io.shtml) and +[here](http://www.ncl.ucar.edu/Applications/read_ascii.shtml) for +reading ASCII and tables into NCL and writing the data out to netCDF +files. + +With access to [MATLAB](http://www.mathworks.com/), you can create a +schema for the desired netCDF file using +[ncwriteschema](http://www.mathworks.com/help/techdoc/ref/ncwriteschema.html), +read the data using +[textscan](http://www.mathworks.com/help/techdoc/ref/textscan.html), and +write the data to a netCDF file using +[ncwrite](http://www.mathworks.com/help/techdoc/ref/ncwrite.html). + +What's new in the latest netCDF release? + + +[Release notes](http://www.unidata.ucar.edu/software/netcdf/release-notes-latest.html) for the +latest netCDF release are available that describe new features and fixed +bugs since the previous release. + +---------- + +What is the best way to represent [some particular data] using netCDF? {#What-is-the-best-way-to-represent-some-particular-data-using-netCDF} +----------------- + +There are many ways to represent the same information in any +general-purpose data model. Choices left up to the user in the case of +netCDF include which information to represent as variables or as +variable attributes; what names to choose for variables, dimensions, and +attributes; what order to use for the dimensions of multidimensional +variables; what variables to include in the same netCDF file; and how to +use variable attributes to capture the structure and meaning of data. We +provide some guidelines in the NetCDF User's Guide (e.g., the section on +[Differences between Attributes and Variables](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Differences-between-Attributes-and-Variables.html#Differences%20between%20Attributes%20and%20Variables)) +and in a new web document [Writing NetCDF Files: BestPractices](http://www.unidata.ucar.edu/software/netcdf/BestPractices.html), but we've found that +a little experience helps. Occasionally we have decided it was useful to +change the structure of netCDF files after experience with how the data +is used. + +---------- + +What convention should be used for the names of netCDF files? {#What-convention-should-be-used-for-the-names-of-netCDF-files} +----------------- + + +NetCDF files should have the file name extension ".nc". The recommended +extension for netCDF files was changed from ".cdf" to ".nc" in 1994 in +order to avoid a clash with the NASA CDF file extension, and now it also +avoids confusion with "Channel Definition Format" files. + + + +---------- + +Is there a mailing list for netCDF discussions and questions? {#Is-there-a-mailing-list-for-netCDF-discussions-and-questions} +----------------- + +The netcdfgroup@unidata.ucar.edu mailing-list is intended for +discussions and announcements about netCDF interfaces, software, and +use. The volume of this list varies widely, from one message per month +to a dozen messages per day (especially after a new release). A message +posted to this mailing-list will be seen by several hundred people, so +it's usually not appropriate for asking simple questions about use. Such +questions should instead be sent to support-netcdf@unidata.ucar.edu. + +If you would prefer to get only a single daily digest of the postings to +the netcdfgroup mailing-list, subscribe instead to the digest form of +the mailing-list, containing the same messages but appearing at most +once per day instead of whenever anyone sends a message to the group. + +To subscribe or unsubscribe to either of these mailing lists, use one of +these mailing list actions: + +* [subscribe: non-digest](mailto:netcdfgroup-join@unidata.ucar.edu) ] +* [subscribe: digest](mailto:netcdfgroup-request@unidata.ucar.edu?subject=subscribe%0A%20%20%20%20%20%20%20%20%20%20digest) +] +* [change subscription options](http://mailman.unidata.ucar.edu/mailman/options/netcdfgroup) +* [view posts](/mailing_lists/archives/netcdfgroup/) +* [search archives](/search.jsp). + +---------- + +Where are some examples of netCDF datasets? {#Where-are-some-examples-of-netCDF-datasets} +----------------- + +Here are some [example netCDF files](http://www.unidata.ucar.edu/software/netcdf/examples/files.html). + +---------- + +What is the best way to handle time using netCDF? {#What-is-the-best-way-to-handle-time-using-netCDF} +----------------- + + +Discussions of conventions for representing time and handling +time-dependent data have been a past topic of discussion on the +netcdfgroup mailing list. When the subject comes up, interesting +discussions often result, so we've archived past discussions on this +subject at +[http://www.unidata.ucar.edu/software/netcdf/time/](http://www.unidata.ucar.edu/software/netcdf/time/). + +A summary of Unidata's recommendations is available from +[http://www.unidata.ucar.edu/software/netcdf/time/recs.html](http://www.unidata.ucar.edu/software/netcdf/time/recs.html). +Briefly, we recommend use of the units conventions supported by the +[udunits library](/software/udunits/) for time and other units +attributes. + +Other groups have established more specific conventions that include the +representation of time in netCDF files. For more information on such +conventions, see the NetCDF Conventions Page at +[http://www.unidata.ucar.edu/software/netcdf/conventions.html](http://www.unidata.ucar.edu/software/netcdf/conventions.html). + +---------- + +Who else uses netCDF? {#Who-else-uses-netCDF} +----------------- + +The netCDF mailing list has over 500 addresses (some of which are +aliases to more addresses) in thirty countries. Several groups have +[adopted netCDF as a standard](http://www.unidata.ucar.edu/software/netcdf/docs/standards.html) for +representing some forms of scientific data. + +A somewhat dated description of some of the projects and groups that +have used netCDF is available from +[http://www.unidata.ucar.edu/software/netcdf/usage.html](http://www.unidata.ucar.edu/software/netcdf/usage.html). + +---------- + +What are some references to netCDF? {#What-are-some-references-to-netCDF} +----------------- + +A primary reference is the User's Guide: + +Rew, R. K., G. P. Davis, S. Emmerson, and H. Davies, **NetCDF User's +Guide for C, An Interface for Data Access, Version 3**, April 1997. + +Current online and downloadable documentation is available from the +[documentation directory](http://www.unidata.ucar.edu/software/netcdf/docs/). + +Other references include: + +Brown, S. A, M. Folk, G. Goucher, and R. Rew, "Software for Portable +Scientific Data Management," Computers in Physics, American Institute of +Physics, Vol. 7, No. 3, May/June 1993, pp. 304-308. + +Fulker, D. W., "Unidata Strawman for Storing Earth-Referencing Data," +Seventh International Conference on Interactive Information and +Processing Systems for Meteorology, Oceanography, and Hydrology, New +Orleans, La., American Meteorology Society, January 1991. + +Jenter, H. L. and R. P. Signell, 1992. "[NetCDF: A Freely-Available Software-Solution to Data-Access Problems for Numerical Modelers](http://www.unidata.ucar.edu/software/netcdf/papers/jenter_signell_92.pdf)". Proceedings +of the American Society of Civil Engineers Conference on Estuarine and +Coastal Modeling. Tampa, Florida. + +Kuehn, J.A., "Faster Libraries for Creating Network-Portable +Self-Describing Datasets", Proceedings of the 37th Cray User Group +Meeting, (Barcelona, Spain, March 1996), Cray User Group, Inc. + +Rew, R. K. and G. P. Davis, "NetCDF: An Interface for Scientific Data +Access," IEEE Computer Graphics and Applications, Vol. 10, No. 4, pp. +76-82, July 1990. + +Rew, R. K. and G. P. Davis, "The Unidata netCDF: Software for Scientific +Data Access," Sixth International Conference on Interactive Information +and Processing Systems for Meteorology, Oceanography, and Hydrology, +Anaheim, California, American Meteorology Society, pp. 33-40, February +1990. + +Rew, R. K. and G. P. Davis, " [Unidata's netCDF Interface for Data Access: Status and Plans](/netcdf/ams97.html)," Thirteenth International Conference on Interactive Information and Processing Systems for Meteorology, Oceanography, and Hydrology, Anaheim, California, American Meteorology Society, February 1997. + +---------- + +I'm submitting a paper for publication and want to include a citation for use of netCDF software. What reference should I use? {#How-should-I-cite-use-of-netCDF-software} +----------------- + +The registered Digital Object Identifier for all versions of netCDF software is `http://doi.org/10.5065/D6H70CW6`. + +The following can be used as a citation: + +Unidata, (_year_): Network Common Data Form (netCDF) version _nc_version_ [software]. Boulder, CO: UCAR/Unidata. (http://doi.org/10.5065/D6H70CW6) + +where _year_ is the year in which the work being described was done and _nc_version_ is the version of netCDF used. For example: + +Unidata, (2015): Network Common Data Form (netCDF) version 4.3.3.1 [software]. Boulder, CO: UCAR/Unidata. (http://doi.org/10.5065/D6H70CW6) + +---------- + +Is there a document describing the actual physical format for a Unidata netCDF file? {#Is-there-a-document-describing-the-actual-physical-format-for-a-Unidata-netCDF-file} +----------------- + +A short document that specifies the [format of netCDF classic and 64-bit offset files](http://earthdata.nasa.gov/sites/default/files/esdswg/spg/rfc/esds-rfc-011/ESDS-RFC-011v2.00.pdf) has been approved as a standard by the NASA ESDS Software Process Group. + +In addition, the NetCDF User's Guide contains an +[appendix](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#File-Format) with the same format specification. + +The ["NetCDF File Structure and Performance"](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Structure) chapter provides a less formal explanation of the format of netCDF data to help clarify the performance implications of different data organizations. + +If users only access netCDF data through the documented interfaces, future changes to the format will be transparent. + +---------- + +Installation and Porting {#Installation-and-Porting} +================ + +What does netCDF run on? {#What-does-netCDF-run-on} +----------------- + +We test releases on the following operating systems with various compilers: + +- AIX +- HPUX +- IRIX, IRIX64 +- Linux +- MacOS X +- Solaris +- Windows (some versions, see below) + +The [NetCDF Installation and Porting Guide](@ref getting_and_building_netcdf) explains how to build netCDF from source on various platforms. Often, it's as easy as running + +~~~~ {.boldcode} + ./configure + make check install +~~~~ + +---------- + + +How can I use current versions of netCDF-4 with Windows? {#HowcanIusecu} +------------------ + + +See [http://www.unidata.ucar.edu/software/netcdf/docs/winbin.html](http://www.unidata.ucar.edu/software/netcdf/win_netcdf). + +How can I use netCDF-4.1 with Windows? {#HowcanIusenetCDF41withWindows} +----------------- + + +We recently (Summer of 2010) refactored the core building of the netCDF +library. Unfortunately this hopelessly broke the existing port to +Microsoft Visual Studio. Resources permitting, the development of a new +Visual Studio port will be undertaken in the second half of 2010 at +Unidata. Until then, no Visual Studio port of the latest version of the +library is available. + +Users are advised that the netCDF build is known to work with Cygwin, +the free POSIX layer for Windows. Building netCDF with Cygwin, and +including the netCDF, HDF5, zlib, and Cygwin DLLs, will allow you to +access the netCDF C library on Windows, even from Visual Studio builds. + +We understand that Windows users are most comfortable with a Visual +Studio build, and we intend to provide one. + +The Visual Studio port is complicated by the following factors: + +- No configure script support on windows - the Unix build system uses + a configure script to determine details of the build platform and + allow the user to specify settings. Windows has no mechanism for + this other than statically set properties. A Windows-only config.h + file needs to be created for windows using Cygwin, then included + with the distribution. Since this contains the version string, it + must be updated "by hand" before each release. +- No m4 on windows - the Unix build uses the macro language m4 to + generate some of the C code in the netCDF library (for example, + libsrc/putget.c). M4 must be run under Cygwin to generate these + files, and then they must be statically added to the windows + distribution. Each new version of netCDF these files should be + checked for changes. We are restricting new use of m4 for netCDF + compiles, but that doesn't help with the existing files. +- No user options on Windows - since Windows does not support a + configure step, all user options must be pre-set in the Visual + Studio property lists. As a simplification, many options available + to Unix users will be unavailable to builders on Windows, such as + --disable-dap, --disable-netcdf-4, and --disable-shared. +- Large files (\> 2 GB) have proved to be a problem area in past + Windows builds. +- Previous Windows ports have not had to deal with the new OPeNDAP + client. + +Unidata is a community supported organization, and we welcome +collaboration with users who would like to assist with the windows port. +Users should be sure to start with the netCDF daily snapshot, not a +previous release of netCDF. + +NOTE: [Paratools](http://www.paratools.com/) has contributed +[instructions for how to build netCDF-4.1.3](http://www.paratools.com/Azure/NetCDF) as a Windows DLL using the MinGW cross compiler. + +Nikolay Khabarov has contributed [documentation describing a netCDF-4.1.3 port](http://user.iiasa.ac.at/~khabarov/netcdf-win64-and-win32-mingw/) using MinGW to build native Windows 64-bit and 32-bit DLLs. Current limitations include leaving out support for Fortran and C++ interfaces, NetCDF-4, HDF5, the old version 2 API, and DAP access. The netCDF classic format and 64-bit offset format are fully supported. Links are provided to compiled 32-bit and 64-bit DLLs and static libraries. + +A developer on the GMT Wiki has posted [detailed instructions for using CMake](http://gmtrac.soest.hawaii.edu/projects/gmt/wiki/BuildingNetCDF) and MS Visual C++ on Windows to build netCDF-4.1.3, including OPeNDAP support. + +Another developer has contributed an unsupported native Windows build of +netCDF-4.1.3 with 32- and 64-bit versions, Fortran bindings, and OPeNDAP +support. The announcement of the availability of that port is +[here](http://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2011/msg00363.html). + +User Veit Eitner has contributed a port of 4.1.1 to Visual Studio, +including an F90 port to Intel Fortran. Download [source (ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-src.zip)](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-src.zip) or [binary](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-bin.zip) versions. This port was done before the code was refactored in 4.1.2. + +How can I use netCDF-4 with Windows? {#How-can-I-use-netCDF-4-with-Windows} +----------------- + + +Note that we have not ported the F90 or C++ APIs to the Windows +platform, only the C and F77 APIs. User contributions of ports to F90 +windows compilers are very welcome (send them to +support-netcdf@unidata.ucar.edu). + +On windows, NetCDF consists of a DLL and the ncgen/ncdump executables. +The easiest course is to download one of the pre-built DLLs and +utilities and just install them on your system. + +Unlike Unix builds, the Visual Studio build **always** requires HDF5, +zlib, and szlib in all cases. All Windows DLL users must also have the +HDF5, zlib, and szlib DLLs. These are now available from the Unidata FTP +site: + +- [zlib DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/zlib123-vs2005.zip) +- [szlib DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/szip21-vs6-enc.zip) +- [HDF5 DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/5-181-win-vs2005.zip) + +Two versions of the netCDF DLLs are available, for different Fortran +compilers: + +- [NetCDF for Intel and Portland Group Fortran compilers.](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/win32_vs_PGI_dll_4.0.1.zip) +- [NetCDF for other Fortran compilers.](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/win32_vs_f2c_dll_4.0.1.zip) + +To use netCDF, install the DLLs in /system/win32 and the .h files in a +directory known to your compiler, and define the DLL\_NETCDF +preprocessor macro before including netcdf.h. + +The netCDF-4 library can also be built using Visual Studio 2008. Open +the solution file win32/NET/netcdf.sln. + +If you install the header files in \\include directory, the netCDF +solution file will work without modifications. Otherwise the properties +of the netcdf project must be changed to include the proper header +directory. + +Both the debug and release builds work. The release build links to +different system libraries on Windows, and will not allow debuggers to +step into netCDF library code. This is the build most users will be +interested in. The debug build is probably of interest only to netCDF +library developers. + +As of version 4.0.1 (March 2009), the DLL build does not yet include any +testing of the extended netCDF-4 data model. The netCDF4/HDF5 format is +extensively tested in the classic model, but tests for groups, +user-defined types, and other features of the expanded netCDF-4 data +model have not yet been ported to Windows. + +The [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/index.html) documents how to +use netCDF with Windows. + +Some users have built and released netCDF with Intel Fortran on Windows. +See the [ifort entry in other builds document](http://www.unidata.ucar.edu/software/netcdf/docs/other-builds.html#ifort-361-windows). + +Windows is a complicated platform to build on. Some useful explanations +of the oddities of Windows can be found here: + +- Cygwin documentation for [Building and Using DLLs](http://cygwin.com/cygwin-ug-net/dll.html) +- [OpenLDAP FAQ answer: MinGW Support in Cygwin](http://www.openldap.org/faq/data/cache/301.html), by Jon + Leichter. +- [cygwin mailing list explanation of Windows DL requirements.](http://cygwin.com/ml/cygwin/2000-06/msg00688.html) +- [-mno-cygwin - Building Mingw executables using Cygwin](http://www.delorie.com/howto/cygwin/mno-cygwin-howto.html) + +Once you have the netCDF DLL, you may wish to call it from Visual Basic. +The [netCDF VB wrapper](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf_vb_net_wrapper.zip) will help you do this. + +The SDS ([Scientific DataSet](http://research.microsoft.com/en-us/projects/sds/)) library and tools provide .Net developers a way to read, write and share scalars, vectors, and multidimensional grids using CSV, netCDF, and other file formats. It currently uses netCDF version 4.0.1. In addition to .Net libraries, SDS provides a set of utilities and packages: an sds command line utility, a DataSet Viewer application and an add-in for Microsoft Excel 2007 (and later versions). + +---------- + +How do I build and install netCDF for a specific development environment? {#How-do-I-build-and-install-netCDF-for-a-specific-development-environment} +----------------- + +You have to build and install the netCDF C library first, before you build and install other language libraries that depend on it, such as Fortran, C++, or Python netCDF libraries. The netCDF Java library is mostly independent of the netCDF C library, unless you need to write netCDF-4 files from Java, in which case you will also need an installed netCDF C library. + +For more details, see +[NetCDF Installation and Porting Guide](@ref getting_and_building_netcdf). + + +---------- + +How can I tell if I successfully built and installed netCDF? {#How-can-I-tell-if-I-successfully-built-and-installed-netCDF} +----------------- + + +We make build output from various platforms [available](../builds) for +comparison with your output. In general, you can ignore compiler +warnings if the "make test" step is successful. Lines that begin with +"\*\*\*" in the "make test" output indicate results from tests. The C +and Fortran-77 interfaces are tested extensively, but only rudimentary +tests are currently used for the C++ and Fortran-90 interfaces. + +How can I tell what version I'm using? {#How-can-I-tell-what-version-Im-using} +----------------- + + +If you invoke + +~~~~ {.boldcode} + ncdump --version +~~~~ + +the last line of the resulting output will identify the version +associated with the **ncdump** utility. You can also call one of the +functions `nc_inq_libvers()`, `nf_inq_libvers()`, or +`nf90_inq_libvers()` from C, Fortran-77, or Fortran-90 programs to get a +version string. + +---------- + +Where does netCDF get installed? {#Where-does-netCDF-get-installed} +----------------- + + +The netCDF installation directory can be set at the time configure is +run using the --prefix argument. If it is not specified, /usr/local is +used as the default prefix. + +For more information see the [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install). + +Formats, Data Models, and Software Releases {#formatsdatamodelssoftwarereleases} +=========================================== + +In different contexts, "netCDF" may refer to a data model, a software +implementation with associated application program interfaces (APIs), or +a data format. Confusion may arise in discussions of different versions +of the data models, software, and formats. For example, compatibility +commitments require that new versions of the software support all +previous versions of the format and data model. This section of FAQs is +intended to clarify netCDF versions and help users determine what +version to build and install. + +How many netCDF formats are there, and what are the differences among them? {#How-many-netCDF-formats-are-there-and-what-are-the-differences-among-them} +----------------- + + +There are four netCDF format variants: + +- the classic format +- the 64-bit offset format +- the 64-bit data format +- the netCDF-4 format +- the netCDF-4 classic model format + +(In addition, there are two textual representations for netCDF data, +though these are not usually thought of as formats: CDL and NcML.) + +The **classic format** was the only format for netCDF data created +between 1989 and 2004 by the reference software from Unidata. It is +still the default format for new netCDF data files, and the form in +which most netCDF data is stored. This format is also referred as CDF-1 format. + +In 2004, the **64-bit offset format** variant was added. Nearly +identical to netCDF classic format, it allows users to create and access +far larger datasets than were possible with the original format. (A +64-bit platform is not required to write or read 64-bit offset netCDF +files.) This format is also referred as CDF-2 format. + +In 2008, the **netCDF-4 format** was added to support per-variable +compression, multiple unlimited dimensions, more complex data types, and +better performance, by layering an enhanced netCDF access interface on +top of the HDF5 format. + +At the same time, a fourth format variant, **netCDF-4 classic model +format**, was added for users who needed the performance benefits of the +new format (such as compression) without the complexity of a new +programming interface or enhanced data model. + +In 2016, the **64-bit data format** variant was added. To support large +variables with more than 4-billion array elements, it replaces most of the +32-bit integers used in the format specification with 64-bit integers. It also +adds support for several new data types including unsigned byte, unsigned +short, unsigned int, signed 64-bit int and unsigned 64-bit int. A 64-bit +platform is required to write or read 64-bit data netCDF files. This format is +also referred as CDF-5 format. + +With each additional format variant, the C-based reference software from +Unidata has continued to support access to data stored in previous +formats transparently, and to also support programs written using +previous programming interfaces. + +Although strictly speaking, there is no single "netCDF-3 format", that +phrase is sometimes used instead of the more cumbersome but correct +"netCDF classic CDF-1, 64-bit offset CDF-2, or 64-bit data CDF-5 format" to +describe files created by the netCDF-3 (or netCDF-1 or netCDF-2) libraries. +Similarly "netCDF-4 format" is sometimes used informally to mean "either the +general netCDF-4 format or the restricted netCDF-4 classic model format". We +will use these shorter phrases in FAQs below when no confusion is likely. + +A more extensive description of the netCDF formats and a formal specification +of the classic and 64-bit formats is available as a [NASA ESDS community +standard](https://earthdata.nasa.gov/sites/default/files/esdswg/spg/rfc/esds-rfc-011/ESDS-RFC-011v2.00.pdf). + +The 64-bit data CDF-5 format specification is available in +http://cucis.ece.northwestern.edu/projects/PnetCDF/CDF-5.html. + +How can I tell which format a netCDF file uses? {#How-can-I-tell-which-format-a-netCDF-file-uses} +----------------- + + +The short answer is that under most circumstances, you should not care, +if you use version 4.0 or later of the netCDF library to access data in +the file. But the difference is indicated in the first four bytes of the +file, which are 'C', 'D', 'F', '\\001' for the classic netCDF CDF-1 format; +'C', 'D', 'F', '\\002' for the 64-bit offset CDF-2 format; +'C', 'D', 'F', '\\005' for the 64-bit data CDF-5 format; or '\\211', 'H', +'D', 'F' for an HDF5 file, which could be either a netCDF-4 file or a +netCDF-4 classic model file. (HDF5 files may also begin with a +user-block of 512, 1024, 2048, ... bytes before what is actually an +8-byte signature beginning with the 4 bytes above.) + +With netCDF version 4.0 or later, there is an easy way that will +distinguish between netCDF-4 and netCDF-4 classic model files, using the +"-k" option to **ncdump** to determine the kind of file, for example: + +~~~~~ {.boldcode} + ncdump -k foo.nc + classic +~~~~~ + + +In a program, you can call the function +[nc_inq_format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c.html#nc_005finq-Family)(or [nf90_inq_format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#Compiling-and-Linking-with-the-NetCDF-Library) for the Fortran-90 interface) to determine the format variant of an open netCDF file. + +Finally, on a Unix system, one way to display the first four bytes of a +file, say foo.nc, is to run the following command: + +~~~~ {.boldcode} + od -An -c -N4 foo.nc +~~~~ + +which will output + +~~~~ {.boldcode} + C D F 001 +~~~~ + +~~~~ {.boldcode} + C D F 002 +~~~~ + +~~~~ {.boldcode} + C D F 005 +~~~~ + +~~~~ {.boldcode} + 211 H D F +~~~~ + +depending on whether foo.nc is a classic CDF-1, 64-bit offset CDF-2, 64-bit +data CDF-5, or netCDF-4 file, respectively. This method cannot be used to +distinguish between netCDF-4 and netCDF-4 classic model variants, or between a +netCDF-4 file and a different kind of HDF5 file. + +---------- + +How many netCDF data models are there? {#How-many-netCDF-data-models-are-there} +----------------- + +There are only two netCDF data models, the [classic +model](/netcdf/workshops/2008/datamodel/NcClassicModel.html) and the [enhanced +model](/netcdf/workshops/2008/netcdf4/Nc4DataModel.html) (also called the +netCDF-4 data model). The classic model is the simpler of the two, and is used +for all data stored in classic CDF-1 format, 64-bit offset CDF-2 format, 64-bit +data CDF-5 format, or netCDF-4 classic model format. The enhanced model +(sometimes also referred to as the netCDF-4 data model) is an extension of the +classic model that adds more powerful forms of data representation and data +types at the expense of some additional complexity. Although data represented +with the classic model can also be represented using the enhanced model, +datasets that use enhanced model features, such as user-defined data types, +cannot be represented with the classic model. Use of the enhanced model +requires storage in the netCDF-4 format. + +How many releases of the C-based netCDF software are supported? {#How-many-releases-of-the-C-based-netCDF-software-are-supported} +----------------- + + +When netCDF version 4.0 was released in June 2008, version 3.6.3 was +released simultaneously, and both releases were supported by Unidata. +Version 3.6.3 supported only the classic and 64-bit offset formats. +Version 4.0 supported both of those format variants by default, and also +the netCDF-4 and netCDF-4 classic model formats, if built using a +previously installed HDF5 library and using the "--enable-netcdf-4" +configure option. Software built from the netCDF-4.0 release without +specifying "--enable-netcdf-4" (the default) was identical to software +built with netCDF-3.6.3. Starting from version 4.4.0, netCDF added support +for CDF-5 format. + +Both netCDF-3 and netCDF-4 C libraries are part of a single software +release. The netCDF software may be built to support just the classic +CDF-1 and 64-bit offset CDF-2 formats (the default), 64-bit data CDF-5 format, +or to also support the netCDF-4 and netCDF-4 classic model formats, if the +HDF5-1.8.x library is installed. Unidata no longer supports a separate +netCDF-3-only version of the software, but instead supports both the classic +and enhanced data models and all four format variants in a single source +distribution. + +This does not indicate any plan to drop support for netCDF-3 or the +formats associated with netCDF-3. Support for earlier formats and APIs +will continue with all future versions of netCDF software from Unidata. + +Should I get netCDF-3 or netCDF-4? {#Should-I-get-netCDF-3-or-netCDF-4} +----------------- + +By downloading a current version of netCDF-4, you have the choice to +build either + +- the default netCDF-3 libraries, which support classic CDF-1, 2, and 5 + formats, and the classic data model; or +- the netCDF-4 libraries, which support netCDF-4 and netCDF-4 classic + model formats, as well as classic formats, and the + enhanced data model. + +Which version to build depends on how you will use the software. + +Installing the simpler netCDF-3 version of the software is recommended +if the following situations apply: + +- all the data you need to access is available in netCDF classic + formats +- you are installing netCDF in order to support another software + package that uses only netCDF-3 features +- you plan to only write data in a form that netCDF-3 software and + applications can access +- you want to delay upgrading to support netCDF-4 until netCDF-4 + formats are more widely used +- you cannot install the prerequisite HDF5 1.8 software required to + build and install netCDF-4 + +Installing the netCDF-4 version of the software is required for any of +the following situations: + +- you need to access netCDF data that makes use of netCDF-4 + compression or chunking +- you need to access data in all netCDF formats including netCDF-4 or + netCDF-4 classic model formats +- you need to write non-record variables larger than 4GiB or record variables with more than 4GiB per record (see ["Have all netCDF size limits been eliminated?"](http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#Large%20File%20Support10)) +- you are installing netCDF to support other software packages that + require netCDF-4 features +- you want to write data that takes advantage of compression, + chunking, or other netCDF-4 features +- you want to be able to read netCDF-4 classic model data with no + changes to your current software except relinking with the new + library +- you want to benchmark your current applications with the new + libraries to determine whether the benefits are significant enough + to justify the upgrade +- you need to use parallel I/O with netCDF-4 or netCDF-4 classic files + +What is the "enhanced data model" of netCDF-4, and how does it differ from the netCDF-3 classic data model? {#whatisenhanceddatamodel} +------------- + + +The enhanced model (sometimes referred to as the netCDF-4 data model) is +an extension to the [classic model](/netcdf/workshops/2008/datamodel/NcClassicModel.html) that adds more powerful forms of data representation and data types at the expense of some additional complexity. Specifically, it adds six new primitive data types, four kinds of user-defined data types, multiple unlimited +dimensions, and groups to organize data hierarchically and provide +scopes for names. A [picture](/netcdf/workshops/2008/netcdf4/Nc4DataModel.html) of the enhanced data model, with the extensions to the classic model +highlighted in red, is available from the online netCDF workshop. + +Although data represented with the classic model can also be represented +using the enhanced model, datasets that use features of the enhanced +model, such as user-defined data types, cannot be represented with the +classic model. Use of added features of the enhanced model requires that +data be stored in the netCDF-4 format. + +Why doesn't the new netCDF-4 installation I built seem to support any of the new features? {#Whydoesnt-the-new-netCDF-4-installation-I-built-seem-to-support-any-of-the-new-features} +----------------- + + +If you built the software from source without access to an HDF5 library, +then only the netCDF-3 library was built and installed. The current +release will build full netCDF-4 support if the HDF5 1.8.x library is +already installed where it can be found by the configure script or +cmake. + +Will Unidata continue to support netCDF-3? {#Will-Unidata-continue-to-support-netCDF-3} +----------------- + + +Yes, Unidata has a commitment to preserving backward compatibility. + +Because preserving access to archived data for future generations is +very important: + +- New netCDF software will provide read and write access to *all* + earlier forms of netCDF data. +- C and Fortran programs using documented netCDF APIs from previous + releases will be supported by new netCDF software (after recompiling + and relinking, if needed). +- Future releases of netCDF software will continue to support data + access and API compatibility. + +To read compressed data, what changes do I need to make to my netCDF-3 program? {#To-read-compressed-data-what-changes-do-I-need-to-make-to-my-netCDF-3-program} +----------------- + + +None. No changes to the program source are needed, because the library +handles decompressing data as it is accessed. All you need to do is +relink your netCDF-3 program to the netCDF-4 library to recognize and +handle compressed data. + +To write compressed data, what changes do I need to make to my netCDF-3 program? {#To-write-compressed-data-what-changes-do-I-need-to-make-to-my-netCDF-3-program} +----------------- + + +The **nccopy** utility in versions 4.1.2 and later supports a "-d *level*" +deflate option that copies a netCDF file, compressing all variables +using the specified level of deflation and default chunking parameters, +or you can specify chunking with the "-c" option. + +To do this within a program, or if you want different variables to have +different levels of deflation, define compression properties when each +variable is defined. The function to call is +[nc_def_var_deflate](/netcdf-c.html#nc_005fdef_005fvar_005fdeflate) +for C programs, [nf90_def_var_deflate](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fDEFLATE) for Fortran 90 programs, [NF_DEF_VAR_DEFLATE](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fDEFLATE) for Fortran 77. For C++ programs, the experimental cxx4 API may be used, +assuming you have configured with --enable-cxx-4. + +Although default variable chunking parameters may be adequate, +compression can sometimes be improved by choosing good chunking +parameters when a variable is first defined. For example, if a 3D field +tends to vary a lot with vertical level, but not so much within a +horizontal slice corresponding to a single level, then defining chunks +to be all or part of a horizontal slice would typically produce better +compression than chunks that included multiple horizontal slices. There +are other factors in choosing chunk sizes, especially matching how the +data will be accessed most frequently. Chunking properties may only be +specified when a variable is first defined. The function to call is +[nc_def_var_chunking](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c.html#nc_005fdef_005fvar_005f) +for C programs, +[nf90_def_var_chunking](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fCHUNKING) +for Fortran 90 programs, and +[NF_DEF_VAR_CHUNKING](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fCHUNKING) +for Fortran 77 programs. For C++ programs, the experimental cxx4 API may +be used, assuming you have configured with --enable-cxx-4. + +If I create netCDF-4 classic model files, can they be read by IDL, MATLAB, R, Python and ArcGIS? {#If-I-create-netCDF-4-classic-model-files-can-they-be-read-by-IDL-MATLAB-R-Python-and-ArcGIS} +----------------- + + +IDL 8.0 ships with support for netCDF-4, including support for OPeNDAP +remote access. + +MATLAB 2012a includes netCDF 4 support with OPeNDAP support turned on, +enabling remote access to many kinds of data, as well as use of groups, +compression, and chunking. An example is available demonstrating some of +the new functions. [NCTOOLBOX](http://nctoolbox.github.io/nctoolbox/), +uses netCDF-Java to provide read access to datasets in netCDF-4, GRIB, +GRIB2 and other formats through Unidata's Common Data Model. + +R has the [ncdf4 package](http://cirrus.ucsd.edu/~pierce/ncdf/). + +Python has the [netcdf4-python package](http://code.google.com/p/netcdf4-python/). + +ArcGIS 10.0 can read netcdf4 using the Multidimensional Tools in +ArcToolbox, and in ArcGIS 10.1, the [Multidimensional Supplemental toolbox](http://esriurl.com/MultidimensionSupplementalTools) uses NetCDF4-Python to read OPeNDAP and netCDF4 files, taking advantage of CF conventions if they exist. + +What applications are able to deal with *arbitrary* netCDF-4 files? {#What-applications-are-able-to-deal-with-arbitrary-netCDF-4-files} +----------------- + +The netCDF utilities **ncdump**, **ncgen**, and **nccopy**, available in +the Unidata C-based netCDF-4 distribution, are able to deal with +arbitrary netCDF-4 files (as well as all other kinds of netCDF files). + +How can I convert netCDF-3 files into netCDF-4 files? {#How-can-I-convert-netCDF-3-files-into-netCDF-4-files} +----------------- + + +Every netCDF-3 file can be read or written by a netCDF version 4 library, so in +that respect netCDF-3 files are already netCDF-4 files and need no conversion. +But if you want to convert a classic format file (CDF-1, 2, or 5) into a +netCDF-4 format or netCDF-4 classic model format file, the easiest way is to +use the **nccopy** utility. For example to convert a classic format file +foo3.nc to a netCDF-4 format file foo4.nc, use: + +~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode} + nccopy -k netCDF-4 foo3.nc foo4.nc +~~~~~~~~~~~~~~~~~~~~~~~~~ + +To convert a classic format file foo3.nc to a netCDF-4 classic +model format file foo4c.nc, you could use: + +~~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode} + nccopy -k netCDF-4-classic foo3.nc foo4c.nc +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have installed [NCO](http://www.unidata.ucar.edu/software/netcdf/software.html#NCO), the NCO +utility "ncks" can be used to accomplish the same task, as follows: + +~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode} + ncks -7 foo3.nc foo4c.nc +~~~~~~~~~~~~~~~~~~~~~~~~ + +Another method is available for relatively small files, using the **ncdump** +and **ncgen** utilities (built with a netCDF-4 library). Assuming "small3.nc" +is a small classic format netCDF file, you can create an equivalent netCDF-4 +file named "small4.nc" as follows: + +~~~~ {.boldcode} + ncdump small3.nc > small.cdl + ncgen -o small4.nc -k netCDF-4-classic small.cdl +~~~~ + +Why might someone want to convert netCDF-4 files into netCDF-3 files? {#Why-might-someone-want-to-convert-netCDF-4-files-into-netCDF-3-files} +----------------- + + +NetCDF-4 classic model files that use compression can be smaller than +the equivalent netCDF-3 files, so downloads are quicker. If they are +then unpacked and converted to the equivalent netCDF-3 files, they can +be accessed by applications that haven't yet upgraded to netCDF-4. + +How can I convert netCDF-4 files into netCDF-3 files? {#How-can-I-convert-netCDF-4-files-into-netCDF-3-files} +----------------- + + +In general, you can't, because netCDF-4 files may have features of the +netCDF enhanced data model, such as groups, compound types, +variable-length types, or multiple unlimited dimensions, for which no +netCDF-3 representation is available. However, if you know that a +netCDF-4 file conforms to the classic model, either because it was +written as a netCDF-4 classic model file, because the program that wrote +it was a netCDF-3 program that was merely relinked to a netCDF-4 +library, or because no features of the enhanced model were used in +writing the file, then there are several ways to convert it to a +netCDF-3 file. + +You can use the **nccopy** utility. For +example to convert a netCDF-4 classic-model format file foo4c.nc to a +classic format file foo3.nc, use: + +~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode} + nccopy -k classic foo4c.nc foo3.nc +~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have installed [NCO](http://www.unidata.ucar.edu/software/netcdf/docs/software.html#NCO), the NCO utility "ncks" can be used to accomplish the same task, as follows: + +~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode} + ncks -3 foo4c.nc foo3.nc +~~~~~~~~~~~~~~~~~~~~~~~~~ + +For a relatively small netCDF-4 classic model file, "small4c.nc" for +example, you can also use the **ncdump** and **ncgen** utilities to create an +equivalent netCDF-3 classic format file named "small3.nc" as follows: + +~~~~ {.boldcode} + ncdump small4c.nc > small4.cdl + ncgen -o small3.nc small4.cdl +~~~~ + +How can I convert HDF5 files into netCDF-4 files? {#How-can-I-convert-HDF5-files-into-netCDF-4-files} +----------------- + + +NetCDF-4 intentionally supports a simpler data model than HDF5, which +means there are HDF5 files that cannot be converted to netCDF-4, +including files that make use of features in the following list: + +- Multidimensional data that doesn't use shared dimensions implemented + using HDF5 "dimension scales". (This restriction was eliminated in + netCDF 4.1.1, permitting access to HDF5 datasets that don't use + dimension scales.) +- Non-hierarchical organizations of Groups, in which a Group may have + multiple parents or may be both an ancestor and a descendant of + another Group, creating cycles in the subgroup graph. In the + netCDF-4 data model, Groups form a tree with no cycles, so each + Group (except the top-level unnamed Group) has a unique parent. +- HDF5 "references" which are like pointers to objects and data + regions within a file. The netCDF-4 data model does not support + references. +- Additional primitive types not included in the netCDF-4 data model, + including H5T\_TIME, H5T\_BITFIELD, and user-defined atomic types. +- Multiple names for data objects such as variables and groups. The + netCDF-4 data model requires that each variable and group have a + single distinguished name. +- Attributes attached to user-defined types. +- Stored property lists +- Object names that begin or end with a space + +If you know that an HDF5 file conforms to the netCDF-4 enhanced data +model, either because it was written with netCDF function calls or +because it doesn't make use of HDF5 features in the list above, then it +can be accessed using netCDF-4, and analyzed, visualized, and +manipulated through other applications that can access netCDF-4 files. + +The [ncks tool](http://nco.sourceforge.net/nco.html#ncks-netCDF-Kitchen-Sink) of the NCO collection of netCDF utilities can take simple HDF5 data as input and produce a netCDF file as output, so this may work: + +~~~~ {.boldcode} + ncks infile.hdf5 outfile.nc +~~~~ + +Another tool has been developed to convert HDF5-EOS Aura files to +netCDF-4 files, and it is currently undergoing testing and documentation +before release on the HDF5 web site. + +How can I convert netCDF-4 files into HDF5 files? {#How-can-I-convert-netCDF-4-files-into-HDF5-files} +----------------- + + +Every netCDF-4 or netCDF-4 classic model file can be read or written by +the HDF5 library, version 1.8 or later, so in that respect netCDF-4 +files are already HDF5 files and need no conversion. + +The way netCDF-4 data objects are represented using HDF5 is described in +detail in the User Manual section ["C.3 The NetCDF-4 Format"](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#NetCDF_002d4-Format). + +Why aren't different extensions used for the different formats, for example ".nc3" and ".nc4"? {#why-arent-different-extensions-used} +------------------ + +The file extension used for netCDF files is purely a convention. The +netCDF libraries don't use the file extension. A user can currently +create a netCDF file with any extension, even one not consistent with +the format of the file. + +The **ncgen** utility uses ".nc" as a default extension for output, but this +can be overridden using the "-o" option to specify the name for the +output file. Recent versions of **ncgen** also have a "-k" option to specify +what kind of output file is desired, selecting any of the 4 format +variants, using either a numeric code or a text string. Most other +netCDF client software pays no attention to the file extension, so using +more explicit extensions by convention has no significant drawbacks, +except possibly causing confusion about format differences that may not +be important. + +Why is the default of netCDF-4 to continue to create classic files, rather than netCDF-4 files? {#Why-is-the-default-of-netCDF-4-to-continue-to-create-classic-files-rather-than-netCDF-4-files} +----------------- + + +Until widely used netCDF client software has been adapted or upgraded to +read netCDF-4 data, classic file format is the default for +interoperability with most existing netCDF software. + +Can netCDF-4 read arbitrary HDF5 files? {#Can-netCDF-4-read-arbitrary-HDF5-files} +----------------- + + +No, but it can read many HDF5 files, and more recent versions can access +more HDF5 data. If you want to access HDF5 data through netCDF +interfaces, avoid HDF5 features not included in the netCDF enhanced data +model. For more details see "[How can I convert HDF5 files into netCDF-4 files?](#fv15)", above. + +I installed netCDF-3 with --enable-shared, but it looks like the libraries it installed were netCDF-4, with names like libnetcdf.4.dylib. What's going on? {#I-installed-netCDF-3-with---enable-shared-but-it-looks-like-the-libraries-it-installed-were-netCDF-4-with-names-like-libnetcdf4dylib-Whats-going-on} +----------------- + + +The number used for the shared library name is not related to the netCDF +library version number. + +NetCDF-3.6.3 permits UTF-8 encoded Unicode names. Won't this break backward compatibility with previous software releases that didn't allow such names? {#NetCDF-363-permits-UTF-8-encoded-Unicode-names-Wont-this-break-backward-compatibility-with-previous-software-releases-that-didnt-allow-such-names} +----------------- + + +Earlier versions of the netCDF libraries have always been able to read +data with arbitrary characters in names. The restriction has been on +*creating* files with names that contained "invalid" special characters. +The check for characters used in names occurred when a program tried to +define a new variable, dimension, or attribute, and an error would be +returned if the characters in the names didn't follow the rules. +However, there has never been any such check on reading data, so +arbitrary characters have been permitted in names created through a +different implementation of the netCDF APIs, or through early versions +of netCDF software (before 2.4), which allowed arbitrary names. + +In other words, the expansion to handle UTF-8 encoded Unicode characters +and special characters such as \`:' and \` ' still conforms with +Unidata's commitment to backwards compatibility. All old files are still +readable and writable by the new software, and programs that used to +work will still work when recompiled and relinked with the new +libraries. Files using new characters in names will still be readable +and writable by programs that used older versions of the libraries. +However, programs linked to older library versions will not be able to +create new data objects with the new less-restrictive names. + +How difficult is it to convert my application to handle arbitrary netCDF-4 files? {#How-difficult-is-it-to-convert-my-application-to-handle-arbitrary-netCDF-4-files} +----------------- + + +Modifying an application to fully support the new enhanced data model +may be relatively easy or arbitrarily difficult :-), depending on what +your application does and how it is written. Use of recursion is the +easiest way to handle nested groups and nested user-defined types. An +object-oriented architecture is also helpful in dealing with +user-defined types. + +We recommend proceeding incrementally, supporting features that are +easier to implement first. For example, handling the six new primitive +types is relatively straightforward. After that, using recursion (or the +group iterator interface used in **nccopy**) to support Groups is not too +difficult. Providing support for user-defined types is more of a +challenge, especially since they can be nested. + +The utility program **nccopy**, provided in releases 4.1 and later, shows +how this can be done using the C interface. It copies an input netCDF +file in any of the format variants, handling nested groups, strings, and +any user-defined types, including arbitrarily nested compound types, +variable-length types, and data of any valid netCDF-4 type. It also +demonstrates how to handle variables that are too large to fit in memory +by using an iterator interface. Other generic utility programs can make +use of parts of **nccopy** for more complex operations on netCDF data. + +---------- + +Shared Libraries {#Shared-Libraries} +================ + +What are shared libraries? {#What-are-shared-libraries} +----------------- + + +Shared libraries are libraries that can be shared by multiple running +applications at the same time. This **may** improve performance. + +For example, if I have a library that provides function foo(), and I +have two applications that call foo(), then with a shared library, only +one copy of the foo() function will be loaded into memory, and both +programs will use it. With static libraries, each application would have +its own copy of the foo() function. + +More information on shared libraries can be found at the following +external sites: + +- [The Program-Library HowTo](http://www.tldp.org/HOWTO/Program-Library-HOWTO/index.html), + by David Wheeler. + +- [Wikipedia Library Entry](http://en.wikipedia.org/wiki/Library_(computer_science)) + +---------- + +Can I build netCDF with shared libraries? {#Can-I-build-netCDF-with-shared-libraries} +----------------- + + +Starting with version 3.6.2, netCDF can build shared libraries on +platforms that support them, but by default netCDF will build static +libraries only. To turn on shared libraries, use the --enable-shared +option to the [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html). + +---------- + +How do I use netCDF shared libraries? {#How-do-I-use-netCDF-shared-libraries} +----------------- + + +With netCDF version 3.6.2, shared libraries can be built on platforms +that support them by using the --enable-shared argument to [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html). + +Users of earlier versions of netCDF can build shared libraries by +setting flags correctly during builds. + +When you use a static library, the code is copied from the library into +your program when the program is built. The library is only needed at +build time. + +With a shared library the code in the library is not copied into your +executable, so the library is needed every time the program is run. + +If you write a program that uses the netCDF shared library, the +operating system will have to find it every time your program is run. It +will look in these places: + +1. Directories you specified as shared library locations at **build + time**. Unfortunately this is done differently with different + compilers. + +2. Directories specified in the environment variable LD\_RUN\_PATH at + **build time**. + +3. Directories specified in the OS-specific environment variable for + this purpose at **run time**. (LD\_LIBRARY\_PATH on Linux and many + other Unix variants, LOADLIBS on AIX systems, etc.) + +4. A default list of directories that includes /usr/lib (but don't + install software there!), and may or may not contain places you + might install netCDF, like /usr/local/lib. + +5. The directories specified in an OS file such as /etc/ld.conf. + +By default the netCDF library will be installed in /usr/local/lib. (This +can be overridden with the --prefix option to the [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html)). + +An external site by Arnaud Desitter has a [table of different tools and command line options relating to shared libraries](http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html) on Linux, Solaris, HP-UX, Tru64, AIX, SGI, Win32, MacOS X, VMS (wow!), and OS/390. + +For more information about how do to this in Linux users may find it +useful to read this external webpage, some documentation from Caldera, a +Linux distributor: [Specifying directories to be searched by the dynamic linker](http://osr507doc.sco.com/en/tools/ccs_linkedit_dynamic_dirsearch.html). + +---------- + +Large File Support {#Large-File-Support} +================ + +Was it possible to create netCDF files larger than 2 GiBytes before version 3.6? {#Was-it-possible-to-create-netCDF-files-larger-than-2-GiBytes-before-version-36} +----------------- + + +Yes, but there are significant restrictions on the structure of large +netCDF files that result from the 32-bit relative offsets that are part +of the classic netCDF format. For details, see [NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/documentation/historic/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations) +in the User's Guide. + +---------- + +What is Large File Support? {#What-is-Large-File-Support} +----------------- + + +Large File Support (LFS) refers to operating system and C library +facilities to support files larger than 2 GiB. On a few 32-bit platforms +the default size of a file offset is still a 4-byte signed integer, +which limits the maximum size of a file to 2 GiB. Using LFS interfaces +and the 64-bit file offset type, the maximum size of a file may be as +large as 2^63^ bytes, or 8 EiB. For some current platforms, large file +macros or appropriate compiler flags have to be set to build a library +with support for large files. This is handled automatically in netCDF +3.6 and later versions. + +More information about Large File Support is available from [Adding Large File Support to the Single UNIX Specification](http://www.unix.org/version2/whatsnew/lfs.html). + +---------- + +What does Large File Support have to do with netCDF? {#What-does-Large-File-Support-have-to-do-with-netCDF} +----------------- + + +When the netCDF format was created in 1988, 4-byte fields were reserved +for file offsets, specifying where the data for each variable started +relative to the beginning of the file or the start of a record boundary. + +This first netCDF format variant, the only format supported in versions +3.5.1 and earlier, is referred to as the netCDF *classic* format. The +32-bit file offset in the classic format limits the total sizes of all +but the last non-record variables in a file to less than 2 GiB, with a +similar limitation for the data within each record for record variables. +For more information see [Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations). + +The netCDF classic format is also identified as *version 1* or *CDF1* in +reference to the format label at the start of a file. + +With netCDF version 3.6 and later, a second variant of netCDF format is +supported in addition to the classic format. The new variant is referred +to as the *64-bit offset* format, *version 2*, or *CDF-2*. The primary +difference from the classic format is the use of 64-bit file offsets +instead of 32-bit offsets, but it also supports larger variable and +record sizes. + +Starting from version 4.4.0, netCDF added support for CDF-5 format, which +allows multiple large variables with more than 4-billion array elements defined +in the file. This format is only supported on 64-bit machine platforms. + +---------- + +Do I have to know which netCDF file format variant is used in order to access or modify a netCDF file? {#Do-I-have-to-know-which-netCDF-file-format-variant-is-used-in-order-to-access-or-modify-a-netCDF-file} +----------------- + + +No, version 3.6 and later versions of the netCDF C/Fortran library +detect which variant of the format is used for each file when it is +opened for reading or writing, so it is not necessary to know which +variant of the format is used. The version of the format will be +preserved by the library on writing. If you want to modify a classic +format file to use the CDF-2 or CDF-5 format so you can make it much +larger, you will have to create a new file and copy the data to it. The +**nccopy** utility available in version 4.1 can copy a classic file to a +CDF-2 or CDF-5 file. + +---------- + +Will future versions of the netCDF library continue to support accessing files in the classic format? {#Will-future-versions-of-the-netCDF-library-continue-to-support-accessing-files-in-the-classic-format} +----------------- + + +Yes, the 3.6 library and all planned future versions of the library will +continue to support reading and writing files using the classic CDF-1 (32-bit +offset), 64-bit offset CDF-2, and 64-bit data CDF-5 format. There is no need to +convert existing archives from the classic to the 64-bit offset format. +Even netCDF-4, which introduces a third variant of the netCDF format +based on HDF5, continues to support accessing classic CDF-1, 2, and 5 format +files. NetCDF-4 HDF5 files have even fewer restrictions on size than CDF-1 and +CDF-2 files. + +---------- + +Should I start using the new 64-bit offset format for all my netCDF files? {#Should-I-start-using-the-new-64-bit-offset-format-for-all-my-netCDF-files} +----------------- + + +No, we discourage users from making use of the 64-bit offset format +unless they need it for large files. It may be some time until +third-party software that uses the netCDF library is upgraded to 3.6 or +later versions that support the large file facilities, so we advise +continuing to use the classic netCDF format for data that doesn't +require file offsets larger than 32 bits. The library makes this +recommendation easy to follow, since the default for file creation is +the classic format. + +---------- + +How can I tell if a netCDF file uses the classic format (CDF-1), 64-bit offset format (CDF-2) or 64-bit data format (CDF-5)? {#How-can-I-tell-if-a-netCDF-file-uses-the-classic-format-or-64-bit-offset-format} +----------------- + + +The short answer is that under most circumstances, you should not care, +if you use version 3.6.0 or later of the netCDF library. But the +difference is indicated in the first four bytes of the file, which are +'C', 'D', 'F', '\\001' for the classic CDF-1 format, 'C', 'D', 'F', +'\\002' for the 64-bit offset CDF-2 format, and 'C', 'D', 'F', '\\005' for the +64-bit data CDF-5 format. On a Unix system, one way to display the first four +bytes of a file, say foo.nc, is to run the following command: + +~~~~ {.boldcode} + od -An -c -N4 foo.nc +~~~~ + +which will output + +~~~~ {.boldcode} + C D F 001 +~~~~ + +or + +~~~~ {.boldcode} + C D F 002 +~~~~ + +or + +~~~~ {.boldcode} + C D F 005 +~~~~ + +depending on whether foo.nc is a CDF-1, CDF-2, or CDF-5 netCDF file, +respectively. + +With netCDF version 3.6.2 or later, there is an easier way, using the +"-k" option to **ncdump** to determine the kind of file, for example: + +~~~~ {.boldcode} + ncdump -k foo.nc + classic +~~~~ + +---------- + +What happens if I create a 64-bit offset format netCDF file and try to open it with an older netCDF application that hasn't been linked with netCDF 3.6? {#What-happens-if-I-create-a-64-bit-offset-format-netCDF-file-and-try-to-open-it-with-an-older-netCDF-application-that-hasnt-been-linked-with-netCDF-36} +----------------- + + +The application will indicate an error trying to open the file and +present an error message equivalent to "not a netCDF file". This is why +it's a good idea not to create 64-bit offset netCDF files until you +actually need them. + +---------- + +Can I create 64-bit offset files on 32-bit platforms? {#Can-I-create-64-bit-offset-files-on-32-bit-platforms} +----------------- + + +Yes, by specifying the appropriate file creation flag you can create +64-bit offset netCDF files the same way on 32-bit platforms as on 64-bit +platforms. You do not need to compile the C/Fortran libraries as 64-bit +to support access to 64-bit offset netCDF files. + +---------- + +How do I create a 64-bit offset netCDF file from C, Fortran-77, Fortran-90, or C++? {#How-do-I-create-a-64-bit-offset-netCDF-file-from-C-Fortran-77-Fortran-90-or-Cpp} +----------------- + + +With netCDF version 3.6.0 or later, use the NC\_64BIT\_OFFSET flag when +you call nc\_create(), as in: + +~~~~ {.boldcode} + err = nc_create("foo.nc", + NC_NOCLOBBER | NC_64BIT_OFFSET, + &ncid); +~~~~ + +In Fortran-77, use the NF\_64BIT\_OFFSET flag when you call +nf\_create(), as in: + +~~~~ {.boldcode} + iret = nf_create('foo.nc', + IOR(NF_NOCLOBBER,NF_64BIT_OFFSET), + ncid) +~~~~ + +In Fortran-90, use the NF90\_64BIT\_OFFSET flag when you call +nf90\_create(), as in: + +~~~~ {.boldcode} + iret = nf90_create(path="foo.nc", + cmode=or(nf90_noclobber,nf90_64bit_offset), + ncid=ncFileID) +~~~~ + +In C++, use the Offset64Bits enum in the NcFile constructor, as in: + +~~~~ {.boldcode} + NcFile nc("foo.nc", + FileMode=NcFile::New, + FileFormat=NcFile::Offset64Bits); +~~~~ + +In Java, use the setLargeFile() method of the NetcdfFileWritable class. + +---------- + +How do I create a 64-bit offset netCDF file using the ncgen utility? {#How-do-I-create-a-64-bit-offset-netCDF-file-using-the-ncgen-utility} +----------------- + + +A command-line option, '-k', specifies the kind of file format +variant. By default or if '-k classic' is specified, the generated +file will be in netCDF classic format. If '-k 64-bit-offset' is +specified, the generated file will use the 64-bit offset format. + +---------- + +Have all netCDF size limits been eliminated? {#Have-all-netCDF-size-limits-been-eliminated} +----------------- + + +The netCDF-4 HDF5-based format has no practical limits on the size of a +variable. + +However, for the classic and 64-bit offset formats there are still +limits on sizes of netCDF objects. Each fixed-size variable (except the +last, when there are no record variables) and the data for one record's +worth of a single record variable (except the last) are limited in size +to a little less that 4 GiB, which is twice the size limit in versions +earlier than netCDF 3.6. + +The maximum number of records remains 2^32^-1. + +---------- + +Why are variables still limited in size? {#Why-are-variables-still-limited-in-size} +----------------- + + +While most platforms support a 64-bit file offset, many platforms only +support a 32-bit size for allocated memory blocks, array sizes, and +memory pointers. In C developer's jargon, these platforms have a 64-bit +`off_t` type for file offsets, but a 32-bit `size_t` type for size of +arrays. Changing netCDF to assume a 64-bit `size_t` would restrict +netCDF's use to 64-bit platforms. + +---------- + +How can I write variables larger than 4 GiB? {#How-can-I-write-variables-larger-than-4-GiB} +----------------- + + +You can overcome the 4 GiB size barrier by using the netCDF-4 HDF5 +format for your data. The only change required to the program that +writes the data is an extra flag to the file creation call, followed by +recompiling and relinking to the netCDF-4 library. Programs that access +the data would also need to be recompiled and relinked to the netCDF-4 +library. + +For classic and 64-bit offset netCDF formats, if you change the first +dimension of a variable from a fixed size to an unlimited size instead, +the variable can be much larger. Even though record variables are +restricted to 4 Gib per record, there may be 4 billion records. NetCDF +classic or 64-bit offset files can only have one unlimited dimension, so +this won't work if you are already using a record dimension for other +purposes. + +It is also possible to overcome the 4 GiB variable restriction for a +single fixed size variable, when there are no record variables, by +making it the last variable, as explained in the example in [NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/documentation/historic/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations). + +---------- + +Why do I get an error message when I try to create a file larger than 2 GiB with the new library? {#Why-do-I-get-an-error-message-when-I-try-to-create-a-file-larger-than-2-GiB-with-the-new-library} +----------------- + + +There are several possible reasons why creating a large file can fail +that are not related to the netCDF library: + +- User quotas may prevent you from creating large files. On a Unix + system, you can use the "ulimit" command to report limitations such + as the file-size writing limit. + +- There is insufficient disk space for the file you are trying to + write. + +- The file system in which you are writing may not be configured to + allow large files. On a Unix system, you can test this with a + commands such as + + ~~~~ {.boldcode} + dd if=/dev/zero bs=1000000 count=3000 of=./largefile + ls -l largefile + rm largefile + ~~~~ + + which should write a 3 GByte file named "largefile" in the current + directory, verify its size, and remove it. + +If you get the netCDF library error "One or more variable sizes violate +format constraints", you are trying to define a variable larger than +permitted for the file format variant. This error typically occurs when +leaving "define mode" rather than when defining a variable. The error +status cannot be returned when a variable is first defined, because the +last fixed-size variable defined is permitted to be larger than other +fixed-size variables (when there are no record variables). + +Similarly, the last record variable may be larger than other record +variables. This means that subsequently adding a small variable to an +existing file may be invalid, because it makes what was previously the +last variable now in violation of the format size constraints. For +details on the format size constraints, see the Users Guide sections +[NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Classic-Limitations) and [NetCDF 64-bit Offset Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#64-bit-Offset-Limitations). + +If you get the netCDF library error "Invalid dimension size" for a +non-negative size, you are exceeding the size limit of netCDF +dimensions, which must be less than 2,147,483,644 for classic files with +no large file support and otherwise less than 4,294,967,292. + +---------- + +Do I need to use special compiler flags to compile and link my applications that use netCDF with Large File Support? {#Do-I-need-to-use-special-compiler-flags-to-compile-and-link-my-applications-that-use-netCDF-with-Large-File-Support} +----------------- + + +No, except that 32-bit applications should link with a 32-bit version of +the library and 64-bit applications should link with a 64-bit library, +similarly to use of other libraries that can support either a 32-bit or +64-bit model of computation. But note that a 32-bit version of the +netCDF library fully supports writing and reading 64-bit offset netCDF +files. + +---------- + +Is it possible to create a "classic" format netCDF file with netCDF version 3.6.0 that cannot be accessed by applications compiled and linked against earlier versions of the library? {#isitpossibleclassic360} +---------------- + +No, classic files created with the new library should be compatible with +all older applications, both for reading and writing, with one minor +exception. The exception is due to a correction of a netCDF bug that +prevented creating records larger than 4 GiB in classic netCDF files +with software linked against versions 3.5.1 and earlier. This limitation +in total record size was not a limitation of the classic format, but an +unnecessary restriction due to the use of too small a type in an +internal data structure in the library. + +If you want to always make sure your classic netCDF files are readable +by older applications, make sure you don't exceed 4 GiBytes for the +total size of a record's worth of data. (All records are the same size, +computed by adding the size for a record's worth of each record +variable, with suitable padding to make sure each record begins on a +byte boundary divisible by 4.) + +---------- + +NetCDF and Other Software {#NetCDF-and-Other-Software} +================ + +What other software is available for accessing, displaying, and manipulating netCDF data? {#What-other-software-is-available-for-accessing-displaying-and-manipulating-netCDF-data} +----------------- + + +Utilities available in the current netCDF distribution from Unidata are +**ncdump**, for converting netCDF files to an ASCII human-readable form, +and **ncgen** for converting from the ASCII human-readable form back to +a binary netCDF file or a C or FORTRAN program for generating the netCDF +file. [Software for Manipulating or Displaying NetCDF Data](software.html) provides a list of other software useful for access, visualization, and analysis of netCDF data and data represented in other forms. Another useful [guide to netCDF utilities](http://nomads.gfdl.noaa.gov/sandbox/products/vis/data/netcdf/GFDL_VG_NetCDF_Utils.html) is available from NOAA's Geophysical Fluid Dynamics Laboratory. + +---------- + +What other data access interfaces and formats are available for scientific data? {#What-other-data-access-interfaces-and-formats-are-available-for-scientific-data} +----------------- + + +The [Scientific Data Format Information FAQ](http://www.cv.nrao.edu/fits/traffic/scidataformats/faq.html) provides a somewhat dated description of other access interfaces and formats for scientific data, including [CDF](http://nssdc.gsfc.nasa.gov/cdf/cdf_home.html) and [HDF](http://hdf.ncsa.uiuc.edu/). A brief comparison of CDF, netCDF, and HDF is available in the [CDF FAQ](http://nssdc.gsfc.nasa.gov/cdf/html/FAQ.html). Another comparison is in Jan Heijmans' [An Introduction to Distributed Visualization](http://www.xi-advies.nl/downloads/AnIntroductionToDistributedVisualization.pdf). John May's book [*Parallel I/O for High Performance Computing*](http://www.llnl.gov/CASC/news/johnmay/John_May_book.html) includes a chapter on Scientific Data Libraries that describes netCDF and HDF5, with example source code for reading and writing files using both interfaces. + +---------- + +What is the connection between netCDF and CDF? {#What-is-the-connection-between-netCDF-and-CDF} +----------------- + + +[CDF](http://cdf.gsfc.nasa.gov/) was developed at the NASA Space Science +Data Center at Goddard, and is freely available. It was originally a VMS +FORTRAN interface for scientific data access. Unidata reimplemented the +library from scratch to use [XDR](http://www.faqs.org/rfcs/rfc1832.html) +for a machine-independent representation, designed the +[CDL](http://www.unidata.ucar.edu/software/netcdf/documentation/historic/netcdf/CDL-Syntax.htm) (network Common Data form Language) text +representation for netCDF data, and added aggregate data access, a +single-file implementation, named dimensions, and variable-specific +attributes. + +NetCDF and CDF have evolved independently. CDF now supports many of the +same features as netCDF (aggregate data access, XDR representation, +single-file representation, variable-specific attributes), but some +differences remain (netCDF doesn't support native-mode representation, +CDF doesn't support named dimensions). There is no compatibility between +data in CDF and netCDF form, but NASA makes available [some +translators](http://cdf.gsfc.nasa.gov/html/dtws.html) between various +scientific data formats. For a more detailed description of differences +between CDF and netCDF, see the [CDF FAQ](http://cdf.gsfc.nasa.gov/html/FAQ.html). + +---------- + +What is the connection between netCDF and HDF? {#What-is-the-connection-between-netCDF-and-HDF} +----------------- + + +The National Center for Supercomputing Applications (NCSA) originally +developed [HDF4](http://hdf.ncsa.uiuc.edu/) and made it freely +available. HDF4 is an extensible data format for self-describing files +that was developed independently of netCDF. HDF4 supports both C and +Fortran interfaces, and it has been successfully ported to a wide +variety of machine architectures and operating systems. HDF4 emphasizes +a single common format for data, on which many interfaces can be built. + +NCSA implemented software that provided a netCDF-2 interface to HDF4. +With this software, it was possible to use the netCDF calling interface +to place data into an HDF4 file. + +HDF5, developed and supported by The HDF Group, Inc., a non-profit +spin-off from the NCSA group, provides a richer data model, with +emphasis on efficiency of access, parallel I/O, and support for +high-performance computing. The netCDF-4 project has implemented an +enhanced netCDF interface on the HDF5 storage layer to preserve the +desirable common characteristics of netCDF and HDF5 while taking +advantage of their separate strengths: the widespread use and simplicity +of netCDF and the generality and performance of HDF5. + +---------- + +Has anyone implemented client-server access for netCDF data? {#Has-anyone-implemented-client-server-access-for-netCDF-data} +----------------- + + +Yes, as part of the [OPeNDAP](http://www.opendap.org/) framework, +developers have implemented a client-server system for access to remote +data that supports use of the netCDF interface for clients. A reference +version of the software is available from the [OPeNDAP download site](http://www.opendap.org/download/index.html/). After linking your netCDF application with the OPeNDAP netCDF library, you can use URL's to access data from other sites running an OPeNDAP server. This supports accessing small subsets of large datasets remotely through the netCDF interfaces, without copying the datasets. + +The 4.1 release of netCDF will include OPeNDAP client support; an +experimental version is available now in the snapshot distributions. + +Other clients and servers support access through a netCDF interface to +netCDF and other kinds of data, including clients written using the +[netCDF-Java library](http://www.unidata.ucar.edu/software/netcdf-java/) and servers that use the +[THREDDS Data Server](/software/thredds/current/tds/TDS.html). + +The [GrADS Data Server](http://grads.iges.org/grads/gds/) provides +subsetting and analysis services across the Internet for any +GrADS-readable dataset, including suitable netCDF datasets. The latest +version of the [PMEL Live Access Server](http://ferret.pmel.noaa.gov/LAS) uses THREDDS Data Server technology to provide flexible access to geo-referenced scientific data, including netCDF data. + +---------- + +How do I convert between GRIB and netCDF? {#How-do-I-convert-between-GRIB-and-netCDF} +----------------- + + +Several programs and packages have been developed that convert between +[GRIB](http://www.wmo.ch/web/www/DPS/grib-2.html) and netCDF data: +[ncl_convert2nc](http://www.ncl.ucar.edu/Applications/grib2netCDF.shtml), +[degrib](http://www.nws.noaa.gov/mdl/NDFD_GRIB2Decoder/), +[CDAT](software.html#CDAT), [CDO](software.html#CDO), +[GDAL](http://www.gdal.org/), [GrADS](software.html#GrADS), and +[wgrib2](http://www.cpc.noaa.gov/products/wesley/wgrib2/). + +The Unidata [netCDF Java Library](http://www.unidata.ucar.edu/software/netcdf-java/index.html) can +read GRIB1 and GRIB2 data (and many other data formats) through a netCDF +interface. As a command-line example, you could convert *fileIn.grib* to +*fileOut.nc* as follows: + +~~~~ {.boldcode} + java -Xmx1g -classpath netcdfAll-4.3.jar ucar.nc2.dataset.NetcdfDataset \ + -in fileIn.grib -out fileOut.nc [-isLargeFile] [-netcdf4] +~~~~ + +For more details on using netCDF Java, see the CDM man pages for +[nccopy](http://www.unidata.ucar.edu/software/netcdf-java/reference/manPages.html#nccopy). + +---------- + +Problems and Bugs +----------------- + +Can I recover data from a netCDF file that was not closed properly? {#Can-I-recover-data-from-a-netCDF-file-that-was-not-closed-properly} +----------------- + + +_I have some netcdf files which have data in them and were apparently +not properly closed. When I examine them using **ncdump** they report zero +data points, although the size is a few megabytes. Is there a way of +recovering them?_ + +If the files are in classic format or 64-bit offset format (if they were +created by netCDF version 3.6.3 or earlier, for example), then you can +use an editor that allows you to change binary files, such as emacs, to +correct the four-byte number of records field in the file. This is a +bigendian 4 byte integer that begins at the 4th byte in the file. + +This is what the first eight bytes would look like for classic format if +you had zero records, where printable characters are specified as +US-ASCII characters within single-quotes and non-printable bytes are +denoted using a hexadecimal number with the notation '\\xDD', where each +D is a hexadecimal digit: + +~~~~ {.boldcode} + 'C' 'D' 'F' \x01 \x00 \x00 \x00 \x00 +~~~~ + +or + +~~~~ {.boldcode} + 'C' 'D' 'F' \x02 \x00 \x00 \x00 \x00 +~~~~ + +for 64-bit-offset format. + +And this is what the first eight bytes should look like for classic +format if you had 500 records (500 is 01F4 in hexadecimal) + +~~~~ {.boldcode} + 'C' 'D' 'F' \x01 \x00 \x01 \x0f \x04 +~~~~ + +or + +~~~~ {.boldcode} + 'C' 'D' 'F' \x02 \x00 \x01 \x0f \x04 +~~~~ + +for 64-bit-offset format. + +So if you can compute how many records should be in the file, you can +edit the second four bytes to fix this. You can find out how many +records should be in the file from the size of the file and from the +variable types and their shapes. See the [description of the netCDF format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#File-Format) +for classic and 64-bit offset files for how to figure out how large the +file should be for fixed sized variables of particular shapes and for a +specified number of record variables of particular shapes. + +Note that if you neglected to call the appropriate netCDF close function +on a file, data in the last record written but not flushed to the disk +may also be lost, but correcting the record count should allow recovery +of the other records. + +---------- + +Is there a list of reported problems and workarounds? {#Is-there-a-list-of-reported-problems-and-workarounds} +----------------- + + +Yes, the document [Known problems with the netCDF Distribution](known_problems.html) describes reported problems and workarounds in the latest version and some earlier releases. + +---------- + +How do I make a bug report? {#How-do-I-make-a-bug-report} +----------------- + + +If you find a bug, send a description to +support-netcdf@unidata.ucar.edu. This is also the address to use for +questions or discussions about netCDF that are not appropriate for the +entire netcdfgroup mailing list. + +---------- + +How do I search through past problem reports? {#How-do-I-search-through-past-problem-reports} +----------------- + + +A search link is available at the bottom of the [netCDF homepage](http://www.unidata.ucar.edu/software/netcdf/), providing a full-text search of the +support questions and answers about netCDF provided by Unidata support +staff. + +---------- + +Programming with NetCDF {#Programming-with-NetCDF} +================ + +Which programming languages have netCDF interfaces? {#Which-programming-languages-have-netCDF-interfaces} +----------------- + +The netCDF distribution comes with interfaces for C, Fortran77, +Fortran90, and C++. Other languages for which interfaces are available +separately include: + +- [Ada](http://freshmeat.net/projects/adanetcdf/) +- [IDL](software.html#IDL) +- [Java](software.html#Java%20interface) +- [MATLAB](software.html#MATLAB) +- [Perl](software.html#Perl) +- [Python](software.html#Python) +- [R](software.html#R) +- [Ruby](software.html#Ruby) +- [Tcl/Tk](software.html#Tcl/Tk) + +---------- + +Are the netCDF libraries thread-safe? {#Are-the-netCDF-libraries-thread-safe} +----------------- + +The C-based libraries are *not* thread-safe. C-based libraries are those +that depend on the C library, which currently include all language +interfaces except for the Java interface. The Java interface is +thread-safe when a few simple rules are followed, such as each thread +getting their handle to a file. + +---------- + +How does the C++ interface differ from the C interface? {#How-does-the-Cpp-interface-differ-from-the-C-interface} +----------------- + +It provides all the functionality of the C interface (except for the +generalized mapped access of ncvarputg() and ncvargetg()) and is +somewhat simpler to use than the C interface. With the C++ interface, no +IDs are needed for netCDF components, there is no need to specify types +when creating attributes, and less indirection is required for dealing +with dimensions. However, the C++ interface is less mature and +less-widely used than the C interface, and the documentation for the C++ +interface is less extensive, assuming a familiarity with the netCDF data +model and the C interface. Recently development of the C++ interface has +languished as resources have been redirected to enhancing the Java +interface. + +---------- + +How does the Fortran interface differ from the C interface? {#How-does-the-Fortran-interface-differ-from-the-C-interface} +----------------- + +It provides all the functionality of the C interface. The Fortran +interface uses Fortran conventions for array indices, subscript order, +and strings. There is no difference in the on-disk format for data +written from the different language interfaces. Data written by a C +language program may be read from a Fortran program and vice-versa. The +Fortran-90 interface is much smaller than the FORTRAN 77 interface as a +result of using optional arguments and overloaded functions wherever +possible. + +---------- + +How do the Java, Perl, Python, Ruby, ... interfaces differ from the C interface? {#How-do-the-Java-Perl-Python-Ruby-interfaces-differ-from-the-C-interface} +----------------- + +They provide all the functionality of the C interface, using appropriate +language conventions. There is no difference in the on-disk format for +data written from the different language interfaces. Data written by a C +language program may be read from programs that use other language +interfaces, and vice-versa. + +---------- + +How do I handle errors in C? {#How-do-I-handle-errors-in-C} +----------------- + +For clarity, the NetCDF C Interface Guide contains examples which use a +function called handle\_err() to handle potential errors like this: + +~~~~ {.boldcode} + status = nc_create("foo.nc", NC_NOCLOBBER, &ncid); + if (status != NC_NOERR) handle_error(status); +~~~~ + +Most developers use some sort of macro to invoke netCDF functions and +test the status returned in the calling context without a function call, +but using such a macro in the User's Guides arguably makes the examples +needlessly complex. For example, some really excellent developers define +an "ERR" macro and write code like this: + +~~~~ {.boldcode} + if (nc_create(testfile, NC_CLOBBER, &ncid)) ERR; +~~~~ + +where Err is defined in a header file: + +~~~~ {.boldcode} +/* This macro prints an error message with line number and name of + * test program. */ +#define ERR do { \ +fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ +err++; \ +fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ + __FILE__, __LINE__); \ +} while (0) +~~~~ + +Ultimately, error handling depends on the application which is calling +netCDF functions. However we strongly suggest that some form of error +checking be used for all netCDF function calls. + +---------- + + +CMake-Related Frequently Asked Questions {#cmake_faq} +======================================== + +Below are a list of commonly-asked questions regarding NetCDF and CMake. + +How can I see the options available to CMake? {#listoptions} +--------------------------------------------- + + $ cmake [path to source tree] -L - This will show the basic options. + $ cmake [path to source tree] -LA - This will show the basic and advanced options. + + +How do I specify how to build a shared or static library? {#sharedstatic} +-------------------------------------------------------- + + This is controlled with the internal `cmake` option, `BUILD_SHARED_LIBS`. + + $ cmake [Source Directory] -DBUILD_SHARED_LIBS=[ON/OFF] + + +Can I build both shared and static libraries at the same time with cmake? {#sharedstaticboth} +------------------------------------------------------------------------- + +Not at this time; it is required to instead build first one version, and then the other, if you need both. + +How can I specify linking against a particular library? {#partlib} +------------------------------------------------------- + +It depends on the library. To specify a custom `ZLib`, for example, you would do the following: + + $ cmake [Source Directory] -DZLIB_LIBRARY=/path/to/my/zlib.lib + + +`HDF5` is more complex, since it requires both the `hdf5` and `hdf5_hl` libraries. You would specify custom `HDF5` libraries as follows: + + $ cmake [Source Directory] -DHDF5_LIB=/path/to/hdf5.lib \ + -DHDF5_HL_LIB=/path/to/hdf5_hl.lib \ + -DHDF5_INCLUDE_DIR=/path/to/hdf5/include + + +Alternatively, you may specify: + + $ cmake [Source Directory] \ + -DHDF5_LIBRARIES="/path/to/hdf5.lib;/path/to/hdf5_hl.lib" \ + -DHDF5_INCLUDE_DIRS=/path/to/hdf5/include/ + + +What if I want to link against multiple libraries in a non-standard location {#nonstdloc} +---------------------------------------------------------------------------- + + You can specify the path to search when looking for dependencies and header files using the `CMAKE_PREFIX_PATH` variable: + +* Windows: + + $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=c:\shared\libs\ + + +* Linux/Unix/OSX: + + $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=/usr/custom_library_locations/ + +How can I specify a Parallel Build using HDF5 {#parallelhdf} +---------------------------------------------- + +If cmake is having problems finding the parallel `HDF5` install, you can specify the location manually: + + + $ cmake [Source Directory] -DENABLE_PARALLEL=ON \ + -DHDF5_LIB=/usr/lib64/openmpi/lib/libhdf5.so \ + -DHDF5_HL_LIB=/usr/lib64/openmpi/lib/libhdf5.hl.so \ + -DHDF5_INCLUDE_DIR=/usr/include/openmpi-x86_64 \ + +You will, of course, need to use the location of the libraries specific to your development environment. + +---------------- + +Plans {#Plans} +================ + +What other future work on netCDF is planned? {#What-other-future-work-on-netCDF-is-planned} +----------------- + +Issues, bugs, and plans for netCDF are maintained in the Unidata issue +tracker sites for +[netCDF-C](https://www.unidata.ucar.edu/jira/browse/NCF), [Common Data Model / NetCDF-Java](https://www.unidata.ucar.edu/jira/browse/CDM), +[netCDF-Fortran](https://www.unidata.ucar.edu/jira/browse/NCFORTRAN), +and [netCDF-CXX4](https://www.unidata.ucar.edu/jira/browse/NCXXF), and +[old netCDF-C++ +(deprecated)](https://www.unidata.ucar.edu/jira/browse/NCCPP). diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.am new file mode 100644 index 00000000000..3290059a118 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.am @@ -0,0 +1,65 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2005-2011, see the COPYRIGHT file for more information. +# This file builds the netcdf documentation. + +# These files will be included with the dist. +EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \ +mainpage.dox tutorial.dox guide.dox types.dox cdl.dox \ +architecture.dox internal.dox windows-binaries.md \ +building-with-cmake.md CMakeLists.txt groups.dox install.md notes.md \ +install-fortran.md all-error-codes.md credits.md auth.md \ +obsolete/fan_utils.html bestpractices.md filters.md indexing.dox \ +inmemory.md DAP2.dox attribute_conventions.md FAQ.md \ +file_format_specifications.md known_problems.md COPYRIGHT.dox \ +user_defined_formats.md inmeminternal.dox DAP4.md DAP4.dox + +# Turn off parallel builds in this directory. +.NOTPARALLEL: + +# To build documentation you must have M4 in their path. +M4 = m4 + +SUBDIRS = images + +if BUILD_DOCS + +# Copy man pages. +#directory = $(top_srcdir)/docs/man/man3/ +#dist_man_MANS = $(docsdirectory)/man_page_1.3 $(directory)/man_page_2.3 +# $(directory)/man_page_1.3: doxyfile.stamp +# $(directory)/man_page_2.3: doxyfile.stamp + +# Note: in order to work with distcheck, +# the Doxyfile needs to be preprocessed +# to insert actual location of $(srcdir) +#BUILT_SOURCES = Doxyfile.tmp + +#Doxyfile.tmp: Doxyfile +# sed -e 's|$$[({]rootdir[})]|$(abs_top_srcdir)|g' ./Doxyfile.tmp + +all-local: doxyfile.stamp +clean-local: + rm -rf $(top_builddir)/docs/man + rm -rf $(top_builddir)/docs/html + rm -rf $(top_builddir)/docs/latex + rm -rf $(top_builddir)/docs/latex_main +endif + +# Timestamp to prevent rebuilds. +# We must do this twice. The first time +# builds the tag files. The second time +# includes them in the documentation. + +doxyfile.stamp: + $(DOXYGEN) Doxyfile \ + cp auth.md obsolete/fan_utils.html html + +CLEANFILES = doxyfile.stamp + +# This builds the docs from source, if necessary, and tars up +# everything needed for the website. Run this and copy the resulting +# tarball to the /contents/netcdf/docs directory to update the on-line +# docs. +web-tarball: doxyfile.stamp + cd html; tar cf ../netcdf_docs.tar * + gzip -f netcdf_docs.tar diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.in new file mode 100644 index 00000000000..3860bc1e893 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/Makefile.in @@ -0,0 +1,795 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2005-2011, see the COPYRIGHT file for more information. +# This file builds the netcdf documentation. +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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 +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = Doxyfile +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ + +# These files will be included with the dist. +EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \ +mainpage.dox tutorial.dox guide.dox types.dox cdl.dox \ +architecture.dox internal.dox windows-binaries.md \ +building-with-cmake.md CMakeLists.txt groups.dox install.md notes.md \ +install-fortran.md all-error-codes.md credits.md auth.md \ +obsolete/fan_utils.html bestpractices.md filters.md indexing.dox \ +inmemory.md DAP2.dox attribute_conventions.md FAQ.md \ +file_format_specifications.md known_problems.md COPYRIGHT.dox \ +user_defined_formats.md inmeminternal.dox DAP4.md DAP4.dox + + +# To build documentation you must have M4 in their path. +M4 = m4 +SUBDIRS = images +CLEANFILES = doxyfile.stamp +all: all-recursive + +.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 --ignore-deps docs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps docs/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +@BUILD_DOCS_FALSE@all-local: +all-am: Makefile all-local +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + 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." +@BUILD_DOCS_FALSE@clean-local: +check-valgrind: check-valgrind-recursive + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-recursive + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-recursive + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-recursive + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-recursive + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-am check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-generic clean-libtool clean-local cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Turn off parallel builds in this directory. +.NOTPARALLEL: + +# Copy man pages. +#directory = $(top_srcdir)/docs/man/man3/ +#dist_man_MANS = $(docsdirectory)/man_page_1.3 $(directory)/man_page_2.3 +# $(directory)/man_page_1.3: doxyfile.stamp +# $(directory)/man_page_2.3: doxyfile.stamp + +# Note: in order to work with distcheck, +# the Doxyfile needs to be preprocessed +# to insert actual location of $(srcdir) +#BUILT_SOURCES = Doxyfile.tmp + +#Doxyfile.tmp: Doxyfile +# sed -e 's|$$[({]rootdir[})]|$(abs_top_srcdir)|g' ./Doxyfile.tmp + +@BUILD_DOCS_TRUE@all-local: doxyfile.stamp +@BUILD_DOCS_TRUE@clean-local: +@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/man +@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/html +@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/latex +@BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/latex_main + +# Timestamp to prevent rebuilds. +# We must do this twice. The first time +# builds the tag files. The second time +# includes them in the documentation. + +doxyfile.stamp: + $(DOXYGEN) Doxyfile \ + cp auth.md obsolete/fan_utils.html html + +# This builds the docs from source, if necessary, and tars up +# everything needed for the website. Run this and copy the resulting +# tarball to the /contents/netcdf/docs directory to update the on-line +# docs. +web-tarball: doxyfile.stamp + cd html; tar cf ../netcdf_docs.tar * + gzip -f netcdf_docs.tar + +# 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/contrib/netcdf/netcdf-c-4.6.2/docs/all-error-codes.md b/contrib/netcdf/netcdf-c-4.6.2/docs/all-error-codes.md new file mode 100644 index 00000000000..78829c2ab4f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/all-error-codes.md @@ -0,0 +1,188 @@ +NetCDF Error Code Listing {#nc-error-codes} +================== + +\tableofcontents + +# NetCDF-3 Error Codes {#nc3-error-codes} + +~~~~ +#define NC_NOERR 0 // No Error +#define NC_EBADID (-33) // Not a netcdf id +#define NC_ENFILE (-34) // Too many netcdfs open +#define NC_EEXIST (-35) // netcdf file exists && NC_NOCLOBBER +#define NC_EINVAL (-36) // Invalid Argument +#define NC_EPERM (-37) // Write to read only +#define NC_ENOTINDEFINE (-38) // Operation not allowed in data mode +#define NC_EINDEFINE (-39) // Operation not allowed in define mode +#define NC_EINVALCOORDS (-40) // Index exceeds dimension bound +#define NC_EMAXDIMS (-41) // NC_MAX_DIMS exceeded [not enforced after 4.5.0] +#define NC_ENAMEINUSE (-42) // String match to name in use +#define NC_ENOTATT (-43) // Attribute not found +#define NC_EMAXATTS (-44) // NC_MAX_ATTRS exceeded [not enforced after 4.5.0] +#define NC_EBADTYPE (-45) // Not a netcdf data type +#define NC_EBADDIM (-46) // Invalid dimension id or name +#define NC_EUNLIMPOS (-47) // NC_UNLIMITED in the wrong index +#define NC_EMAXVARS (-48) // NC_MAX_VARS exceeded [not enforced after 4.5.0] +#define NC_ENOTVAR (-49) // Variable not found +#define NC_EGLOBAL (-50) // Action prohibited on NC_GLOBAL varid +#define NC_ENOTNC (-51) // Not a netcdf file +#define NC_ESTS (-52) // In Fortran, string too short +#define NC_EMAXNAME (-53) // NC_MAX_NAME exceeded +#define NC_EUNLIMIT (-54) // NC_UNLIMITED size already in use +#define NC_ENORECVARS (-55) // nc_rec op when there are no record vars +#define NC_ECHAR (-56) // Attempt to convert between text & numbers +#define NC_EEDGE (-57) // Edge+start exceeds dimension bound +#define NC_ESTRIDE (-58) // Illegal stride +#define NC_EBADNAME (-59) // Attribute or variable name contains illegal characters + +// N.B. following must match value in ncx.h + +#define NC_ERANGE (-60) // Math result not representable +#define NC_ENOMEM (-61) // Memory allocation (malloc) failure +#define NC_EVARSIZE (-62) // One or more variable sizes violate format constraints +#define NC_EDIMSIZE (-63) // Invalid dimension size +#define NC_ETRUNC (-64) // File likely truncated or possibly corrupted +#define NC_EAXISTYPE (-65) // Unknown axis type +~~~~ + +# DAP Error Codes {#dap-error-codes} + +If the DAP client is enabled, then the following additional error codes +may occur. + +~~~~ +#define NC_EDAP (-66) // Generic DAP error +#define NC_ECURL (-67) // Generic libcurl error +#define NC_EIO (-68) // Generic IO error +#define NC_ENODATA (-69) // Attempt to access variable with no data +#define NC_EDAPSVC (-70) // DAP Server side error +#define NC_EDAS (-71) // Malformed or inaccessible DAS +#define NC_EDDS (-72) // Malformed or inaccessible DDS +#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS +#define NC_EDAPURL (-74) // Malformed DAP URL +#define NC_EDAPCONSTRAINT (-75) // Malformed DAP Constraint +#define NC_ETRANSLATION (-76) // Untranslatable construct +#define NC_EACCESS (-77) // Access Failure +#define NC_EAUTH (-78) // Authorization Failure +~~~~ + +# Misc. additional errors +~~~~ +#define NC_ENOTFOUND (-90) // No such file +#define NC_ECANTREMOVE (-91) // Cannot remove file +#define NC_EINTERNAL (-92) // NetCDF Library Internal Error +#define NC_EPNETCDF (-93) // Error at PnetCDF layer +~~~~ + +# NetCDF-4 Error Codes {#nc4-error-codes} + +NetCDF-4 uses all error codes from NetCDF-3 (see section [NetCDF-3 Error +Codes](#NetCDF_002d3-Error-Codes)). The following additional error codes +were added for new errors unique to netCDF-4. + +~~~~ +#define NC_EHDFERR (-101) // Error at HDF5 layer. +#define NC_ECANTREAD (-102) // Cannot read. +#define NC_ECANTWRITE (-103) // Cannot write. +#define NC_ECANTCREATE (-104) // Cannot create. +#define NC_EFILEMETA (-105) // Problem with file metadata. +#define NC_EDIMMETA (-106) // Problem with dimension metadata. +#define NC_EATTMETA (-107) // Problem with attribute metadata. +#define NC_EVARMETA (-108) // Problem with variable metadata. +#define NC_ENOCOMPOUND (-109) // Not a compound type. +#define NC_EATTEXISTS (-110) // Attribute already exists. +#define NC_ENOTNC4 (-111) // Attempting netcdf-4 operation on netcdf-3 file. +#define NC_ESTRICTNC3 (-112) // Attempting netcdf-4 operation on strict nc3 netcdf-4 file. +#define NC_ENOTNC3 (-113) // Attempting netcdf-3 operation on netcdf-4 file. +#define NC_ENOPAR (-114) // Parallel operation on file opened for non-parallel access. +#define NC_EPARINIT (-115) // Error initializing for parallel access. +#define NC_EBADGRPID (-116) // Bad group ID. +#define NC_EBADTYPID (-117) // Bad type ID. +#define NC_ETYPDEFINED (-118) // Type has already been defined and may not be edited. +#define NC_EBADFIELD (-119) // Bad field ID. +#define NC_EBADCLASS (-120) // Bad class. +#define NC_EMAPTYPE (-121) // Mapped access for atomic types only. +#define NC_ELATEFILL (-122) // Attempt to define fill value when data already exists. +#define NC_ELATEDEF (-123) // Attempt to define var properties, like deflate, after enddef. +#define NC_EDIMSCALE (-124) // Problem with HDF5 dimscales. +#define NC_ENOGRP (-125) // No group found. +#define NC_ESTORAGE (-126) // Cannot specify both contiguous and chunking. +#define NC_EBADCHUNK (-127) // Bad chunksize. +#define NC_ENOTBUILT (-128) // Attempt to use feature that was not turned on when netCDF was built. +#define NC_EDISKLESS (-129) // Error in using diskless access. +#define NC_ECANTEXTEND (-130) // Attempt to extend dataset during ind. I/O operation. +#define NC_EMPI (-131) // MPI operation failed. +#define NC_EFILTER (-132) // Filter operation failed. +#define NC_ERCFILE (-133) // RC file failure +#define NC_ENULLPAD (-134) // Header Bytes not Null-Byte padded +#define NC_EINMEMORY (-135) // In-memory file error +~~~~ + +# PnetCDF Error Codes {#pnetcdf-error-codes} + +~~~~ +#define NC_ESMALL (-201) // size of MPI_Offset too small for format +#define NC_ENOTINDEP (-202) // Operation not allowed in collective data mode +#define NC_EINDEP (-203) // Operation not allowed in independent data mode +#define NC_EFILE (-204) // Unknown error in file operation +#define NC_EREAD (-205) // Unknown error in reading file +#define NC_EWRITE (-206) // Unknown error in writing to file +#define NC_EOFILE (-207) // file open/creation failed +#define NC_EMULTITYPES (-208) // Multiple etypes used in MPI datatype +#define NC_EIOMISMATCH (-209) // Input/Output data amount mismatch +#define NC_ENEGATIVECNT (-210) // Negative count is specified +#define NC_EUNSPTETYPE (-211) // Unsupported etype in memory MPI datatype +#define NC_EINVAL_REQUEST (-212) // invalid nonblocking request ID +#define NC_EAINT_TOO_SMALL (-213) // MPI_Aint not large enough to hold requested value +#define NC_ENOTSUPPORT (-214) // feature is not yet supported +#define NC_ENULLBUF (-215) // trying to attach a NULL buffer +#define NC_EPREVATTACHBUF (-216) // previous attached buffer is found +#define NC_ENULLABUF (-217) // no attached buffer is found +#define NC_EPENDINGBPUT (-218) // pending bput is found, cannot detach buffer +#define NC_EINSUFFBUF (-219) // attached buffer is too small +#define NC_ENOENT (-220) // File does not exist +#define NC_EINTOVERFLOW (-221) // Overflow when type cast to 4-byte integer +#define NC_ENOTENABLED (-222) // feature is not enabled +#define NC_EBAD_FILE (-223) // Invalid file name (e.g., path name too long) +#define NC_ENO_SPACE (-224) // Not enough space +#define NC_EQUOTA (-225) // Quota exceeded +#define NC_ENULLSTART (-226) // argument start is a NULL pointer +#define NC_ENULLCOUNT (-227) // argument count is a NULL pointer +#define NC_EINVAL_CMODE (-228) // Invalid file create mode +#define NC_ETYPESIZE (-229) // MPI derived data type size error (bigger than the variable size) +#define NC_ETYPE_MISMATCH (-230) // element type of the MPI derived data type mismatches the variable type +#define NC_ETYPESIZE_MISMATCH (-231) // file type size mismatches buffer type size +#define NC_ESTRICTCDF2 (-232) // Attempting CDF-5 operation on CDF-2 file +#define NC_ENOTRECVAR (-233) // Attempting operation only for record variables +#define NC_ENOTFILL (-234) // Attempting to fill a variable when its fill mode is off +#define NC_EINVAL_OMODE (-235) // Invalid file open mode +#define NC_EPENDING (-236) // Pending nonblocking request is found at file close +#define NC_EMAX_REQ (-237) // Size of I/O request exceeds INT_MAX +#define NC_EBADLOG (-238) // Unrecognized log file format +#define NC_EFLUSHED (-239) // Nonblocking request has already been flushed to the PFS. It is too late to cancel +#define NC_EMULTIDEFINE (-250) // NC definitions inconsistent among processes +#define NC_EMULTIDEFINE_OMODE (-251) // inconsistent file open modes among processes +#define NC_EMULTIDEFINE_DIM_NUM (-252) // inconsistent number of dimensions +#define NC_EMULTIDEFINE_DIM_SIZE (-253) // inconsistent size of dimension +#define NC_EMULTIDEFINE_DIM_NAME (-254) // inconsistent dimension names +#define NC_EMULTIDEFINE_VAR_NUM (-255) // inconsistent number of variables +#define NC_EMULTIDEFINE_VAR_NAME (-256) // inconsistent variable name +#define NC_EMULTIDEFINE_VAR_NDIMS (-257) // inconsistent variable number of dimensions +#define NC_EMULTIDEFINE_VAR_DIMIDS (-258) // inconsistent variable dimension IDs +#define NC_EMULTIDEFINE_VAR_TYPE (-259) // inconsistent variable data type +#define NC_EMULTIDEFINE_VAR_LEN (-260) // inconsistent variable size +#define NC_EMULTIDEFINE_NUMRECS (-261) // inconsistent number of records +#define NC_EMULTIDEFINE_VAR_BEGIN (-262) // inconsistent variable file begin offset (internal use) +#define NC_EMULTIDEFINE_ATTR_NUM (-263) // inconsistent number of attributes +#define NC_EMULTIDEFINE_ATTR_SIZE (-264) // inconsistent memory space used by attribute (internal use) +#define NC_EMULTIDEFINE_ATTR_NAME (-265) // inconsistent attribute name +#define NC_EMULTIDEFINE_ATTR_TYPE (-266) // inconsistent attribute type +#define NC_EMULTIDEFINE_ATTR_LEN (-267) // inconsistent attribute length +#define NC_EMULTIDEFINE_ATTR_VAL (-268) // inconsistent attribute value +#define NC_EMULTIDEFINE_FNC_ARGS (-269) // inconsistent function arguments used in collective API +#define NC_EMULTIDEFINE_FILL_MODE (-270) // inconsistent dataset fill mode +#define NC_EMULTIDEFINE_VAR_FILL_MODE (-271) // inconsistent variable fill mode +#define NC_EMULTIDEFINE_VAR_FILL_VALUE (-272) // inconsistent variable fill value +#define NC_EMULTIDEFINE_CMODE (-273) // inconsistent file create modes among processes +~~~~ + diff --git a/contrib/netcdf/4.4.1.1/docs/architecture.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/architecture.dox similarity index 83% rename from contrib/netcdf/4.4.1.1/docs/architecture.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/architecture.dox index 2f1588cfa3d..c1bc16de237 100644 --- a/contrib/netcdf/4.4.1.1/docs/architecture.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/architecture.dox @@ -10,7 +10,7 @@ The netCDF C-based libraries depend on a core C library and some externally deve - NetCDF-Java is an independent implementation, not shown here - C-based 3rd-party netCDF APIs for other languages include Python, Ruby, Perl, Fortran-2003, MATLAB, IDL, and R - Libraries that don't support netCDF-4 include Perl and old C++ -- 3rd party libraries are optional (HDF5, HDF4, zlib, szlib, pnetcdf, libcurl), depending on what features are needed and how netCDF is configured +- 3rd party libraries are optional (HDF5, HDF4, zlib, szlib, PnetCDF, libcurl), depending on what features are needed and how netCDF is configured - "Apps" in the above means applications, not mobile apps! */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/attribute_conventions.md b/contrib/netcdf/netcdf-c-4.6.2/docs/attribute_conventions.md new file mode 100644 index 00000000000..884f89f3cea --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/attribute_conventions.md @@ -0,0 +1,197 @@ +Appendix A: Attribute Conventions {#attribute_conventions} +===================== + +Attribute conventions are assumed by some netCDF generic applications, e.g., ‘units’ as the name for a string attribute that gives the units for a netCDF variable. + +It is strongly recommended that applicable conventions be followed unless there are good reasons for not doing so. Below we list the names and meanings of recommended standard attributes that have proven useful. Note that some of these (e.g. units, valid_range, scale_factor) assume numeric data and should not be used with character data. + + Attribute names commencing with underscore ('_') are reserved for use by the netCDF library. + +# Conventions + + +`units` + +> A character string that specifies the units used for the variable's data. Unidata has developed a freely-available library of routines to convert between character string and binary forms of unit specifications and to perform various useful operations on the binary forms. This library is used in some netCDF applications. Using the recommended units syntax permits data represented in conformable units to be automatically converted to common units for arithmetic operations. For more information see Units. + + +`long_name` + +> A long descriptive name. This could be used for labeling plots, for example. If a variable has no long_name attribute assigned, the variable name should be used as a default. + +`_FillValue` + +> The _FillValue attribute specifies the fill value used to pre-fill disk space allocated to the variable. Such pre-fill occurs unless nofill mode is set using nc_set_fill(). The fill value is returned when reading values that were never written. If _FillValue is defined then it should be scalar and of the same type as the variable. If the variable is packed using scale_factor and add_offset attributes (see below), the _FillValue attribute should have the data type of the packed data. + +

+ +> It is not necessary to define your own _FillValue attribute for a variable if the default fill value for the type of the variable is adequate. However, use of the default fill value for data type byte is not recommended. Note that if you change the value of this attribute, the changed value applies only to subsequent writes; previously written data are not changed. + +

+ +> Generic applications often need to write a value to represent undefined or missing values. The fill value provides an appropriate value for this purpose because it is normally outside the valid range and therefore treated as missing when read by generic applications. It is legal (but not recommended) for the fill value to be within the valid range. + +> **Note that if you change the value of this attribute, the changed value applies only to subsequent writes; previously written data are not changed.** + +`_NoFill` + +> This attribute is not treated in any special way by the library or conforming generic application, but it is interpreted by the `ncgen` utility when converting a CDL file to a binary netCDF files. It is the equivalent of applying `nc_set_fill(ncid, NC_NOFILL, null)`. + +`missing_value` + +> This attribute is not treated in any special way by the library or conforming generic applications, but is often useful documentation and may be used by specific applications. The missing_value attribute can be a scalar or vector containing values indicating missing data. These values should all be outside the valid range so that generic applications will treat them as missing. + +

+ +> When scale_factor and add_offset are used for packing, the value(s) of the missing_value attribute should be specified in the domain of the data in the file (the packed data), so that missing values can be detected before the scale_factor and add_offset are applied. + + +`valid_min` + +> A scalar specifying the minimum valid value for this variable. + +`valid_max` + +> A scalar specifying the maximum valid value for this variable. + +`valid_range` + + +> A vector of two numbers specifying the minimum and maximum valid values for this variable, equivalent to specifying values for both valid_min and valid_max attributes. Any of these attributes define the valid range. The attribute valid_range must not be defined if either valid_min or valid_max is defined. + +

+ +> Generic applications should treat values outside the valid range as missing. The type of each valid_range, valid_min and valid_max attribute should match the type of its variable (except that for byte data, these can be of a signed integral type to specify the intended range). + +

+ +> If neither valid_min, valid_max nor valid_range is defined then generic applications should define a valid range as follows. If the data type is byte and _FillValue is not explicitly defined, then the valid range should include all possible values. Otherwise, the valid range should exclude the _FillValue (whether defined explicitly or by default) as follows. If the _FillValue is positive then it defines a valid maximum, otherwise it defines a valid minimum. For integer types, there should be a difference of 1 between the _FillValue and this valid minimum or maximum. For floating point types, the difference should be twice the minimum possible (1 in the least significant bit) to allow for rounding error. + +

+ +> If the variable is packed using scale_factor and add_offset attributes (see below), the _FillValue, missing_value, valid_range, valid_min, or valid_max attributes should have the data type of the packed data. + +`scale_factor` + +> If present for a variable, the data are to be multiplied by this factor after the data are read by the application that accesses the data. + +> If valid values are specified using the valid_min, valid_max, valid_range, or _FillValue attributes, those values should be specified in the domain of the data in the file (the packed data), so that they can be interpreted before the scale_factor and add_offset are applied. + +`add_offset` + +> If present for a variable, this number is to be added to the data after it is read by the application that accesses the data. If both scale_factor and add_offset attributes are present, the data are first scaled before the offset is added. The attributes scale_factor and add_offset can be used together to provide simple data compression to store low-resolution floating-point data as small integers in a netCDF dataset. When scaled data are written, the application should first subtract the offset and then divide by the scale factor, rounding the result to the nearest integer to avoid a bias caused by truncation towards zero. + +

+ +> When scale_factor and add_offset are used for packing, the associated variable (containing the packed data) is typically of type byte or short, whereas the unpacked values are intended to be of type float or double. The attributes scale_factor and add_offset should both be of the type intended for the unpacked data, e.g. float or double. + +`Coordinates` + +> Following the CF (Climate and Forecast) conventions for netCDF metadata, we define an auxiliary coordinate variable as any netCDF variable that contains coordinate data, but is not a coordinate variable (See Coordinate Variables). Unlike coordinate variables, there is no relationship between the name of an auxiliary coordinate variable and the name(s) of its dimension(s). + +

+ +> The value of the coordinates attribute is a blank separated list of names of auxiliary coordinate variables and (optionally) coordinate variables. There is no restriction on the order in which the variable names appear in the coordinates attribute string. + +`signedness` + +> Deprecated attribute, originally designed to indicate whether byte values should be treated as signed or unsigned. The attributes valid_min and valid_max may be used for this purpose. For example, if you intend that a byte variable store only non-negative values, you can use valid_min = 0 and valid_max = 255. This attribute is ignored by the netCDF library. + +`C_format` + +> A character array providing the format that should be used by C applications to print values for this variable. For example, if you know a variable is only accurate to three significant digits, it would be appropriate to define the C_format attribute as "%.3g". The ncdump utility program uses this attribute for variables for which it is defined. The format applies to the scaled (internal) type and value, regardless of the presence of the scaling attributes scale_factor and add_offset. + +`FORTRAN_format` + +> A character array providing the format that should be used by FORTRAN applications to print values for this variable. For example, if you know a variable is only accurate to three significant digits, it would be appropriate to define the FORTRAN_format attribute as "(G10.3)". + +`title` + +> A global attribute that is a character array providing a succinct description of what is in the dataset. + +`history` + +> A global attribute for an audit trail. This is a character array with a line for each invocation of a program that has modified the dataset. Well-behaved generic netCDF applications should append a line containing: date, time of day, user name, program name and command arguments. + +`Conventions` + +> If present, 'Conventions' is a global attribute that is a character array for the name of the conventions followed by the dataset. Originally, these conventions were named by a string that was interpreted as a directory name relative to the directory /pub/netcdf/Conventions/ on the host ftp.unidata.ucar.edu. The web page http://www.unidata.ucar.edu/netcdf/conventions.html is now the preferred and authoritative location for registering a URI reference to a set of conventions maintained elsewhere. The FTP site will be preserved for compatibility with existing references, but authors of new conventions should submit a request to support-netcdf@unidata.ucar.edu for listing on the Unidata conventions web page. + +

+ +> It may be convenient for defining institutions and groups to use a hierarchical structure for general conventions and more specialized conventions. For example, if a group named NUWG agrees upon a set of conventions for dimension names, variable names, required attributes, and netCDF representations for certain discipline-specific data structures, they may store a document describing the agreed-upon conventions in a dataset in the NUWG/ subdirectory of the Conventions directory. Datasets that followed these conventions would contain a global Conventions attribute with value "NUWG". + +

+ +> Later, if the group agrees upon some additional conventions for a specific subset of NUWG data, for example time series data, the description of the additional conventions might be stored in the NUWG/Time_series/ subdirectory, and datasets that adhered to these additional conventions would use the global Conventions attribute with value "NUWG/Time_series", implying that this dataset adheres to the NUWG conventions and also to the additional NUWG time-series conventions. + +

+ +> It is possible for a netCDF file to adhere to more than one set of conventions, even when there is no inheritance relationship among the conventions. In this case, the value of the 'Conventions' attribute may be a single text string containing a list of the convention names separated by blank space (recommended) or commas (if a convention name contains blanks). + +

+ +> Typical conventions web sites will include references to documents in some form agreed upon by the community that supports the conventions and examples of netCDF file structures that follow the conventions. + +# Provenance Attributes + +These attributes can occur in netCDF enhanced (netcdf-4) files beginning +with version 4.4.1. They all are associated with the root group as +global attributes, although only _NCProperties is actually stored in the +file; the others are computed. They are hidden in the sense that they +have no attribute number, so they can only be accessed thru the netcdf-C +API calls via the name. Additionally, these attributes will not be +counted in the number of global attributes in the root group. + +The simplest way to view these attributes is to use the -s flag to the +ncdump command. Alternatively, one can use the following API calls to +obtain information. +- nc_inq_att +- nc_inq_atttype +- nc_inq_attlen +- nc_get_att (and derivatives) + +Using the following API calls will fail. +- nc_inq_attid +- nc_inq_attname +- nc_copy_att +- nc_rename_att +- nc_del_att +- nc_put_att (and derivatives) + +`_NCProperties` + +> This attribute is persistent in the file, but hidden. It is inserted in the file at creation time and is never modified after that point. The type of this attribute is currently NC_CHAR. There two versions of this property, but both have the general form +>> version=n,key=value,key=value...,key=value +> where the version number n is either 1 or 2. + +> Version 1 has two (key,value) pairs (after than the initial version pair) +> - netcdfversion={netcdfversion} where the version number is the version for the netcdf library used at creation time. +> - hdf5version={hdf5fversion} where the version number is the version for the hdf5 library used at creation time. +> - The version for the HDF5 library used at creation time. +> - Note that for version 1, the separator character is '|' instead of ',' +> - Occurrences of '=' or '|' in the name or value are disallowed. + +> Version 2 has an unlimited set of (key,value) pairs (after the initial version pair). By convention (but unenforced), the first pair is the name and version of the primary library used to create this file. For netcdf, it has the form _netcdf={version}_. The remaining fields are by convention as follows. +> - If the primary build library is netcdf, then the second pair is of the form _hdf5={version}. The remaining pairs consist of a combination of the name and version of important supporting libraries -- the libcurl version, for example -- plus an arbitrary set of pairs as specified by the _--with-ncproperties_ option to the ./configure command. Note that the argument to --with-ncproperties should be wrapped with double quotes, like this. +>> _./configure ... --with-ncproperties="key1=value,key2=value"_ +> +> Note the following for version 2. +> - The pair separator character was changed from '|' to ',' because of problems with bash, which did not like '|' in the --with-ncproperties value. +> - It is possible to include escaped characters using the standard '\' escape convention. + +`_SuperblockVersion` + +> This attribute is ephemeral in that it is computed by looking at the file's HDF5 superblock. +> It has this form: `_SuperBlockVersion = 0|1|2|3|...` +> The type of this attribute is NC_INT. + +`_IsNetcdf4` + +> This attribute is ephemeral in that it is computed by walking the metadata of the file looking for attributes specific to netCDF-4 files. + +> The _IsNetcdf4 attribute has the form: `_IsNetcdf4 = 0|1` +> where 1 means the file has various tags indicating it was produced thru the netcdf-4 API. +> The type of this attribute is NC_INT. + +> This attribute is computed by using the HDF5 API to walk the file to look for attributes specific to netcdf-4. False negatives are possible for a small subset of netcdf-4 files, especially those not containing dimensions. False positives are only possible by deliberate modifications to an existing HDF5 file thru the HDF5 API. For files with the _NCProperties attribute, this attribute is redundant. For files created prior to the introduction of the _NCProperties attribute, this may be a useful indicator of the provenance of the file. diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/auth.md b/contrib/netcdf/netcdf-c-4.6.2/docs/auth.md new file mode 100644 index 00000000000..66ae1a848c1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/auth.md @@ -0,0 +1,523 @@ +NetCDF Authorization Support +====================================== + + + +NetCDF Authorization Support {#auth} +==================================== + +[TOC] + +## Introduction {#auth_intro} + +netCDF can support user authorization using the facilities provided by the curl +library. This includes basic password authentication as well as +certificate-based authorization. + +At the moment, this document only applies to DAP2 and DAP4 access +because they are (for now) the only parts of the netCDF-C library +that uses libcurl. + +With some exceptions (e.g. see the section on redirection) +The libcurl authorization mechanisms can be accessed in two ways + +1. Inserting the username and password into the url, or +2. Accessing information from a so-called _rc_ file named either + `.daprc` or `.dodsrc` + +## URL-Based Authentication {#auth_url} + +For simple password based authentication, it is possible to +directly insert the username and the password into a url in this form. + + http://username:password@host/... + +This username and password will be used if the server asks for +authentication. Note that only simple password authentication +is supported in this format. + +Specifically note that [redirection-based](#REDIR) +authorization may work with this but it is a security risk. +This is because the username and password +may be sent to each server in the redirection chain. + +Note also that the `user:password` form may contain characters that must be +escaped. See the password escaping section to see +how to properly escape the user and password. + +## RC File Authentication {#auth_dodsrc} +The netcdf library supports an _rc_ file mechanism to allow the passing +of a number of parameters to libnetcdf and libcurl. +Locating the _rc_ file is a multi-step process. + +### Search Order + +The file must be called one of the following names: +".daprc" or ".dodsrc". +If both ".daprc" and ".dodsrc" exist, then +the ".daprc" file will take precedence. + +It is strongly suggested that you pick one of the two names +and use it always. Otherwise you may observe unexpected results +when the netcdf-c library finds one that you did not intend. + +The search for an _rc_ file looks in the following places in this order. + +1. Check for the environment variable named _DAPRCFILE_. + This will specify the full path for the _rc_ file + (not just the containing directory). +2. Search the current working directory (`./`) looking + for (in order) .daprc or .dodsrc. +3. Search the HOME directory (`$HOME`) looking + for (in order) .daprc or .dodsrc. The HOME environment + variable is used to define the directory in which to search. + +It is strongly suggested that you pick a uniform location +and use it always. Otherwise you may observe unexpected results +when the netcdf-c library get an rc file you did not expect. + +### RC File Format + +The rc file format is a series of lines of the general form: + + []= + +where the bracket-enclosed host:port is optional. + +### URL Constrained RC File Entries + +Each line of the rc file can begin with +a host+port enclosed in square brackets. +The form is "host:port". +If the port is not specified +then the form is just "host". +The reason that more of the url is not used is that +libcurl's authorization grain is not any finer than host level. + +Examples. + + [remotetest.unidata.ucar.edu]HTTP.VERBOSE=1 + +or + + [fake.ucar.edu:9090]HTTP.VERBOSE=0 + +If the url request from, say, the _netcdf_open_ method +has a host+port matching one of the prefixes in the rc file, then +the corresponding entry will be used, otherwise ignored. +This means that an entry with a matching host+port will take +precedence over an entry without a host+port. + +For example, the URL + + http://remotetest.unidata.ucar.edu/thredds/dodsC/testdata/testData.nc + +will have HTTP.VERBOSE set to 1 because its host matches the example above. + +Similarly, + + http://fake.ucar.edu:9090/dts/test.01 + +will have HTTP.VERBOSE set to 0 because its host+port matches the example above. + +## Authorization-Related Keys {#auth_keys} + +The currently defined set of authorization-related keys are as follows. +The second column is the affected curl_easy_setopt option(s), if any +(see reference #1). + + + + + + + + + + + + + + + + + +
KeyAffected curl_easy_setopt OptionsNotes
HTTP.COOKIEJARCURLOPT_COOKIEJAR
HTTP.COOKIEFILECURLOPT_COOKIEJARAlias for CURLOPT_COOKIEJAR
HTTP.PROXY.SERVERCURLOPT_PROXY, CURLOPT_PROXYPORT, CURLOPT_PROXYUSERPWD
HTTP.PROXY_SERVERCURLOPT_PROXY, CURLOPT_PROXYPORT, CURLOPT_PROXYUSERPWDDecprecated: use HTTP.PROXY.SERVER
HTTP.SSL.CERTIFICATECURLOPT_SSLCERT
HTTP.SSL.KEYCURLOPT_SSLKEY
HTTP.SSL.KEYPASSWORDCURLOPT_KEYPASSWORD
HTTP.SSL.CAINFOCURLOPT_CAINFO
HTTP.SSL.CAPATHCURLOPT_CAPATH
HTTP.SSL.VERIFYPEERCURLOPT_SSL_VERIFYPEER
HTTP.SSL.VALIDATECURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
HTTP.CREDENTIALS.USERPASSWORDCURLOPT_USERPASSWORD
HTTP.CREDENTIALS.USERNAMECURLOPT_USERNAME
HTTP.CREDENTIALS.PASSWORDCURLOPT_PASSWORD
HTTP.NETRCN.A.Specify path of the .netrc file
+ +### Password Authentication + +The key +HTTP.CREDENTIALS.USERPASSWORD +can be used to set the simple password authentication. +This is an alternative to setting it in the url. +The value must be of the form "username:password". +See the password escaping section +to see how this value must escape certain characters. +Also see redirection authorization +for important additional information. + +The pair of keys +HTTP.CREDENTIALS.USERNAME and HTTP.CREDENTIALS.PASSWORD +can be used as an alternative to HTTP.CREDENTIALS.USERPASSWORD +to set the simple password authentication. +If present, they take precedence over HTTP.CREDENTIALS.USERPASSWORD. +The values do not need to be escaped. +See redirection authorization +for important additional information. + +### Cookie Jar + +The HTTP.COOKIEJAR key +specifies the name of file from which +to read cookies (CURLOPT_COOKIEJAR) and also +the file into which to store cookies (CURLOPT_COOKIEFILE). +The same value is used for both CURLOPT values. +It defaults to in-memory storage. +See [redirection authorization](#REDIR) +for important additional information. + +### Certificate Authentication + +HTTP.SSL.CERTIFICATE +specifies a file path for a file containing a PEM cerficate. +This is typically used for client-side authentication. + +HTTP.SSL.KEY is essentially the same as HTTP.SSL.CERTIFICATE +and should always have the same value. + +HTTP.SSL.KEYPASSWORD +specifies the password for accessing the HTTP.SSL.CERTIFICAT/HTTP.SSL.key file. + +HTTP.SSL.CAPATH +specifies the path to a directory containing +trusted certificates for validating server certificates. +See reference #2 for more info. + +HTTP.SSL.VALIDATE +is a boolean (1/0) value that if true (1) +specifies that the client should verify the server's presented certificate. + +HTTP.PROXY.SERVER +specifies the url for accessing the proxy: +e.g. *http://[username:password@]host[:port]* + +HTTP.PROXY_SERVER +deprecated; use HTTP.PROXY.SERVER + +HTTP.NETRC +specifies the absolute path of the .netrc file. +See [redirection authorization](#REDIR) +for information about using .netrc. + +## Password Escaping {#auth_userpwdescape} + +With current password rules, it is is not unlikely that the password +will contain characters that need to be escaped. Similarly, the user +may contain characters such as '@' that need to be escaped. To support this, +it is assumed that all occurrences of `user:password` use URL (i.e. %%XX) +escaping for at least the characters in the table below. + +The minimum set of characters that must be escaped depends on the location. +If the user+pwd is embedded in the URL, then '@' and ':' __must__ be escaped. +If the user+pwd is the value for +the HTTP.CREDENTIALS.USERPASSWORD key in the _rc_ file, then +':' __must__ be escaped. +Escaping should __not__ be used in the `.netrc` file nor in +HTTP.CREDENTIALS.USERNAME or HTTPCREDENTIALS.PASSWORD. + +The relevant escape codes are as follows. + + + + +
CharacterEscaped Form
'@'%40
':'%3a
+Additional characters can be escaped if desired. + +## Redirection-Based Authentication {#auth_redir} + +Some sites provide authentication by using a third party site +to do the authentication. Examples include ESG, URS, RDA, and most oauth2-based +systems. + +The process is usually as follows. + +1. The client contacts the server of interest (SOI), the actual data provider +using, typically _http_ protocol. +2. The SOI sends a redirect to the client to connect to the e.g. URS system +using the _https_ protocol (note the use of _https_ instead of _http_). +3. The client authenticates with URS. +4. URS sends a redirect (with authorization information) to send +the client back to the SOI to actually obtain the data. + +It turns out that libcurl, by default, uses the password in the +`.daprc` file (or from the url) for all connections that request +a password. This causes problems because only the the specific +redirected connection is the one that actually requires the password. +This is where the `.netrc` file comes in. Libcurl will use `.netrc` +for the redirected connection. It is possible to cause libcurl +to use the `.daprc` password always, but this introduces a +security hole because it may send the initial user+pwd to every +server in the redirection chain. +In summary, if you are using redirection, then you are +''strongly'' encouraged to create a `.netrc` file to hold the +password for the site to which the redirection is sent. + +The format of this `.netrc` file will contain lines that +typically look like this. + + machine mmmmmm login xxxxxx password yyyyyy + +where the machine, mmmmmm, is the hostname of the machine to +which the client is redirected for authorization, and the +login and password are those needed to authenticate on that machine. + +The location of the `.netrc` file can be specified by +putting the following line in your `.daprc`/`.dodsrc` file. + + HTTP.NETRC= + +If not specified, then libcurl will look first in the current +directory, and then in the HOME directory. + +One final note. In using this, you MUST +to specify a real file in the file system to act as the +cookie jar file (HTTP.COOKIEJAR) so that the +redirect site can properly pass back authorization information. + +## Client-Side Certificates {#auth_clientcerts} + +Some systems, notably ESG (Earth System Grid), requires +the use of client-side certificates, as well as being +[re-direction based](#REDIR). +This requires setting the following entries: + +- HTTP.COOKIEJAR — a file path for storing cookies across re-direction. +- HTTP.NETRC — the path to the netrc file. +- HTTP.SSL.CERTIFICATE — the file path for the client side certificate file. +- HTTP.SSL.KEY — this should have the same value as HTTP.SSL.CERTIFICATE. +- HTTP.SSL.CAPATH — the path to a "certificates" directory. +- HTTP.SSL.VALIDATE — force validation of the server certificate. + +Note that the first two are there to support re-direction based authentication. + +## References + +1. https://curl.haxx.se/libcurl/c/curl_easy_setopt.html +2. https://curl.haxx.se/docs/ssl-compared.html + +## Appendix A. All RC-File Keys {#auth_allkeys} + +For completeness, this is the list of all rc-file keys. +If this documentation is out of date with respect to the actual code, +the code is definitive. + + + + + + + + + + + + + + + + + + + + +
Keycurl_easy_setopt Option
HTTP.DEFLATECUROPT_DEFLATE
with value "deflate,gzip"
HTTP.VERBOSECUROPT_VERBOSE
HTTP.TIMEOUTCUROPT_TIMEOUT
HTTP.USERAGENTCUROPT_USERAGENT
HTTP.COOKIEJARCUROPT_COOKIEJAR
HTTP.COOKIE_JARCUROPT_COOKIEJAR
HTTP.PROXY.SERVERCURLOPT_PROXY,
CURLOPT_PROXYPORT,
CURLOPT_PROXYUSERPWD
HTTP.PROXY_SERVERCURLOPT_PROXY,
CURLOPT_PROXYPORT,
CURLOPT_PROXYUSERPWD
HTTP.SSL.CERTIFICATECUROPT_SSLCERT
HTTP.SSL.KEYCUROPT_SSLKEY
HTTP.SSL.KEYPASSWORDCUROPT_KEYPASSWORD
HTTP.SSL.CAINFOCUROPT_CAINFO
HTTP.SSL.CAPATHCUROPT_CAPATH
HTTP.SSL.VERIFYPEERCUROPT_SSL_VERIFYPEER
HTTP.CREDENTIALS.USERPASSWORDCUROPT_USERPASSWORD
HTTP.CREDENTIALS.USERNAMECUROPT_USERNAME
HTTP.CREDENTIALS.PASSWORDCUROPT_PASSWORD
HTTP.NETRCCURLOPT_NETRC,CURLOPT_NETRC_FILE
+ +## Appendix B. URS Access in Detail {#auth_ursdetail} + +It is possible to use the NASA Earthdata Login System (URS) +with netcdf by using using the process specified in the +[redirection based authorization section](#REDIR). +In order to access URS controlled datasets, however, it is necessary to +register as a user with NASA at this website (subject to change): + + https://uat.urs.earthdata.nasa.gov/ + +## Appendix C. ESG Access in Detail {#auth_esgdetail} + +It is possible to access Earth Systems Grid (ESG) datasets +from ESG servers through the netCDF API using the techniques +described in the section on [Client-Side Certificates](#CLIENTCERTS). + +In order to access ESG datasets, however, it is necessary to +register as a user with ESG and to setup your environment +so that proper authentication is established between an netcdf +client program and the ESG data server. Specifically, it +is necessary to use what is called "client-side keys" to +enable this authentication. Normally, when a client accesses +a server in a secure fashion (using "https"), the server +provides an authentication certificate to the client. +With client-side keys, the client must also provide a +certificate to the server so that the server can know with +whom it is communicating. Note that this section is subject +to change as ESG changes its procedures. + +The netcdf library uses the _curl_ library and it is that +underlying library that must be properly configured. + +### Terminology + +The key elements for client-side keys requires the constructions of +two "stores" on the client side. + +* Keystore - a repository to hold the client side key. +* Truststore - a repository to hold a chain of certificates +that can be used to validate the certificate +sent by the server to the client. + +The server actually has a similar set of stores, but the client +need not be concerned with those. + +### Initial Steps + +The first step is to obtain authorization from ESG. +Note that this information may evolve over time, and +may be out of date. +This discussion is in terms of BADC and NCSA. You will need +to substitute as necessary. + +1. Register at http://badc.nerc.ac.uk/register + to obtain access to badc and to obtain an openid, + which will looks something like: +

https://ceda.ac.uk/openid/Firstname.Lastname
+ +2. Ask BADC for access to whatever datasets are of interest. + +3. Obtain short term credentials at + _http://grid.ncsa.illinois.edu/myproxy/MyProxyLogon/_ + You will need to download and run the MyProxyLogon program. + This will create a keyfile in, typically, the directory ".globus". + The keyfile will have a name similar to this: "x509up_u13615" + The other elements in ".globus" are certificates to use in + validating the certificate your client gets from the server. + +4. Obtain the program source ImportKey.java + from this location: _http://www.agentbob.info/agentbob/79-AB.html_ + (read the whole page, it will help you understand the remaining steps). + +### Building the KeyStore + +You will have to modify the keyfile in the previous step +and then create a keystore and install the key and a certificate. +The commands are these: + + openssl pkcs8 -topk8 -nocrypt -in x509up_u13615 -inform PEM -out key.der -outform DER + openssl x509 -in x509up_u13615 -inform PEM -out cert.der -outform DER + java -classpath -Dkeypassword="" -Dkeystore=./ key.der cert.der + +Note, the file names "key.der" and "cert.der" can be whatever you choose. +It is probably best to leave the .der extension, though. + +### Building the TrustStore + +Building the truststore is a bit tricky because as provided, the +certificates in ".globus" need some massaging. See the script below +for the details. The primary command is this, which is executed for every +certificate, c, in globus. It sticks the certificate into the file +named "truststore" + + keytool -trustcacerts -storepass "password" -v -keystore "truststore" -importcert -file "${c}" + +### Running the C Client + +Refer to the section on [Client-Side Certificates](#CLIENTCERTS). +The keys specified there must be set in the rc file to support ESG access. + +- HTTP.COOKIEJAR=~/.dods_cookies +- HTTP.NETRC=~/.netrc +- HTTP.SSL.CERTIFICATE=~/esgkeystore +- HTTP.SSL.KEY=~/esgkeystore +- HTTP.SSL.CAPATH=~/.globus +- HTTP.SSL.VALIDATE=1 + +Of course, the file paths above are suggestions only; +you can modify as needed. +The HTTP.SSL.CERTIFICATE and HTTP.SSL.KEY +entries should have same value, which is the file path for the +certificate produced by MyProxyLogon. The HTTP.SSL.CAPATH entry +should be the path to the "certificates" directory produced by +MyProxyLogon. + +As noted, ESG also uses re-direction based authentication. +So, when it receives an initial connection from a client, it +redirects to a separate authentication server. When that +server has authenticated the client, it redirects back to +the original url to complete the request. + +### Script for creating Stores + +The following script shows in detail how to actually construct the key +and trust stores. It is specific to the format of the globus file +as it was when ESG support was first added. It may have changed +since then, in which case, you will need to seek some help +in fixing this script. It would help if you communicated +what you changed to the author so this document can be updated. + + #!/bin/sh -x + KEYSTORE="esgkeystore" + TRUSTSTORE="esgtruststore" + GLOBUS="globus" + TRUSTROOT="certificates" + CERT="x509up_u13615" + TRUSTROOTPATH="$GLOBUS/$TRUSTROOT" + CERTFILE="$GLOBUS/$CERT" + PWD="password" + + D="-Dglobus=$GLOBUS" + CCP="bcprov-jdk16-145.jar" + CP="./build:${CCP}" + JAR="myproxy.jar" + + # Initialize needed directories + rm -fr build + mkdir build + rm -fr $GLOBUS + mkdir $GLOBUS + rm -f $KEYSTORE + rm -f $TRUSTSTORE + + # Compile MyProxyCmd and ImportKey + javac -d ./build -classpath "$CCP" *.java + javac -d ./build ImportKey.java + + # Execute MyProxyCmd + java -cp "$CP myproxy.MyProxyCmd + + # Build the keystore + openssl pkcs8 -topk8 -nocrypt -in $CERTFILE -inform PEM -out key.der -outform DER + openssl x509 -in $CERTFILE -inform PEM -out cert.der -outform DER + java -Dkeypassword=$PWD -Dkeystore=./${KEYSTORE} -cp ./build ImportKey key.der cert.der + + # Clean up the certificates in the globus directory + for c in ${TRUSTROOTPATH}/*.0 ; do + alias=`basename $c .0` + sed -e '0,/---/d' <$c >/tmp/${alias} + echo "-----BEGIN CERTIFICATE-----" >$c + cat /tmp/${alias} >>$c + done + + # Build the truststore + for c in ${TRUSTROOTPATH}/*.0 ; do + alias=`basename $c .0` + echo "adding: $TRUSTROOTPATH/${c}" + echo "alias: $alias" + yes | keytool -trustcacerts -storepass "$PWD" -v -keystore ./$TRUSTSTORE -alias $alias -importcert -file "${c}" + done + exit + +## Point of Contact + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu +__Initial Version__: 11/21/2014
+__Last Revised__: 08/24/2017 + diff --git a/contrib/netcdf/4.4.1.1/docs/bestpractices.md b/contrib/netcdf/netcdf-c-4.6.2/docs/bestpractices.md similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/bestpractices.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/bestpractices.md diff --git a/contrib/netcdf/4.4.1.1/docs/building-with-cmake.md b/contrib/netcdf/netcdf-c-4.6.2/docs/building-with-cmake.md similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/building-with-cmake.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/building-with-cmake.md diff --git a/contrib/netcdf/4.4.1.1/docs/cdl.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/cdl.dox similarity index 98% rename from contrib/netcdf/4.4.1.1/docs/cdl.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/cdl.dox index 8b1d418b6ad..692ea4f808a 100644 --- a/contrib/netcdf/4.4.1.1/docs/cdl.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/cdl.dox @@ -44,7 +44,7 @@ double slash characters '//' on any line. A CDL description for a classic model file consists of three optional parts: dimensions, variables, and data. The variable part may contain variable declarations and attribute assignments. For the enhanced -model supported by netCDF-4, a CDL decription may also includes +model supported by netCDF-4, a CDL description may also include groups, subgroups, and user-defined types. A dimension is used to define the shape of one or more of the @@ -160,8 +160,8 @@ NetCDF-4 supports the additional primitive types: - ubyte Unsigned eight-bit integers. - ushort Unsigned 16-bit integers. - uint Unsigned 32-bit integers. -- int64 64-bit singed integers. -- uint64 Unsigned 64-bit singed integers. +- int64 64-bit signed integers. +- uint64 Unsigned 64-bit signed integers. - string Variable-length string of characters Except for the added data-type byte, CDL supports the same primitive diff --git a/contrib/netcdf/4.4.1.1/docs/credits.md b/contrib/netcdf/netcdf-c-4.6.2/docs/credits.md similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/credits.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/credits.md diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/file_format_specifications.md b/contrib/netcdf/netcdf-c-4.6.2/docs/file_format_specifications.md new file mode 100644 index 00000000000..0ed09aa45b0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/file_format_specifications.md @@ -0,0 +1,747 @@ +Appendix B. File Format Specifications {#file_format_specifications} +======================================= + +[TOC] + +\section classic_format_spec The NetCDF Classic Format Specification + +To present the format more formally, we use a BNF grammar notation. In +this notation: +- Non-terminals (entities defined by grammar rules) are in lower case. +- Terminals (atomic entities in terms of which the format +specification is written) are in upper case, and are specified +literally as US-ASCII characters within single-quote characters or are +described with text between angle brackets (‘\<’ and ‘\>’). +- Optional entities are enclosed between braces (‘[’ and ‘]’). +- A sequence of zero or more occurrences of an entity is denoted by + ‘[entity ...]’. +- A vertical line character (‘|’) separates alternatives. Alternation + has lower precedence than concatenation. +- Comments follow ‘//’ characters. +- A single byte that is not a printable character is denoted using a +hexadecimal number with the notation ‘\\xDD’, where each D is a +hexadecimal digit. +- A literal single-quote character is denoted by ‘\'’, and a literal +back-slash character is denoted by ‘\\’. + +Following the grammar, a few additional notes are included to specify +format characteristics that are impractical to capture in a BNF +grammar, and to note some special cases for implementers. Comments in +the grammar point to the notes and special cases, and help to clarify +the intent of elements of the format. + +

The Format in Detail

+ +
+     netcdf_file  = header  data
+     header       = magic  numrecs  dim_list  gatt_list  var_list
+     magic        = 'C'  'D'  'F'  VERSION
+     VERSION      = \\x01 |                      // classic format
+                    \\x02                        // 64-bit offset format
+     numrecs      = NON_NEG | STREAMING         // length of record dimension
+     dim_list     = ABSENT | NC_DIMENSION  nelems  [dim ...]
+     gatt_list    = att_list                    // global attributes
+     att_list     = ABSENT | NC_ATTRIBUTE  nelems  [attr ...]
+     var_list     = ABSENT | NC_VARIABLE   nelems  [var ...]
+     ABSENT       = ZERO  ZERO                  // Means list is not present
+     ZERO         = \\x00 \\x00 \\x00 \\x00         // 32-bit zero
+     NC_DIMENSION = \\x00 \\x00 \\x00 \\x0A         // tag for list of dimensions
+     NC_VARIABLE  = \\x00 \\x00 \\x00 \\x0B         // tag for list of variables
+     NC_ATTRIBUTE = \\x00 \\x00 \\x00 \\x0C         // tag for list of attributes
+     nelems       = NON_NEG       // number of elements in following sequence
+     dim          = name  dim_length
+     name         = nelems  namestring
+                         // Names a dimension, variable, or attribute.
+                         // Names should match the regular expression
+                         // ([a-zA-Z0-9_]|{MUTF8})([^\\x00-\\x1F/\\x7F-\\xFF]|{MUTF8})*
+                         // For other constraints, see "Note on names", below.
+     namestring   = ID1 [IDN ...] padding
+     ID1          = alphanumeric | '_'
+     IDN          = alphanumeric | special1 | special2
+     alphanumeric = lowercase | uppercase | numeric | MUTF8
+     lowercase    = 'a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'i'|'j'|'k'|'l'|'m'|
+                    'n'|'o'|'p'|'q'|'r'|'s'|'t'|'u'|'v'|'w'|'x'|'y'|'z'
+     uppercase    = 'A'|'B'|'C'|'D'|'E'|'F'|'G'|'H'|'I'|'J'|'K'|'L'|'M'|
+                    'N'|'O'|'P'|'Q'|'R'|'S'|'T'|'U'|'V'|'W'|'X'|'Y'|'Z'
+     numeric      = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'
+                                  // special1 chars have traditionally been
+                                  // permitted in netCDF names.
+     special1     = '_'|'.'|'@'|'+'|'-'
+                                  // special2 chars are recently permitted in
+                                  // names (and require escaping in CDL).
+                                  // Note: '/' is not permitted.
+     special2     = ' ' | '!' | '"' | '#'  | '$' | '%' | '&' | '\'' |
+                    '(' | ')' | '*' | ','  | ':' | ';' | '<' | '='  |
+                    '>' | '?' | '[' | '\\' | ']' | '^' | '`' | '{'  |
+                    '|' | '}' | '~'
+     MUTF8        = 
+     dim_length   = NON_NEG       // If zero, this is the record dimension.
+                                  // There can be at most one record dimension.
+     attr         = name  nc_type  nelems  [values ...]
+     nc_type      = NC_BYTE   |
+                    NC_CHAR   |
+                    NC_SHORT  |
+                    NC_INT    |
+                    NC_FLOAT  |
+                    NC_DOUBLE
+     var          = name  nelems  [dimid ...]  vatt_list  nc_type  vsize  begin
+                                  // nelems is the dimensionality (rank) of the
+                                  // variable: 0 for scalar, 1 for vector, 2
+                                  // for matrix, ...
+     dimid        = NON_NEG       // Dimension ID (index into dim_list) for
+                                  // variable shape.  We say this is a "record
+                                  // variable" if and only if the first
+                                  // dimension is the record dimension.
+     vatt_list    = att_list      // Variable-specific attributes
+     vsize        = NON_NEG       // Variable size.  If not a record variable,
+                                  // the amount of space in bytes allocated to
+                                  // the variable's data.  If a record variable,
+                                  // the amount of space per record.  See "Note
+                                  // on vsize", below.
+     begin        = OFFSET        // Variable start location.  The offset in
+                                  // bytes (seek index) in the file of the
+                                  // beginning of data for this variable.
+     data         = non_recs  recs
+     non_recs     = [vardata ...] // The data for all non-record variables,
+                                  // stored contiguously for each variable, in
+                                  // the same order the variables occur in the
+                                  // header.
+     vardata      = [values ...]  // All data for a non-record variable, as a
+                                  // block of values of the same type as the
+                                  // variable, in row-major order (last
+                                  // dimension varying fastest).
+     recs         = [record ...]  // The data for all record variables are
+                                  // stored interleaved at the end of the
+                                  // file.
+     record       = [varslab ...] // Each record consists of the n-th slab
+                                  // from each record variable, for example
+                                  // x[n,...], y[n,...], z[n,...] where the
+                                  // first index is the record number, which
+                                  // is the unlimited dimension index.
+     varslab      = [values ...]  // One record of data for a variable, a
+                                  // block of values all of the same type as
+                                  // the variable in row-major order (last
+                                  // index varying fastest).
+     values       = bytes | chars | shorts | ints | floats | doubles
+     string       = nelems  [chars]
+     bytes        = [BYTE ...]  padding
+     chars        = [CHAR ...]  padding
+     shorts       = [SHORT ...]  padding
+     ints         = [INT ...]
+     floats       = [FLOAT ...]
+     doubles      = [DOUBLE ...]
+     padding      = <0, 1, 2, or 3 bytes to next 4-byte boundary>
+                                  // Header padding uses null (\\x00) bytes.  In
+                                  // data, padding uses variable's fill value.
+                                  // See "Note on padding", below, for a special
+                                  // case.
+     NON_NEG      = 
+     STREAMING    = \\xFF \\xFF \\xFF \\xFF   // Indicates indeterminate record
+                                          // count, allows streaming data
+     OFFSET       =  |  // For classic format or
+                      // for 64-bit offset format
+     BYTE         = <8-bit byte>          // See "Note on byte data", below.
+     CHAR         = <8-bit byte>          // See "Note on char data", below.
+     SHORT        = <16-bit signed integer, Bigendian, two's complement>
+     INT          = <32-bit signed integer, Bigendian, two's complement>
+     INT64        = <64-bit signed integer, Bigendian, two's complement>
+     FLOAT        = <32-bit IEEE single-precision float, Bigendian>
+     DOUBLE       = <64-bit IEEE double-precision float, Bigendian>
+                                  // following type tags are 32-bit integers
+     NC_BYTE      = \\x00 \\x00 \\x00 \\x01       // 8-bit signed integers
+     NC_CHAR      = \\x00 \\x00 \\x00 \\x02       // text characters
+     NC_SHORT     = \\x00 \\x00 \\x00 \\x03       // 16-bit signed integers
+     NC_INT       = \\x00 \\x00 \\x00 \\x04       // 32-bit signed integers
+     NC_FLOAT     = \\x00 \\x00 \\x00 \\x05       // IEEE single precision floats
+     NC_DOUBLE    = \\x00 \\x00 \\x00 \\x06       // IEEE double precision floats
+                                  // Default fill values for each type, may be
+                                  // overridden by variable attribute named
+                                  // '_FillValue'. See "Note on fill values",
+                                  // below.
+     FILL_CHAR    = \\x00                      // null byte
+     FILL_BYTE    = \\x81                      // (signed char) -127
+     FILL_SHORT   = \\x80 \\x01                 // (short) -32767
+     FILL_INT     = \\x80 \\x00 \\x00 \\x01       // (int) -2147483647
+     FILL_FLOAT   = \\x7C \\xF0 \\x00 \\x00       // (float) 9.9692099683868690e+36
+     FILL_DOUBLE  = \\x47 \\x9E \\x00 \\x00 \\x00 \\x00 \\x00 \\x00 //(double)9.9692099683868690e+36
+
+ +Note on vsize: This number is the product of the dimension lengths +(omitting the record dimension) and the number of bytes per value +(determined from the type), increased to the next multiple of 4, for +each variable. If a record variable, this is the amount of space per +record (except that, for backward compatibility, it always includes +padding to the next multiple of 4 bytes, even in the exceptional case +noted below under “Note on padding”). The netCDF “record size” is +calculated as the sum of the vsize's of all the record variables. + +The vsize field is actually redundant, because its value may be +computed from other information in the header. The 32-bit vsize field +is not large enough to contain the size of variables that require more +than 2^32 - 4 bytes, so 2^32 - 1 is used in the vsize field for such +variables. + +Note on names: Earlier versions of the netCDF C-library reference +implementation enforced a more restricted set of characters in +creating new names, but permitted reading names containing arbitrary +bytes. This specification extends the permitted characters in names to +include multi-byte UTF-8 encoded Unicode and additional printing +characters from the US-ASCII alphabet. The first character of a name +must be alphanumeric, a multi-byte UTF-8 character, or '_' (reserved +for special names with meaning to implementations, such as the +“_FillValue” attribute). Subsequent characters may also include +printing special characters, except for '/' which is not allowed in +names. Names that have trailing space characters are also not +permitted. + +Implementations of the netCDF classic and 64-bit offset format must +ensure that names are normalized according to Unicode NFC +normalization rules during encoding as UTF-8 for storing in the file +header. This is necessary to ensure that gratuitous differences in the +representation of Unicode names do not cause anomalies in comparing +files and querying data objects by name. + +Note on streaming data: The largest possible record count, 2^32 - 1, +is reserved to indicate an indeterminate number of records. This means +that the number of records in the file must be determined by other +means, such as reading them or computing the current number of records +from the file length and other information in the header. It also +means that the numrecs field in the header will not be updated as +records are added to the file. [This feature is not yet implemented]. + +Note on padding: In the special case when there is only one record +variable and it is of type character, byte, or short, no padding is +used between record slabs, so records after the first record do not +necessarily start on four-byte boundaries. However, as noted above +under “Note on vsize”, the vsize field is computed to include padding +to the next multiple of 4 bytes. In this case, readers should ignore +vsize and assume no padding. Writers should store vsize as if padding +were included. + +Note on byte data: It is possible to interpret byte data as either +signed (-128 to 127) or unsigned (0 to 255). When reading byte data +through an interface that converts it into another numeric type, the +default interpretation is signed. There are various attribute +conventions for specifying whether bytes represent signed or unsigned +data, but no standard convention has been established. The variable +attribute “_Unsigned” is reserved for this purpose in future +implementations. + +Note on char data: Although the characters used in netCDF names must +be encoded as UTF-8, character data may use other encodings. The +variable attribute “_Encoding” is reserved for this purpose in future +implementations. + +Note on fill values: Because data variables may be created before +their values are written, and because values need not be written +sequentially in a netCDF file, default “fill values” are defined for +each type, for initializing data values before they are explicitly +written. This makes it possible to detect reading values that were +never written. The variable attribute “_FillValue”, if present, +overrides the default fill value for a variable. If _FillValue is +defined then it should be scalar and of the same type as the variable. + +Fill values are not required, however, because netCDF libraries have +traditionally supported a “no fill” mode when writing, omitting the +initialization of variable values with fill values. This makes the +creation of large files faster, but also eliminates the possibility of +detecting the inadvertent reading of values that haven't been written. + +\section computing_offsets Notes on Computing File Offsets + +The offset (position within the file) of a specified data value in a +classic format or 64-bit offset data file is completely determined by +the variable start location (the offset in the begin field), the +external type of the variable (the nc_type field), and the dimension +indices (one for each of the variable's dimensions) of the value +desired. + +The external size in bytes of one data value for each possible netCDF +type, denoted extsize below, is: +- NC_BYTE 1 +- NC_CHAR 1 +- NC_SHORT 2 +- NC_INT 4 +- NC_FLOAT 4 +- NC_DOUBLE 8 + +The record size, denoted by recsize below, is the sum of the vsize +fields of record variables (variables that use the unlimited +dimension), using the actual value determined by dimension sizes and +variable type in case the vsize field is too small for the variable +size. + +To compute the offset of a value relative to the beginning of a +variable, it is helpful to precompute a “product vector” from the +dimension lengths. Form the products of the dimension lengths for the +variable from right to left, skipping the leftmost (record) dimension +for record variables, and storing the results as the product vector +for each variable. + +For example: + +\code +Non-record variable: + +dimension lengths: [ 5 3 2 7] product vector: [210 42 14 7] + +Record variable: + +dimension lengths: [0 2 9 4] product vector: [0 72 36 4] +\endcode + +At this point, the leftmost product, when rounded up to the next +multiple of 4, is the variable size, vsize, in the grammar above. For +example, in the non-record variable above, the value of the vsize +field is 212 (210 rounded up to a multiple of 4). For the record +variable, the value of vsize is just 72, since this is already a +multiple of 4. + +Let coord be the array of coordinates (dimension indices, zero-based) +of the desired data value. Then the offset of the value from the +beginning of the file is just the file offset of the first data value +of the desired variable (its begin field) added to the inner product +of the coord and product vectors times the size, in bytes, of each +datum for the variable. Finally, if the variable is a record variable, +the product of the record number, 'coord[0]', and the record size, +recsize, is added to yield the final offset value. + +A special case: Where there is exactly one record variable, we drop +the requirement that each record be four-byte aligned, so in this case +there is no record padding. + +\subsection offset_examples Examples + +By using the grammar above, we can derive the smallest valid netCDF +file, having no dimensions, no variables, no attributes, and hence, no +data. A CDL representation of the empty netCDF file is + +\code +netcdf empty { } +\endcode + +This empty netCDF file has 32 bytes. It begins with the four-byte +“magic number” that identifies it as a netCDF version 1 file: ‘C’, +‘D’, ‘F’, ‘\\x01’. Following are seven 32-bit integer zeros +representing the number of records, an empty list of dimensions, an +empty list of global attributes, and an empty list of variables. + +Below is an (edited) dump of the file produced using the Unix command + +\code +od -xcs empty.nc +\endcode + +Each 16-byte portion of the file is displayed with 4 lines. The first +line displays the bytes in hexadecimal. The second line displays the +bytes as characters. The third line displays each group of two bytes +interpreted as a signed 16-bit integer. The fourth line (added by +human) presents the interpretation of the bytes in terms of netCDF +components and values. + +\code + 4344 4601 0000 0000 0000 0000 0000 0000 + C D F 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 + 17220 17921 00000 00000 00000 00000 00000 00000 + [magic number ] [ 0 records ] [ 0 dimensions (ABSENT) ] + + 0000 0000 0000 0000 0000 0000 0000 0000 + \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 + 00000 00000 00000 00000 00000 00000 00000 00000 + [ 0 global atts (ABSENT) ] [ 0 variables (ABSENT) ] +\endcode + +As a less trivial example, consider the CDL + +\code + netcdf tiny { + dimensions: + dim = 5; + variables: + short vx(dim); + data: + vx = 3, 1, 4, 1, 5 ; + } +\endcode + +which corresponds to a 92-byte netCDF file. The following is an edited dump of this file: + +\code + 4344 4601 0000 0000 0000 000a 0000 0001 + C D F 001 \0 \0 \0 \0 \0 \0 \0 \n \0 \0 \0 001 + 17220 17921 00000 00000 00000 00010 00000 00001 + [magic number ] [ 0 records ] [NC_DIMENSION ] [ 1 dimension ] + + 0000 0003 6469 6d00 0000 0005 0000 0000 + \0 \0 \0 003 d i m \0 \0 \0 \0 005 \0 \0 \0 \0 + 00000 00003 25705 27904 00000 00005 00000 00000 + [ 3 char name = "dim" ] [ size = 5 ] [ 0 global atts + + 0000 0000 0000 000b 0000 0001 0000 0002 + \0 \0 \0 \0 \0 \0 \0 013 \0 \0 \0 001 \0 \0 \0 002 + 00000 00000 00000 00011 00000 00001 00000 00002 + (ABSENT) ] [NC_VARIABLE ] [ 1 variable ] [ 2 char name = + + 7678 0000 0000 0001 0000 0000 0000 0000 + v x \0 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 \0 \0 \0 + 30328 00000 00000 00001 00000 00000 00000 00000 + "vx" ] [1 dimension ] [ with ID 0 ] [ 0 attributes + + 0000 0000 0000 0003 0000 000c 0000 0050 + \0 \0 \0 \0 \0 \0 \0 003 \0 \0 \0 \f \0 \0 \0 P + 00000 00000 00000 00003 00000 00012 00000 00080 + (ABSENT) ] [type NC_SHORT] [size 12 bytes] [offset: 80] + + 0003 0001 0004 0001 0005 8001 + \0 003 \0 001 \0 004 \0 001 \0 005 200 001 + 00003 00001 00004 00001 00005 -32767 + [ 3] [ 1] [ 4] [ 1] [ 5] [fill ] +\endcode + +\section offset_format_spec The 64-bit Offset Format + +The netCDF 64-bit offset format differs from the classic format only +in the VERSION byte, ‘\\x02’ instead of ‘\\x01’, and the OFFSET entity, +a 64-bit instead of a 32-bit offset from the beginning of the +file. This small format change permits much larger files, but there +are still some practical size restrictions. Each fixed-size variable +and the data for one record's worth of each record variable are still +limited in size to a little less that 4 GiB. The rationale for this +limitation is to permit aggregate access to all the data in a netCDF +variable (or a record's worth of data) on 32-bit platforms. + +\section netcdf_4_spec The NetCDF-4 Format + +The netCDF-4 format implements and expands the netCDF-3 data model by +using an enhanced version of HDF5 as the storage layer. Use is made of +features that are only available in HDF5 version 1.8 and later. + +Using HDF5 as the underlying storage layer, netCDF-4 files remove many +of the restrictions for classic and 64-bit offset files. The richer +enhanced model supports user-defined types and data structures, +hierarchical scoping of names using groups, additional primitive types +including strings, larger variable sizes, and multiple unlimited +dimensions. The underlying HDF5 storage layer also supports +per-variable compression, multidimensional tiling, and efficient +dynamic schema changes, so that data need not be copied when adding +new variables to the file schema. + +Creating a netCDF-4/HDF5 file with netCDF-4 results in an HDF5 +file. The features of netCDF-4 are a subset of the features of HDF5, +so the resulting file can be used by any existing HDF5 application. + +Although every file in netCDF-4 format is an HDF5 file, there are HDF5 +files that are not netCDF-4 format files, because the netCDF-4 format +intentionally uses a limited subset of the HDF5 data model and file +format features. Some HDF5 features not supported in the netCDF +enhanced model and netCDF-4 format include non-hierarchical group +structures, HDF5 reference types, multiple links to a data object, +user-defined atomic data types, stored property lists, more permissive +rules for data object names, the HDF5 date/time type, and attributes +associated with user-defined types. + +A complete specification of HDF5 files is beyond the scope of this +document. For more information about HDF5, see the HDF5 web site: +http://hdf.ncsa.uiuc.edu/HDF5/. + +The specification that follows is sufficient to allow HDF5 users to +create files that will be accessible from netCDF-4. + +\subsection creation_order Creation Order + +The netCDF API maintains the creation order of objects that are +created in the file. The same is not true in HDF5, which maintains the +objects in alphabetical order. Starting in version 1.8 of HDF5, the +ability to maintain creation order was added. This must be explicitly +turned on in the HDF5 data file in several ways. + +Each group must have link and attribute creation order set. The +following code (from libsrc4/nc4hdf.c) shows how the netCDF-4 library +sets these when creating a group. + +\code + /* Create group, with link_creation_order set in the group + * creation property list. */ + if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0) + return NC_EHDFERR; + if (H5Pset_link_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0) + BAIL(NC_EHDFERR); + if (H5Pset_attr_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0) + BAIL(NC_EHDFERR); + if ((grp->hdf_grpid = H5Gcreate2(grp->parent->hdf_grpid, grp->name, + H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0) + BAIL(NC_EHDFERR); + if (H5Pclose(gcpl_id) < 0) + BAIL(NC_EHDFERR); +\endcode + +Each dataset in the HDF5 file must be created with a property list for +which the attribute creation order has been set to creation +ordering. The H5Pset_attr_creation_order function is used to set the +creation ordering of attributes of a variable. + +The following example code (from libsrc4/nc4hdf.c) shows how the +creation ordering is turned on by the netCDF library. + +\code + /* Turn on creation order tracking. */ + if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED| + H5P_CRT_ORDER_INDEXED) < 0) + BAIL(NC_EHDFERR); +\endcode + +\subsection groups_spec Groups + +NetCDF-4 groups are the same as HDF5 groups, but groups in a netCDF-4 +file must be strictly hierarchical. In general, HDF5 permits +non-hierarchical structuring of groups (for example, a group that is +its own grandparent). These non-hierarchical relationships are not +allowed in netCDF-4 files. + +In the netCDF API, the global attribute becomes a group-level +attribute. That is, each group may have its own global attributes. + +The root group of a file is named “/” in the netCDF API, where names +of groups are used. It should be noted that the netCDF API (like the +HDF5 API) makes little use of names, and refers to entities by number. + +\subsection dims_spec Dimensions with HDF5 Dimension Scales + +Until version 1.8, HDF5 did not have any capability to represent +shared dimensions. With the 1.8 release, HDF5 introduced the dimension +scale feature to allow shared dimensions in HDF5 files. + +The dimension scale is unfortunately not exactly equivalent to the +netCDF shared dimension, and this leads to a number of compromises in +the design of netCDF-4. + +A netCDF shared dimension consists solely of a length and a name. An +HDF5 dimension scale also includes values for each point along the +dimension, information that is (optionally) included in a netCDF +coordinate variable. + +To handle the case of a netCDF dimension without a coordinate +variable, netCDF-4 creates dimension scales of type char, and leaves +the contents of the dimension scale empty. Only the name and length of +the scale are significant. To distinguish this case, netCDF-4 takes +advantage of the NAME attribute of the dimension scale. (Not to be +confused with the name of the scale itself.) In the case of dimensions +without coordinate data, the HDF5 dimension scale NAME attribute is +set to the string: "This is a netCDF dimension but not a netCDF +variable." + +In the case where a coordinate variable is defined for a dimension, +the HDF5 dimscale matches the type of the netCDF coordinate variable, +and contains the coordinate data. + +A further difficulty arrises when an n-dimensional coordinate variable +is defined, where n is greater than one. NetCDF allows such coordinate +variables, but the HDF5 model does not allow dimension scales to be +attached to other dimension scales, making it impossible to completely +represent the multi-dimensional coordinate variables of the netCDF +model. + +To capture this information, multidimensional coordinate variables +have an attribute named _Netcdf4Coordinates. The attribute is an array +of H5T_NATIVE_INT, with the netCDF dimension IDs of each of its +dimensions. + +The _Netcdf4Coordinates attribute is otherwise hidden by the netCDF +API. It does not appear as one of the attributes for the netCDF +variable involved, except through the HDF5 API. + +\subsection dim_spec2 Dimensions without HDF5 Dimension Scales + +Starting with the netCDF-4.1 release, netCDF can read HDF5 files which +do not use dimension scales. In this case the netCDF library assigns +dimensions to the HDF5 dataset as needed, based on the length of the +dimension. + +When an HDF5 file is opened, each dataset is examined in turn. The +lengths of all the dimensions involved in the shape of the dataset are +determined. Each new (i.e. previously unencountered) length results in +the creation of a phony dimension in the netCDF API. + +This will not accurately detect a shared, unlimited dimension in the +HDF5 file, if different datasets have different lengths along this +dimension (possible in HDF5, but not in netCDF). + +Note that this is a read-only capability for the netCDF library. When +the netCDF library writes HDF5 files, they always use a dimension +scale for every dimension. + +Datasets must have either dimension scales for every dimension, or no +dimension scales at all. Partial dimension scales are not, at this +time, understood by the netCDF library. + +\subsection dim_spec3 Dimension and Coordinate Variable Ordering + +In order to preserve creation order, the netCDF-4 library writes +variables in their creation order. Since some variables are also +dimension scales, their order reflects both the order of the +dimensions and the order of the coordinate variables. + +However, these may be different. Consider the following code: + +\code + /* Create a test file. */ + if (nc_create(FILE_NAME, NC_CLASSIC_MODEL|NC_NETCDF4, &ncid)) ERR; + + /* Define dimensions in order. */ + if (nc_def_dim(ncid, DIM0, NC_UNLIMITED, &dimids[0])) ERR; + if (nc_def_dim(ncid, DIM1, 4, &dimids[1])) ERR; + + /* Define coordinate variables in a different order. */ + if (nc_def_var(ncid, DIM1, NC_DOUBLE, 1, &dimids[1], &varid[1])) ERR; + if (nc_def_var(ncid, DIM0, NC_DOUBLE, 1, &dimids[0], &varid[0])) ERR; +\endcode + +In this case the order of the coordinate variables will be different +from the order of the dimensions. + +In practice, this should make little difference in user code, but if +the user is writing code that depends on the ordering of dimensions, +the netCDF library was updated in version 4.1 to detect this +condition, and add the attribute _Netcdf4Dimid to the dimension scales +in the HDF5 file. This attribute holds a scalar H5T_NATIVE_INT which +is the (zero-based) dimension ID for this dimension. + +If this attribute is present on any dimension scale, it must be +present on all dimension scales in the file. + +\subsection vars_spec Variables + +Variables in netCDF-4/HDF5 files exactly correspond to HDF5 +datasets. The data types match naturally between netCDF and HDF5. + +In netCDF classic format, the problem of endianness is solved by +writing all data in big-endian order. The HDF5 library allows data to +be written as either big or little endian, and automatically reorders +the data when it is read, if necessary. + +By default, netCDF uses the native types on the machine which writes +the data. Users may change the endianness of a variable (before any +data are written). In that case the specified endian type will be used +in HDF5 (for example, a H5T_STD_I16LE will be used for NC_SHORT, if +little-endian has been specified for that variable.) +- NC_BYTE = H5T_NATIVE_SCHAR +- NC_UBYTE = H5T_NATIVE_UCHAR +- NC_CHAR = H5T_C_S1 +- NC_STRING = variable length array of H5T_C_S1 +- NC_SHORT = H5T_NATIVE_SHORT +- NC_USHORT = H5T_NATIVE_USHORT +- NC_INT = H5T_NATIVE_INT +- NC_UINT = H5T_NATIVE_UINT +- NC_INT64 = H5T_NATIVE_LLONG +- NC_UINT64 = H5T_NATIVE_ULLONG +- NC_FLOAT = H5T_NATIVE_FLOAT +- NC_DOUBLE = H5T_NATIVE_DOUBLE + +The NC_CHAR type represents a single character, and the NC_STRING an +array of characters. This can be confusing because a one-dimensional +array of NC_CHAR is used to represent a string (i.e. a scalar +NC_STRING). + +An odd case may arise in which the user defines a variable with the +same name as a dimension, but which is not intended to be the +coordinate variable for that dimension. In this case the string +"_nc4_non_coord_" is pre-pended to the name of the HDF5 dataset, and +stripped from the name for the netCDF API. + +\subsection atts_spec Attributes + +Attributes in HDF5 and netCDF-4 correspond very closely. Each +attribute in an HDF5 file is represented as an attribute in the +netCDF-4 file, with the exception of the attributes below, which are +hidden by the netCDF-4 API. +- _Netcdf4Coordinates An integer array containing the dimension IDs of + a variable which is a multi-dimensional coordinate variable. +- _nc3_strict When this (scalar, H5T_NATIVE_INT) attribute exists in + the root group of the HDF5 file, the netCDF API will enforce the + netCDF classic model on the data file. +- REFERENCE_LIST This attribute is created and maintained by the HDF5 + dimension scale API. +- CLASS This attribute is created and maintained by the HDF5 dimension + scale API. +- DIMENSION_LIST This attribute is created and maintained by the HDF5 + dimension scale API. +- NAME This attribute is created and maintained by the HDF5 dimension + scale API. +- _Netcdf4Dimid Holds a scalar H5T_NATIVE_INT that is the (zero-based) + dimension ID for this dimension, needed when dimensions and + coordinate variables are defined in different orders. +- _NCProperties Holds provenance information about a file at the time + it was created. It specifies the versions of the netCDF and HDF5 + libraries used to create the file. + +\subsection user_defined_spec User-Defined Data Types + +Each user-defined data type in an HDF5 file exactly corresponds to a +user-defined data type in the netCDF-4 file. Only base data types +which correspond to netCDF-4 data types may be used. (For example, no +HDF5 reference data types may be used.) + +\subsection compression_spec Compression + +The HDF5 library provides data compression using the zlib library and +the szlib library. NetCDF-4 only allows users to create data with the +zlib library (due to licensing restrictions on the szlib +library). Since HDF5 supports the transparent reading of the data with +either compression filter, the netCDF-4 library can read data +compressed with szlib (if the underlying HDF5 library is built to +support szlib), but has no way to write data with szlib compression. + +With zlib compression (a.k.a. deflation) the user may set a deflation +factor from 0 to 9. In our measurements the zero deflation level does +not compress the data, but does incur the performance penalty of +compressing the data. The netCDF API does not allow the user to write +a variable with zlib deflation of 0 - when asked to do so, it turns +off deflation for the variable instead. NetCDF can read an HDF5 file +with deflation of zero, and correctly report that to the user. + +\section netcdf_4_classic_spec The NetCDF-4 Classic Model Format + +Every classic and 64-bit offset file can be represented as a netCDF-4 +file, with no loss of information. There are some significant benefits +to using the simpler netCDF classic model with the netCDF-4 file +format. For example, software that writes or reads classic model data +can write or read netCDF-4 classic model format data by +recompiling/relinking to a netCDF-4 API library, with no or only +trivial changes needed to the program source code. The netCDF-4 +classic model format supports this usage by enforcing rules on what +functions may be called to store data in the file, to make sure its +data can be read by older netCDF applications (when relinked to a +netCDF-4 library). + +Writing data in this format prevents use of enhanced model features +such as groups, added primitive types not available in the classic +model, and user-defined types. However performance features of the +netCDF-4 formats that do not require additional features of the +enhanced model, such as per-variable compression and chunking, +efficient dynamic schema changes, and larger variable size limits, +offer potentially significant performance improvements to readers of +data stored in this format, without requiring program changes. + +When a file is created via the netCDF API with a CLASSIC_MODEL mode +flag, the library creates an attribute (_nc3_strict) in the root +group. This attribute is hidden by the netCDF API, but is read when +the file is later opened, and used to ensure that no enhanced model +features are written to the file. + +\section hdf4_sd_format HDF4 SD Format + +Starting with version 4.1, the netCDF libraries can read HDF4 SD +(Scientific Dataset) files. Access is limited to those HDF4 files +created with the Scientific Dataset API. Access is read-only. + +Dataset types are translated between HDF4 and netCDF in a +straightforward manner. +- DFNT_CHAR = NC_CHAR +- DFNT_UCHAR, DFNT_UINT8 = NC_UBYTE +- DFNT_INT8 = NC_BYTE +- DFNT_INT16 = NC_SHORT +- DFNT_UINT16 = NC_USHORT +- DFNT_INT32 = NC_INT +- DFNT_UINT32 = NC_UINT +- DFNT_FLOAT32 = NC_FLOAT +- DFNT_FLOAT64 = NC_DOUBLE diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/filters.md b/contrib/netcdf/netcdf-c-4.6.2/docs/filters.md new file mode 100644 index 00000000000..adc5ddd99b6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/filters.md @@ -0,0 +1,500 @@ +NetCDF-4 Filter Support +============================ + + +NetCDF-4 Filter Support {#compress} +================================= + +[TOC] + +Introduction {#compress_intro} +================== + +The HDF5 library (1.8.11 and later) +supports a general filter mechanism to apply various +kinds of filters to datasets before reading or writing. +The netCDF enhanced (aka netCDF-4) library inherits this +capability since it depends on the HDF5 library. + +Filters assume that a variable has chunking +defined and each chunk is filtered before +writing and "unfiltered" after reading and +before passing the data to the user. + +The most common kind of filter is a compression-decompression +filter, and that is the focus of this document. + +HDF5 supports dynamic loading of compression filters using the following +process for reading of compressed data. + +1. Assume that we have a dataset with one or more variables that +were compressed using some algorithm. How the dataset was compressed +will be discussed subsequently. + +2. Shared libraries or DLLs exist that implement the compress/decompress +algorithm. These libraries have a specific API so that the HDF5 library +can locate, load, and utilize the compressor. +These libraries are expected to installed in a specific +directory. + +Enabling A Compression Filter {#Enable} +============================= + +In order to compress a variable, the netcdf-c library +must be given three pieces of information: +(1) some unique identifier for the filter to be used, +(2) a vector of parameters for +controlling the action of the compression filter, and +(3) a shared library implementation of the filter. + +The meaning of the parameters is, of course, +completely filter dependent and the filter +description [3] needs to be consulted. For +bzip2, for example, a single parameter is provided +representing the compression level. +It is legal to provide a zero-length set of parameters. +Defaults are not provided, so this assumes that +the filter can operate with zero parameters. + +Filter ids are assigned by the HDF group. See [4] +for a current list of assigned filter ids. +Note that ids above 32767 can be used for testing without +registration. + +The first two pieces of information can be provided in one of three ways: +using __ncgen__, via an API call, or via command line parameters to __nccopy__. +In any case, remember that filtering also requires setting chunking, so the +variable must also be marked with chunking information. + +Using The API {#API} +------------- +The necessary API methods are included in __netcdf.h__ by default. +One API method is for setting the filter to be used +when writing a variable. The relevant signature is +as follows. +```` +int nc_def_var_filter(int ncid, int varid, unsigned int id, size_t nparams, const unsigned int* parms); +```` +This must be invoked after the variable has been created and before +__nc_enddef__ is invoked. + +A second API methods makes it possible to query a variable to +obtain information about any associated filter using this signature. +```` +int nc_inq_var_filter(int ncid, int varid, unsigned int* idp, size_t* nparams, unsigned int* params); + +```` +The filter id will be returned in the __idp__ argument (if non-NULL), +the number of parameters in __nparamsp__ and the actual parameters in +__params__. As is usual with the netcdf API, one is expected to call +this function twice. The first time to get __nparams__ and the +second to get the parameters in client-allocated memory. + +Using ncgen {#NCGEN} +------------- + +In a CDL file, compression of a variable can be specified +by annotating it with the following attribute: + +* ''_Filter'' -- a string containing a comma separated list of +constants specifying (1) the filter id to apply, and (2) +a vector of constants representing the +parameters for controlling the operation of the specified filter. +See the section on the parameter encoding syntax +for the details on the allowable kinds of constants. + +This is a "special" attribute, which means that +it will normally be invisible when using +__ncdump__ unless the -s flag is specified. + +Example CDL File (Data elided) +------------------------------ +```` +netcdf bzip2 { +dimensions: + dim0 = 4 ; dim1 = 4 ; dim2 = 4 ; dim3 = 4 ; +variables: + float var(dim0, dim1, dim2, dim3) ; + var:_Filter = "307,9" ; + var:_Storage = "chunked" ; + var:_ChunkSizes = 4, 4, 4, 4 ; +data: +... +} +```` + +Using nccopy {#NCCOPY} +------------- +When copying a netcdf file using __nccopy__ it is possible +to specify filter information for any output variable by +using the "-F" option on the command line; for example: +```` +nccopy -F "var,307,9" unfiltered.nc filtered.nc +```` +Assume that __unfiltered.nc__ has a chunked but not bzip2 compressed +variable named "var". This command will create that variable in +the __filtered.nc__ output file but using filter with id 307 +(i.e. bzip2) and with parameter(s) 9 indicating the compression level. +See the section on the parameter encoding syntax +for the details on the allowable kinds of constants. + +The "-F" option can be used repeatedly as long as the variable name +part is different. A different filter id and parameters can be +specified for each occurrence. + +As a rule, any input filter on an input variable will be applied +to the equivalent output variable -- assuming the output file type +is netcdf-4. It is, however, sometimes convenient to suppress +output compression either totally or on a per-variable basis. +Total suppression of output filters can be accomplished by specifying +a special case of "-F", namely this. +```` +nccopy -F "none" input.nc output.nc +```` +Suppression of output filtering for a specific variable can be accomplished +using this format. +```` +nccopy -F "var,none" input.nc output.nc +```` +where "var" is the fully qualified name of the variable. + +The rules for all possible cases of the "-F" flag are defined +by this table. + + +
-F none-Fvar,...Input FilterApplied Output Filter +
trueunspecifiedNAunfiltered +
true-Fvar,noneNAunfiltered +
true-Fvar,...NAuse output filter +
falseunspecifieddefineduse input filter +
false-Fvar,noneNAunfiltered +
false-Fvar,...NAuse output filter +
+ +Parameter Encoding {#ParamEncode} +========== + +The parameters passed to a filter are encoded internally as a vector +of 32-bit unsigned integers. It may be that the parameters +required by a filter can naturally be encoded as unsigned integers. +The bzip2 compression filter, for example, expects a single +integer value from zero thru nine. This encodes naturally as a +single unsigned integer. + +Note that signed integers and single-precision (32-bit) float values +also can easily be represented as 32 bit unsigned integers by +proper casting to an unsigned integer so that the bit pattern +is preserved. Simple integer values of type short or char +(or the unsigned versions) can also be mapped to an unsigned +integer by truncating to 16 or 8 bits respectively and then +zero extending. + +Machine byte order (aka endian-ness) is an issue for passing +some kinds of parameters. You might define the parameters when +compressing on a little endian machine, but later do the +decompression on a big endian machine. Byte order is not an +issue for 32-bit values because HDF5 takes care of converting +them between the local machine byte order and network byte +order. + +Parameters whose size is larger than 32-bits present a byte order problem. +This typically includes double precision floats and (signed or unsigned) +64-bit integers. For these cases, the machine byte order must be +handled by the compression code. This is because HDF5 will treat, +for example, an unsigned long long as two 32-bit unsigned integers +and will convert each to network order separately. This means that +on a machine whose byte order is different than the machine in which +the parameters were initially created, the two integers are out of order +and must be swapped to get the correct unsigned long long value. +Consider this example. Suppose we have this little endian unsigned long long. + + 1000000230000004 + +In network byte order, it will be stored as two 32-bit integers. + + 20000001 40000003 + +On a big endian machine, this will be given to the filter in that form. + + 2000000140000003 + +But note that the proper big endian unsigned long long form is this. + +4000000320000001 + +So, the two words need to be swapped. + +But consider the case when both original and final machines are big endian. + +1. 4000000320000001 +2. 40000003 20000001 +3. 40000003 20000001 + +where #1 is the original number, #2 is the network order and +#3 is the what is given to the filter. In this case we do not +want to swap words. + +The solution is to forcibly encode the original number using some +specified endianness so that the filter always assumes it is getting +its parameters in that order and will always do swapping as needed. +This is irritating, but one needs to be aware of it. Since most +machines are little-endian. We choose to use that as the endianness +for handling 64 bit entities. + +Filter Specification Syntax {#Syntax} +========== + +Both of the utilities +__ncgen__ +and +__nccopy__ +allow the specification of filter parameters. +These specifications consist of a sequence of comma +separated constants. The constants are converted +within the utility to a proper set of unsigned int +constants (see the parameter encoding section). + +To simplify things, various kinds of constants can be specified +rather than just simple unsigned integers. The utilities will encode +them properly using the rules specified in +the parameter encoding section. + +The currently supported constants are as follows. + +
ExampleTypeFormat TagNotes +
-17bsigned 8-bit byteb|BTruncated to 8 bits and zero extended to 32 bits +
23ubunsigned 8-bit byteu|U b|BTruncated to 8 bits and zero extended to 32 bits +
-25Ssigned 16-bit shorts|STruncated to 16 bits and zero extended to 32 bits +
27USunsigned 16-bit shortu|U s|STruncated to 16 bits and zero extended to 32 bits +
-77implicit signed 32-bit integerLeading minus sign and no tag +
77implicit unsigned 32-bit integerNo tag +
93Uexplicit unsigned 32-bit integeru|U +
789f32-bit floatf|F +
12345678.12345678d64-bit doubled|DNetwork byte order +
-9223372036854775807L64-bit signed long longl|LNetwork byte order +
18446744073709551615UL64-bit unsigned long longu|U l|LNetwork byte order +
+Some things to note. + +1. In all cases, except for an untagged positive integer, + the format tag is required and determines how the constant + is converted to one or two unsigned int values. + The positive integer case is for backward compatibility. +2. For signed byte and short, the value is sign extended to 32 bits + and then treated as an unsigned int value. +3. For double, and signed|unsigned long long, they are converted + to network byte order and then treated as two unsigned int values. + This is consistent with the parameter encoding. + +Dynamic Loading Process {#Process} +========== + +The documentation[1,2] for the HDF5 dynamic loading was (at the time +this was written) out-of-date with respect to the actual HDF5 code +(see HDF5PL.c). So, the following discussion is largely derived +from looking at the actual code. This means that it is subject to change. + +Plugin directory {#Plugindir} +---------------- + +The HDF5 loader expects plugins to be in a specified plugin directory. +The default directory is: + * "/usr/local/hdf5/lib/plugin” for linux/unix operating systems (including Cygwin) + * “%ALLUSERSPROFILE%\\hdf5\\lib\\plugin” for Windows systems, although the code + does not appear to explicitly use this path. + +The default may be overridden using the environment variable +__HDF5_PLUGIN_PATH__. + +Plugin Library Naming {#Pluginlib} +--------------------- + +Given a plugin directory, HDF5 examines every file in that +directory that conforms to a specified name pattern +as determined by the platform on which the library is being executed. + +
PlatformBasenameExtension +
Linuxlib*.so* +
OSXlib*.so* +
Cygwincyg*.dll* +
Windows*.dll +
+ +Plugin Verification {#Pluginverify} +------------------- +For each dynamic library located using the previous patterns, +HDF5 attempts to load the library and attempts to obtain information +from it. Specifically, It looks for two functions with the following +signatures. + +1. __H5PL_type_t H5PLget_plugin_type(void)__ -- +This function is expected to return the constant value +__H5PL_TYPE_FILTER__ to indicate that this is a filter library. +2. __const void* H5PLget_plugin_info(void)__ -- +This function returns a pointer to a table of type __H5Z_class2_t__. +This table contains the necessary information needed to utilize the +filter both for reading and for writing. In particular, it specifies +the filter id implemented by the library and if must match that id +specified for the variable in __nc_def_var_filter__ in order to be used. + +If plugin verification fails, then that plugin is ignored and +the search continues for another, matching plugin. + +Debugging {#Debug} +------- +Debugging plugins can be very difficult. You will probably +need to use the old printf approach for debugging the filter itself. + +One case worth mentioning is when you have a dataset that is +using an unknown filter. For this situation, you need to +identify what filter(s) are used in the dataset. This can +be accomplished using this command. +```` +ncdump -s -h +```` +Since ncdump is not being asked to access the data (the -h flag), it +can obtain the filter information without failures. Then it can print +out the filter id and the parameters (the -s flag). + +Test Case {#TestCase} +------- +Within the netcdf-c source tree, the directory +__netcdf-c/nc_test4__ contains a test case (__test_filter.c__) for +testing dynamic filter writing and reading using +bzip2. Another test (__test_filter_misc.c__) validates +parameter passing. These tests are disabled if __--enable-shared__ +is not set or if __--enable-netcdf-4__ is not set. + +Example {#Example} +------- +A slightly simplified version of the filter test case is also +available as an example within the netcdf-c source tree +directory __netcdf-c/examples/C. The test is called __filter_example.c__ +and it is executed as part of the __run_examples4.sh__ shell script. +The test case demonstrates dynamic filter writing and reading. + +The files __example/C/hdf5plugins/Makefile.am__ +and __example/C/hdf5plugins/CMakeLists.txt__ +demonstrate how to build the hdf5 plugin for bzip2. + +Notes +========== + +Memory Allocation Issues +----------- + +Starting with HDF5 version 1.10.x, the plugin code MUST be +careful when using the standard *malloc()*, *realloc()*, and +*free()* function. + +In the event that the code is allocating, reallocating, for +free'ing memory that either came from or will be exported to the +calling HDF5 library, then one MUST use the corresponding HDF5 +functions *H5allocate_memory()*, *H5resize_memory()*, +*H5free_memory()* [5] to avoid memory failures. + +Additionally, if your filter code leaks memory, then the HDF5 library +generates a failure something like this. +```` +H5MM.c:232: H5MM_final_sanity_check: Assertion `0 == H5MM_curr_alloc_bytes_s' failed. +```` + +One can look at the the code in plugins/H5Zbzip2.c and H5Zmisc.c to see this. + +SZIP Issues +----------- +The current szip plugin code in the HDF5 library +has some behaviors that can catch the unwary. +Specifically, this filter may do two things. + +1. Add extra parameters to the filter parameters: going from + the two parameters provided by the user to four parameters + for internal use. It turns out that the two parameters provided + when calling nc_def_var_filter correspond to the first two + parameters of the four parameters returned by nc_inq_var_filter. +2. Change the values of some parameters: the value of the + __options_mask__ argument is known to add additional flag bits, + and the __pixels_per_block__ parameter may be modified. + +The reason for these changes is has to do with the fact that +the szip API provided by the underlying H5Pset_szip function +is actually a subset of the capabilities of the real szip implementation. +Presumably this is for historical reasons. + +In any case, if the caller uses the __nc_inq_var_szip__, then +the values returned may differ from those originally specified. +If one used the __nc_inq_var_filter__ API calls, it may be the case that +both the number of parameters and the values will differ from the original +call to __nc_def_var_filter__. + +Supported Systems +----------------- +The current matrix of OS X build systems known to work is as follows. + +
Build SystemSupported OS +
AutomakeLinux, Cygwin +
CmakeLinux, Cygwin, Visual Studio +
+ +Generic Plugin Build +-------------------- +If you do not want to use Automake or Cmake, the following +has been known to work. +```` +gcc -g -O0 -shared -o libbzip2.so -L${HDF5LIBDIR} -lhdf5_hl -lhdf5 -L${ZLIBDIR} -lz +```` + +Appendix A. Byte Swap Code {#AppendixA} +========== +Since in some cases, it is necessary for a filter to +byte swap from little-endian to big-endian, This appendix +provides sample code for doing this. It also provides +a code snippet for testing if the machine the +endianness of a machine. + +Byte swap an 8-byte chunk of memory +------- +```` +static void +byteswap8(unsigned char* mem) +{ + register unsigned char c; + c = mem[0]; + mem[0] = mem[7]; + mem[7] = c; + c = mem[1]; + mem[1] = mem[6]; + mem[6] = c; + c = mem[2]; + mem[2] = mem[5]; + mem[5] = c; + c = mem[3]; + mem[3] = mem[4]; + mem[4] = c; +} + +```` + +Test for Machine Endianness +------- +```` +static const unsigned char b[4] = {0x0,0x0,0x0,0x1}; /* value 1 in big-endian*/ +int endianness = (1 == *(unsigned int*)b); /* 1=>big 0=>little endian +```` +References {#References} +======================== + +1. https://support.hdfgroup.org/HDF5/doc/Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf +2. https://support.hdfgroup.org/HDF5/doc/TechNotes/TechNote-HDF5-CompressionTroubleshooting.pdf +3. https://portal.hdfgroup.org/display/support/Contributions#Contributions-filters +4. https://support.hdfgroup.org/services/contributions.html#filters +5. https://support.hdfgroup.org/HDF5/doc/RM/RM_H5.html + +Point of Contact +================ + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu +__Initial Version__: 1/10/2018
+__Last Revised__: 2/5/2018 + diff --git a/contrib/netcdf/4.4.1.1/docs/footer.html b/contrib/netcdf/netcdf-c-4.6.2/docs/footer.html old mode 100755 new mode 100644 similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/footer.html rename to contrib/netcdf/netcdf-c-4.6.2/docs/footer.html diff --git a/contrib/netcdf/4.4.1.1/docs/groups.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/groups.dox similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/groups.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/groups.dox diff --git a/contrib/netcdf/4.4.1.1/docs/guide.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/guide.dox similarity index 90% rename from contrib/netcdf/4.4.1.1/docs/guide.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/guide.dox index a26f791f6c7..84ddd7ac017 100644 --- a/contrib/netcdf/4.4.1.1/docs/guide.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/guide.dox @@ -8,9 +8,12 @@ - \subpage netcdf_data_set_components - \subpage netcdf_perf_chunking - \subpage netcdf_utilities_guide -- \subpage dap_support +- \subpage compress - \subpage BestPractices +- \subpage user_defined_formats - \subpage users_guide_appendices +- \subpage dap2 +- \subpage dap4

The Purpose of NetCDF

@@ -83,7 +86,15 @@ affecting existing programs. The physical representation of netCDF data is designed to be independent of the computer on which the data were written. -Unidata supports the netCDF interfaces for C (see NetCDF-C User's Guide), FORTRAN 77 (see NetCDF Fortran 77 Interface Guide), FORTRAN 90 (see NetCDF Fortran 90 Interface Guide), and C++ (see NetCDF C++ Interface Guide). +Unidata supports the netCDF interfaces for C (see NetCDF-C User's +Guide), FORTRAN 77 (see NetCDF Fortran 77 Interface Guide), FORTRAN 90 (see NetCDF Fortran 90 Interface Guide), and C++ (see NetCDF C++ Interface Guide). The netCDF library is supported for various UNIX operating systems. A MS Windows port is also available. The software is also ported and @@ -104,19 +115,30 @@ is the default format for all versions of netCDF. In version 3.6.0 a new binary format was introduced, 64-bit offset format. Nearly identical to netCDF classic format, it uses 64-bit offsets (hence the name), and allows users to create far larger -datasets. +datasets. This format is also referred as CDF-2, because it bears the signature +string "CDF2" in the file header. After this extension, the classic file +format (i.e. not supporting 64-bit offsets) is now referred as CDF-1. In version 4.0.0 a third binary format was introduced: the HDF5 format. Starting with this version, the netCDF library can use HDF5 files as its base format. (Only HDF5 files created with netCDF-4 can be understood by netCDF-4). -By default, netCDF uses the classic format. To use the 64-bit offset -or netCDF-4/HDF5 format, set the appropriate constant when creating -the file. +Starting from version 4.4.0, netCDF included the support of CDF-5 format. In +order to allows defining large array variables with more than 4-billion +elements, CDF-5 replaces most of the 32-bit integers used to describe metadata +in file header with 64-bit integers. In addition, it supports the following new +external data types: NC_UBYTE, NC_USHORT, NC_UINT, NC_INT64, and NC_UINT64. The +CDF-5 format specifications can be found in +(http://cucis.ece.northwestern.edu/projects/PnetCDF/CDF-5.html). + +The classic file formats are now referring to the collection of CDF-1, 2 and 5 +formats. By default, netCDF uses the classic format (CDF-1). To use the CDF-2, +CDF-5, or netCDF-4/HDF5 format, set the appropriate constant in the file mode +argument when creating the file. To achieve network-transparency (machine-independence), netCDF classic -and 64-bit offset formats are implemented in terms of an external +formats are implemented in terms of an external representation much like XDR (eXternal Data Representation, see http://www.ietf.org/rfc/rfc1832.txt), a standard for describing and encoding data. This representation provides encoding of data into @@ -126,68 +148,81 @@ be encoded and decoded in a consistent way. The IEEE 754 floating-point standard is used for floating-point data representation. -Descriptions of the overall structure of netCDF classic and 64-bit -offset files are provided later in this manual. See Structure. +Descriptions of the overall structure of netCDF classic files are provided +later in this manual. See \ref file_structure_and_performance. -The details of the classic and 64-bit offset formats are described in -an appendix. See File Format. However, users are discouraged from +The details of the CDF-1 and CDF-2 formats are described in +an appendix. See \ref netcdf_format. However, users are discouraged from using the format specification to develop independent low-level software for reading and writing netCDF files, because this could lead to compatibility problems if the format is ever modified. \subsection select_format How to Select the Format -With three different base formats, care must be taken in creating data +With four different base formats, care must be taken in creating data files to choose the correct base format. The format of a netCDF file is determined at create time. When opening an existing netCDF file the netCDF library will transparently detect its format and adjust accordingly. However, -netCDF library versions earlier than 3.6.0 cannot read 64-bit offset -format files, and library versions before 4.0 can't read netCDF-4/HDF5 -files. NetCDF classic format files (even if created by version 3.6.0 +netCDF library versions earlier than 3.6.0 cannot read CDF-2 +format files, library versions before 4.0 can't read netCDF-4/HDF5 +files, and versions before 4.4.0 cannot read CDF-5 files. +NetCDF classic format files (even if created by version 3.6.0 or later) remain compatible with older versions of the netCDF library. -Users are encouraged to use netCDF classic format to distribute data, +Users are encouraged to use netCDF classic CDF-1 format to distribute data, for maximum portability. -To select 64-bit offset or netCDF-4 format files, C programmers should -use flag NC_64BIT_OFFSET or NC_NETCDF4 in function nc_create. See -nc_create. +To select CDF-2, CDF-5 or netCDF-4 format files, C programmers should use flag +NC_64BIT_OFFSET, NC_64BIT_DATA, or NC_NETCDF4 respectively in function +nc_create(). -In Fortran, use flag nf_64bit_offset or nf_format_netcdf4 in function -NF_CREATE. See NF_CREATE. +In Fortran, use flag nf_64bit_offset, nf_64bit_data, or nf_format_netcdf4 in +function NF_CREATE. See NF_CREATE. It is also possible to change the default creation format, to convert a large body of code without changing every create call. C programmers -see nc_set_default_format. Fortran programs see NF_SET_DEFAULT_FORMAT. +see nc_set_default_format(). Fortran programs see NF_SET_DEFAULT_FORMAT. -\subsection classic_format NetCDF Classic Format +\subsection classic_format NetCDF Classic Format (CDF-1) The original netCDF format is identified using four bytes in the file -header. All files in this format have “CDF\001” at the beginning of -the file. In this documentation this format is referred to as “netCDF -classic format.” +header. All files in this format have "CDF\001" at the beginning of +the file. In this documentation this format is referred to as CDF-1 +format. -NetCDF classic format is identical to the format used by every +NetCDF CDF-1 format is identical to the format used by every previous version of netCDF. It has maximum portability, and is still the default netCDF format. -For some users, the various 2 GiB format limitations of the classic -format become a problem. (see Classic Limitations). 1.4.2 NetCDF -64-bit Offset Format +\subsection netcdf_64bit_offset_format NetCDF 64-bit Offset Format (CDF-2) +For some users, the various 2 GiB format limitations of the classic +format become a problem. (see \ref limitations). For these users, 64-bit offset format is a natural choice. It greatly -eases the size restrictions of netCDF classic files (see 64 bit Offset -Limitations). +eases the size restrictions of netCDF classic files (see \ref +limitations). + +Files with the 64-bit offsets are identified with a "CDF\002" at the +beginning of the file. In this documentation this format is called +CDF-2 format. + +Since CDF-2 format was introduced in version 3.6.0, earlier +versions of the netCDF library can't read CDF-2 files. + +\subsection netcdf_64bit_data_format NetCDF 64-bit Data Format (CDF-5) + +To allow large variables with more than 4-billion array elements, +64-bit data format is develop to support such I/O requests. -Files with the 64-bit offsets are identified with a “CDF\002” at the +Files with the 64-bit data are identified with a "CDF\005" at the beginning of the file. In this documentation this format is called -“64-bit offset format.” +CDF-5 format. -Since 64-bit offset format was introduced in version 3.6.0, earlier -versions of the netCDF library can't read 64-bit offset files. +Since CDF-5 format was introduced in version 4.4.0, earlier +versions of the netCDF library can't read CDF-5 files. \subsection netcdf_4_format NetCDF-4 Format @@ -210,7 +245,9 @@ NetCDF-4 files can't be read by any version of the netCDF library previous to 4.0. (But they can be read by HDF5, version 1.8.0 or better). -For more discussion of format issues see The NetCDF Tutorial. +For more discussion of format issues see The +NetCDF Tutorial. \section architecture NetCDF Library Architecture @@ -224,7 +261,7 @@ The netCDF C-based libraries depend on a core C library and some externally deve - NetCDF-Java is an independent implementation, not shown here - C-based 3rd-party netCDF APIs for other languages include Python, Ruby, Perl, Fortran-2003, MATLAB, IDL, and R - Libraries that don't support netCDF-4 include Perl and old C++ -- 3rd party libraries are optional (HDF5, HDF4, zlib, szlib, pnetcdf, libcurl), depending on what features are needed and how netCDF is configured +- 3rd party libraries are optional (HDF5, HDF4, zlib, szlib, PnetCDF, libcurl), depending on what features are needed and how netCDF is configured - "Apps" in the above means applications, not mobile apps! \section performance What about Performance? @@ -249,7 +286,7 @@ designing and implementing netCDF, it is still possible to use the netCDF interface to access data in inefficient ways: for example, by requesting a slice of data that requires a single value from each record. Advice on how to use the interface efficiently is provided in -Structure. +\ref file_structure_and_performance. The use of HDF5 as a data format adds significant overhead in metadata operations, less so in data access operations. We continue to study @@ -268,7 +305,7 @@ Attributes play a vital role in providing ancillary information. It is important to use all the relevant standard attributes using the relevant conventions. For a description of reserved attributes (used by the netCDF library) and attribute conventions for generic -application software, see Attribute Conventions. +application software, see \ref attribute_conventions. A number of groups have defined their own additional conventions and styles for netCDF data. Descriptions of these conventions, as well as @@ -289,32 +326,32 @@ its implementation in software. Some of these limitations have been removed or relaxed in netCDF-4 files, but still apply to netCDF classic and netCDF 64-bit offset files. -Currently, netCDF classic and 64-bit offset formats offer a limited +NetCDF classic CDF-1 and CDF-2 formats offer a limited number of external numeric data types: 8-, 16-, 32-bit integers, or -32- or 64-bit floating-point numbers. (The netCDF-4 format adds 64-bit -integer types and unsigned integer types.) +32- or 64-bit floating-point numbers. The CDF-5 and netCDF-4 formats add 64-bit +integer types and unsigned integer types. With the netCDF-4/HDF5 format, new unsigned integers (of various sizes), 64-bit integers, and the string type allow improved expression of meaning in scientific data. The new VLEN (variable length) and COMPOUND types allow users to organize data in new ways. -With the classic netCDF file format, there are constraints that limit +With the classic CDF-1 file format, there are constraints that limit how a dataset is structured to store more than 2 GiBytes (a GiByte is 2^30 or 1,073,741,824 bytes, as compared to a Gbyte, which is -1,000,000,000 bytes.) of data in a single netCDF dataset. (see Classic -Limitations). This limitation is a result of 32-bit offsets used for +1,000,000,000 bytes.) of data in a single netCDF dataset. (see \ref +limitations). This limitation is a result of 32-bit offsets used for storing relative offsets within a classic netCDF format file. Since one of the goals of netCDF is portable data, and some file systems still can't deal with files larger than 2 GiB, it is best to keep files that must be portable below this limit. Nevertheless, it is possible to create and access netCDF files larger than 2 GiB on -platforms that provide support for such files (see Large File -Support). +platforms that provide support for such files (see +\ref large_file_support). -The new 64-bit offset format allows large files, and makes it easy to +The CDF-2 format allows large files, and makes it easy to create to create fixed variables of about 4 GiB, and record variables -of about 4 GiB per record. (see 64 bit Offset Limitations). However, +of about 4 GiB per record. (see \ref netcdf_64bit_offset_format). However, old netCDF applications will not be able to read the 64-bit offset files until they are upgraded to at least version 3.6.0 of netCDF (i.e. the version in which 64-bit offset format was introduced). @@ -324,7 +361,11 @@ and files can be as large as the underlying file system supports. NetCDF-4/HDF5 files are unreadable to the netCDF library before version 4.0. -Another limitation of the classic (and 64-bit offset) model is that +Similarly, CDF-5 format uses 64-bit integers to allow users to define +large variables. CDF-5 files are not unreadable to the netCDF library +before version 4.4.0. + +Another limitation of the classic formats (CDF-1, 2 and 5) is that only one unlimited (changeable) dimension is permitted for each netCDF data set. Multiple variables can share an unlimited dimension, but then they must all grow together. Hence the classic netCDF model does @@ -359,8 +400,8 @@ kinds of data). A data model tailored to capture the shared context among researchers within one discipline may not be appropriate for sharing or combining data from multiple disciplines. -The classic netCDF data model (which is used for classic-format and -64-bit offset format data) does not support nested data structures +The classic netCDF data model (which is used for classic CDF-1, 2 and 5 format +data) does not support nested data structures such as trees, nested arrays, or other recursive structures. Through use of indirection and conventions it is possible to represent some kinds of nested structures, but the result may fall short of the @@ -372,20 +413,15 @@ of types. The VLEN type allows efficient storage of ragged arrays, and the introduction of hierarchical groups allows users new ways to organize data. -Finally, using the netCDF-3 programming interfaces, concurrent access -to a netCDF dataset is limited. One writer and multiple readers may -access data in a single dataset simultaneously, but there is no -support for multiple concurrent writers. - NetCDF-4 supports parallel read/write access to netCDF-4/HDF5 files, using the underlying HDF5 library and parallel read/write access to -classic and 64-bit offset files using the parallel-netcdf library. +classic files using the PnetCDf library. For more information about HDF5, see the HDF5 web site: http://hdfgroup.org/HDF5/. -For more information about parallel-netcdf, see their web site: -http://www.mcs.anl.gov/parallel-netcdf. +For more information about PnetCDF, see their web site: +https://parallel-netcdf.github.io/. \page netcdf_data_set_components The Components of a NetCDF Data Set @@ -434,8 +470,7 @@ and variable may not have the same name within the same group, and similarly for sub-groups of that group.) Groups and user-defined types are only available in files created in -the netCDF-4/HDF5 format. They are not available for classic or 64-bit -offset format files. +the netCDF-4/HDF5 format. They are not available for classic format files. \section dimensions Dimensions @@ -446,8 +481,8 @@ model-run-number. A netCDF dimension has both a name and a length. -A dimension length is an arbitrary positive integer, except that one -dimension in a classic or 64-bit offset netCDF dataset can have the +A dimension length is an arbitrary positive integer, except that only one +dimension in a classic netCDF dataset can have the length UNLIMITED. In a netCDF-4 dataset, any number of unlimited dimensions can be used. @@ -456,7 +491,7 @@ dimension. A variable with an unlimited dimension can grow to any length along that dimension. The unlimited dimension index is like a record number in conventional record-oriented files. -A netCDF classic or 64-bit offset dataset can have at most one +A netCDF classic dataset can have at most one unlimited dimension, but need not have any. If a variable has an unlimited dimension, that dimension must be the most significant (slowest changing) one. Thus any unlimited dimension must be the first @@ -510,15 +545,16 @@ associated attributes, which may be added, deleted or changed after the variable is created. A variable external data type is one of a small set of netCDF -types. In classic and 64-bit offset files, only the original six types +types. In classic CDF-1 and 2 files, only the original six types are available (byte, character, short, int, float, and -double). Variables in netCDF-4 files may also use unsigned short, -unsigned int, 64-bit int, unsigned 64-bit int, or string. Or the user +double). CDF-5 adds unsigned byte, unsigned short, unsigned int, 64-bit int, +and unsigned 64-bit int. In netCDF-4, variables may also use these additional +data types, plus the string data type. Or the user may define a type, as an opaque blob of bytes, as an array of variable length arrays, or as a compound type, which acts like a C struct. (See \ref data_type). -In the CDL notation, classic and 64-bit offset type can be used. They +In the CDL notation, classic data type can be used. They are given the simpler names byte, char, short, int, float, and double. The name real may be used as a synonym for float in the CDL notation. The name long is a deprecated synonym for int. For the exact @@ -542,17 +578,17 @@ for variables with dimensions, or for scalar variables. In the above CDL example there are six variables. As discussed below, -four of these are coordinate variables (See coordinate_variables). The -remaining variables (sometimes called primary variables), temp and rh, -contain what is usually thought of as the data. Each of these -variables has the unlimited dimension time as its first dimension, so -they are called record variables. A variable that is not a record -variable has a fixed length (number of data values) given by the -product of its dimension lengths. The length of a record variable is -also the product of its dimension lengths, but in this case the -product is variable because it involves the length of the unlimited -dimension, which can vary. The length of the unlimited dimension is -the number of records. +four of these are coordinate variables (See \ref +coordinate_variables). The remaining variables (sometimes called +primary variables), temp and rh, contain what is usually thought of as +the data. Each of these variables has the unlimited dimension time as +its first dimension, so they are called record variables. A variable +that is not a record variable has a fixed length (number of data +values) given by the product of its dimension lengths. The length of a +record variable is also the product of its dimension lengths, but in +this case the product is variable because it involves the length of +the unlimited dimension, which can vary. The length of the unlimited +dimension is the number of records. \section coordinate_variables Coordinate Variables @@ -652,13 +688,13 @@ For the netCDF classic model, the type and length of each attribute are not explicitly declared in CDL; they are derived from the values assigned to the attribute. All values of an attribute must be of the same type. The notation used for constant values of the various netCDF -types is discussed later (see CDL Constants). +types is discussed later (see \ref cdl_syntax). The extended CDL syntax for the enhanced data model supported by netCDF-4 allows optional type specifications, including user-defined types, for attributes of user-defined types. See ncdump output or the reference documentation for ncgen for details of the extended CDL -systax. +syntax. In the netCDF example (see \ref data_model), units is an attribute for the variable lat that has a 13-character array value @@ -676,13 +712,13 @@ attribute conventions and it is strongly recommended that these be followed unless there are good reasons for not doing so. For information about units, long_name, valid_min, valid_max, valid_range, scale_factor, add_offset, _FillValue, and other conventional -attributes, see Attribute Conventions. +attributes, see \ref attribute_conventions. Attributes may be added to a netCDF dataset long after it is first defined, so you don't have to anticipate all potentially useful -attributes. However adding new attributes to an existing classic or -64-bit offset format dataset can incur the same expense as copying the -dataset. For a more extensive discussion see Structure. +attributes. However adding new attributes to an existing classic +format dataset can incur the same expense as copying the +dataset. For a more extensive discussion see \ref file_structure_and_performance. \section differences_atts_vars Differences between Attributes and Variables @@ -750,11 +786,14 @@ characters. Some widely used conventions restrict names to only alphanumeric characters or underscores. -\note Note that, when using the DAP2 protocol to access netCDF data, there are \em reserved keywords, the use of which may result in undefined behavior. See \ref dap2_reserved_keywords for more information. +\note Note that, when using the DAP2 protocol to access netCDF data, +there are \em reserved keywords, the use of which may result in +undefined behavior. See \ref dap2_reserved_keywords for more +information. \section archival Is NetCDF a Good Archive Format? -NetCDF classic or 64-bit offset formats can be used as a +NetCDF classic formats can be used as a general-purpose archive format for storing arrays. Compression of data is possible with netCDF (e.g., using arrays of eight-bit or 16-bit integers to encode low-resolution floating-point numbers instead of @@ -977,17 +1016,17 @@ servers, full support for the enhanced netCDF-4 data model in the ncgen utility, a new nccopy utility for copying and conversion among netCDF format variants, ability to read some HDF4/HDF5 data archives through the netCDF C or Fortran interfaces, support for parallel I/O -on netCDF classic and 64-bit offset files using the parallel-netcdf -(formerly pnetcdf) library from Argonne/Northwestern, a new nc-config +on netCDF classic files (CDF-1, 2, and 5) using the PnetCDF +library from Argonne/Northwestern, a new nc-config utility to help compile and link programs that use netCDF, inclusion -of the UDUNITS library for hadling “units” attributes, and inclusion +of the UDUNITS library for handling “units” attributes, and inclusion of libcf to assist in creating data compliant with the Climate and Forecast (CF) metadata conventions. In September, 2010, the Netcdf-Java/CDM (Common Data Model) version 4.2 library was declared stable and made available to users. This 100%-Java implementation provided a read-write interface to netCDF-3 -classic and 64-bit offset data, as well as a read-only interface to +classic format files, as well as a read-only interface to netCDF-4 enhanced model data and many other formats of scientific data through a common (CDM) interface. More recent releases support writing netCDF-4 data. The NetCDF-Java library also @@ -1013,7 +1052,7 @@ a different representation from the external type of the variable, a conversion between the internal type and external type will take place when the data is read or written. -Access to data in classic and 64-bit offset format is direct. Access +Access to data in classic formats is direct. Access to netCDF-4 data is buffered by the HDF5 layer. In either case you can access a small subset of data from a large dataset efficiently, without first accessing all the data that precedes it. @@ -1081,11 +1120,11 @@ access. \section c_array_section_access A C Example of Array-Section Access -Assume that in our earlier example of a netCDF dataset (see Network -Common Data Form Language (CDL)), we wish to read a cross-section of -all the data for the temp variable at one level (say, the second), and -assume that there are currently three records (time values) in the -netCDF dataset. Recall that the dimensions are defined as +Assume that in our earlier example of a netCDF dataset, we wish to +read a cross-section of all the data for the temp variable at one +level (say, the second), and assume that there are currently three +records (time values) in the netCDF dataset. Recall that the +dimensions are defined as \code lat = 5, lon = 10, level = 4, time = unlimited; @@ -1217,8 +1256,8 @@ array section access instead. \section classic_file_parts Parts of a NetCDF Classic File -A netCDF classic or 64-bit offset dataset is stored as a single file -comprising two parts: +A netCDF classic dataset (including CDF-1, 2, and 5 formats) is stored as a +single file comprising two parts: - a header, containing all the information about dimensions, attributes, and variables except for the variable data; - a data part, comprising fixed-size data, containing the data for @@ -1250,24 +1289,22 @@ datasets self-describing. A disadvantage of this organization is that any operation on a netCDF dataset that requires the header to grow (or, less likely, to shrink), for example adding new dimensions or new variables, requires moving the data by copying it. This expense is -incurred when the enddef function is called: nc_enddef in C (see -nc_enddef), NF_ENDDEF in Fortran (see NF_ENDDEF), after a previous -call to the redef function: nc_redef in C (see nc_redef) or NF_REDEF -in Fortran (see NF_REDEF). If you create all necessary dimensions, -variables, and attributes before writing data, and avoid later -additions and renamings of netCDF components that require more space -in the header part of the file, you avoid the cost associated with -later changing the header. +incurred when the enddef function is called: nc_enddef() in C, +NF_ENDDEF() in Fortran, after a previous call to the redef function: +nc_redef() in C or NF_REDEF() in Fortran. If you create all necessary +dimensions, variables, and attributes before writing data, and avoid +later additions and renamings of netCDF components that require more +space in the header part of the file, you avoid the cost associated +with later changing the header. Alternatively, you can use an alternative version of the enddef function with two underbar characters instead of one to explicitly reserve extra space in the file header when the file is created: in C -nc__enddef (see nc__enddef), in Fortran NF__ENDDEF (see NF__ENDDEF), -after a previous call to the redef function. This avoids the expense -of moving all the data later by reserving enough extra space in the -header to accommodate anticipated changes, such as the addition of new -attributes or the extension of existing string attributes to hold -longer strings. +nc__enddef(), in Fortran NF__ENDDEF(), after a previous call to the +redef function. This avoids the expense of moving all the data later +by reserving enough extra space in the header to accommodate +anticipated changes, such as the addition of new attributes or the +extension of existing string attributes to hold longer strings. When the size of the header is changed, data in the file is moved, and the location of data values in the file changes. If another program is @@ -1323,8 +1360,8 @@ dimension ids. XDR is a standard for describing and encoding data and a library of functions for external data representation, allowing programmers to -encode data structures in a machine-independent way. Classic or 64-bit -offset netCDF employs an extended form of XDR for representing +encode data structures in a machine-independent way. Classic +netCDF employs an extended form of XDR for representing information in the header part and the data parts. This extended XDR is used to write portable data that can be read on any other machine for which the library has been implemented. @@ -1351,13 +1388,23 @@ this section applies only to systems with LFS. The original binary format of netCDF (classic format) limits the size of data files by using a signed 32-bit offset within its internal structure. Files larger than 2 GiB can be created, with certain -limitations. See Classic Limitations. +limitations. See \ref limitations. In version 3.6.0, netCDF included its first-ever variant of the underlying data format. The new format introduced in 3.6.0 uses 64-bit -file offsets in place of the 32-bit offsets. There are still some +file offsets in place of the 32-bit offsets. The new format is also referred as +CDF-2 format as it bears a signature string of "CDF2" in the file header. +There are still some limits on the sizes of variables, but the new format can create very -large datasets. See 64 bit Offset Limitations. +large datasets. See \ref netcdf_64bit_offset_format. + +Starting from version 4.4.0, netCDF included the support of CDF-5 format. In +order to allows defining large array variables with more than 4-billion +elements, CDF-5 replaces most of the 32-bit integers used to describe metadata +with 64-bit integers. In addition, it supports the following new external data +types: NC_UBYTE, NC_USHORT, NC_UINT, NC_INT64, and NC_UINT64. The CDF-5 format +specifications can be found in +(http://cucis.ece.northwestern.edu/projects/PnetCDF/CDF-5.html). NetCDF-4 variables and files can be any size supported by the underlying file system. @@ -1372,31 +1419,27 @@ about 1.15e+18 bytes. Note also that all sizes are really 4 bytes less than the ones given below. For example the maximum size of a fixed variable in netCDF 3.6 classic format is really 2 GiB - 4 bytes. -Limit No LFS v3.5 v3.6/classic v3.6/64-bit offset v4.0/netCDF-4 - -Max File Size 2 GiB 8 EiB 8 EiB 8 EiB ?? - -Max Number of Fixed Vars > 2 GiB 0 1 (last) 1 (last) 2^32 ?? - -Max Record Vars w/ Rec Size > 2 GiB 0 1 (last) 1 (last) 2^32 ?? - -Max Size of Fixed/Record Size of Record Var 2 GiB 2 GiB 2 GiB 4 GiB ?? - -Max Record Size 2 GiB/nrecs 4 GiB 8 EiB/nrecs 8 EiB/nrecs ?? +Limits | No LFS | v3.5 | v3.6/classic | v3.6/64-bit offset | v4.0/netCDF-4 and CDF-5 +-------------------------------------------|------------|---------|---------------|---------------------|----------------- +Max File Size | 2 GiB | 8 EiB | 8 EiB | 8 EiB | unlimited +Max Number of Fixed Vars > 2 GiB | 0 | 1 (last)| 1 (last) | 2^32 | unlimited +Max Record Vars w/ Rec Size > 2 GiB | 0 | 1 (last)| 1 (last) | 2^32 | unlimited +Max Size of Fixed/Record Size of Record Var| 2 GiB | 2 GiB | 2 GiB | 4 GiB | unlimited +Max Record Size | 2 GiB/nrecs| 4 GiB | 8 EiB/nrecs | 8 EiB/nrecs | unlimited -For more information about the different file formats of netCDF See -Which Format. +For more information about the different file formats of netCDF see +\ref select_format "How to Select the Format". \section offset_format_limitations NetCDF 64-bit Offset Format Limitations -Although the 64-bit offset format allows the creation of much larger +Although the 64-bit offset format (CDF-2) allows the creation of much larger netCDF files than was possible with the classic format, there are still some restrictions on the size of variables. It's important to note that without Large File Support (LFS) in the operating system, it's impossible to create any file larger than 2 GiBytes. Assuming an operating system with LFS, the following -restrictions apply to the netCDF 64-bit offset format. +restrictions apply to the CDF-2 format. No fixed-size variable can require more than 2^32 - 4 bytes (i.e. 4GiB - 4 bytes, or 4,294,967,292 bytes) of storage for its data, unless it @@ -1404,13 +1447,13 @@ is the last fixed-size variable and there are no record variables. When there are no record variables, the last fixed-size variable can be any size supported by the file system, e.g. terabytes. -A 64-bit offset format netCDF file can have up to 2^32 - 1 fixed sized +A CDF-2 file can have up to 2^32 - 1 fixed sized variables, each under 4GiB in size. If there are no record variables in the file the last fixed variable can be any size. No record variable can require more than 2^32 - 4 bytes of storage for each record's worth of data, unless it is the last record variable. A -64-bit offset format netCDF file can have up to 2^32 - 1 records, of +CDF-2 file can have up to 2^32 - 1 records, of up to 2^32 - 1 variables, as long as the size of one record's data for each record variable except the last is less than 4 GiB - 4. @@ -1421,12 +1464,12 @@ boundaries. There are important constraints on the structure of large netCDF classic files that result from the 32-bit relative offsets that are -part of the netCDF classic file format: +part of the netCDF classic file format (CDF-1): The maximum size of a record in the classic format in versions 3.5.1 and earlier is 2^32 - 4 bytes, or about 4 GiB. In versions 3.6.0 and later, there is no such restriction on total record size for the -classic format or 64-bit offset format. +classic formats. If you don't use the unlimited dimension, only one variable can exceed 2 GiB in size, but it can be as large as the underlying file system @@ -1480,10 +1523,10 @@ the data in a 2.4 Tbyte file might be something like: \section netcdf_3_io The NetCDF-3 I/O Layer -The following discussion applies only to netCDF classic and 64-bit -offset files. For netCDF-4 files, the I/O layer is the HDF5 library. +The following discussion applies only to netCDF classic files (i.e. CDF-1, 2, +and 5 formats). For netCDF-4 files, the I/O layer is the HDF5 library. -For netCDF classic and 64-bit offset files, an I/O layer implemented +For netCDF classic offset files, an I/O layer implemented much like the C standard I/O (stdio) library is used by netCDF to read and write portable data to netCDF datasets. Hence an understanding of the standard I/O library provides answers to many questions about @@ -1495,8 +1538,8 @@ dataset while other processes read it. Data reads and writes are no more atomic than calls to stdio fread() and fwrite(). An nc_sync/NF_SYNC call is analogous to the fflush call in the C standard I/O library, writing unwritten buffered data so -other processes can read it; The C function nc_sync (see nc_sync), or -the Fortran function NF_SYNC (see NF_SYNC), also brings header changes +other processes can read it; The C function nc_sync(), or +the Fortran function NF_SYNC(), also brings header changes up-to-date (for example, changes to attribute values). Opening the file with the NC_SHARE (in C) or the NF_SHARE (in Fortran) is analogous to setting a stdio stream to be unbuffered with the _IONBF @@ -1508,7 +1551,7 @@ operations can influence I/O performance significantly. Reading data in the same order in which it was written within each record will minimize buffer flushes. -You should not expect netCDF classic or 64-bit offset format data +You should not expect netCDF classic format data access to work with multiple writers having the same file open for writing simultaneously. @@ -1536,12 +1579,12 @@ NetCDF uses the HDF5 parallel programming model for parallel I/O with netCDF-4/HDF5 files. The HDF5 tutorial (http://hdfgroup.org/HDF5//HDF5/Tutor) is a good reference. -For classic and 64-bit offset files, netCDF uses the parallel-netcdf -(formerly pnetcdf) library from Argonne National Labs/Nortwestern -University. For parallel access of classic and 64-bit offset files, -netCDF must be configured with the –with-pnetcdf option at build -time. See the parallel-netcdf site for more information -(http://www.mcs.anl.gov/parallel-netcdf). +For classic files, netCDF uses the PnetCDF library from Argonne National +Labs/Northwestern University. For parallel access of files in classic formats, +netCDF must be configured with the --with-pnetcdf option at build time. See the +PnetCDF site for more information (https://parallel-netcdf.github.io). +Addition information and example programs can be found in +(http://cucis.ece.northwestern.edu/projects/PnetCDF/#InteroperabilityWithNetCDF4) \section interoperability_with_hdf5 Interoperability with HDF5 @@ -1610,7 +1653,7 @@ script. Currently they are set to 10 and 64 MB.) To change the default chunk cache size, use the set_chunk_cache function before opening the file with nc_set_chunk_cache(). Fortran 77 -programmers see NF_SET_CHUNK_CACHE). Fortran 90 programmers use the +programmers see NF_SET_CHUNK_CACHE()). Fortran 90 programmers use the optional cache_size, cache_nelems, and cache_preemption parameters to nf90_open/nf90_create to change the chunk size before opening the file. @@ -1618,11 +1661,17 @@ file. To change the per-variable cache size, use the set_var_chunk_cache function at any time on an open file. C programmers see nc_set_var_chunk_cache(), Fortran 77 programmers see -NF_SET_VAR_CHUNK_CACHE, ). +NF_SET_VAR_CHUNK_CACHE(). \section default_chunking_4_1 The Default Chunking Scheme -Unfortunately, there are no general-purpose chunking defaults that are optimal for all uses. Different patterns of access lead to different chunk shapes and sizes for optimum access. Optimizing for a single specific pattern of access can degrade performance for other access patterns. By creating or rewriting datasets using appropriate chunking, it is sometimes possible to support efficient access for multiple patterns of access. +Unfortunately, there are no general-purpose chunking defaults that are +optimal for all uses. Different patterns of access lead to different +chunk shapes and sizes for optimum access. Optimizing for a single +specific pattern of access can degrade performance for other access +patterns. By creating or rewriting datasets using appropriate +chunking, it is sometimes possible to support efficient access for +multiple patterns of access. If you don't know or can't anticipate what access patterns will be most common, or you want to store a variable in a way that will support reasonable access along any of its dimensions, you can use the library's default chunking strategy. @@ -1780,7 +1829,7 @@ double slash characters '//' on any line. A CDL description for a classic model file consists of three optional parts: dimensions, variables, and data. The variable part may contain variable declarations and attribute assignments. For the enhanced -model supported by netCDF-4, a CDL decription may also includes +model supported by netCDF-4, a CDL description may also include groups, subgroups, and user-defined types. A dimension is used to define the shape of one or more of the @@ -1896,8 +1945,8 @@ NetCDF-4 supports the additional primitive types: - ubyte - Unsigned eight-bit integers. - ushort - Unsigned 16-bit integers. - uint - Unsigned 32-bit integers. -- int64 - 64-bit singed integers. -- uint64 - Unsigned 64-bit singed integers. +- int64 - 64-bit signed integers. +- uint64 - Unsigned 64-bit signed integers. - string - Variable-length string of characters Except for the added numeric data-types byte and ubyte, CDL supports @@ -1933,6 +1982,9 @@ netCDF file or other external representation, the characters are UTF-8 encoded (note that ASCII is a subset of UTF-8). Libraries may use different internal representations, for example the Java library uses UTF-16 encoding. +Note especially that Microsoft Windows does not support UTF-8 +encoding, only ASCII and UTF-16. So using netcdf on Windows may +cause some problems with respect to objects like file paths. The netCDF char type contains uninterpreted characters, one character per byte. Typically these contain 7-bit ASCII characters, but the @@ -2224,7 +2276,7 @@ possible floating-point values would requires '-p 9,17'.) @par -k Show \e kind of netCDF file, that is which format variant the file uses. Other options are ignored if this option is specified. Output will be -one of 'classic'. '64-bit offset', 'netCDF-4', or 'netCDF-4 classic +one of 'classic'. '64-bit offset', '64-bit data', 'netCDF-4', or 'netCDF-4 classic model'. @par -s @@ -2333,7 +2385,7 @@ ncgen(1), netcdf(3) \subsection ncdump_string_note NOTE ON STRING OUTPUT -For classic, 64-bit offset or netCDF-4 classic model data, \b ncdump +For classic, 64-bit offset, 64-bit data, or netCDF-4 classic model data, \b ncdump generates line breaks after embedded newlines in displaying character data. This is not done for netCDF-4 files, because netCDF-4 supports arrays of real strings of varying length. @@ -2357,7 +2409,7 @@ The \b nccopy utility copies an input netCDF file in any supported format variant to an output netCDF file, optionally converting the output to any compatible netCDF format variant, compressing the data, or rechunking the data. For example, if built with the netCDF-3 -library, a netCDF classic file may be copied to a netCDF 64-bit offset +library, a classic CDF-1 file may be copied to a CDF-2 or CDF-5 file, permitting larger variables. If built with the netCDF-4 library, a netCDF classic file may be copied to a netCDF-4 file or to a netCDF-4 classic model file as well, permitting data compression, @@ -2366,7 +2418,7 @@ netCDF-4 features. If no output format is specified, with either \b -k \e kind_name or \e -kind_code, then the output will use the same -format as the input, unless the input is classic or 64-bit offset +format as the input, unless the input is classic format and either chunking or compression is specified, in which case the output will be netCDF-4 classic model format. Attempting some kinds of format conversion will result in an error, if the @@ -2392,7 +2444,8 @@ Use format name to specify the kind of file to be created and, by inference, the data model (i.e. netcdf-3 (classic) or netcdf-4 (enhanced)). The possible arguments are: \n 'nc3' or 'classic' => netCDF classic format \n - 'nc6' or '64-bit offset' => netCDF 64-bit format \n + 'nc6' or '64-bit offset' => netCDF 64-bit offset format \n + 'cdf5' => netCDF 64-bit data format \n 'nc4' or 'netCDF-4' => netCDF-4 format (enhanced data model) \n 'nc7' or 'netCDF-4 classic model' => netCDF-4 classic model format \n @@ -2407,7 +2460,8 @@ Use format numeric code (instead of format name) to specify the kind of file to and, by inference, the data model (i.e. netcdf-3 (classic) versus netcdf-4 (enhanced)). The numeric codes are: \n 3 => netcdf classic format \n - 6 => netCDF 64-bit format \n + 6 => netCDF 64-bit offset format (CDF_2) \n + 5 => netCDF 64-bit data format (CDF-5) \n 4 => netCDF-4 format (enhanced data model) \n 7 => netCDF-4 classic model format \n @@ -2423,7 +2477,7 @@ corresponds to no compression and 9 to maximum compression, with higher levels of compression requiring marginally more time to compress or uncompress than lower levels. Compression achieved may also depend on output chunking parameters. If this option is -specified for a classic format or 64-bit offset format input file, it +specified for a classic format input file, it is not necessary to also specify that the output should be netCDF-4 classic model, as that will be the default. If this option is not specified and the input file has compressed variables, the compression @@ -2601,7 +2655,7 @@ but no general algorithm for computing the optimum number of chunk cache elements has been implemented yet. \par -r -Read netCDF classic or 64-bit offset input file into a diskless netCDF +Read netCDF classic input file into a diskless netCDF file in memory before copying. Requires that input file be small enough to fit into memory. For \b nccopy, this doesn't seem to provide any significant speedup, so may not be a useful option. @@ -2648,9 +2702,9 @@ type, to the output file bar.nc: \code nccopy -d1 foo.nc bar.nc \endcode -If foo.nc was a classic or 64-bit offset netCDF file, bar.nc will be a -netCDF-4 classic model netCDF file, because the classic and 64-bit -offset format variants don't support compression. If foo.nc was a +If foo.nc was a classic netCDF file, bar.nc will be a +netCDF-4 classic model netCDF file, because the classic +formats don't support compression. If foo.nc was a netCDF-4 file with some variables compressed using various deflation levels, the output will also be a netCDF-4 file of the same type, but all the variables, including any uncompressed variables in the input, diff --git a/contrib/netcdf/4.4.1.1/docs/images/InstallTreeWindows.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/InstallTreeWindows.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/InstallTreeWindows.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/InstallTreeWindows.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/docs/images/Makefile.am similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/Makefile.am rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/Makefile.am diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/images/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/docs/images/Makefile.in new file mode 100644 index 00000000000..0f6de23e39d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/images/Makefile.in @@ -0,0 +1,554 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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/images +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +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__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +EXTRA_DIST = aqua.jpg chunking2.png compatibility3.png compression.png \ +groups.png nc4-model.png ncatts.png nc-classic-uml.png nccoords.png \ +ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png \ +deptree.jpg InstallTreeWindows.png + +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 --ignore-deps docs/images/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps docs/images/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-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 + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/4.4.1.1/docs/images/aqua.jpg b/contrib/netcdf/netcdf-c-4.6.2/docs/images/aqua.jpg similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/aqua.jpg rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/aqua.jpg diff --git a/contrib/netcdf/4.4.1.1/docs/images/chunking2.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/chunking2.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/chunking2.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/chunking2.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/compatibility3.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/compatibility3.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/compatibility3.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/compatibility3.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/compression.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/compression.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/compression.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/compression.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/deptree.jpg b/contrib/netcdf/netcdf-c-4.6.2/docs/images/deptree.jpg similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/deptree.jpg rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/deptree.jpg diff --git a/contrib/netcdf/4.4.1.1/docs/images/groups.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/groups.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/groups.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/groups.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/nc-classic-uml.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/nc-classic-uml.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/nc-classic-uml.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/nc-classic-uml.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/nc4-model.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/nc4-model.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/nc4-model.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/nc4-model.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/ncatts.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/ncatts.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/ncatts.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/ncatts.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/nccoords.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/nccoords.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/nccoords.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/nccoords.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/ncfile.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/ncfile.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/ncfile.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/ncfile.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/netcdf_architecture.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/netcdf_architecture.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/netcdf_architecture.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/netcdf_architecture.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/pnetcdf.png b/contrib/netcdf/netcdf-c-4.6.2/docs/images/pnetcdf.png similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/pnetcdf.png rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/pnetcdf.png diff --git a/contrib/netcdf/4.4.1.1/docs/images/terra.jpg b/contrib/netcdf/netcdf-c-4.6.2/docs/images/terra.jpg similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/images/terra.jpg rename to contrib/netcdf/netcdf-c-4.6.2/docs/images/terra.jpg diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/indexing.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/indexing.dox new file mode 100644 index 00000000000..5c74c68baa1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/indexing.dox @@ -0,0 +1,431 @@ +/** \file + +\internal + +\page nchashmap Indexed Access to Metadata Objects + +\tableofcontents + +The original internal representations of metadata in memory +relied on linear searching of lists to locate various objects +by name or by numeric id: by _varid_ or by _grpid_ for example. + +In recent years, the flaws in that approach have become obvious +as users create files with extremely large numbers of objects: +groups, variables, attributes, and dimensions. One case +has 14 megabytes of metadata. Creating and (especially) later +opening such files was exceedingly slow. + +This problem was partially alleviated in both netcdf-3 (libsrc) +and netcdf-4 (libsrc4) by adding name hashing tables. +However, and especially for netcdf-4, linear search still prevailed. + +A pervasive change has been made to try to change searches by name +or by id from O(n) to O(1). +This uses hashing for name-based search +and vectors for numeric id-based search. +All other cases were left as O(n) searches. + +This document describes the architecture and details of the netCDF +internal object lookup mechanisms now in place. + +\section Sindexed_searches Indexed Searches + +There are, as a rule, two searches that are used to locate +metadata object: (1) search by name and (2) search by +externally visible id (e.g. dimid or varid). + +It is currently the case that after all the metadata is read or +created, hashing is used for locating objects by name. In all +other cases -- apparently -- lookup is by linear search of a +of linked list. + +It is relevant that, once created, no metadata object -- except +attributes -- can be deleted. They can be renamed, but that +does not change the associated structure or id. Deletion only +occurs when an error occurs in creating an object or on invoking +"nc_close()". + +The numeric identifiers for dimensions, types, and groups are +all globally unique across a file. But note that variable id's +are not globally unique (IMO a bad design decision) but are only +unique within the containing group. Thus, in order to provide a +unique id for a variable it must be composed of the containing +group id plus the variable id. + +Note also that names are unique only within a group and with respect +to some kind of metadata. That is a group cannot have e.g. two +dimensions with the same name. But it can have a variable and a dimension +with the same name (as with coordinate variables). + +Finally, attribute names are unique only with respect to each other +and with respect to the containing object (a variable or a group). + +\section Sbasic_data_structures Basic Data Structures + +The basic data structures used by the new lookup mechanisms +are described in the following sections. + +\subsection Snclist NClist + +With rare exceptions, vectors of objects are maintained as +instances of NClist, which provides a dynamically extendible +vector of pointers: pointers to metadata objects in this case. +It is possible to append new objects or insert at a specific +vector offset, or overwrite an existing pointer at a specific +offset. + +The NClist structure definition is as follows. + +\code +typedef struct NClist { + size_t alloc; + size_t length; + void** content; +} NClist; +\endcode + +\subsection Snc_hashmap NC_hashmap + +The NC_hashmap type is a hash table mapping a string +(the key) to a data item. As a rule, the data item is a pointer to a +metadata object. The current implementation supports table +expansion when the # of entries in the table starts to get too +large. A simple linear rehash is used for collisions +and no separate hash-chain is used. This means that when +expanded, it must be completely rebuilt. The performance hit for +this has yet to be determined. The alternative is to move to some +form of extendible hashing as used in databases. + +The hashtable definition is as follows. + +\code +typedef struct NC_hashmap { + size_t size; + size_t count; + NC_hentry* table; +} NC_hashmap; +\endcode + +where size is the current allocated size and count is the +number of active entries in the table. The "table" field is +a vector of entries of this form. + +\code +typedef struct NC_hentry { + int flags; + uintptr_t data; + unsigned int hashkey; + size_t keysize; + char* key; +} NC_hentry; +\endcode + +The _flags_ field indicates the state of the entry and can be +in one of three disjoint states: + +1. ACTIVE - there is an object referenced in this entry +2. DELETED - an entry was deleted, but must be marked so + that linear rehash will work. +3. EMPTY - unused + +The "data" field is of type "uintptr_t". Note that we assume +that sizeof(unintptr_t) == sizeof(void*). This is very +important. It is supposed to be the case that a value of type +uintptr_t is an integer of sufficient size to hold a void* pointer. + +This means that the data field can hold an unsigned integer or a +void* pointer. As a pointer, it often points to an instance of a +variable, or dimension, or other object. + +The hashkey field is a CRC32 hash of the key. Note that comparing +hashkeys is not sufficient to ensure that the corresponding keys are +the same because hash collisions are possible. Even moving to, say, +64 bit keys, is probably not sufficient to avoid hash collisions. +A 128 bit key (e.g. MD5) might be sufficient but mathematical +investigation would be required. + +Since comparing only hash keys is not sufficient, it is necessary to store +a copy of the actual key. The key and keysize fields are used for this. + +\subsection Sncindex NCindex + +An "index" \(aka instance of type "NCindex"\) is a combination +of one NClist instance plus one NC_hashmap instance. +The hashmap maps a name to the position of the correspondingly +named object in the NClist part of the NCindex. + +An index is used to provide several kinds of lookup with respect +to a specific list of metadata objects. For example, the +subgroups of a group are stored using a vector of pointers to +the subgroup objects. This also provides information about +creation order, which is sometimes important. However, we often +need fast access to that vector by name so an NCindex object +provides these capabilities. The NCindex object contains: + +1. A vector into which the object pointers can be stored + and iterated over. +2. A map from name to the corresponding object index in the vector. + +Note that currently, NCindex is only used in libsrc4 and libhdf4. +But if performance issues warrant, it will also be used in +libsrc. + +Note also that alternative implementations are feasible that do not +use a hash table for name indexing, but rather keep a list sorted by name +and use binary search to do name-based lookup. If this alternative were +implemented, then it is probable that we could get rid of using the NC_hashmap +structure altogether for netcdf-4. There is a performance cost since binary +search is O(log n). In practice, it is probable that this is of negligable +effect. The advantage is that rename operations become considerably simpler. + +\section Sglobal_object_access Global Object Access + +As mentioned, dimension, group, and type external id's (dimid, +grpid, typeid) are unique across the whole file. It is therefore +convenient to store in memory a per-file vector for each object +type such that the external id of the object is the same as the +position of that object in the corresponding per-file +vector. This makes lookup by external id very efficient. +Note that this was already the case for netcdf-3 (libsrc) so +this is a change for libsrc4 only. + +The global set of dimensions, types, and groups is maintained by +three instances of NClist in the NC_FILE_INFO structure: +namely _alldims_, _alltypes_, and _allgroups_. +The position of the object within the corresponding list determines +the object's external id. Thus, a position of a dimension object within the +"alldims" field of the file structure determines its dimid. Similarly +for types and groups. + +\section Sper_group_object_access Per-Group Object Access + +Each group object (NC_GRP_INFO_T) contains five instances of +NCindex. One is for dimensions, one is for types, one is for +subgroups, one is for variables, and one is for attributes. An +index is used for two reasons. First, it allows name-based lookup +for these items. Second, the declaration order is maintained by +the list within the index's vector. Note that the position of +an object in a group index vector has no necessary +relationship to the position of that object within the global +vectors. + +Note however that the index vector for variables does define +the variable id, which is unique only within a group. +In this special case, the external id for the variable is +the same as its offset in the index's vector for the group. + +A note about typeids. Since user defined types have an external +id starting at NC_FIRSTUSERTYPEID, we leave the global type +vector entries 0..NC_FIRSTUSERTYPEID-1 empty. + +\section Smetadata_object_header Metadata Object Header + +Each metadata object (e.g. NC_DIM_INFO_T, NC_VAR_INFO_T) +now has what is called a "hdr" object as its first field. +This provides a form of pseudo-inheritance for these objects +because they can all be cast to "NC_OBJ" to get common information. +The structure of the header is as follows. + +\code +typedef struct NC_OBJ { + NC_SORT sort; + char* name; /* assumed to be null terminated */ + size_t id; + unsigned int hashkey; +} NC_OBJ; +\endcode + +The sort is one of the values _NCVAR_, _NCDIM_, _NCATT_, _NCTYP_, or _NCGRP_. +The name is assumed to be nul terminated. The id is the assigned id +for the object. The hashkey is the same hash value as used in nchashtable.c. + +\section Scliches Programming cliches + +\subsection Slookupname Lookup an Object by Name + +In the original code, the following _cliche_ (code snippet) +was common for looking up an object by name. +\code +NC_GRP_INFO_T* grp = ...; +... +NC_GRP_INFO_T* g; +... +for (g = grp->children; g; g = g->l.next) { + if(strcmp(name,g->name)==0) { + ... code to process matching grp by name + } +... +} +\endcode +In this case, this loop is iterating across all the subgroups (children) +of the grp. It does so by walking the linked list of child groups. +It does a name comparison in order to find the group with the desired name. + +In the new code, this iteration cliche is replaced by something +that will look like this. +\code +NC_GRP_INFO_T* grp = ...; +NC_GRP_INFO_T* g; +... +g = ncindexlookup(grp->children,name); +if(g != NULL) + ... code to process matching grp by name +} +\endcode +In this case, the iteration is replaced by a hashtable lookup. + +\subsection Slookupid Lookup an Object by id + +In the original code, the following _cliche_ (code snippet) +was common for looking up an object by its id (dimid, varid, etc). +\code +NC_GRP_INFO_T* grp = ...; +... +NC_DIM_INFO_T* d; +... +for (d = grp->dim; d; d = d->l.next) { + if(varid == d->dimid) + ... code to process matching dim by index + } +... +} +\endcode +In this case, this loop is iterating across all the dimension objects +of the grp. It does so by walking the linked list of dimensions. +It does an id comparison in order to find the group with the desired +dimension. + +In the new code, this iteration cliche is replaced by something +that will look like this. +\code +NC_FILE_INFO_T* h5 = ...; +NC_DIM_INFO_T* d;; +... +d = nclistget(h5->alldims,id); +if(d != NULL) + ... code to process matching dim by id +} +\endcode +This shows how the alldims vector is used to map from a +dimid directly to the matching dimension object. +In this example, h5 is the NC_FILE_INFO_T file object. +This approach works for dimension ids, group ids, and type ids +because they are globally unique. + +For variables and attributes, we have to use the containing group's +NCindex, such as grp->vars. In this case, the varid, is mapped using +code like this. +\code +NC_GRP_INFO_T* grp = ...; +NC_VAR_INFO_T* v; +... +v = ncindexith(grp->vars,id); +if(v != NULL) + ... code to process matching variable by id +} +\endcode + +\subsection Siterate Iterating over sets of objects + +In the original code, the following _cliche_ (code snippet) +was common. +\code +NC_GRP_INFO_T* grp; +... +NC_GRP_INFO_T* g; +... +for (g = grp->children; g; g = g->l.next) +... +\endcode +In this case, this loop is iterating across all the subgroups (children) +of the grp. It does so by walking the linked list of child groups. +Similar loops are used to walk a list of dimensions, variables, types, +or attributes. + +In the new code, this iteration cliche is replaced by something +that will look like this. +\code +NC_GRP_INFO_T* grp; +... +for(i=0;ichildren);i++) { + NC_GRP_INFO_T* g = nclistith(grp->children,i); +... +} +\endcode +In this case, the iteration is by index into the underlying vector. + +\section Sperf Performance + +The initial impetus for this change was to improve the performance +of netcdf-4 metadata loading by replacing linear searches with O(1) +searches. + +In fact, this goal has not been met. It appears to be the case +that the metadata loading costs are entirely dominated by the +performance of the HDF5 library. The reason for this is that +the netcdf-c library loads all the metadata immediately +when a file is opened. This in turn means that all of the metadata +is immediately extracted from the underlying HDF5 file. So, there is +no opportunity for lazy loading to be used. + +The remedys of which I can conceive are these. + +1. Modify the netcdf-c library to also do lazy loading + (work on this is under way). +2. Store a single metadata object into the file so it can + be read at one shot. This object would then be processed + in-memory to construct the internal metadata. The costs for + this approach are space in the file plus the need to keep it + consistent with the actual metadata stored by HDF5. + +It should be noted that there is an effect from this change. +Using gprof, one can see that in the original code the obj_list_add +function was the dominate function called by a large percentage (about 20%). +Whereas with the new code, the function call distribution is much more +even with no function taking more than 4-5%. + +Some other observations: + +1. the utf8 code now shows up as taking about 4%. Given that most names + are straight ASCII, it might pay to try to optimize for this to avoid + invoking the utf8 processing code. +2. In the new code, attribute processing appears to take up a lot of the + time. This, however might be an artifact of the test cases. +3. There is a small performance improvement from avoiding walking the linked + list. It appears that creating a file is about 10% faster and opening a file + is also about 10% faster. + +\section Snotes_and_warnings Notes and Warning + +1. NCindex is currently not used for enum constants and compound fields. + Additionally, it is not used for listing the dimensions associated + with a variable. +2. References between meta-data objects (e.g. group parent or + containing group) are stored directly and not using any kind + of vector or hashtable. +3. Attribute deletion is still a costly operation because it causes + the whole attribute index to be rebuilt. +4. Renaming is still a costly operation because it causes + the whole containing index to be rebuilt. +5. As in the original code, object ids (dimid, etc) are assigned + explicitly using counters within the NC_FILE_INFO_T object. + When stored into, for example, "alldims", the position of the + object is forcibly made to match the value of the assigned id. +6. The file nchashmap.c has a constant, SMALLTABLE, that controls + the size of the default hash table. Setting this constant + may be useful in debugging by reducing the default table size. +7. The file ncindex.c has a constant, SMALLTABLE, that controls + the size of the default hash table. Setting this constant + may be useful in debugging by reducing the default table size. +8. The file ncindex.c has a constant, NCNOHASH, that controls + if the index uses that hash table versus just searching the + index's vector. This is for experimental purposes. + +\section Sprovenance Contact Information + +__Author__: Dennis Heimbigner
+__Initial Version__: 01/10/2018
+__Last Revised__: 03/15/2018 + +*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/inmeminternal.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/inmeminternal.dox new file mode 100644 index 00000000000..ba22ed595a8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/inmeminternal.dox @@ -0,0 +1,401 @@ +/** +@if INTERNAL + +@page inmemintern Internal Architecture for NC_INMEMORY Support + +\tableofcontents + + + + +# Introduction {#inmemintern_intro} + +This document describes the internal workings +of the inmemory features of the netcdf-c library. +The companion document to this -- inmemory.md -- +describes the "external" operation of the inmemory features. + +This document describes how the in-memory operation +is implemented both for netcdf-3 files and for netcdf-4 files. + +# Generic Capabilities {#inmemintern_general} + +Both the netcdf-3 and netcdf-4 implementations assume that +they are initially given a (pointer,size) pair representing +a chunk of allocated memory of specified size. + +If a file is being created instead of opened, then only the size +is needed and the netcdf-c library will internally allocate the +corresponding memory chunk. + +If NC_DISKLESS is being used, then a chunk of memory is allocated +whose size is the same as the length of the file, and the contents +of the file is then read into that chunk of memory. + +This information is in general represented by the following struct +(see include/netcdf_mem.h). +```` +typedef struct NC_memio { + size_t size; + void* memory; + int flags; +} NC_memio; + +```` +The flags field describes properties and constraints to be applied +to the given memory. At the moment, only this one flag is defined. +```` +#define NC_MEMIO_LOCKED 1 +```` +If this flag is set, then the netcdf library will ensure that +the original allocated memory is ```locked```, which means +that it will never be realloc'd nor free'd. +Note that this flag is ignored when creating a memory file: it is only +relevant when opening a pre-allocated chunk of memory via the +_nc_open_mem_ function. + +Note that this flag does not prevent the memory from being modified. +If there is room, then the memory may be modified in place. If the size +of the memory needs to be increased and the this flag is set, then +the operation will fail. + +When the _nc_close_memio_ function is called instead of +_nc_close_, then the currently allocated memory (and its size) +is returned. If the _NC_MEMIO_LOCKED_ flag is set, then it +should be the case that the chunk of memory returned is the same +as originally provided. However, the size may be different +because it represents the amount of memory that contains +meaningful data; this value may be less than the original provided size. +The actual allocated size for the memory chunk is the same as originally +provided, so it that value is needed, then the caller must save it somewhere. + +Note also that ownership of the memory chunk is given to the +caller, and it is the caller's responsibility to _free_ the memory. + +# NetCDF-4 Implementation {#inmemintern_nc4} + +The implementation of in-memory support for netcdf-4 files +is quite complicated. + +The netCDF-4 implemention relies on the HDF5 library. In order +to implement in-memory storage of data, the HDF5 core driver is +used to manage underlying storage of the netcdf-c file. + +An HDF5 driver is an abstract interface that allows different +underlying storage implementations. So there is a standard file +driver as well as a core driver, which uses memory as the +underlying storage. + +Generically, the memory is referred to as a file image [1]. + +## libhdf5/nc4mem + +The primary API for in-memory operations is in the file +libhdf5/nc4mem.c and the defined functions are described in the next sections + +### nc4mem.NC4_open_image_file + +The signature is: +```` +int NC4_open_image_file(NC_FILE_INFO_T* h5) +```` +Basically, this function sets up the necessary state information +to use the HDF5 core driver. +It obtains the memory chunk and size from the _h5->mem.memio_ field. + +Specifically, this function converts the +_NC_MEMIO_LOCKED_ flag into using the HDF5 image specific flags: +_H5LT_FILE_IMAGE_DONT_COPY_ and _H5LT_FILE_IMAGE_DONT_RELEASE_. +It then invokes the function _libhdf5/nc4memcb/NC4_image_init_ +function to do the necessary HDF5 specific setup. + +### nc4mem.NC4_create_image_file + +The signature is: +```` +int NC4_create_image_file(NC_FILE_INFO_T* h5, size_t initialsize) +```` + +This function sets up the necessary state information +to use the HDF5 core driver, but for a newly created file. +It initializes the memory chunk and size in the _h5->mem.memio_ field +from the _initialsize_ argument and it leaves the memory chunk pointer NULL. +It ignores the _NC_MEMIO_LOCKED_ flag. +It then invokes the function _libhdf5/nc4memcb/NC4_image_init_ +function to do the necessary HDF5 specific setup. + +### libhdf5/hdf5file.c/nc4_close-netcdf4_file + +When a file is closed, this function is invoked. As part of its operation, +and if the file is an in-memory file, it does one of two things. + +1. If the user provided an _NC_memio_ instance, then return the final image +in that instance; the user is then responsible for freeing it. +2. If no _NC_memio_ instance was provided, then just discard the final image. + +## libhdf5/nc4memcb + +The HDF5 core driver uses an abstract interface for managing the +allocation and free'ing of memory. This interface is defined +as a set of callback functions [2] that implement the functions +of this struct. + +```` +typedef struct { + void *(*_malloc)(size_t size, H5_file_image_op_t op, void *udata); + void *(*_memcpy)(void *dest, const void *src, size_t size, + H5_file_image_op_t op, void *udata); + void *(*_realloc)(void *ptr, size_t size, + H5_file_image_op_t op, void *udata); + herr_t (*_free)(void *ptr, H5_file_image_op_t op, void *udata); + void *(*udata_copy)(void *udata); + herr_t (*udata_free)(void *udata); + void *udata; +} H5_file_image_callbacks_t; +```` +The _udata_ field at the end defines any extra state needed by the functions. +Each function is passed the udata as its last argument. The structure of the +udata is arbitrary, and is passed as _void*_ to the functions. + +The _udata_ structure and callback functions used by the netcdf-c library +are defined in the file _libhdf5/nc4memcb.c_. Setup is defined by the +function _NC4_image_init_ in that same file. + +The _udata_ structure used by netcdf is as follows. +```` +typedef struct { + void *app_image_ptr; /* Pointer to application buffer */ + size_t app_image_size; /* Size of application buffer */ + void *fapl_image_ptr; /* Pointer to FAPL buffer */ + size_t fapl_image_size; /* Size of FAPL buffer */ + int fapl_ref_count; /* Reference counter for FAPL buffer */ + void *vfd_image_ptr; /* Pointer to VFD buffer (Note: VFD => used by core driver) */ + size_t vfd_image_size; /* Size of VFD buffer */ + int vfd_ref_count; /* Reference counter for VFD buffer */ + unsigned flags; /* Flags indicate how the file image will be opened */ + int ref_count; /* Reference counter on udata struct */ + NC_FILE_INFO_T* h5; /* Pointer to the netcdf parent structure */ +} H5LT_file_image_ud_t; +```` + +It is necessary to understand one more point about the callback functions. +The first four take an argument of type _H5_file_image_op_t_ -- the operator. +This is an enumeration that indicates additional context about the purpose for +which the callback is being invoked. For the purposes of the netcdf-4 +implementation, only the following operators are used. + +- H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET +- H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY +- H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET +- H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE +- H5FD_FILE_IMAGE_OP_FILE_OPEN +- H5FD_FILE_IMAGE_OP_FILE_RESIZE +- H5FD_FILE_IMAGE_OP_FILE_CLOSE + +As can be seen, basically the operators indicate if the operation is with respect to +an HDF5 property list, or with respect to a file (i.e. a core image in this case). +For each callback described below, the per-operator actions will be described. +Not all operators are used with all callbacks. + +Internally, the HDF5 core driver thinks it is doing the following: + +1. Allocate memory and copy the incoming memory chunk into that newly allocated memory + (call image_malloc followed by image_memcpy). +2. Periodically reallocate the memory to increase its size + (call image_realloc). +3. Free up the memory as no longer needed + (call image_free). + +It turns out that for propertly lists, realloc is never called. +However the HDF5 core driver follows all of the above steps. + +The following sections describe the callback function operation. + +### libhdf5/nc4memcb/local_image_malloc + +This function is called to allocated an internal chunk of memory so +the original provided memory is no longer needed. In order to implement +the netcdf-c semantics, we modify this behavior. + +#### Operator H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET +We assume that the property list image info will never need to be modified, +so we just copy the incoming buffer info (the app_image fields) into the fapl_image fields. + +#### Operator H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY +Basically just return the fapl_image_ptr field, so no actual copying. + +#### Operator H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY and H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET +Basically just return the fapl_image_ptr field, so no actual copying or malloc needed. + +#### Operator H5FD_FILE_IMAGE_OP_FILE_OPEN +Since we always start by using the original incoming image buffer, we just +need to store that pointer and size into the vfd_image fields (remember, vfd is that +used by the core driver). + +### libhdf5/nc4memcb/local_image_memcpy +This function is supposed to be used to copy the incoming buffer into an internally +malloc'd buffer. Since we use the original buffer, no memcpy is actually needed. +As a safety check, we do actually do a memcpy if, for some reason, the _src_ and _dest_ +arguments are different. In practice, this never happens. + +### libhdf5/nc4memcb/local_image_realloc +Since the property list image is never realloc'd this is only called with +_H5FD_FILE_IMAGE_OP_FILE_RESIZE_. + +If the memory is not locked (i.e. the _NC_MEMIO_LOCKED_ flag was not used), +then we are free to realloc the vfd_ptr. But if the memory is locked, +then we cannot realloc and we must fake it as follows: + +1. If the chunk is big enough, then pretend to do a realloc by + changing the vfd_image_size. +2. If the chunk is not big enough to accomodate the requested new size, + then fail. + +There is one important complication. It turns out that the image_realloc +callback is sometimes called with a ptr argument value of NULL. This assumes +that if realloc is called with a NULL buffer pointer, then it acts like _malloc_. +Since we have found that some systems to do not implement this, we implement it +in our local_image_realloc code and do a _malloc_ instead of _realloc_. + +### libhdf5/nc4memcb/local_image_free + +This function is, of course, invoked to deallocate memory. +It is only invoked with the +H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE +and H5FD_FILE_IMAGE_OP_FILE_CLOSE +operators. + +#### Operator H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE +For the way the netcdf library uses it, it should still be the case that +the fapl pointer is same as original incoming app_ptr, so we do not need +to do anything for this operator. + +#### Operator H5FD_FILE_IMAGE_OP_FILE_CLOSE +Since in our implementation, we maintain control of the memory, this case +will never free any memory, but may save a pointer to the current vfd memory +so it can be returned to the original caller, if they want it. +Specifically the vfd_image_ptr and vfd_image_size are always +copied to the _udata->h5->mem.memio_ field so they can +be referenced by higher level code. + +### libhdf5/nc4memcb/local_udata_copy +Our version of this function only manipulates the reference count. + +### libhdf5/nc4memcb/local_udata_free +Our version of this function only manipulates the reference count. + +# NetCDF-3 Implementation {#inmemintern_nc3} + +The netcdf-3 code -- in libsrc -- has its own, internal storage +management API as defined in the file _libsrc/ncio.h_. It implements +the API in the form of a set of function pointers as defined in the +structure _struct_ _ncio_. These function have the following signatures +and semantics. + +- int ncio_relfunc(ncio*, off_t offset, int rflags) -- + Indicate that you are done with the region which begins at offset. +- int ncio_getfunc(ncio*, off_t offset, size_t extent, int rflags, void **const vpp) -- + Request that the region (offset, extent) be made available through *vpp. +- int ncio_movefunc(ncio*, off_t to, off_t from, size_t nbytes, int rflags) -- + Like memmove(), safely move possibly overlapping data. +- int ncio_syncfunc(ncio*) -- + Write out any dirty buffers to disk and ensure that next read will get data from disk. +- int ncio_pad_lengthfunc(ncio*, off_t length) -- + Sync any changes to disk, then truncate or extend file so its size is length. +- int ncio_closefunc(ncio*, int doUnlink) + -- Write out any dirty buffers and ensure that next read will not get cached data. + Then sync any changes, and then close the open file. + +The _NC_INMEMORY_ semantics are implemented by creating an implementation of the above functions +specific for handling in-memory support. This is implemented in the file _libsrc/memio.c_. + +## Open/Create/Close + +Open and close related functions exist in _memio.c_ that are not specifically part of the API. +These functions are defined in the following sections. + +### memio_create +Signature: +```` +int memio_create(const char* path, int ioflags, size_t initialsz, off_t igeto, size_t igetsz, size_t* sizehintp, void* parameters /*ignored*/, ncio* *nciopp, void** const mempp) +```` +Create a new file. Invoke _memio_new_ to create the _ncio_ +instance. If it is intended that the resulting file be +persisted to the file system, then verify that writing such a +file is possible. Also create an initial in-memory buffer to +hold the file data. Otherwise act like e.g. _posixio_create_. + +### memio_open +Signature: +```` +int memio_open(const char* path, int ioflags, off_t igeto, size_t igetsz, size_t* sizehintp, void* parameters, ncio* *nciopp, void** const mempp) +```` +Open an existing file. Invoke _memio_new_ to create the _ncio_ +instance. If it is intended that the resulting file be +persisted to the file system, then verify that writing such a +file is possible. Also create an initial in-memory buffer to +hold the file data. Read the contents of the existing file into +the allocated memory. +Otherwise act like e.g. _posixio_open_. + +### memio_extract +Signature: +```` +int memio_extract(ncio* const nciop, size_t* sizep, void** memoryp) +```` +This function is called as part of the NC3_close function in the event that +the user wants the final in-memory chunk returned to them via _nc_close_mem_. +It captures the existing in-memory chunk and returns it. At this point, +memio will no longer have access to that memory. + +## API Semantics + +The semantic interaction of the above API and NC_INMEMORY are described in the following sections. + +### ncio_relfunc +Just unlock the in-memory chunk. + +### ncio_getfunc +First guarantee that the requested region exists, and if necessary, +realloc to make it exist. If realloc is needed, and the +file is locked, then fail. + +### ncio_movefunc +First guarantee that the requested destination region exists, and if necessary, +realloc to make it exist. If realloc is needed, and the +file is locked, then fail. + +### ncio_syncfunc +This is a no-op as far as memio is concerned. + +### ncio_pad_lengthfunc +This may realloc the allocated in-memory buffer to achieve padding +rounded up to the pagesize. + +### ncio_filesizefunc +This just returns the used size of the in-memory chunk. +Note that the allocated size might be larger. + +### ncio_closefunc +If the usere wants the contents persisted, then write out the used portion +of the in-memory chunk to the target file. +Then, if the in-memory chunk is not locked, or for some reason has +been modified, go ahead and free that memory. + +# References {#inmemintern_bib} + +1. https://support.hdfgroup.org/HDF5/doc1.8/Advanced/FileImageOperations/HDF5FileImageOperations.pdf +2. https://support.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetFileImageCallbacks + +# Point of Contact {#inmemintern_poc} + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu
+__Initial Version__: 8/28/2018
+__Last Revised__: 8/28/2018 + + + +@endif + +*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/inmemory.md b/contrib/netcdf/netcdf-c-4.6.2/docs/inmemory.md new file mode 100644 index 00000000000..ff64fb5dd19 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/inmemory.md @@ -0,0 +1,252 @@ +NetCDF In-Memory Support +==================================== + + + +NetCDF In-Memory Support {#inmemory} +==================================== + +[TOC] + +Introduction {#inmemory_intro} +-------------- + +It can be convenient to operate on a netcdf file whose +content is held in memory instead of in a disk file. +The netcdf API has been modified in a number of ways +to support this capability. + +Actually, three distinct but related capabilities are provided. + +1. DISKLESS -- Read a file into memory, operate on it, and optionally +write it back out to disk when nc_close() is called. +2. INMEMORY -- Tell the netcdf-c library to treat a provided block +of memory as if it were a netcdf file. At close, it is possible to ask +for the final contents of the memory chunk. Be warned that there is +some complexity to this as described below. +4. MMAP -- (deprecated) Tell the netcdf-c library to use the *mmap()* operating +system functionality to access a file. + +The first two capabilities are intertwined in the sense that the +*diskless* capability makes use internally of the *inmemory* +capability (for netcdf classic only). But, the *inmemory* +capability can be used independently of the *diskless* +capability. + +The *mmap()* capability provides a capability similar to *diskless* but +using special capabilities of the underlying operating system. It turns out +that the mmap capability has seen no significant use, so its use is deprecated +and will be removed at some point in the future. + +Note also that *diskless* and *inmemory* can be used for both +*netcdf-3* (classic) and *netcdf-4* (enhanced) data. The *mmap* +capability can only be used with *netcdf-3*. + +Enabling Diskless File Access {#Enable_Diskless} +-------------- +The *diskless* capability can be used relatively transparently +using the *NC_DISKLESS* mode flag. + +Note that since the file is stored in memory, size limitations apply. +If you are on using a 32-bit pointer then the file size must be less than 2^32 +bytes in length. On a 64-bit machine, the size must be less than 2^64 bytes. + +Also note that for a diskless file, there are two notions of +*write* with respect to the file. The first notion is that the +file is read-only through the netCDF API. For example, if the file +is read-only, then a call to, for example, _nc_def_dim()_ will fail. +The second notion of *write* refers to the file on disk to which +the contents of memory might be persisted. + +WARNING: control of the two kinds of *write* has changed since +release 4.6.1. + +The mode flag NC_WRITE determines the first kind of *write*. +If set, then NC_WRITE means that the file can be modified through +the netCDF API, otherwise it is read-only. This is a change since +release 4.6.1. + +The new mode flag NC_PERSIST now determines the second kind of +*write*. If set, then NC_PERSIST means that the memory contents +will be persisted to disk, possibly overwriting the previous +file contents. Otherwise, the default is to throw away the +in-memory contents. + +### Diskless File Open +Calling *nc_open()* using the mode flag *NC_DISKLESS* will cause +the file being opened to be read into memory. When calling *nc_close()*, +the file will optionally be re-written (aka "persisted") to disk. This +persist capability will be invoked if and only if *NC_PERSIST* is specified +in the mode flags at the call to *nc_open()*. + +### Diskless File Create +Calling *nc_create()* using the mode flag *NC_DISKLESS* will cause +the file to initially be created and kept in memory. +When calling *nc_close()*, the file will be written +to disk if and only if *NC_PERSIST* is specified +in the mode flags at the call to *nc_create()*. + +Enabling Inmemory File Access {#Enable_Inmemory} +-------------- + +The netcdf API has been extended to support the inmemory capability. +The relevant API is defined in the file `netcdf_mem.h`. + +The important data structure to use is `NC_memio`. +```` +typedef struct NC_memio { + size_t size; + void* memory; + int flags; +} NC_memio; + +```` +An instance of this data structure is used when providing or +retrieving a block of data. It specifies the memory and its size +and also some relevant flags that define how to manage the memory. + +Current only one flag is defined -- *NC_MEMIO_LOCKED*. +This tells the netcdf library that it should never try to +*realloc()* the memory nor to *free()* the memory. Note +that this does not mean that the memory cannot be modified, but +only that the modifications will be within the confines of the provided +memory. If doing such modifications is impossible without +reallocating the memory, then the modification will fail. + +### In-Memory API + +The new API consists of the following functions. +```` +int nc_open_mem(const char* path, int mode, size_t size, void* memory, int* ncidp); + +int nc_create_mem(const char* path, int mode, size_t initialsize, int* ncidp); + +int nc_open_memio(const char* path, int mode, NC_memio* info, int* ncidp); + +int nc_close_memio(int ncid, NC_memio* info); + +```` +### The **nc_open_mem** Function + +The *nc_open_mem()* function is actually a convenience +function that internally invokes *nc_open_memio()*. +It essentially provides simple read-only access to a chunk of memory +of some specified size. + +### The **nc_open_memio** Function + +This function provides a more general read/write capability with respect +to a chunk of memory. It has a number of constraints and its +semantics are somewhat complex. This is primarily due to limitations +imposed by the underlying HDF5 library. + +The constraints are as follows. + +1. If the *NC_MEMIO_LOCKED* flag is set, then the netcdf library will +make no attempt to reallocate or free the provided memory. +If the caller invokes the *nc_close_memio()* function to retrieve the +final memory block, it should be the same +memory block as was provided when *nc_open_memio* was called. +Note that it is still possible to modify the in-memory file if the NC_WRITE +mode flag was set. However, failures can occur if an operation +cannot complete because the memory needs to be expanded. +2. If the *NC_MEMIO_LOCKED* flag is not set, then +the netcdf library will take control of the incoming memory. +This means that the user should not make any attempt to free +or even read the incoming memory block in this case. +The newcdf library is free to reallocate the incomming +memory block to obtain a larger block when an attempt to modify +the in-memory file requires more space. Note that implicit in this +is that the old block -- the one originally provided -- may be +free'd as a side effect of re-allocating the memory using the +*realloc()* function. +The caller may invoke the *nc_close_memio()* function to retrieve the +final memory block, which may not be the same as the originally block +provided by the caller. In any case, the returned block must always be freed +by the caller and the original block should not be freed. + +### The **nc_create_mem** Function + +This function allows a user to create an in-memory file, write to it, +and then retrieve the final memory using *nc_close_memio()*. +The *initialsize* argument to *nc_create_mem()* tells the library +how much initial memory to allocate. Technically, this is advisory only +because it may be ignored by the underlying HDF5 library. +It is used, however, for netcdf-3 files. + +### The **nc_close_memio** Function + +The ordinary *nc_close()* function can be called to close an in-memory file. +However, it is often desirable to obtain the final size and memory block +for the in-memory file when that file has been modified. +The *nc_close_memio()* function provides a means to do this. +Its second argument is a pointer to an *NC_memio* object +into which the final memory and size are stored. WARNING, +the returned memory is owned by the caller and so the caller +is responsible for calling *free()* on that returned memory. + +### Support for Writing with *NC_MEMIO_LOCKED* + +When the NC_MEMIO_LOCKED flag is set in the *NC_memio* object +passed to *nc_open_memio()*, it is still possible to modify +the opened in-memory file (using the NC_WRITE mode flag). + +The big problem is that any changes must fit into the memory provided +by the caller via the *NC_memio* object. This problem can be +mitigated, however, by using the "trick" of overallocating +the caller supplied memory. That is, if the original file is, say, 300 bytes, +then it is possible to allocate, say, 65000 bytes and copy the original file +into the first 300 bytes of the larger memory block. This will allow +the netcdf-c library to add to the file up to that 65000 byte limit. +In this way, it is possible to avoid memory reallocation while still +allowing modifications to the file. You will still need to call +*nc_close_memio()* to obtain the size of the final, modified, file. + +Enabling MMAP File Access (Deprecated) {#Enable_MMAP} +-------------- + +The MMAP functionality is deprecated. + +Some operating systems provide a capability called MMAP. +This allows disk files to automatically be mapped to chunks of memory. +It operates in a fashion somewhat similar to operating system virtual +memory, except with respect to a file. + +By setting mode flag NC_MMAP, it is possible to do the equivalent +of NC_DISKLESS but using the operating system's mmap capabilities. + +Currently, MMAP support is only available when using netcdf-3 or cdf5 +files. + +Known Bugs {#Inmemory_Bugs} +-------------- + +1. If you are modifying a locked memory chunk (using + NC_MEMIO_LOCKED) and are accessing it as a netcdf-4 file, and + you overrun the available space, then the HDF5 library will + fail with a segmentation fault. + +2. You will get an HDF5 error under the following conditions. + + 1. You call nc_open on a file with the flags NC_DISKLESS|NC_WRITE + but without NC_PERSIST. + 2. The file to be read is read-only (i.e. mode 0444). + + Note that this should be ok because the modifications to the file + are not intended to pushed back into the disk file. However, the + HDF5 core driver does not allow this. + +References {#Inmemory_References} +-------------- + +1. https://support.hdfgroup.org/HDF5/doc1.8/Advanced/FileImageOperations/HDF5FileImageOperations.pdf + +Point of Contact +-------------- + +__Author__: Dennis Heimbigner
+__Email__: dmh at ucar dot edu +__Initial Version__: 2/3/2018
+__Last Revised__: 2/5/2018 + + diff --git a/contrib/netcdf/4.4.1.1/docs/install-fortran.md b/contrib/netcdf/netcdf-c-4.6.2/docs/install-fortran.md similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/install-fortran.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/install-fortran.md diff --git a/contrib/netcdf/4.4.1.1/docs/install.md b/contrib/netcdf/netcdf-c-4.6.2/docs/install.md old mode 100755 new mode 100644 similarity index 80% rename from contrib/netcdf/4.4.1.1/docs/install.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/install.md index fd70e05c7e7..36c8fa30c8c --- a/contrib/netcdf/4.4.1.1/docs/install.md +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/install.md @@ -73,9 +73,15 @@ full functionality. (See \ref architecture). Requirements {#netcdf_requirements} ---------------------------------- -* HDF5 1.8.9 or later (for netCDF-4 support) +* For netCDF-4 support + * HDF5 1.8.9 or later. + * HDF5 1.10.1 or later. * zlib 1.2.5 or later (for netCDF-4 compression) * curl 7.18.0 or later (for DAP remote access client support) +* For parallel I/O support on classic netCDF files + * PnetCDF 1.6.0 or later + +> **Important Note**: When building netCDF-C library versions older than 4.4.1, use only HDF5 1.8.x versions. Combining older netCDF-C versions with newer HDF5 1.10 versions will create superblock 3 files that are not readable by lots of older software. See this announcement for more details. CMake and Windows support {#sub} @@ -95,7 +101,15 @@ HDF5 and zlib packages are available from the web page on szip compression in HDF products. +*Optionally*, you can also build netCDF-4 with the szip library (a.k.a. szlib). If building with szlib, get szip 2.0 or later. Technically, we mean that +the HDF5 library is built with szip support. The netcdf build will then +inherit szip support from the HDF5 library. +If you intend to write files with szip compression, then we suggest that you +use [libaec](https://gitlab.dkrz.de/k202009/libaec.git) +to avoid patent problems. That library can be used as a +drop-in replacement for the standard szip library. +If you plan to use the standard szip library, +then determine whether license restrictions on the use of szip apply to your situation. See the web page on szip compression in HDF products. If `make check` fails for either `zlib` or `HDF5`, the problem must be resolved before the netCDF-4 installation can continue. For HDF5 problems, see the HDF5 help services. @@ -118,7 +132,7 @@ Next, specify where you want to install HDF5 in another shell variable, for exam ~~~~{.py} $ # Build and install HDF5 $ H5DIR=/usr/local - $ ./configure --with-zlib=${ZDIR} --prefix=${H5DIR} + $ ./configure --with-zlib=${ZDIR} --prefix=${H5DIR} --eanble-hl $ make check $ make install # or sudo make install, if root permissions required ~~~~ @@ -136,7 +150,7 @@ Indicate where you want to install netCDF in another shell variable, for example ~~~~{.py} $ # Build and install netCDF-4 $ NCDIR=/usr/local - $ CPPFLAGS=-I${H5DIR}/include LDFLAGS=-L${H5DIR}/lib ./configure --prefix=${NCDIR} + $ CPPFLAGS='-I${H5DIR}/include -I${ZDIR}/include' LDFLAGS='-L${H5DIR}/lib -L${ZDIR}/lib' ./configure --prefix=${NCDIR} $ make check $ make install # or sudo make install ~~~~ @@ -198,7 +212,7 @@ to prevent it from building an HDF4 version of the netCDF-2 library that conflicts with the netCDF-2 functions that are built into the Unidata netCDF library. -Then, when building netCDF-4, use the `--enable-hdf4`. +Then, when building netCDF-4, use the `--enable-hdf4` option to configure. The location for the HDF4 header files and library must be specified in the CPPFLAGS and LDFLAGS environment variables or configure options. @@ -233,7 +247,7 @@ Building with Parallel I/O Support {#build_parallel} -------------- For parallel I/O to work, HDF5 must be installed with -–enable-parallel, and an MPI library (and related libraries) must be +`--enable-parallel`, and an MPI library (and related libraries) must be made available to the HDF5 configure. This can be accomplished with an mpicc wrapper script. @@ -259,19 +273,33 @@ From the top-level netCDF-4 source directory, the following builds netCDF-4 with $ make install ~~~~ -If parallel I/O access to netCDF classic and 64-bit offset files is -needed, an alternate -[parallel-netcdf library](https://trac.mcs.anl.gov/projects/parallel-netcdf/wiki/WikiStart), -referred to as "PnetCDF", must also be installed. Assume it was -installed in the directory named by the PNDIR shell variable. -Then, from the top-level netCDF-4 source directory, configure netCDF -with the "--enable-pnetcdf" option: +### Building PnetCDF from source {#build_pnetcdf_from_source} + +To enable parallel I/O support for classic netCDF files, i.e. CDF-1, 2 and 5 +formats, [PnetCDF library](https://parallel-netcdf.github.io) must also be +installed. First specify where you want to install PnetCDF in a shell +variable, for example PNDIR, and build it from the PnetCDF top-level source +directory. If you would like to build the shared library, include +`--enable-shared` option at the configure command line. By default, only a +static library is built. ~~~~{.py} - $ # Build, test, and install netCDF-4 with pnetcdf support + $ # Build and install PnetCDF + $ PNDIR=/usr/local + $ ./configure --prefix=${PNDIR} --with-mpi=/path/to/MPI/compilers + $ make check + $ make install # or sudo make install, if root permissions required +~~~~ + +To build netCDF-4 with PnetCDF support, from the top-level netCDF-4 source +directory, configure netCDF with the "--enable-pnetcdf" option. If PnetCDF +is built with static library only, add "--disable-shared" option. + +~~~~{.py} + $ # Build, test, and install netCDF-4 with PnetCDF support $ CC=mpicc CPPFLAGS="-I${H5DIR}/include -I${PNDIR}/include" \ LDFLAGS="-L${H5DIR}/lib -L${PNDIR}/lib" ./configure \ - --disable-shared --enable-pnetcdf --enable-parallel-tests \ + --enable-pnetcdf --enable-parallel-tests \ --prefix=${NCDIR} $ make check $ make install @@ -280,18 +308,18 @@ with the "--enable-pnetcdf" option: Linking to netCDF-C {#linking} ------------------- -For static builds of applications that use netCDF-4 you must link to all the libraries, -netCDF, HDF5, zlib, szip (if used with HDF5 build), and curl (if the -remote access client has not been disabled). This will require -L options -to your build for the locations of the libraries, and -l (lower-case -L) for the names of the libraries. +For static builds of applications that use netCDF-4 you must link to all the +libraries, netCDF, HDF5, zlib, szip (if used with HDF5 build), PnetCDF (if used +with PnetCDF build), and curl (if the remote access client has not been +disabled). This will require -L options to your build for the locations of the +libraries, and -l (lower-case L) for the names of the libraries. For example, you might build other applications with netCDF-4 by -setting the LIBS environment variable, assuming NCDIR, H5DIR, and ZDIR -indicate where netCDF, HDF5, and zlib are installed: +setting the LIBS environment variable, assuming NCDIR, H5DIR, PNDIT, and ZDIR +indicate where netCDF, HDF5, PnetCDF, and zlib are installed: ~~~~{.py} - LIBS="-L${NCDIR}/lib -lnetcdf -L${H5DIR}/lib -lhdf5_hl -lhdf5 -L${ZDIR}/lib -lz -lm" + LIBS="-L${NCDIR}/lib -lnetcdf -L${H5DIR}/lib -lhdf5_hl -lhdf5 -L${PNDIR} -lpnetcdf -L${ZDIR}/lib -lz -lm" ~~~~ For shared builds, only `-L${NCDIR}/lib -lnetcdf` is @@ -324,15 +352,16 @@ Note: `--disable` prefix indicates that the option is normally enabled. OptionDescriptionDependencies --disable-doxygenDisable generation of documentation.doxygen --disable-fsyncdisable fsync supportkernel fsync support - --disable-netcdf-4build netcdf-3 without HDF5 and zlib ---disable-netcdf4synonym for disable-netcdf-4 +--disable-netcdf4synonym for disable-netcdf-4 --enable-hdf4build netcdf-4 with HDF4 read capabilityHDF4, HDF5 and zlib --enable-hdf4-file-teststest ability to read HDF4 filesselected HDF4 files from Unidata ftp site ---enable-pnetcdfbuild netcdf-4 with parallel I/O for classic and - 64-bit offset files using parallel-netcdf +--disable-parallel4build netcdf-4 without parallel I/O support +--disable-cdf5build netcdf-4 without support of classic CDF-5 file format +--enable-pnetcdfbuild netcdf-4 with parallel I/O for classic files (CDF-1, 2, and 5 formats) using PnetCDFPnetCDF --enable-extra-example-testsRun extra example tests--enable-netcdf-4,GNU sed ---enable-parallel-tests run extra parallel IO tests--enable-netcdf-4, parallel IO support +--disable-filter-testingRun filter example--enable-shared --enable-netcdf-4 +--enable-parallel-tests run extra parallel IO tests--enable-netcdf-4 or --enable-pnetcdf, parallel IO support --enable-loggingenable logging capability--enable-netcdf-4 --disable-dapbuild without DAP client support.libcurl --disable-dap-remote-testsdisable dap remote tests--enable-dap @@ -378,6 +407,7 @@ The following packages are required to build netCDF-C using CMake. * Optional Requirements: * HDF5 Libraries for netCDF4/HDF5 support. * libcurl for DAP support. + * PnetCDF libraries for parallel I/O support to classic netCDF files
@@ -407,13 +437,17 @@ The output of the configuration step is a project file based on the appropriate | **Option** | **Autotools** | **CMake** | | :------- | :---- | :----- | -Specify Install Location | --prefix=PREFIX | -D"CMAKE\_INSTALL\_PREFIX=PREFIX" -Enable/Disable netCDF-4 | --enable-netcdf-4
--disable-netcdf-4 | -D"ENABLE\_NETCDF\_4=ON"
-D"ENABLE\_NETCDF\_4=OFF" -Enable/Disable DAP | --enable-dap
--disable-dap | -D"ENABLE\_DAP=ON"
-D"ENABLE\_DAP=OFF" -Enable/Disable Utilities | --enable-utilities
--disable-utilities | -D"BUILD\_UTILITIES=ON"
-D"BUILD\_UTILITIES=OFF" -Specify shared/Static Libraries | --enable-shared
--enable-static | -D"BUILD\_SHARED\_LIBS=ON"
-D"BUILD\_SHARED\_LIBS=OFF" -Enable/Disable Tests | --enable-testsets
--disable-testsets | -D"ENABLE\_TESTS=ON"
-D"ENABLE\_TESTS=OFF" -Specify a custom library location | Use *CFLAGS* and *LDFLAGS* | -D"CMAKE\_PREFIX\_PATH=/usr/custom_libs/" +Specify Install Location | --prefix=PREFIX | -D"CMAKE_INSTALL_PREFIX=PREFIX" +Enable/Disable netCDF-4 | --enable-netcdf-4
--disable-netcdf-4 | -D"ENABLE_NETCDF_4=ON"
-D"ENABLE_NETCDF_4=OFF" +Enable/Disable DAP | --enable-dap
--disable-dap | -D"ENABLE_DAP=ON"
-D"ENABLE_DAP=OFF" +Enable/Disable Utilities | --enable-utilities
--disable-utilities | -D"BUILD_UTILITIES=ON"
-D"BUILD_UTILITIES=OFF" +Specify shared/Static Libraries | --enable-shared
--enable-static | -D"BUILD_SHARED_LIBS=ON"
-D"BUILD_SHARED_LIBS=OFF" +Enable/Disable Parallel netCDF-4 | --enable-parallel4
--disable-parallel4 | -D"ENABLE_PARALLEL4=ON"
-D"ENABLE_PARALLEL4=OFF" +Enable/Disable PnetCDF | --enable-pnetcdf
--disable-pnetcdf | -D"ENABLE_PNETCDF=ON"
-D"ENABLE_PNETCDF=OFF" +Enable/Disable CDF5 | --enable-cdf5
--disable-cdf5 | -D"ENABLE_CDF5=ON"
-D"ENABLE_CDF5=OFF" +Enable/Disable Tests | --enable-testsets
--disable-testsets | -D"ENABLE_TESTS=ON"
-D"ENABLE_TESTS=OFF" +Enable/Disable Parallel Tests | --enable-parallel-tests
--disable-parallel-tests | -D"ENABLE_PARALLEL_TESTS=ON"
-D"ENABLE_PARALLEL_TESTS=OFF" +Specify a custom library location | Use *CFLAGS* and *LDFLAGS* | -D"CMAKE_PREFIX_PATH=/usr/custom_libs/" A full list of *basic* options can be found by invoking `cmake [Source Directory] -L`. To enable a list of *basic* and *advanced* options, one would invoke `cmake [Source Directory] -LA`. @@ -463,4 +497,4 @@ or ## See Also {#cmake_see_also} -For further information regarding netCDF and CMake, see \ref cmake_faq +For further information regarding netCDF and CMake, see \ref cmake_faq. diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/internal.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/internal.dox new file mode 100644 index 00000000000..605f198d991 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/internal.dox @@ -0,0 +1,486 @@ +/** \file + +\internal + +\page nc_dispatch Internal Dispatch Table Architecture + +\tableofcontents + +This document describes the architecture and details of the netCDF +internal dispatch mechanism. The idea is that when a user opens or +creates a netcdf file, a specific dispatch table is chosen. +A dispatch table is a struct containing an entry for every function +in the netcdf-c API. +Subsequent netcdf API calls are then channeled through that +dispatch table to the appropriate function for implementing that API +call. The functions in the dispatch table are not quite the same +as those defined in netcdf.h. For simplicity and compactness, +some netcdf.h API calls are +mapped to the same dispatch table function. In addition to +the functions, the first entry in the table defines the model +that this dispatch table implements. It will be one of the +NC_FORMATX_XXX values. + +The list of supported dispatch tables will grow over time. +To date, at least the following dispatch tables are supported. +- netcdf classic files (netcdf-3) +- netcdf enhanced files (netcdf-4) +- DAP2 to netcdf-3 +- DAP4 to netcdf-4 +- PnetCDF (parallel I/O for classic files) +- HDF4 SD files + +The dispatch table represents a distillation of the netcdf API down to +a minimal set of internal operations. The format of the dispatch table +is defined in the file libdispatch/ncdispatch.h. Every new dispatch +table must define this minimal set of operations. + +\section adding_dispatch Adding a New Dispatch Table + +In order to make this process concrete, let us assume we plan to add +an in-memory implementation of netcdf-3. + +\subsection dispatch_configure_ac Defining configure.ac flags + +Define a _–-enable_ flag and an _AM_CONFIGURE_ flag in _configure.ac_. +For our example, we assume the option "--enable-ncm" and the AM_CONFIGURE +flag "ENABLE_NCM". If you examine the existing _configure.ac_ and see how, +for example, _DAP2_ is defined, then it should be clear how to do it for +your code. + +\subsection dispatch_namespace Defining a "name space" + +Choose some prefix of characters to identify the new dispatch +system. In effect we are defining a name-space. For our in-memory +system, we will choose "NCM" and "ncm". NCM is used for non-static +procedures to be entered into the dispatch table and ncm for all other +non-static procedures. Note that the chosen prefix should probably start +with "nc" in order to avoid name conflicts outside the netcdf-c library. + +\subsection dispatch_netcdf_h Extend include/netcdf.h + +Modify the file _include/netcdf.h_ to add an NC_FORMATX_XXX flag +by adding a flag for this dispatch format at the appropriate places. +\code + \c \#define NC_FORMATX_NCM 7 +\endcode + +Add any format specific new error codes. +\code + \c \#define NC_ENCM (?) +\endcode + +\subsection dispatch_ncdispatch Extend include/ncdispatch.h + +Modify the file _include/ncdispatch.h_ to +add format specific data and functions; note the use of our NCM namespace. +\code + #ifdef ENABLE_NCM + extern NC_Dispatch* NCM_dispatch_table; + extern int NCM_initialize(void); + #endif +\endcode + +\subsection dispatch_define_code Define the dispatch table functions + +Define the functions necessary to fill in the dispatch table. As a +rule, we assume that a new directory is defined, _libsrcm_, say. Within +this directory, we need to define _Makefile.am_ and _CMakeLists.txt_. +We also need to define the source files +containing the dispatch table and the functions to be placed in the +dispatch table -– call them _ncmdispatch.c_ and _ncmdispatch.h_. Look at +_libsrc/nc3dispatch.[ch]_ or _libdap4/ncd4dispatch.[ch]_ for examples. + +Similarly, it is best to take existing _Makefile.am_ and _CMakeLists.txt_ +files (from _libdap4_ for example) and modify them. + +\subsection dispatch_lib Adding the dispatch code to libnetcdf + +Provide for the inclusion of this library in the final libnetcdf +library. This is accomplished by modifying _liblib/Makefile.am_ by +adding something like the following. +\code + if ENABLE_NCM + libnetcdf_la_LIBADD += $(top_builddir)/libsrcm/libnetcdfm.la + endif +\endcode + +\subsection dispatch_init Extend library initialization + +Modify the _NC_initialize_ function in _liblib/nc_initialize.c_ by adding +appropriate references to the NCM dispatch function. +\code + #ifdef ENABLE_NCM + extern int NCM_initialize(void); + #endif + ... + int NC_initialize(void) + { + ... + #ifdef ENABLE_NCM + if((stat = NCM_initialize())) return stat; + #endif + ... + } +\endcode + +\section dispatch_tests Testing the new dispatch table + +Add a directory of tests: _ncm_test_, say. The file _ncm_test/Makefile.am_ +will look something like this. +\code + # These files are created by the tests. + CLEANFILES = ... + # These are the tests which are always run. + TESTPROGRAMS = test1 test2 ... + test1_SOURCES = test1.c ... + ... + # Set up the tests. + check_PROGRAMS = $(TESTPROGRAMS) + TESTS = $(TESTPROGRAMS) + # Any extra files required by the tests + EXTRA_DIST = ... +\endcode + +\section dispatch_toplevel Top-Level build of the dispatch code + +Provide for _libnetcdfm_ to be constructed by adding the following to +the top-level _Makefile.am_. + +\code + if ENABLE_NCM + NCM=libsrcm + NCMTESTDIR=ncm_test + endif + ... + SUBDIRS = ... $(DISPATCHDIR) $(NCM) ... $(NCMTESTDIR) +\endcode + +\section choosing_dispatch_table Choosing a Dispatch Table + +The dispatch table is chosen in the NC_create and the NC_open +procedures in _libdispatch/netcdf.c_. +This can be, unfortunately, a complex process. +The choice is made in _NC_create_ and _NC_open_ in _libdispatch/dfile.c_. + +In any case, the choice of dispatch table is currently based on the following +pieces of information. + +1. The mode argument – this can be used to detect, for example, what kind +of file to create: netcdf-3, netcdf-4, 64-bit netcdf-3, etc. +Using a mode flag is the most common mechanism, in which case +_netcdf.h_ needs to be modified to define the relevant mode flag. + +2. The file path – this can be used to detect, for example, a DAP url +versus a normal file system file. If the path looks like a URL, then +the choice is determined using the function _NC_urlmodel_. + +3. The file contents - when the contents of a real file are available, +the contents of the file can be used to determine the dispatch table. +As a rule, this is likely to be useful only for _nc_open_. + +4. Environment variables - this option is currently not used, +but information such as environment variables could be used to determine +the choice of dispatch table. + +\section special_dispatch Special Dispatch Table Signatures. + +The entries in the dispatch table do not necessarily correspond +to the external API. In many cases, multiple related API functions +are merged into a single dispatch table entry. + +\subsection create_open_dispatch Create/Open + +The create table entry and the open table entry in the dispatch table +have the following signatures respectively. +\code + int (*create)(const char *path, int cmode, + size_t initialsz, int basepe, size_t *chunksizehintp, + int useparallel, void* parameters, + struct NC_Dispatch* table, NC* ncp); +\endcode + +\code + int (*open)(const char *path, int mode, + int basepe, size_t *chunksizehintp, + int use_parallel, void* parameters, + struct NC_Dispatch* table, NC* ncp); +\endcode + +The key difference is that these are the union of all the possible +create/open signatures from the include/netcdfXXX.h files. Note especially the last +three parameters. The parameters argument is a pointer to arbitrary data +to provide extra info to the dispatcher. +The table argument is included in case the create +function (e.g. _NCM_create_) needs to invoke other dispatch +functions. The very last argument, ncp, is a pointer to an NC +instance. The raw NC instance will have been created by _libdispatch/dfile.c_ +and is passed to e.g. open with the expectation that it will be filled in +by the dispatch open function. + +\subsection put_vara_dispatch Accessing Data with put_vara() and get_vara() + +\code + int (*put_vara)(int ncid, int varid, const size_t *start, const size_t *count, + const void *value, nc_type memtype); +\endcode + +\code + int (*get_vara)(int ncid, int varid, const size_t *start, const size_t *count, + void *value, nc_type memtype); +\endcode + +Most of the parameters are similar to the netcdf API parameters. The +last parameter, however, is the type of the data in +memory. Additionally, instead of using an "int islong" parameter, the +memtype will be either ::NC_INT or ::NC_INT64, depending on the value +of sizeof(long). This means that even netcdf-3 code must be prepared +to encounter the ::NC_INT64 type. + +\subsection put_attr_dispatch Accessing Attributes with put_attr() and get_attr() + +\code + int (*get_att)(int ncid, int varid, const char *name, + void *value, nc_type memtype); +\endcode + +\code + int (*put_att)(int ncid, int varid, const char *name, nc_type datatype, size_t len, + const void *value, nc_type memtype); +\endcode + +Again, the key difference is the memtype parameter. As with +put/get_vara, it used ::NC_INT64 to encode the long case. + +\subsection pre_def_dispatch Pre-defined Dispatch Functions + +It is sometimes not necessary to implement all the functions in the +dispatch table. Some pre-defined functions are available which may be +used in many cases. + +\subsubsection inquiry_functions Inquiry Functions + +The netCDF inquiry functions operate from an in-memory model of +metadata. Once a file is opened, or a file is created, this +in-memory metadata model is kept up to date. Consequenty the inquiry +functions do not depend on the dispatch layer code. These functions +can be used by all dispatch layers which use the internal netCDF +enhanced data model. + +- NC4_inq +- NC4_inq_type +- NC4_inq_dimid +- NC4_inq_dim +- NC4_inq_unlimdim +- NC4_inq_att +- NC4_inq_attid +- NC4_inq_attname +- NC4_get_att +- NC4_inq_varid +- NC4_inq_var_all +- NC4_show_metadata +- NC4_inq_unlimdims +- NC4_inq_ncid +- NC4_inq_grps +- NC4_inq_grpname +- NC4_inq_grpname_full +- NC4_inq_grp_parent +- NC4_inq_grp_full_ncid +- NC4_inq_varids +- NC4_inq_dimids +- NC4_inq_typeids +- NC4_inq_type_equal +- NC4_inq_user_type +- NC4_inq_typeid + +\subsubsection ncdefault_functions NCDEFAULT get/put Functions + +The mapped (varm) get/put functions have been +implemented in terms of the array (vara) functions. So dispatch layers +need only implement the vara functions, and can use the following +functions to get the and varm functions: + +- NCDEFAULT_get_varm +- NCDEFAULT_put_varm + +For the netcdf-3 format, the strided functions (nc_get/put_vars) +are similarly implemented in terms of the vara functions. So the following +convenience functions are available. + +- NCDEFAULT_get_vars +- NCDEFAULT_put_vars + +For the netcdf-4 format, the vars functions actually exist, so +the default vars functions are not used. + +\subsubsection read_only_functions Read-Only Functions + +Some dispatch layers are read-only (ex. HDF4). Any function which +writes to a file, including nc_create(), needs to return error code +::NC_EPERM. The following read-only functions are available so that +these don't have to be re-implemented in each read-only dispatch layer: + +- NC_RO_create +- NC_RO_redef +- NC_RO__enddef +- NC_RO_sync +- NC_RO_set_fill +- NC_RO_def_dim +- NC_RO_rename_dim +- NC_RO_rename_att +- NC_RO_del_att +- NC_RO_put_att +- NC_RO_def_var +- NC_RO_rename_var +- NC_RO_put_vara +- NC_RO_def_var_fill + +\subsubsection classic_functions Classic NetCDF Only Functions + +There are two functions that are only used in the classic code. All +other dispatch layers (except PnetCDF) return error ::NC_ENOTNC3 for +these functions. The following functions are provided for this +purpose: + +- NOTNC3_inq_base_pe +- NOTNC3_set_base_pe + +\section dispatch_layer HDF4 Dispatch Layer as a Simple Example + +The HDF4 dispatch layer is about the simplest possible dispatch +layer. It is read-only, classic model. It will serve as a nice, simple +example of a dispatch layer. + +Note that the HDF4 layer is optional in the netCDF build. Not all +users will have HDF4 installed, and those users will not build with +the HDF4 dispatch layer enabled. For this reason HDF4 code is guarded +as follows. +\code +\c \#ifdef USE_HDF4 +... +\c \#endif /*USE_HDF4*/ +\endcode + +Code in libhdf4 is only compiled if HDF4 is +turned on in the build. + +\subsection header_changes Header File Changes in include Directory + +\subsubsection netcdf_h_file The netcdf.h File + +In the main netcdf.h file, we have the following: + +\code +\c \#define NC_FORMATX_NC_HDF4 (3) +\c \#define NC_FORMAT_NC_HDF4 NC_FORMATX_NC_HDF4 +\endcode + +\subsubsection ncdispatch_h_file The ncdispatch.h File + +In ncdispatch.h we have the following: + +\code +#ifdef USE_HDF4 +extern NC_Dispatch* HDF4_dispatch_table; +extern int HDF4_initialize(void); +extern int HDF4_finalize(void); +#endif +\endcode + +\subsubsection netcdf_meta_h_file The netcdf_meta.h File + +The netcdf_meta.h file allows for easy determination of what features +are in use. It contains the following, set by configure: + +\code +\c \#define NC_HAS_HDF4 1 /*!< hdf4 support. */ +\endcode + +\subsubsection hdf4dispatch_h_file The hdf4dispatch.h File + +The file _hdf4dispatch.h_ contains prototypes and +macro definitions used within the HDF4 code in libhdf4. This include +file should not be used anywhere except in libhdf4. + +\subsection liblib_init Initialization Code Changes in liblib Directory + +The file _nc_initialize.c_ is modified to include the following: +\code +#ifdef USE_HDF4 +extern int HDF4_initialize(void); +extern int HDF4_finalize(void); +#endif +\endcode + +\subsection libdispatch_changes Dispatch Code Changes in libdispatch Directory + +\subsubsection dfile_c_changes Changes to dfile.c + +In order for a dispatch layer to be used, it must be correctly +determined in functions _NC_open()_ or _NC_create()_ in _libdispatch/dfile.c_. + +HDF4 has a magic number that is detected in +_NC_interpret_magic_number()_, which allows _NC_open_ to automatically +detect an HDF4 file. + +Once HDF4 is detected, the _model_ variable is set to _NC_FORMATX_NC_HDF4_, +and later this is used in a case statement: + +\code + case NC_FORMATX_NC_HDF4: + dispatcher = HDF4_dispatch_table; + break; +\endcode + +This sets the dispatcher to the HDF4 dispatcher, which is defined in +the libhdf4 directory. + +\subsection libhdf4_dispatch_code Dispatch Code in libhdf4 + +\subsubsection hdf4dispatch_c_table Dispatch Table in hdf4dispatch.c + +The file _hdf4dispatch.c_ contains the definition of the HDF4 dispatch +table. It looks like this: +\code +/* This is the dispatch object that holds pointers to all the + * functions that make up the HDF4 dispatch interface. */ +static NC_Dispatch HDF4_dispatcher = { +NC_FORMATX_NC_HDF4, +NC_RO_create, +NC_HDF4_open, +NC_RO_redef, +NC_RO__enddef, +NC_RO_sync, + +... + +NC_NOTNC4_set_var_chunk_cache, +NC_NOTNC4_get_var_chunk_cache, +}; +\endcode + +Note that most functions use some of the predefined dispatch +functions. Functions that start with NC_RO_ are read-only, they return +::NC_EPERM. Functions that start with NOTNC4_ return ::NC_ENOTNC4. + +Only the functions that start with NC_HDF4_ need to be implemented for +the HDF4 dispatch layer. There are 6 such functions: + +- NC_HDF4_open +- NC_HDF4_abort +- NC_HDF4_close +- NC_HDF4_inq_format +- NC_HDF4_inq_format_extended +- NC_HDF4_get_vara + +\subsubsection hdf4_reading_code HDF4 Reading Code + +The code in _hdf4file.c_ opens the HDF4 SD dataset, and reads the +metadata. This metadata is stored in the netCDF internal metadata +model, allowing the inq functions to work. + +The code in _hdf4var.c_ does an _nc_get_vara()_ on the HDF4 SD +dataset. This is all that is needed for all the nc_get_* functions to +work. + +*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/known_problems.md b/contrib/netcdf/netcdf-c-4.6.2/docs/known_problems.md new file mode 100644 index 00000000000..f6812577cde --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/known_problems.md @@ -0,0 +1,1463 @@ +# Known Problems with netCDF {#known_problems} + + +Known Problems with netCDF 4.3.0 +-------------------------------- + +- [clang compiler (default on OSX 10.9 Mavericks) detects error + building ncgen3](#clang-ncgen3) + +Known Problems with netCDF 4.2 +------------------------------ + +- [Fortran options of nc-config utility (--fflags, --flibs, --has-f90) + don't work correctly](#nc-config-fortran) +- [Using "--with-hdf5=..." configure option doesn't seem to + work](#with-hdf5) + +Known Problems with netCDF 4.1.3 +-------------------------------- + +- [nccopy -d and -c options for compression and chunking don't work on + netCDF-4 input files](#nccopy-compression-bug) +- [Debug statement left in F90 source](#f90-debug-segfault) +- [Building with Intel Fortran on Mac OS X](#intel-fortran-macosx) +- [Accessing OPeNDAP servers using a constraint expression](#dap-413) +- [Configuring with "--enable-benchmarks" + option](#enabling-benchmarks) + +Known Problems with netCDF 4.1.2 +-------------------------------- + +- [Building with Intel Fortran on Mac OS X](#intel-fortran-macosx) +- [Problem with disabling fill mode when using Lustre (or other large + blksize file system)](#lustre) + +Known Problems with netCDF 4.1.1 +-------------------------------- + +- [Ncgen is known to produce bad output and should not + be used.](#bad-ncgen) +- [Building with Intel Fortran on Mac OS X](#intel-fortran-macosx) +- ["make check" fails when linked with HDF5-1.8.6](#incompat-411-186) +- [Make tries to regenerate documentation with texi2dvi + command](#texi2dvi) +- [Accessing a multidimensional variable with more than 4 billion + values on a 32-bit platform](#big-mvar-32bit) + +------------------------------------------------------------------------ + +### The clang compiler (default on OSX 10.9 Mavericks) detects error building ncgen3 + +Building the netCDF C library with the clang C compiler, the default +/usr/bin/cc on OSX 10.9 Mavericks, detects an error in compiling +ncgen3/load.c. A fix is to insert the line + + #include + +above the "`#include `" statement near the beginning of +ncgen3/genlib.h. + +This fix will be in the next release. + +### Fortran options of nc-config utility (--fflags, --flibs, --has-f90) don't work correctly + +Beginning with version 4.2 of the C-based netCDF software, the netCDF +Fortran library is built from an independent netcdf-fortran release with +its own nf-config utility. In netCDF-4.2 the nc-config utility doesn't +detect whether nf-config is installed and make use of its output to +preserve backward compatibility with nc-config from previous releases. +This problem is fixed in netCDF-4.2.1-rc1 and later releases. + +### Using "--with-hdf5=..." configure option doesn't seem to work + +With releases of netCDF-4 after version 4.1.2 (this includes 4.1.3, 4.2, +4.2.1, ...) you don't use "--with-hdf5" to specify the location of the +HDF5 libraries, you use CPPFLAGS and LDFLAGS, as in + + CPPFLAGS=-I/usr/local/hdf5/include LDFLAGS=-L/usr/local/hdf5/lib ./configure + +The reason for this change is explained +[here](https://www.unidata.ucar.edu/jira/browse/NCF-20). + +### nccopy -d and -c options for compression and chunking don't work on netCDF-4 input files + +Due to a bug in nccopy, the "-d n" and "-c" options only work for +classic and 64-bit input files, producing netCDF-4 classic model output +files. These options are also useful for netCDF-4 files to compress or +recompress files and to chunk or rechunk variables. The bug description +and its resolution have been +[entered](https://www.unidata.ucar.edu/jira/browse/NCF-79) into the +issue tracker. + +The bug has been fixed in all releases since 4.1.3, including the +netcdf-4.2-rc1 release candidate. + +### Debug statement left in F90 source + +The debugging statement + + print *, values(1, 1), values(1, 2), values(1, 3), values(1, 4) + +was inadvertently left in the file f90/netcdf\_expanded.f90 at line 734, +and should be removed. If the variable has a second dimension less than +4, this can cause a segfault. The problem has been fixed in the +subsequent netcdf-fortran-4.2 release. + +### Ncgen is known to produce bad output. + +Dave Allured at NOAA has reported that the ncgen for 4.1.1 produces bad +.nc files under circumstances. We recommend that this version of ncgen +should not be used. + +### Building with Intel Fortran on Mac OS X + +Setting the environment variable **lt\_cv\_ld\_force\_load=no** before +invoking the configure script is a workaround to successfully build +netCDF version 4.1.3 with the Intel ifort Fortran compiler. +Specifically, the following works on Mac OS X 10.7.x (Lion) for building +C and Fortran libraries and passing all tests on Lion: + + $ lt_cv_ld_force_load=no FC="ifort" CC="cc" CXX="" \ + LDFLAGS=-L/WHERE_HDF5_IS_INSTALLED/lib \ + CPPFLAGS=-I/WHERE_HDF5_IS_INSTALLED/include ./configure + make check + +(The CXX environment variable is set to "" in this example to disable +building and testing the legacy netCDF-3 C++ API, because of an as yet +unsolved error that's not relevant to this Fortran problem.) + +### Accessing OPeNDAP servers using a constraint expression + +The use of subsetting by specifying a URL with subsetting information to +dap-enabled netCDF is broken for stable release 4.1.3. This can be +demonstrated by using the 4.1.3 version of ncdump to access data from an +OPeNDAP server, using a constraint expression in the URL, which results +in the error message + + NetCDF: Malformed or inaccessible DAP DDS + +This bug is fixed in 4.2 releases after 2011-09-11, as well as by fixing +the 4.1.3 release using the 3 replacement source files in [this tar +file](http://www.unidata.ucar.edu/downloads/netcdf/ftp/4.1.3-fix.tar). + +### Configuring with "--enable-benchmarks" option + +Using the "--enable-benchmarks" option to the configure script fails +with a compile error on some platforms, and has been reported to fail in +other ways on some other platforms. + +### Problem with disabling fill mode when using Lustre (or other large blksize file system) + +Joerg Henrichs has reported a bug when writing netCDF classic format +data with fill mode disabled, on a file system such as Lustre that uses +a large disk block size (for example 2 MB). On such a system, tests run +by "make check" may all pass, but some write operations will fail +without reporting an error. + +A fix is available. in netCDF-4.1.3-beta1 or later and also in [this +patch](/software/netcdf/patches/nofill-bug.patch) for the file +libsrc/posixio.c in netCDF-4.1.2 and earlier versions. + +An example that failed depended on all the following circumstances: + +- The disk block size must be within a range of sizes, in this case + one of the 58080 values between 2091953 and 2150032 inclusive. + Equivalently, the file must be created using the "double underbar" + function nc\_\_create() with a I/O block size in this range. +- No-fill mode must be set, for example by calling nc\_set\_fill() + with NC\_NOFILL, or by using a software package such as NCO that + uses no-fill mode by default. +- A data variable at the end of a file being created must be written + in reverse order from how it is stored on disk, for example writing + a multidimensional variable by slices in reverse order along one of + its more slowly varying dimensions. This must result in writing at + least two disk blocks beyond the end of the file. + +Workarounds include avoiding use of no-fill mode (NC\_NOFILL), enabling +share mode (NC\_SHARE), changing the order of writes of a +multidimensional variable written in reverse order, or creating the file +using nc\_\_create with a blocksize outside the range in which erroneous +writes occur. Some of these workarounds slow the write performance of +netCDF. + +### "make check" fails when linked with HDF5-1.8.6 + +When built with HDF5 version 1.8.6, version 4.1.1 fails one of the tests +invoked by "make check": + + ... + *** Checking that one var, two dimscales, one att file can still be read by HDF5...ok. + *** Creating a HDF5 file with one var and no dimension scales...ok. + HDF5-DIAG: Error detected in HDF5 (1.8.6) thread 0: + #000: H5O.c line 717 in H5Oget_info_by_idx(): group not found + major: Symbol table + minor: Object not found + #001: H5Gloc.c line 591 in H5G_loc_find_by_idx(): can't find object + major: Symbol table + minor: Object not found + ... + PASS: tst_endian_fill + ================================================ + 1 of 59 tests failed + Please report to support-netcdf@unidata.ucar.edu + ================================================ + make[2]: *** [check-TESTS] Error 1 + +Currently the workarounds are to either + +- Use the earlier HDF5 1.8.5-patch1 release for building netCDF 4.1.1 +- Use netCDF-4.1.2-beta2 or later with HDF5 1.8.6 + +The HDF5 1.8.5-patch1 release is available from the HDF5 site at + or from the netCDF-4 +ftp site at . + +### Make tries to regenerate documentation with texi2dvi command + +After building netCDF-4.1.1, invoking "make clean", and then building it +again with "make all" or "make check", a failure to find the texi2dvi +command is reported: + + make[1]: Entering directory `/usr/local/netcdf/netcdf-4.1.1/man4' + TEXINPUTS=".:$TEXINPUTS" \ + MAKEINFO='/bin/sh /usr/local/netcdf/netcdf-4.1.1/missing --run makeinfo -I .' \ + texi2dvi -s --pdf --batch netcdf.texi + make[1]: Leaving directory `/usr/local/netcdf/netcdf-4.1.1/man4' + /bin/sh: texi2dvi: command not found + +This results from a bug where "make clean" erroneously deleted the +documentation generated for the release, so make tries to regenerate the +documentation from source, which will fail if you don't happen to have +the "texi2dvi" program installed (which you shouldn't need). + +This is fixed in the current snapshot and in the upcoming release 4.1.2, +but a workaround is to get a new copy of the 4.1.1 source and rebuild +from that with the same settings you used to get to the above message, +without invoking "make clean" until after the software and documentation +is successfully installed. An alternative workaround is to just invoke +"make install" after the error above and use online documentation. + +### Accessing a multidimensional variable with more than 4 billion values on a 32-bit platform + +Kari Hoijarvi has reported a bug in implementation of large variable +support that has been in netCDF software since at least 1997, and which +is fixed in netCDF snapshots after 2010-05-13 as well as in the upcoming +netCDF-4.1.2 release. The bug occurs when all of the following +conditions are met: + +- A 32-bit version of the netCDF library is used. +- The file format is either classic or 64-bit offset format. +- Values are written to or read from a fixed-size variable that has + more than 2^32^ (4,294,967,296) values, or a record variable with + more than 2^32^ values per record. The variable must be the last + fixed-size variable in a file with no record variables or the last + record variable, because otherwise it would violate the format + constraints for netCDF classic or 64-bit offset formats described + [here](http://www.unidata.ucar.edu/netcdf/docs/netcdf/NetCDF-Classic-Format-Limitations.html). + Note that the bug involves number of values, not bytes, so if the + variable is of type integer or float, for example, it would require + more than 17 Gbytes. +- The variable must have 2 or more dimensions. +- The values to be written or read must begin after the first 2^32^ + values of the variable. + +In this case an undetected integer overflow occurred in calculating the +file offset, and the values were written to or read from the wrong +location in the file, overwriting data stored at that location in the +case of a write. + +The fix is a one-line change to a line in the libsrc/putget.m4 file, +from which the libsrc/putget.c file is generated, replacing the +statement + + lcoord += *up * *ip; + +with + + lcoord += (off_t)(*up) * (off_t)(*ip); + +Known Problems with netCDF 4.0.1 +-------------------------------- + +- [Including mpi.h before netcdf.h breaks MPI](#include_mpi_order) +- [With Sun C compiler, 64-bit ncdump fails](#suncc-m64-ncdump) +- [Portland Group compilers can't build shared fortran 90 or shared + C++ library, or 64-bit C++ API](#PG_shared) +- [Intel 10.1 64-bit C++ compiler problem](#intel_10.1_64_bit_c++) +- [Intel 9.1 C++ compiler problem doesn't build C++ + API](#intel_9.1__c++) +- [ncgen/ncdump test failure with Intel version 11 + compilers](#intel_11-ncgen) +- ["ncdump -v group/var" reports "group not found"](#ncdump-v) + +### Including mpi.h before netcdf.h breaks MPI + +Luis Kornblueh reports a subtle bug in netcdf 4.0.1. In the netcdf.h +header file, the following mpi entities are defined: + + /* These defs added by netCDF configure because parallel HDF5 is not + present. */ + #define MPI_Comm int + #define MPI_Info int + #define MPI_COMM_WORLD 0 + #define MPI_INFO_NULL 0 + +If mpi.h is included before netcdf.h, these defines (may) break the MPI +implementation. + +### With Sun C compiler, 64-bit ncdump fails + +As identified by Udo Grabowski, using the "-m64" option to build netCDF +with the Sun C compiler results in a failed test when running "make +check" in the ncdump directory: + + *** checking that test1.cdl and test2.nc are the same... + 62,63c62,63 + < 8.88178419700125e-16, 1.11022302462516e-15, 1.33226762955019e-15, + < 1.55431223447522e-15, 1.77635683940025e-15, 222044604925031 ; + --- + > 1.97215226305253e-31, 2.46519032881567e-31, 2.9582283945788e-31, + > 3.45126646034193e-31, 3.94430452610506e-31, 0.0493038065763132 ; + FAIL: run_tests.sh + +This bug is fixed in recent Sun C compiler releases, for example "Sun C +5.11 SunOS\_i386 Aten 2010/05/10". + +Short of upgrading the compiler, other workarounds include specifying + + CFLAGS="-O0 -m64" + +before rerunning the configure script, to turn off optimization, or just +install an ncdump built without "-m64". Because ncdump reads only a +little data at a time, there is no benefit to a 64-bit ncdump. The +32-bit ncdump handles classic, 64-bit offset, and netCDF-4 files +correctly even if they are larger than 4 GiB. + +### Portland Group compilers can't build shared fortran 90 library or shared C++ library + +The portland group compilers can't build netCDF shared fortran 90 +library. They fail with this error: + + pgf90 -I../fortran -I../f90 -I../libsrc -I../fortran -I../f90 + -g -c -o tst_f90.o tst_f90.f90 + /bin/sh ../libtool --mode=link pgf90 -I../fortran -I../f90 -- + ---I../libsrc -I../fortran -I../f90 -g -L/lib -- + ---o tst_f90 tst_f90.o ../fortran/libnetcdff.la -- + ---lm ../libsrc/libnetcdf.la + libtool: link: pgf90 -I../fortran -I../f90 -I../libsrc -I../fortran + -I../f90 -g -o .libs/tst_f90 tst_f90.o -L/lib + ../fortran/.libs/libnetcdff.so -lm ../libsrc/.libs/libnetcdf.so + -Wl,-rpath + -Wl,/machine/netcdf/n362_test_9456/netcdf-3.6.3-snapshot2008081305/install/lib + tst_f90.o:(.debug_info+0x135d): undefined reference to + `..Dm_typesizes' + tst_f90.o:(.debug_info+0x136e): undefined reference to `..Dm_netcdf' + +If anyone could shed some light on this, it would be most appreciated. +Send comments to support-netcdf@unidata.ucar.edu. + +The C++ compiler chokes on the netCDF C++ tests on a shared build: + + pgCC -DHAVE_CONFIG_H -I. -I.. -I../fortran -I../libdap + -I../libsrc -g -c -o tst_failure.o tst_failure.cpp + /bin/sh ../libtool --tag=CXX --mode=link pgCC -g -o tst_failure + tst_failure.o ../cxx/libnetcdf_c++.la ../libsrc/libnetcdf.la + libtool: link: pgCC -g -o .libs/tst_failure tst_failure.o + ../cxx/.libs/libnetcdf_c++.so ../libsrc/.libs/libnetcdf.so + -Wl,--rpath -Wl,/usr/local/lib + make[2]: Leaving directory `/machine/shecky/n4_new2/cxx' + make check-TESTS + make[2]: Entering directory `/machine/shecky/n4_new2/cxx' + C++ runtime abort: internal error: static object marked for + destruction more than once + /bin/sh: line 4: 8445 Aborted ${dir}$tst + FAIL: nctst + C++ runtime abort: internal error: static object marked for + destruction more than once + /bin/sh: line 4: 8468 Aborted ${dir}$tst + XFAIL: tst_failure + +There is a problem with the pgCC compiler noted as "Fixed in version +6.2.1" described as + + C++ runtime abort: internal error: static object marked for + destruction more than once + +here as [Technical Problem Report +3809](http://www.pgroup.com/support/tprs_62.htm#t3809). + +This bug was also previously [reported by a +user](http://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg03783.html). + +### Intel 10.1 64-bit C++ compiler problem + +On my test machine, the intel 10.1 C++ compiler cannot build the netCDF +C++ API in 64-bit mode. I get an error like this: + + make[1]: Entering directory + `/machine/netcdf/n362_test_16030/netcdf-3.6.3-snapshot2008081312/cxx' + depbase=`echo netcdf.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ + /bin/sh ../libtool --tag=CXX --mode=compile icpc -DHAVE_CONFIG_H + -I. -I.. -I../fortran -I../libdap -I../libsrc + -I/opt/intel/cce/10.1.015/include -MT netcdf.lo -MD -MP -MF + $depbase.Tpo -c -o netcdf.lo netcdf.cpp &&\ + mv -f $depbase.Tpo $depbase.Plo + libtool: compile: icpc -DHAVE_CONFIG_H -I. -I.. -I../fortran + -I../libdap -I../libsrc -I/opt/intel/cce/10.1.015/include -MT + netcdf.lo -MD -MP -MF .deps/netcdf.Tpo -c netcdf.cpp -o netcdf.o + /usr/include/c++/4.3.0/x86_64-redhat-linux/bits/c++locale.h(94): + error: argument of type "__va_list_tag *" is incompatible with + parameter of type "char *" + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, + __args); + ^ + + compilation aborted for netcdf.cpp (code 2) + make[1]: *** [netcdf.lo] Error 1 + make[1]: Leaving directory + `/machine/netcdf/n362_test_16030/netcdf-3.6.3-snapshot2008081312/cxx' + make: *** [check-recursive] Error 1 + +This is because the Intel C++ compiler has not caught up to the GNU C++ +compiler, and for some reason that is not clear to me, it is using the +header files from gcc. + +To solve this problem, install an older version of gcc (4.1.2 works in +testing at Unidata World Test Center, located at the bottom of a +six-mile deep mine shaft.) Put the bin directory at the beginning of +your PATH, and the lib (or lib64) directory at the beginning at the +LD\_LIBRARY\_PATH. Then rebuild. + +### Intel 9.1 C++ compiler problem doesn't build C++ API + +On my test machine, the intel 9.1 C++ compile fails like this: + + make nctst tst_failure + make[2]: Entering directory + `/machine/netcdf/n362_test_16035/netcdf-3.6.3-snapshot2008081312/cxx' + depbase=`echo nctst.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ + icpc -DHAVE_CONFIG_H -I. -I.. -I../fortran -I../libdap + -I../libsrc -I/opt/intel/cc/9.1.047/include/c++/ -MT nctst.o -MD -MP + -MF $depbase.Tpo -c -o nctst.o nctst.cpp &&\ + mv -f $depbase.Tpo $depbase.Po + /bin/sh ../libtool --tag=CXX --mode=link icpc + -I/opt/intel/cc/9.1.047/include/c++/ -o nctst nctst.o + ../cxx/libnetcdf_c++.la ../libsrc/libnetcdf.la + libtool: link: icpc -I/opt/intel/cc/9.1.047/include/c++/ -o nctst + nctst.o ../cxx/.libs/libnetcdf_c++.a ../libsrc/.libs/libnetcdf.a + nctst.o: In function `main': + nctst.cpp:(.text+0x22e): undefined reference to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' + nctst.cpp:(.text+0x290): undefined reference to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' + nctst.cpp:(.text+0x3b1): undefined reference to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' + nctst.cpp:(.text+0x520): undefined reference to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' + nctst.cpp:(.text+0x582): undefined reference to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' + nctst.o:nctst.cpp:(.text+0x767): more undefined references to + `std::ios_base::clear(std::_Iosb::_Iostate, bool)' follow + nctst.o: In function `__sti__$E': + nctst.cpp:(.text+0x2cb0): undefined reference to + `std::_Winit::_Winit()' + nctst.cpp:(.text+0x2cbf): undefined reference to `std::_Winit::~_Winit()' + +Anyone who can shed light on this should send email to +support-netcdf@unidata.ucar.edu. + +### ncgen/ncdump test failure with Intel version 11 compilers + +Ed Anderson reports that the tests of the netcdf-4.0 (and presumable +4.0.1 and 3.6.3) package fail with the recently released version 11 of +the Intel compilers, producing the error message: + + *** creating UTF-8 test file tst_utf8.nc...Sorry! Unexpected result, tst_utf8.c, line: 63 + Sorry! Unexpected result, tst_utf8.c, line: 68 + Sorry! Unexpected result, tst_utf8.c, line: 72 + Sorry! Unexpected result, tst_utf8.c, line: 79 + Sorry! Unexpected result, tst_utf8.c, line: 90 + Sorry! Unexpected result, tst_utf8.c, line: 92 + Sorry! Unexpected result, tst_utf8.c, line: 114 + Sorry! Unexpected result, tst_utf8.c, line: 117 + Sorry! Unexpected result, tst_utf8.c, line: 119 + Sorry! Unexpected result, tst_utf8.c, line: 122 + /bin/sh: line 1: 5216 Segmentation fault ${dir}$tst + FAIL: tst_utf8 + + *** Testing ncgen and ncdump for UTF8 support... + *** creating classic offset file with utf8 characters... + ncgen: NetCDF: Name contains illegal characters + ncgen: NetCDF: Invalid dimension ID or name + ncgen: NetCDF: Name contains illegal characters + FAIL: run_utf8_tests.sh + ========================================= + 2 of 8 tests failed + +Ed also reports this is a compiler problem (which has been reported) and +that there is a workaround: + + ... in libsrc/string.c the test + + if(ch <= 0x7f) { + + can be changed (in two places) to + + if(ch < 0x7f || ch == 0x7f) { + + This was the only change I needed to pass the netcdf-4 tests with Intel + version 11. + +### "ncdump -v group/var" reports "group not found" + +John Storrs reported a bug using ncdump -v applied to netCDF-4 files, in +which an erroneous 'group not found' message was displayed for valid +group/var names. This is fixed in the next release, and the fix is also +in the [current snapshot +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/snapshot/). + +Known Problems with netCDF 4.0 +------------------------------ + +- [Ncdump assumes default fill value for unsigned byte + data](#ncdump_ubyte_fill) +- [Ncdump of compound type with array field](#compound_array_field) +- [Memory leak with VLEN attributes](#mem_leak) +- [Error dyld: Symbol not found: + _H5P_CLS_FILE_ACCESS_g](#o_problem_mac) +- [Bug with multiple unlimited dimensions in one + var](#multiple_unlimited) +- [Fortran90 interface Using Intel ifort under + Cygwin](#ifort-f90-cygwin) +- [ncdump bug for filenames beginning with a numeric + character](#ncdump-numeric-filename) +- [ncgen/ncdump test failure with Intel version 11 + compilers](#intel_11-ncgen) + +### Ncdump assumes default fill value for unsigned byte data + +The ncdump utility incorrectly assumes a default fill value of "255" for +data of unsigned byte type, although no default fill value is assumed +for data of type signed byte. There should be no default fill values +when reading any byte type, signed or unsigned, because the byte ranges +are too small to assume one of the values should appear as a missing +value unless a \_FillValue attribute is set explicitly. This bug is +fixed in the current snapshot distribution. + +### Ncdump of compound type with array field + +Running the ncdump utility on a file with a compound type with an array +field may result in a segmentation violation. A fix is in the current +netCDF-4.0 snapshot distribution. + +### Memory leak with VLEN attributes + +We believe there are some memory leaks associated with VLEN attributes +in HDF5 1.8.1. This is being addressed by the HDF5 team, and will be +fixed by the next HDF5 release. + +### Error dyld: Symbol not found: _H5P_CLS_FILE_ACCESS_g + +On some Macintosh systems here at NetCDF World Test Center, on the +hundreth floor of UCAR Tower \#2, the following build error occurs: + + *** Checking HDF5 enum types. + *** Checking simple HDF5 enum type...ok. + *** Checking HDF5 enum type missing values...ok. + *** Tests successful! + PASS: tst_h_enums + dyld: Symbol not found: _H5P_CLS_FILE_ACCESS_g + Referenced from: + /tmp/n4_sid/netcdf-4.0-snapshot2008042320/libsrc4/.libs/libnetcdf.5.dylib + Expected in: flat namespace + + FAIL: tst_lists + dyld: Symbol not found: _H5P_CLS_FILE_ACCESS_g + Referenced from: + /tmp/n4_sid/netcdf-4.0-snapshot2008042320/libsrc4/.libs/libnetcdf.5.dylib + Expected in: flat namespace + + FAIL: tst_dims + dyld: Symbol not found: _H5P_CLS_FILE_ACCESS_g + Referenced from: + /tmp/n4_sid/netcdf-4.0-snapshot2008042320/libsrc4/.libs/libnetcdf.5.dylib + Expected in: flat namespace + + etc. + +This can be caused by the configure script failing to add "-lhdf5" to +the link flags in the generated Makefiles. Set LDFLAGS to include +"-L/WHERE/HDF5/IS/INSTALLED/lib -lhdf5" and try again. + +------------------------------------------------------------------------ + +Bug with multiple unlimited dimensions in one var + +There is a bug in the 4.0 release related to the lengths of dimensions +when more than one unlimited dimension is used in the same variable. + +The bug is fixed in the latest [netCDF-4 snapshot +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/snapshot/netcdf-4-daily.tar.gz). + +### Fortran90 interface Using Intel ifort under Cygwin + +Chris Dallimore reports success in getting the Fortran 90 interface of +Version 4.0 to compile under CYGWIN using the Intel ifort compile; + + 1 - Download and unpack netcdf-4.0.tar.gz + + 2 - In configure replace conftest.o and conftestf.o with conftest. + $ac_objext and conftest.$ac_objext, I'm Not sure why autoconf doesn't + do this. + + 3 - + Save http://msinttypes.googlecode.com/svn/trunk/inttypes.h as libsrc/ + inttypes_msvc.h + Save ttp://msinttypes.googlecode.com/svn/trunk/stdint.h as libsrc/ + stdint_msvc.h + + modify line 43 of libsrc/inttypes_msvc.h + from + #include + to + #include + + 4 - in libsrc utf8proc.h at line 79 replaces + + #include + + with + + #ifndef _MSC_VER + #include + #else + #include + typedef long ssize_t; + typedef unsigned int uint32_t; + #endif + + It looks like configure is checking for ssize_t so there is probably a + better way to do this. + + 5 - + in libsrc/posixio.c at line 18 replace + + #ifdef _MSC_VER /* Microsoft Compilers */ + #include + #else + #include + #endif + + with + + #ifdef _MSC_VER /* Microsoft Compilers */ + #include + typedef long ssize_t; + typedef unsigned int uint32_t; + #else + #include + #endif + + 6 - + in putget.m4 at line 24 added + + #ifdef _MSC_VER + #include + #endif // _MSC_VER ] + + Run + ./configure --prefix=/cygdrive/z/cwr/Software/Eclipse/CWRModelSource -- + disable-examples --disable-cxx --disable-utilities + + Relevant environment variables + FC=ifort + F90=ifort + FFLAGS=/debug:full /traceback /nologo + FCFLAGS=/debug:full /traceback /nologo + FCFLAGS_f90=/debug:full /traceback /nologo + FLIBS= + CXX= + CPPFLAGS=/D AbsoftProFortran /D _MSC_VER /nologo + + IFORT_COMPILER10_POSIX=/cygdrive/c/Program Files/Intel/Compiler/ + Fortran/10.1.013 + VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8 + INTEL_LICENSE_FILE=C:\Program Files\Common Files\Intel\Licenses + PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel + TERM=cygwin + WINDIR=C:\WINDOWS + MAKEFLAGS=w -- F90=ifort + VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\ + VSINSTALLDIR_POSIX=/cygdrive/c/Program Files/Microsoft Visual Studio 8 + F90FLAGS=/debug:full /traceback /nologo + OS=CYGWIN + MAKEOVERRIDES=${-*-command-variables-*-} + USER=dallimor + VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC + INTEL_SHARED=C:\Program Files\Common Files\Intel\Shared Files + LIB=C:\Program Files\Intel\Compiler\Fortran\10.1.013\Ia32\Lib;C: + \Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib;C:\Program Files + \Microsoft Visual Studio 8\VC\lib;C:\Program Files\Microsoft Visual + Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio + \DF98\LIB;C:\Program Files\Microsoft Visual Studio\VC98\LIB + IFORT_COMPILER10=C:\Program Files\Intel\Compiler\Fortran\10.1.013 + MFLAGS=-w + VCINSTALLDIR_POSIX=/cygdrive/c/Program Files/Microsoft Visual Studio 8/ + VC + PROCESSOR_LEVEL=6 + PATH=/cygdrive/c/Program Files/Intel/Compiler/Fortran/10.1.013/Ia32/ + Bin:/cygdrive/c/Program Files/Common Files/Intel/Shared Files/Ia32/ + Bin:/cygdrive/c/Program Files/Microsoft Visual Studio 8/Common7/IDE:/ + cygdrive/c/Program Files/Microsoft Visual Studio 8/VC/bin:/cygdrive/c/ + Program Files/Microsoft Visual Studio 8/Common7/Tools:/cygdrive/c/ + Program Files/Microsoft Visual Studio 8/Common7/Tools/bin:/cygdrive/c/ + Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin:/cygdrive/c/ + apache-ant-1.7.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/ + cygdrive/c/Program Files/Microsoft Visual Studio/Common/Tools:/ + cygdrive/c/Program Files/Microsoft Visual Studio/Common/Msdev98/BIN:/ + cygdrive/c/Program Files/Microsoft Visual Studio/DF98/BIN:/cygdrive/c/ + Program Files/Microsoft Visual Studio/VC98/BIN:/cygdrive/c/Sun/SDK/jdk/ + bin:C:/oraclexe/app/oracle/product/10.2.0/server/bin:/cygdrive/c/ + WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/ + Wbem:/cygdrive/c/Program Files/jEdit:/cygdrive/c/Program Files/ + Microsoft SQL Server/90/Tools/binn/:/cygdrive/c/Program Files/Intel/ + Compiler/Fortran/10.1.013/IA32/Lib:/cygdrive/c/Program Files/Intel/ + Compiler/Fortran/10.1.013/EM64T/Lib:/cygdrive/c/Program Files/MATLAB/ + R2008a/bin:/cygdrive/c/Program Files/MATLAB/R2008a/bin/win32 + CPU=i386 + FP_NO_HOST_CHECK=NO + PROCESSOR_ARCHITECTURE=x86 + PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH + INTEL_SHARED_POSIX=/cygdrive/c/Program Files/Common Files/Intel/Shared + Files + MAKE_MODE=unix + INFOPATH=/usr/local/info:/usr/share/info:/usr/info: + PROGRAMFILES=C:\Program Files + CC=cl + INCLUDE=C:\Program Files\Intel\Compiler\Fortran + \10.1.013\Ia32\Include;C:\Program Files\Microsoft Visual Studio 8\VC + \atlmfc\include;C:\Program Files\Microsoft Visual Studio 8\VC + \include;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK + \include;C:\Program Files\Microsoft Visual Studio\DF98\INCLUDE;C: + \Program Files\Microsoft Visual Studio\VC98\INCLUDE + + + Now configure works + + make will compile but fails on linking + + libtool: link: ( cd ".libs" && rm -f "libnetcdf2.la" && ln -s "../ + libnetcdf2.la" "libnetcdf2.la" ) + /bin/sh ../libtool --tag=CC --mode=link /cygdrive/z/cwr/Software/ + Eclipse/CWRModelSource/src/external/netcdf_src/netcdf-4.0/compile + cl -version-info 4:0:0 -o libnetcdf.la -rpath /cygdrive/z/cwr/ + Software/Eclipse/CWRModelSource/lib attr.lo ncx.lo putget.lo dim.lo + error.lo libvers.lo nc.lo string.lo v1hpg.lo var.lo utf8proc.lo + posixio.lo libnetcdf2.la ../fortran/libnetcdff.la + libtool: link: warning: undefined symbols not allowed in i686-pc- + cygwin shared libraries + libtool: link: (cd .libs/libnetcdf.lax/libnetcdf2.lib && ar x "/ + cygdrive/z/cwr/Software/Eclipse/CWRModelSource/src/external/netcdf_src/ + netcdf-4.0/libsrc/./.libs/libnetcdf2.lib") + libtool: link: (cd .libs/libnetcdf.lax/libnetcdff.lib && ar x "/ + cygdrive/z/cwr/Software/Eclipse/CWRModelSource/src/external/netcdf_src/ + netcdf-4.0/libsrc/../fortran/.libs/libnetcdff.lib") + .libs/libnetcdff.lax/libnetcdff90.lib/typeSizes.obj: No such file or + directory + + It looks like the Microsoft LInker doesn't like the GNU lib format. + + I was however able to compile and link using some static (ie non + automake) makefiles that are part of our overall model build + environment. + +### ncdump bug for filenames beginning with a numeric character + +The ncdump utility in releases 4.0 and 3.6.3 rejects filenames starting +with the digits 0,1 and 2 with an error message such as: + + ncdump: name begins with space or control-character: 2 + +This bug is fixed in the daily snapshot release and in 4.0.1-beta +releases, but a one-line patch to ncdump/dumplib.c (for either +netCDF-4.0 or netCDF-3.6.3) is to replace the line + + if((*cp >= 0x01 && *cp <= 0x32) || (*cp == 0x7f)) + +with the following line instead + + if((*cp >= 0x00 && *cp <= 0x20) || (*cp == 0x7f)) + +------------------------------------------------------------------------ + +Known Problems with netCDF 3.6.3 +-------------------------------- + +- [Building shared libraries on Macintosh with + g95 fails.](#g95_mac_shared) +- [Building Fortran/C++ shared libraries on AIX fails.](#AIX_shared) +- [Building shared libraries on HPUX with native tools results in only + static libraries.](#HPUX_shared) +- [Can't build shared library with F90 API on IRIX.](#IRIX_f90_shared) +- [ncdump bug for filenames beginning with a numeric + character](#ncdump-numeric-filename) + +------------------------------------------------------------------------ + +### Can't build shared library with F90 API on IRIX + +When building shared libraries on out IRIX test system, I got the +following error: + + ld32: FATAL 12 : Expecting n32 objects: /lib/libc.so.1 is o32. + +Obviously there is some ABI confusion here, but we don't know how to +resolve it. Any user who can solve this should email +support-netcdf@unidata.ucar.edu so that we can share the method with +other users. + +------------------------------------------------------------------------ + +Known Problems with netCDF 3.6.2 +-------------------------------- + +- [Setting ARFLAGS does not work.](#ARFLAGS) +- [Bugs in support for variables larger than 4 GiB](#large_vars_362) +- [Bug in C++ interface prevents creating 64-bit offset format + files](#cxx_64-bit) +- [Shared libraries do not work with the NAG + fortran compiler.](#nag_362) +- [The tests in nf_test fail with seg fault with the Absoft Version + 10.0 fortran compiler.](#absoft10) +- [The documented --enable-64bit option doesn't work](#enable-64bit) +- [Building netCDF-3.6.2 with gfortran version + 4.3.x fails.](#gfortran_43) +- [Building shared libraries on Macintosh with + g95 fails.](#g95_mac_shared) +- [Building shared libraries on HPUX with native tools results in only + static libraries.](#HPUX_shared) +- [Building Fortran/C++ shared libraries on AIX fails.](#AIX_shared) +- [Building with older versions of g++ fails.](#old_gpp) +- [The .NET build files are not included in the + 3.6.2 release.](#NET_3_6_2) +- [Snapshot .NET build files do not work for Visual Studio 8.0 + beta releases.](#NET_80_362) +- [The -disable-v2 option causes the fortran build to fail with some + fortran compilers.](#disable-v2_3_6_2) +- [The --disable-c option does not work.](#disable-c_3_6_2) + +------------------------------------------------------------------------ + +### Setting ARFLAGS does not work + +Sometimes when building netCDF, flags to the ar utility need to be set. +Setting ARFLAGS does not work. + +(Note: If you are doing this to build 64-bit libraries on an AIX +platform, the most fool-proof way to built 64-bit applications under AIX +is to set the OBJECT\_MODE environment variable to 64. If you still feel +you must setr flags for ar, read on.) + +Try the build again, setting AR\_FLAGS instead of ARFLAGS. + +### Bugs in support for variables larger than 4 GiB + +As first reported by Mario Emmenlauer, there is a bug in netCDF-3.6.2 +(and earlier versions) in the code for creating byte and short type +variables greater than 4 GiB in size. This problem resulted in an +assertion violation or arithmetic exception that would have caused a +program to halt, rather than writing bad data or corrupting existing +data. + +A fix is available as a [patch](../patches/large-vars-362-patch) to the +file libsrc/var.c in the netcdf-3.6.2 distribution. The bug is also +fixed in releases 3.6.3 and later. + +1. On 32-bit platforms (with size\_t an unsigned 32-bit type): + - For a short variable, if the product of dimensions (not counting + the record dimension, if any) is greater than 2^31^ (that's + 2147483648), the following assertion violation occurs + + Assertion failed: remaining > 0, file putget.c, line 347 + + - For any type of variable, if the product of dimensions (not + counting the record dimension, if any) is exactly 2^32^ + (that's 4294967296) or any multiple of 2^32^, a divide by zero + occurs + + Arithmetic Exception(coredump) + +2. On 64-bit platforms (with size\_t an unsigned 64-bit type): + - For a byte variable, if the product of dimensions (not counting + the record dimension, if any) is greater than 2^32^, an + assertion violation occurs + + Assertion failed: *ulp <= X_SIZE_MAX, file ncx.c, line 1810 + + - For a short variable, if the product of dimensions (not counting + the record dimension, if any) is greater than 2^31^, the same + assertion violation occurs + + Assertion failed: *ulp <= X_SIZE_MAX, file ncx.c, line 1810 + +### Bug in C++ interface prevents creating 64-bit offset format files + +As reported by Jos Verdoold, a bug in the netCDF 3.6.2 (and earlier +versions) C++ interface prevents creating new files in Offset64Bits mode +using the C++ API. The fix is to change two lines (378 and 393) in the +file src/cxx/netcdf.cpp, changing "=" to "|=" in each line, then +rebuild: + + 378c378 + < mode = NC_WRITE; + --- + > mode |= NC_WRITE; + 393c393 + < mode = NC_NOCLOBBER; + --- + > mode |= NC_NOCLOBBER; + +This fix has been incorporated into netCDF 3.6.3 and later versions. + +### The tests in nf\_test fail with seg fault with the Absoft Version 10.0 fortran compiler. + +The absoft fortran compiler, version 10.0, changes the way that a C +function returning string is called from fortran. + +This causes the absoft fortran settings in cfortran.h to no longer work, +and this is reflected in a segmentation fault in the test program +nf\_test/nf\_test. + +As a workaround, users with absoft version 10 can get the latest +netCDF-3 snapshot and build it with the --enable-absoft10-hack option +set. + +Get the snapshot, and see the working output, on the [netCDF-3 +snapshot](http://www.unidata.ucar.edu/software/netcdf/builds/snapshot/) +page. + +### Shared libraries do not work with the NAG fortran compiler. + +We have reports that the shared library build does not work with the NAG +fortran compiler. The NAG compiler is not one of the compilers we +current support (and test on) at Unidata. The only known work around is +to build without the --enable-shared option. + +Any user who can debug this problem with the NAG compiler should send +the resuts to support-netcdf@unidata.ucar.edu, so that it can be +incorporated into the netCDF distribution. + +Interested users may also wish to subscribe to the [netcdf-porting +mailing +list](http://www.unidata.ucar.edu/mailing_lists/archives/netcdf-porting/). + +### The documented --enable-64bit option doesn't work. + +The --enable-64bit option appeared in the 3.6.1 release, and was-- +removed for the 3.6.2 release. + +Unfortunately, the documentation was not updated, so that the 3.6.2 +documentation still mentions the enable-64bit option. Sorry about that. + +The documentation has been corrected for the [netCDF-3 +snapshot](http://www.unidata.ucar.edu/software/netcdf/builds/snapshot/) +and the [netCDF-4 +snapshot](http://www.unidata.ucar.edu/software/netcdf/builds/snapshot/index_4.html) +documentation. + +### Building netCDF-3.6.2 with gfortran version 4.2.x or 4.3.x fails. + +Something changed in gfortran version 4.3 relating to how fortran +functions can call C functions. + +In netCDF, the interface between C and Fortran is handled by the +cfortran.h package, which requires a pre-processor define describing the +type of fortran you are using. + +For gfortran up to version 4.1.x, the netCDF distribution builds cleanly +with the "gFortran" preprocessor symbol set. For gfortran 4.2.x and +greater, the "pgiFortran" preprocessor symbol works. + +The 3.6.2 build uses "gFortran", unless you specifically set the +CPPFLAGS environmental variable to "-DpgiFortran". + +This works in my bash shell: + + FC=gfortran CPPFLAGS=-DpgiFortran ./configure && make check + +This problem has been fixed in the [netCDF-3 +snapshot](../builds/snapshot). Now configure checks the version of +gfortran before setting the appropriate flag. + +### Building shared libraries on Macintosh with g95 fails. + +Building shared libraries on the Macintosh fails + + + *** Testing netCDF-3 Fortran 90 API. + dyld: lazy symbol binding failed: Symbol not found: __g95_size + Referenced from: + /tmp/n3_mort/netcdf-3.6.2-snapshot2007052501/fortran/.libs/libnetcdff.4.dylib + Expected in: flat namespace + + dyld: Symbol not found: __g95_size + Referenced from: + /tmp/n3_mort/netcdf-3.6.2-snapshot2007052501/fortran/.libs/libnetcdff.4.dylib + Expected in: flat namespace + + FAIL: tst_f90 + ========================================= + 1 of 5 tests failed + Please report to support@unidata.ucar.edu + ========================================= + +### Building shared libraries on HPUX with native tools results in only static libraries. + +On the only HPUX machine I have access to for testing, the +--enable-shared still results in only the static library being linked. + +This may be because of and old C++ compiler on this particular platform. +Any HPUX use who can provide information about this should send email to +support-netcdf@unidata.ucar.edu. bash-2.04\$ uname -a HP-UX tweety +B.11.00 A 9000/785 2004553471 + +### Building shared libraries on AIX fails. + +On the Unidata AIX platforms, the shared netCDF build fails with either +the Fortran or C++ compilers, like this: + + make check-TESTS + *** Creating fills.nc. + *** SUCCESS! + PASS: create_fills.sh + /bin/sh: 16012 Segmentation fault(coredump) + FAIL: nf_test + /bin/sh: 16018 Segmentation fault(coredump) + FAIL: tst_f77_v2 + /bin/sh: 16024 Segmentation fault(coredump) + FAIL: ftest + ========================================= + 3 of 4 tests failed + Please report to support@unidata.ucar.edu + ========================================= + +If built without fortran or C++, the build succeeds, but shared +libraries are not built. (Static libraries are). + +I don't know what is causing this. If any AIX users can shed any light, +that would be most helpful. + +Shared builds also fail the same way when using GNU compilers. + +### Building with older versions of g++ fails. + +The build fails like this: + + libtool: compile: g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../fortran -DDEBUG -I../libsrc -g -O2 -MT netcdf.lo -MD -MP -MF .deps/netcdf.Tpo -c netcdf.cpp -o netcdf.o + In file included from /opt/gnu/gcc/include/c++/3.2/powerpc-ibm-aix5.0.0.0/bits/c++io.h:35, + from /opt/gnu/gcc/include/c++/3.2/bits/fpos.h:44, + from /opt/gnu/gcc/include/c++/3.2/iosfwd:46, + from /opt/gnu/gcc/include/c++/3.2/ios:44, + from /opt/gnu/gcc/include/c++/3.2/ostream:45, + from /opt/gnu/gcc/include/c++/3.2/iostream:45, + from netcdf.cpp:13: + /opt/gnu/gcc/include/c++/3.2/cstdio:108: `fgetpos' not declared + /opt/gnu/gcc/include/c++/3.2/cstdio:110: `fopen' not declared + /opt/gnu/gcc/include/c++/3.2/cstdio:115: `freopen' not declared + /opt/gnu/gcc/include/c++/3.2/cstdio:118: `fsetpos' not declared + netcdf.cpp: In member function `NcBool NcVar::set_cur(long int, long int, long + int, long int, long int)': + +This happens in old versions of g++ when large files are used. To fix +this, either upgrade your g++ compiler, or else use --disable-largefile +with configure, to turn off large file handling. + +### The .NET build files are not included in the 3.6.2 release. + +The netCDF 3.6.2 release does not contain the .NET build files. Whoops! +Sorry about that. + +.NET users should use the latest snapshot, or continue to use the 3.6.1 +release. + +This is now fixed in the netCDF-3 snapshot. Get the snapshot from the +[netCDF-3 snapshot build page](../builds/snapshot). + +### Snapshot .NET build files do not work for Visual Studio 8.0 beta. + +A user has reported that Visual Studio .NET version 8.0 beta does not +build with the netCDF .NET build files in win32/NET. + +Interested users may also wish to subscribe to the [netcdf-porting +mailing +list](http://www.unidata.ucar.edu/mailing_lists/archives/netcdf-porting/). + +### The -disable-v2 option causes the fortran build to fail with some fortran compilers. + +The netCDF version 2 API is maintained for backward compatibility. We +are committed to maintaining the V2 API for all future releases of +netCDF. However, the --disable-v2 option is provided -- for users who +wish to compile the netCDF libraries without the V2 API. + +The --disable-v2 option will cause the fortran build to fail on some +fortran 95 compilers because the netcdf.inc file still includes the +names of the V2 API functions. (Other fortran 90 compilers ignore +these). + +If your compiler fails with --disable-v2, you can either refrain from +using this option (that is, build the v2 API as well as the V3 API), or +you can get the netCDF-3 [snapshot](../builds/snapshot). + +This is fixed for future releases of netCDF. + +### The --disable-c option does not work. + +The --disable-c option should turn off the building of the netCDF C +library for use with --enable-separate-fortran (to save a small amount +of tme building and testing. However this does not happen. The C library +is built in any case. + +Users may ignore this option in version 3.6.2. It is fixed in the +netCDF-3 [snapshot](../builds/snapshot) and for future releases of +netCDF. + +Known Problems with netCDF 3.6.1 +-------------------------------- + +[Building on IBM Bluegene login node (SUSE Linux)](#login_node_3_6_1) + +[Linux x86 Fedora4 with Intel ifort 9.0 compiler](#ifort_3_6_1) + +### Building on IBM Bluegene login node (SUSE Linux) + +Michael McCracken reports the following: + + Hi, I have been working with netcdf and parallel netcdf on + bluegene at SDSC. I have no problems building a version to link with + WRF and run on the ppc32 compute nodes. + + When I need to inspect a data file, I can't run the ncdump that is + built with the cross-compiling configure without running it on a + compute node. It works, but I end up waiting in the queue (and being + charged for using 64 CPUs). + + I'd like to build an ncdump that works on the login node, and I was + wondering if anyone had done that on a bluegene yet. The local staff + at SDSC haven't. + + Here's how I did it: + + After some debugging, I can configure and compile with the following + commands. + + I added -DIBMR2Fortran because apparently that's not getting set on + bluegene (probably because it's linux and not AIX), and without it + compiling in the fortran/ subdir barfs. + + setenv CC "xlc" + setenv CFLAGS "-O3 -qstrict -DIBMR2Fortran" + setenv CPP "xlc -E" + setenv CXX "xlC" + setenv CXXFLAGS "-O3 -qstrict" + setenv CXXCPP "xlC -E" + setenv F77 "xlf" + setenv FC "xlf" + setenv F90 "xlf90" + setenv FFLAGS "-O3 -qstrict" + + ./configure --disable-flag-setting + + I get a clean build, and ncdump works for me... + +### Linux x86 Fedora4 with Intel ifort 9.0 compiler + +For netCDF version 3.6.1, Jonathan Rougier contributes the following +work around for an intel fortran compiler bug. + +There is a bug (which may have been fixed: see the ifort pages), which +generates an error message along the lines of: + + IPO link: can not find "(" + ifort: error: problem during multi-file optimization compilation (code + 1) + +The documented cludge, which worked for me, is: + + # normal flags + + setenv FC ifort + setenv FFLAGS "-mp -recursive" + setenv CPPFLAGS "-DNDEBUG -DpgiFortran" + + # cludge + + echo null > \(; echo null > AS_NEEDED + echo null > nf_test/\(; echo null > nf_test/AS_NEEDED + echo null > ncgen/\(; echo null > ncgen/AS_NEEDED + +which creates files called '(' and AS\_NEEDED in the appropriate places. + +------------------------------------------------------------------------ + +\ + +Known Problems with netCDF 3.6.0 +-------------------------------- + +- [nctest fails on IRIX platform](#irix-nctest) +- [C++ API doesn't build on Irix](#irix-CXX-build) +- [Potentially serious bug with 64-bit offset files](#cdf2-bug) +- [Cygwin build doesn't work](#bad-cygwin) +- [Windows DLL doesn't include F77 API](#dll-fortran) +- [F90 tests fail with Portland F90 compiler](#portland-f90) +- [Config doesn't find working F77 or F90 compiler on + AIX](#aix-config) +- [F90 functions not added to library on AIX](#aix-make) +- [Problems with fortran compile because of -Df2cFortran being added + by configure](#fortran-config) +- [Message: "ncgenyy.c is out-of-date with respect to + ncgen.l"](#ncgen-timestamp) +- [Configure help specifies FCFLAGS instead of FFLAGS](#fcflags) +- [Specifying an edge-length of zero returns error instead of no + data](#zeroedge) +- [C++ library doesn't build under Cygwin](#cygwincpp) +- [Large file problems in Visual C++ compile](#visualcpp_largefile) +- [When using TEMP_LARGE, need a trailing slash](#temp_large) + +------------------------------------------------------------------------ + +### nctest fails on IRIX platform + +It has been reported (by Atro Tossavainen) that nctest fails on some +Irix builds. (We cannot duplicate this problem at netCDF World HQ). + +The nctest fails when comparing the test-generated out with a saved copy +of the output. + +This problem was fixed in the 3.6.1 release. + +### C++ API doesn't build on Irix + +On Irix systems without a recent version of the C++ compiler, the C++ +API won't build. The solution is to set CXXFLAGS to -LANG:std. + +### Potentially serious bug with 64-bit offset files + +Kevin Thomas of the University of Oklahoma has reported a potentially +serious bug in using the new large file support in netCDF 3.6.0. Users +of the new large file facilities are cautioned to either apply [this +one-line patch to netCDF +3.6.0](/software/netcdf/patches/patch-3.6.0-cdf2) or to upgrade from +version 3.6.0 to the current release version 3.6.0-p1, available from +[netcdf.tar.Z](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.Z) or +[netcdf.tar.gz](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.gz). +Until you can upgrade, avoid rewriting in place any large (> 2 GiB) +netCDF files that use the new 64-bit offset format under the conditions +described below. + +The bug occurs following this sequence of steps: + +A large netCDF file is created using the new 64-bit offset format +variant (also known as the version 2 format) and the file is closed. + +Later the file is opened for writing, followed by either of the +following operations: + +- enter define mode (calling nc\_redef(), nf\_redef(), or + nf90\_redef(), in C, Fortran-77, or Fortran-90 interface, + for example) to add a new dimension, variable, or attribute; or +- write a new value for an existing attribute (either a global or a + variable-specific attribute). + +Under these conditions, after you leave define mode or close the file, +the file header is written out in the "classic" (version 1) netCDF +format, chopping the leading bits off any variable offsets that were +large enough to require more than 32 bits. If there were no such huge +variable offsets, the file is undamaged and remains readable as a +classic netCDF file. If there were any huge variable offsets (> 2 +GiB), data for the first such variable and all subsequent variables will +not be accessed correctly. It is possible to restore the header for such +a file to the correct 64-bit offset form so that the data can +subsequently be accessed correctly, if no data values have been +overwritten since the file header was changed to classic format. Feel +free to [contact us](mailto:support-netcdf@unidata.ucar.edu) for help +restoring the file headers if this applies to you. If you have any large +64-bit offset format netCDF files that might have mistakenly been +rewritten with classic format headers, please be careful not to write +any more data into them, as it could overwrite data that could not +subsequently be recovered. + +If you want to know how to tell if a 64-bit offset file has been +converted by this bug into a classic format file, see the answer to the +FAQ [How can I tell if a netCDF file uses the classic format or new +64-bit offset +format?](/software/netcdf/faq.html#Large%20File%20Support5). + +### Cygwin Build Doesn't Work + +To build on Cygwin, you must get the [latest 3.6.1 beta +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-beta.tar.gz). + +### Windows DLL doesn't include F77 API + +The netCDF windows DLL doesn't include the Fortran API. We are working +on this problem for the next release. Meanwhile, if you need the fortran +API in your DLL, you'll have to use the [netCDF 3.5.1 +DLL](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-3.5.1-win32dll.zip). + +### F90 tests fail with Portland F90 compiler + +On some versions of the Portland Group F90 compiler, the F90 tests fail, +looking something like this: + + + *** Failure *** + *** example_good.cdl 2000-04-05 21:33:14.000000000 +0200 + --- example.cdl 2005-01-11 10:21:31.624884000 +0100 + *************** + *** 34,43 **** + 953, 954, 955, + 956, 957, 958, + 959, 960, 961, + ! 962, 963, 964, + ! 965, 966, 967, + ! 968, 969, 970, + ! 971, 972, 973 ; + + lat = -90, -87.5, -85, -82.5 ; + + --- 34,43 ---- + 953, 954, 955, + 956, 957, 958, + 959, 960, 961, + ! 950, 951, 952, + ! 953, 954, 955, + ! 956, 957, 958, + ! 959, 960, 961 ; + +This problem is caused by a bug in the Portland F90 compiler. Upgrade to +the latest version of the compiler or get the free patch from Portland +Group to fix this. + +### Config doesn't find working F77 or F90 compiler on AIX + +On AIX systems, the configure step can't find either the F90 or the F77 +compiler. On AIX system, you must set the environment variables FC and +F90 to xlf and xlf95. + +### xlf90 fails to compile test program during configure on AIX + +On AIX systems, the F90 option -qsuffix=f=f90 is required in F90FLAGS. +Configure should automatically detect and add this to F90FLAGS if it's +not already there, but it doesn't. + +FIX: Make sure that -qsuffix=f=f90 is set in the F90FLAGS before running +configure. + +This will be fixed in the next beta release. + +### F90 functions not added to library on AIX + +On AIX systems, the F90 functions may not be added to the library. This +is due to a quirk of AIX make. + +Before doing "make install", change to the Fortran90 directory (src/f90) +and do "make". Then proceed to "make install". + +### Problems with fortran compile because of -Df2cFortran being added by configure" + +With some fortran compilers, such as Absoft, the configure script +stupidly adds a -Df2cFortran to the C preprocessor flags, which causes +the fortran tests in nf\_test to fail to link. + +This problem is fixed in the 3.6.1 beta release. Get the [3.6.1 beta +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-beta.tar.Z). + +### Message: "ncgenyy.c is out-of-date with respect to ncgen.l" + +On some platforms (HP-UX 11.00, maybe others), make fails with an error +message like: + + Warning: ncgenyy.c is out-of-date with respect to ncgen.l + Warning: It should be recreated via flex on a SunOS 5 system + +and then fails if the "flex" command is not found. + +The problem is that the modification time on the source file +src/ncgen/ncgenyy.c is being interpreted as earlier than the +modification time on the source file src/ncgen/ncgen.l, even though +ncgenyy.c was actually created after ncgen.l was modified. To workaround +this problem on a Unix system, run the following command from the netCDF +src/ directory to update the modification time of the derived file: + + touch ncgen/ncgenyy.c + +Then rerun the make command. + +### Configure help specifies FCFLAGS instead of FFLAGS + +If you run "configure --help", it suggests setting "FCFLAGS" for the +fortran compiler flags, but "FFLAGS" is actually used for the Fortran +compiler flags. "FCFLAGS" is ignored when compiling. + +This problem will be is fixed in the next beta release. Until then, use +FFLAGS, not FCFLAGS. + +### Specifying a count length of zero returns an error instead of no data + +For access to array sections, strided access, or mapped access, you need +to specify both a start index vector and a count vector, where the count +vector specifies the number of slices along each edge to access. If the +start index vector specifies the maximum dimension size and the +corresponding count vector is zero, the library should just return no +data, but instead it returns an error status indicating "Index exceeds +dimension bound". This problem has been present in all versions of +netCDF, and the test programs even verify that in this case an error is +returned rather than gracefully accessing no data. + +This will be fixed in the next minor version. + +### C++ library doesn't build under Cygwin + +Running configure on Cygwin fails to find GNU C++ compiler, even if it +is present on the platform. As a result, the C++ interface is never +built. + +This problem is fixed in the 3.6.1 beta release. Cygwin users interested +in the C++ interface should get the [3.6.1 beta +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-3.6.1-beta1.tar.Z). + +### Large file problems in Visual C++ compile + +The use of large files, and an 8-byte off\_t type, is not handled +correctly in the 3.6.0 release of the code and project files needed to +compile the netCDF library with Visual C++.NET. + +This problem is fixed in the 3.6.1 beta release. Users interested in +building their own DLL should get the [3.6.1 beta +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-3.6.1-beta1.tar.Z). +The DLL offered on the binary release page is 3.6.1 beta. + +### When using TEMP\_LARGE, need a trailing slash + +When using the environment variable TEMP\_LARGE during the netCDF 3.6.0 +make extra\_test phase, the directory name must be followed by a slash +to work. For example, use 'setenv TEMP\_LARGE /tmp/' instead of 'setenv +TEMP\_LARGE /tmp', as one would usually expect, and as the documentation +describes. + +This problem is fixed in the [3.6.1 beta +release](ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-3.6.1-beta1.tar.Z). +Users of 3.6.0 should specify the trailing slash to use the TEMP\_LARGE +environment variable in make extra\_test. + +------------------------------------------------------------------------ + +Reported problems and workarounds are also available for some previous +releases: [version 3.5](/software/netcdf/known_problems_35.html), +[version 3.4](/software/netcdf/known_problems_34.html), [version +3.3.1](/software/netcdf/known_problems_331.html), [version +3.3](/software/netcdf/known_problems_330.html), [version +2.4.3](/software/netcdf/known_problems_243.html), and [version +2.4.2](/software/netcdf/known_problems_242.html). diff --git a/contrib/netcdf/4.4.1.1/docs/mainpage.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/mainpage.dox similarity index 91% rename from contrib/netcdf/4.4.1.1/docs/mainpage.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/mainpage.dox index 33e4df2e1fb..ccd1366f0cc 100644 --- a/contrib/netcdf/4.4.1.1/docs/mainpage.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/mainpage.dox @@ -18,12 +18,12 @@ The NetCDF homepage may be found at The netCDF-C Nightly and Continuous Integration Dashboard +- The netCDF-C Nightly and Continuous Integration Dashboard - NetCDF-C at Travis-CI \subsubsection NetCDF-Fortran -- The netCDF-Fortran Nightly and Continuous Integration Dashboard +- The netCDF-Fortran Nightly and Continuous Integration Dashboard - NetCDF-Fortran at Travis-CI \section learn-more Learn more about using NetCDF-C @@ -63,7 +63,6 @@ to be used for different types of back-ends, for example, the HDF5 library, or a DAP client accessing remote data. - \ref nc_dispatch - \ref adding_dispatch -- \ref dispatch_notes - \ref put_vara_dispatch - \ref put_attr_dispatch diff --git a/contrib/netcdf/4.4.1.1/docs/netcdf.m4 b/contrib/netcdf/netcdf-c-4.6.2/docs/netcdf.m4 similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/netcdf.m4 rename to contrib/netcdf/netcdf-c-4.6.2/docs/netcdf.m4 diff --git a/contrib/netcdf/4.4.1.1/docs/notes.md b/contrib/netcdf/netcdf-c-4.6.2/docs/notes.md similarity index 100% rename from contrib/netcdf/4.4.1.1/docs/notes.md rename to contrib/netcdf/netcdf-c-4.6.2/docs/notes.md diff --git a/contrib/netcdf/4.4.1.1/docs/obsolete/fan_utils.html b/contrib/netcdf/netcdf-c-4.6.2/docs/obsolete/fan_utils.html similarity index 97% rename from contrib/netcdf/4.4.1.1/docs/obsolete/fan_utils.html rename to contrib/netcdf/netcdf-c-4.6.2/docs/obsolete/fan_utils.html index bbfd1acc663..b0b577a502a 100644 --- a/contrib/netcdf/4.4.1.1/docs/obsolete/fan_utils.html +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/obsolete/fan_utils.html @@ -1316,7 +1316,7 @@

Examples

The first value (-999) is treated as missing because (even - after conversion to Celsius) it is less than the valid mininum of -273.2. + after conversion to Celsius) it is less than the valid minimum of -273.2. The second value (32�F) is converted to 0�C. The third value (1e9) is treated as missing because it matches the input missing value specified by -m 1e9.

diff --git a/contrib/netcdf/4.4.1.1/docs/tutorial.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/tutorial.dox similarity index 95% rename from contrib/netcdf/4.4.1.1/docs/tutorial.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/tutorial.dox index b546ff069f9..bcd8c6a49a6 100644 --- a/contrib/netcdf/4.4.1.1/docs/tutorial.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/tutorial.dox @@ -144,9 +144,9 @@ must add support for netCDF-4 advanced features. In addition to the main netCDF-3 C API, there is an additional (older) C API, the netCDF-2 API. This API produces exactly the same files as -the netCDF-3 API - only the API is different. (That is, users can -create either classic format files, the default, or 64-bit offset -files, or netCDF-4/HDF5 files.) +the netCDF-3 API - only the API is different. That is, users can +create either classic CDF-1 format files, the default, 64-bit offset +files (CDF-2), 64-bit data files (CDF-5), or netCDF-4/HDF5 files. The version 2 API was the API before netCDF-3.0 came out. It is still fully supported, however. Programs written to the version 2 API will @@ -262,7 +262,7 @@ opaque types. These features may only be used when working with a netCDF-4/HDF5 -file. Files created in classic or 64-bit offset format cannot support +file. Files created in classic formats cannot support groups or user-defined types (see \ref netcdf_format).

\image html nc4-model.png @@ -432,6 +432,11 @@ examples are included with the netCDF Fortran and C++ APIs. - \ref example_sfc_pres_temp - \ref example_pres_temp_4D +Additionally, there is a example program demonstrating +how to use the filter API. This is C only and only accessible +when built with automake currently. +- \ref example_filter + Any existing netCDF applications can be converted to generate netCDF-4/HDF5 files. Simply change the file creation call to include the correct mode flag. @@ -677,6 +682,12 @@ data file. - simple_xy_nc4_wr.c - simple_xy_nc4_rd.c +\section example_filter The filter example + +This example demonstrates how to write and read a variable that is +compressed using, in this example, bzip2 compression. +- filter_example.c + \page interoperability_hdf5 Interoperability with HDF5 NetCDF-4 allows some interoperability with HDF5. @@ -786,8 +797,11 @@ with nc_get_vara()/nc_put_vara(). \page parallel_io Parallel I/O with NetCDF-4 -NetCDF-4 provides access to HDF5 parallel I/O features for netCDF-4/HDF5 files. NetCDF classic and 64-bit offset format may not be opened or created for use with HDF5-based parallel I/O. (They may be opened and created, but parallel I/O is not available.) They may be opened or created for use with parallel-netcdf-based parallel I/O. A few functions have been added to the netCDF C API to handle parallel I/O. You must build netCDF-4 properly to take advantage of parallel -features (see \ref build_parallel). +NetCDF-4 provides parallel file access to both classic and netCDF-4/HDF5 files. +The parallel I/O to netCDF-4 files is achieved through the HDF5 library while +the parallel I/O to classic files is through PnetCDF. A few functions have been +added to the netCDF C API to handle parallel I/O. You must build netCDF-4 +properly to take advantage of parallel features (see \ref build_parallel). The nc_open_par() and nc_create_par() functions are used to create/open a netCDF file with parallel access. @@ -796,9 +810,16 @@ create/open a netCDF file with parallel access. \section collective_independent Collective/Independent Access -Parallel file access is either collective (all processors must -participate) or independent (any processor may access the data without -waiting for others). All netCDF metadata writing operations are collective. That is, all creation of groups, types, variables, dimensions, or attributes. Data reads and writes (ex. calls to nc_put_vara_int() and nc_get_vara_int()) may be independent (the default) or collective. To make writes to a variable collective, call nc_var_par_access(). +Parallel file access is either collective (all processors must participate) or +independent (any processor may access the data without waiting for others). All +netCDF metadata writing operations are collective. That is, all creation of +groups, types, variables, dimensions, or attributes. Data reads and writes +(e.g. calls to nc_put_vara_int() and nc_get_vara_int()) may be independent, the +default) or collective. To change from collective to independent mode or vis +versa, call nc_var_par_access() with argument 'access' set to either +NC_INDEPENDENT or NC_COLLECTIVE. Note when using PnetCDF, the argument 'varid' +is ignored, as PnetCDF does not support per-variable collective/independent +mode change. \page tutorial_ncids Numbering of NetCDF IDs @@ -835,7 +856,7 @@ may change the next time the file is opened. To construct a netCDF file you need to: - create the file - Specify the name, optionally the format: classic -(the default) or 64bit-offset. +(the default), 64bit-offset, or 64-bit data. - define metadata - Specify the names and types of dimensions, data variables, and attributes. - write data - Write arrays of data from program variables to the @@ -903,7 +924,7 @@ attributes, and the unlimited dimid. num attributes. - nc_inq_dimid() Find dimension ID from its name. - nc_inq_varid() Find variable ID from its name. -- nc_inq_format() Find file format: classic or 64-bit offset +- nc_inq_format() Find file format: classic CDF-1, 64-bit offset CDF-2, or 64-bit data CDF-5 - nc_inq_libvers() Find the netCDF library version. \page accessing_subsets Reading and Writing Subsets of Data diff --git a/contrib/netcdf/4.4.1.1/docs/types.dox b/contrib/netcdf/netcdf-c-4.6.2/docs/types.dox similarity index 95% rename from contrib/netcdf/4.4.1.1/docs/types.dox rename to contrib/netcdf/netcdf-c-4.6.2/docs/types.dox index d6f1f150c10..229b598b4bd 100644 --- a/contrib/netcdf/4.4.1.1/docs/types.dox +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/types.dox @@ -12,8 +12,8 @@ a user-defined data type (see \ref user_defined_types). The atomic external types supported by the netCDF interface are: - ::NC_BYTE 8-bit signed integer -- ::NC_UBYTE 8-bit unsigned integer -- ::NC_CHAR 8-bit character byte +- ::NC_UBYTE 8-bit unsigned integer * +- ::NC_CHAR 8-bit character - ::NC_SHORT 16-bit signed integer - ::NC_USHORT 16-bit unsigned integer * - ::NC_INT (or ::NC_LONG) 32-bit signed integer @@ -22,9 +22,10 @@ The atomic external types supported by the netCDF interface are: - ::NC_UINT64 64-bit unsigned integer * - ::NC_FLOAT 32-bit floating point - ::NC_DOUBLE 64-bit floating point -- ::NC_STRING variable length character string * +- ::NC_STRING variable length character string + -\remark{* These types are available only for CDF5 (NC_CDF5) and netCDF-4 format (NC_NETCDF4) files. All the unsigned ints (except \ref NC_CHAR), the 64-bit ints, and string type are for CDF5 or netCDF-4 files only.} +\remark * These types are available only for CDF5 (NC_CDF5) and netCDF-4 format (NC_NETCDF4) files. All the unsigned ints and the 64-bit ints are for CDF5 or netCDF-4 files only. +\remark + These types are available only for netCDF-4 (NC_NETCDF4) files. These types were chosen to provide a reasonably wide range of trade-offs between data precision and number of bits required for each @@ -72,7 +73,7 @@ avoid such precision loss, check the external types of the variables you access to make sure you use an internal type that has adequate precision. -The names for the primitive external data types (byte, char, short, +The names for the primitive external data types (char, byte, ubyte, short, ushort, int, uint, int64, uint64, float or real, double, string) are reserved words in CDL, so the names of variables, dimensions, and attributes must not be type names. @@ -84,16 +85,16 @@ converted into other numeric types, it is interpreted as signed. For the correspondence between netCDF external data types and the data types of a language see \ref variables. -\section classic_structures Data Structures in Classic and 64-bit Offset Files +\section classic_structures Data Structures in Classic Files The only kind of data structure directly supported by the netCDF -classic (and 64-bit offset) abstraction is a collection of named +classic abstraction, i.e. CDF-1, 2, and 5 formats, is a collection of named arrays with attached vector attributes. NetCDF is not particularly well-suited for storing linked lists, trees, sparse matrices, ragged arrays or other kinds of data structures requiring pointers. It is possible to build other kinds of data structures in netCDF -classic or 64-bit offset formats, from sets of arrays by adopting +classic formats, from sets of arrays by adopting various conventions regarding the use of data in one array as pointers into another array. The netCDF library won't provide much help or hindrance with constructing such data structures, but netCDF provides @@ -115,7 +116,7 @@ arrays. See below.) \endcode As another example, netCDF variables may be grouped within a netCDF -classic or 64-bit offset dataset by defining attributes that list the +classic dataset by defining attributes that list the names of the variables in each group, separated by a conventional delimiter such as a space or comma. Using a naming convention for attribute names for such groupings permits any number of named groups diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/user_defined_formats.md b/contrib/netcdf/netcdf-c-4.6.2/docs/user_defined_formats.md new file mode 100644 index 00000000000..1d874c4027f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/user_defined_formats.md @@ -0,0 +1,114 @@ +User-Defined Formats for NetCDF {#user_defined_formats} +=============================== + +[TOC] + +User-Defined Formats {#udf_user_defined_formats} +===================================== + +## Introduction {#udf_Introduction} + +User-defined formats allow users to write their own adaptors for the +netCDF C library, so that it can read and (optionally) write a +proprietary format through the netCDF API. + +This capability is currently experimental. It involves the exposing of internal +netcdf interfaces and data structures that were previously invisible to users. +This means that it is unstable and the exposed interfaces are subject to change. +Use with caution. + +User-defined format code is packaged into a separate library, the +user-defined format dispatch library. This library, when linked with +the netCDF library, will allow user programs to read their proprietary +format through the netCDF API. The proprietary format is treated as if +it were one of the netCDF C library native binary formats. + +Coding the user-defined format dispatch library requires knowledge of +the netCDF library internals. User-defined format dispatch libraries +must be written in C. + +### Magic Numbers + +Some file formats use the first few bytes of the file as an identifier +for format. For example, HDF5 files have "HDF5" as the fist 4 bytes, +and netCDF classic files have "CDF1" as the first four bytes. This is +called the "magic number" of the file. + +User-defined formats can optionally support magic numbers. If the +user-defined format uses a magic number, and that magic number is +associated with the user-defined format, then netCDF will be able to +correctly identify those files from nc_open(). It will not be +necessary for the user to know or specify the underlying format. + +## Using User-Defined Formats from C Programms {#udf_With_C} + +A user-defined format can be added dynamically in the case of C programs. + +``` + /* Add our test user defined format. */ + if (nc_def_user_format(NC_UDF0, &tst_dispatcher, NULL)) ERR; +``` + +The file can now be opened by netCDF: + +``` + if (nc_open(FILE_NAME, NC_UDF0, &ncid)) ERR; +``` + +If a magic number is used in the file, that may be passed to +nc_def_user_format(). In that case, specifying the NC_UDF0 mode flag +to nc_open() is optional. The nc_open() will check the file and find +the magic number, and automatically associate the file with +NC_UDF0. The user will not need to know the format in order to open +the file with nc_open(). + +## Building NetCDF C Library with a User-Defined Format Library {#udf_Build_NetCDF_With_UDF} + +Once a user-defined format library is created, it may built into a +netCDF install. This allows the netCDF Fortran APIs, and the netCDF +utilities (ncdump, ncgen, nccopy) to natively use the user-defined +format. + +First the user-defined dispatch library must be built and installed. + +Then the netcdf-c package must be (re-)built. When building netcdf-c, +add the location of the user-defined format dispatch library include +file to the CPPFLAGS, and the location of the user-defined format +dispatch library in LDFLAGS. + +Configure netcdf-c with the option ````--with-udf0=````. + +If a magic number is associated with the user-defined format, it can +be specified with the --with-udf0-magic-number= argument. + +## Creating a User-Defined Format {#udf_Create_UDF} + +Creators of user-defined format libraries will have to become familar +with the internals of the netCDF-4 code. + +### Read-Only User-Defined Formats + +Many users will find that a read-only user-defined formats meets most +of their needs. With a read-only user-defined format, netCDF will be +able to read files of the user-defined format. Tools like ncdump and +nccopy can work on the files. + +A read-only user-defined format can be implemented with only 6 +functions. The code in libhdf4 is an excellent example of a read-only +dispatch layer. + +## Examples {#udf_Examples} + +The most simple-case example of a user-defined format is provided in +test nc_test4/tst_udf.c. + +A slightly more complex example, including the required +autoconf/automake files to build a user-defined format library, can be +found at the [sample user-defined format +library](https://github.com/NOAA-GSD/sample-netcdf-dispatch). In this +example, the HDF4 SD reader is re-implemented as an external +user-defined format. (This is unnecessary if you just want to read +HDF4 SD files, since the netCDF C library already includes an HDF4 SD +file reader. This user-defined format library uses the same code. It +is repackaged as a user-defined library to provide a working sample.) + diff --git a/contrib/netcdf/netcdf-c-4.6.2/docs/windows-binaries.md b/contrib/netcdf/netcdf-c-4.6.2/docs/windows-binaries.md new file mode 100644 index 00000000000..dbae61efae6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/docs/windows-binaries.md @@ -0,0 +1,70 @@ +Installing and Using netCDF-C Libraries in Windows {#winbin} +================================================== + +\brief NetCDF-C Libraries in a Windows Environment may be used under multiple sets of circumstances. + +[TOC] + +There are several development environments available for programmers who develop on Windows. + +* `Microsoft Visual Studio ` +* `MSYS/MinGW` +* `Cygwin` + +For developers using `Microsoft Visual Studio`, you may download using the Windows build instructions, or you may download the pre-built netCDF-C libraries from this page. + +For developers using `MSYS/MinGW` or `Cygwin`, you may build netCDF-C using the Linux/Unix build instructions. + +> For complex builds that include netCDF-4 and/or DAP support this may prove tricky, as it is time consuming to collect all of the dependencies. In these cases it may be easier to use the pre-built `netcdf` packages provided by the `MSYS` and `Cygwin` environments. + +Users who prefer to build the netCDF-C libraries from source in a Windows environment using Microsoft Visual Studio are referred to \ref netCDF-CMake + +# Getting pre-built netCDF-C Libraries for Visual Studio {#msvc-prebuilt} + +These libraries have been built using Visual Studio 2012. The downloads are installer packages which contain the netCDF-C libraries and utilities (ncgen, ncgen3, ncdump and nccopy), as well as the associated dependencies. + + +## Included Dependencies {#msvc-inc-deps} + +The included dependencies and versions are as follows: + +* `libhdf5`: 1.8.19 +* `libcurl`: 7.55.1 +* `zlib`: 1.2.8 + +## Latest Release (netCDF-C 4.6.2) {#msvc-latest-release} + +Configuration | 32-bit | 64-bit | +:-------------------|:-------- |:-------| +netCDF 3 | [netCDF4.6.2-NC3-32.exe][r1] | [netCDF4.6.2-NC3-64.exe][r5] +netCDF3+DAP | [netCDF4.6.2-NC3-DAP-32.exe][r2] | [netCDF4.6.2-NC3-DAP-64.exe][r6] +netCDF4 | [netCDF4.6.2-NC4-32.exe][r3] | [netCDF4.6.2-NC4-64.exe][r7] +netCDF4+DAP | [netCDF4.6.2-NC4-DAP-32.exe][r4] | [netCDF4.6.2-NC4-DAP-64.exe][r8] + +# Using the netCDF-C Libraries with Visual Studio {#msvc-using} + +In order to use the netcdf libraries, you must ensure that the .dll files (along with any dependencies from deps/shared/bin) are on the system path. In order to compile a program using these libraries, you must first link your program against the appropriate 'import' (.lib) libraries. + +## Install Hierarchy {#msvc-install-hierarchy} + +When installed, the netCDF libraries are placed in the specified locations, along with the netCDF-C utilities and dependencies. + +

+ +
+ +# Notes {#msvc-notes} + +*The following points should be considered when using the netCDF-C libraries on Windows.* + +1. When building the netCDF-C libraries with netCDF4 support, using the `Debug` libraries may cause extraneous warnings. These warnings are related to cross-dll memory management, and appear to be harmless. You can safely ignore them by using the `Release` libraries. [NCF-220] + + +[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-32.exe +[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-DAP-32.exe +[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-32.exe +[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-DAP-32.exe +[r5]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-64.exe +[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-DAP-64.exe +[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-64.exe +[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-DAP-64.exe diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/examples/C/CMakeLists.txt new file mode 100644 index 00000000000..191bc2d741e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/CMakeLists.txt @@ -0,0 +1,16 @@ +SET(exam_C_tests simple_xy_wr simple_xy_rd sfc_pres_temp_wr sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd) +SET(exam_C_tests_source "") +FOREACH(F ${exam_C_tests}) + set(exam_C_tests_source ${exam_C_test_source} ${F}.c) +ENDFOREACH() + +FOREACH(F ${exam_C_tests}) + add_bin_test(C_tests ${F}) +ENDFOREACH() + +SET_TESTS_PROPERTIES(C_tests_simple_xy_rd PROPERTIES DEPENDS C_tests_simple_xy_wr) +SET_TESTS_PROPERTIES(C_tests_sfc_pres_temp_rd PROPERTIES DEPENDS C_tests_sfc_pres_temp_wr) +SET_TESTS_PROPERTIES(C_tests_pres_temp_4D_rd PROPERTIES DEPENDS C_tests_pres_temp_4D_wr) + +SET(CLEANFILES sfc_pres_temp.nc simple_xy.nc pres_temp_4D.nc simple_nc4.nc simple_xy_nc4.nc) +SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.am new file mode 100644 index 00000000000..c4996e5e8ea --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.am @@ -0,0 +1,54 @@ +# This is a automake file, part of Unidata's netCDF package. +# Copyright 2006, see the COPYRIGHT file for more information. + +# This file builds the C examples. + +# Ed Hartnett, Ward Fisher, Dennis Heimbigner + +# Un comment to use a more verbose test driver +#SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose + +LDADD = -lm +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_LDFLAGS = + +# These are the netCDF-3 examples. +check_PROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr \ +sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd + +TESTS = run_examples.sh + +# To build netcdf-4, or not to build netcdf-4, that is the question... +if USE_NETCDF4 +# These are the extra netCDF-4 examples. +check_PROGRAMS += simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \ +simple_xy_nc4_rd + +if ENABLE_FILTER_TESTING +# filter_example.c should be same as nc_test4/test_filter.c +check_PROGRAMS += filter_example +TESTS += run_filter.sh +endif + +endif #USE_NETCDF4 + +if USE_PNETCDF +# These are the extra netCDF-4 examples. +check_PROGRAMS += parallel_vara +TESTS += parallel_vara +endif #USE_PNETCDF + +AM_CPPFLAGS += -I$(top_builddir)/liblib +AM_LDFLAGS += ${top_builddir}/liblib/libnetcdf.la + +if USE_NETCDF4 +TESTS += run_examples4.sh +endif #USE_NETCDF4 + +# These files are created by the tests. +CLEANFILES = *.nc + +EXTRA_DIST = CMakeLists.txt run_examples.sh run_examples4.sh run_filter.sh + +DISTCLEANFILES = findplugin.sh diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.in new file mode 100644 index 00000000000..b7c4a1b558e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/Makefile.in @@ -0,0 +1,934 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# This is a automake file, part of Unidata's netCDF package. +# Copyright 2006, see the COPYRIGHT file for more information. + +# This file builds the C examples. + +# Ed Hartnett, Ward Fisher, Dennis Heimbigner + +# Un comment to use a more verbose test driver +#SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +#LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +check_PROGRAMS = simple_xy_wr$(EXEEXT) simple_xy_rd$(EXEEXT) \ + sfc_pres_temp_wr$(EXEEXT) sfc_pres_temp_rd$(EXEEXT) \ + pres_temp_4D_wr$(EXEEXT) pres_temp_4D_rd$(EXEEXT) \ + $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) +TESTS = run_examples.sh $(am__append_3) $(am__EXEEXT_3) \ + $(am__append_6) + +# To build netcdf-4, or not to build netcdf-4, that is the question... +# These are the extra netCDF-4 examples. +@USE_NETCDF4_TRUE@am__append_1 = simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \ +@USE_NETCDF4_TRUE@simple_xy_nc4_rd + + +# filter_example.c should be same as nc_test4/test_filter.c +@ENABLE_FILTER_TESTING_TRUE@@USE_NETCDF4_TRUE@am__append_2 = filter_example +@ENABLE_FILTER_TESTING_TRUE@@USE_NETCDF4_TRUE@am__append_3 = run_filter.sh + +# These are the extra netCDF-4 examples. +@USE_PNETCDF_TRUE@am__append_4 = parallel_vara +@USE_PNETCDF_TRUE@am__append_5 = parallel_vara +@USE_NETCDF4_TRUE@am__append_6 = run_examples4.sh +subdir = examples/C +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = findplugin.sh +CONFIG_CLEAN_VPATH_FILES = +@USE_NETCDF4_TRUE@am__EXEEXT_1 = simple_nc4_wr$(EXEEXT) \ +@USE_NETCDF4_TRUE@ simple_nc4_rd$(EXEEXT) \ +@USE_NETCDF4_TRUE@ simple_xy_nc4_wr$(EXEEXT) \ +@USE_NETCDF4_TRUE@ simple_xy_nc4_rd$(EXEEXT) +@ENABLE_FILTER_TESTING_TRUE@@USE_NETCDF4_TRUE@am__EXEEXT_2 = filter_example$(EXEEXT) +@USE_PNETCDF_TRUE@am__EXEEXT_3 = parallel_vara$(EXEEXT) +filter_example_SOURCES = filter_example.c +filter_example_OBJECTS = filter_example.$(OBJEXT) +filter_example_LDADD = $(LDADD) +filter_example_DEPENDENCIES = +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +parallel_vara_SOURCES = parallel_vara.c +parallel_vara_OBJECTS = parallel_vara.$(OBJEXT) +parallel_vara_LDADD = $(LDADD) +parallel_vara_DEPENDENCIES = +pres_temp_4D_rd_SOURCES = pres_temp_4D_rd.c +pres_temp_4D_rd_OBJECTS = pres_temp_4D_rd.$(OBJEXT) +pres_temp_4D_rd_LDADD = $(LDADD) +pres_temp_4D_rd_DEPENDENCIES = +pres_temp_4D_wr_SOURCES = pres_temp_4D_wr.c +pres_temp_4D_wr_OBJECTS = pres_temp_4D_wr.$(OBJEXT) +pres_temp_4D_wr_LDADD = $(LDADD) +pres_temp_4D_wr_DEPENDENCIES = +sfc_pres_temp_rd_SOURCES = sfc_pres_temp_rd.c +sfc_pres_temp_rd_OBJECTS = sfc_pres_temp_rd.$(OBJEXT) +sfc_pres_temp_rd_LDADD = $(LDADD) +sfc_pres_temp_rd_DEPENDENCIES = +sfc_pres_temp_wr_SOURCES = sfc_pres_temp_wr.c +sfc_pres_temp_wr_OBJECTS = sfc_pres_temp_wr.$(OBJEXT) +sfc_pres_temp_wr_LDADD = $(LDADD) +sfc_pres_temp_wr_DEPENDENCIES = +simple_nc4_rd_SOURCES = simple_nc4_rd.c +simple_nc4_rd_OBJECTS = simple_nc4_rd.$(OBJEXT) +simple_nc4_rd_LDADD = $(LDADD) +simple_nc4_rd_DEPENDENCIES = +simple_nc4_wr_SOURCES = simple_nc4_wr.c +simple_nc4_wr_OBJECTS = simple_nc4_wr.$(OBJEXT) +simple_nc4_wr_LDADD = $(LDADD) +simple_nc4_wr_DEPENDENCIES = +simple_xy_nc4_rd_SOURCES = simple_xy_nc4_rd.c +simple_xy_nc4_rd_OBJECTS = simple_xy_nc4_rd.$(OBJEXT) +simple_xy_nc4_rd_LDADD = $(LDADD) +simple_xy_nc4_rd_DEPENDENCIES = +simple_xy_nc4_wr_SOURCES = simple_xy_nc4_wr.c +simple_xy_nc4_wr_OBJECTS = simple_xy_nc4_wr.$(OBJEXT) +simple_xy_nc4_wr_LDADD = $(LDADD) +simple_xy_nc4_wr_DEPENDENCIES = +simple_xy_rd_SOURCES = simple_xy_rd.c +simple_xy_rd_OBJECTS = simple_xy_rd.$(OBJEXT) +simple_xy_rd_LDADD = $(LDADD) +simple_xy_rd_DEPENDENCIES = +simple_xy_wr_SOURCES = simple_xy_wr.c +simple_xy_wr_OBJECTS = simple_xy_wr.$(OBJEXT) +simple_xy_wr_LDADD = $(LDADD) +simple_xy_wr_DEPENDENCIES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = filter_example.c parallel_vara.c pres_temp_4D_rd.c \ + pres_temp_4D_wr.c sfc_pres_temp_rd.c sfc_pres_temp_wr.c \ + simple_nc4_rd.c simple_nc4_wr.c simple_xy_nc4_rd.c \ + simple_xy_nc4_wr.c simple_xy_rd.c simple_xy_wr.c +DIST_SOURCES = filter_example.c parallel_vara.c pres_temp_4D_rd.c \ + pres_temp_4D_wr.c sfc_pres_temp_rd.c sfc_pres_temp_wr.c \ + simple_nc4_rd.c simple_nc4_wr.c simple_xy_nc4_rd.c \ + simple_xy_nc4_wr.c simple_xy_rd.c simple_xy_wr.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/nc_test4/findplugin.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/liblib +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +LDADD = -lm + +# These files are created by the tests. +CLEANFILES = *.nc +EXTRA_DIST = CMakeLists.txt run_examples.sh run_examples4.sh run_filter.sh +DISTCLEANFILES = findplugin.sh +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(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 --ignore-deps examples/C/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps examples/C/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): +findplugin.sh: $(top_builddir)/config.status $(top_srcdir)/nc_test4/findplugin.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +filter_example$(EXEEXT): $(filter_example_OBJECTS) $(filter_example_DEPENDENCIES) $(EXTRA_filter_example_DEPENDENCIES) + @rm -f filter_example$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_example_OBJECTS) $(filter_example_LDADD) $(LIBS) + +parallel_vara$(EXEEXT): $(parallel_vara_OBJECTS) $(parallel_vara_DEPENDENCIES) $(EXTRA_parallel_vara_DEPENDENCIES) + @rm -f parallel_vara$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(parallel_vara_OBJECTS) $(parallel_vara_LDADD) $(LIBS) + +pres_temp_4D_rd$(EXEEXT): $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_DEPENDENCIES) $(EXTRA_pres_temp_4D_rd_DEPENDENCIES) + @rm -f pres_temp_4D_rd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_LDADD) $(LIBS) + +pres_temp_4D_wr$(EXEEXT): $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_DEPENDENCIES) $(EXTRA_pres_temp_4D_wr_DEPENDENCIES) + @rm -f pres_temp_4D_wr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_LDADD) $(LIBS) + +sfc_pres_temp_rd$(EXEEXT): $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_DEPENDENCIES) $(EXTRA_sfc_pres_temp_rd_DEPENDENCIES) + @rm -f sfc_pres_temp_rd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_LDADD) $(LIBS) + +sfc_pres_temp_wr$(EXEEXT): $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_DEPENDENCIES) $(EXTRA_sfc_pres_temp_wr_DEPENDENCIES) + @rm -f sfc_pres_temp_wr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_LDADD) $(LIBS) + +simple_nc4_rd$(EXEEXT): $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_DEPENDENCIES) $(EXTRA_simple_nc4_rd_DEPENDENCIES) + @rm -f simple_nc4_rd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_LDADD) $(LIBS) + +simple_nc4_wr$(EXEEXT): $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_DEPENDENCIES) $(EXTRA_simple_nc4_wr_DEPENDENCIES) + @rm -f simple_nc4_wr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_LDADD) $(LIBS) + +simple_xy_nc4_rd$(EXEEXT): $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_DEPENDENCIES) $(EXTRA_simple_xy_nc4_rd_DEPENDENCIES) + @rm -f simple_xy_nc4_rd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_LDADD) $(LIBS) + +simple_xy_nc4_wr$(EXEEXT): $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_DEPENDENCIES) $(EXTRA_simple_xy_nc4_wr_DEPENDENCIES) + @rm -f simple_xy_nc4_wr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_LDADD) $(LIBS) + +simple_xy_rd$(EXEEXT): $(simple_xy_rd_OBJECTS) $(simple_xy_rd_DEPENDENCIES) $(EXTRA_simple_xy_rd_DEPENDENCIES) + @rm -f simple_xy_rd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_xy_rd_OBJECTS) $(simple_xy_rd_LDADD) $(LIBS) + +simple_xy_wr$(EXEEXT): $(simple_xy_wr_OBJECTS) $(simple_xy_wr_DEPENDENCIES) $(EXTRA_simple_xy_wr_DEPENDENCIES) + @rm -f simple_xy_wr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_xy_wr_OBJECTS) $(simple_xy_wr_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/netcdf-c-4.6.2/examples/C/filter_example.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/filter_example.c new file mode 100644 index 00000000000..02e00569ea9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/filter_example.c @@ -0,0 +1,309 @@ +/* + Copyright 2018, UCAR/Unidata + See COPYRIGHT file for copying and redistribution conditions. +*/ +/* +This file is the same as nc_test4/test_filter.c +*/ + +/*! \file +Example program for write then read of a variable using bzip2 compression. + +\ingroup tutorial + +This is an example which +creates a file with a variable that is compressed using bzip2. +Then it reads that file and verifies that it returned the correct +uncompressed data. + +The meta-data (.cdl) for the created file is as follows: +\code +netcdf bzip2 { +dimensions: + dim0 = 4 ; + dim1 = 4 ; + dim2 = 4 ; + dim3 = 4 ; +variables: + float var(dim0, dim1, dim2, dim3) ; + var:_Storage = "chunked" ; + var:_ChunkSizes = 4, 4, 4, 4 ; + var:_Filter = "307,9" ; + var:_NoFill = "true" ; +data: + + var = + 0, 1, 2, 3, + 4, 5, 6, 7, + ... + 252, 253, 254, 255 ; +} +\endcode +*/ + +#include "config.h" +#include +#include +#include + +#include +#include "netcdf.h" + +/* The HDF assigned id for bzip compression */ +#define BZIP2_ID 307 +/* The compression level used in this example */ +#define BZIP2_LEVEL 9 + +#define TESTFILE "bzip2.nc" + +/* Point at which we give up */ +#define MAXERRS 8 + +#define NDIMS 4 +#define DIMSIZE 4 +#define CHUNKSIZE 4 /* Note: not the total size of the chunk, but size wrt a dim*/ + +static size_t dimsize = DIMSIZE; +static size_t chunksize = CHUNKSIZE; +static size_t actualdims = NDIMS; + +static size_t actualproduct = 1; /* x-product over dim sizes */ +static size_t chunkproduct = 1; /* x-product over chunksizes */ + +static size_t dims[NDIMS]; +static size_t chunks[NDIMS]; + +static int nerrs = 0; + +static int ncid, varid; +static int dimids[NDIMS]; +static float* array = NULL; +static float* expected = NULL; +static unsigned int filterid = 0; +static unsigned int* params = NULL; + +/* Forward */ +static void init(int argc, char** argv); +static int test_bzip2(void); +static int verifychunks(void); + +#define ERRR do { \ +fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ +fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ + __FILE__, __LINE__); \ +nerrs++;\ +} while (0) + +static int +check(int err,int line) +{ + if(err != NC_NOERR) { + fprintf(stderr,"fail (%d): %s\n",line,nc_strerror(err)); + fflush(stderr); + exit(1); + } + return NC_NOERR; +} + +#define CHECK(x) check(x,__LINE__) + +/* +Read the chunking information about the variable +and verify that it is as expected. +*/ + +static int +verifychunks(void) +{ + int i; + int store = -1; + size_t chunksizes[NDIMS]; + memset(chunksizes,0,sizeof(chunksizes)); + CHECK(nc_inq_var_chunking(ncid, varid, &store, chunksizes)); + /* Storate must be chunked, not contiguous */ + if(store != NC_CHUNKED) { + fprintf(stderr,"bad chunk store\n"); + return NC_ESTORAGE; + } + /* Chunk sizes must match our predefined set */ + for(i=0;i= MAXERRS) + break; + } + } + if(errs == 0) + printf("no data errors\n"); + if(actualproduct <= 1) + return NC_EBADDIM; + return (errs == 0 ? NC_NOERR: NC_EINVAL); +} + +/* +Create the file, write it, then re-read for comparison. +*/ +static int +test_bzip2(void) +{ + int i; + unsigned int level = BZIP2_LEVEL; + unsigned int id=0; + size_t nparams = 0; + + printf("\n*** Testing API: bzip2 compression.\n"); + + /* Clear the data array */ + memset(array,0,sizeof(float)*actualproduct); + + /* Create a file */ + CHECK(nc_create(TESTFILE, NC_NETCDF4|NC_CLOBBER, &ncid)); + + /* Do not use fill for this file */ + CHECK(nc_set_fill(ncid, NC_NOFILL, NULL)); + + /* Define the dimensions */ + for(i=0;i 0) { + params = (unsigned int*)malloc(sizeof(unsigned int)*nparams); + if(params == NULL) + return NC_ENOMEM; + CHECK(nc_inq_var_filter(ncid,varid,&filterid,&nparams,params)); + } + if(filterid != BZIP2_ID) { + printf("Bzip2 id mismatch: %d\n",filterid); + return NC_EFILTER; + } + if(nparams != 1 && params != NULL && params[0] != BZIP2_LEVEL) { + printf("Compression parameter mismatch\n"); + return NC_EFILTER; + } + + /* Verify chunking */ + if(!verifychunks()) + return 0; + + /* Read the data */ + CHECK(nc_get_var_float(ncid, varid, array)); + + /* Close the file */ + CHECK(nc_close(ncid)); + return (compare() == NC_NOERR ? 0 : 1); +} + +/**************************************************/ +/* Utilities */ + +static void +init(int argc, char** argv) +{ + int i; + /* Setup various variables */ + actualproduct = 1; + chunkproduct = 1; + for(i=0;i 0?1:0); +} + diff --git a/contrib/netcdf/4.4.1.1/examples/C/parallel_vara.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/parallel_vara.c similarity index 94% rename from contrib/netcdf/4.4.1.1/examples/C/parallel_vara.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/parallel_vara.c index 7e8e18f3792..240d2836009 100644 --- a/contrib/netcdf/4.4.1.1/examples/C/parallel_vara.c +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/parallel_vara.c @@ -12,7 +12,7 @@ * global_ny == NY and * global_nx == (NX * number of MPI processes). * The data partitioning pattern is a column-wise partitioning across all - * proceses. Each process writes a subarray of size ny * nx. + * processes. Each process writes a subarray of size ny * nx. * * To compile: * mpicc -O2 parallel_vara.c -o parallel_vara -lnetcdf -lpnetcdf @@ -109,7 +109,7 @@ int main(int argc, char** argv) MPI_Bcast(filename, 128, MPI_CHAR, 0, MPI_COMM_WORLD); /* create a new file for writing ----------------------------------------*/ - cmode = NC_CLOBBER | NC_PNETCDF; + cmode = NC_CLOBBER; err = nc_create_par(filename, cmode, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid); FATAL_ERR /* the global array is NY * (NX * nprocs) */ @@ -149,8 +149,8 @@ int main(int argc, char** argv) /* do not forget to exit define mode */ err = nc_enddef(ncid); ERR - /* set to use MPI/PnetCDF collective I/O */ - err = nc_var_par_access(ncid, varid, NC_COLLECTIVE); ERR + /* set to use MPI collective I/O */ + err = nc_var_par_access(ncid, NC_GLOBAL, NC_COLLECTIVE); ERR /* now we are in data mode */ start[0] = 0; @@ -162,7 +162,7 @@ int main(int argc, char** argv) err = nc_close(ncid); ERR - omode = NC_PNETCDF | NC_NOWRITE; + omode = NC_NOWRITE; err = nc_open_par(filename, omode, MPI_COMM_WORLD, MPI_INFO_NULL, &ncid); FATAL_ERR /* inquire dimension IDs and lengths */ @@ -175,8 +175,8 @@ int main(int argc, char** argv) /* obtain variable ID */ err = nc_inq_varid(ncid, "var", &varid); ERR - /* set to use MPI/PnetCDF collective I/O */ - err = nc_var_par_access(ncid, varid, NC_COLLECTIVE); ERR + /* set to use MPI collective I/O */ + err = nc_var_par_access(ncid, NC_GLOBAL, NC_COLLECTIVE); ERR /* each process reads its subarray from the file */ err = nc_get_vara_int(ncid, varid, start, count, &buf[0][0]); ERR diff --git a/contrib/netcdf/4.4.1.1/examples/C/pres_temp_4D_rd.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/pres_temp_4D_rd.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/pres_temp_4D_rd.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/pres_temp_4D_rd.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/pres_temp_4D_wr.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/pres_temp_4D_wr.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/pres_temp_4D_wr.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/pres_temp_4D_wr.c diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples.sh b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples.sh new file mode 100755 index 00000000000..655314bfaec --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# This shell script runs the examples. +# Ed Hartnett + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../../test_common.sh + +echo "*** Running examples." +set -e + +echo "*** running simple_xy examples..." +${execdir}/simple_xy_wr +${execdir}/simple_xy_rd + +echo "*** running sfc_pres_temp examples..." +${execdir}/sfc_pres_temp_wr +${execdir}/sfc_pres_temp_rd + +echo "*** running pres_temp_4D examples..." +${execdir}/pres_temp_4D_wr +${execdir}/pres_temp_4D_rd + +echo "*** Examples successful!" +exit 0 diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples4.sh b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples4.sh new file mode 100755 index 00000000000..24691af4e1b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_examples4.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# This shell script runs the examples for netCDF4. +# Ed Hartnett + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../../test_common.sh + +echo "*** Running examples for netCDF-4." +set -e + +echo "*** running simple_nc4 examples..." +${execdir}/simple_nc4_wr +${execdir}/simple_nc4_rd + +echo "*** running simple_xy_nc4 examples..." +${execdir}/simple_xy_nc4_wr +${execdir}/simple_xy_nc4_rd + +echo "*** Examples successful!" +exit 0 diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_filter.sh b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_filter.sh new file mode 100755 index 00000000000..acd2f787f9b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/run_filter.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# This shell script runs the examples for netCDF4. +# Ed Hartnett + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../../test_common.sh + +echo "*** Running filter example for netCDF-4." +set -e + +if test -f ${builddir}/findplugin.sh ; then +echo "*** running test_filter example..." +. ${builddir}/findplugin.sh + +# Locate the plugin path and the library names; argument order is critical +# Find bzip2 and capture +findplugin bzip2 +BZIP2PATH="${HDF5_PLUGIN_PATH}/${HDF5_PLUGIN_LIB}" +# Verify +if ! test -f ${BZIP2PATH} ; then echo "Unable to locate ${BZIP2PATH}"; exit 1; fi +export HDF5_PLUGIN_PATH + +echo "*** running filter_example..." +rm -f ./bzip2.nc +${execdir}/filter_example +#rm -f ./bzip2.nc + +fi # Filter enabled + +echo "*** Filter example successful!" +exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/C/sfc_pres_temp_rd.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/sfc_pres_temp_rd.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/sfc_pres_temp_rd.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/sfc_pres_temp_rd.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/sfc_pres_temp_wr.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/sfc_pres_temp_wr.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/sfc_pres_temp_wr.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/sfc_pres_temp_wr.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_nc4_rd.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_nc4_rd.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/simple_nc4_rd.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_nc4_rd.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_nc4_wr.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_nc4_wr.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/simple_nc4_wr.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_nc4_wr.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_xy_nc4_rd.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_nc4_rd.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/simple_xy_nc4_rd.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_nc4_rd.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_xy_nc4_wr.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_nc4_wr.c similarity index 98% rename from contrib/netcdf/4.4.1.1/examples/C/simple_xy_nc4_wr.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_nc4_wr.c index 42e621c556f..9c5f997d2d6 100644 --- a/contrib/netcdf/4.4.1.1/examples/C/simple_xy_nc4_wr.c +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_nc4_wr.c @@ -61,7 +61,7 @@ main() if ((retval = nc_def_dim(ncid, "y", NY, &y_dimid))) ERR(retval); - /* Set up variabe data. */ + /* Set up variable data. */ dimids[0] = x_dimid; dimids[1] = y_dimid; chunks[0] = NX/4; diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_xy_rd.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_rd.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/simple_xy_rd.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_rd.c diff --git a/contrib/netcdf/4.4.1.1/examples/C/simple_xy_wr.c b/contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_wr.c similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/C/simple_xy_wr.c rename to contrib/netcdf/netcdf-c-4.6.2/examples/C/simple_xy_wr.c diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/CMakeLists.txt new file mode 100644 index 00000000000..6507bb7d5de --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/CMakeLists.txt @@ -0,0 +1,17 @@ +SET(CDL_EXAMPLE_TESTS do_comps) + +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) + +FOREACH(F ${CDL_EXAMPLE_TESTS}) + add_sh_test(cdl ${F}) +ENDFOREACH() + +IF(HAVE_BASH) + SET_TESTS_PROPERTIES(cdl_do_comps PROPERTIES DEPENDS C_tests_simple_xy_wr) + SET_TESTS_PROPERTIES(cdl_do_comps PROPERTIES DEPENDS C_tests_sfc_pres_temp_wr) + SET_TESTS_PROPERTIES(cdl_do_comps PROPERTIES DEPENDS C_test_pres_temp_4D_wr) +ENDIF(HAVE_BASH) + +SET(CLEANFILES simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc) +SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.am new file mode 100644 index 00000000000..0af9bd3aa50 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.am @@ -0,0 +1,18 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2006, see the COPYRIGHT file for more information. +# This file builds CDL examples. +# Ed Hartnett + +# Note which tests depend on other tests. Necessary for make -j check. +TEST_EXTENSIONS = .sh + +# All we do is run two shell scripts, which create the sample files +# and then compare them with the C versions of the examples. +TESTS = do_comps.sh + +# Ship the scripts needed to create the sample files and compare them. +EXTRA_DIST = do_comps.sh simple_xy.cdl \ +sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt + +# Clean up files created during the process. +CLEANFILES = *.nc diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.in new file mode 100644 index 00000000000..2e95745ba90 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/Makefile.in @@ -0,0 +1,685 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2006, see the COPYRIGHT file for more information. +# This file builds CDL examples. +# Ed Hartnett +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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 = examples/CDL +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +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__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ + +# Note which tests depend on other tests. Necessary for make -j check. +TEST_EXTENSIONS = .sh + +# All we do is run two shell scripts, which create the sample files +# and then compare them with the C versions of the examples. +TESTS = do_comps.sh + +# Ship the scripts needed to create the sample files and compare them. +EXTRA_DIST = do_comps.sh simple_xy.cdl \ +sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt + + +# Clean up files created during the process. +CLEANFILES = *.nc +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 --ignore-deps examples/CDL/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps examples/CDL/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: all all-am check check-TESTS check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-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 + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/do_comps.sh b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/do_comps.sh new file mode 100755 index 00000000000..88f80f91f2e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/do_comps.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# This shell script runs the cmp test on the example programs. +# $Id: do_comps.sh,v 1.1 2006/06/27 17:44:54 ed Exp $ + +set -e + +## +# This stanza was originally in create_sample_files.sh. +# Moved here. +## +echo "" +echo "*** Creating example data files from CDL scripts." +echo "*** creating simple_xy.nc..." +../../ncgen/ncgen -b -o simple_xy.nc $srcdir/simple_xy.cdl + +echo "*** checking sfc_pres_temp.nc..." +../../ncgen/ncgen -b -o sfc_pres_temp.nc $srcdir/sfc_pres_temp.cdl + +echo "*** checking pres_temp_4D.nc..." +../../ncgen/ncgen -b -o pres_temp_4D.nc $srcdir/pres_temp_4D.cdl + +echo "*** All example creations worked!" + +## +# End create_sample_files. +## + +echo "" +echo "*** Testing that the CDL examples produced same files as C examples." +echo "*** checking simple_xy.nc..." +cmp simple_xy.nc ../C/simple_xy.nc + +echo "*** checking sfc_pres_temp.nc..." +cmp sfc_pres_temp.nc ../C/sfc_pres_temp.nc + +echo "*** checking pres_temp_4D.nc..." +cmp pres_temp_4D.nc ../C/pres_temp_4D.nc + +echo "*** All CDL example comparisons worked!" +exit 0 diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/pres_temp_4D.cdl b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/pres_temp_4D.cdl similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/CDL/pres_temp_4D.cdl rename to contrib/netcdf/netcdf-c-4.6.2/examples/CDL/pres_temp_4D.cdl diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/sfc_pres_temp.cdl b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/sfc_pres_temp.cdl similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/CDL/sfc_pres_temp.cdl rename to contrib/netcdf/netcdf-c-4.6.2/examples/CDL/sfc_pres_temp.cdl diff --git a/contrib/netcdf/4.4.1.1/examples/CDL/simple_xy.cdl b/contrib/netcdf/netcdf-c-4.6.2/examples/CDL/simple_xy.cdl similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/CDL/simple_xy.cdl rename to contrib/netcdf/netcdf-c-4.6.2/examples/CDL/simple_xy.cdl diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/examples/CMakeLists.txt new file mode 100644 index 00000000000..5a253c245aa --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/CMakeLists.txt @@ -0,0 +1,5 @@ +ADD_SUBDIRECTORY(C) + +IF(BUILD_UTILITIES) + ADD_SUBDIRECTORY(CDL) +ENDIF() diff --git a/contrib/netcdf/4.4.1.1/examples/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/examples/Makefile.am similarity index 100% rename from contrib/netcdf/4.4.1.1/examples/Makefile.am rename to contrib/netcdf/netcdf-c-4.6.2/examples/Makefile.am diff --git a/contrib/netcdf/netcdf-c-4.6.2/examples/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/examples/Makefile.in new file mode 100644 index 00000000000..495667889a0 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/examples/Makefile.in @@ -0,0 +1,742 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2005, see the COPYRIGHT file for more information. + +# This is the main automake file for netCDF. It builds the different +# netcdf directories. Not all directories are built, depending on the +# options selected during configure. +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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 = examples +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = C CDL +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ + +# Build ncgen/ncdump. +@BUILD_UTILITIES_TRUE@CDL_DIR = CDL + +# These are the subdirectories that will be built. +SUBDIRS = C $(CDL_DIR) +EXTRA_DIST = CMakeLists.txt +all: all-recursive + +.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 --ignore-deps examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps examples/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +check-valgrind: check-valgrind-recursive + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-recursive + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-recursive + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-recursive + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-recursive + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-generic clean-libtool cscopelist-am ctags ctags-am \ + distclean distclean-generic distclean-libtool distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/netcdf-c-4.6.2/h5_test/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/h5_test/CMakeLists.txt new file mode 100644 index 00000000000..5b51ddfd869 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/CMakeLists.txt @@ -0,0 +1,14 @@ +SET(H5TESTS tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_vl tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 tst_h_enums tst_h_dimscales4) + +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h5 ${CMAKE_CURRENT_SOURCE_DIR}/*.nc) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) + +FOREACH(CTEST ${H5TESTS}) + ADD_EXECUTABLE(${CTEST} ${CTEST}.c) + TARGET_LINK_LIBRARIES(${CTEST} + netcdf + ${HDF5_HL_LIBRARIES} + ${HDF5_C_LIBRARIES} + ) + ADD_TEST(${CTEST} ${EXECUTABLE_OUTPUT_PATH}/${CTEST}) +ENDFOREACH() diff --git a/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.am new file mode 100644 index 00000000000..f114d7cebd8 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.am @@ -0,0 +1,47 @@ +# This is part of the netCDF package. +# Copyright 2011 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# This entire directory will be skipped, unless the configure script +# is run with --enable-netcdf-4. This directory contains tests that +# only use HDF5; these tests don't use netCDF at all. +# +# If one of these tests fails, then netCDF-4 will not work correctly. +# Ed Hartnett, Ward Fisher + +# Set AM_CPPFLAGS and AM_LDFLAGS based on user choices. +include $(top_srcdir)/lib_flags.am + +# These programs test HDF5 to make sure it will do (some of) the stuff +# that netCDF-4 needs. +H5TESTS = tst_h_files tst_h_files2 tst_h_files4 tst_h_atts \ +tst_h_atts3 tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps \ +tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_vl tst_h_opaques \ +tst_h_strings tst_h_strings1 tst_h_strings2 tst_h_ints \ +tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 tst_h_dimscales3 \ +tst_h_enums tst_h_dimscales4 + +# If benchmarks were turned on, build and run a bunch more tests. +if BUILD_BENCHMARKS +H5TESTS += tst_h_mem +endif # BUILD_BENCHMARKS + +# List of tests to compile. +check_PROGRAMS = $(H5TESTS) + +# List of tests to run. +TESTS = $(H5TESTS) + +# The parallel program is run from a script. +if TEST_PARALLEL4 +check_PROGRAMS += tst_h_par +TESTS += run_par_tests.sh +endif + +# We must include these files in the distribution. +EXTRA_DIST = run_par_tests.sh ref_tst_h_compounds.h5 \ +ref_tst_h_compounds2.h5 run_par_tests.sh ref_tst_compounds.nc \ +h5_err_macros.h CMakeLists.txt + +# Clean up test results. +CLEANFILES = tst_h_*.h5 diff --git a/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.in new file mode 100644 index 00000000000..1666089187a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/Makefile.in @@ -0,0 +1,1052 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# This is part of the netCDF package. +# Copyright 2011 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# This entire directory will be skipped, unless the configure script +# is run with --enable-netcdf-4. This directory contains tests that +# only use HDF5; these tests don't use netCDF at all. +# +# If one of these tests fails, then netCDF-4 will not work correctly. +# Ed Hartnett, Ward Fisher + +# This is part of the netCDF package. +# Copyright 2005 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# Assemble the CPPFLAGS and LDFLAGS that point to all the needed +# libraries for netCDF-4. +# +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 + +# If benchmarks were turned on, build and run a bunch more tests. +@BUILD_BENCHMARKS_TRUE@am__append_2 = tst_h_mem +check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) +TESTS = $(am__EXEEXT_2) $(am__append_4) + +# The parallel program is run from a script. +@TEST_PARALLEL4_TRUE@am__append_3 = tst_h_par +@TEST_PARALLEL4_TRUE@am__append_4 = run_par_tests.sh +subdir = h5_test +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@BUILD_BENCHMARKS_TRUE@am__EXEEXT_1 = tst_h_mem$(EXEEXT) +am__EXEEXT_2 = tst_h_files$(EXEEXT) tst_h_files2$(EXEEXT) \ + tst_h_files4$(EXEEXT) tst_h_atts$(EXEEXT) tst_h_atts3$(EXEEXT) \ + tst_h_atts4$(EXEEXT) tst_h_vars$(EXEEXT) tst_h_vars2$(EXEEXT) \ + tst_h_vars3$(EXEEXT) tst_h_grps$(EXEEXT) \ + tst_h_compounds$(EXEEXT) tst_h_compounds2$(EXEEXT) \ + tst_h_wrt_cmp$(EXEEXT) tst_h_vl$(EXEEXT) \ + tst_h_opaques$(EXEEXT) tst_h_strings$(EXEEXT) \ + tst_h_strings1$(EXEEXT) tst_h_strings2$(EXEEXT) \ + tst_h_ints$(EXEEXT) tst_h_dimscales$(EXEEXT) \ + tst_h_dimscales1$(EXEEXT) tst_h_dimscales2$(EXEEXT) \ + tst_h_dimscales3$(EXEEXT) tst_h_enums$(EXEEXT) \ + tst_h_dimscales4$(EXEEXT) $(am__EXEEXT_1) +@TEST_PARALLEL4_TRUE@am__EXEEXT_3 = tst_h_par$(EXEEXT) +tst_h_atts_SOURCES = tst_h_atts.c +tst_h_atts_OBJECTS = tst_h_atts.$(OBJEXT) +tst_h_atts_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +tst_h_atts3_SOURCES = tst_h_atts3.c +tst_h_atts3_OBJECTS = tst_h_atts3.$(OBJEXT) +tst_h_atts3_LDADD = $(LDADD) +tst_h_atts4_SOURCES = tst_h_atts4.c +tst_h_atts4_OBJECTS = tst_h_atts4.$(OBJEXT) +tst_h_atts4_LDADD = $(LDADD) +tst_h_compounds_SOURCES = tst_h_compounds.c +tst_h_compounds_OBJECTS = tst_h_compounds.$(OBJEXT) +tst_h_compounds_LDADD = $(LDADD) +tst_h_compounds2_SOURCES = tst_h_compounds2.c +tst_h_compounds2_OBJECTS = tst_h_compounds2.$(OBJEXT) +tst_h_compounds2_LDADD = $(LDADD) +tst_h_dimscales_SOURCES = tst_h_dimscales.c +tst_h_dimscales_OBJECTS = tst_h_dimscales.$(OBJEXT) +tst_h_dimscales_LDADD = $(LDADD) +tst_h_dimscales1_SOURCES = tst_h_dimscales1.c +tst_h_dimscales1_OBJECTS = tst_h_dimscales1.$(OBJEXT) +tst_h_dimscales1_LDADD = $(LDADD) +tst_h_dimscales2_SOURCES = tst_h_dimscales2.c +tst_h_dimscales2_OBJECTS = tst_h_dimscales2.$(OBJEXT) +tst_h_dimscales2_LDADD = $(LDADD) +tst_h_dimscales3_SOURCES = tst_h_dimscales3.c +tst_h_dimscales3_OBJECTS = tst_h_dimscales3.$(OBJEXT) +tst_h_dimscales3_LDADD = $(LDADD) +tst_h_dimscales4_SOURCES = tst_h_dimscales4.c +tst_h_dimscales4_OBJECTS = tst_h_dimscales4.$(OBJEXT) +tst_h_dimscales4_LDADD = $(LDADD) +tst_h_enums_SOURCES = tst_h_enums.c +tst_h_enums_OBJECTS = tst_h_enums.$(OBJEXT) +tst_h_enums_LDADD = $(LDADD) +tst_h_files_SOURCES = tst_h_files.c +tst_h_files_OBJECTS = tst_h_files.$(OBJEXT) +tst_h_files_LDADD = $(LDADD) +tst_h_files2_SOURCES = tst_h_files2.c +tst_h_files2_OBJECTS = tst_h_files2.$(OBJEXT) +tst_h_files2_LDADD = $(LDADD) +tst_h_files4_SOURCES = tst_h_files4.c +tst_h_files4_OBJECTS = tst_h_files4.$(OBJEXT) +tst_h_files4_LDADD = $(LDADD) +tst_h_grps_SOURCES = tst_h_grps.c +tst_h_grps_OBJECTS = tst_h_grps.$(OBJEXT) +tst_h_grps_LDADD = $(LDADD) +tst_h_ints_SOURCES = tst_h_ints.c +tst_h_ints_OBJECTS = tst_h_ints.$(OBJEXT) +tst_h_ints_LDADD = $(LDADD) +tst_h_mem_SOURCES = tst_h_mem.c +tst_h_mem_OBJECTS = tst_h_mem.$(OBJEXT) +tst_h_mem_LDADD = $(LDADD) +tst_h_opaques_SOURCES = tst_h_opaques.c +tst_h_opaques_OBJECTS = tst_h_opaques.$(OBJEXT) +tst_h_opaques_LDADD = $(LDADD) +tst_h_par_SOURCES = tst_h_par.c +tst_h_par_OBJECTS = tst_h_par.$(OBJEXT) +tst_h_par_LDADD = $(LDADD) +tst_h_strings_SOURCES = tst_h_strings.c +tst_h_strings_OBJECTS = tst_h_strings.$(OBJEXT) +tst_h_strings_LDADD = $(LDADD) +tst_h_strings1_SOURCES = tst_h_strings1.c +tst_h_strings1_OBJECTS = tst_h_strings1.$(OBJEXT) +tst_h_strings1_LDADD = $(LDADD) +tst_h_strings2_SOURCES = tst_h_strings2.c +tst_h_strings2_OBJECTS = tst_h_strings2.$(OBJEXT) +tst_h_strings2_LDADD = $(LDADD) +tst_h_vars_SOURCES = tst_h_vars.c +tst_h_vars_OBJECTS = tst_h_vars.$(OBJEXT) +tst_h_vars_LDADD = $(LDADD) +tst_h_vars2_SOURCES = tst_h_vars2.c +tst_h_vars2_OBJECTS = tst_h_vars2.$(OBJEXT) +tst_h_vars2_LDADD = $(LDADD) +tst_h_vars3_SOURCES = tst_h_vars3.c +tst_h_vars3_OBJECTS = tst_h_vars3.$(OBJEXT) +tst_h_vars3_LDADD = $(LDADD) +tst_h_vl_SOURCES = tst_h_vl.c +tst_h_vl_OBJECTS = tst_h_vl.$(OBJEXT) +tst_h_vl_LDADD = $(LDADD) +tst_h_wrt_cmp_SOURCES = tst_h_wrt_cmp.c +tst_h_wrt_cmp_OBJECTS = tst_h_wrt_cmp.$(OBJEXT) +tst_h_wrt_cmp_LDADD = $(LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c tst_h_compounds.c \ + tst_h_compounds2.c tst_h_dimscales.c tst_h_dimscales1.c \ + tst_h_dimscales2.c tst_h_dimscales3.c tst_h_dimscales4.c \ + tst_h_enums.c tst_h_files.c tst_h_files2.c tst_h_files4.c \ + tst_h_grps.c tst_h_ints.c tst_h_mem.c tst_h_opaques.c \ + tst_h_par.c tst_h_strings.c tst_h_strings1.c tst_h_strings2.c \ + tst_h_vars.c tst_h_vars2.c tst_h_vars3.c tst_h_vl.c \ + tst_h_wrt_cmp.c +DIST_SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c \ + tst_h_compounds.c tst_h_compounds2.c tst_h_dimscales.c \ + tst_h_dimscales1.c tst_h_dimscales2.c tst_h_dimscales3.c \ + tst_h_dimscales4.c tst_h_enums.c tst_h_files.c tst_h_files2.c \ + tst_h_files4.c tst_h_grps.c tst_h_ints.c tst_h_mem.c \ + tst_h_opaques.c tst_h_par.c tst_h_strings.c tst_h_strings1.c \ + tst_h_strings2.c tst_h_vars.c tst_h_vars2.c tst_h_vars3.c \ + tst_h_vl.c tst_h_wrt_cmp.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/lib_flags.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; + +# Set AM_CPPFLAGS and AM_LDFLAGS based on user choices. + +# These programs test HDF5 to make sure it will do (some of) the stuff +# that netCDF-4 needs. +H5TESTS = tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 \ + tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps \ + tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_vl \ + tst_h_opaques tst_h_strings tst_h_strings1 tst_h_strings2 \ + tst_h_ints tst_h_dimscales tst_h_dimscales1 tst_h_dimscales2 \ + tst_h_dimscales3 tst_h_enums tst_h_dimscales4 $(am__append_2) + +# We must include these files in the distribution. +EXTRA_DIST = run_par_tests.sh ref_tst_h_compounds.h5 \ +ref_tst_h_compounds2.h5 run_par_tests.sh ref_tst_compounds.nc \ +h5_err_macros.h CMakeLists.txt + + +# Clean up test results. +CLEANFILES = tst_h_*.h5 +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 --ignore-deps h5_test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps h5_test/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/lib_flags.am $(am__empty): + +$(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): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +tst_h_atts$(EXEEXT): $(tst_h_atts_OBJECTS) $(tst_h_atts_DEPENDENCIES) $(EXTRA_tst_h_atts_DEPENDENCIES) + @rm -f tst_h_atts$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_atts_OBJECTS) $(tst_h_atts_LDADD) $(LIBS) + +tst_h_atts3$(EXEEXT): $(tst_h_atts3_OBJECTS) $(tst_h_atts3_DEPENDENCIES) $(EXTRA_tst_h_atts3_DEPENDENCIES) + @rm -f tst_h_atts3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_atts3_OBJECTS) $(tst_h_atts3_LDADD) $(LIBS) + +tst_h_atts4$(EXEEXT): $(tst_h_atts4_OBJECTS) $(tst_h_atts4_DEPENDENCIES) $(EXTRA_tst_h_atts4_DEPENDENCIES) + @rm -f tst_h_atts4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_atts4_OBJECTS) $(tst_h_atts4_LDADD) $(LIBS) + +tst_h_compounds$(EXEEXT): $(tst_h_compounds_OBJECTS) $(tst_h_compounds_DEPENDENCIES) $(EXTRA_tst_h_compounds_DEPENDENCIES) + @rm -f tst_h_compounds$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_compounds_OBJECTS) $(tst_h_compounds_LDADD) $(LIBS) + +tst_h_compounds2$(EXEEXT): $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_DEPENDENCIES) $(EXTRA_tst_h_compounds2_DEPENDENCIES) + @rm -f tst_h_compounds2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_LDADD) $(LIBS) + +tst_h_dimscales$(EXEEXT): $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_DEPENDENCIES) $(EXTRA_tst_h_dimscales_DEPENDENCIES) + @rm -f tst_h_dimscales$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_LDADD) $(LIBS) + +tst_h_dimscales1$(EXEEXT): $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_DEPENDENCIES) $(EXTRA_tst_h_dimscales1_DEPENDENCIES) + @rm -f tst_h_dimscales1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_LDADD) $(LIBS) + +tst_h_dimscales2$(EXEEXT): $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_DEPENDENCIES) $(EXTRA_tst_h_dimscales2_DEPENDENCIES) + @rm -f tst_h_dimscales2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_LDADD) $(LIBS) + +tst_h_dimscales3$(EXEEXT): $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_DEPENDENCIES) $(EXTRA_tst_h_dimscales3_DEPENDENCIES) + @rm -f tst_h_dimscales3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_LDADD) $(LIBS) + +tst_h_dimscales4$(EXEEXT): $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_DEPENDENCIES) $(EXTRA_tst_h_dimscales4_DEPENDENCIES) + @rm -f tst_h_dimscales4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_LDADD) $(LIBS) + +tst_h_enums$(EXEEXT): $(tst_h_enums_OBJECTS) $(tst_h_enums_DEPENDENCIES) $(EXTRA_tst_h_enums_DEPENDENCIES) + @rm -f tst_h_enums$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_enums_OBJECTS) $(tst_h_enums_LDADD) $(LIBS) + +tst_h_files$(EXEEXT): $(tst_h_files_OBJECTS) $(tst_h_files_DEPENDENCIES) $(EXTRA_tst_h_files_DEPENDENCIES) + @rm -f tst_h_files$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_files_OBJECTS) $(tst_h_files_LDADD) $(LIBS) + +tst_h_files2$(EXEEXT): $(tst_h_files2_OBJECTS) $(tst_h_files2_DEPENDENCIES) $(EXTRA_tst_h_files2_DEPENDENCIES) + @rm -f tst_h_files2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_files2_OBJECTS) $(tst_h_files2_LDADD) $(LIBS) + +tst_h_files4$(EXEEXT): $(tst_h_files4_OBJECTS) $(tst_h_files4_DEPENDENCIES) $(EXTRA_tst_h_files4_DEPENDENCIES) + @rm -f tst_h_files4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_files4_OBJECTS) $(tst_h_files4_LDADD) $(LIBS) + +tst_h_grps$(EXEEXT): $(tst_h_grps_OBJECTS) $(tst_h_grps_DEPENDENCIES) $(EXTRA_tst_h_grps_DEPENDENCIES) + @rm -f tst_h_grps$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_grps_OBJECTS) $(tst_h_grps_LDADD) $(LIBS) + +tst_h_ints$(EXEEXT): $(tst_h_ints_OBJECTS) $(tst_h_ints_DEPENDENCIES) $(EXTRA_tst_h_ints_DEPENDENCIES) + @rm -f tst_h_ints$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_ints_OBJECTS) $(tst_h_ints_LDADD) $(LIBS) + +tst_h_mem$(EXEEXT): $(tst_h_mem_OBJECTS) $(tst_h_mem_DEPENDENCIES) $(EXTRA_tst_h_mem_DEPENDENCIES) + @rm -f tst_h_mem$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_mem_OBJECTS) $(tst_h_mem_LDADD) $(LIBS) + +tst_h_opaques$(EXEEXT): $(tst_h_opaques_OBJECTS) $(tst_h_opaques_DEPENDENCIES) $(EXTRA_tst_h_opaques_DEPENDENCIES) + @rm -f tst_h_opaques$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_opaques_OBJECTS) $(tst_h_opaques_LDADD) $(LIBS) + +tst_h_par$(EXEEXT): $(tst_h_par_OBJECTS) $(tst_h_par_DEPENDENCIES) $(EXTRA_tst_h_par_DEPENDENCIES) + @rm -f tst_h_par$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_par_OBJECTS) $(tst_h_par_LDADD) $(LIBS) + +tst_h_strings$(EXEEXT): $(tst_h_strings_OBJECTS) $(tst_h_strings_DEPENDENCIES) $(EXTRA_tst_h_strings_DEPENDENCIES) + @rm -f tst_h_strings$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_strings_OBJECTS) $(tst_h_strings_LDADD) $(LIBS) + +tst_h_strings1$(EXEEXT): $(tst_h_strings1_OBJECTS) $(tst_h_strings1_DEPENDENCIES) $(EXTRA_tst_h_strings1_DEPENDENCIES) + @rm -f tst_h_strings1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_strings1_OBJECTS) $(tst_h_strings1_LDADD) $(LIBS) + +tst_h_strings2$(EXEEXT): $(tst_h_strings2_OBJECTS) $(tst_h_strings2_DEPENDENCIES) $(EXTRA_tst_h_strings2_DEPENDENCIES) + @rm -f tst_h_strings2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_strings2_OBJECTS) $(tst_h_strings2_LDADD) $(LIBS) + +tst_h_vars$(EXEEXT): $(tst_h_vars_OBJECTS) $(tst_h_vars_DEPENDENCIES) $(EXTRA_tst_h_vars_DEPENDENCIES) + @rm -f tst_h_vars$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_vars_OBJECTS) $(tst_h_vars_LDADD) $(LIBS) + +tst_h_vars2$(EXEEXT): $(tst_h_vars2_OBJECTS) $(tst_h_vars2_DEPENDENCIES) $(EXTRA_tst_h_vars2_DEPENDENCIES) + @rm -f tst_h_vars2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_vars2_OBJECTS) $(tst_h_vars2_LDADD) $(LIBS) + +tst_h_vars3$(EXEEXT): $(tst_h_vars3_OBJECTS) $(tst_h_vars3_DEPENDENCIES) $(EXTRA_tst_h_vars3_DEPENDENCIES) + @rm -f tst_h_vars3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_vars3_OBJECTS) $(tst_h_vars3_LDADD) $(LIBS) + +tst_h_vl$(EXEEXT): $(tst_h_vl_OBJECTS) $(tst_h_vl_DEPENDENCIES) $(EXTRA_tst_h_vl_DEPENDENCIES) + @rm -f tst_h_vl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_vl_OBJECTS) $(tst_h_vl_LDADD) $(LIBS) + +tst_h_wrt_cmp$(EXEEXT): $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_DEPENDENCIES) $(EXTRA_tst_h_wrt_cmp_DEPENDENCIES) + @rm -f tst_h_wrt_cmp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/4.4.1.1/h5_test/h5_err_macros.h b/contrib/netcdf/netcdf-c-4.6.2/h5_test/h5_err_macros.h similarity index 95% rename from contrib/netcdf/4.4.1.1/h5_test/h5_err_macros.h rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/h5_err_macros.h index e51019d1dfd..d2889b39dae 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/h5_err_macros.h +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/h5_err_macros.h @@ -14,6 +14,6 @@ #define _H5_ERR_MACROS_H #define NONETCDF -#include +#include "err_macros.h" #endif /*_H5_ERR_MACROS_H*/ diff --git a/contrib/netcdf/4.4.1.1/h5_test/ref_tst_compounds.nc b/contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_compounds.nc similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/ref_tst_compounds.nc rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_compounds.nc diff --git a/contrib/netcdf/4.4.1.1/h5_test/ref_tst_h_compounds.h5 b/contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_h_compounds.h5 similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/ref_tst_h_compounds.h5 rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_h_compounds.h5 diff --git a/contrib/netcdf/4.4.1.1/h5_test/ref_tst_h_compounds2.h5 b/contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_h_compounds2.h5 similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/ref_tst_h_compounds2.h5 rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/ref_tst_h_compounds2.h5 diff --git a/contrib/netcdf/4.4.1.1/h5_test/run_par_tests.sh b/contrib/netcdf/netcdf-c-4.6.2/h5_test/run_par_tests.sh similarity index 79% rename from contrib/netcdf/4.4.1.1/h5_test/run_par_tests.sh rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/run_par_tests.sh index 881e74be298..ee0b8c7489d 100755 --- a/contrib/netcdf/4.4.1.1/h5_test/run_par_tests.sh +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/run_par_tests.sh @@ -1,12 +1,15 @@ #!/bin/sh +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + # This shell runs some parallel tests. # $Id: run_par_tests.sh,v 1.2 2007/12/20 16:25:26 ed Exp $ # Even for successful runs, mpiexec seems to set a non-zero return -# code! -#set -e +# code! +set -e echo "" echo "Testing parallel I/O with HDF5..." diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_atts.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_atts.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_atts3.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts3.c similarity index 99% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_atts3.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts3.c index 2a4fe9a7094..7976821b0f8 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_atts3.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts3.c @@ -35,7 +35,6 @@ int main() { printf("\n*** Checking HDF5 attribute functions some more.\n"); -#ifdef EXTRA_TESTS printf("*** Creating tst_xplatform2_3.nc with HDF only..."); { hid_t fapl_id, fcpl_id; @@ -105,7 +104,7 @@ main() H5T_NATIVE_DOUBLE) < 0) ERR; if (H5Tcommit(grpid, S1_TYPE_NAME, s1_typeid) < 0) ERR; - /* Create a vlen type. Its a vlen of stuct s1. */ + /* Create a vlen type. Its a vlen of struct s1. */ if ((vlen_typeid = H5Tvlen_create(s1_typeid)) < 0) ERR; if (H5Tcommit(grpid, VLEN_TYPE_NAME, vlen_typeid) < 0) ERR; @@ -308,6 +307,5 @@ main() free(vc_out[i].p); } SUMMARIZE_ERR; -#endif /* EXTRA_TESTS */ FINAL_RESULTS; } diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_atts4.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts4.c similarity index 98% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_atts4.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts4.c index eca01161329..6228dd66194 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_atts4.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_atts4.c @@ -36,7 +36,6 @@ int main() { printf("\n*** Checking HDF5 attribute functions for memory leaks.\n"); -#ifdef EXTRA_TESTS printf("*** Checking vlen of compound file..."); { #define NUM_OBJ_2 2 @@ -103,7 +102,7 @@ main() H5T_NATIVE_DOUBLE) < 0) ERR; if (H5Tcommit(grpid, S1_TYPE_NAME, s1_typeid) < 0) ERR; - /* Create a vlen type. Its a vlen of stuct s1. */ + /* Create a vlen type. Its a vlen of struct s1. */ if ((vlen_typeid = H5Tvlen_create(s1_typeid)) < 0) ERR; if (H5Tcommit(grpid, VLEN_TYPE_NAME, vlen_typeid) < 0) ERR; @@ -181,6 +180,5 @@ main() free(vc_out); } SUMMARIZE_ERR; -#endif /* EXTRA_TESTS */ FINAL_RESULTS; } diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_compounds.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_compounds.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_compounds.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_compounds.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_compounds2.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_compounds2.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_compounds2.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_compounds2.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales.c similarity index 96% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales.c index b16a1aebfab..ee5371bbf43 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales.c @@ -16,7 +16,7 @@ #define STR_LEN 255 #define MAX_DIMS 255 -herr_t alien_visitor(hid_t did, unsigned dim, hid_t dsid, +herr_t alien_visitor(hid_t did, unsigned dim, hid_t dsid, void *visitor_data) { char name1[STR_LEN], name2[STR_LEN]; @@ -30,9 +30,9 @@ herr_t alien_visitor(hid_t did, unsigned dim, hid_t dsid, /* printf("name of dsid: %s\n", name2); */ if (H5Gget_objinfo(did, ".", 1, &statbuf) < 0) ERR; -/* printf("statbuf.fileno = %d statbuf.objno = %d\n", +/* printf("statbuf.fileno = %d statbuf.objno = %d\n", statbuf.fileno, statbuf.objno);*/ - + return 0; } @@ -47,7 +47,7 @@ rec_scan_group(hid_t grpid) int num_scales; hsize_t dims[MAX_DIMS], max_dims[MAX_DIMS]; int ndims, d; - + /* Loop through datasets to find variables. */ if (H5Gget_num_objs(grpid, &num_obj) < 0) ERR; for (i=0; i 0) ERR; if (strcmp(obj_name, VAR3_NAME) == 0 && num_scales != 1) ERR; - + /* There's also a label for dimension 0 of var1. */ if (strcmp(obj_name, VAR1_NAME) == 0) { @@ -292,15 +292,15 @@ main() int v; /* Open file and create group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; - + /* Create our dimension scale. Use the built-in NAME attribute * on the dimscale. */ - if ((dimscale_spaceid = H5Screate_simple(1, dimscale_dims, + if ((dimscale_spaceid = H5Screate_simple(1, dimscale_dims, dimscale_dims)) < 0) ERR; - if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, + if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, dimscale_spaceid, H5P_DEFAULT)) < 0) ERR; if (H5DSset_scale(dimscaleid, NAME_ATTRIBUTE) < 0) ERR; @@ -309,7 +309,7 @@ main() for (v = 0; v < NUM_DATASETS; v++) { sprintf(var_name, "var_%d", v); - if ((var1_datasetid[v] = H5Dcreate(grpid, var_name, H5T_NATIVE_INT, + if ((var1_datasetid[v] = H5Dcreate(grpid, var_name, H5T_NATIVE_INT, var1_spaceid, H5P_DEFAULT)) < 0) ERR; if (H5DSattach_scale(var1_datasetid[v], dimscaleid, 0) < 0) ERR; } @@ -332,7 +332,7 @@ main() hsize_t dims[1] = {1}, maxdims[1] = {H5S_UNLIMITED}; /* Create file and group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; @@ -343,12 +343,12 @@ main() if (H5Pset_chunk(cparmsid, 1, dims) < 0) ERR; /* Create our dimension scale, as an unlimited dataset. */ - if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, + if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, spaceid, cparmsid)) < 0) ERR; if (H5DSset_scale(dimscaleid, NAME_ATTRIBUTE) < 0) ERR; /* Create a variable which uses it. */ - if ((datasetid = H5Dcreate(grpid, VAR1_NAME, H5T_NATIVE_INT, + if ((datasetid = H5Dcreate(grpid, VAR1_NAME, H5T_NATIVE_INT, spaceid, cparmsid)) < 0) ERR; if (H5DSattach_scale(datasetid, dimscaleid, 0) < 0) ERR; if (H5DSset_label(datasetid, 0, "dimension label") < 0) ERR; @@ -362,12 +362,11 @@ main() } SUMMARIZE_ERR; -#ifdef EXTRA_TESTS printf("*** Checking that unlimited dimscale file can be read..."); { hid_t fileid, grpid, spaceid = 0, datasetid = 0; - hsize_t num_obj, i; + hsize_t volatile num_obj, i; int obj_class; char obj_name[STR_LEN + 1]; htri_t is_scale; @@ -377,9 +376,9 @@ main() /* Reopen the file and group. */ if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gopen(fileid, GRP_NAME)) < 0) ERR; - + /* Loop through datasets to find variables. */ - if (H5Gget_num_objs(grpid, &num_obj) < 0) ERR; + if (H5Gget_num_objs(grpid, (hsize_t *)&num_obj) < 0) ERR; for (i=0; i #include -#define FILE_NAME "tst_h_dimscales.h5" +#define FILE_NAME "tst_h_dimscales1.h5" int main() { @@ -36,35 +36,35 @@ main() hsize_t dimscale_dims[1] = {DIM1_LEN}; /* Open file and create group. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, - H5P_DEFAULT)) < 0) ERR; + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; - + /* Create our dimension scale. Use the built-in NAME attribute * on the dimscale. */ - if ((dimscale_spaceid = H5Screate_simple(1, dimscale_dims, - dimscale_dims)) < 0) ERR; - if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, - dimscale_spaceid, H5P_DEFAULT)) < 0) ERR; + if ((dimscale_spaceid = H5Screate_simple(1, dimscale_dims, + dimscale_dims)) < 0) ERR; + if ((dimscaleid = H5Dcreate(grpid, DIMSCALE_NAME, H5T_NATIVE_INT, + dimscale_spaceid, H5P_DEFAULT)) < 0) ERR; if (H5DSset_scale(dimscaleid, NAME_ATTRIBUTE) < 0) ERR; /* Create a 1D variable which uses the dimscale. Attach a label * to this scale. */ if ((var1_spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; - if ((var1_datasetid = H5Dcreate(grpid, VAR1_NAME, H5T_NATIVE_INT, - var1_spaceid, H5P_DEFAULT)) < 0) ERR; + if ((var1_datasetid = H5Dcreate(grpid, VAR1_NAME, H5T_NATIVE_INT, + var1_spaceid, H5P_DEFAULT)) < 0) ERR; if (H5DSattach_scale(var1_datasetid, dimscaleid, 0) < 0) ERR; if (H5DSset_label(var1_datasetid, 0, FIFTIES_SONG) < 0) ERR; /* Create a 1D variabls that doesn't use the dimension scale. */ - if ((var2_datasetid = H5Dcreate(grpid, VAR2_NAME, H5T_NATIVE_INT, - var1_spaceid, H5P_DEFAULT)) < 0) ERR; + if ((var2_datasetid = H5Dcreate(grpid, VAR2_NAME, H5T_NATIVE_INT, + var1_spaceid, H5P_DEFAULT)) < 0) ERR; /* Create a 2D dataset which uses the scale for one of its * dimensions. */ if ((var3_spaceid = H5Screate_simple(2, dims, dims)) < 0) ERR; - if ((var3_datasetid = H5Dcreate(grpid, VAR3_NAME, H5T_NATIVE_INT, - var3_spaceid, H5P_DEFAULT)) < 0) ERR; + if ((var3_datasetid = H5Dcreate(grpid, VAR3_NAME, H5T_NATIVE_INT, + var3_spaceid, H5P_DEFAULT)) < 0) ERR; if (H5DSattach_scale(var3_datasetid, dimscaleid, 0) < 0) ERR; /* Detach the scale. */ @@ -72,16 +72,15 @@ main() /* Close up the shop. */ if (H5Dclose(dimscaleid) < 0 || - H5Dclose(var1_datasetid) < 0 || - H5Dclose(var2_datasetid) < 0 || - H5Dclose(var3_datasetid) < 0 || - H5Sclose(var1_spaceid) < 0 || - H5Sclose(var3_spaceid) < 0 || - H5Sclose(dimscale_spaceid) < 0 || + H5Dclose(var1_datasetid) < 0 || + H5Dclose(var2_datasetid) < 0 || + H5Dclose(var3_datasetid) < 0 || + H5Sclose(var1_spaceid) < 0 || + H5Sclose(var3_spaceid) < 0 || + H5Sclose(dimscale_spaceid) < 0 || H5Gclose(grpid) < 0 || - H5Fclose(fileid) < 0) ERR; + H5Fclose(fileid) < 0) ERR; } SUMMARIZE_ERR; FINAL_RESULTS; } - diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales2.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales2.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales2.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales2.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales3.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales3.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales3.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales3.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales4.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales4.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_dimscales4.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_dimscales4.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_enums.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_enums.c similarity index 92% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_enums.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_enums.c index bde07c5229a..08906dfe063 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_enums.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_enums.c @@ -8,6 +8,7 @@ */ #include "h5_err_macros.h" #include +#include "config.h" #define FILE_NAME "tst_h_enums.h5" #define DIM1_LEN 12 @@ -49,11 +50,11 @@ main() short data_in[DIM1_LEN]; int i; short val[NUM_VALS]; - char love_how[NUM_VALS][STR_LEN + 1] = {"Depth", "Bredth", - "Height", "Level", - "Freely", "Purely", - "Passionately", "Lost", - "Breath", "Smiles", + char love_how[NUM_VALS][STR_LEN + 1] = {"Depth", "Breadth", + "Height", "Level", + "Freely", "Purely", + "Passionately", "Lost", + "Breath", "Smiles", "Tears", "After Death"}; /* H5T_class_t type_class;*/ size_t size; @@ -62,18 +63,18 @@ main() char *member_name; htri_t types_equal; hid_t base_hdf_typeid; - - + + for (i=0; i < NUM_VALS; i++) val[i] = i*2; for (i=0; i < DIM1_LEN; i++) data[i] = i*2; - + /* Open file. */ - if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP_NAME, 0)) < 0) ERR; - + /* Create enum type. */ /* Both methods do the same thing, but Quincey says to prefer * H5Tcreate_enum. */ @@ -83,7 +84,7 @@ main() /* Insert some values. */ for (i=0; i +#include "err_macros.h" #include /* Defining USE_MPE causes the MPE trace library to be used (and you diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_strings.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_strings.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_strings1.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings1.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_strings1.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings1.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_strings2.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings2.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_strings2.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_strings2.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vars.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars.c similarity index 99% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_vars.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars.c index aae31ba2902..ffe0405d982 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vars.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars.c @@ -79,7 +79,7 @@ main() H5P_DEFAULT)) < 0) ERR; if ((grpid = H5Gcreate(fileid, GRP2_NAME, 0)) < 0) ERR; - /* Create a space coresponding to these three dimensions. */ + /* Create a space corresponding to these three dimensions. */ dims[0] = 0; dims[1] = LAT_LEN; dims[2] = LON_LEN; diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vars2.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars2.c similarity index 99% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_vars2.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars2.c index 599febc6165..49158ba8648 100644 --- a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vars2.c +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars2.c @@ -342,7 +342,7 @@ main() ERR; } SUMMARIZE_ERR; -/* I cant get this to work, I don't think it's allowed in HDF5. - Ed 7/12/7 */ +/* I can't get this to work, I don't think it's allowed in HDF5. - Ed 7/12/7 */ /* printf("*** Checking HDF5 scalar variable compession..."); */ /* #define MAX_NAME_LEN 50 */ diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vars3.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars3.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_vars3.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vars3.c diff --git a/contrib/netcdf/4.4.1.1/h5_test/tst_h_vl.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vl.c similarity index 100% rename from contrib/netcdf/4.4.1.1/h5_test/tst_h_vl.c rename to contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_vl.c diff --git a/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_wrt_cmp.c b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_wrt_cmp.c new file mode 100644 index 00000000000..a9f139e5365 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/h5_test/tst_h_wrt_cmp.c @@ -0,0 +1,139 @@ +/* This is part of the netCDF package. + Copyright 2007 University Corporation for Atmospheric Research/Unidata + See COPYRIGHT file for conditions of use. + + Test HDF5 compound types. + Ed Hartnett +*/ + +#include "h5_err_macros.h" +#include + +#define FILE_NAME "tst_h_wrt_cmp.h5" +#define DIM1_LEN 3 +#define COMPOUND_NAME "cmp" +#define VAR_NAME "var" + +int +main() +{ + hid_t fileid, access_plist, spaceid, typeid; + hid_t datasetid; + hsize_t dims[1]; + char dummy[] = " "; + struct s1 + { + unsigned char c1; + double d; + } data[DIM1_LEN]; + int i; + + /* Initialize our data space. This is required to keep valgrind + * happy. It makes no difference to the execution of the + * program. */ + for (i = 0; i < DIM1_LEN; i++) + memcpy((void *)(&data[i]), (void *)dummy, sizeof(struct s1)); + + /* Now init our values. */ + for (i = 0; i < DIM1_LEN; i++) + { + data[i].c1 = 126; + data[i].d = -9999999; + } + + printf("\n*** Checking HDF5 compound types (even more so).\n"); + printf("*** Checking packing of HDF5 compound types..."); + { + /* Open file and create group. */ + if ((access_plist = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; + if (H5Pset_fclose_degree(access_plist, H5F_CLOSE_STRONG)) ERR; + if ((fileid = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, + access_plist)) < 0) ERR; + + /* Create a simple compound type. */ + if ((typeid = H5Tcreate(H5T_COMPOUND, sizeof(struct s1))) < 0) ERR; + if (H5Tinsert(typeid, "c1", HOFFSET(struct s1, c1), H5T_NATIVE_UCHAR) < 0) ERR; + if (H5Tinsert(typeid, "d", HOFFSET(struct s1, d), H5T_NATIVE_DOUBLE) < 0) ERR; + if (H5Tcommit(fileid, COMPOUND_NAME, typeid) < 0) ERR; + + /* Create a space. */ + dims[0] = DIM1_LEN; + if ((spaceid = H5Screate_simple(1, dims, dims)) < 0) ERR; + + /* Create a dataset of this compound type. */ + if ((datasetid = H5Dcreate(fileid, VAR_NAME, typeid, spaceid, + H5P_DEFAULT)) < 0) ERR; + + /* Write some data. */ + if (H5Dwrite(datasetid, typeid, H5S_ALL, H5S_ALL, H5P_DEFAULT, + data) < 0) ERR; + + /* Release all resources. */ + if (H5Pclose(access_plist) < 0) ERR; + if (H5Tclose(typeid) < 0) ERR; + if (H5Sclose(spaceid) < 0) ERR; + if (H5Fclose(fileid) < 0) ERR; + } + SUMMARIZE_ERR; + printf("*** Checking packing of HDF5 compound types..."); + { + /* Open file. */ + if ((access_plist = H5Pcreate(H5P_FILE_ACCESS)) < 0) ERR; + if (H5Pset_fclose_degree(access_plist, H5F_CLOSE_STRONG)) ERR; + if ((fileid = H5Fopen(FILE_NAME, H5F_ACC_RDONLY, access_plist)) < 0) ERR; + + /* Open dataset. */ + if ((datasetid = H5Dopen1(fileid, VAR_NAME)) < 0) ERR; + + /* Check space. */ + if ((spaceid = H5Dget_space(datasetid)) < 0) ERR; + if (H5Sget_simple_extent_ndims(spaceid) != 1) ERR; + if (H5Sget_simple_extent_npoints(spaceid) != DIM1_LEN) ERR; + + /* Get type. */ + if ((typeid = H5Dget_type(datasetid)) < 0) ERR; + + /* Read the data. */ + if (H5Dread(datasetid, typeid, H5S_ALL, H5S_ALL, H5P_DEFAULT, + data) < 0) ERR; + + /* Check the data. */ + for (i=0; i&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@ +@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 +check_PROGRAMS = tst_chunk_hdf4$(EXEEXT) tst_h4_lendian$(EXEEXT) \ + tst_hdf4_extra$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) +TESTS = tst_chunk_hdf4$(EXEEXT) tst_h4_lendian$(EXEEXT) \ + tst_hdf4_extra$(EXEEXT) $(am__append_3) $(am__append_5) + +# This test script depends on ncdump and tst_interops2.c. +@BUILD_UTILITIES_TRUE@am__append_2 = tst_interops2 +@BUILD_UTILITIES_TRUE@am__append_3 = run_formatx_hdf4.sh + +# This test script fetches HDF4 files from an FTP server and uses +# program tst_interops3.c to read them. +@USE_HDF4_FILE_TESTS_TRUE@am__append_4 = tst_interops3 +@USE_HDF4_FILE_TESTS_TRUE@am__append_5 = run_get_hdf4_files.sh +subdir = hdf4_test +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = ref_chunked.hdf4 ref_contiguous.hdf4 +@BUILD_UTILITIES_TRUE@am__EXEEXT_1 = tst_interops2$(EXEEXT) +@USE_HDF4_FILE_TESTS_TRUE@am__EXEEXT_2 = tst_interops3$(EXEEXT) +tst_chunk_hdf4_SOURCES = tst_chunk_hdf4.c +tst_chunk_hdf4_OBJECTS = tst_chunk_hdf4.$(OBJEXT) +tst_chunk_hdf4_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +tst_h4_lendian_SOURCES = tst_h4_lendian.c +tst_h4_lendian_OBJECTS = tst_h4_lendian.$(OBJEXT) +tst_h4_lendian_LDADD = $(LDADD) +tst_hdf4_extra_SOURCES = tst_hdf4_extra.c +tst_hdf4_extra_OBJECTS = tst_hdf4_extra.$(OBJEXT) +tst_hdf4_extra_LDADD = $(LDADD) +tst_interops2_SOURCES = tst_interops2.c +tst_interops2_OBJECTS = tst_interops2.$(OBJEXT) +tst_interops2_LDADD = $(LDADD) +tst_interops3_SOURCES = tst_interops3.c +tst_interops3_OBJECTS = tst_interops3.$(OBJEXT) +tst_interops3_LDADD = $(LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = tst_chunk_hdf4.c tst_h4_lendian.c tst_hdf4_extra.c \ + tst_interops2.c tst_interops3.c +DIST_SOURCES = tst_chunk_hdf4.c tst_h4_lendian.c tst_hdf4_extra.c \ + tst_interops2.c tst_interops3.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ref_chunked.hdf4 \ + $(srcdir)/ref_contiguous.hdf4 $(top_srcdir)/lib_flags.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ + +# Put together AM_CPPFLAGS and AM_LDFLAGS. + +# Link to our assembled library. +AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; +EXTRA_DIST = CMakeLists.txt ref_contiguous.hdf4 ref_chunked.hdf4 \ +run_get_hdf4_files.sh run_formatx_hdf4.sh + +CLEANFILES = *.h4 *.hdf +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 --ignore-deps hdf4_test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps hdf4_test/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/lib_flags.am $(am__empty): + +$(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): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +tst_chunk_hdf4$(EXEEXT): $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_DEPENDENCIES) $(EXTRA_tst_chunk_hdf4_DEPENDENCIES) + @rm -f tst_chunk_hdf4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_LDADD) $(LIBS) + +tst_h4_lendian$(EXEEXT): $(tst_h4_lendian_OBJECTS) $(tst_h4_lendian_DEPENDENCIES) $(EXTRA_tst_h4_lendian_DEPENDENCIES) + @rm -f tst_h4_lendian$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_h4_lendian_OBJECTS) $(tst_h4_lendian_LDADD) $(LIBS) + +tst_hdf4_extra$(EXEEXT): $(tst_hdf4_extra_OBJECTS) $(tst_hdf4_extra_DEPENDENCIES) $(EXTRA_tst_hdf4_extra_DEPENDENCIES) + @rm -f tst_hdf4_extra$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_hdf4_extra_OBJECTS) $(tst_hdf4_extra_LDADD) $(LIBS) + +tst_interops2$(EXEEXT): $(tst_interops2_OBJECTS) $(tst_interops2_DEPENDENCIES) $(EXTRA_tst_interops2_DEPENDENCIES) + @rm -f tst_interops2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_interops2_OBJECTS) $(tst_interops2_LDADD) $(LIBS) + +tst_interops3$(EXEEXT): $(tst_interops3_OBJECTS) $(tst_interops3_DEPENDENCIES) $(EXTRA_tst_interops3_DEPENDENCIES) + @rm -f tst_interops3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tst_interops3_OBJECTS) $(tst_interops3_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + fi; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-valgrind-am check-valgrind-drd-am \ + check-valgrind-drd-local check-valgrind-helgrind-am \ + check-valgrind-helgrind-local check-valgrind-local \ + check-valgrind-memcheck-am check-valgrind-memcheck-local \ + check-valgrind-sgcheck-am check-valgrind-sgcheck-local clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# If valgrind is present, add valgrind targets. +@VALGRIND_CHECK_RULES@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/nc_test4/chunked.hdf4 b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/ref_chunked.hdf4 old mode 100755 new mode 100644 similarity index 100% rename from contrib/netcdf/4.4.1.1/nc_test4/chunked.hdf4 rename to contrib/netcdf/netcdf-c-4.6.2/hdf4_test/ref_chunked.hdf4 diff --git a/contrib/netcdf/4.4.1.1/nc_test4/contiguous.hdf4 b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/ref_contiguous.hdf4 similarity index 100% rename from contrib/netcdf/4.4.1.1/nc_test4/contiguous.hdf4 rename to contrib/netcdf/netcdf-c-4.6.2/hdf4_test/ref_contiguous.hdf4 diff --git a/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/run_formatx_hdf4.sh b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/run_formatx_hdf4.sh new file mode 100755 index 00000000000..8fc19928e71 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/run_formatx_hdf4.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +# This shell script runs tst_interops2 to create a HDF4 file, and read +# it with netCDF. Then the script runs ncdump on the HDF4 file. + +# Ed Hartnett + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +FILE=tst_interops2.h4 + +ECODE=0 + +echo "" +echo "*** Testing extended file format output." +set -e + +echo "Creating HDF4 file" +${execdir}/tst_interops2 + +echo "Test extended format output for a HDF4 file" +rm -f tmp_tst_formatx_hdf4 +${NCDUMP} -K $FILE >tmp_tst_formatx_hdf4 +if ! fgrep 'HDF4 mode=00001000' +#include +#include "err_macros.h" +#include +#include +#include + +#define CHUNKEDFILE "ref_chunked.hdf4" +#define CHUNKEDVAR "LandWater" + +#define CONTIGFILE "ref_contiguous.hdf4" +#define CONTIGVAR "pres" + +#define LAT_LEN 3 +#define LON_LEN 2 +#define DIMS_2 2 + +static size_t EXPECTED_CHUNKSIZES[2] = {1,1200}; + +int +main(int argc, char **argv) +{ + int ncid; + int varid; + int rank; + int d; + int storage; + size_t chunksizes[NC_MAX_VAR_DIMS]; + + printf("\n*** Testing HDF4/NetCDF-4 chunking API: chunked..."); + { + + /* Open with netCDF */ + if (nc_open(CHUNKEDFILE, NC_NOWRITE, &ncid)) ERR; + + /* Get a variable id */ + if(nc_inq_varid(ncid,CHUNKEDVAR,&varid)) ERR; + + /* get rank */ + if(nc_inq_varndims(ncid,varid,&rank)) ERR; + + /* get chunk info */ + memset(chunksizes,0,sizeof(chunksizes)); + if(nc_inq_var_chunking(ncid,varid,&storage,chunksizes)) ERR; + + if(storage == NC_CONTIGUOUS) { + fprintf(stderr,"nc_inq_var_chunking did not return CHUNKED\n"); + ERR; + } + + for(d=0;d +#include +#include +#include "mfhdf.h" +#include "err_macros.h" + +#define DIM1 5 +#define DIM0 5 +#define RANK 2 +#define FILENAME "tst_h4_lendian.h4" +#define SDSNAME "data" + +/* Read the file. Return -1 if endianness is not little. */ +int read_hdf_file(int dtype) +{ + int ncid = 0; + int le_int16_varid = 0; + int ed = 0; + + if (nc_open(FILENAME, NC_NETCDF4 | NC_NOWRITE, &ncid)) ERR; + if (nc_inq_varid(ncid,SDSNAME,&le_int16_varid)) ERR; + if (nc_inq_var_endian(ncid,le_int16_varid,&ed)) ERR; + if (nc_close(ncid)) ERR; + + if (ed != NC_ENDIAN_LITTLE) + return -1; + + return 0; +} + +/* Create a HDF4 file with one dataset of type dtype. */ +int create_hdf_file(int dtype) +{ + int32 sd_id, sds_id; + int32 start[2] = {0, 0}, edges[2] = {DIM1, DIM0}; + int16 array_data[DIM0][DIM1]; + int32 array_data_int32[DIM0][DIM1]; + float32 array_data_float32[DIM0][DIM1]; + float64 array_data_float64[DIM0][DIM1]; + void *data; + intn i, j, count; + + /* Populate data arrays. */ + count = 0; + for (j = 0; j < DIM0; j++) + { + for (i = 0; i < DIM1; i++) + { + array_data[j][i] = count; + array_data_int32[j][i] = count; + array_data_float32[j][i] = count; + array_data_float64[j][i] = count++; + } + } + + /* Point to the correct data. */ + switch(dtype) + { + case DFNT_LINT8: + case DFNT_LUINT8: + case DFNT_LINT16: + case DFNT_LUINT16: + data = array_data; + break; + case DFNT_LINT32: + case DFNT_LUINT32: + data = array_data_int32; + break; + case DFNT_LFLOAT32: + data = array_data_float32; + break; + case DFNT_LFLOAT64: + data = array_data_float64; + break; + default: + return -1; + } + + if ((sd_id = SDstart(FILENAME, DFACC_CREATE)) == -1) ERR; + if ((sds_id = SDcreate(sd_id, SDSNAME, dtype, RANK, edges)) == -1) ERR; + if (SDwritedata(sds_id, start, NULL, edges, data)) ERR; + if (SDend(sd_id)) ERR; + + return 0; +} + +/* Create and then read the HDF4 test file. */ +int test_read_write(int dtype) +{ + if (create_hdf_file(dtype)) + return -1; + return read_hdf_file(dtype); +} + +int main() +{ + printf("\n***Test reading from an hdf4 file with a little-endian datatype...\n"); + printf("*** testing reading..."); + { + if (test_read_write(DFNT_LINT8)) ERR; + if (test_read_write(DFNT_LUINT8)) ERR; + if (test_read_write(DFNT_LINT16)) ERR; + if (test_read_write(DFNT_LUINT16)) ERR; + if (test_read_write(DFNT_LINT32)) ERR; + if (test_read_write(DFNT_LUINT32)) ERR; + if (test_read_write(DFNT_LFLOAT32)) ERR; + /* if (test_read_write(DFNT_LFLOAT64)) ERR; */ + } + SUMMARIZE_ERR; + + printf("*** testing for True Negatives. these will return error..."); + { + /* True Negatives. */ + if (test_read_write(DFNT_INT8) != -1) ERR; + if (test_read_write(DFNT_UINT8) != -1) ERR; + if (test_read_write(DFNT_INT16) != -1) ERR; + if (test_read_write(DFNT_UINT16) != -1) ERR; + if (test_read_write(DFNT_INT32) != -1) ERR; + if (test_read_write(DFNT_UINT32) != -1) ERR; + if (test_read_write(DFNT_FLOAT32) != -1) ERR; + if (test_read_write(DFNT_FLOAT64) != -1) ERR; + } + SUMMARIZE_ERR; + + FINAL_RESULTS; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_hdf4_extra.c b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_hdf4_extra.c new file mode 100644 index 00000000000..1e48694469f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_hdf4_extra.c @@ -0,0 +1,177 @@ +/* This is part of the netCDF package. Copyright 2005-2018, + University Corporation for Atmospheric Research/Unidata. See + COPYRIGHT file for conditions of use. + + Test that NetCDF-4 can read HDF4 files. + Ed Hartnett, Ward Fisher +*/ +#include +#include +#include "err_macros.h" +#include +#include + +#define FILE_NAME "tst_hdf4_extra.h4" + +#define PRES_NAME "pres" +#define LAT_LEN 3 +#define LON_LEN 2 +#define NDIMS2 2 +#define ATT_NAME "Caesar" +#define NAME_DUMB "Bozo" + +int +create_hdf4_file() +{ + int32 sd_id, sds_id; + int32 dim_size[NDIMS2] = {LAT_LEN, LON_LEN}; + int32 start[NDIMS2] = {0, 0}, edge[NDIMS2] = {LAT_LEN, LON_LEN}; + int data_out[LAT_LEN][LON_LEN]; + int test_val = 42; + int i, j; + int count = 0; + + /* Create some data. */ + for (i = 0; i < LAT_LEN; i++) + for (j = 0; j < LON_LEN; j++) + data_out[i][j] = count++; + + /* Create a file with one SDS, containing our phony data. */ + sd_id = SDstart(FILE_NAME, DFACC_CREATE); + sds_id = SDcreate(sd_id, PRES_NAME, DFNT_INT32, NDIMS2, dim_size); + if (SDwritedata(sds_id, start, NULL, edge, (void *)data_out)) ERR; + + /* Add a global attribute. */ + if (SDsetattr(sd_id, ATT_NAME, DFNT_INT32, 1, &test_val)) ERR; + + /* Shut down. */ + if (SDendaccess(sds_id)) ERR; + if (SDend(sd_id)) ERR; + + return 0; +} + +int +main(int argc, char **argv) +{ + printf("\n*** Testing HDF4/NetCDF-4 interoperability extra stuff...\n"); + + /* Create our test file. */ + if (create_hdf4_file()) ERR; + + printf("*** testing data conversion..."); + { + int ncid; + size_t start[NDIMS2] = {0, 0}, count[NDIMS2] = {LAT_LEN, LON_LEN}; + int data_int[LAT_LEN * LON_LEN]; + short data_short[LAT_LEN * LON_LEN]; + int data_int2[LAT_LEN * LON_LEN]; + float data_float[LAT_LEN * LON_LEN]; + double data_double[LAT_LEN * LON_LEN]; + int i = 0; + + /* Open HDF4 file with netCDF. */ + if (nc_open(FILE_NAME, 0, &ncid)) ERR; + + /* These won't work. */ + if (nc_get_vara_int(ncid, 0, NULL, count, data_int) != NC_EINVALCOORDS) ERR; + if (nc_get_vara_int(ncid + TEST_VAL_42, 0, start, count, data_int) != NC_EBADID) ERR; + + /* Read data as short. */ + if (nc_get_vara_short(ncid, 0, start, count, data_short)) ERR; + for (i = 0; i < LAT_LEN * LON_LEN; i++) + if (data_short[i] != (short)i) ERR; + + /* Read data as int. */ + if (nc_get_vara_int(ncid, 0, start, count, data_int)) ERR; + for (i = 0; i < LAT_LEN * LON_LEN; i++) + if (data_int[i] != i) ERR; + + /* NULL count is treated as meaing entire variable. */ + if (nc_get_vara_int(ncid, 0, start, NULL, data_int2)) ERR; + for (i = 0; i < LAT_LEN * LON_LEN; i++) + if (data_int2[i] != i) ERR; + + /* Read data as float. */ + if (nc_get_vara_float(ncid, 0, start, count, data_float)) ERR; + for (i = 0; i < LAT_LEN * LON_LEN; i++) + if (data_float[i] != (float)i) ERR; + + /* Read data as double. */ + if (nc_get_vara_double(ncid, 0, start, count, data_double)) ERR; + for (i = 0; i < LAT_LEN * LON_LEN; i++) + if (data_double[i] != (double)i) ERR; + + /* Close the file. */ + if (nc_close(ncid)) ERR; + } + SUMMARIZE_ERR; + printf("*** testing bad parameters, read-only writes, and abort..."); + { + int ncid; + int ndims, nvars, ngatts, unlimdimid; + size_t start[NDIMS2] = {0, 0}, count[NDIMS2] = {1, 1}; + int test_val; + + /* These will not work. */ + if (nc_open(FILE_NAME, NC_MMAP, &ncid) != NC_EINVAL) ERR; + if (nc_open(FILE_NAME, NC_64BIT_OFFSET, &ncid) != NC_EINVAL) ERR; + if (nc_open(FILE_NAME, NC_DISKLESS, &ncid) != NC_EINVAL) ERR; + + /* Now open with netCDF. */ + if (nc_open(FILE_NAME, 0, &ncid)) ERR; + + /* Check it out. */ + if (nc_inq(ncid, &ndims, &nvars, &ngatts, &unlimdimid)) ERR; + if (ndims != 2 || nvars != 1 || ngatts != 1 || unlimdimid != -1) ERR; + if (nc_inq(ncid, NULL, NULL, NULL, NULL)) ERR; + if (nc_inq(ncid + TEST_VAL_42, NULL, NULL, NULL, NULL) != NC_EBADID) ERR; + + /* These only work for netCDF-3 files. */ + if (nc_set_base_pe(ncid, 0) != NC_ENOTNC3) ERR; + if (nc_inq_base_pe(ncid, NULL) != NC_ENOTNC3) ERR; + + /* Attempt to write. */ + if (nc_rename_att(ncid, NC_GLOBAL, ATT_NAME, NAME_DUMB) != NC_EPERM) ERR; + if (nc_del_att(ncid, NC_GLOBAL, ATT_NAME) != NC_EPERM) ERR; + if (nc_put_att_int(ncid, NC_GLOBAL, NAME_DUMB, NC_INT, 0, NULL) != NC_EPERM) ERR; + if (nc_def_dim(ncid, NAME_DUMB, 1, NULL) != NC_EPERM) ERR; + if (nc_def_var(ncid, "hh", NC_INT, 0, NULL, NULL) != NC_EPERM) ERR; + if (nc_def_var_fill(ncid, 0, 0, &test_val) != NC_EPERM) ERR; + if (nc_rename_var(ncid, 0, NAME_DUMB) != NC_EPERM) ERR; + if (nc_put_vara_int(ncid, 0, start, count, &test_val) != NC_EPERM) ERR; + if (nc_set_fill(ncid, 0, NULL) != NC_EPERM) ERR; + if (nc_rename_dim(ncid, 0, NULL) != NC_EPERM) ERR; + + /* These succeed but do nothing. */ + if (nc_enddef(ncid)) ERR; + if (nc_sync(ncid)) ERR; + + /* These netcdf-4 operations are not supported. */ + if (nc_def_var_filter(ncid, 0, 0, 0, NULL) != NC_ENOTNC4) ERR; + if (nc_def_var_fletcher32(ncid, 0, 0) != NC_ENOTNC4) ERR; + if (nc_def_var_endian(ncid, 0, 0) != NC_ENOTNC4) ERR; + if (nc_def_grp(ncid, NAME_DUMB, NULL) != NC_ENOTNC4) ERR; + if (nc_rename_grp(ncid, NAME_DUMB) != NC_ENOTNC4) ERR; + if (nc_def_compound(ncid, 1, NAME_DUMB, NULL) != NC_ENOTNC4) ERR; + if (nc_insert_compound(ncid, 1, NAME_DUMB, 1, 1) != NC_ENOTNC4) ERR; + if (nc_insert_array_compound(ncid, 1, NAME_DUMB, 1, 1, 1, NULL) != NC_ENOTNC4) ERR; + if (nc_inq_compound_field(ncid, 1, 1, NULL, NULL, NULL, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_inq_compound_fieldindex(ncid, 1, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_def_opaque(ncid, 1, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_def_vlen(ncid, NULL, 1, NULL) != NC_ENOTNC4) ERR; + if (nc_def_enum(ncid, 1, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_inq_enum_ident(ncid, 1, 1, NULL) != NC_ENOTNC4) ERR; + if (nc_inq_enum_member(ncid, 1, 1, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_insert_enum(ncid, 1, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_put_vlen_element(ncid, 1, NULL, 1, NULL) != NC_ENOTNC4) ERR; + if (nc_get_vlen_element(ncid, 1, NULL, NULL, NULL) != NC_ENOTNC4) ERR; + if (nc_set_var_chunk_cache(ncid, 1, 1, 1, 1.0) != NC_ENOTNC4) ERR; + if (nc_get_var_chunk_cache(ncid, 1, NULL, NULL, NULL) != NC_ENOTNC4) ERR; + + /* Abort is the same as nc_close, since HDF4 is read-only.) */ + if (nc_abort(ncid)) ERR; + } + SUMMARIZE_ERR; + FINAL_RESULTS; +} diff --git a/contrib/netcdf/4.4.1.1/nc_test4/tst_interops2.c b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops2.c similarity index 92% rename from contrib/netcdf/4.4.1.1/nc_test4/tst_interops2.c rename to contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops2.c index 412878ca29b..2b7ff2681af 100644 --- a/contrib/netcdf/4.4.1.1/nc_test4/tst_interops2.c +++ b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops2.c @@ -3,6 +3,7 @@ COPYRIGHT file for conditions of use. Test that NetCDF-4 can read HDF4 files. + Ed Hartnett */ #include #include @@ -10,6 +11,7 @@ #include #include #include +#include #define FILE_NAME "tst_interops2.h4" @@ -56,6 +58,15 @@ main(int argc, char **argv) if (nc_inq_dim(ncid, 1, NULL, &len_in)) ERR; if (len_in != LON_LEN) ERR; + /* THese won't work. */ + if (nc_redef(ncid) != NC_EPERM) ERR; + if (nc_def_var(ncid, "wow", NC_INT, 0, NULL, NULL) != NC_EPERM) ERR; + if (nc_def_var_chunking(ncid, 0, NC_CONTIGUOUS, NULL) != NC_EPERM) ERR; + + /* Expected this to return NC_EPERM, but instead it returns + * success. See github issue #744. */ + /* if (nc_def_var_chunking_ints(ncid, 0, NC_CONTIGUOUS, NULL)) ERR; */ + /* Read the data through a vara function from the netCDF API. */ if (nc_get_vara(ncid, 0, nstart, ncount, data_in)) ERR; for (i = 0; i < LAT_LEN; i++) diff --git a/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops3.c b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops3.c new file mode 100644 index 00000000000..166c50c663b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/hdf4_test/tst_interops3.c @@ -0,0 +1,94 @@ +/* This is part of the netCDF package. Copyright 2005-2011, University + Corporation for Atmospheric Research/Unidata. See COPYRIGHT file + for conditions of use. + + Test that NetCDF-4 can read a bunch of HDF4 files pulled in from + the FTP site. + + @author Ed Hartnett +*/ + +#include +#include +#include "err_macros.h" +#include + +#define FILE_NAME "tst_interops3.h4" + +/* Function to test nc_inq_format(). */ +int +check_inq_format(int ncid, int expected_format, int expected_extended_format, int expected_mode) +{ + int format; + int extended_format; + int mode; + + if (nc_inq_format(ncid + 66000, NULL) != NC_EBADID) ERR; + if (nc_inq_format(ncid, NULL)) ERR; + if (nc_inq_format(ncid, &format)) ERR; + if (format != expected_format) { + printf("format %d expected_format %d\n", format, expected_format); + ERR; + } + if (nc_inq_format_extended(ncid + 66000, &extended_format, &mode) != NC_EBADID) ERR; + { + int mode; + if (nc_inq_format_extended(ncid, NULL, &mode)) ERR; + if (mode != expected_mode) { + printf("expected_mode %x mode %x\n", expected_mode, mode); + //ERR; + } + } + { + int extended_format; + if (nc_inq_format_extended(ncid, &extended_format, NULL)) ERR; + if (extended_format != expected_extended_format) ERR; + } + + if (nc_inq_format_extended(ncid, &extended_format, &mode)) ERR; + if (mode != expected_mode) ERR; + if (extended_format != expected_extended_format) ERR; + + /* Nothing to do with inq_format, but let's check the base_pe + * functions. */ + if (expected_format == NC_FORMAT_CLASSIC || expected_format == NC_FORMAT_64BIT_OFFSET || + expected_format == NC_FORMAT_CDF5) { + if (nc_set_base_pe(ncid, 0)) ERR; + if (nc_inq_base_pe(ncid, NULL)) ERR; + } else { + if (nc_set_base_pe(ncid, 0) != NC_ENOTNC3) ERR; + if (nc_inq_base_pe(ncid, NULL) != NC_ENOTNC3) ERR; + } + + return 0; +} + +int +main(int argc, char **argv) +{ + printf("\n*** Testing HDF4/NetCDF-4 interoperability...\n"); + printf("*** testing that all hdf4 files can be opened..."); + { +#define NUM_SAMPLE_FILES 5 + int ncid; + int nvars_in, ndims_in, natts_in, unlimdim_in; + char file_name[NUM_SAMPLE_FILES][NC_MAX_NAME + 1] = {"AMSR_E_L2_Rain_V10_200905312326_A.hdf", + "AMSR_E_L3_DailyLand_V06_20020619.hdf", + "MOD29.A2000055.0005.005.2006267200024.hdf", + "MYD29.A2002185.0000.005.2007160150627.hdf", + "MYD29.A2009152.0000.005.2009153124331.hdf"}; + int expected_mode = NC_NETCDF4; + int expected_extended_format = NC_FORMATX_NC_HDF4; + int f; + + for (f = 0; f < NUM_SAMPLE_FILES; f++) + { + if (nc_open(file_name[f], NC_NOWRITE, &ncid)) ERR; + if (nc_inq(ncid, &ndims_in, &nvars_in, &natts_in, &unlimdim_in)) ERR; + if (check_inq_format(ncid, NC_FORMAT_NETCDF4, expected_extended_format, expected_mode)) ERR; + if (nc_close(ncid)) ERR; + } + } + SUMMARIZE_ERR; + FINAL_RESULTS; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/include/CMakeLists.txt new file mode 100644 index 00000000000..bc72203fec1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/CMakeLists.txt @@ -0,0 +1,30 @@ +##### +# Installation of various netCDF headers. +##### + +INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT headers) + +INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_mem.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT headers) + +INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_aux.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT headers) + +INSTALL(FILES ${netCDF_BINARY_DIR}/include/netcdf_meta.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT headers) + +IF(ENABLE_PNETCDF OR ENABLE_PARALLEL4) + INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_par.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT headers) +ENDIF() + + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} Makefile.am CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.am new file mode 100644 index 00000000000..5aaa9c4dfef --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.am @@ -0,0 +1,28 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2010, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to build the include +# directory. + +# Ed Hartnett, Dennis Heimbigner, Ward Fisher + +include_HEADERS = netcdf.h netcdf_meta.h + +if BUILD_PARALLEL +include_HEADERS += netcdf_par.h +endif + +include_HEADERS += netcdf_mem.h netcdf_aux.h + +noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h nclist.h \ +ncuri.h ncutf8.h ncdispatch.h ncdimscale.h netcdf_f.h err_macros.h \ +ncbytes.h nchashmap.h ceconstraints.h rnd.h nclog.h ncconfigure.h \ +nc4internal.h nctime.h nc3internal.h onstack.h ncrc.h ncauth.h \ +ncoffsets.h nctestserver.h nc4dispatch.h nc3dispatch.h ncexternl.h \ +ncwinpath.h ncfilter.h ncindex.h hdf4dispatch.h hdf5internal.h + +if USE_DAP +noinst_HEADERS += ncdap.h +endif + +EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.in new file mode 100644 index 00000000000..3213a9a791a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/Makefile.in @@ -0,0 +1,700 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2010, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to build the include +# directory. + +# Ed Hartnett, Dennis Heimbigner, Ward Fisher + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +@BUILD_PARALLEL_TRUE@am__append_1 = netcdf_par.h +@USE_DAP_TRUE@am__append_2 = ncdap.h +subdir = include +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__include_HEADERS_DIST) \ + $(am__noinst_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = netcdf_meta.h +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__maybe_remake_depfiles = +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__include_HEADERS_DIST = netcdf.h netcdf_meta.h netcdf_par.h \ + netcdf_mem.h netcdf_aux.h +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" +am__noinst_HEADERS_DIST = nc_logging.h nc_tests.h fbits.h nc.h \ + nclist.h ncuri.h ncutf8.h ncdispatch.h ncdimscale.h netcdf_f.h \ + err_macros.h ncbytes.h nchashmap.h ceconstraints.h rnd.h \ + nclog.h ncconfigure.h nc4internal.h nctime.h nc3internal.h \ + onstack.h ncrc.h ncauth.h ncoffsets.h nctestserver.h \ + nc4dispatch.h nc3dispatch.h ncexternl.h ncwinpath.h ncfilter.h \ + ncindex.h hdf4dispatch.h hdf5internal.h ncdap.h +HEADERS = $(include_HEADERS) $(noinst_HEADERS) +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/netcdf_meta.h.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +include_HEADERS = netcdf.h netcdf_meta.h $(am__append_1) netcdf_mem.h \ + netcdf_aux.h +noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h nclist.h ncuri.h \ + ncutf8.h ncdispatch.h ncdimscale.h netcdf_f.h err_macros.h \ + ncbytes.h nchashmap.h ceconstraints.h rnd.h nclog.h \ + ncconfigure.h nc4internal.h nctime.h nc3internal.h onstack.h \ + ncrc.h ncauth.h ncoffsets.h nctestserver.h nc4dispatch.h \ + nc3dispatch.h ncexternl.h ncwinpath.h ncfilter.h ncindex.h \ + hdf4dispatch.h hdf5internal.h $(am__append_2) +EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in +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 --ignore-deps include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps include/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): +netcdf_meta.h: $(top_builddir)/config.status $(srcdir)/netcdf_meta.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-generic clean-libtool \ + cscopelist-am ctags ctags-am distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-includeHEADERS + +.PRECIOUS: Makefile + + +# 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/contrib/netcdf/4.4.1.1/include/XGetopt.h b/contrib/netcdf/netcdf-c-4.6.2/include/XGetopt.h similarity index 100% rename from contrib/netcdf/4.4.1.1/include/XGetopt.h rename to contrib/netcdf/netcdf-c-4.6.2/include/XGetopt.h diff --git a/contrib/netcdf/4.4.1.1/include/ceconstraints.h b/contrib/netcdf/netcdf-c-4.6.2/include/ceconstraints.h similarity index 100% rename from contrib/netcdf/4.4.1.1/include/ceconstraints.h rename to contrib/netcdf/netcdf-c-4.6.2/include/ceconstraints.h diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/err_macros.h b/contrib/netcdf/netcdf-c-4.6.2/include/err_macros.h new file mode 100644 index 00000000000..f32e3eb7a16 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/err_macros.h @@ -0,0 +1,94 @@ +/* This is part of the netCDF package. + Copyright 2005 University Corporation for Atmospheric Research/Unidata + See COPYRIGHT file for conditions of use. + + Common includes, defines, etc., for test code in the libsrc4 and + nc_test4 directories. + + Ed Hartnett, Russ Rew, Dennis Heimbigner +*/ + +#ifndef _ERR_MACROS_H +#define _ERR_MACROS_H + +#include "config.h" +#include +#include +#include +#include + +/* Err is used to keep track of errors within each set of tests, + * total_err is the number of errors in the entire test program, which + * generally cosists of several sets of tests. */ +static int total_err = 0, err = 0; + +/* This macro prints an error message with line number and name of + * test program. */ +#define ERR do { \ +fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ +err++; \ +fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ + __FILE__, __LINE__); \ +fflush(stderr); \ +return 2; \ +} while (0) + +/* Duplicate with different name. */ +#define ERR_RET ERR + +#define ERR_GOTO do { \ +fflush(stdout); /* Make sure our stdout is synced with stderr. */ \ +fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \ + __FILE__, __LINE__); \ +goto error; \ +} while (0) + +int ERR_report(int stat, const char* file, int line) +{ + fflush(stdout); + fprintf(stderr, "Sorry! Unexpected result, %s, line: %d; status=%d\n", + file,line,stat); + fflush(stderr); + return 1; +} + +#define ERRSTAT(stat) {err+=ERR_report(stat,__FILE__,__LINE__);} + +/* After a set of tests, report the number of errors, and increment + * total_err. */ +#define SUMMARIZE_ERR do { \ + if (err) \ + { \ + printf("%d failures\n", err); \ + total_err += err; \ + err = 0; \ + } \ + else \ + printf("ok.\n"); \ +} while (0) + +/* This macro prints out our total number of errors, if any, and exits + * with a 0 if there are not, or a 2 if there were errors. Make will + * stop if a non-zero value is returned from a test program. */ +#define FINAL_RESULTS do { \ + if (total_err) \ + { \ + printf("%d errors detected! Sorry!\n", total_err); \ + return 2; \ + } \ + printf("*** Tests successful!\n"); \ + return 0; \ +} while (0) + +/* This macro does the same as FINAL_RESULTS, but without the success + * message. */ +#define FINAL_RESULTS_QUIET do { \ + if (total_err) \ + { \ + printf("%d errors detected! Sorry!\n", total_err); \ + return 2; \ + } \ + return 0; \ +} while (0) + +#endif /* _ERR_MACROS_H */ diff --git a/contrib/netcdf/4.4.1.1/include/fbits.h b/contrib/netcdf/netcdf-c-4.6.2/include/fbits.h similarity index 100% rename from contrib/netcdf/4.4.1.1/include/fbits.h rename to contrib/netcdf/netcdf-c-4.6.2/include/fbits.h diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/hdf4dispatch.h b/contrib/netcdf/netcdf-c-4.6.2/include/hdf4dispatch.h new file mode 100644 index 00000000000..01367dae97b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/hdf4dispatch.h @@ -0,0 +1,62 @@ +/* Copyright 2018, UCAR/Unidata. See netcdf/COPYRIGHT file for copying + * and redistribution conditions. */ +/** + * @file @internal This header file contains the prototypes for the + * HDF4 versions of the netCDF functions. This is part of the HDF4 + * dispatch layer and this header should not be included by any file + * outside the libhdf4 directory. + * + * Ed Hartnett + */ +#ifndef _HDF4DISPATCH_H +#define _HDF4DISPATCH_H + +#include "config.h" +#include "ncdispatch.h" + +/** This is the max size of an SD dataset name in HDF4 (from HDF4 + * documentation).*/ +#define NC_MAX_HDF4_NAME 64 + +/** This is the max number of dimensions for a HDF4 SD dataset (from + * HDF4 documentation). */ +#define NC_MAX_HDF4_DIMS 32 + +/* Stuff below is for hdf4 files. */ +typedef struct NC_VAR_HDF4_INFO +{ + int sdsid; + int hdf4_data_type; +} NC_VAR_HDF4_INFO_T; + +typedef struct NC_HDF4_FILE_INFO +{ + int sdid; +} NC_HDF4_FILE_INFO_T; + +#if defined(__cplusplus) +extern "C" { +#endif + + extern int + NC_HDF4_open(const char *path, int mode, int basepe, size_t *chunksizehintp, + void* parameters, NC_Dispatch*, NC*); + + extern int + NC_HDF4_close(int ncid); + + extern int + NC_HDF4_inq_format(int ncid, int *formatp); + + extern int + NC_HDF4_inq_format_extended(int ncid, int *formatp, int *modep); + + extern int + NC_HDF4_get_vara(int ncid, int varid, const size_t *start, const size_t *count, + void *value, nc_type); + +#if defined(__cplusplus) +} +#endif + +#endif /*_HDF4DISPATCH_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/hdf5internal.h b/contrib/netcdf/netcdf-c-4.6.2/include/hdf5internal.h new file mode 100644 index 00000000000..8cd16b77188 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/hdf5internal.h @@ -0,0 +1,97 @@ +/* Copyright 2005-2018 University Corporation for Atmospheric + Research/Unidata. */ +/** + * @file This header file contains macros, types, and prototypes for + * the HDF5 code in libhdf5. This header should not be included in + * code outside libhdf5. + * + * @author Ed Hartnett +*/ + +#ifndef _HDF5INTERNAL_ +#define _HDF5INTERNAL_ + +#include "config.h" +#include +#include +#include "nc4internal.h" +#include "ncdimscale.h" +#include "nc4dispatch.h" + +#define NC_MAX_HDF5_NAME (NC_MAX_NAME + 10) + +/* These have to do with creating chuncked datasets in HDF5. */ +#define NC_HDF5_UNLIMITED_DIMSIZE (0) +#define NC_HDF5_CHUNKSIZE_FACTOR (10) +#define NC_HDF5_MIN_CHUNK_SIZE (2) + +#define NC_EMPTY_SCALE "NC_EMPTY_SCALE" + +/* This is an attribute I had to add to handle multidimensional + * coordinate variables. */ +#define COORDINATES "_Netcdf4Coordinates" +#define COORDINATES_LEN (NC_MAX_NAME * 5) + +/* This is used when the user defines a non-coordinate variable with + * same name as a dimension. */ +#define NON_COORD_PREPEND "_nc4_non_coord_" + +/* An attribute in the HDF5 root group of this name means that the + * file must follow strict netCDF classic format rules. */ +#define NC3_STRICT_ATT_NAME "_nc3_strict" + +/* If this attribute is present on a dimscale variable, use the value + * as the netCDF dimid. */ +#define NC_DIMID_ATT_NAME "_Netcdf4Dimid" + +/** This is the name of the class HDF5 dimension scale attribute. */ +#define HDF5_DIMSCALE_CLASS_ATT_NAME "CLASS" + +/** This is the name of the name HDF5 dimension scale attribute. */ +#define HDF5_DIMSCALE_NAME_ATT_NAME "NAME" + +/** Strut to hold HDF5-specific info for the file. */ +typedef struct NC_HDF5_FILE_INFO +{ + hid_t hdfid; +} NC_HDF5_FILE_INFO_T; + +/* This is a struct to handle the dim metadata. */ +typedef struct NC_HDF5_DIM_INFO +{ + hid_t hdf_dimscaleid; /* Non-zero if a DIM_WITHOUT_VARIABLE dataset is in use (no coord var). */ + HDF5_OBJID_T hdf5_objid; +} NC_HDF5_DIM_INFO_T; + +/** Strut to hold HDF5-specific info for attributes. */ +typedef struct NC_HDF5_ATT_INFO +{ + hid_t native_hdf_typeid; /* Native HDF5 datatype for attribute's data */ +} NC_HDF5_ATT_INFO_T; + +/* Struct to hold HDF5-specific info for a group. */ +typedef struct NC_HDF5_GRP_INFO +{ + hid_t hdf_grpid; +} NC_HDF5_GRP_INFO_T; + +/* These functions do HDF5 things. */ +int rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid); +int rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid); +void reportopenobjects(int log, hid_t); +int nc4_rec_grp_HDF5_del(NC_GRP_INFO_T *grp); + +/* Used by NC4_set_provenance */ +int nc4_put_att(NC_GRP_INFO_T* grp, int varid, const char *name, nc_type file_type, + size_t len, const void *data, nc_type mem_type, int force); + +/* In-memory functions */ +extern hid_t NC4_image_init(NC_FILE_INFO_T* h5); +extern void NC4_image_finalize(void*); + +/* These functions are internal to the libhdf5 directory. */ +int nc4_detect_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp); +int hdf5_set_log_level(); +int nc4_get_fill_value(NC_FILE_INFO_T *h5, NC_VAR_INFO_T *var, void **fillp); + +#endif /* _HDF5INTERNAL_ */ diff --git a/contrib/netcdf/4.4.1.1/include/nc.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc.h similarity index 79% rename from contrib/netcdf/4.4.1.1/include/nc.h rename to contrib/netcdf/netcdf-c-4.6.2/include/nc.h index aa597c9c36c..0215e028126 100644 --- a/contrib/netcdf/4.4.1.1/include/nc.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc.h @@ -27,6 +27,7 @@ typedef struct NC { void* dispatchdata; /*per-'file' data; points to e.g. NC3_INFO data*/ char* path; int mode; /* as provided to nc_open/nc_create */ + int model; /* as determined by libdispatch/dfile.c */ #ifdef USE_REFCOUNT int refcount; /* To enable multiple name-based opens */ #endif @@ -38,12 +39,7 @@ typedef struct NC { typedef struct { /* all xdr'd */ size_t nchars; -#ifdef __arm__ - signed char *cp; -#else - char *cp; -#endif - + char *cp; } NC_string; /* Define functions that are used across multiple dispatchers */ @@ -55,18 +51,10 @@ free_NC_string(NC_string *ncstrp); extern int NC_check_name(const char *name); -#ifdef __arm__ -extern NC_string * -new_NC_string(size_t slen, const signed char *str); -extern int -set_NC_string(NC_string *ncstrp, const signed char *str); -#else extern NC_string * new_NC_string(size_t slen, const char *str); extern int set_NC_string(NC_string *ncstrp, const char *str); -#endif - /* End defined in string.c */ @@ -77,17 +65,9 @@ NC_check_id(int ncid, NC **ncpp); overlap real file descriptors */ extern int nc__pseudofd(void); -/* This function sets a default create flag that will be logically - or'd to whatever flags are passed into nc_create for all future - calls to nc_create. - Valid default create flags are NC_64BIT_OFFSET, NC_CLOBBER, - NC_LOCK, NC_SHARE. */ -extern int nc_set_default_format(int format, int *old_formatp); - /* This function gets a current default create flag */ extern int nc_get_default_format(void); - extern int add_to_NCList(NC*); extern void del_from_NCList(NC*);/* does not free object */ extern NC* find_in_NCList(int ext_ncid); @@ -98,6 +78,9 @@ extern int iterate_NCList(int i,NC**); /* Walk from 0 ...; ERANGE return => stop /* Defined in nc.c */ extern void free_NC(NC*); -extern int new_NC(struct NC_Dispatch*, const char*, int, NC**); +extern int new_NC(struct NC_Dispatch*, const char*, int, int, NC**); + +/* Defined in nc.c */ +extern int ncdebug; #endif /* _NC_H_ */ diff --git a/contrib/netcdf/4.4.1.1/include/nc3dispatch.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc3dispatch.h similarity index 86% rename from contrib/netcdf/4.4.1.1/include/nc3dispatch.h rename to contrib/netcdf/netcdf-c-4.6.2/include/nc3dispatch.h index 8beac4308a2..53469048e6a 100644 --- a/contrib/netcdf/4.4.1.1/include/nc3dispatch.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc3dispatch.h @@ -1,9 +1,9 @@ /* * Copyright 1993-1996 University Corporation for Atmospheric Research/Unidata - * - * Portions of this software were developed by the Unidata Program at the + * + * Portions of this software were developed by the Unidata Program at the * University Corporation for Atmospheric Research. - * + * * Access and use of this software shall impose the following obligations * and understandings on the user. The user is granted the right, without * any fee or cost, to use, copy, modify, alter, enhance and distribute @@ -20,7 +20,7 @@ * any support, consulting, training or assistance of any kind with regard * to the use, operation and performance of this software nor to provide * the user with any updates, revisions, new versions or "bug fixes." - * + * * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -50,129 +50,130 @@ extern "C" { */ /* WARNING: this signature differs from external nc_create API*/ -EXTERNL int +extern int NC3_create(const char *path, int cmode, size_t initialsz, int basepe, size_t *chunksizehintp, - int useparallel, void* mpidata, - struct NC_Dispatch*, NC* ncp); + void* mpidata, struct NC_Dispatch*, NC* ncp); /* WARNING: this signature differs from external nc_open API*/ -EXTERNL int +extern int NC3_open(const char *path, int mode, int basepe, size_t *chunksizehintp, - int use_parallel, void* mpidata, - NC_Dispatch*, NC* ncp); + void* mpidata, NC_Dispatch*, NC* ncp); -EXTERNL int +extern int NC3_new_nc(NC**); -EXTERNL int +extern int NC3_redef(int ncid); -EXTERNL int +extern int NC3__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, size_t r_align); -EXTERNL int +extern int NC3_sync(int ncid); -EXTERNL int +extern int NC3_abort(int ncid); -EXTERNL int -NC3_close(int ncid); +extern int +NC3_close(int ncid,void*); -EXTERNL int +extern int NC3_set_fill(int ncid, int fillmode, int *old_modep); -EXTERNL int +extern int NC3_set_base_pe(int ncid, int pe); -EXTERNL int +extern int NC3_inq_base_pe(int ncid, int *pe); -EXTERNL int +extern int NC3_inq_format(int ncid, int *formatp); -EXTERNL int +extern int NC3_inq_format_extended(int ncid, int *formatp, int *modep); -EXTERNL int +extern int NC3_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp); -EXTERNL int +extern int NC3_inq_type(int, nc_type, char *, size_t *); /* Begin _dim */ -EXTERNL int +extern int NC3_def_dim(int ncid, const char *name, size_t len, int *idp); -EXTERNL int +extern int NC3_inq_dimid(int ncid, const char *name, int *idp); -EXTERNL int +extern int NC3_inq_dim(int ncid, int dimid, char *name, size_t *lenp); -EXTERNL int +extern int NC3_inq_unlimdim(int ncid, int *unlimdimidp); -EXTERNL int +extern int NC3_rename_dim(int ncid, int dimid, const char *name); /* End _dim */ /* Begin _att */ -EXTERNL int +extern int NC3_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp); -EXTERNL int +extern int NC3_inq_attid(int ncid, int varid, const char *name, int *idp); -EXTERNL int +extern int NC3_inq_attname(int ncid, int varid, int attnum, char *name); -EXTERNL int +extern int NC3_rename_att(int ncid, int varid, const char *name, const char *newname); -EXTERNL int +extern int NC3_del_att(int ncid, int varid, const char*); /* End _att */ /* Begin {put,get}_att */ -EXTERNL int +extern int NC3_get_att(int ncid, int varid, const char *name, void *value, nc_type); -EXTERNL int +extern int NC3_put_att(int ncid, int varid, const char *name, nc_type datatype, size_t len, const void *value, nc_type); /* End {put,get}_att */ /* Begin _var */ -EXTERNL int +extern int NC3_def_var(int ncid, const char *name, nc_type xtype, int ndims, const int *dimidsp, int *varidp); -EXTERNL int +extern int NC3_inq_var(int ncid, int varid, char *name, - nc_type *xtypep, int *ndimsp, int *dimidsp, int *nattsp); + nc_type *xtypep, int *ndimsp, int *dimidsp, int *nattsp, + int *no_fill, void *fill_valuep); -EXTERNL int +extern int NC3_inq_varid(int ncid, const char *name, int *varidp); -EXTERNL int +extern int NC3_rename_var(int ncid, int varid, const char *name); +extern int +NC3_def_var_fill(int,int,int,const void*); -EXTERNL int +extern int NC3_put_vara(int ncid, int varid, const size_t *start, const size_t *count, const void *value, nc_type); -EXTERNL int +extern int NC3_get_vara(int ncid, int varid, const size_t *start, const size_t *count, void *value, nc_type); @@ -180,7 +181,7 @@ NC3_get_vara(int ncid, int varid, /* End _var */ extern int NC3_initialize(); - +extern int NC3_finalize(); #if defined(__cplusplus) } diff --git a/contrib/netcdf/4.4.1.1/include/nc3internal.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc3internal.h similarity index 80% rename from contrib/netcdf/4.4.1.1/include/nc3internal.h rename to contrib/netcdf/netcdf-c-4.6.2/include/nc3internal.h index a9b2d8124f9..f1e6f5056b6 100644 --- a/contrib/netcdf/4.4.1.1/include/nc3internal.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc3internal.h @@ -8,7 +8,7 @@ /* * netcdf library 'private' data structures, objects and interfaces */ -#include +#include "config.h" #include /* size_t */ #ifndef HAVE_STDINT_H # include "pstdint.h" /* attempts to define uint32_t etc portably */ @@ -16,15 +16,16 @@ # include #endif /* HAVE_STDINT_H */ #include /* off_t */ +#include "netcdf.h" #ifdef USE_PARALLEL -#include -#else -#include +#include "netcdf_par.h" #endif /* USE_PARALLEL */ /* Always needed */ #include "nc.h" +#include "nchashmap.h" + #ifndef NC_ARRAY_GROWBY #define NC_ARRAY_GROWBY 4 #endif @@ -55,31 +56,12 @@ typedef enum { NC_ATTRIBUTE = 12 } NCtype; - -/*! Hashmap-related structs. - NOTE: 'data' is the dimid or varid which is non-negative. - we store the dimid+1 so a valid entry will have - data > 0 -*/ -typedef struct { - long data; - int flags; - unsigned long key; -} hEntry; - -typedef struct s_hashmap { - hEntry* table; - unsigned long size; - unsigned long count; -} NC_hashmap; - - /* * NC dimension structure */ typedef struct { /* all xdr'd */ - NC_string *name; + NC_string* name; size_t size; } NC_dim; @@ -124,19 +106,21 @@ elem_NC_dimarray(const NC_dimarray *ncap, size_t elem); */ typedef struct { size_t xsz; /* amount of space at xvalue */ - /* below gets xdr'd */ + /* begin xdr */ NC_string *name; nc_type type; /* the discriminant */ size_t nelems; /* length of the array */ void *xvalue; /* the actual data, in external representation */ + /* end xdr */ } NC_attr; typedef struct NC_attrarray { size_t nalloc; /* number allocated >= nelems */ - /* below gets xdr'd */ + /* begin xdr */ /* NCtype type = NC_ATTRIBUTE */ size_t nelems; /* length of the array */ NC_attr **value; + /* end xdr */ } NC_attrarray; /* Begin defined in attr.c */ @@ -177,30 +161,28 @@ typedef struct NC_var { size_t xsz; /* xszof 1 element */ size_t *shape; /* compiled info: dim->size of each dim */ off_t *dsizes; /* compiled info: the right to left product of shape */ - /* below gets xdr'd */ - NC_string *name; + /* begin xdr */ + NC_string* name; /* next two: formerly NC_iarray *assoc */ /* user definition */ size_t ndims; /* assoc->count */ int *dimids; /* assoc->value */ NC_attrarray attrs; nc_type type; /* the discriminant */ - size_t len; /* the total length originally allocated */ + long long len; /* the total length originally allocated */ off_t begin; + /* end xdr */ + int no_fill; /* whether fill mode is ON or OFF */ } NC_var; typedef struct NC_vararray { size_t nalloc; /* number allocated >= nelems */ - /* below gets xdr'd */ + /* begin xdr */ /* NCtype type = NC_VARIABLE */ size_t nelems; /* length of the array */ - NC_hashmap *hashmap; - NC_var **value; + NC_hashmap *hashmap; + NC_var **value; } NC_vararray; -/* Begin defined in lookup3.c */ - -/* End defined in lookup3.c */ - /* Begin defined in var.c */ extern void @@ -229,44 +211,13 @@ extern int NC_findvar(const NC_vararray *ncap, const char *name, NC_var **varpp); extern int -NC_check_vlen(NC_var *varp, size_t vlen_max); +NC_check_vlen(NC_var *varp, long long vlen_max); extern int NC_lookupvar(NC3_INFO* ncp, int varid, NC_var **varp); /* End defined in var.c */ -/* defined in nc_hashmap.c */ -/** Creates a new hashmap near the given size. */ -extern NC_hashmap* NC_hashmapCreate(unsigned long startsize); - -/** Inserts a new element into the hashmap. */ -extern void NC_hashmapAddDim(const NC_dimarray*, long data, const char *name); - -/** Removes the storage for the element of the key and returns the element. */ -extern long NC_hashmapRemoveDim(const NC_dimarray*, const char *name); - -/** Returns the element for the key. */ -extern long NC_hashmapGetDim(const NC_dimarray*, const char *name); - -/** Inserts a new element into the hashmap. */ -extern void NC_hashmapAddVar(const NC_vararray*, long data, const char *name); - -/** Removes the storage for the element of the key and returns the element. */ -extern long NC_hashmapRemoveVar(const NC_vararray*, const char *name); - -/** Returns the element for the key. */ -extern long NC_hashmapGetVar(const NC_vararray*, const char *name); - -/** Returns the number of saved elements. */ -extern unsigned long NC_hashmapCount(NC_hashmap*); - -/** Removes the hashmap structure. */ -extern void NC_hashmapDelete(NC_hashmap*); - -/* end defined in nc_hashmap.c */ - - #define IS_RECVAR(vp) \ ((vp)->shape != NULL ? (*(vp)->shape == NC_UNLIMITED) : 0 ) @@ -389,6 +340,12 @@ NC_sync(NC3_INFO* ncp); extern int NC_calcsize(const NC3_INFO* ncp, off_t *filesizep); +extern int +NC3_inq_default_fill_value(int xtype, void *fillp); + +extern int +NC3_inq_var_fill(const NC_var *varp, void *fill_value); + /* End defined in nc.c */ /* Begin defined in v1hpg.c */ @@ -405,7 +362,7 @@ nc_get_NC(NC3_INFO* ncp); /* Begin defined in putget.c */ extern int -fill_NC_var(NC3_INFO* ncp, const NC_var *varp, size_t varsize, size_t recno); +fill_NC_var(NC3_INFO* ncp, const NC_var *varp, long long varsize, size_t recno); extern int nc_inq_rec(int ncid, size_t *nrecvars, int *recvarids, size_t *recsizes); @@ -418,6 +375,12 @@ nc_put_rec(int ncid, size_t recnum, void *const *datap); /* End defined in putget.c */ +extern int +NC_check_vlens(NC3_INFO *ncp); + +extern int +NC_check_voffs(NC3_INFO *ncp); + /* Define accessors for the dispatchdata */ #define NC3_DATA(nc) ((NC3_INFO*)(nc)->dispatchdata) #define NC3_DATA_SET(nc,data) ((nc)->dispatchdata = (void*)(data)) diff --git a/contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc4dispatch.h similarity index 90% rename from contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.h rename to contrib/netcdf/netcdf-c-4.6.2/include/nc4dispatch.h index b43782abf67..56d563c1f68 100644 --- a/contrib/netcdf/4.4.1.1/libsrc4/nc4dispatch.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc4dispatch.h @@ -18,24 +18,17 @@ extern "C" { #endif - /* We use EXTERNL instead of extern. - On Windows system, EXTERNL has been defined (see netcdf.h) such - that symbols are properly exported/imported between - libraries and executables. On non-windows systems, - EXTERNL is defined as extern. */ - +#define NCLOGLEVELENV "NETCDF_LOG_LEVEL" EXTERNL int NC4_create(const char *path, int cmode, size_t initialsz, int basepe, size_t *chunksizehintp, - int useparallel, void* parameters, - NC_Dispatch*, NC*); + void* parameters, NC_Dispatch*, NC*); EXTERNL int NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp, - int use_parallel, void* parameters, - NC_Dispatch*, NC*); + void* parameters, NC_Dispatch*, NC*); EXTERNL int NC4_redef(int ncid); @@ -51,7 +44,7 @@ EXTERNL int NC4_abort(int ncid); EXTERNL int -NC4_close(int ncid); +NC4_close(int ncid,void*); EXTERNL int NC4_set_fill(int ncid, int fillmode, int *old_modep); @@ -133,7 +126,8 @@ NC4_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, int *shufflep, int *deflatep, int *deflate_levelp, int *fletcher32p, int *contiguousp, size_t *chunksizesp, int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp); + unsigned int* idp, size_t* nparamsp, unsigned int* params + ); EXTERNL int NC4_inq_varid(int ncid, const char *name, int *varidp); @@ -151,6 +145,16 @@ NC4_get_vara(int ncid, int varid, const size_t *start, const size_t *count, void *value, nc_type); +extern int +NC4_put_vars(int ncid, int varid, + const size_t *start, const size_t *count, const ptrdiff_t* stride, + const void *value, nc_type); + +extern int +NC4_get_vars(int ncid, int varid, + const size_t *start, const size_t *count, const ptrdiff_t* stride, + void *value, nc_type); + /* End _var */ /* netCDF4 API only */ @@ -256,6 +260,9 @@ NC4_def_var_fill(int, int, int, const void *); EXTERNL int NC4_def_var_endian(int, int, int); +EXTERNL int +NC4_def_var_filter(int, int, unsigned int, size_t, const unsigned int*); + EXTERNL int NC4_set_var_chunk_cache(int, int, size_t, size_t, float); @@ -268,9 +275,6 @@ NC4_inq_unlimdims(int, int *, int *); EXTERNL int NC4_show_metadata(int); -extern int -NC4_initialize(void); - #if defined(__cplusplus) } #endif diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nc4internal.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc4internal.h new file mode 100644 index 00000000000..fdde906c835 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc4internal.h @@ -0,0 +1,536 @@ +/* Copyright 2005-2018 University Corporation for Atmospheric + Research/Unidata. */ +/** + * @file + * @internal This header file contains macros, types and prototypes + * used to build and manipulate the netCDF metadata model. + * + * @author Ed Hartnett, Dennis Heimbigner, Ward Fisher +*/ + +#ifndef _NC4INTERNAL_ +#define _NC4INTERNAL_ + +#include "config.h" +#include +#include +#include +#include +#include + +#include "ncdimscale.h" +#include "nc_logging.h" +#include "ncindex.h" + +#ifdef USE_PARALLEL +#include "netcdf_par.h" +#endif /* USE_PARALLEL */ +#include "netcdf.h" +#include "netcdf_f.h" +#include "netcdf_mem.h" + +/* Always needed */ +#include "nc.h" + +#define FILE_ID_MASK (0xffff0000) +#define GRP_ID_MASK (0x0000ffff) +#define ID_SHIFT (16) + +typedef enum {GET, PUT} NC_PG_T; +typedef enum {NCNAT, NCVAR, NCDIM, NCATT, NCTYP, NCFLD, NCGRP} NC_SORT; + +#define NC_V2_ERR (-1) + +/* The name of the root group. */ +#define NC_GROUP_NAME "/" + +#define MEGABYTE 1048576 + +/* + * limits of the external representation + */ +#define X_SCHAR_MIN (-128) +#define X_SCHAR_MAX 127 +#define X_UCHAR_MAX 255U +#define X_SHORT_MIN (-32768) +#define X_SHRT_MIN X_SHORT_MIN /* alias compatible with limits.h */ +#define X_SHORT_MAX 32767 +#define X_SHRT_MAX X_SHORT_MAX /* alias compatible with limits.h */ +#define X_USHORT_MAX 65535U +#define X_USHRT_MAX X_USHORT_MAX /* alias compatible with limits.h */ +#define X_INT_MIN (-2147483647-1) +#define X_INT_MAX 2147483647 +#define X_LONG_MIN X_INT_MIN +#define X_LONG_MAX X_INT_MAX +#define X_UINT_MAX 4294967295U +#define X_INT64_MIN (-9223372036854775807LL-1LL) +#define X_INT64_MAX 9223372036854775807LL +#define X_UINT64_MAX 18446744073709551615ULL +#ifdef WIN32 /* Windows, of course, has to be a *little* different. */ +#define X_FLOAT_MAX 3.402823466e+38f +#else +#define X_FLOAT_MAX 3.40282347e+38f +#endif /* WIN32 */ +#define X_FLOAT_MIN (-X_FLOAT_MAX) +#define X_DOUBLE_MAX 1.7976931348623157e+308 +#define X_DOUBLE_MIN (-X_DOUBLE_MAX) + +/** This is the number of netCDF atomic types. */ +#define NUM_ATOMIC_TYPES (NC_MAX_ATOMIC_TYPE + 1) + +/** Number of parameters needed for ZLIB filter. */ +#define CD_NELEMS_ZLIB 1 + +/* Boolean type, to make the code easier to read */ +typedef enum {NC_FALSE = 0, NC_TRUE = 1} nc_bool_t; + +/*Forward*/ +struct NCPROVENANCE; +struct NC_GRP_INFO; +struct NC_TYPE_INFO; + +/* +Indexed Access to Meta-data objects: + +See the document docs/indexing.dox for detailed information. + +Basically provide a common header and use NCindex instances +instead of linked lists. + +WARNING: ALL OBJECTS THAT CAN BE INSERTED INTO AN NCindex +MUST HAVE AN INSTANCE of NC_OBJ AS THE FIRST FIELD. +*/ + +typedef struct NC_OBJ { + NC_SORT sort; + char* name; /* assumed to be null terminated */ + size_t id; + unsigned int hashkey; /* crc32(name) */ +} NC_OBJ; + +/* This is a struct to handle the dim metadata. */ +typedef struct NC_DIM_INFO +{ + NC_OBJ hdr; + struct NC_GRP_INFO *container; /* containing group */ + size_t len; + nc_bool_t unlimited; /* True if the dimension is unlimited */ + nc_bool_t extended; /* True if the dimension needs to be extended */ + nc_bool_t too_long; /* True if len is too big to fit in local size_t. */ + void *format_dim_info; /* Pointer to format-specific dim info. */ + struct NC_VAR_INFO *coord_var; /* The coord var, if it exists. */ +} NC_DIM_INFO_T; + +typedef struct NC_ATT_INFO +{ + NC_OBJ hdr; + struct NC_OBJ *container; /* containing group|var */ + int len; + nc_bool_t dirty; /* True if attribute modified */ + nc_bool_t created; /* True if attribute already created */ + nc_type nc_typeid; /* netCDF type of attribute's data */ + void *format_att_info; + void *data; + nc_vlen_t *vldata; /* only used for vlen */ + char **stdata; /* only for string type. */ +} NC_ATT_INFO_T; + +/* This is a struct to handle the var metadata. */ +typedef struct NC_VAR_INFO +{ + NC_OBJ hdr; + char *hdf5_name; /* used if different from name */ + struct NC_GRP_INFO* container; /* containing group */ + size_t ndims; + int *dimids; + NC_DIM_INFO_T** dim; + nc_bool_t is_new_var; /* True if variable is newly created */ + nc_bool_t was_coord_var; /* True if variable was a coordinate var, but either the dim or var has been renamed */ + nc_bool_t became_coord_var; /* True if variable _became_ a coordinate var, because either the dim or var has been renamed */ + nc_bool_t fill_val_changed; /* True if variable's fill value changes after it has been created */ + nc_bool_t attr_dirty; /* True if variable's attributes are dirty and should be rewritten */ + nc_bool_t created; /* Variable has already been created (_not_ that it was just created) */ + nc_bool_t written_to; /* True if variable has data written to it */ + struct NC_TYPE_INFO *type_info; + hid_t hdf_datasetid; + int atts_not_read; /* If true, the atts have not yet been read. */ + NCindex* att; /* NCindex */ + nc_bool_t no_fill; /* True if no fill value is defined for var */ + void *fill_value; + size_t *chunksizes; + nc_bool_t contiguous; /* True if variable is stored contiguously in HDF5 file */ + int parallel_access; /* Type of parallel access for I/O on variable (collective or independent) */ + nc_bool_t dimscale; /* True if var is a dimscale */ + nc_bool_t *dimscale_attached; /* Array of flags that are true if dimscale is attached for that dim index */ + HDF5_OBJID_T *dimscale_hdf5_objids; + nc_bool_t deflate; /* True if var has deflate filter applied */ + int deflate_level; + nc_bool_t shuffle; /* True if var has shuffle filter applied */ + nc_bool_t fletcher32; /* True if var has fletcher32 filter applied */ + size_t chunk_cache_size, chunk_cache_nelems; + float chunk_cache_preemption; +#ifdef USE_HDF4 + void *format_var_info; /* Pointer to any binary format info. */ +#endif /* USE_HDF4 */ + /* Stuff for arbitrary filters */ + unsigned int filterid; + size_t nparams; + unsigned int* params; +} NC_VAR_INFO_T; + +typedef struct NC_FIELD_INFO +{ + NC_OBJ hdr; + nc_type nc_typeid; + hid_t hdf_typeid; + hid_t native_hdf_typeid; + size_t offset; + int ndims; + int *dim_size; +} NC_FIELD_INFO_T; + +typedef struct NC_ENUM_MEMBER_INFO +{ + char *name; + void *value; +} NC_ENUM_MEMBER_INFO_T; + +typedef struct NC_TYPE_INFO +{ + NC_OBJ hdr; /* contains netCDF type ID, equivalent to a pre-defined type + * for atomic types, but a dynamically + * defined value for user-defined types (stored + * as named datatypes in the HDF5 file). + */ + + struct NC_GRP_INFO* container; /* Containing group */ + unsigned rc; /* Ref. count of objects using this type */ + hid_t hdf_typeid; /* HDF5 type ID, in the file */ + hid_t native_hdf_typeid; /* HDF5 type ID, in memory */ + int endianness; /* What endianness for the type? */ + /* (Set for integer types as well as "complex" + * types, like compound/enum/vlen, used for the + * endianness of the fields and/or base type) + */ + size_t size; /* Size of the type in memory, in bytes */ + nc_bool_t committed; /* True when datatype is committed in the file */ + nc_type nc_type_class; /* NC_VLEN, NC_COMPOUND, NC_OPAQUE, or NC_ENUM + * NOTE: NC_INT is used for all integer types, + * NC_FLOAT is used for all floating-point + * types, and NC_STRING is also used for + * fixed- and variable-length strings. + * (NC_CHAR is used for characters though) + * + * This is somewhat redundant with the + * nc_type field, but allows the code to + * have a single location to look at for + * the "kind" of a type. + */ + + /* Information for each type or class */ + union { + struct { + NClist* enum_member; /* */ + nc_type base_nc_typeid; + hid_t base_hdf_typeid; + } e; /* Enum */ + struct Fields { + NClist* field; /* */ + } c; /* Compound */ + struct { + nc_type base_nc_typeid; + hid_t base_hdf_typeid; + } v; /* Variable-length */ + } u; /* Union of structs, for each type/class */ +} NC_TYPE_INFO_T; + +/* This holds information for one group. Groups reproduce with + * parthenogenesis. */ +typedef struct NC_GRP_INFO +{ + NC_OBJ hdr; + void *format_grp_info; + struct NC_FILE_INFO *nc4_info; + struct NC_GRP_INFO *parent; + int atts_not_read; + NCindex* children; /* NCindex */ + NCindex* dim; /* NCindex * */ + NCindex* att; /* NCindex * */ + NCindex* type; /* NCindex * */ + /* Note that this is the list of vars with position == varid */ + NCindex* vars; /* NCindex * */ +} NC_GRP_INFO_T; + +/* These constants apply to the cmode parameter in the + * HDF5_FILE_INFO_T defined below. */ +#define NC_CREAT 2 /* in create phase, cleared by ncendef */ +#define NC_INDEF 8 /* in define mode, cleared by ncendef */ +#define NC_NSYNC 0x10 /* synchronise numrecs on change */ +#define NC_HSYNC 0x20 /* synchronise whole header on change */ +#define NC_NDIRTY 0x40 /* numrecs has changed */ +#define NC_HDIRTY 0x80 /* header info has changed */ + +/* This is the metadata we need to keep track of for each + netcdf-4/HDF5 file. */ +typedef struct NC_FILE_INFO +{ + NC* controller; +#ifdef USE_PARALLEL4 + MPI_Comm comm; /* Copy of MPI Communicator used to open the file */ + MPI_Info info; /* Copy of MPI Information Object used to open the file */ +#endif + int flags; + int cmode; + nc_bool_t parallel; /* True if file is open for parallel access */ + nc_bool_t redef; /* True if redefining an existing file */ + int fill_mode; /* Fill mode for vars - Unused internally currently */ + nc_bool_t no_write; /* true if nc_open has mode NC_NOWRITE. */ + NC_GRP_INFO_T *root_grp; + /* Track indices to assign to grps, types, and dims */ + short next_nc_grpid; + int next_typeid; + int next_dimid; + /* Provide convenience vectors indexed by the object id. + This allows for direct conversion of e.g. an nc_type to + the corresponding NC_TYPE_INFO_T object. + */ + NClist* alldims; + NClist* alltypes; + NClist* allgroups; /* including root group */ + void *format_file_info; + struct NCPROVENANCE* provenance; + struct NC4_Memio { + NC_memio memio; /* What we sent to image_init and what comes back*/ + int locked; /* do not copy and do not free */ + int persist; /* Should file be persisted out on close? */ + int inmemory; /* NC_INMEMORY flag was set */ + int diskless; /* NC_DISKLESS flag was set => inmemory */ + int created; /* 1 => create, 0 => open */ + unsigned int imageflags; /* for H5LTopen_file_image */ + size_t initialsize; + void* udata; /* extra memory allocated in NC4_image_init */ + } mem; +} NC_FILE_INFO_T; + +extern char* nc4_atomic_name[NC_MAX_ATOMIC_TYPE+1]; + +/* These functions convert between netcdf and HDF5 types. */ +int nc4_get_typelen_mem(NC_FILE_INFO_T *h5, nc_type xtype, size_t *len); +int nc4_convert_type(const void *src, void *dest, const nc_type src_type, + const nc_type dest_type, const size_t len, int *range_error, + const void *fill_value, int strict_nc3); + +/* These functions do HDF5 things. */ +int rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid); +int delete_existing_dimscale_dataset(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T *dim); +int nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset); +int nc4_put_vars(NC *nc, int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t* stridep, + nc_type xtype, void *op); +int nc4_get_vars(NC *nc, int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t* stridep, + nc_type xtype, void *op); +int nc4_rec_match_dimscales(NC_GRP_INFO_T *grp); +int nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp); +int nc4_rec_write_metadata(NC_GRP_INFO_T *grp, nc_bool_t bad_coord_order); +int nc4_rec_write_groups_types(NC_GRP_INFO_T *grp); +int nc4_enddef_netcdf4_file(NC_FILE_INFO_T *h5); +int nc4_reopen_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var); +int nc4_adjust_var_cache(NC_GRP_INFO_T *grp, NC_VAR_INFO_T * var); +int nc4_read_atts(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var); + +/* Find items in the in-memory lists of metadata. */ +int nc4_find_nc_grp_h5(int ncid, NC **nc, NC_GRP_INFO_T **grp, + NC_FILE_INFO_T **h5); +int nc4_find_grp_h5(int ncid, NC_GRP_INFO_T **grp, NC_FILE_INFO_T **h5); +int nc4_find_nc4_grp(int ncid, NC_GRP_INFO_T **grp); +int nc4_find_dim(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T **dim, + NC_GRP_INFO_T **dim_grp); +int nc4_find_var(NC_GRP_INFO_T *grp, const char *name, NC_VAR_INFO_T **var); +int nc4_find_dim_len(NC_GRP_INFO_T *grp, int dimid, size_t **len); +int nc4_find_type(const NC_FILE_INFO_T *h5, int typeid1, NC_TYPE_INFO_T **type); +NC_TYPE_INFO_T *nc4_rec_find_hdf_type(NC_FILE_INFO_T* h5, + hid_t target_hdf_typeid); +NC_TYPE_INFO_T *nc4_rec_find_named_type(NC_GRP_INFO_T *start_grp, char *name); +NC_TYPE_INFO_T *nc4_rec_find_equal_type(NC_GRP_INFO_T *start_grp, int ncid1, + NC_TYPE_INFO_T *type); +int nc4_find_nc_att(int ncid, int varid, const char *name, int attnum, + NC_ATT_INFO_T **att); +int nc4_find_grp_h5_var(int ncid, int varid, NC_FILE_INFO_T **h5, + NC_GRP_INFO_T **grp, NC_VAR_INFO_T **var); +int nc4_find_grp_att(NC_GRP_INFO_T *grp, int varid, const char *name, + int attnum, NC_ATT_INFO_T **att); +int nc4_get_hdf_typeid(NC_FILE_INFO_T *h5, nc_type xtype, + hid_t *hdf_typeid, int endianness); +int nc4_get_typeclass(const NC_FILE_INFO_T *h5, nc_type xtype, + int *type_class); + +/* Free various types */ +int nc4_type_free(NC_TYPE_INFO_T *type); + +/* These list functions add and delete vars, atts. */ +int nc4_nc4f_list_add(NC *nc, const char *path, int mode); +void nc4_file_list_del(NC *nc); +int nc4_var_list_add(NC_GRP_INFO_T* grp, const char* name, int ndims, NC_VAR_INFO_T **var); +int nc4_var_list_add2(NC_GRP_INFO_T* grp, const char* name, NC_VAR_INFO_T **var); +int nc4_var_set_ndims(NC_VAR_INFO_T *var, int ndims); +int nc4_var_list_del(NC_GRP_INFO_T* grp, NC_VAR_INFO_T *var); +int nc4_dim_list_add(NC_GRP_INFO_T* grp, const char* name, size_t len, int assignedid, NC_DIM_INFO_T **dim); +int nc4_dim_list_del(NC_GRP_INFO_T* grp, NC_DIM_INFO_T *dim); +int nc4_type_new(NC_GRP_INFO_T *grp, size_t size, const char *name, int assignedid, NC_TYPE_INFO_T **type); +int nc4_type_list_add(NC_GRP_INFO_T *grp, size_t size, const char *name, NC_TYPE_INFO_T **type); +int nc4_type_list_del(NC_GRP_INFO_T* grp, NC_TYPE_INFO_T *type); +int nc4_type_free(NC_TYPE_INFO_T *type); +int nc4_field_list_add(NC_TYPE_INFO_T* parent, const char *name, + size_t offset, hid_t field_hdf_typeid, hid_t native_typeid, + nc_type xtype, int ndims, const int *dim_sizesp); +int nc4_att_list_add(NCindex* list, const char* name, NC_ATT_INFO_T **att); +int nc4_att_list_del(NCindex* list, NC_ATT_INFO_T *att); +int nc4_grp_list_add(NC_FILE_INFO_T *h5, NC_GRP_INFO_T *parent, char *name, NC_GRP_INFO_T **grp); +int nc4_build_root_grp(NC_FILE_INFO_T* h5); +int nc4_rec_grp_del(NC_GRP_INFO_T *grp); +int nc4_enum_member_add(NC_TYPE_INFO_T *type, size_t size, + const char *name, const void *value); + +/* Break & reform coordinate variables */ +int nc4_break_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T *dim); +int nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T *dim); + +/* Check and normalize names. */ +int NC_check_name(const char *name); +int nc4_check_name(const char *name, char *norm_name); +int nc4_normalize_name(const char *name, char *norm_name); +int nc4_check_dup_name(NC_GRP_INFO_T *grp, char *norm_name); + +/* Find default fill value. */ +int nc4_get_default_fill_value(const NC_TYPE_INFO_T *type_info, void *fill_value); + +/* Close the file. */ +int nc4_close_hdf5_file(NC_FILE_INFO_T *h5, int abort, NC_memio *memio); +int nc4_close_netcdf4_file(NC_FILE_INFO_T *h5, int abort, NC_memio *memio); + +/* HDF5 initialization/finalization */ +extern int nc4_hdf5_initialized; +extern void nc4_hdf5_initialize(void); +extern void nc4_hdf5_finalize(void); + +/* This is only included if --enable-logging is used for configure; it + prints info about the metadata to stderr. */ +#ifdef LOGGING +int log_metadata_nc(NC_FILE_INFO_T *h5); +#endif + +/* Define accessors for the dispatchdata */ +#define NC4_DATA(nc) ((NC_FILE_INFO_T*)(nc)->dispatchdata) +#define NC4_DATA_SET(nc,data) ((nc)->dispatchdata = (void*)(data)) + +/* Reserved Attributes Info */ +typedef struct NC_reservedatt { + const char* name; + int flags; +} NC_reservedatt; + +/* Reserved attribute flags: must be powers of 2*/ +/* Hidden dimscale-related, per-variable attributes; immutable and unreadable thru API */ +#define DIMSCALEFLAG 1 +/* Readonly global attributes; readable, but immutable thru the API */ +#define READONLYFLAG 2 +/* Subset of readonly flags; readable by name only thru the API */ +#define NAMEONLYFLAG 4 +/* Subset of readonly flags; Value is actually in file */ +#define MATERIALIZEDFLAG 8 + +/* Binary searcher for reserved attributes */ +extern const NC_reservedatt* NC_findreserved(const char* name); + +/* Generic reserved Attributes */ +#define NC_ATT_REFERENCE_LIST "REFERENCE_LIST" +#define NC_ATT_CLASS "CLASS" +#define NC_ATT_DIMENSION_LIST "DIMENSION_LIST" +#define NC_ATT_NAME "NAME" +#define NC_ATT_COORDINATES COORDINATES /*defined above*/ +#define NC_ATT_FORMAT "_Format" + +/**************************************************/ +/** +For netcdf4 files, capture state information about the following: +1. Global: netcdf library version +2. Global: hdf5 library version +3. Per file: superblock version +4. Per File: was it created by netcdf-4? +5. Per file: _NCProperties attribute +*/ + +/* Most of this needs to be moved to hdf5internal.h */ + +#define NCPROPS "_NCProperties" +#define NCPVERSION "version" /* Of the properties format */ +#define NCPHDF5LIB1 "hdf5libversion" +#define NCPNCLIB1 "netcdflibversion" +#define NCPHDF5LIB2 "hdf5" +#define NCPNCLIB2 "netcdf" +#define NCPROPS_VERSION (2) +/* Version 2 changes this because '|' was causing bash problems */ +#define NCPROPSSEP1 '|' +#define NCPROPSSEP2 ',' + + +/* Other hidden attributes */ +#define ISNETCDF4ATT "_IsNetcdf4" +#define SUPERBLOCKATT "_SuperblockVersion" + +struct NCPROVENANCE { + int superblockversion; + struct NCPROPINFO { + int version; /* 0 => not defined */ + /* Following is filled from NCPROPS attribute or from global version */ + /* Version 1 format is: + "netcdflibversion=" + Version 2 format is: + "==...|=..." + */ + /* The _NCProperties values are stored as an arbitrary + set of (key,value) pairs */ + /* It is assumed that the first entry is the primary library + used to build the file, and it is followed by other libraries + used in the build, and finally an arbitrary list of other + (key,value) pairs. */ + NClist* properties; + } propattr; +}; + +/* Provenance Initialization */ +extern struct NCPROPINFO globalpropinfo; + +/* Initialize the fileinfo global state */ +extern int NC4_provenance_init(); + +/* Finalize the fileinfo global state */ +extern int NC4_provenance_finalize(); + +/* Write the properties attribute to file. */ +extern int NC4_put_ncproperties(NC_FILE_INFO_T* file); + +/* Extract the provenance from a file, using dfalt as default */ +extern int NC4_get_provenance(NC_FILE_INFO_T* file, const char* propstring, const struct NCPROPINFO* dfalt); + +/* Set the provenance for a created file using dfalt as default */ +extern int NC4_set_provenance(NC_FILE_INFO_T* file, const struct NCPROPINFO* dfalt); + +/* Recover memory of an NCPROVENANCE object */ +extern int NC4_free_provenance(struct NCPROVENANCE* prov); + +extern int NC4_hdf5get_libversion(unsigned*,unsigned*,unsigned*);/*libsrc4/nc4hdf.c*/ +extern int NC4_hdf5get_superblock(struct NC_FILE_INFO*, int*);/*libsrc4/nc4hdf.c*/ +extern int NC4_isnetcdf4(struct NC_FILE_INFO*); /*libsrc4/nc4hdf.c*/ + +/* Convert a NCPROPINFO instance to a single string. */ +extern int NC4_buildpropinfo(struct NCPROPINFO* info, char** propdatap); + +/* Use HDF5 API to read the _NCProperties attribute */ +extern int NC4_read_ncproperties(NC_FILE_INFO_T*); + +/* Use HDF5 API to write the _NCProperties attribute */ +extern int NC4_write_ncproperties(NC_FILE_INFO_T*); + +#endif /* _NC4INTERNAL_ */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nc_logging.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc_logging.h new file mode 100644 index 00000000000..c4735b71f6d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc_logging.h @@ -0,0 +1,71 @@ +/* Copyright 2010, University Corporation for Atmospheric Research. See + COPYRIGHT file for copying and redistribution conditions. */ +/** + * @file @internal This file is part of netcdf-4, a netCDF-like + * interface for HDF5, or a HDF5 backend for netCDF, depending on your + * point of view. + * + * This file contains macros and prototyes relating to logging. + * + * @author Ed Hartnett +*/ + +#ifndef _NCLOGGING_ +#define _NCLOGGING_ + +#include +#include + +#ifdef LOGGING + +/* To log something... */ +void nc_log(int severity, const char *fmt, ...); +void nc_log_hdf5(void); + +#define LOG(e) nc_log e + +/* To log based on error code, and set retval. */ +#define BAIL2(e) \ + do { \ + retval = e; \ + LOG((0, "file %s, line %d.\n%s", __FILE__, __LINE__, nc_strerror(e))); \ + nc_log_hdf5(); \ + } while (0) + +/* To set retval and jump to exit, without logging error message. */ +#define BAIL_QUIET(e) \ + do { \ + retval = e; \ + goto exit; \ + } while (0) + +#else /* LOGGING */ + +/* These definitions will be used unless LOGGING is defined. */ +#define LOG(e) + +#define BAIL2(e) \ + do { \ + retval = e; \ + } while (0) + +#define BAIL_QUIET BAIL + +#ifdef USE_NETCDF_4 +#ifndef ENABLE_SET_LOG_LEVEL +/* Define away any calls to nc_set_log_level(), if its not enabled. */ +#define nc_set_log_level(e) +#endif /* ENABLE_SET_LOG_LEVEL */ +#endif + +#endif /* LOGGING */ + +/* To log an error message (if 'LOGGING' is defined), set retval, and jump to exit. */ +#define BAIL(e) \ + do { \ + BAIL2(e); \ + goto exit; \ + } while (0) + +#endif /* _NCLOGGING_ */ + diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nc_tests.h b/contrib/netcdf/netcdf-c-4.6.2/include/nc_tests.h new file mode 100644 index 00000000000..bca0ec1290b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nc_tests.h @@ -0,0 +1,54 @@ +/* This is part of the netCDF package. Copyright 2005 University + * Corporation for Atmospheric Research/Unidata. See \ref copyright + * file for conditions of use. */ +/** @internal @file + * + * Common includes, defines, etc., for test code in the libsrc4 and + * nc_test4 directories. + * + * @author Ed Hartnett, Denis Heimbigner, Ward Fisher +*/ + +#ifndef _NC_TESTS_H +#define _NC_TESTS_H + +#include "config.h" +#include +#include +#include +#include +#include "nc_logging.h" +#ifdef USE_PARALLEL +#include "netcdf_par.h" +#endif +#include "netcdf.h" + +/** NC_MAX_DIMS for tests. Allows different NC_MAX_DIMS values + * without breaking this test with a heap or stack overflow. */ +#define NC_TESTS_MAX_DIMS 1024 + +#define MAX_NUM_FORMATS 5 /**< Max number of available binary formats. */ + +/** Useful define for tests. */ +/** \{ */ +#define MEGABYTE 1048576 +#define HALF_MEG (MEGABYTE/2) +#define MILLION 1000000 +#define SIXTEEN_MEG 16777216 +#define FOUR_MEG (SIXTEEN_MEG/4) +#define THIRTY_TWO_MEG (SIXTEEN_MEG * 2) +#define SIXTY_FOUR_MEG (SIXTEEN_MEG * 4) +#define ONE_TWENTY_EIGHT_MEG (SIXTEEN_MEG * 8) +#define TEST_VAL_42 42 +#define BAD_NAME "dd//d/ " +#define NUM_CLASSIC_TYPES 6 +#define NUM_NETCDF_TYPES 12 +/** \} */ + +#ifdef USE_PNETCDF +#define TEST_PNETCDF 1 +#else +#undef TEST_PNETCDF +#endif + +#endif /* _NC_TESTS_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncauth.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncauth.h new file mode 100644 index 00000000000..a3087eb8f6d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncauth.h @@ -0,0 +1,58 @@ +/* +Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +See LICENSE.txt for license information. +*/ + +/* +Common authorization tracking. +Currently for DAP2 and DAP4 protocols. +Every curl connection will need a copy of this. +*/ + +#ifndef NCAUTH_H +#define NCAUTH_H + +/* Need these support includes */ +#include "ncrc.h" + +typedef struct NCauth { + struct curlflags { + int proto_https; /* is https: supported? */ + int compress; /*CURLOPT_ENCODING*/ + int verbose; /*CURLOPT_ENCODING*/ + int timeout; /*CURLOPT_TIMEOUT*/ + int maxredirs; /*CURLOPT_MAXREDIRS*/ + char* useragent; /*CURLOPT_USERAGENT*/ + int cookiejarcreated; + char* cookiejar; /*CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE*/ + char* netrc; /*CURLOPT_NETRC,CURLOPT_NETRC_FILE*/ + } curlflags; + struct ssl { + int verifypeer; /* CURLOPT_SSL_VERIFYPEER; + do not do this when cert might be self-signed + or temporarily incorrect */ + int verifyhost; /* CURLOPT_SSL_VERIFYHOST; for client-side verification */ + char* certificate; /*CURLOPT_SSLCERT*/ + char* key; /*CURLOPT_SSLKEY*/ + char* keypasswd; /*CURLOPT_SSLKEYPASSWD*/ + char* cainfo; /* CURLOPT_CAINFO; certificate authority */ + char* capath; /*CURLOPT_CAPATH*/ + } ssl; + struct proxy { + char *host; /*CURLOPT_PROXY*/ + int port; /*CURLOPT_PROXYPORT*/ + char* user; /*CURLOPT_PROXYUSERNAME*/ + char* pwd; /*CURLOPT_PROXYPASSWORD*/ + } proxy; + struct credentials { + char *user; /*CURLOPT_USERNAME*/ + char *pwd; /*CURLOPT_PASSWORD*/ + } creds; +} NCauth; + +extern int NC_authsetup(NCauth*, NCURI*); +extern void NC_authclear(NCauth*); +extern char* NC_combinehostport(NCURI*); +extern int NC_parsecredentials(const char* userpwd, char** userp, char** pwdp); + +#endif /*NCAUTH_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncbytes.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncbytes.h new file mode 100644 index 00000000000..824f7c70be9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncbytes.h @@ -0,0 +1,65 @@ +/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. + See the COPYRIGHT file for more information. */ + +#ifndef NCBYTES_H +#define NCBYTES_H 1 + +#include "ncexternl.h" + +typedef struct NCbytes { + int nonextendible; /* 1 => fail if an attempt is made to extend this buffer*/ + unsigned long alloc; + unsigned long length; + char* content; +} NCbytes; + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +extern "C" { +#endif + +EXTERNL NCbytes* ncbytesnew(void); +EXTERNL void ncbytesfree(NCbytes*); +EXTERNL int ncbytessetalloc(NCbytes*,unsigned long); +EXTERNL int ncbytessetlength(NCbytes*,unsigned long); +EXTERNL int ncbytesfill(NCbytes*, char fill); + +/* Produce a duplicate of the contents*/ +EXTERNL char* ncbytesdup(NCbytes*); +/* Extract the contents and leave buffer empty */ +EXTERNL char* ncbytesextract(NCbytes*); + +/* Return the ith byte; -1 if no such index */ +EXTERNL int ncbytesget(NCbytes*,unsigned long); +/* Set the ith byte */ +EXTERNL int ncbytesset(NCbytes*,unsigned long,char); + +/* Append one byte */ +EXTERNL int ncbytesappend(NCbytes*,char); /* Add at Tail */ +/* Append n bytes */ +EXTERNL int ncbytesappendn(NCbytes*,const void*,unsigned long); /* Add at Tail */ + +/* Null terminate the byte string without extending its length (for debugging) */ +EXTERNL int ncbytesnull(NCbytes*); + +/* Remove char at position i */ +EXTERNL int ncbytesremove(NCbytes*,unsigned long); + +/* Concatenate a null-terminated string to the end of the buffer */ +EXTERNL int ncbytescat(NCbytes*,const char*); + +/* Set the contents of the buffer; mark the buffer as non-extendible */ +EXTERNL int ncbytessetcontents(NCbytes*, char*, unsigned long); + +/* Following are always "in-lined"*/ +#define ncbyteslength(bb) ((bb)!=NULL?(bb)->length:0) +#define ncbytesalloc(bb) ((bb)!=NULL?(bb)->alloc:0) +#define ncbytescontents(bb) (((bb)!=NULL && (bb)->content!=NULL)?(bb)->content:(char*)"") +#define ncbytesextend(bb,len) ncbytessetalloc((bb),(len)+(bb->alloc)) +#define ncbytesclear(bb) ((bb)!=NULL?(bb)->length=0:0) +#define ncbytesavail(bb,n) ((bb)!=NULL?((bb)->alloc - (bb)->length) >= (n):0) + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +} +#endif + +#endif /*NCBYTES_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncconfigure.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncconfigure.h new file mode 100644 index 00000000000..0e00727bb98 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncconfigure.h @@ -0,0 +1,88 @@ +/* + * Copyright 2010 University Corporation for Atmospheric + * Research/Unidata. See COPYRIGHT file for more info. + * + * This header file is for the parallel I/O functions of netCDF. + * + */ +/* "$Id: netcdf_par.h,v 1.1 2010/06/01 15:46:49 ed Exp $" */ + +#ifndef NCCONFIGURE_H +#define NCCONFIGURE_H 1 + +#ifdef HAVE_STDLIB_H +#include +#endif + +/* +This is included in bottom +of config.h. It is where, +typically, alternatives to +missing functions should be +defined and missing types defined. +*/ + +#ifndef HAVE_STRDUP +extern char* strdup(const char*); +#endif + +/* +#ifndef HAVE_SSIZE_T +typedef long ssize_t; +#define HAVE_SSIZE_T +#endif +*/ +/* handle null arguments */ +#ifndef nulldup +#ifdef HAVE_STRDUP +#define nulldup(s) ((s)==NULL?NULL:strdup(s)) +#else +char *nulldup(const char* s); +#endif +#endif + +#ifdef _MSC_VER +#ifndef HAVE_SSIZE_T +#include +typedef SSIZE_T ssize_t; +#define HAVE_SSIZE_T 1 +#endif +#endif + +#ifndef HAVE_STRLCAT +#ifdef _MSC_VER +/* Windows strlcat_s is equivalent to strlcat, but different arg order */ +#define strlcat(d,s,n) strcat_s((d),(n),(s)) +#else +extern size_t strlcat(char* dst, const char* src, size_t dsize); +#endif +#endif + +#ifndef nulldup +#define nulldup(s) ((s)==NULL?NULL:strdup(s)) +#endif +#ifndef nulllen +#define nulllen(s) ((s)==NULL?0:strlen(s)) +#endif +#ifndef nullfree +#define nullfree(s) {if((s)!=NULL) {free(s);} else {}} +#endif + +#ifndef HAVE_UCHAR +typedef unsigned char uchar; +#endif + +#ifndef HAVE_LONGLONG +typedef long long longlong; +typedef unsigned long long ulonglong; +#endif + +#ifndef HAVE_USHORT +typedef unsigned short ushort; +#endif + +#ifndef HAVE_UINT +typedef unsigned int uint; +#endif + +#endif /* NCCONFIGURE_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncdap.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncdap.h new file mode 100644 index 00000000000..6dac5aa9f9f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncdap.h @@ -0,0 +1,60 @@ +/********************************************************************* + * Copyright 1993, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef NCDAP_H +#define NCDAP_H 1 + +#ifndef nullfree +#define nullfree(m) {if((m)!=NULL) {free(m);} else {}} +#endif + +/**************************************************/ +/* +Collect single bit flags that +affect the operation of the system. +*/ + +typedef unsigned int NCFLAGS; +# define SETFLAG(controls,flag) (((controls).flags) |= (flag)) +# define CLRFLAG(controls,flag) (((controls).flags) &= ~(flag)) +# define FLAGSET(controls,flag) (((controls.flags) & (flag)) != 0) + +/* Defined flags */ +#define NCF_NC3 (0x0001) /* DAP->netcdf-3 */ +#define NCF_NC4 (0x0002) /* DAP->netcdf-4 */ +#define NCF_NCDAP (0x0004) /* Do libnc-dap mimic */ +#define NCF_CACHE (0x0008) /* Cache enabled/disabled */ +#define NCF_UPGRADE (0x0010) /* Do proper type upgrades */ +#define NCF_UNCONSTRAINABLE (0x0020) /* Not a constrainable URL */ +#define NCF_SHOWFETCH (0x0040) /* show fetch calls */ +#define NCF_ONDISK (0x0080) /* cause oc to store data on disk */ +#define NCF_WHOLEVAR (0x0100) /* retrieve only whole variables (as opposed to partial variable) into cache */ +#define NCF_PREFETCH (0x0200) /* Cache prefetch enabled/disabled */ +#define NCF_PREFETCH_EAGER (0x0400) /* Do eager prefetch; 0=>lazy */ +#define NCF_PREFETCH_ALL (0x0800) /* Prefetch all variables */ +/* Allow _FillValue/Variable type mismatch */ +#define NCF_FILLMISMATCH (0x1000) +/*COLUMBIA_HACK*/ +#define NCF_COLUMBIA (0x80000000) /* Hack for columbia server */ + +/* Define all the default on flags */ +#define DFALT_ON_FLAGS (NCF_CACHE|NCF_PREFETCH) + +typedef struct NCCONTROLS { + NCFLAGS flags; +} NCCONTROLS; + +/* Misc. Constants */ + +#ifndef DFALTPACKETSIZE +#define DFALTPACKETSIZE 0x20000 /*approximately 100k bytes*/ +#endif + +#ifndef DFALTUSERAGENT +#define DFALTUSERAGENT "netCDF" +#endif + +#endif /*NCDAP_H*/ + diff --git a/contrib/netcdf/4.4.1.1/include/ncdimscale.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncdimscale.h similarity index 82% rename from contrib/netcdf/4.4.1.1/include/ncdimscale.h rename to contrib/netcdf/netcdf-c-4.6.2/include/ncdimscale.h index d0b1224c1ba..cd88d3ec323 100644 --- a/contrib/netcdf/4.4.1.1/include/ncdimscale.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncdimscale.h @@ -5,8 +5,15 @@ Includes for some HDF5 stuff needed by tests. */ +#ifndef _NCDIMSCALE_H_ +#define _NCDIMSCALE_H_ + +#include + typedef struct hdf5_objid { unsigned long fileno[2]; /* file number */ haddr_t objno[2]; /* object number */ } HDF5_OBJID_T; + +#endif diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncdispatch.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncdispatch.h new file mode 100644 index 00000000000..dad91f68370 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncdispatch.h @@ -0,0 +1,468 @@ +/********************************************************************* + * Copyright 2010, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +/* $Id: ncdispatch.h,v 1.18 2010/06/01 20:11:59 dmh Exp $ */ +/* $Header: /upc/share/CVS/netcdf-3/libdispatch/ncdispatch.h,v 1.18 2010/06/01 20:11:59 dmh Exp $ */ + +#ifndef _DISPATCH_H +#define _DISPATCH_H + +#if HAVE_CONFIG_H +#include "config.h" +#endif +#include +#include +#include +#include +#if defined(HDF5_PARALLEL) || defined(USE_PNETCDF) +#include +#endif +#include "netcdf.h" +#include "nc.h" +#include "ncuri.h" +#ifdef USE_PARALLEL +#include "netcdf_par.h" +#endif + +#define longtype ((sizeof(long) == sizeof(int) ? NC_INT : NC_INT64)) + +#define X_INT_MAX 2147483647 + +/* Given a filename, check its magic number */ +/* Change magic number size from 4 to 8 to be more precise for HDF5 */ +#define MAGIC_NUMBER_LEN ((size_t)8) +#define MAGIC_HDF5_FILE 1 +#define MAGIC_HDF4_FILE 2 +#define MAGIC_CDF1_FILE 1 /* std classic format */ +#define MAGIC_CDF2_FILE 2 /* classic 64 bit */ + +/* Define the mappings from fcn name types + to corresponding NC types. */ +#define T_text NC_CHAR +#define T_schar NC_BYTE +#define T_char NC_CHAR +#define T_short NC_SHORT +#define T_int NC_INT +#define T_float NC_FLOAT +#define T_double NC_DOUBLE +#define T_ubyte NC_UBYTE +#define T_ushort NC_USHORT +#define T_uint NC_UINT +#define T_longlong NC_INT64 +#define T_ulonglong NC_UINT64 +#ifdef USE_NETCDF4 +#define T_string NC_STRING +#endif + +/* Synthetic type to handle special memtypes */ +#define T_uchar NC_UBYTE +#define T_long longtype +#define T_ulong ulongtype + +/**************************************************/ +#if 0 +/* Define the known classes of dispatchers */ +/* Flags may be or'd => powers of 2*/ +#define NC_DISPATCH_NC3 1 +#define NC_DISPATCH_NC4 2 +#define NC_DISPATCH_NCD 4 +#define NC_DISPATCH_NCP 8 +#endif + +/* Define a type for use when doing e.g. nc_get_vara_long, etc. */ +/* Should matche values in libsrc4/netcdf.h */ +#ifndef NC_UINT64 +#define NC_UBYTE 7 /* unsigned 1 byte int */ +#define NC_USHORT 8 /* unsigned 2-byte int */ +#define NC_UINT 9 /* unsigned 4-byte int */ +#define NC_INT64 10 /* signed 8-byte int */ +#define NC_UINT64 11 /* unsigned 8-byte int */ +#define NC_STRING 12 /* char* */ +#endif + +/* Define the range of Atomic types */ +#define ATOMICTYPEMAX4 NC_STRING +#define ATOMICTYPEMAX3 NC_DOUBLE +#define ATOMICTYPEMAX5 NC_UINT64 + +/* Define an alias for int to indicate an error return */ +typedef int NCerror; + +#if !defined HDF5_PARALLEL && !defined USE_PNETCDF +typedef int MPI_Comm; +typedef int MPI_Info; +#define MPI_COMM_WORLD 0 +#define MPI_INFO_NULL 0 +#endif + +/* Define a struct to hold the MPI info so it can be passed down the + * call stack. This is used internally by the netCDF library. It + * should not be used by netcdf users. */ +typedef struct NC_MPI_INFO { + MPI_Comm comm; + MPI_Info info; +} NC_MPI_INFO; + +/* Define known dispatch tables and initializers */ + +/*Forward*/ +// typedef struct NC_Dispatch NC_Dispatch; + + +extern int NCDISPATCH_initialize(void); +extern int NCDISPATCH_finalize(void); + +extern NC_Dispatch* NC3_dispatch_table; +extern int NC3_initialize(void); +extern int NC3_finalize(void); + +#ifdef ENABLE_DAP +extern NC_Dispatch* NCD2_dispatch_table; +extern int NCD2_initialize(void); +extern int NCD2_finalize(void); +#endif +#ifdef ENABLE_DAP4 +extern NC_Dispatch* NCD4_dispatch_table; +extern int NCD4_initialize(void); +extern int NCD4_finalize(void); +#endif + +#ifdef USE_PNETCDF +extern NC_Dispatch* NCP_dispatch_table; +extern int NCP_initialize(void); +extern int NCP_finalize(void); +#endif + +#ifdef USE_NETCDF4 +extern NC_Dispatch* NC4_dispatch_table; +extern int NC4_initialize(void); +extern int NC4_finalize(void); +#endif + +#ifdef USE_HDF4 +extern NC_Dispatch* HDF4_dispatch_table; +extern int HDF4_initialize(void); +extern int HDF4_finalize(void); +#endif + +/* Vectors of ones and zeros */ +extern size_t nc_sizevector0[NC_MAX_VAR_DIMS]; +extern size_t nc_sizevector1[NC_MAX_VAR_DIMS]; +extern ptrdiff_t nc_ptrdiffvector1[NC_MAX_VAR_DIMS]; + +/* Prototypes. */ +int NC_check_nulls(int ncid, int varid, const size_t *start, size_t **count, + ptrdiff_t **stride); + +/**************************************************/ +/* Forward */ +#ifndef USE_NETCDF4 +/* Taken from libsrc4/netcdf.h */ +struct nc_vlen_t; +#define NC_NETCDF4 0x1000 +#define NC_CLASSIC_MODEL 0x0100 +#define NC_ENOPAR (-114) +#endif /*!USE_NETCDF4*/ + +struct NC; + + +int NC_create(const char *path, int cmode, + size_t initialsz, int basepe, size_t *chunksizehintp, + int useparallel, void *parameters, int *ncidp); +int NC_open(const char *path, int cmode, + int basepe, size_t *chunksizehintp, + int useparallel, void *parameters, int *ncidp); + +/* Expose the default vars and varm dispatch entries */ +EXTERNL int NCDEFAULT_get_vars(int, int, const size_t*, + const size_t*, const ptrdiff_t*, void*, nc_type); +EXTERNL int NCDEFAULT_put_vars(int, int, const size_t*, + const size_t*, const ptrdiff_t*, const void*, nc_type); +EXTERNL int NCDEFAULT_get_varm(int, int, const size_t*, + const size_t*, const ptrdiff_t*, const ptrdiff_t*, + void*, nc_type); +EXTERNL int NCDEFAULT_put_varm(int, int, const size_t*, + const size_t*, const ptrdiff_t*, const ptrdiff_t*, + const void*, nc_type); + +/**************************************************/ +/* Forward */ +struct NCHDR; + +struct NC_Dispatch { + +int model; /* one of the NC_FORMATX #'s */ + +int (*create)(const char *path, int cmode, + size_t initialsz, int basepe, size_t *chunksizehintp, + void* parameters, struct NC_Dispatch* table, NC* ncp); +int (*open)(const char *path, int mode, + int basepe, size_t *chunksizehintp, + void* parameters, struct NC_Dispatch* table, NC* ncp); + +int (*redef)(int); +int (*_enddef)(int,size_t,size_t,size_t,size_t); +int (*sync)(int); +int (*abort)(int); +int (*close)(int,void*); +int (*set_fill)(int,int,int*); +int (*inq_base_pe)(int,int*); +int (*set_base_pe)(int,int); +int (*inq_format)(int,int*); +int (*inq_format_extended)(int,int*,int*); + +int (*inq)(int,int*,int*,int*,int*); +int (*inq_type)(int, nc_type, char*, size_t*); + +int (*def_dim)(int, const char*, size_t, int*); +int (*inq_dimid)(int, const char*, int*); +int (*inq_dim)(int, int, char*, size_t*); +int (*inq_unlimdim)(int ncid, int *unlimdimidp); +int (*rename_dim)(int, int, const char*); + +int (*inq_att)(int, int, const char*, nc_type*, size_t*); +int (*inq_attid)(int, int, const char*, int*); +int (*inq_attname)(int, int, int, char*); +int (*rename_att)(int, int, const char*, const char*); +int (*del_att)(int, int, const char*); +int (*get_att)(int, int, const char*, void*, nc_type); +int (*put_att)(int, int, const char*, nc_type, size_t, const void*, nc_type); + +int (*def_var)(int, const char*, nc_type, int, const int*, int*); +int (*inq_varid)(int, const char*, int*); +int (*rename_var)(int, int, const char*); + +int (*get_vara)(int, int, const size_t*, const size_t*, void*, nc_type); +int (*put_vara)(int, int, const size_t*, const size_t*, const void*, nc_type); + +/* Added to solve Ferret performance problem with Opendap */ +int (*get_vars)(int, int, const size_t*, const size_t*, const ptrdiff_t*, void*, nc_type); +int (*put_vars)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const void*, nc_type); + +int (*get_varm)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const ptrdiff_t*, void*, nc_type); +int (*put_varm)(int, int, const size_t*, const size_t*, const ptrdiff_t*, const ptrdiff_t*, const void*, nc_type); + +int (*inq_var_all)(int ncid, int varid, char *name, nc_type *xtypep, + int *ndimsp, int *dimidsp, int *nattsp, + int *shufflep, int *deflatep, int *deflate_levelp, + int *fletcher32p, int *contiguousp, size_t *chunksizesp, + int *no_fill, void *fill_valuep, int *endiannessp, + unsigned int* idp, size_t* nparamsp, unsigned int* params + ); + +int (*var_par_access)(int, int, int); +int (*def_var_fill)(int, int, int, const void*); + +/* Note the following may still be invoked by netcdf client code + even when the file is a classic file; they will just return an error or + be ignored. +*/ +#ifdef USE_NETCDF4 +int (*show_metadata)(int); +int (*inq_unlimdims)(int, int*, int*); +int (*inq_ncid)(int, const char*, int*); +int (*inq_grps)(int, int*, int*); +int (*inq_grpname)(int, char*); +int (*inq_grpname_full)(int, size_t*, char*); +int (*inq_grp_parent)(int, int*); +int (*inq_grp_full_ncid)(int, const char*, int*); +int (*inq_varids)(int, int* nvars, int*); +int (*inq_dimids)(int, int* ndims, int*, int); +int (*inq_typeids)(int, int* ntypes, int*); +int (*inq_type_equal)(int, nc_type, int, nc_type, int*); +int (*def_grp)(int, const char*, int*); +int (*rename_grp)(int, const char*); +int (*inq_user_type)(int, nc_type, char*, size_t*, nc_type*, size_t*, int*); +int (*inq_typeid)(int, const char*, nc_type*); + +int (*def_compound)(int, size_t, const char*, nc_type*); +int (*insert_compound)(int, nc_type, const char*, size_t, nc_type); +int (*insert_array_compound)(int, nc_type, const char*, size_t, nc_type, int, const int*); +int (*inq_compound_field)(int, nc_type, int, char*, size_t*, nc_type*, int*, int*); +int (*inq_compound_fieldindex)(int, nc_type, const char*, int*); +int (*def_vlen)(int, const char*, nc_type base_typeid, nc_type*); +int (*put_vlen_element)(int, int, void*, size_t, const void*); +int (*get_vlen_element)(int, int, const void*, size_t*, void*); +int (*def_enum)(int, nc_type, const char*, nc_type*); +int (*insert_enum)(int, nc_type, const char*, const void*); +int (*inq_enum_member)(int, nc_type, int, char*, void*); +int (*inq_enum_ident)(int, nc_type, long long, char*); +int (*def_opaque)(int, size_t, const char*, nc_type*); +int (*def_var_deflate)(int, int, int, int, int); +int (*def_var_fletcher32)(int, int, int); +int (*def_var_chunking)(int, int, int, const size_t*); +int (*def_var_endian)(int, int, int); +int (*def_var_filter)(int, int, unsigned int, size_t, const unsigned int*); +int (*set_var_chunk_cache)(int, int, size_t, size_t, float); +int (*get_var_chunk_cache)(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp); +#endif /*USE_NETCDF4*/ + +}; + +/* Following functions must be handled as non-dispatch */ +#ifdef NONDISPATCH +void (*nc_advise)(const char*cdf_routine_name,interr,const char*fmt,...); +void (*nc_set_log_level)(int); +const char* (*nc_inq_libvers)(void); +const char* (*nc_strerror)(int); +int (*nc_delete)(const char*path); +int (*nc_delete_mp)(const char*path,intbasepe); +int (*nc_initialize)(); +int (*nc_finalize)(); +#endif /*NONDISPATCH*/ + +/* Define the common fields for NC and NC_FILE_INFO_T etc */ +typedef struct NCcommon { + int ext_ncid; /* uid << 16 */ + int int_ncid; /* unspecified other id */ + struct NC_Dispatch* dispatch; + void* dispatchdata; /* per-protocol instance data */ + char* path; /* as specified at open or create */ +} NCcommon; + +EXTERNL size_t NC_atomictypelen(nc_type xtype); +EXTERNL char* NC_atomictypename(nc_type xtype); + +#ifdef OBSOLETE +/* Provide a dispatch table overlay facility */ +extern int NC_dispatch_overlay(const NC_Dispatch* overlay, + const NC_Dispatch* base, + NC_Dispatch* merge); + +/* Get/set the override dispatch table */ +extern NC_Dispatch* NC_get_dispatch_override(void); +extern void NC_set_dispatch_override(NC_Dispatch*); +#endif + +/* Return model as specified by the url, if any; + return a modified url suitable for passing to curl +*/ +extern int NC_urlmodel(const char* path, int mode, char** newurl); + +/* allow access url parse and params without exposing nc_url.h */ +extern int NCDAP_urlparse(const char* s, void** dapurl); +extern void NCDAP_urlfree(void* dapurl); +extern const char* NCDAP_urllookup(void* dapurl, const char* param); + +#if defined(DLL_NETCDF) +# if defined(DLL_EXPORT) +# define NCC_EXTRA __declspec(dllexport) +#else +# define NCC_EXTRA __declspec(dllimport) +# endif +NCC_EXTRA extern int nc__testurl(const char* path, char** basename); +#else +extern int + nc__testurl(const char* parth, char** basename); +#endif + +/* Ping a specific server */ +extern int NCDAP2_ping(const char*); +extern int NCDAP4_ping(const char*); + +/* Misc */ + +extern int NC_getshape(int ncid, int varid, int ndims, size_t* shape); +extern int NC_is_recvar(int ncid, int varid, size_t* nrecs); +extern int NC_inq_recvar(int ncid, int varid, int* nrecdims, int* is_recdim); + +#define nullstring(s) (s==NULL?"(null)":s) + + +#undef TRACECALLS +#ifdef TRACECALLS +#include +#define TRACE(fname) fprintf(stderr,"call: %s\n",#fname) +#else +#define TRACE(fname) +#endif + +extern size_t NC_coord_zero[NC_MAX_VAR_DIMS]; +extern size_t NC_coord_one[NC_MAX_VAR_DIMS]; + +extern int NC_argc; +extern char* NC_argv[]; +extern int NC_initialized; + +/** +Certain functions are in the dispatch table, +but not in the netcdf.h API. These need to +be exposed for use in delegation such as +in libdap2. +*/ +EXTERNL int +NCDISPATCH_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, + int *ndimsp, int *dimidsp, int *nattsp, + int *shufflep, int *deflatep, int *deflate_levelp, + int *fletcher32p, int *contiguousp, size_t *chunksizesp, + int *no_fill, void *fill_valuep, int *endiannessp, + unsigned int* idp, size_t* nparamsp, unsigned int* paramsp + ); +EXTERNL int +NCDISPATCH_get_att(int ncid, int varid, const char* name, void* value, nc_type t); + +/* Read-only dispatch layers can use these functions to return + * NC_EPERM to all attempts to modify a file. */ + +EXTERNL int NC_RO_create(const char *path, int cmode, size_t initialsz, int basepe, + size_t *chunksizehintp, void* parameters, + NC_Dispatch*, NC*); +EXTERNL int NC_RO_redef(int ncid); +EXTERNL int NC_RO__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, + size_t r_align); +EXTERNL int NC_RO_sync(int ncid); +EXTERNL int NC_RO_def_var_fill(int, int, int, const void *); +EXTERNL int NC_RO_rename_att(int ncid, int varid, const char *name, + const char *newname); +EXTERNL int NC_RO_del_att(int ncid, int varid, const char*); +EXTERNL int NC_RO_put_att(int ncid, int varid, const char *name, nc_type datatype, + size_t len, const void *value, nc_type); +EXTERNL int NC_RO_def_var(int ncid, const char *name, + nc_type xtype, int ndims, const int *dimidsp, int *varidp); +EXTERNL int NC_RO_rename_var(int ncid, int varid, const char *name); +EXTERNL int NC_RO_put_vara(int ncid, int varid, + const size_t *start, const size_t *count, + const void *value, nc_type); +EXTERNL int NC_RO_def_dim(int ncid, const char *name, size_t len, int *idp); +EXTERNL int NC_RO_rename_dim(int ncid, int dimid, const char *name); +EXTERNL int NC_RO_set_fill(int ncid, int fillmode, int *old_modep); + +/* These functions are for dispatch layers that don't implement these + * legacy functions. They return NC_ENOTNC3. */ +EXTERNL int NC_NOTNC3_set_base_pe(int ncid, int pe); +EXTERNL int NC_NOTNC3_inq_base_pe(int ncid, int *pe); + +/* These functions are for dispatch layers that don't implement the + * enhanced model. They return NC_ENOTNC4. */ +EXTERNL int NC_NOTNC4_def_var_filter(int, int, unsigned int, size_t, + const unsigned int*); +EXTERNL int NC_NOTNC4_def_grp(int, const char *, int *); +EXTERNL int NC_NOTNC4_rename_grp(int, const char *); +EXTERNL int NC_NOTNC4_def_compound(int, size_t, const char *, nc_type *); +EXTERNL int NC_NOTNC4_insert_compound(int, nc_type, const char *, size_t, nc_type); +EXTERNL int NC_NOTNC4_insert_array_compound(int, nc_type, const char *, size_t, + nc_type, int, const int *); +EXTERNL int NC_NOTNC4_inq_typeid(int, const char *, nc_type *); +EXTERNL int NC_NOTNC4_inq_compound_field(int, nc_type, int, char *, size_t *, + nc_type *, int *, int *); +EXTERNL int NC_NOTNC4_inq_compound_fieldindex(int, nc_type, const char *, int *); +EXTERNL int NC_NOTNC4_def_vlen(int, const char *, nc_type base_typeid, nc_type *); +EXTERNL int NC_NOTNC4_put_vlen_element(int, int, void *, size_t, const void *); +EXTERNL int NC_NOTNC4_get_vlen_element(int, int, const void *, size_t *, void *); +EXTERNL int NC_NOTNC4_def_enum(int, nc_type, const char *, nc_type *); +EXTERNL int NC_NOTNC4_insert_enum(int, nc_type, const char *, const void *); +EXTERNL int NC_NOTNC4_inq_enum_member(int, nc_type, int, char *, void *); +EXTERNL int NC_NOTNC4_inq_enum_ident(int, nc_type, long long, char *); +EXTERNL int NC_NOTNC4_def_opaque(int, size_t, const char *, nc_type *); +EXTERNL int NC_NOTNC4_def_var_deflate(int, int, int, int, int); +EXTERNL int NC_NOTNC4_def_var_fletcher32(int, int, int); +EXTERNL int NC_NOTNC4_def_var_chunking(int, int, int, const size_t *); +EXTERNL int NC_NOTNC4_def_var_endian(int, int, int); +EXTERNL int NC_NOTNC4_set_var_chunk_cache(int, int, size_t, size_t, float); +EXTERNL int NC_NOTNC4_get_var_chunk_cache(int, int, size_t *, size_t *, float *); +EXTERNL int NC_NOTNC4_var_par_access(int, int, int); + +#endif /* _DISPATCH_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncexternl.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncexternl.h new file mode 100644 index 00000000000..e3e8e52c92c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncexternl.h @@ -0,0 +1,23 @@ +/********************************************************************* + * Copyright 2010, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + * $Header$ + *********************************************************************/ + +#ifndef NCEXTERNL_H +#define NCEXTERNL_H + +#if defined(DLL_NETCDF) /* define when library is a DLL */ +# if defined(DLL_EXPORT) /* define when building the library */ +# define MSC_EXTRA __declspec(dllexport) +# else +# define MSC_EXTRA __declspec(dllimport) +# endif +#else +# define MSC_EXTRA +#endif /* defined(DLL_NETCDF) */ +#ifndef EXTERNL +# define EXTERNL MSC_EXTRA extern +#endif + +#endif /*NCEXTERNL_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncfilter.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncfilter.h new file mode 100644 index 00000000000..17806e71423 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncfilter.h @@ -0,0 +1,27 @@ +/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. + See the COPYRIGHT file for more information. */ + +#ifndef NCFILTER_H +#define NCFILTER_H 1 + +/* API for libdispatch/dfilter.c */ + +/* Must match values in */ +#ifndef H5Z_FILTER_SZIP +#define H5Z_FILTER_SZIP 4 +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Provide consistent filter spec parser */ +EXTERNL int NC_parsefilterspec(const char* spec, unsigned int* idp, size_t* nparamsp, unsigned int** paramsp); + +EXTERNL void NC_byteswap8(unsigned char* mem); + +#if defined(__cplusplus) +} +#endif + +#endif /* NCFILTER_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nchashmap.h b/contrib/netcdf/netcdf-c-4.6.2/include/nchashmap.h new file mode 100644 index 00000000000..8f6e8ecddc1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nchashmap.h @@ -0,0 +1,93 @@ +/********************************************************************* + * Copyright 1993, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + * $Header$ + *********************************************************************/ +#ifndef NCHASHMAP_H +#define NCHASHMAP_H + +/* +This hashmap is optimized to assume null-terminated strings as the +key. + +Data is presumed to be an index into some other table Assume it +can be compared using simple == The key is some hash of some +null terminated string. + +One problem here is that we need to do a final equality check on +the name string to avoid an accidental hash collision. It would +be nice if we had a large enough hashkey that was known to have +an extremely low probability of collisions so we could compare +the hashkeys to determine exact match. A quick internet search +indicates that this is rather more tricky than just using +e.g. crc64 or such. Needs some thought. +*/ + +/*! Hashmap-related structs. + NOTES: + 1. 'data' is the an arbitrary uintptr_t integer or void* pointer. + 2. hashkey is a crc32 hash of key + + WARNINGS: + 1. It is critical that |uintptr_t| == |void*| +*/ + +typedef struct NC_hentry { + int flags; + uintptr_t data; + unsigned int hashkey; /* Hash id */ + size_t keysize; + char* key; /* copy of the key string; kept as unsigned char */ +} NC_hentry; + +/* +The hashmap object must give us the hash table (table), +the |table| size, and the # of defined entries in the table +*/ +typedef struct NC_hashmap { + size_t alloc; /* allocated # of entries */ + size_t active; /* # of active entries */ + NC_hentry* table; +} NC_hashmap; + +/* defined in nchashmap.c */ + +/* +There are two "kinds" of functions: +1. those that take the key+size -- they compute the hashkey internally. +2. those that take the hashkey directly +*/ + +/** Creates a new hashmap near the given size. */ +extern NC_hashmap* NC_hashmapnew(size_t startsize); + +/** Inserts a new element into the hashmap; takes key+size */ +/* key points to size bytes to convert to hash key */ +extern int NC_hashmapadd(NC_hashmap*, uintptr_t data, const char* key, size_t keysize); + +/** Removes the storage for the element of the key; takes key+size. + Return 1 if found, 0 otherwise; returns the data in datap if !null +*/ +extern int NC_hashmapremove(NC_hashmap*, const char* key, size_t keysize, uintptr_t* datap); + +/** Returns the data for the key; takes key+size. + Return 1 if found, 0 otherwise; returns the data in datap if !null +*/ +extern int NC_hashmapget(NC_hashmap*, const char* key, size_t keysize, uintptr_t* datap); + +/** Change the data for the specified key; takes hashkey. + Return 1 if found, 0 otherwise +*/ +extern int NC_hashmapsetdata(NC_hashmap*, const char* key, size_t keylen, uintptr_t newdata); + +/** Returns the number of saved elements. */ +extern size_t NC_hashmapcount(NC_hashmap*); + +/** Reclaims the hashmap structure. */ +extern int NC_hashmapfree(NC_hashmap*); + +/* Return the hash key for specified key; takes key+size*/ +extern unsigned int NC_hashmapkey(const char* key, size_t size); + +#endif /*NCHASHMAP_H*/ + diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncindex.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncindex.h new file mode 100644 index 00000000000..5e83390acc6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncindex.h @@ -0,0 +1,110 @@ +/* +Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +See LICENSE.txt for license information. +*/ + +#ifndef NCINDEX_H +#define NCINDEX_H + +/* If defined, then the hashmap is used. + This for performance experimentation +*/ +#undef NCNOHASH + +#undef NCINDEXDEBUG + +#include "nclist.h" +#include "nchashmap.h" /* Also includes name map and id map */ + +/* Forward (see nc4internal.h)*/ +struct NC_OBJ; + +/* +This index data structure is an ordered list of objects. It is +used pervasively in libsrc4 to store metadata relationships. +The goal is to provide by-name and i'th indexed access (via +NClist) to the objects in the index. Using NCindex might be +overkill for some relationships, but we can sort that out later. +As a rule, we use this to store definitional relationships such +as (in groups) dimension definitions, variable definitions, type +defs and subgroup defs. We do not, as a rule, use this to store +reference relationships such as the list of dimensions for a +variable. + +See docs/indexind.dox for more detailed documentation + +*/ + +/* Generic list + matching hashtable */ +typedef struct NCindex { + NClist* list; +#ifndef NCNOHASH + NC_hashmap* map; +#endif +} NCindex; + +/* Locate object by name in an NCindex */ +extern struct NC_OBJ* ncindexlookup(NCindex* index, const char* name); + +/* Get ith object in the index vector */ +extern struct NC_OBJ* ncindexith(NCindex* index, size_t i); + +/* See if x is contained in the index and return its vector permission*/ +extern int ncindexfind(NCindex* index, struct NC_OBJ* o); + +/* Add object to the end of the vector, also insert into the hashmaps; */ +/* Return 1 if ok, 0 otherwise.*/ +extern int ncindexadd(NCindex* index, struct NC_OBJ* obj); + +/* Insert object at ith position of the vector, also insert into the hashmaps; */ +/* Return 1 if ok, 0 otherwise.*/ +extern int ncindexset(NCindex* index, size_t i, struct NC_OBJ* obj); + +/* Get a copy of the vector contents */ +extern struct NC_OBJ** ncindexdup(NCindex* index); + +/* Count the non-null entries in an NCindex */ +extern int ncindexcount(NCindex* index); + +/* Rebuild index using all objects in the vector */ +/* Return 1 if ok, 0 otherwise.*/ +extern int ncindexrebuild(NCindex* index); + +/* "Remove" ith object from the index; + WARNING: Replaces it with NULL in the list. +*/ +/* Return 1 if ok, 0 otherwise.*/ +extern int ncindexidel(NCindex* index,size_t i); + +/* Free an index. */ +/* Return 1 if ok; 0 otherwise */ +extern int ncindexfree(NCindex* index); + +/* Create an index: size == 0 => use defaults */ +/* Return index if ok; NULL otherwise */ +extern NCindex* ncindexnew(size_t initsize); + +extern int ncindexverify(NCindex* lm, int dump); + +/* Lookup object in index; return NULL if not found */ +extern struct NC_OBJ* ncindexlookup(NCindex*, const char* name); + +/* Inline functions */ + +/* Test if index has been initialized */ +#define ncindexinitialized(index) ((index) != NULL && (index)->list != NULL) + +/* Get number of entries in an index */ +#ifdef NCINDEXDEBUG +static int ncindexsize(NCindex* index) +{ + int i; + if(index == NULL) return 0; + i = nclistlength(index->list); + return i; +} +#else +#define ncindexsize(index) ((index)==NULL?0:(nclistlength((index)->list))) +#endif + +#endif /*ncindexH*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nclist.h b/contrib/netcdf/netcdf-c-4.6.2/include/nclist.h new file mode 100644 index 00000000000..a47ba401c1d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nclist.h @@ -0,0 +1,67 @@ +/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. + See the COPYRIGHT file for more information. */ +#ifndef NCLIST_H +#define NCLIST_H 1 + +/* Define the type of the elements in the list*/ + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) +extern "C" { +#endif + +extern int nclistnull(void*); + +typedef struct NClist { + size_t alloc; + size_t length; + void** content; +} NClist; + +extern NClist* nclistnew(void); +extern int nclistfree(NClist*); +extern int nclistfreeall(NClist*); +extern int nclistsetalloc(NClist*,size_t); +extern int nclistsetlength(NClist*,size_t); + +/* Set the ith element; will overwrite previous contents; expand if needed */ +extern int nclistset(NClist*,size_t,void*); +/* Get value at position i */ +extern void* nclistget(NClist*,size_t);/* Return the ith element of l */ +/* Insert at position i; will push up elements i..|seq|. */ +extern int nclistinsert(NClist*,size_t,void*); +/* Remove element at position i; will move higher elements down */ +extern void* nclistremove(NClist* l, size_t i); + +/* Tail operations */ +extern int nclistpush(NClist*,void*); /* Add at Tail */ +extern void* nclistpop(NClist*); +extern void* nclisttop(NClist*); + +/* Duplicate and return the content (null terminate) */ +extern void** nclistdup(NClist*); + +/* Look for value match */ +extern int nclistcontains(NClist*, void*); + +/* Remove element by value; only removes first encountered */ +extern int nclistelemremove(NClist* l, void* elem); + +/* remove duplicates */ +extern int nclistunique(NClist*); + +/* Create a clone of a list */ +extern NClist* nclistclone(NClist*); + +extern void* nclistextract(NClist*); + +/* Following are always "in-lined"*/ +#define nclistclear(l) nclistsetlength((l),0) +#define nclistextend(l,len) nclistsetalloc((l),(len)+(l->alloc)) +#define nclistcontents(l) ((l)==NULL?NULL:(l)->content) +#define nclistlength(l) ((l)==NULL?0:(l)->length) + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) +} +#endif + +#endif /*NCLIST_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nclog.h b/contrib/netcdf/netcdf-c-4.6.2/include/nclog.h new file mode 100644 index 00000000000..dd9fe85cea3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nclog.h @@ -0,0 +1,43 @@ +/********************************************************************* + * Copyright 2010, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + * $Header$ + *********************************************************************/ + +#ifndef NCLOG_H +#define NCLOG_H + +#include +#include "ncexternl.h" + +#define NCENVFLAG "NCLOGFILE" + +/* Suggested tag values */ +#define NCLOGNOTE 0 +#define NCLOGWARN 1 +#define NCLOGERR 2 +#define NCLOGDBG 3 + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) +extern "C" { +#endif + +EXTERNL void ncloginit(void); +EXTERNL int ncsetlogging(int tf); +EXTERNL int nclogopen(const char* file); +EXTERNL void nclogclose(void); + +/* The tag value is an arbitrary integer */ +EXTERNL void nclog(int tag, const char* fmt, ...); +EXTERNL void ncvlog(int tag, const char* fmt, va_list ap); +EXTERNL void nclogtext(int tag, const char* text); +EXTERNL void nclogtextn(int tag, const char* text, size_t count); + +/* Provide printable names for tags */ +EXTERNL void nclogsettags(char** tagset, char* dfalt); + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) +} +#endif + +#endif /*NCLOG_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncoffsets.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncoffsets.h new file mode 100644 index 00000000000..36381432bb4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncoffsets.h @@ -0,0 +1,58 @@ +/********************************************************************* + * Copyright 2009, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef NCOFFSETS_H +#define NCOFFSETS_H 1 + +/* Define indices for every primitive C type */ +/* NAT => NOT-A-TYPE*/ +#define NC_NATINDEX 0 +#define NC_CHARINDEX 1 +#define NC_UCHARINDEX 2 +#define NC_SHORTINDEX 3 +#define NC_USHORTINDEX 4 +#define NC_INTINDEX 5 +#define NC_UINTINDEX 6 +#define NC_LONGINDEX 7 +#define NC_ULONGINDEX 8 +#define NC_LONGLONGINDEX 9 +#define NC_ULONGLONGINDEX 10 +#define NC_FLOATINDEX 11 +#define NC_DOUBLEINDEX 12 +#define NC_PTRINDEX 13 +#define NC_NCVLENINDEX 14 + +#define NC_NCTYPES 15 + +typedef struct NCalignment { + char* type_name; + size_t alignment; +} NCalignment; + +typedef NCalignment NCtypealignvec; + +/* Capture in struct and in a vector*/ +typedef struct NCtypealignset { + NCalignment charalign; /* char*/ + NCalignment ucharalign; /* unsigned char*/ + NCalignment shortalign; /* short*/ + NCalignment ushortalign; /* unsigned short*/ + NCalignment intalign; /* int*/ + NCalignment uintalign; /* unsigned int*/ + NCalignment longalign; /* long*/ + NCalignment ulongalign; /* unsigned long*/ + NCalignment longlongalign; /* long long*/ + NCalignment ulonglongalign; /* unsigned long long*/ + NCalignment floatalign; /* float*/ + NCalignment doublealign; /* double*/ + NCalignment ptralign; /* void**/ + NCalignment ncvlenalign; /* nc_vlen_t*/ +} NCtypealignset; + +size_t NC_class_alignment(int ncclass); +void NC_compute_alignments(void); +EXTERNL int NC_alignments_computed; + +#endif /*NCOFFSETS_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncrc.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncrc.h new file mode 100644 index 00000000000..4998efb4949 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncrc.h @@ -0,0 +1,61 @@ +/* +Copyright (c) 1998-2017 University Corporation for Atmospheric Research/Unidata +See LICENSE.txt for license information. +*/ + +/* +Common functionality for reading +and accessing rc files (e.g. .daprc). +*/ + +#ifndef NCRC_H +#define NCRC_H + +/* Need these support includes */ +#include "ncuri.h" +#include "nclist.h" +#include "ncbytes.h" + +typedef struct NCTriple { + char* host; /* combined host:port */ + char* key; + char* value; +} NCTriple; + +/* collect all the relevant info around the rc file */ +typedef struct NCRCinfo { + int ignore; /* if 1, then do not use any rc file */ + int loaded; /* 1 => already loaded */ + NClist* triples; /* the rc file triple store fields*/ + char* rcfile; /* specified rcfile; overrides anything else */ +} NCRCinfo; + +/* Collect global state info in one place */ +typedef struct NCRCglobalstate { + int initialized; + char* tempdir; /* track a usable temp dir */ + char* home; /* track $HOME for use in creating $HOME/.oc dir */ + NCRCinfo rcinfo; /* Currently only one rc file per session */ +} NCRCglobalstate; + +extern NCRCglobalstate ncrc_globalstate; /* singleton instance */ + +/* From drc.c */ +/* read and compile the rc file, if any */ +extern int NC_rcload(void); +extern char* NC_rclookup(const char* key, const char* hostport); +extern void NC_rcclear(NCRCinfo* info); +extern int NC_set_rcfile(const char* rcfile); +extern int NC_rcfile_insert(const char* key, const char* value, const char* hostport); + +/* From dutil.c (Might later move to e.g. nc.h */ +extern int NC__testurl(const char* path, char** basenamep); +extern int NC_isLittleEndian(void); +extern char* NC_backslashEscape(const char* s); +extern char* NC_backslashUnescape(const char* esc); +extern char* NC_entityescape(const char* s); +extern int NC_readfile(const char* filename, NCbytes* content); +extern int NC_writefile(const char* filename, size_t size, void* content); +extern char* NC_mktmp(const char* base); + +#endif /*NCRC_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/nctestserver.h b/contrib/netcdf/netcdf-c-4.6.2/include/nctestserver.h new file mode 100644 index 00000000000..175574efab1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nctestserver.h @@ -0,0 +1,185 @@ +#include "config.h" +#include +#include +#include +#include +#include "netcdf.h" + +#undef FINDTESTSERVER_DEBUG + +#define MAXSERVERURL 4096 +#define TIMEOUT 10 /*seconds*/ +#define BUFSIZE 8192 /*bytes*/ + +#ifndef HAVE_CURLINFO_RESPONSE_CODE +#define CURLINFO_RESPONSE_CODE CURLINFO_HTTP_CODE +#endif + +static int ping(const char* url); + +static char** +parseServers(const char* remotetestservers) +{ + char* rts; + char** servers = NULL; + char** list = NULL; + char* p; + char* svc; + char** l; + + list = (char**)malloc(sizeof(char*) * (int)(strlen(remotetestservers)/2)); + if(list == NULL) return NULL; + rts = strdup(remotetestservers); + if(rts == NULL) goto done; + l = list; + p = rts; + for(;;) { + svc = p; + p = strchr(svc,','); + if(p != NULL) *p = '\0'; + *l++ = strdup(svc); + if(p == NULL) break; + p++; + } + *l = NULL; + servers = list; + list = NULL; +done: + if(rts) free(rts); + if(list) free(list); + return servers; +} + +/** +Given a partial suffix path and a specified +protocol, test if a request to any of the test +servers + path returns some kind of result. +This indicates that the server is up and running. +Return the complete url for the server plus the path. +*/ + +static char* +nc_findtestserver(const char* path, int isdap4, const char* serverlist) +{ + char** svclist; + char** svc; + char url[MAXSERVERURL]; + char* match = NULL; + + if((svclist = parseServers(serverlist))==NULL) { + fprintf(stderr,"cannot parse test server list: %s\n",serverlist); + return NULL; + } + for(svc=svclist;*svc;svc++) { + if(strlen(*svc) == 0) + goto done; + if(path == NULL) path = ""; + if(strlen(path) > 0 && path[0] == '/') + path++; + /* Try https: first */ + snprintf(url,MAXSERVERURL,"https://%s/%s",*svc,path); + if(ping(url) == NC_NOERR) + {match = strdup(url); goto done;} + /* Try http: next */ + snprintf(url,MAXSERVERURL,"http://%s/%s",*svc,path); + if(ping(url) == NC_NOERR) + {match = strdup(url); goto done;} + } +done: + /* Free up the envv list of servers */ + if(svclist != NULL) { + char** p; + for(p=svclist;*p;p++) + free(*p); + free(svclist); + } + return match; +} + +#define CERR(expr) if((cstat=(expr)) != CURLE_OK) goto done; + +struct Buffer { + char data[BUFSIZE]; + size_t offset; /* into buffer */ +}; + +static size_t +WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) +{ + struct Buffer* buffer = (struct Buffer*)data; + size_t total = size * nmemb; + size_t canwrite = total; /* assume so */ + if(total == 0) { + fprintf(stderr,"WriteMemoryCallback: zero sized chunk\n"); + goto done; + } + if((buffer->offset + total) > sizeof(buffer->data)) + canwrite = (sizeof(buffer->data) - buffer->offset); /* partial read */ + if(canwrite > 0) + memcpy(&(buffer->data[buffer->offset]),ptr,canwrite); + buffer->offset += canwrite; +done: + return total; /* pretend we captured everything */ +} + +/* +See if a server is responding. +Return NC_ECURL if the ping fails, NC_NOERR otherwise +*/ +static int +ping(const char* url) +{ + int stat = NC_NOERR; + CURLcode cstat = CURLE_OK; + CURL* curl = NULL; + long http_code = 0; + struct Buffer data; + + /* Create a CURL instance */ + curl = curl_easy_init(); + if (curl == NULL) {cstat = CURLE_OUT_OF_MEMORY; goto done;} + CERR((curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1))); + + /* Use redirects */ + CERR((curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L))); + CERR((curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L))); + + /* use a very short timeout: 10 seconds */ + CERR((curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)TIMEOUT))); + + /* fail on HTTP 400 code errors */ + CERR((curl_easy_setopt(curl, CURLOPT_FAILONERROR, (long)1))); + + /* Set the URL */ + CERR((curl_easy_setopt(curl, CURLOPT_URL, (void*)url))); + + /* send all data to this function */ + CERR((curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback))); + + /* we pass our file to the callback function */ + CERR((curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&data))); + + data.offset = 0; + memset(data.data,0,sizeof(data.data)); + + CERR((curl_easy_perform(curl))); + + /* Don't trust curl to return an error when request gets 404 */ + CERR((curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, &http_code))); + if(http_code >= 400) { + cstat = CURLE_HTTP_RETURNED_ERROR; + goto done; + } + +done: + if(cstat != CURLE_OK) { +#ifdef FINDTESTSERVER_DEBUG + fprintf(stderr, "curl error: %s; url=%s\n", + curl_easy_strerror(cstat),url); +#endif + stat = NC_ECURL; + } + if (curl != NULL) + curl_easy_cleanup(curl); + return stat; +} diff --git a/contrib/netcdf/4.4.1.1/include/nctime.h b/contrib/netcdf/netcdf-c-4.6.2/include/nctime.h similarity index 96% rename from contrib/netcdf/4.4.1.1/include/nctime.h rename to contrib/netcdf/netcdf-c-4.6.2/include/nctime.h index 7f0d29156c3..d740f9c7bc1 100644 --- a/contrib/netcdf/4.4.1.1/include/nctime.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/nctime.h @@ -4,6 +4,12 @@ * $Id: nctime.h,v 1.6 2010/03/18 19:24:26 russ Exp $ *********************************************************************/ +#ifndef _NCTIME_H +#define _NCTIME_H + +#define CU_FATAL 1 /* Exit immediately on fatal error */ +#define CU_VERBOSE 2 /* Report errors */ + struct bounds_node{ int ncid; /* group (or file) in which variable with associated * bounds variable resides */ @@ -14,7 +20,7 @@ struct bounds_node{ typedef struct bounds_node bounds_node_t; -/* +/* * This code was extracted with permission from the CDMS time * conversion and arithmetic routines developed by Bob Drach, Lawrence * Livermore National Laboratory as part of the cdtime library. @@ -149,13 +155,15 @@ MSC_NCTIME_EXTRA extern void cdChar2Comp(cdCalenType timetype, char* chartime, c MSC_NCTIME_EXTRA extern void Cdh2e(CdTime *htime, double *etime); MSC_NCTIME_EXTRA extern void Cde2h(double etime, CdTimeType timeType, long baseYear, CdTime *htime); MSC_NCTIME_EXTRA extern int cdParseRelunits(cdCalenType timetype, char* relunits, cdUnitTime* unit, cdCompTime* base_comptime); +MSC_NCTIME_EXTRA extern int cdSetErrOpts(int opts); #else extern void cdRel2Iso(cdCalenType timetype, char* relunits, int separator, double reltime, char* chartime); extern void cdChar2Comp(cdCalenType timetype, char* chartime, cdCompTime* comptime); extern void Cdh2e(CdTime *htime, double *etime); extern void Cde2h(double etime, CdTimeType timeType, long baseYear, CdTime *htime); extern int cdParseRelunits(cdCalenType timetype, char* relunits, cdUnitTime* unit, cdCompTime* base_comptime); +extern int cdSetErrOpts(int opts); #endif /* DLL Considerations. */ - +#endif /* ifdef */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncuri.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncuri.h new file mode 100644 index 00000000000..a60febf5260 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncuri.h @@ -0,0 +1,110 @@ +/* + * Copyright 1996, University Corporation for Atmospheric Research + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + */ + +#ifndef NCURI_H +#define NCURI_H + +/* Define error codes */ +#define NCU_OK (0) +#define NCU_EINVAL (1) /* Generic, mostly means bad argument */ +#define NCU_EBADURL (2) +#define NCU_ENOMEM (3) +#define NCU_EPROTO (4) +#define NCU_EPATH (5) +#define NCU_EUSRPWD (6) +#define NCU_EHOST (7) +#define NCU_EPORT (8) +#define NCU_EPARAMS (9) +#define NCU_ENOPARAM (10) +#define NCU_ECONSTRAINTS (11) + +/* Define flags to control what is included by ncuribuild*/ +#define NCURIPATH 1 +#define NCURIPWD 2 +#define NCURIQUERY 4 +#define NCURIFRAG 8 +#define NCURIENCODE 16 /* If output should be encoded */ +#define NCURIBASE (NCURIPWD|NCURIPATH) +#define NCURISVC (NCURIQUERY|NCURIBASE) /* for sending to server */ +#define NCURIALL (NCURIPATH|NCURIPWD|NCURIQUERY|NCURIFRAG) /* for rebuilding after changes */ + + +/*! This is an open structure meaning + it is ok to directly access its fields +*/ +typedef struct NCURI { + char* uri; /* copy of url as passed by the caller */ + char* protocol; + char* user; /* from user:password@ */ + char* password; /* from user:password@ */ + char* host; /*!< host*/ + char* port; /*!< port */ + char* path; /*!< path */ + char* query; /*!< query */ + char* fragment; /*!< fragment */ + char** fraglist; /* envv style list of decomposed fragment*/ + char** querylist; /* envv style list of decomposed query*/ +#if 0 + char* projection; /*!< without leading '?'*/ + char* selection; /*!< with leading '&'*/ +#endif +} NCURI; + +/* Declaration modifiers for DLL support (MSC et al) */ +#if defined(DLL_NETCDF) /* define when library is a DLL */ +# if defined(DLL_EXPORT) /* define when building the library */ +# define MSC_EXTRA __declspec(dllexport) +# else +# define MSC_EXTRA __declspec(dllimport) +# endif +# include +#else +#define MSC_EXTRA /**< Needed for DLL build. */ +#endif /* defined(DLL_NETCDF) */ + +#define EXTERNL MSC_EXTRA extern /**< Needed for DLL build. */ + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +extern "C" { +#endif + +EXTERNL int ncuriparse(const char* s, NCURI** ncuri); +extern void ncurifree(NCURI* ncuri); + +/* Replace the protocol */ +extern int ncurisetprotocol(NCURI*,const char* newprotocol); + +/* Replace the constraints */ +EXTERNL int ncurisetquery(NCURI*,const char* query); + +/* Construct a complete NC URI; caller frees returned string */ +EXTERNL char* ncuribuild(NCURI*,const char* prefix, const char* suffix, int flags); + +/*! Search the fragment for a given parameter + Null result => entry not found; !NULL=>found; + In any case, the result is imutable and should not be free'd. +*/ +extern const char* ncurilookup(NCURI*, const char* param); + +/*! Search the query for a given parameter + Null result => entry not found; !NULL=>found; + In any case, the result is imutable and should not be free'd. +*/ +extern const char* ncuriquerylookup(NCURI*, const char* param); + +/* URL Encode/Decode */ +extern char* ncuridecode(char* s); +/* Partial decode */ +extern char* ncuridecodepartial(char* s, const char* decodeset); +/* Encode using specified character set */ +extern char* ncuriencodeonly(char* s, char* allowable); +/* Encode user or pwd */ +extern char* ncuriencodeuserpwd(char* s); + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +} +#endif + +#endif /*NCURI_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncutf8.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncutf8.h new file mode 100644 index 00000000000..fca22ca1403 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncutf8.h @@ -0,0 +1,48 @@ +/* + * Copyright 2017, University Corporation for Atmospheric Research + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + */ + +#ifndef NCUTF8_H +#define NCUTF8_H 1 + +#include "ncexternl.h" + +/* Provide a wrapper around whatever utf8 library we use. */ + +/* + * Check validity of a UTF8 encoded null-terminated byte string. + * Return codes: + * NC_NOERR -- string is valid utf8 + * NC_ENOMEM -- out of memory + * NC_EBADNAME-- not valid utf8 + */ +EXTERNL int nc_utf8_validate(const unsigned char * name); + +/* + * Apply NFC normalization to a string. + * Returns a pointer to newly allocated memory of an NFC + * normalized version of the null-terminated string 'str'. + * Pointer to normalized string is returned in normalp argument; + * caller must free. + * Return codes: + * NC_NOERR -- success + * NC_ENOMEM -- out of memory + * NC_EBADNAME -- other failure + */ +EXTERNL int nc_utf8_normalize(const unsigned char* str, unsigned char** normalp); + +/* + * Convert a normalized utf8 string to utf16. This is approximate + * because it just does the truncation version of conversion for + * each 32-bit codepoint to get the corresponding utf16. + * Return codes: + * NC_NOERR -- success + * NC_ENOMEM -- out of memory + * NC_EINVAL -- invalid argument or internal error + * NC_EBADNAME-- not valid utf16 + */ + +EXTERNL int nc_utf8_to_utf16(const unsigned char* s8, unsigned short** utf16p, size_t* lenp); + +#endif /*NCUTF8_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/ncwinpath.h b/contrib/netcdf/netcdf-c-4.6.2/include/ncwinpath.h new file mode 100644 index 00000000000..e62368d9719 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/ncwinpath.h @@ -0,0 +1,60 @@ +/* + * Copyright 1996, University Corporation for Atmospheric Research + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + */ +#ifndef _NCWINIO_H_ +#define _NCWINIO_H_ + +#include "config.h" +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include "ncexternl.h" + +#ifndef WINPATH +#ifdef _MSC_VER +#define WINPATH 1 +#endif +#ifdef __MINGW32__ +#define WINPATH 1 +#endif +#endif + +/* Define wrapper constants for use with NCaccess */ +#ifdef _MSC_VER +#define ACCESS_MODE_EXISTS 0 +#define ACCESS_MODE_R 4 +#define ACCESS_MODE_W 2 +#define ACCESS_MODE_RW 6 +#else +#define ACCESS_MODE_EXISTS (F_OK) +#define ACCESS_MODE_R (R_OK) +#define ACCESS_MODE_W (W_OK) +#define ACCESS_MODE_RW (R_OK|W_OK) +#endif + +/* Path Converter */ +EXTERNL char* NCpathcvt(const char* path); + +#ifdef WINPATH +/* path converter wrappers*/ +EXTERNL FILE* NCfopen(const char* path, const char* flags); +EXTERNL int NCopen3(const char* path, int flags, int mode); +EXTERNL int NCopen2(const char* path, int flags); +EXTERNL int NCaccess(const char* path, int mode); +EXTERNL int NCremove(const char* path); +#else /*!WINPATH*/ +#define NCfopen(path,flags) fopen((path),(flags)) +#define NCopen3(path,flags,mode) open((path),(flags),(mode)) +#define NCopen2(path,flags) open((path),(flags)) +#define NCremove(path) remove(path) +#ifdef _MSC_VER +#define NCaccess(path,mode) _access(path,mode) +#else +#define NCaccess(path,mode) access(path,mode) +#endif +#endif /*WINPATH*/ + +#endif /* _NCWINIO_H_ */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/netcdf.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf.h new file mode 100644 index 00000000000..e829b8d164e --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf.h @@ -0,0 +1,1995 @@ +/*! \file + +Main header file for the C API. + +Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 +University Corporation for Atmospheric Research/Unidata. + +See \ref copyright file for more info. +*/ + +#ifndef _NETCDF_ +#define _NETCDF_ + +#include /* size_t, ptrdiff_t */ +#include /* netcdf functions sometimes return system errors */ + +/* Required for alloca on Windows */ +#if defined(_WIN32) || defined(_WIN64) +#include +#endif + +/*! The nc_type type is just an int. */ +typedef int nc_type; + +#if defined(__cplusplus) +extern "C" { +#endif + +/* + * The netcdf external data types + */ +#define NC_NAT 0 /**< Not A Type */ +#define NC_BYTE 1 /**< signed 1 byte integer */ +#define NC_CHAR 2 /**< ISO/ASCII character */ +#define NC_SHORT 3 /**< signed 2 byte integer */ +#define NC_INT 4 /**< signed 4 byte integer */ +#define NC_LONG NC_INT /**< \deprecated required for backward compatibility. */ +#define NC_FLOAT 5 /**< single precision floating point number */ +#define NC_DOUBLE 6 /**< double precision floating point number */ +#define NC_UBYTE 7 /**< unsigned 1 byte int */ +#define NC_USHORT 8 /**< unsigned 2-byte int */ +#define NC_UINT 9 /**< unsigned 4-byte int */ +#define NC_INT64 10 /**< signed 8-byte int */ +#define NC_UINT64 11 /**< unsigned 8-byte int */ +#define NC_STRING 12 /**< string */ + +#define NC_MAX_ATOMIC_TYPE NC_STRING /**< @internal Largest atomic type. */ + +/* The following are use internally in support of user-defines + * types. They are also the class returned by nc_inq_user_type. */ +#define NC_VLEN 13 /**< vlen (variable-length) types */ +#define NC_OPAQUE 14 /**< opaque types */ +#define NC_ENUM 15 /**< enum types */ +#define NC_COMPOUND 16 /**< compound types */ + +/** @internal Define the first user defined type id (leave some + * room) */ +#define NC_FIRSTUSERTYPEID 32 + +/** Default fill value. This is used unless _FillValue attribute + * is set. These values are stuffed into newly allocated space as + * appropriate. The hope is that one might use these to notice that a + * particular datum has not been set. */ +/**@{*/ +#define NC_FILL_BYTE ((signed char)-127) +#define NC_FILL_CHAR ((char)0) +#define NC_FILL_SHORT ((short)-32767) +#define NC_FILL_INT (-2147483647) +#define NC_FILL_FLOAT (9.9692099683868690e+36f) /* near 15 * 2^119 */ +#define NC_FILL_DOUBLE (9.9692099683868690e+36) +#define NC_FILL_UBYTE (255) +#define NC_FILL_USHORT (65535) +#define NC_FILL_UINT (4294967295U) +#define NC_FILL_INT64 ((long long)-9223372036854775806LL) +#define NC_FILL_UINT64 ((unsigned long long)18446744073709551614ULL) +#define NC_FILL_STRING ((char *)"") +/**@}*/ + +/*! Max or min values for a type. Nothing greater/smaller can be + * stored in a netCDF file for their associated types. Recall that a C + * compiler may define int to be any length it wants, but a NC_INT is + * *always* a 4 byte signed int. On a platform with 64 bit ints, + * there will be many ints which are outside the range supported by + * NC_INT. But since NC_INT is an external format, it has to mean the + * same thing everywhere. */ +/**@{*/ +#define NC_MAX_BYTE 127 +#define NC_MIN_BYTE (-NC_MAX_BYTE-1) +#define NC_MAX_CHAR 255 +#define NC_MAX_SHORT 32767 +#define NC_MIN_SHORT (-NC_MAX_SHORT - 1) +#define NC_MAX_INT 2147483647 +#define NC_MIN_INT (-NC_MAX_INT - 1) +#define NC_MAX_FLOAT 3.402823466e+38f +#define NC_MIN_FLOAT (-NC_MAX_FLOAT) +#define NC_MAX_DOUBLE 1.7976931348623157e+308 +#define NC_MIN_DOUBLE (-NC_MAX_DOUBLE) +#define NC_MAX_UBYTE NC_MAX_CHAR +#define NC_MAX_USHORT 65535U +#define NC_MAX_UINT 4294967295U +#define NC_MAX_INT64 (9223372036854775807LL) +#define NC_MIN_INT64 (-9223372036854775807LL-1) +#define NC_MAX_UINT64 (18446744073709551615ULL) +/**@}*/ + +/** Name of fill value attribute. If you wish a variable to use a + * different value than the above defaults, create an attribute with + * the same type as the variable and this reserved name. The value you + * give the attribute will be used as the fill value for that + * variable. */ +#define _FillValue "_FillValue" +#define NC_FILL 0 /**< Argument to nc_set_fill() to clear NC_NOFILL */ +#define NC_NOFILL 0x100 /**< Argument to nc_set_fill() to turn off filling of data. */ + +/* Define the ioflags bits for nc_create and nc_open. + currently unused: + 0x0002 + and the whole upper 16 bits +*/ + +#define NC_NOWRITE 0x0000 /**< Set read-only access for nc_open(). */ +#define NC_WRITE 0x0001 /**< Set read-write access for nc_open(). */ + +#define NC_CLOBBER 0x0000 /**< Destroy existing file. Mode flag for nc_create(). */ +#define NC_NOCLOBBER 0x0004 /**< Don't destroy existing file. Mode flag for nc_create(). */ + +#define NC_DISKLESS 0x0008 /**< Use diskless file. Mode flag for nc_open() or nc_create(). */ +#define NC_MMAP 0x0010 /**< \deprecated Use diskless file with mmap. Mode flag for nc_open() or nc_create()*/ + +#define NC_64BIT_DATA 0x0020 /**< CDF-5 format: classic model but 64 bit dimensions and sizes */ +#define NC_CDF5 NC_64BIT_DATA /**< Alias NC_CDF5 to NC_64BIT_DATA */ + +#define NC_UDF0 0x0040 /**< User-defined format 0. */ +#define NC_UDF1 0x0080 /**< User-defined format 1. */ + +#define NC_CLASSIC_MODEL 0x0100 /**< Enforce classic model on netCDF-4. Mode flag for nc_create(). */ +#define NC_64BIT_OFFSET 0x0200 /**< Use large (64-bit) file offsets. Mode flag for nc_create(). */ + +/** \deprecated The following flag currently is ignored, but use in + * nc_open() or nc_create() may someday support use of advisory + * locking to prevent multiple writers from clobbering a file + */ +#define NC_LOCK 0x0400 + +/** Share updates, limit caching. +Use this in mode flags for both nc_create() and nc_open(). */ +#define NC_SHARE 0x0800 + +#define NC_NETCDF4 0x1000 /**< Use netCDF-4/HDF5 format. Mode flag for nc_create(). */ + +/** Turn on MPI I/O. +Use this in mode flags for both nc_create() and nc_open(). */ +#define NC_MPIIO 0x2000 /**< \deprecated */ +/** Turn on MPI POSIX I/O. +Use this in mode flags for both nc_create() and nc_open(). */ +#define NC_MPIPOSIX NC_MPIIO /**< \deprecated As of libhdf5 1.8.13. Now an alias */ + +#define NC_PERSIST 0x4000 /**< Save diskless contents to disk. Mode flag for nc_open() or nc_create() */ +#define NC_INMEMORY 0x8000 /**< Read from memory. Mode flag for nc_open() or nc_create() */ + +#define NC_PNETCDF (NC_MPIIO) /**< \deprecated Use PnetCDF library; alias for NC_MPIIO. */ + +#define NC_MAX_MAGIC_NUMBER_LEN 8 /**< Max len of user-defined format magic number. */ + +/** Format specifier for nc_set_default_format() and returned + * by nc_inq_format. This returns the format as provided by + * the API. See nc_inq_format_extended to see the true file format. + * Starting with version 3.6, there are different format netCDF files. + * 4.0 introduces the third one. \see netcdf_format + */ +/**@{*/ +#define NC_FORMAT_CLASSIC (1) +/* After adding CDF5 support, this flag + is somewhat confusing. So, it is renamed. + Note that the name in the contributed code + NC_FORMAT_64BIT was renamed to NC_FORMAT_CDF2 +*/ +#define NC_FORMAT_64BIT_OFFSET (2) +#define NC_FORMAT_64BIT (NC_FORMAT_64BIT_OFFSET) /**< \deprecated Saved for compatibility. Use NC_FORMAT_64BIT_OFFSET or NC_FORMAT_64BIT_DATA, from netCDF 4.4.0 onwards. */ +#define NC_FORMAT_NETCDF4 (3) +#define NC_FORMAT_NETCDF4_CLASSIC (4) +#define NC_FORMAT_64BIT_DATA (5) + +/* Alias */ +#define NC_FORMAT_CDF5 NC_FORMAT_64BIT_DATA + +/**@}*/ + +/** Extended format specifier returned by nc_inq_format_extended() + * Added in version 4.3.1. This returns the true format of the + * underlying data. + * The function returns two values + * 1. a small integer indicating the underlying source type + * of the data. Note that this may differ from what the user + * sees from nc_inq_format() because this latter function + * returns what the user can expect to see thru the API. + * 2. A mode value indicating what mode flags are effectively + * set for this dataset. This usually will be a superset + * of the mode flags used as the argument to nc_open + * or nc_create. + * More or less, the #1 values track the set of dispatch tables. + * The #1 values are as follows. + * Note that CDF-5 returns NC_FORMAT_NC3, but sets the mode flag properly. + */ +/**@{*/ + +#define NC_FORMATX_NC3 (1) +#define NC_FORMATX_NC_HDF5 (2) /**< netCDF-4 subset of HDF5 */ +#define NC_FORMATX_NC4 NC_FORMATX_NC_HDF5 /**< alias */ +#define NC_FORMATX_NC_HDF4 (3) /**< netCDF-4 subset of HDF4 */ +#define NC_FORMATX_PNETCDF (4) +#define NC_FORMATX_DAP2 (5) +#define NC_FORMATX_DAP4 (6) +#define NC_FORMATX_UDF0 (8) +#define NC_FORMATX_UDF1 (9) +#define NC_FORMATX_UNDEFINED (0) + + /* To avoid breaking compatibility (such as in the python library), + we need to retain the NC_FORMAT_xxx format as well. This may come + out eventually, as the NC_FORMATX is more clear that it's an extended + format specifier.*/ + +#define NC_FORMAT_NC3 NC_FORMATX_NC3 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC3 */ +#define NC_FORMAT_NC_HDF5 NC_FORMATX_NC_HDF5 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC_HDF5 */ +#define NC_FORMAT_NC4 NC_FORMATX_NC4 /**< \deprecated As of 4.4.0, use NC_FORMATX_NC4 */ +#define NC_FORMAT_NC_HDF4 NC_FORMATX_NC_HDF4 /**< \deprecated As of 4.4.0, use NC_FORMATX_HDF4 */ +#define NC_FORMAT_PNETCDF NC_FORMATX_PNETCDF /**< \deprecated As of 4.4.0, use NC_FORMATX_PNETCDF */ +#define NC_FORMAT_DAP2 NC_FORMATX_DAP2 /**< \deprecated As of 4.4.0, use NC_FORMATX_DAP2 */ +#define NC_FORMAT_DAP4 NC_FORMATX_DAP4 /**< \deprecated As of 4.4.0, use NC_FORMATX_DAP4 */ +#define NC_FORMAT_UNDEFINED NC_FORMATX_UNDEFINED /**< \deprecated As of 4.4.0, use NC_FORMATX_UNDEFINED */ + +/**@}*/ + +/** Let nc__create() or nc__open() figure out a suitable buffer size. */ +#define NC_SIZEHINT_DEFAULT 0 + +/** In nc__enddef(), align to the buffer size. */ +#define NC_ALIGN_CHUNK ((size_t)(-1)) + +/** Size argument to nc_def_dim() for an unlimited dimension. */ +#define NC_UNLIMITED 0L + +/** Attribute id to put/get a global attribute. */ +#define NC_GLOBAL -1 + +/** +Maximum for classic library. + +In the classic netCDF model there are maximum values for the number of +dimensions in the file (\ref NC_MAX_DIMS), the number of global or per +variable attributes (\ref NC_MAX_ATTRS), the number of variables in +the file (\ref NC_MAX_VARS), and the length of a name (\ref +NC_MAX_NAME). + +These maximums are enforced by the interface, to facilitate writing +applications and utilities. However, nothing is statically allocated +to these sizes internally. + +These maximums are not used for netCDF-4/HDF5 files unless they were +created with the ::NC_CLASSIC_MODEL flag. + +As a rule, NC_MAX_VAR_DIMS <= NC_MAX_DIMS. + +NOTE: The NC_MAX_DIMS, NC_MAX_ATTRS, and NC_MAX_VARS limits + are *not* enforced after version 4.5.0 +*/ +/**@{*/ +#define NC_MAX_DIMS 65536 /* not enforced after 4.5.0 */ +#define NC_MAX_ATTRS 8192 /* not enforced after 4.5.0 */ +#define NC_MAX_VARS 524288 /* not enforced after 4.5.0 */ +#define NC_MAX_NAME 256 +#define NC_MAX_VAR_DIMS 1024 /**< max per variable dimensions */ +/**@}*/ + +/** This is the max size of an SD dataset name in HDF4 (from HDF4 documentation).*/ +#define NC_MAX_HDF4_NAME 64 + +/** In HDF5 files you can set the endianness of variables with + nc_def_var_endian(). This define is used there. */ +/**@{*/ +#define NC_ENDIAN_NATIVE 0 +#define NC_ENDIAN_LITTLE 1 +#define NC_ENDIAN_BIG 2 +/**@}*/ + +/** In HDF5 files you can set storage for each variable to be either + * contiguous or chunked, with nc_def_var_chunking(). This define is + * used there. */ +/**@{*/ +#define NC_CHUNKED 0 +#define NC_CONTIGUOUS 1 +/**@}*/ + +/** In HDF5 files you can set check-summing for each variable. +Currently the only checksum available is Fletcher-32, which can be set +with the function nc_def_var_fletcher32. These defines are used +there. */ +/**@{*/ +#define NC_NOCHECKSUM 0 +#define NC_FLETCHER32 1 +/**@}*/ + +/**@{*/ +/** Control the HDF5 shuffle filter. In HDF5 files you can specify + * that a shuffle filter should be used on each chunk of a variable to + * improve compression for that variable. This per-variable shuffle + * property can be set with the function nc_def_var_deflate(). */ +#define NC_NOSHUFFLE 0 +#define NC_SHUFFLE 1 +/**@}*/ + +#define NC_MIN_DEFLATE_LEVEL 0 /**< Minimum deflate level. */ +#define NC_MAX_DEFLATE_LEVEL 9 /**< Maximum deflate level. */ + +/** The netcdf version 3 functions all return integer error status. + * These are the possible values, in addition to certain values from + * the system errno.h. + */ +#define NC_ISSYSERR(err) ((err) > 0) + +#define NC_NOERR 0 /**< No Error */ +#define NC2_ERR (-1) /**< Returned for all errors in the v2 API. */ + +/** Not a netcdf id. + +The specified netCDF ID does not refer to an +open netCDF dataset. */ +#define NC_EBADID (-33) +#define NC_ENFILE (-34) /**< Too many netcdfs open */ +#define NC_EEXIST (-35) /**< netcdf file exists && NC_NOCLOBBER */ +#define NC_EINVAL (-36) /**< Invalid Argument */ +#define NC_EPERM (-37) /**< Write to read only */ + +/** Operation not allowed in data mode. This is returned for netCDF +classic or 64-bit offset files, or for netCDF-4 files, when they were +been created with ::NC_CLASSIC_MODEL flag in nc_create(). */ +#define NC_ENOTINDEFINE (-38) + +/** Operation not allowed in define mode. + +The specified netCDF is in define mode rather than data mode. + +With netCDF-4/HDF5 files, this error will not occur, unless +::NC_CLASSIC_MODEL was used in nc_create(). + */ +#define NC_EINDEFINE (-39) + +/** Index exceeds dimension bound. + +The specified corner indices were out of range for the rank of the +specified variable. For example, a negative index or an index that is +larger than the corresponding dimension length will cause an error. */ +#define NC_EINVALCOORDS (-40) + +/** NC_MAX_DIMS exceeded. Max number of dimensions exceeded in a +classic or 64-bit offset file, or an netCDF-4 file with +::NC_CLASSIC_MODEL on. */ +#define NC_EMAXDIMS (-41) /* not enforced after 4.5.0 */ + +#define NC_ENAMEINUSE (-42) /**< String match to name in use */ +#define NC_ENOTATT (-43) /**< Attribute not found */ +#define NC_EMAXATTS (-44) /**< NC_MAX_ATTRS exceeded - not enforced after 4.5.0 */ +#define NC_EBADTYPE (-45) /**< Not a netcdf data type */ +#define NC_EBADDIM (-46) /**< Invalid dimension id or name */ +#define NC_EUNLIMPOS (-47) /**< NC_UNLIMITED in the wrong index */ + +/** NC_MAX_VARS exceeded. Max number of variables exceeded in a +classic or 64-bit offset file, or an netCDF-4 file with +::NC_CLASSIC_MODEL on. */ +#define NC_EMAXVARS (-48) /* not enforced after 4.5.0 */ + +/** Variable not found. + +The variable ID is invalid for the specified netCDF dataset. */ +#define NC_ENOTVAR (-49) +#define NC_EGLOBAL (-50) /**< Action prohibited on NC_GLOBAL varid */ +#define NC_ENOTNC (-51) /**< Not a netcdf file */ +#define NC_ESTS (-52) /**< In Fortran, string too short */ +#define NC_EMAXNAME (-53) /**< NC_MAX_NAME exceeded */ +#define NC_EUNLIMIT (-54) /**< NC_UNLIMITED size already in use */ +#define NC_ENORECVARS (-55) /**< nc_rec op when there are no record vars */ +#define NC_ECHAR (-56) /**< Attempt to convert between text & numbers */ + +/** Start+count exceeds dimension bound. + +The specified edge lengths added to the specified corner would have +referenced data out of range for the rank of the specified +variable. For example, an edge length that is larger than the +corresponding dimension length minus the corner index will cause an +error. */ +#define NC_EEDGE (-57) /**< Start+count exceeds dimension bound. */ +#define NC_ESTRIDE (-58) /**< Illegal stride */ +#define NC_EBADNAME (-59) /**< Attribute or variable name contains illegal characters */ +/* N.B. following must match value in ncx.h */ + +/** Math result not representable. + +One or more of the values are out of the range of values representable +by the desired type. */ +#define NC_ERANGE (-60) +#define NC_ENOMEM (-61) /**< Memory allocation (malloc) failure */ +#define NC_EVARSIZE (-62) /**< One or more variable sizes violate format constraints */ +#define NC_EDIMSIZE (-63) /**< Invalid dimension size */ +#define NC_ETRUNC (-64) /**< File likely truncated or possibly corrupted */ +#define NC_EAXISTYPE (-65) /**< Unknown axis type. */ + +/* Following errors are added for DAP */ +#define NC_EDAP (-66) /**< Generic DAP error */ +#define NC_ECURL (-67) /**< Generic libcurl error */ +#define NC_EIO (-68) /**< Generic IO error */ +#define NC_ENODATA (-69) /**< Attempt to access variable with no data */ +#define NC_EDAPSVC (-70) /**< DAP server error */ +#define NC_EDAS (-71) /**< Malformed or inaccessible DAS */ +#define NC_EDDS (-72) /**< Malformed or inaccessible DDS */ +#define NC_EDMR NC_EDDS /**< Dap4 alias */ +#define NC_EDATADDS (-73) /**< Malformed or inaccessible DATADDS */ +#define NC_EDATADAP NC_EDATADDS /**< Dap4 alias */ +#define NC_EDAPURL (-74) /**< Malformed DAP URL */ +#define NC_EDAPCONSTRAINT (-75) /**< Malformed DAP Constraint*/ +#define NC_ETRANSLATION (-76) /**< Untranslatable construct */ +#define NC_EACCESS (-77) /**< Access Failure */ +#define NC_EAUTH (-78) /**< Authorization Failure */ + +/* Misc. additional errors */ +#define NC_ENOTFOUND (-90) /**< No such file */ +#define NC_ECANTREMOVE (-91) /**< Can't remove file */ +#define NC_EINTERNAL (-92) /**< NetCDF Library Internal Error */ +#define NC_EPNETCDF (-93) /**< Error at PnetCDF layer */ + +/* The following was added in support of netcdf-4. Make all netcdf-4 + error codes < -100 so that errors can be added to netcdf-3 if + needed. */ +#define NC4_FIRST_ERROR (-100) /**< @internal All HDF5 errors < this. */ +#define NC_EHDFERR (-101) /**< Error at HDF5 layer. */ +#define NC_ECANTREAD (-102) /**< Can't read. */ +#define NC_ECANTWRITE (-103) /**< Can't write. */ +#define NC_ECANTCREATE (-104) /**< Can't create. */ +#define NC_EFILEMETA (-105) /**< Problem with file metadata. */ +#define NC_EDIMMETA (-106) /**< Problem with dimension metadata. */ +#define NC_EATTMETA (-107) /**< Problem with attribute metadata. */ +#define NC_EVARMETA (-108) /**< Problem with variable metadata. */ +#define NC_ENOCOMPOUND (-109) /**< Not a compound type. */ +#define NC_EATTEXISTS (-110) /**< Attribute already exists. */ +#define NC_ENOTNC4 (-111) /**< Attempting netcdf-4 operation on netcdf-3 file. */ +#define NC_ESTRICTNC3 (-112) /**< Attempting netcdf-4 operation on strict nc3 netcdf-4 file. */ +#define NC_ENOTNC3 (-113) /**< Attempting netcdf-3 operation on netcdf-4 file. */ +#define NC_ENOPAR (-114) /**< Parallel operation on file opened for non-parallel access. */ +#define NC_EPARINIT (-115) /**< Error initializing for parallel access. */ +#define NC_EBADGRPID (-116) /**< Bad group ID. */ +#define NC_EBADTYPID (-117) /**< Bad type ID. */ +#define NC_ETYPDEFINED (-118) /**< Type has already been defined and may not be edited. */ +#define NC_EBADFIELD (-119) /**< Bad field ID. */ +#define NC_EBADCLASS (-120) /**< Bad class. */ +#define NC_EMAPTYPE (-121) /**< Mapped access for atomic types only. */ +#define NC_ELATEFILL (-122) /**< Attempt to define fill value when data already exists. */ +#define NC_ELATEDEF (-123) /**< Attempt to define var properties, like deflate, after enddef. */ +#define NC_EDIMSCALE (-124) /**< Problem with HDF5 dimscales. */ +#define NC_ENOGRP (-125) /**< No group found. */ +#define NC_ESTORAGE (-126) /**< Can't specify both contiguous and chunking. */ +#define NC_EBADCHUNK (-127) /**< Bad chunksize. */ +#define NC_ENOTBUILT (-128) /**< Attempt to use feature that was not turned on when netCDF was built. */ +#define NC_EDISKLESS (-129) /**< Error in using diskless access. */ +#define NC_ECANTEXTEND (-130) /**< Attempt to extend dataset during ind. I/O operation. */ +#define NC_EMPI (-131) /**< MPI operation failed. */ + +#define NC_EFILTER (-132) /**< Filter operation failed. */ +#define NC_ERCFILE (-133) /**< RC file failure */ +#define NC_ENULLPAD (-134) /**< Header Bytes not Null-Byte padded */ +#define NC_EINMEMORY (-135) /**< In-memory file error */ +#define NC4_LAST_ERROR (-136) /**< @internal All netCDF errors > this. */ + +/** @internal This is used in netCDF-4 files for dimensions without + * coordinate vars. */ +#define DIM_WITHOUT_VARIABLE "This is a netCDF dimension but not a netCDF variable." + +/** @internal This is here at the request of the NCO team to support + * our mistake of having chunksizes be first ints, then + * size_t. Doh! */ +#define NC_HAVE_NEW_CHUNKING_API 1 + +/* Errors for all remote access methods(e.g. DAP and CDMREMOTE)*/ +#define NC_EURL (NC_EDAPURL) /**< Malformed URL */ +#define NC_ECONSTRAINT (NC_EDAPCONSTRAINT) /**< Malformed Constraint*/ + +/* + * The Interface + */ + +/* Declaration modifiers for DLL support (MSC et al) */ +#if defined(DLL_NETCDF) /* define when library is a DLL */ +# if defined(DLL_EXPORT) /* define when building the library */ +# define MSC_EXTRA __declspec(dllexport) +# else +# define MSC_EXTRA __declspec(dllimport) +# endif +# include +#else +#define MSC_EXTRA /**< Needed for DLL build. */ +#endif /* defined(DLL_NETCDF) */ + +#define EXTERNL MSC_EXTRA extern /**< Needed for DLL build. */ + +#if defined(DLL_NETCDF) /* define when library is a DLL */ +EXTERNL int ncerr; +EXTERNL int ncopts; +#endif + +EXTERNL const char * +nc_inq_libvers(void); + +EXTERNL const char * +nc_strerror(int ncerr); + +/* Set up user-defined format. */ +typedef struct NC_Dispatch NC_Dispatch; +EXTERNL int +nc_def_user_format(int mode_flag, NC_Dispatch *dispatch_table, char *magic_number); + +EXTERNL int +nc_inq_user_format(int mode_flag, NC_Dispatch **dispatch_table, char *magic_number); + +EXTERNL int +nc__create(const char *path, int cmode, size_t initialsz, + size_t *chunksizehintp, int *ncidp); + +EXTERNL int +nc_create(const char *path, int cmode, int *ncidp); + +EXTERNL int +nc__open(const char *path, int mode, + size_t *chunksizehintp, int *ncidp); + +EXTERNL int +nc_open(const char *path, int mode, int *ncidp); + +/* Learn the path used to open/create the file. */ +EXTERNL int +nc_inq_path(int ncid, size_t *pathlen, char *path); + +/* Given an ncid and group name (NULL gets root group), return + * locid. */ +EXTERNL int +nc_inq_ncid(int ncid, const char *name, int *grp_ncid); + +/* Given a location id, return the number of groups it contains, and + * an array of their locids. */ +EXTERNL int +nc_inq_grps(int ncid, int *numgrps, int *ncids); + +/* Given locid, find name of group. (Root group is named "/".) */ +EXTERNL int +nc_inq_grpname(int ncid, char *name); + +/* Given ncid, find full name and len of full name. (Root group is + * named "/", with length 1.) */ +EXTERNL int +nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); + +/* Given ncid, find len of full name. */ +EXTERNL int +nc_inq_grpname_len(int ncid, size_t *lenp); + +/* Given an ncid, find the ncid of its parent group. */ +EXTERNL int +nc_inq_grp_parent(int ncid, int *parent_ncid); + +/* Given a name and parent ncid, find group ncid. */ +EXTERNL int +nc_inq_grp_ncid(int ncid, const char *grp_name, int *grp_ncid); + +/* Given a full name and ncid, find group ncid. */ +EXTERNL int +nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid); + +/* Get a list of ids for all the variables in a group. */ +EXTERNL int +nc_inq_varids(int ncid, int *nvars, int *varids); + +/* Find all dimids for a location. This finds all dimensions in a + * group, or any of its parents. */ +EXTERNL int +nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents); + +/* Find all user-defined types for a location. This finds all + * user-defined types in a group. */ +EXTERNL int +nc_inq_typeids(int ncid, int *ntypes, int *typeids); + +/* Are two types equal? */ +EXTERNL int +nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2, + nc_type typeid2, int *equal); + +/* Create a group. its ncid is returned in the new_ncid pointer. */ +EXTERNL int +nc_def_grp(int parent_ncid, const char *name, int *new_ncid); + +/* Rename a group */ +EXTERNL int +nc_rename_grp(int grpid, const char *name); + +/* Here are functions for dealing with compound types. */ + +/* Create a compound type. */ +EXTERNL int +nc_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp); + +/* Insert a named field into a compound type. */ +EXTERNL int +nc_insert_compound(int ncid, nc_type xtype, const char *name, + size_t offset, nc_type field_typeid); + +/* Insert a named array into a compound type. */ +EXTERNL int +nc_insert_array_compound(int ncid, nc_type xtype, const char *name, + size_t offset, nc_type field_typeid, + int ndims, const int *dim_sizes); + +/* Get the name and size of a type. */ +EXTERNL int +nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size); + +/* Get the id of a type from the name. */ +EXTERNL int +nc_inq_typeid(int ncid, const char *name, nc_type *typeidp); + +/* Get the name, size, and number of fields in a compound type. */ +EXTERNL int +nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *sizep, + size_t *nfieldsp); + +/* Get the name of a compound type. */ +EXTERNL int +nc_inq_compound_name(int ncid, nc_type xtype, char *name); + +/* Get the size of a compound type. */ +EXTERNL int +nc_inq_compound_size(int ncid, nc_type xtype, size_t *sizep); + +/* Get the number of fields in this compound type. */ +EXTERNL int +nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp); + +/* Given the xtype and the fieldid, get all info about it. */ +EXTERNL int +nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, char *name, + size_t *offsetp, nc_type *field_typeidp, int *ndimsp, + int *dim_sizesp); + +/* Given the typeid and the fieldid, get the name. */ +EXTERNL int +nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid, + char *name); + +/* Given the xtype and the name, get the fieldid. */ +EXTERNL int +nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name, + int *fieldidp); + +/* Given the xtype and fieldid, get the offset. */ +EXTERNL int +nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid, + size_t *offsetp); + +/* Given the xtype and the fieldid, get the type of that field. */ +EXTERNL int +nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid, + nc_type *field_typeidp); + +/* Given the xtype and the fieldid, get the number of dimensions for + * that field (scalars are 0). */ +EXTERNL int +nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid, + int *ndimsp); + +/* Given the xtype and the fieldid, get the sizes of dimensions for + * that field. User must have allocated storage for the dim_sizes. */ +EXTERNL int +nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid, + int *dim_sizes); + +/** This is the type of arrays of vlens. */ +typedef struct { + size_t len; /**< Length of VL data (in base type units) */ + void *p; /**< Pointer to VL data */ +} nc_vlen_t; + +/** Calculate an offset for creating a compound type. This calls a + * mysterious C macro which was found carved into one of the blocks of + * the Newgrange passage tomb in County Meath, Ireland. This code has + * been carbon dated to 3200 B.C.E. */ +#define NC_COMPOUND_OFFSET(S,M) (offsetof(S,M)) + +/* Create a variable length type. */ +EXTERNL int +nc_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type *xtypep); + +/* Find out about a vlen. */ +EXTERNL int +nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t *datum_sizep, + nc_type *base_nc_typep); + +/* When you read VLEN type the library will actually allocate the + * storage space for the data. This storage space must be freed, so + * pass the pointer back to this function, when you're done with the + * data, and it will free the vlen memory. */ +EXTERNL int +nc_free_vlen(nc_vlen_t *vl); + +EXTERNL int +nc_free_vlens(size_t len, nc_vlen_t vlens[]); + +/* Put or get one element in a vlen array. */ +EXTERNL int +nc_put_vlen_element(int ncid, int typeid1, void *vlen_element, + size_t len, const void *data); + +EXTERNL int +nc_get_vlen_element(int ncid, int typeid1, const void *vlen_element, + size_t *len, void *data); + +/* When you read the string type the library will allocate the storage + * space for the data. This storage space must be freed, so pass the + * pointer back to this function, when you're done with the data, and + * it will free the string memory. */ +EXTERNL int +nc_free_string(size_t len, char **data); + +/* Find out about a user defined type. */ +EXTERNL int +nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size, + nc_type *base_nc_typep, size_t *nfieldsp, int *classp); + +/* Write an attribute of any type. */ +EXTERNL int +nc_put_att(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const void *op); + +/* Read an attribute of any type. */ +EXTERNL int +nc_get_att(int ncid, int varid, const char *name, void *ip); + +/* Enum type. */ + +/* Create an enum type. Provide a base type and a name. At the moment + * only ints are accepted as base types. */ +EXTERNL int +nc_def_enum(int ncid, nc_type base_typeid, const char *name, + nc_type *typeidp); + +/* Insert a named value into an enum type. The value must fit within + * the size of the enum type, the name size must be <= NC_MAX_NAME. */ +EXTERNL int +nc_insert_enum(int ncid, nc_type xtype, const char *name, + const void *value); + +/* Get information about an enum type: its name, base type and the + * number of members defined. */ +EXTERNL int +nc_inq_enum(int ncid, nc_type xtype, char *name, nc_type *base_nc_typep, + size_t *base_sizep, size_t *num_membersp); + +/* Get information about an enum member: a name and value. Name size + * will be <= NC_MAX_NAME. */ +EXTERNL int +nc_inq_enum_member(int ncid, nc_type xtype, int idx, char *name, + void *value); + + +/* Get enum name from enum value. Name size will be <= NC_MAX_NAME. */ +EXTERNL int +nc_inq_enum_ident(int ncid, nc_type xtype, long long value, char *identifier); + +/* Opaque type. */ + +/* Create an opaque type. Provide a size and a name. */ +EXTERNL int +nc_def_opaque(int ncid, size_t size, const char *name, nc_type *xtypep); + +/* Get information about an opaque type. */ +EXTERNL int +nc_inq_opaque(int ncid, nc_type xtype, char *name, size_t *sizep); + +/* Write entire var of any type. */ +EXTERNL int +nc_put_var(int ncid, int varid, const void *op); + +/* Read entire var of any type. */ +EXTERNL int +nc_get_var(int ncid, int varid, void *ip); + +/* Write one value. */ +EXTERNL int +nc_put_var1(int ncid, int varid, const size_t *indexp, + const void *op); + +/* Read one value. */ +EXTERNL int +nc_get_var1(int ncid, int varid, const size_t *indexp, void *ip); + +/* Write an array of values. */ +EXTERNL int +nc_put_vara(int ncid, int varid, const size_t *startp, + const size_t *countp, const void *op); + +/* Read an array of values. */ +EXTERNL int +nc_get_vara(int ncid, int varid, const size_t *startp, + const size_t *countp, void *ip); + +/* Write slices of an array of values. */ +EXTERNL int +nc_put_vars(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const void *op); + +/* Read slices of an array of values. */ +EXTERNL int +nc_get_vars(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + void *ip); + +/* Write mapped slices of an array of values. */ +EXTERNL int +nc_put_varm(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const void *op); + +/* Read mapped slices of an array of values. */ +EXTERNL int +nc_get_varm(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, void *ip); + +/* Extra netcdf-4 stuff. */ + +/* Set compression settings for a variable. Lower is faster, higher is + * better. Must be called after nc_def_var and before nc_enddef. */ +EXTERNL int +nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, + int deflate_level); + +/* Find out compression settings of a var. */ +EXTERNL int +nc_inq_var_deflate(int ncid, int varid, int *shufflep, + int *deflatep, int *deflate_levelp); + +/* Find out szip settings of a var. */ +EXTERNL int +nc_inq_var_szip(int ncid, int varid, int *options_maskp, int *pixels_per_blockp); + +/* Set fletcher32 checksum for a var. This must be done after nc_def_var + and before nc_enddef. */ +EXTERNL int +nc_def_var_fletcher32(int ncid, int varid, int fletcher32); + +/* Inquire about fletcher32 checksum for a var. */ +EXTERNL int +nc_inq_var_fletcher32(int ncid, int varid, int *fletcher32p); + +/* Define chunking for a variable. This must be done after nc_def_var + and before nc_enddef. */ +EXTERNL int +nc_def_var_chunking(int ncid, int varid, int storage, const size_t *chunksizesp); + +/* Inq chunking stuff for a var. */ +EXTERNL int +nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp); + +/* Define fill value behavior for a variable. This must be done after + nc_def_var and before nc_enddef. */ +EXTERNL int +nc_def_var_fill(int ncid, int varid, int no_fill, const void *fill_value); + +/* Inq fill value setting for a var. */ +EXTERNL int +nc_inq_var_fill(int ncid, int varid, int *no_fill, void *fill_valuep); + +/* Define the endianness of a variable. */ +EXTERNL int +nc_def_var_endian(int ncid, int varid, int endian); + +/* Learn about the endianness of a variable. */ +EXTERNL int +nc_inq_var_endian(int ncid, int varid, int *endianp); + +/* Define a filter for a variable */ +EXTERNL int +nc_def_var_filter(int ncid, int varid, unsigned int id, size_t nparams, const unsigned int* parms); + +/* Learn about the filter on a variable */ +EXTERNL int +nc_inq_var_filter(int ncid, int varid, unsigned int* idp, size_t* nparams, unsigned int* params); + +/* Set the fill mode (classic or 64-bit offset files only). */ +EXTERNL int +nc_set_fill(int ncid, int fillmode, int *old_modep); + +/* Set the default nc_create format to NC_FORMAT_CLASSIC, NC_FORMAT_64BIT, + * NC_FORMAT_CDF5, NC_FORMAT_NETCDF4, or NC_FORMAT_NETCDF4_CLASSIC */ +EXTERNL int +nc_set_default_format(int format, int *old_formatp); + +/* Set the cache size, nelems, and preemption policy. */ +EXTERNL int +nc_set_chunk_cache(size_t size, size_t nelems, float preemption); + +/* Get the cache size, nelems, and preemption policy. */ +EXTERNL int +nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp); + +/* Set the per-variable cache size, nelems, and preemption policy. */ +EXTERNL int +nc_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems, + float preemption); + +/* Get the per-variable cache size, nelems, and preemption policy. */ +EXTERNL int +nc_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp, + float *preemptionp); + +EXTERNL int +nc_redef(int ncid); + +/* Is this ever used? Convert to parameter form */ +EXTERNL int +nc__enddef(int ncid, size_t h_minfree, size_t v_align, + size_t v_minfree, size_t r_align); + +EXTERNL int +nc_enddef(int ncid); + +EXTERNL int +nc_sync(int ncid); + +EXTERNL int +nc_abort(int ncid); + +EXTERNL int +nc_close(int ncid); + +EXTERNL int +nc_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp); + +EXTERNL int +nc_inq_ndims(int ncid, int *ndimsp); + +EXTERNL int +nc_inq_nvars(int ncid, int *nvarsp); + +EXTERNL int +nc_inq_natts(int ncid, int *nattsp); + +EXTERNL int +nc_inq_unlimdim(int ncid, int *unlimdimidp); + +/* The next function is for NetCDF-4 only */ +EXTERNL int +nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp); + +/* Added in 3.6.1 to return format of netCDF file. */ +EXTERNL int +nc_inq_format(int ncid, int *formatp); + +/* Added in 4.3.1 to return additional format info */ +EXTERNL int +nc_inq_format_extended(int ncid, int *formatp, int* modep); + +/* Begin _dim */ + +EXTERNL int +nc_def_dim(int ncid, const char *name, size_t len, int *idp); + +EXTERNL int +nc_inq_dimid(int ncid, const char *name, int *idp); + +EXTERNL int +nc_inq_dim(int ncid, int dimid, char *name, size_t *lenp); + +EXTERNL int +nc_inq_dimname(int ncid, int dimid, char *name); + +EXTERNL int +nc_inq_dimlen(int ncid, int dimid, size_t *lenp); + +EXTERNL int +nc_rename_dim(int ncid, int dimid, const char *name); + +/* End _dim */ +/* Begin _att */ + +EXTERNL int +nc_inq_att(int ncid, int varid, const char *name, + nc_type *xtypep, size_t *lenp); + +EXTERNL int +nc_inq_attid(int ncid, int varid, const char *name, int *idp); + +EXTERNL int +nc_inq_atttype(int ncid, int varid, const char *name, nc_type *xtypep); + +EXTERNL int +nc_inq_attlen(int ncid, int varid, const char *name, size_t *lenp); + +EXTERNL int +nc_inq_attname(int ncid, int varid, int attnum, char *name); + +EXTERNL int +nc_copy_att(int ncid_in, int varid_in, const char *name, int ncid_out, int varid_out); + +EXTERNL int +nc_rename_att(int ncid, int varid, const char *name, const char *newname); + +EXTERNL int +nc_del_att(int ncid, int varid, const char *name); + +/* End _att */ +/* Begin {put,get}_att */ +EXTERNL int +nc_put_att_text(int ncid, int varid, const char *name, + size_t len, const char *op); + +EXTERNL int +nc_get_att_text(int ncid, int varid, const char *name, char *ip); + +EXTERNL int +nc_put_att_string(int ncid, int varid, const char *name, + size_t len, const char **op); + +EXTERNL int +nc_get_att_string(int ncid, int varid, const char *name, char **ip); + +EXTERNL int +nc_put_att_uchar(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const unsigned char *op); + +EXTERNL int +nc_get_att_uchar(int ncid, int varid, const char *name, unsigned char *ip); + +EXTERNL int +nc_put_att_schar(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const signed char *op); + +EXTERNL int +nc_get_att_schar(int ncid, int varid, const char *name, signed char *ip); + +EXTERNL int +nc_put_att_short(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const short *op); + +EXTERNL int +nc_get_att_short(int ncid, int varid, const char *name, short *ip); + +EXTERNL int +nc_put_att_int(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const int *op); + +EXTERNL int +nc_get_att_int(int ncid, int varid, const char *name, int *ip); + +EXTERNL int +nc_put_att_long(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const long *op); + +EXTERNL int +nc_get_att_long(int ncid, int varid, const char *name, long *ip); + +EXTERNL int +nc_put_att_float(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const float *op); + +EXTERNL int +nc_get_att_float(int ncid, int varid, const char *name, float *ip); + +EXTERNL int +nc_put_att_double(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const double *op); + +EXTERNL int +nc_get_att_double(int ncid, int varid, const char *name, double *ip); + +EXTERNL int +nc_put_att_ushort(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const unsigned short *op); + +EXTERNL int +nc_get_att_ushort(int ncid, int varid, const char *name, unsigned short *ip); + +EXTERNL int +nc_put_att_uint(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const unsigned int *op); + +EXTERNL int +nc_get_att_uint(int ncid, int varid, const char *name, unsigned int *ip); + +EXTERNL int +nc_put_att_longlong(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const long long *op); + +EXTERNL int +nc_get_att_longlong(int ncid, int varid, const char *name, long long *ip); + +EXTERNL int +nc_put_att_ulonglong(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const unsigned long long *op); + +EXTERNL int +nc_get_att_ulonglong(int ncid, int varid, const char *name, + unsigned long long *ip); + + +/* End {put,get}_att */ +/* Begin _var */ + +EXTERNL int +nc_def_var(int ncid, const char *name, nc_type xtype, int ndims, + const int *dimidsp, int *varidp); + +EXTERNL int +nc_inq_var(int ncid, int varid, char *name, nc_type *xtypep, + int *ndimsp, int *dimidsp, int *nattsp); + +EXTERNL int +nc_inq_varid(int ncid, const char *name, int *varidp); + +EXTERNL int +nc_inq_varname(int ncid, int varid, char *name); + +EXTERNL int +nc_inq_vartype(int ncid, int varid, nc_type *xtypep); + +EXTERNL int +nc_inq_varndims(int ncid, int varid, int *ndimsp); + +EXTERNL int +nc_inq_vardimid(int ncid, int varid, int *dimidsp); + +EXTERNL int +nc_inq_varnatts(int ncid, int varid, int *nattsp); + +EXTERNL int +nc_rename_var(int ncid, int varid, const char *name); + +EXTERNL int +nc_copy_var(int ncid_in, int varid, int ncid_out); + +#ifndef ncvarcpy +/* support the old name for now */ +#define ncvarcpy(ncid_in, varid, ncid_out) ncvarcopy((ncid_in), (varid), (ncid_out)) +#endif + +/* End _var */ +/* Begin {put,get}_var1 */ + +EXTERNL int +nc_put_var1_text(int ncid, int varid, const size_t *indexp, const char *op); + +EXTERNL int +nc_get_var1_text(int ncid, int varid, const size_t *indexp, char *ip); + +EXTERNL int +nc_put_var1_uchar(int ncid, int varid, const size_t *indexp, + const unsigned char *op); + +EXTERNL int +nc_get_var1_uchar(int ncid, int varid, const size_t *indexp, + unsigned char *ip); + +EXTERNL int +nc_put_var1_schar(int ncid, int varid, const size_t *indexp, + const signed char *op); + +EXTERNL int +nc_get_var1_schar(int ncid, int varid, const size_t *indexp, + signed char *ip); + +EXTERNL int +nc_put_var1_short(int ncid, int varid, const size_t *indexp, + const short *op); + +EXTERNL int +nc_get_var1_short(int ncid, int varid, const size_t *indexp, + short *ip); + +EXTERNL int +nc_put_var1_int(int ncid, int varid, const size_t *indexp, const int *op); + +EXTERNL int +nc_get_var1_int(int ncid, int varid, const size_t *indexp, int *ip); + +EXTERNL int +nc_put_var1_long(int ncid, int varid, const size_t *indexp, const long *op); + +EXTERNL int +nc_get_var1_long(int ncid, int varid, const size_t *indexp, long *ip); + +EXTERNL int +nc_put_var1_float(int ncid, int varid, const size_t *indexp, const float *op); + +EXTERNL int +nc_get_var1_float(int ncid, int varid, const size_t *indexp, float *ip); + +EXTERNL int +nc_put_var1_double(int ncid, int varid, const size_t *indexp, const double *op); + +EXTERNL int +nc_get_var1_double(int ncid, int varid, const size_t *indexp, double *ip); + +EXTERNL int +nc_put_var1_ushort(int ncid, int varid, const size_t *indexp, + const unsigned short *op); + +EXTERNL int +nc_get_var1_ushort(int ncid, int varid, const size_t *indexp, + unsigned short *ip); + +EXTERNL int +nc_put_var1_uint(int ncid, int varid, const size_t *indexp, + const unsigned int *op); + +EXTERNL int +nc_get_var1_uint(int ncid, int varid, const size_t *indexp, + unsigned int *ip); + +EXTERNL int +nc_put_var1_longlong(int ncid, int varid, const size_t *indexp, + const long long *op); + +EXTERNL int +nc_get_var1_longlong(int ncid, int varid, const size_t *indexp, + long long *ip); + +EXTERNL int +nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp, + const unsigned long long *op); + +EXTERNL int +nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp, + unsigned long long *ip); + +EXTERNL int +nc_put_var1_string(int ncid, int varid, const size_t *indexp, + const char **op); + +EXTERNL int +nc_get_var1_string(int ncid, int varid, const size_t *indexp, + char **ip); + +/* End {put,get}_var1 */ +/* Begin {put,get}_vara */ + +EXTERNL int +nc_put_vara_text(int ncid, int varid, const size_t *startp, + const size_t *countp, const char *op); + +EXTERNL int +nc_get_vara_text(int ncid, int varid, const size_t *startp, + const size_t *countp, char *ip); + +EXTERNL int +nc_put_vara_uchar(int ncid, int varid, const size_t *startp, + const size_t *countp, const unsigned char *op); + +EXTERNL int +nc_get_vara_uchar(int ncid, int varid, const size_t *startp, + const size_t *countp, unsigned char *ip); + +EXTERNL int +nc_put_vara_schar(int ncid, int varid, const size_t *startp, + const size_t *countp, const signed char *op); + +EXTERNL int +nc_get_vara_schar(int ncid, int varid, const size_t *startp, + const size_t *countp, signed char *ip); + +EXTERNL int +nc_put_vara_short(int ncid, int varid, const size_t *startp, + const size_t *countp, const short *op); + +EXTERNL int +nc_get_vara_short(int ncid, int varid, const size_t *startp, + const size_t *countp, short *ip); + +EXTERNL int +nc_put_vara_int(int ncid, int varid, const size_t *startp, + const size_t *countp, const int *op); + +EXTERNL int +nc_get_vara_int(int ncid, int varid, const size_t *startp, + const size_t *countp, int *ip); + +EXTERNL int +nc_put_vara_long(int ncid, int varid, const size_t *startp, + const size_t *countp, const long *op); + +EXTERNL int +nc_get_vara_long(int ncid, int varid, + const size_t *startp, const size_t *countp, long *ip); + +EXTERNL int +nc_put_vara_float(int ncid, int varid, + const size_t *startp, const size_t *countp, const float *op); + +EXTERNL int +nc_get_vara_float(int ncid, int varid, + const size_t *startp, const size_t *countp, float *ip); + +EXTERNL int +nc_put_vara_double(int ncid, int varid, const size_t *startp, + const size_t *countp, const double *op); + +EXTERNL int +nc_get_vara_double(int ncid, int varid, const size_t *startp, + const size_t *countp, double *ip); + +EXTERNL int +nc_put_vara_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, const unsigned short *op); + +EXTERNL int +nc_get_vara_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, unsigned short *ip); + +EXTERNL int +nc_put_vara_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, const unsigned int *op); + +EXTERNL int +nc_get_vara_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, unsigned int *ip); + +EXTERNL int +nc_put_vara_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, const long long *op); + +EXTERNL int +nc_get_vara_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, long long *ip); + +EXTERNL int +nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, const unsigned long long *op); + +EXTERNL int +nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, unsigned long long *ip); + +EXTERNL int +nc_put_vara_string(int ncid, int varid, const size_t *startp, + const size_t *countp, const char **op); + +EXTERNL int +nc_get_vara_string(int ncid, int varid, const size_t *startp, + const size_t *countp, char **ip); + +/* End {put,get}_vara */ +/* Begin {put,get}_vars */ + +EXTERNL int +nc_put_vars_text(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const char *op); + +EXTERNL int +nc_get_vars_text(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + char *ip); + +EXTERNL int +nc_put_vars_uchar(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const unsigned char *op); + +EXTERNL int +nc_get_vars_uchar(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + unsigned char *ip); + +EXTERNL int +nc_put_vars_schar(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const signed char *op); + +EXTERNL int +nc_get_vars_schar(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + signed char *ip); + +EXTERNL int +nc_put_vars_short(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const short *op); + +EXTERNL int +nc_get_vars_short(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + short *ip); + +EXTERNL int +nc_put_vars_int(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const int *op); + +EXTERNL int +nc_get_vars_int(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + int *ip); + +EXTERNL int +nc_put_vars_long(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const long *op); + +EXTERNL int +nc_get_vars_long(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + long *ip); + +EXTERNL int +nc_put_vars_float(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const float *op); + +EXTERNL int +nc_get_vars_float(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + float *ip); + +EXTERNL int +nc_put_vars_double(int ncid, int varid, + const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, + const double *op); + +EXTERNL int +nc_get_vars_double(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + double *ip); + +EXTERNL int +nc_put_vars_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const unsigned short *op); + +EXTERNL int +nc_get_vars_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + unsigned short *ip); + +EXTERNL int +nc_put_vars_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const unsigned int *op); + +EXTERNL int +nc_get_vars_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + unsigned int *ip); + +EXTERNL int +nc_put_vars_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const long long *op); + +EXTERNL int +nc_get_vars_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + long long *ip); + +EXTERNL int +nc_put_vars_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const unsigned long long *op); + +EXTERNL int +nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + unsigned long long *ip); + +EXTERNL int +nc_put_vars_string(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const char **op); + +EXTERNL int +nc_get_vars_string(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + char **ip); + +/* End {put,get}_vars */ +/* Begin {put,get}_varm */ + +EXTERNL int +nc_put_varm_text(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const char *op); + +EXTERNL int +nc_get_varm_text(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, char *ip); + +EXTERNL int +nc_put_varm_uchar(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const unsigned char *op); + +EXTERNL int +nc_get_varm_uchar(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, unsigned char *ip); + +EXTERNL int +nc_put_varm_schar(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const signed char *op); + +EXTERNL int +nc_get_varm_schar(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, signed char *ip); + +EXTERNL int +nc_put_varm_short(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const short *op); + +EXTERNL int +nc_get_varm_short(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, short *ip); + +EXTERNL int +nc_put_varm_int(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const int *op); + +EXTERNL int +nc_get_varm_int(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, int *ip); + +EXTERNL int +nc_put_varm_long(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const long *op); + +EXTERNL int +nc_get_varm_long(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, long *ip); + +EXTERNL int +nc_put_varm_float(int ncid, int varid,const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const float *op); + +EXTERNL int +nc_get_varm_float(int ncid, int varid,const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, float *ip); + +EXTERNL int +nc_put_varm_double(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t *imapp, const double *op); + +EXTERNL int +nc_get_varm_double(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, double *ip); + +EXTERNL int +nc_put_varm_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const unsigned short *op); + +EXTERNL int +nc_get_varm_ushort(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, unsigned short *ip); + +EXTERNL int +nc_put_varm_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const unsigned int *op); + +EXTERNL int +nc_get_varm_uint(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, unsigned int *ip); + +EXTERNL int +nc_put_varm_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const long long *op); + +EXTERNL int +nc_get_varm_longlong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, long long *ip); + +EXTERNL int +nc_put_varm_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const unsigned long long *op); + +EXTERNL int +nc_get_varm_ulonglong(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, unsigned long long *ip); + +EXTERNL int +nc_put_varm_string(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const char **op); + +EXTERNL int +nc_get_varm_string(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, char **ip); + +/* End {put,get}_varm */ +/* Begin {put,get}_var */ + +EXTERNL int +nc_put_var_text(int ncid, int varid, const char *op); + +EXTERNL int +nc_get_var_text(int ncid, int varid, char *ip); + +EXTERNL int +nc_put_var_uchar(int ncid, int varid, const unsigned char *op); + +EXTERNL int +nc_get_var_uchar(int ncid, int varid, unsigned char *ip); + +EXTERNL int +nc_put_var_schar(int ncid, int varid, const signed char *op); + +EXTERNL int +nc_get_var_schar(int ncid, int varid, signed char *ip); + +EXTERNL int +nc_put_var_short(int ncid, int varid, const short *op); + +EXTERNL int +nc_get_var_short(int ncid, int varid, short *ip); + +EXTERNL int +nc_put_var_int(int ncid, int varid, const int *op); + +EXTERNL int +nc_get_var_int(int ncid, int varid, int *ip); + +EXTERNL int +nc_put_var_long(int ncid, int varid, const long *op); + +EXTERNL int +nc_get_var_long(int ncid, int varid, long *ip); + +EXTERNL int +nc_put_var_float(int ncid, int varid, const float *op); + +EXTERNL int +nc_get_var_float(int ncid, int varid, float *ip); + +EXTERNL int +nc_put_var_double(int ncid, int varid, const double *op); + +EXTERNL int +nc_get_var_double(int ncid, int varid, double *ip); + +EXTERNL int +nc_put_var_ushort(int ncid, int varid, const unsigned short *op); + +EXTERNL int +nc_get_var_ushort(int ncid, int varid, unsigned short *ip); + +EXTERNL int +nc_put_var_uint(int ncid, int varid, const unsigned int *op); + +EXTERNL int +nc_get_var_uint(int ncid, int varid, unsigned int *ip); + +EXTERNL int +nc_put_var_longlong(int ncid, int varid, const long long *op); + +EXTERNL int +nc_get_var_longlong(int ncid, int varid, long long *ip); + +EXTERNL int +nc_put_var_ulonglong(int ncid, int varid, const unsigned long long *op); + +EXTERNL int +nc_get_var_ulonglong(int ncid, int varid, unsigned long long *ip); + +EXTERNL int +nc_put_var_string(int ncid, int varid, const char **op); + +EXTERNL int +nc_get_var_string(int ncid, int varid, char **ip); + +/* Begin Deprecated, same as functions with "_ubyte" replaced by "_uchar" */ +EXTERNL int +nc_put_att_ubyte(int ncid, int varid, const char *name, nc_type xtype, + size_t len, const unsigned char *op); +EXTERNL int +nc_get_att_ubyte(int ncid, int varid, const char *name, + unsigned char *ip); +EXTERNL int +nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp, + const unsigned char *op); +EXTERNL int +nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp, + unsigned char *ip); +EXTERNL int +nc_put_vara_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, const unsigned char *op); +EXTERNL int +nc_get_vara_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, unsigned char *ip); +EXTERNL int +nc_put_vars_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const unsigned char *op); +EXTERNL int +nc_get_vars_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + unsigned char *ip); +EXTERNL int +nc_put_varm_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, const unsigned char *op); +EXTERNL int +nc_get_varm_ubyte(int ncid, int varid, const size_t *startp, + const size_t *countp, const ptrdiff_t *stridep, + const ptrdiff_t * imapp, unsigned char *ip); +EXTERNL int +nc_put_var_ubyte(int ncid, int varid, const unsigned char *op); +EXTERNL int +nc_get_var_ubyte(int ncid, int varid, unsigned char *ip); +/* End Deprecated */ + +/* Set the log level. 0 shows only errors, 1 only major messages, + * etc., to 5, which shows way too much information. */ +EXTERNL int +nc_set_log_level(int new_level); + +/* Use this to turn off logging by calling + nc_log_level(NC_TURN_OFF_LOGGING) */ +#define NC_TURN_OFF_LOGGING (-1) + +/* Show the netCDF library's in-memory metadata for a file. */ +EXTERNL int +nc_show_metadata(int ncid); + +/* End {put,get}_var */ + +/* #ifdef _CRAYMPP */ +/* + * Public interfaces to better support + * CRAY multi-processor systems like T3E. + * A tip of the hat to NERSC. + */ +/* + * It turns out we need to declare and define + * these public interfaces on all platforms + * or things get ugly working out the + * FORTRAN interface. On !_CRAYMPP platforms, + * these functions work as advertised, but you + * can only use "processor element" 0. + */ + +EXTERNL int +nc__create_mp(const char *path, int cmode, size_t initialsz, int basepe, + size_t *chunksizehintp, int *ncidp); + +EXTERNL int +nc__open_mp(const char *path, int mode, int basepe, + size_t *chunksizehintp, int *ncidp); + +EXTERNL int +nc_delete(const char *path); + +EXTERNL int +nc_delete_mp(const char *path, int basepe); + +EXTERNL int +nc_set_base_pe(int ncid, int pe); + +EXTERNL int +nc_inq_base_pe(int ncid, int *pe); + +/* #endif _CRAYMPP */ + +/* This v2 function is used in the nc_test program. */ +EXTERNL int +nctypelen(nc_type datatype); + +/* Begin v2.4 backward compatibility */ + +/** Backward compatible alias. */ +/**@{*/ +#define FILL_BYTE NC_FILL_BYTE +#define FILL_CHAR NC_FILL_CHAR +#define FILL_SHORT NC_FILL_SHORT +#define FILL_LONG NC_FILL_INT +#define FILL_FLOAT NC_FILL_FLOAT +#define FILL_DOUBLE NC_FILL_DOUBLE + +#define MAX_NC_DIMS NC_MAX_DIMS +#define MAX_NC_ATTRS NC_MAX_ATTRS +#define MAX_NC_VARS NC_MAX_VARS +#define MAX_NC_NAME NC_MAX_NAME +#define MAX_VAR_DIMS NC_MAX_VAR_DIMS +/**@}*/ + + +/* + * Global error status + */ +EXTERNL int ncerr; + +#define NC_ENTOOL NC_EMAXNAME /**< Backward compatibility */ +#define NC_EXDR (-32) /**< V2 API error. */ +#define NC_SYSERR (-31) /**< V2 API system error. */ + +/* + * Global options variable. + * Used to determine behavior of error handler. + */ +#define NC_FATAL 1 /**< For V2 API, exit on error. */ +#define NC_VERBOSE 2 /**< For V2 API, be verbose on error. */ + +/** V2 API error handling. Default is (NC_FATAL | NC_VERBOSE). */ +EXTERNL int ncopts; + +EXTERNL void +nc_advise(const char *cdf_routine_name, int err, const char *fmt,...); + +/** + * C data type corresponding to a netCDF NC_LONG argument, a signed 32 + * bit object. This is the only thing in this file which architecture + * dependent. + */ +typedef int nclong; + +EXTERNL int +nccreate(const char* path, int cmode); + +EXTERNL int +ncopen(const char* path, int mode); + +EXTERNL int +ncsetfill(int ncid, int fillmode); + +EXTERNL int +ncredef(int ncid); + +EXTERNL int +ncendef(int ncid); + +EXTERNL int +ncsync(int ncid); + +EXTERNL int +ncabort(int ncid); + +EXTERNL int +ncclose(int ncid); + +EXTERNL int +ncinquire(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimp); + +EXTERNL int +ncdimdef(int ncid, const char *name, long len); + +EXTERNL int +ncdimid(int ncid, const char *name); + +EXTERNL int +ncdiminq(int ncid, int dimid, char *name, long *lenp); + +EXTERNL int +ncdimrename(int ncid, int dimid, const char *name); + +EXTERNL int +ncattput(int ncid, int varid, const char *name, nc_type xtype, + int len, const void *op); + +EXTERNL int +ncattinq(int ncid, int varid, const char *name, nc_type *xtypep, int *lenp); + +EXTERNL int +ncattget(int ncid, int varid, const char *name, void *ip); + +EXTERNL int +ncattcopy(int ncid_in, int varid_in, const char *name, int ncid_out, + int varid_out); + +EXTERNL int +ncattname(int ncid, int varid, int attnum, char *name); + +EXTERNL int +ncattrename(int ncid, int varid, const char *name, const char *newname); + +EXTERNL int +ncattdel(int ncid, int varid, const char *name); + +EXTERNL int +ncvardef(int ncid, const char *name, nc_type xtype, + int ndims, const int *dimidsp); + +EXTERNL int +ncvarid(int ncid, const char *name); + +EXTERNL int +ncvarinq(int ncid, int varid, char *name, nc_type *xtypep, + int *ndimsp, int *dimidsp, int *nattsp); + +EXTERNL int +ncvarput1(int ncid, int varid, const long *indexp, const void *op); + +EXTERNL int +ncvarget1(int ncid, int varid, const long *indexp, void *ip); + +EXTERNL int +ncvarput(int ncid, int varid, const long *startp, const long *countp, + const void *op); + +EXTERNL int +ncvarget(int ncid, int varid, const long *startp, const long *countp, + void *ip); + +EXTERNL int +ncvarputs(int ncid, int varid, const long *startp, const long *countp, + const long *stridep, const void *op); + +EXTERNL int +ncvargets(int ncid, int varid, const long *startp, const long *countp, + const long *stridep, void *ip); + +EXTERNL int +ncvarputg(int ncid, int varid, const long *startp, const long *countp, + const long *stridep, const long *imapp, const void *op); + +EXTERNL int +ncvargetg(int ncid, int varid, const long *startp, const long *countp, + const long *stridep, const long *imapp, void *ip); + +EXTERNL int +ncvarrename(int ncid, int varid, const char *name); + +EXTERNL int +ncrecinq(int ncid, int *nrecvarsp, int *recvaridsp, long *recsizesp); + +EXTERNL int +ncrecget(int ncid, long recnum, void **datap); + +EXTERNL int +ncrecput(int ncid, long recnum, void *const *datap); + +/* This function may be called to force the library to + initialize itself. It is not required, however. +*/ +EXTERNL int nc_initialize(void); + +/* This function may be called to force the library to + cleanup global memory so that memory checkers will not + report errors. It is not required, however. +*/ +EXTERNL int nc_finalize(void); + +#if defined(__cplusplus) +} +#endif + +/* Define two hard-coded functionality-related + (as requested by community developers) macros. + This is not going to be standard practice. + Don't remove without an in-place replacement of some sort, + the are now (for better or worse) used by downstream + software external to Unidata. */ +#ifndef NC_HAVE_RENAME_GRP +#define NC_HAVE_RENAME_GRP /*!< rename_grp() support. */ +#endif + +#ifndef NC_HAVE_INQ_FORMAT_EXTENDED +#define NC_HAVE_INQ_FORMAT_EXTENDED /*!< inq_format_extended() support. */ +#endif + +#define NC_HAVE_META_H + +#endif /* _NETCDF_ */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_aux.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_aux.h new file mode 100644 index 00000000000..ef96cc03779 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_aux.h @@ -0,0 +1,55 @@ +/********************************************************************* + * Copyright 2010, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + * $Id$ + * $Header$ + *********************************************************************/ + +#ifndef NCAUX_H +#define NCAUX_H + +#define NCAUX_ALIGN_C 0 +#define NCAUX_ALIGN_UNIFORM 1 + +#if defined(__cplusplus) +extern "C" { +#endif + + +/** +Reclaim the output tree of data from a call +to e.g. nc_get_vara or the input to e.g. nc_put_vara. +This recursively walks the top-level instances to +reclaim any nested data such as vlen or strings or such. + +Assumes it is passed a pointer to count instances of xtype. +Reclaims any nested data. +WARNING: does not reclaim the top-level memory because +we do not know how it was allocated. +Should work for any netcdf format. +*/ + +EXTERNL int ncaux_reclaim_data(int ncid, int xtype, void* memory, size_t count); + + +EXTERNL int ncaux_begin_compound(int ncid, const char *name, int alignmode, void** tag); + +EXTERNL int ncaux_end_compound(void* tag, nc_type* typeid); + +EXTERNL int ncaux_abort_compound(void* tag); + +EXTERNL int ncaux_add_field(void* tag, const char *name, nc_type field_type, + int ndims, const int* dimsizes); + +/* Takes any type */ +EXTERNL size_t ncaux_type_alignment(int xtype, int ncid); + +/* Takes type classes only */ +EXTERNL size_t ncaux_class_alignment(int ncclass); + +#if defined(__cplusplus) +} +#endif + +#endif /*NCAUX_H*/ + diff --git a/contrib/netcdf/4.4.1.1/include/netcdf_f.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_f.h similarity index 100% rename from contrib/netcdf/4.4.1.1/include/netcdf_f.h rename to contrib/netcdf/netcdf-c-4.6.2/include/netcdf_f.h diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_mem.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_mem.h new file mode 100644 index 00000000000..3024473f4f5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_mem.h @@ -0,0 +1,43 @@ +/*! \file netcdf_mem.h + * + * Main header file for in-memory (diskless) functionality. + * + * Copyright 2010 University Corporation for Atmospheric + * Research/Unidata. See COPYRIGHT file for more info. + * + * See \ref copyright file for more info. + * + */ + +#ifndef NETCDF_MEM_H +#define NETCDF_MEM_H 1 + +typedef struct NC_memio { + size_t size; + void* memory; + int flags; +#define NC_MEMIO_LOCKED 1 /* Do not try to realloc or free provided memory */ +} NC_memio; + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Treate a memory block as a file; read-only */ +EXTERNL int nc_open_mem(const char* path, int mode, size_t size, void* memory, int* ncidp); + +EXTERNL int nc_create_mem(const char* path, int mode, size_t initialsize, int* ncidp); + +/* Alternative to nc_open_mem with extended capabilites + See docs/inmemory.md + */ +EXTERNL int nc_open_memio(const char* path, int mode, NC_memio* info, int* ncidp); + +/* Close memory file and return the final memory state */ +EXTERNL int nc_close_memio(int ncid, NC_memio* info); + +#if defined(__cplusplus) +} +#endif + +#endif /* NETCDF_MEM_H */ diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h new file mode 100644 index 00000000000..aee42d8dbca --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h @@ -0,0 +1,58 @@ +/*! \file netcdf_meta.h + * + * Meta information for libnetcdf which can be used by other packages which + * depend on libnetcdf. + * + * This file is automatically generated by the build system + * at configure time, and contains information related to + * how libnetcdf was built. It will not be required to + * include this file unless you want to probe the capabilities + * of libnetcdf. This should ideally only happen when configuring + * a project which depends on libnetcdf. At configure time, + * the dependent project can set its own macros which can be used + * in conditionals. + * + * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 + * University Corporation for Atmospheric Research/Unidata. + * See \ref copyright file for more info. + */ + +#ifndef NETCDF_META_H +#define NETCDF_META_H + +#define NC_VERSION_MAJOR 4 /*!< netcdf-c major version. */ +#define NC_VERSION_MINOR 6 /*!< netcdf-c minor version. */ +#define NC_VERSION_PATCH 2 /*!< netcdf-c patch version. */ +#define NC_VERSION_NOTE "" /*!< netcdf-c note. May be blank. */ + +/*! netcdf-c version string. + * + * The format of the netcdf-c version string is as follows: + * \code + * NC_VERSION_MAJOR.NC_VERSION_MINOR.NC_VERSION_PATCH.NC_VERSION_NOTE + * \endcode + * Note that the trailing NC_VERSION_NOTE may be empty. It serves for + * identifiers such as '-rc1', etc. + */ +#define NC_VERSION "4.6.2" + +#define NC_HAS_NC2 1 /*!< API version 2 support. */ +#define NC_HAS_NC4 1 /*!< API version 4 support. */ +#define NC_HAS_HDF4 0 /*!< HDF4 support. */ +#define NC_HAS_HDF5 1 /*!< HDF5 support. */ +#define NC_HAS_SZIP 0 /*!< szip support (HDF5 only) */ +#define NC_HAS_DAP2 1 /*!< DAP2 support. */ +#define NC_HAS_DAP4 1 /*!< DAP4 support. */ +#define NC_HAS_DISKLESS 1 /*!< diskless support. */ +#define NC_HAS_MMAP 0 /*!< mmap support. */ +#define NC_HAS_JNA 0 /*!< jna support. */ +#define NC_HAS_PNETCDF 0 /*!< PnetCDF support. */ +#define NC_HAS_PARALLEL4 0 /*!< parallel IO support via HDF5 */ +#define NC_HAS_PARALLEL 0 /*!< parallel IO support via HDF5 and/or PnetCDF. */ + +#define NC_HAS_CDF5 1 /*!< CDF5 support. */ +#define NC_HAS_ERANGE_FILL 0 /*!< ERANGE_FILL Support */ +#define NC_RELAX_COORD_BOUND 1 /*!< RELAX_COORD_BOUND */ + +#endif diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h.in b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h.in new file mode 100644 index 00000000000..e3859aef361 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_meta.h.in @@ -0,0 +1,58 @@ +/*! \file netcdf_meta.h + * + * Meta information for libnetcdf which can be used by other packages which + * depend on libnetcdf. + * + * This file is automatically generated by the build system + * at configure time, and contains information related to + * how libnetcdf was built. It will not be required to + * include this file unless you want to probe the capabilities + * of libnetcdf. This should ideally only happen when configuring + * a project which depends on libnetcdf. At configure time, + * the dependent project can set its own macros which can be used + * in conditionals. + * + * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 + * University Corporation for Atmospheric Research/Unidata. + * See \ref copyright file for more info. + */ + +#ifndef NETCDF_META_H +#define NETCDF_META_H + +#define NC_VERSION_MAJOR @NC_VERSION_MAJOR@ /*!< netcdf-c major version. */ +#define NC_VERSION_MINOR @NC_VERSION_MINOR@ /*!< netcdf-c minor version. */ +#define NC_VERSION_PATCH @NC_VERSION_PATCH@ /*!< netcdf-c patch version. */ +#define NC_VERSION_NOTE "@NC_VERSION_NOTE@" /*!< netcdf-c note. May be blank. */ + +/*! netcdf-c version string. + * + * The format of the netcdf-c version string is as follows: + * \code + * NC_VERSION_MAJOR.NC_VERSION_MINOR.NC_VERSION_PATCH.NC_VERSION_NOTE + * \endcode + * Note that the trailing NC_VERSION_NOTE may be empty. It serves for + * identifiers such as '-rc1', etc. + */ +#define NC_VERSION "@NC_VERSION@" + +#define NC_HAS_NC2 @NC_HAS_NC2@ /*!< API version 2 support. */ +#define NC_HAS_NC4 @NC_HAS_NC4@ /*!< API version 4 support. */ +#define NC_HAS_HDF4 @NC_HAS_HDF4@ /*!< HDF4 support. */ +#define NC_HAS_HDF5 @NC_HAS_HDF5@ /*!< HDF5 support. */ +#define NC_HAS_SZIP @NC_HAS_SZIP@ /*!< szip support (HDF5 only) */ +#define NC_HAS_DAP2 @NC_HAS_DAP2@ /*!< DAP2 support. */ +#define NC_HAS_DAP4 @NC_HAS_DAP4@ /*!< DAP4 support. */ +#define NC_HAS_DISKLESS @NC_HAS_DISKLESS@ /*!< diskless support. */ +#define NC_HAS_MMAP @NC_HAS_MMAP@ /*!< mmap support. */ +#define NC_HAS_JNA @NC_HAS_JNA@ /*!< jna support. */ +#define NC_HAS_PNETCDF @NC_HAS_PNETCDF@ /*!< PnetCDF support. */ +#define NC_HAS_PARALLEL4 @NC_HAS_PARALLEL4@ /*!< parallel IO support via HDF5 */ +#define NC_HAS_PARALLEL @NC_HAS_PARALLEL@ /*!< parallel IO support via HDF5 and/or PnetCDF. */ + +#define NC_HAS_CDF5 @NC_HAS_CDF5@ /*!< CDF5 support. */ +#define NC_HAS_ERANGE_FILL @NC_HAS_ERANGE_FILL@ /*!< ERANGE_FILL Support */ +#define NC_RELAX_COORD_BOUND @NC_RELAX_COORD_BOUND@ /*!< RELAX_COORD_BOUND */ + +#endif diff --git a/contrib/netcdf/4.4.1.1/include/netcdf_par.h b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_par.h similarity index 86% rename from contrib/netcdf/4.4.1.1/include/netcdf_par.h rename to contrib/netcdf/netcdf-c-4.6.2/include/netcdf_par.h index aa5142cedc6..f35365b9977 100644 --- a/contrib/netcdf/4.4.1.1/include/netcdf_par.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/netcdf_par.h @@ -7,8 +7,8 @@ * * This header file is for the parallel I/O functions of netCDF. * + * \author Ed Hartnett */ -/* "$Id: netcdf_par.h,v 1.1 2010/06/01 15:46:49 ed Exp $" */ #ifndef NETCDF_PAR_H #define NETCDF_PAR_H 1 @@ -19,8 +19,9 @@ extern "C" { #endif -/* Use these with nc_var_par_access(). */ +/** Use with nc_var_par_access() to set parallel access to independent. */ #define NC_INDEPENDENT 0 +/** Use with nc_var_par_access() to set parallel access to collective. */ #define NC_COLLECTIVE 1 /* Create a file and enable parallel I/O. */ diff --git a/contrib/netcdf/4.4.1.1/include/onstack.h b/contrib/netcdf/netcdf-c-4.6.2/include/onstack.h similarity index 98% rename from contrib/netcdf/4.4.1.1/include/onstack.h rename to contrib/netcdf/netcdf-c-4.6.2/include/onstack.h index a85e00b7085..29d84d8c44a 100644 --- a/contrib/netcdf/4.4.1.1/include/onstack.h +++ b/contrib/netcdf/netcdf-c-4.6.2/include/onstack.h @@ -37,7 +37,7 @@ # define alloca __builtin_alloca # endif #else -# if HAVE_ALLOCA_H +# ifdef HAVE_ALLOCA_H # include # elif defined(_AIX) # pragma alloca diff --git a/contrib/netcdf/netcdf-c-4.6.2/include/rnd.h b/contrib/netcdf/netcdf-c-4.6.2/include/rnd.h new file mode 100644 index 00000000000..90da7d2a140 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/include/rnd.h @@ -0,0 +1,22 @@ +/* Copyright 1996-2018, University Corporation for Atmospheric + * Research See netcdf/COPYRIGHT file for copying and redistribution + * conditions. + * + * This header file contains some macros for rounding numbers. + * + * Glenn Davis, 1996 + */ + +#ifndef _RND_H +#define _RND_H + +/* useful for aligning memory */ +#define _RNDUP(x, unit) ((((x) + (unit) - 1) / (unit)) \ + * (unit)) +#define _RNDDOWN(x, unit) ((x) - ((x)%(unit))) + +#define M_RND_UNIT (sizeof(double)) +#define M_RNDUP(x) _RNDUP(x, M_RND_UNIT) +#define M_RNDDOWN(x) __RNDDOWN(x, M_RND_UNIT) + +#endif /* _RND_H */ diff --git a/contrib/netcdf/4.4.1.1/install-sh b/contrib/netcdf/netcdf-c-4.6.2/install-sh similarity index 100% rename from contrib/netcdf/4.4.1.1/install-sh rename to contrib/netcdf/netcdf-c-4.6.2/install-sh diff --git a/contrib/netcdf/4.4.1.1/lib_flags.am b/contrib/netcdf/netcdf-c-4.6.2/lib_flags.am similarity index 76% rename from contrib/netcdf/4.4.1.1/lib_flags.am rename to contrib/netcdf/netcdf-c-4.6.2/lib_flags.am index 3f1e6bfa82c..58accdf60f9 100644 --- a/contrib/netcdf/4.4.1.1/lib_flags.am +++ b/contrib/netcdf/netcdf-c-4.6.2/lib_flags.am @@ -13,9 +13,8 @@ if USE_DAP AM_CPPFLAGS += -I${top_srcdir}/oc2 endif -# This turns on declspec magic in netcdf.h for windows DLLs. -if BUILD_DLL -AM_CPPFLAGS += -DDLL_NETCDF -endif +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; + + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/libdap2/CMakeLists.txt new file mode 100644 index 00000000000..a5bfb1023e6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/CMakeLists.txt @@ -0,0 +1,31 @@ +SET(dap2_SOURCES constraints.c dapcvt.c dapodom.c daputil.c ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c ncd2dispatch.c getvara.c dceconstraints.c dcetab.c dceparse.c dcelex.c) + +add_library(dap2 OBJECT ${dap2_SOURCES}) + +### +# Options related to the man page generation. +### + +### +# The C API man page. +### + +set(man_MANS netcdf.3) + +set(ARGS_MANPAGE -DAPI=C) + +IF (USE_NETCDF4) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) +ENDIF(USE_NETCDF4) + +IF (BUILD_DAP) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) +ENDIF(BUILD_DAP) + +IF (BUILD_PARALLEL) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) +ENDIF(BUILD_PARALLEL) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} dce.y CMakeLists.txt Makefile.am) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.am new file mode 100644 index 00000000000..01bf244c179 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.am @@ -0,0 +1,65 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2005, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to libdap2. Whatever that +# is! + +# Put together AM_CPPFLAGS and AM_LDFLAGS. +include $(top_srcdir)/lib_flags.am + +# We may have to add to these later. +DISTCLEANFILES = +MAINTAINERCLEANFILES = +CLEANFILES = +EXTRA_DIST = CMakeLists.txt + +LDADD= + +SRC= constraints.c dapcvt.c dapodom.c daputil.c \ +ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c \ +ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \ +dceparse.c dcelex.c + +HDRS= nccommon.h constraints.h ncd2dispatch.h dapincludes.h \ +dapodom.h getvara.h dapnc.h daputil.h dapdebug.h dapdump.h \ +dceconstraints.h dcetab.h dceparselex.h + +if USE_NETCDF4 +#SRC += cdf4.c constraints4.c ncd4dispatch.c ncdap4.c getvara4.c +#HDRS +=constraints4.h ncd4dispatch.h ncdap4.h +endif + +if ENABLE_DAP + +if USE_NETCDF4 +AM_CPPFLAGS += -I$(top_srcdir)/libsrc4 +endif + +# Build convenience library +noinst_LTLIBRARIES = libdap2.la +libdap2_la_SOURCES = $(SRC) $(HDRS) +libdap2_la_CPPFLAGS = $(AM_CPPFLAGS) +libdap2_la_LIBADD = + +#if USE_NETCDF4 +#LDADD += ${top_builddir}/libsrc4/libnetcdf4.la +#endif +# +#LDADD += ${top_builddir}/libsrc/libnetcdf3.la \ +# ${top_builddir}/oc2/liboc.la \ +# ${top_builddir}/libdispatch/libdispatch.la +# +endif # ENABLE_DAP + +# These rule are used if someone wants to rebuild the grammar files. +# Otherwise never invoked, but records how to do it. +# BTW: note that renaming is essential because otherwise +# autoconf will forcibly delete files of the name *.tab.* + +EXTRA_DIST += dce.y + +makece:: + bison -v -d -t -p dce dce.y + rm -f dcetab.c dcetab.h + sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.c + sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.h diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.in new file mode 100644 index 00000000000..4dbee61177c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/Makefile.in @@ -0,0 +1,807 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2005, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to libdap2. Whatever that +# is! + +# This is part of the netCDF package. +# Copyright 2005 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# Assemble the CPPFLAGS and LDFLAGS that point to all the needed +# libraries for netCDF-4. +# + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 + +#SRC += cdf4.c constraints4.c ncd4dispatch.c ncdap4.c getvara4.c +#HDRS +=constraints4.h ncd4dispatch.h ncdap4.h +@ENABLE_DAP_TRUE@@USE_NETCDF4_TRUE@am__append_2 = -I$(top_srcdir)/libsrc4 +subdir = libdap2 +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libdap2_la_DEPENDENCIES = +am__libdap2_la_SOURCES_DIST = constraints.c dapcvt.c dapodom.c \ + daputil.c ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c \ + dapattr.c ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \ + dceparse.c dcelex.c nccommon.h constraints.h ncd2dispatch.h \ + dapincludes.h dapodom.h getvara.h dapnc.h daputil.h dapdebug.h \ + dapdump.h dceconstraints.h dcetab.h dceparselex.h +am__objects_1 = libdap2_la-constraints.lo libdap2_la-dapcvt.lo \ + libdap2_la-dapodom.lo libdap2_la-daputil.lo \ + libdap2_la-ncdaperr.lo libdap2_la-cdf.lo libdap2_la-cache.lo \ + libdap2_la-dapdump.lo libdap2_la-dapdebug.lo \ + libdap2_la-dapattr.lo libdap2_la-ncd2dispatch.lo \ + libdap2_la-getvara.lo libdap2_la-dceconstraints.lo \ + libdap2_la-dcetab.lo libdap2_la-dceparse.lo \ + libdap2_la-dcelex.lo +am__objects_2 = +@ENABLE_DAP_TRUE@am_libdap2_la_OBJECTS = $(am__objects_1) \ +@ENABLE_DAP_TRUE@ $(am__objects_2) +libdap2_la_OBJECTS = $(am_libdap2_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +@ENABLE_DAP_TRUE@am_libdap2_la_rpath = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libdap2_la_SOURCES) +DIST_SOURCES = $(am__libdap2_la_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/lib_flags.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; + +# Put together AM_CPPFLAGS and AM_LDFLAGS. + +# We may have to add to these later. +DISTCLEANFILES = +MAINTAINERCLEANFILES = +CLEANFILES = + +#if USE_NETCDF4 +#LDADD += ${top_builddir}/libsrc4/libnetcdf4.la +#endif +# +#LDADD += ${top_builddir}/libsrc/libnetcdf3.la \ +# ${top_builddir}/oc2/liboc.la \ +# ${top_builddir}/libdispatch/libdispatch.la +# + +# These rule are used if someone wants to rebuild the grammar files. +# Otherwise never invoked, but records how to do it. +# BTW: note that renaming is essential because otherwise +# autoconf will forcibly delete files of the name *.tab.* +EXTRA_DIST = CMakeLists.txt dce.y +LDADD = +SRC = constraints.c dapcvt.c dapodom.c daputil.c \ +ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c \ +ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \ +dceparse.c dcelex.c + +HDRS = nccommon.h constraints.h ncd2dispatch.h dapincludes.h \ +dapodom.h getvara.h dapnc.h daputil.h dapdebug.h dapdump.h \ +dceconstraints.h dcetab.h dceparselex.h + + +# Build convenience library +@ENABLE_DAP_TRUE@noinst_LTLIBRARIES = libdap2.la +@ENABLE_DAP_TRUE@libdap2_la_SOURCES = $(SRC) $(HDRS) +@ENABLE_DAP_TRUE@libdap2_la_CPPFLAGS = $(AM_CPPFLAGS) +@ENABLE_DAP_TRUE@libdap2_la_LIBADD = +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 --ignore-deps libdap2/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps libdap2/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/lib_flags.am $(am__empty): + +$(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): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libdap2.la: $(libdap2_la_OBJECTS) $(libdap2_la_DEPENDENCIES) $(EXTRA_libdap2_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(am_libdap2_la_rpath) $(libdap2_la_OBJECTS) $(libdap2_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +libdap2_la-constraints.lo: constraints.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-constraints.lo `test -f 'constraints.c' || echo '$(srcdir)/'`constraints.c + +libdap2_la-dapcvt.lo: dapcvt.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapcvt.lo `test -f 'dapcvt.c' || echo '$(srcdir)/'`dapcvt.c + +libdap2_la-dapodom.lo: dapodom.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapodom.lo `test -f 'dapodom.c' || echo '$(srcdir)/'`dapodom.c + +libdap2_la-daputil.lo: daputil.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-daputil.lo `test -f 'daputil.c' || echo '$(srcdir)/'`daputil.c + +libdap2_la-ncdaperr.lo: ncdaperr.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncdaperr.lo `test -f 'ncdaperr.c' || echo '$(srcdir)/'`ncdaperr.c + +libdap2_la-cdf.lo: cdf.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cdf.lo `test -f 'cdf.c' || echo '$(srcdir)/'`cdf.c + +libdap2_la-cache.lo: cache.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c + +libdap2_la-dapdump.lo: dapdump.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdump.lo `test -f 'dapdump.c' || echo '$(srcdir)/'`dapdump.c + +libdap2_la-dapdebug.lo: dapdebug.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdebug.lo `test -f 'dapdebug.c' || echo '$(srcdir)/'`dapdebug.c + +libdap2_la-dapattr.lo: dapattr.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapattr.lo `test -f 'dapattr.c' || echo '$(srcdir)/'`dapattr.c + +libdap2_la-ncd2dispatch.lo: ncd2dispatch.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncd2dispatch.lo `test -f 'ncd2dispatch.c' || echo '$(srcdir)/'`ncd2dispatch.c + +libdap2_la-getvara.lo: getvara.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-getvara.lo `test -f 'getvara.c' || echo '$(srcdir)/'`getvara.c + +libdap2_la-dceconstraints.lo: dceconstraints.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceconstraints.lo `test -f 'dceconstraints.c' || echo '$(srcdir)/'`dceconstraints.c + +libdap2_la-dcetab.lo: dcetab.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcetab.lo `test -f 'dcetab.c' || echo '$(srcdir)/'`dcetab.c + +libdap2_la-dceparse.lo: dceparse.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceparse.lo `test -f 'dceparse.c' || echo '$(srcdir)/'`dceparse.c + +libdap2_la-dcelex.lo: dcelex.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcelex.lo `test -f 'dcelex.c' || echo '$(srcdir)/'`dcelex.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +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) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +makece:: + bison -v -d -t -p dce dce.y + rm -f dcetab.c dcetab.h + sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.c + sed -e 's/dce[.]tab[.]c/dcetab.c/g' -e 's/dce[.]tab[.]h/dcetab.h/g' dcetab.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/netcdf/4.4.1.1/libdap2/cache.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/cache.c similarity index 99% rename from contrib/netcdf/4.4.1.1/libdap2/cache.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/cache.c index 56fa0d9f4f4..61b44f70ab1 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/cache.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/cache.c @@ -3,7 +3,7 @@ * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "dapdump.h" /* @@ -381,7 +381,7 @@ iscacheableconstraint(DCEconstraint* con) int i; if(con == NULL) return 1; if(con->selections != NULL && nclistlength(con->selections) > 0) - return 0; /* cant deal with selections */ + return 0; /* can't deal with selections */ for(i=0;iprojections);i++) { if(!iscacheableprojection((DCEprojection*)nclistget(con->projections,i))) return 0; diff --git a/contrib/netcdf/4.4.1.1/libdap2/cdf.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/cdf.c similarity index 99% rename from contrib/netcdf/4.4.1.1/libdap2/cdf.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/cdf.c index 651820bdb9e..c213cad5293 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/cdf.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/cdf.c @@ -3,7 +3,7 @@ * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "daputil.h" #include "dapdump.h" @@ -810,13 +810,15 @@ fprintf(stderr,"dimsettrans3: node=%s/%d\n",node->ocname,nclistlength(node->arra dimsettrans = clonedimset(nccomm,node->container->array.dimsettrans,node); } /* concat parent dimset0 and dimset;*/ + if(dimsettrans == NULL) + dimsettrans = nclistnew(); for(i=0;iarray.dimset0);i++) { - CDFnode* clone = NULL; - if(dimsettrans == NULL) dimsettrans = nclistnew(); - clone = (CDFnode*)nclistget(node->array.dimset0,i); + CDFnode* clone = NULL; + clone = (CDFnode*)nclistget(node->array.dimset0,i); nclistpush(dimsettrans,(void*)clone); } node->array.dimsettrans = dimsettrans; + dimsettrans = NULL; #ifdef DEBUG1 fprintf(stderr,"dimsettrans: |%s|=%d\n",node->ocname,(int)nclistlength(dimsettrans)); #endif @@ -1105,6 +1107,7 @@ free1cdfnode(CDFnode* node) nclistfree(node->array.dimsetplus); nclistfree(node->array.dimsetall); nclistfree(node->array.dimset0); + nclistfree(node->array.dimsettrans); /* Clean up the ncdap4 fields also */ nullfree(node->typename); diff --git a/contrib/netcdf/4.4.1.1/libdap2/constraints.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/constraints.c similarity index 98% rename from contrib/netcdf/4.4.1.1/libdap2/constraints.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/constraints.c index 9065aa5b797..0be99dd07db 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/constraints.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/constraints.c @@ -3,7 +3,7 @@ * See netcdf/COPYRIGHT filey for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "dceparselex.h" #include "dceconstraints.h" #include "dapdump.h" @@ -55,7 +55,7 @@ NCerror dapmapconstraints(DCEconstraint* constraint, CDFnode* root) { - int i; + size_t i; NCerror ncstat = NC_NOERR; NClist* nodes = root->tree->nodes; NClist* dceprojections = constraint->projections; @@ -86,7 +86,7 @@ NCerror dapqualifyconstraints(DCEconstraint* constraint) { NCerror ncstat = NC_NOERR; - int i; + size_t i; #ifdef DEBUG fprintf(stderr,"ncqualifyconstraints.before: %s\n", dumpconstraint(constraint)); @@ -137,7 +137,7 @@ fprintf(stderr,"%s\n", static NCerror qualifyprojectionsizes(DCEprojection* proj) { - int i,j; + size_t i,j; ASSERT(proj->discrim == CES_VAR); #ifdef DEBUG fprintf(stderr,"qualifyprojectionsizes.before: %s\n", @@ -174,10 +174,9 @@ fprintf(stderr,"qualifyprojectionsizes.after: %s\n", static void completesegments(NClist* fullpath, NClist* segments) { - int i,delta; + size_t i,delta; /* add path nodes to segments to create full path */ delta = (nclistlength(fullpath) - nclistlength(segments)); - ASSERT((delta >= 0)); for(i=0;idiscrim != CES_VAR) continue; /* dont try to unify functions */ + if(p1->discrim != CES_VAR) continue; /* don't try to unify functions */ for(j=i;jdiscrim != CES_VAR) continue; /* dont try to unify functions */ + if(p1->discrim != CES_VAR) continue; /* don't try to unify functions */ if(!iscontainer((CDFnode*)p1->var->annotation)) continue; for(j=i;jdiscrim != CES_VAR) - continue; /* dont try to unify functions */ + continue; /* don't try to unify functions */ leaf = (CDFnode*)target->var->annotation; ASSERT(leaf != NULL); if(iscontainer(leaf)) {/* capture container */ diff --git a/contrib/netcdf/4.4.1.1/libdap2/constraints.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/constraints.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/constraints.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/constraints.h diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapattr.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapattr.c new file mode 100644 index 00000000000..f491cf9ca9d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapattr.c @@ -0,0 +1,153 @@ +/********************************************************************* + * Copyright 1993, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "dapincludes.h" + +#define OCCHECK(exp) if((ocstat = (exp))) {THROWCHK(ocstat); goto done;} + +/* Forward */ +static NCerror buildattribute(char*,nc_type,size_t,char**,NCattribute**); + +/* +Invoke oc_merge_das and then extract special +attributes such as "strlen" and "dimname" +and stuff from DODS_EXTRA. +*/ +int +dapmerge(NCDAPCOMMON* nccomm, CDFnode* ddsroot, OCddsnode dasroot) +{ + int i,j; + NCerror ncstat = NC_NOERR; + OCerror ocstat = OC_NOERR; + NClist* allnodes; + OClink conn; + char* ocname = NULL; + char** values = NULL; + conn = nccomm->oc.conn; + + if(ddsroot == NULL || dasroot == NULL) + return NC_NOERR; + /* Merge the das tree onto the dds tree */ + ocstat = oc_merge_das(nccomm->oc.conn,dasroot,ddsroot->ocnode); + if(ocstat != OC_NOERR) goto done; + + /* Create attributes on CDFnodes */ + allnodes = ddsroot->tree->nodes; + for(i=0;iocnode; + size_t attrcount; + OCtype ocetype; + + OCCHECK(oc_dds_attr_count(conn,ocnode,&attrcount)); + for(j=0;j 0) { + values = (char**)malloc(sizeof(char*)*nvalues); + if(values == NULL) {ncstat = NC_ENOMEM; goto done;} + OCCHECK(oc_dds_attr(conn,ocnode,j,NULL,NULL,NULL,values)); + } + ncstat = buildattribute(ocname,octypetonc(ocetype),nvalues,values,&att); + if(ncstat != NC_NOERR) goto done; + if(node->attributes == NULL) + node->attributes = nclistnew(); + nclistpush(node->attributes,(void*)att); + if(strncmp(ocname,"DODS",strlen("DODS"))==0) { + att->invisible = 1; + /* Define extra semantics associated with + DODS and DODS_EXTRA attributes */ + if(strcmp(ocname,"DODS.strlen")==0 + || strcmp(ocname,"DODS_EXTRA.strlen")==0) { + unsigned int maxstrlen = 0; + if(values != NULL) { + if(0==sscanf(values[0],"%u",&maxstrlen)) + maxstrlen = 0; + } + node->dodsspecial.maxstrlen = maxstrlen; +#ifdef DEBUG +fprintf(stderr,"%s.maxstrlen=%d\n",node->ocname,(int)node->dodsspecial.maxstrlen); +#endif + } else if(strcmp(ocname,"DODS.dimName")==0 + || strcmp(ocname,"DODS_EXTRA.dimName")==0) { + if(values != NULL) { + node->dodsspecial.dimname = nulldup(values[0]); +#ifdef DEBUG +fprintf(stderr,"%s.dimname=%s\n",node->ocname,node->dodsspecial.dimname); +#endif + } else node->dodsspecial.dimname = NULL; + } else if(strcmp(ocname,"DODS.Unlimited_Dimension")==0 + || strcmp(ocname,"DODS_EXTRA.Unlimited_Dimension")==0) { + char* val0 = NULL; + if(values != NULL) + val0 = values[0]; + if(val0 != NULL) { + if(nccomm->cdf.recorddimname != NULL) { + if(strcmp(nccomm->cdf.recorddimname,val0)!=0) + nclog(NCLOGWARN,"Duplicate DODS_EXTRA:Unlimited_Dimension specifications"); + } else { + nccomm->cdf.recorddimname = nulldup(values[0]); +#ifdef DEBUG +fprintf(stderr,"%s.Unlimited_Dimension=%s\n",node->ocname,nccomm->cdf.recorddimname); +#endif + } + } + } + } + /* clean up */ + if(values) { + oc_reclaim_strings(nvalues,values); + free(values); + values = NULL; + } + } + } + +done: + if(values != NULL) free(values); + if(ocname != NULL) free(ocname); + if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat); + return THROW(ncstat); +} + +/* +Build an NCattribute +from a DAP attribute. +As of Jun 27, 2017, we modify +to suppress nul characters and terminate +the name at the first nul. +*/ +static NCerror +buildattribute(char* name, nc_type ptype, + size_t nvalues, char** values, NCattribute** attp) +{ + int i; + NCerror ncstat = NC_NOERR; + NCattribute* att = NULL; + + att = (NCattribute*)calloc(1,sizeof(NCattribute)); + MEMCHECK(att,NC_ENOMEM); + att->name = nulldup(name); + att->etype = ptype; + + att->values = nclistnew(); + for(i=0;ivalues,(void*)copy); + } + if(attp) *attp = att; + else + free(att); + + return THROW(ncstat); +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapcvt.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapcvt.c new file mode 100644 index 00000000000..2e4009af0ec --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapcvt.c @@ -0,0 +1,413 @@ +/********************************************************************* + * Copyright 1993, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ +#include "config.h" +#include "dapincludes.h" + +#ifdef _MSC_VER +#include +#include +#endif + +struct Value { + long long llval; + double dval; +}; + +/*Forward*/ +static int cvtnumconst(const char* s, struct Value* val); +static int cvtdbl2int(struct Value* val); +static int cvtint2dbl(struct Value* val); +static int cvtint2int(nc_type dsttype, struct Value*); + +NCerror +dapconvert(nc_type srctype, nc_type dsttype, char* memory0, char* value0, size_t count) +{ + NCerror ncstat = NC_NOERR; + size_t i; + char* memory = memory0; + char* value = value0; + + /* In order to deal with the DAP upgrade problem, + try to preserve the bit patterns + */ + + /* Provide space and pointer casts for intermediate results */ + signed char ncbyte; + signed char* ncbytep; + char ncchar; + char* nccharp; + short ncshort; + short* ncshortp; + int ncint; + int* ncintp; + float ncfloat; + float* ncfloatp; + double ncdouble; + double* ncdoublep; + unsigned char ncubyte; + unsigned char* ncubytep; + unsigned short ncushort; + unsigned short* ncushortp; + unsigned int ncuint; + unsigned int* ncuintp; + long long ncint64; + long long* ncint64p; + unsigned long long ncuint64; + unsigned long long* ncuint64p; + + +#define CASE(nc1,nc2) (nc1*256+nc2) +#define CUT8(e) ((unsigned char)((e) & 0xff)) +#define CUT16(e) ((unsigned short)((e) & 0xffff)) +#define CUT32(e) ((unsigned int)((e) & 0xffffffff)) +#define ARM(vs,ncs,ts,vd,ncd,td) \ +case CASE(ncs,ncd):\ + vs##p = (ts *)value;\ + vs = *vs##p;\ + vd##p = (td *)memory;\ + *vd##p = (td)vs;\ + break; + + for(i=0;iname,s); + ncstat = NC_EBADTYPE; + goto next; + } + /* Force conformance with etype */ + /* Do Specific conversions */ + if(stype == NC_DOUBLE && etype < NC_FLOAT) {/* double->integer-type */ + if((ncstat = cvtdbl2int(&val))) goto next; + stype = NC_INT; /* pretend */ + }else if(stype == NC_INT && etype >= NC_FLOAT) {/*integer-type -> float type*/ + if((ncstat = cvtint2dbl(&val))) goto next; + stype = NC_DOUBLE; /* pretend */ + } + if(stype == NC_INT && etype < NC_FLOAT) {/* integer-type -> integer-type */ + if((ncstat = cvtint2int(etype,&val))) goto next; + } + switch (etype) { + case NC_BYTE: + /* Note that in DAP2, this is unsigned 8-bit integer */ + u8p = (unsigned char*)dstmem; + *u8p = (unsigned char)(val.llval); + break; + case NC_SHORT: + i16p = (short*)dstmem; + *i16p = (short)(val.llval); + break; + case NC_USHORT: + u16p = (unsigned short*)dstmem; + *u16p = (unsigned short)(val.llval); + break; + case NC_INT: + i32p = (int*)dstmem; + *i32p = (int)(val.llval); + break; + case NC_UINT: + u32p = (unsigned int*)dstmem; + *u32p = (unsigned int)(val.llval); + break; + case NC_FLOAT: + fp = (float*)dstmem; + *fp = (float)(val.dval); + break; + case NC_DOUBLE: + dp = (double*)dstmem; + *dp = (double)(val.dval); + break; + default: return NC_EINTERNAL; + } + } else if(etype == NC_CHAR) { + char* p = (char*)dstmem; + size_t count; + int nread; + count = sscanf(s,"%c%n",p,&nread); + if(count != 1 || nread != slen) + {ncstat = NC_EBADTYPE; goto next;} + } else if(etype == NC_STRING || etype == NC_URL) { + char** p = (char**)dstmem; + *p = nulldup(s); + } else { + PANIC1("unexpected nc_type: %d",(int)etype); + } +next: /* inside loop */ + if(ncstat == NC_ERANGE) + nclog(NCLOGERR,"Attribute value out of range: %s = %s",att->name,s); + else if(ncstat == NC_EBADTYPE) + nclog(NCLOGERR,"Unexpected attribute type or untranslatable value: %s",att->name); + ncstat = NC_NOERR; + dstmem += memsize; + } + return THROW(ncstat); +} + +/** +@param val resulting converted numeric value +@return NC_INT || NC_DOUBLE || NC_NAT (failure) +*/ +static int +cvtnumconst(const char* s, struct Value* val) +{ + size_t slen = strlen(s); + int nread; /* # of chars read */ + size_t count; /* # of conversions */ + /* Try to convert to integer first */ + count = sscanf(s,"%lld%n",&val->llval,&nread); + if(count == 1 && nread == slen) + return NC_INT; + /* Try to convert to float second */ +#ifdef _WIN32 + if (!_strnicmp(s, "NaN", 3)) {count = 1; nread = 3; val->dval = NAN;} else +#endif + count = sscanf(s,"%lg%n",&val->dval,&nread); + if(count == 1 && nread == slen) + return NC_DOUBLE; + return NC_INT; +} + +/** +Convert a struct Value.dval field to a long in struct Value.llval field. +Report if the result is out of range wrt NC_MAX/MIN_INT. + @param val store original and converted value +@return NC_NOERR | NC_ERANGE +*/ +static int +cvtdbl2int(struct Value* val) +{ + /* Inter-convert */ +#ifdef _WIN32 + if(isnan(val->dval)) return NC_ERANGE; +#endif + val->llval = (long long)val->dval; + if(val->llval < NC_MIN_INT || val->llval > NC_MAX_INT) + return NC_ERANGE; + return NC_NOERR; +} + +/** +Convert a struct Value.llval field to double in struct Value.dval field. +@return NC_NOERR +*/ +static int +cvtint2dbl(struct Value* val) +{ + /* Inter-convert */ + val->dval = (double)val->llval; + return NC_NOERR; +} + +/** +Convert long long bit pattern to conform to a given +integer type. +@param dsttype target integer type +@param valp pointer to long long value to convert +@return NC_NOERR | NC_EBADTYPE +*/ +static int +cvtint2int(nc_type dsttype, struct Value* val) +{ + /* assert dsttype < NC_FLOAT && dsttype != NC_CHAR */ + + /* We do not actually do much in the way of range checking, + we just truncate the bit pattern to the proper size, taking + signedness into account */ + + switch (dsttype) { + case NC_BYTE: + val->llval = (long long)((signed char)(val->llval)); + break; + case NC_UBYTE: + val->llval = (long long)(val->llval & 0xFF); + break; + case NC_SHORT: + val->llval = (long long)((short)(val->llval)); + break; + case NC_USHORT: + val->llval = (long long)(val->llval & 0xFFFF); + break; + case NC_INT: + val->llval = (long long)((int)(val->llval)); + break; + case NC_UINT: + val->llval = (long long)(val->llval & 0xFFFFFFFF); + break; + default: return NC_EBADTYPE; + } + return NC_NOERR; +} diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapdebug.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.c similarity index 82% rename from contrib/netcdf/4.4.1.1/libdap2/dapdebug.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.c index a290d80e2f8..e9b504f1512 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dapdebug.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.c @@ -6,20 +6,24 @@ #include #include +#include "dapincludes.h" #include "nclog.h" -#include "ncdap.h" int ncdap3debug = 0; #ifdef CATCHERROR /* Place breakpoint here to catch errors close to where they occur*/ int -dapbreakpoint(int err) {return err;} +dapbreakpoint(int err) +{ + return err; +} int -dapthrow(int err) +dapthrow(int err, int lineno, const char* filename) { if(err == 0) return err; + fprintf(stderr,"$dapthrow: err=%d line=%d file=%s\n",err,lineno,filename); fflush(stderr); return dapbreakpoint(err); } #endif diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapdebug.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.h similarity index 89% rename from contrib/netcdf/4.4.1.1/libdap2/dapdebug.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.h index b54306bd9a2..dde23e53de8 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dapdebug.h +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdebug.h @@ -27,7 +27,7 @@ #undef PARSEDEBUG /* Warning: setting CATCHERROR has significant performance impact */ -#define CATCHERROR +#undef CATCHERROR #include #include @@ -51,11 +51,11 @@ extern int dappanic(const char* fmt, ...); #ifdef CATCHERROR /* Place breakpoint on dapbreakpoint to catch errors close to where they occur*/ -#define THROW(e) dapthrow(e) -#define THROWCHK(e) (void)dapthrow(e) +#define THROW(e) dapthrow(e,__LINE__,__FILE__) +#define THROWCHK(e) (void)dapthrow(e,__LINE__,__FILE__) extern int dapbreakpoint(int err); -extern int dapthrow(int err); +extern int dapthrow(int err, int lineno, const char* filename); #else #define THROW(e) (e) #define THROWCHK(e) diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapdump.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.c similarity index 96% rename from contrib/netcdf/4.4.1.1/libdap2/dapdump.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.c index 735bf0dd181..a457862c0d6 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dapdump.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.c @@ -7,7 +7,7 @@ #ifdef USE_PARALLEL #include "netcdf_par.h" #endif -#include "ncdap.h" +#include "dapincludes.h" #include "dapdump.h" #include "dceconstraints.h" @@ -156,10 +156,10 @@ dumpdata1(nc_type nctype, size_t index, char* data) fprintf(stdout,"'%c' %hhd",data[index],data[index]); break; case NC_BYTE: - fprintf(stdout,"%hdB",((signed char*)data)[index]); + fprintf(stdout,"%hhdB",((signed char*)data)[index]); break; case NC_UBYTE: - fprintf(stdout,"%huB",((unsigned char*)data)[index]); + fprintf(stdout,"%hhuB",((unsigned char*)data)[index]); break; case NC_SHORT: fprintf(stdout,"%hdS",((short*)data)[index]); @@ -440,7 +440,7 @@ dumpnode(CDFnode* node) ncbytescat(buf,tmp); snprintf(tmp,sizeof(tmp),"ncfullname=%s\n",node->ncfullname); ncbytescat(buf,tmp); - snprintf(tmp,sizeof(tmp),"|subnodes|=%ld\n",nclistlength(node->subnodes)); + snprintf(tmp,sizeof(tmp),"|subnodes|=%u\n",(unsigned)nclistlength(node->subnodes)); ncbytescat(buf,tmp); snprintf(tmp,sizeof(tmp),"externaltype=%d\n",node->externaltype); ncbytescat(buf,tmp); @@ -459,7 +459,7 @@ dumpnode(CDFnode* node) snprintf(tmp,sizeof(tmp),"attachment=%s\n", (node->attachment?node->attachment->ocname:"null")); ncbytescat(buf,tmp); - snprintf(tmp,sizeof(tmp),"rank=%lu\n",nclistlength(node->array.dimset0)); + snprintf(tmp,sizeof(tmp),"rank=%u\n",(unsigned)nclistlength(node->array.dimset0)); ncbytescat(buf,tmp); for(i=0;iarray.dimset0);i++) { CDFnode* dim = (CDFnode*)nclistget(node->array.dimset0,i); @@ -485,14 +485,14 @@ dumpnode(CDFnode* node) } char* -dumpalign(NCalignment* ncalign) +dumpalign(NCD2alignment* ncalign) { char* result; char tmp[1024]; if(ncalign == NULL) - result = nulldup("NCalignment{size=-- alignment=-- offset=--}"); + result = nulldup("NCD2alignment{size=-- alignment=-- offset=--}"); else { - snprintf(tmp,sizeof(tmp),"NCalignment{size=%lu alignment=%lu offset=%lu}", + snprintf(tmp,sizeof(tmp),"NCD2alignment{size=%lu alignment=%lu offset=%lu}", ncalign->size,ncalign->alignment,ncalign->offset); result = nulldup(tmp); } @@ -584,7 +584,7 @@ dumpslice(DCEslice* slice) (unsigned long)slice->stride, (unsigned long)slice->last); } - strcat(buf,tmp); + strlcat(buf,tmp,sizeof(buf)); return strdup(tmp); } diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapdump.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.h similarity index 97% rename from contrib/netcdf/4.4.1.1/libdap2/dapdump.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.h index c19906aa6bb..c5488a45f80 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dapdump.h +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapdump.h @@ -46,7 +46,7 @@ extern char* dumptree(CDFnode* root); extern char* dumpvisible(CDFnode* root); extern char* dumpnode(CDFnode* node); -extern char* dumpalign(struct NCalignment*); +extern char* dumpalign(struct NCD2alignment*); extern char* dumpcachenode(NCcachenode* node); extern char* dumpcache(NCcache* cache); diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapincludes.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapincludes.h new file mode 100644 index 00000000000..c8b02bd9eed --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapincludes.h @@ -0,0 +1,112 @@ +/********************************************************************* + * Copyright 1993, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ +#ifndef DAPINCLUDES_H +#define DAPINCLUDES_H 1 + +#include "config.h" +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include + +#include "netcdf.h" + +#include "ncbytes.h" +#include "nclist.h" +#include "nclog.h" +#include "ncuri.h" + +#include "fbits.h" +#include "dceconstraints.h" + +#include "ncdispatch.h" +#include "nc.h" +#include "nc3internal.h" + /* netcdf overrides*/ +#include "dapnc.h" + +#include "oc.h" + +#include "ncdap.h" +#include "dapdebug.h" +#include "daputil.h" + +/**************************************************/ +/* sigh, do the forwards */ +struct NCprojection; +struct NCselection; +struct Getvara; +struct NCcachenode; +struct NCcache; +struct NCslice; +struct NCsegment; + +/**************************************************/ + +#include "nccommon.h" +#include "getvara.h" +#include "constraints.h" + +/**************************************************/ + +extern struct NCTMODEL nctmodels[]; + +/**************************************************/ +/* Import some internal procedures from libsrc*/ + +/* Internal, but non-static procedures */ +extern NCerror computecdfvarnames(NCDAPCOMMON*,CDFnode*,NClist*); +extern NCerror computecdfnodesets(NCDAPCOMMON* nccomm, CDFtree* tree); +extern NCerror computevarnodes(NCDAPCOMMON*, NClist*, NClist*); +extern NCerror collectvardefdims(NCDAPCOMMON* drno, CDFnode* var, NClist* dimset); +extern NCerror fixgrids(NCDAPCOMMON* drno); +extern NCerror dapmerge(NCDAPCOMMON* drno, CDFnode* node, OCobject dasroot); +extern NCerror sequencecheck(NCDAPCOMMON* drno); +extern NCerror computecdfdimnames(NCDAPCOMMON*); +extern NCerror attachdatadds(struct NCDAPCOMMON*); +extern NCerror detachdatadds(struct NCDAPCOMMON*); +extern void dapdispatch3init(void); + +/* +extern void dereference(NCconstraint* constraint); +extern NCerror rereference(NCconstraint*, NClist*); +*/ + +extern NCerror dapbuildvaraprojection(CDFnode*, + const size_t* startp, const size_t* countp, const ptrdiff_t* stridep, + struct DCEprojection** projectionlist); + +extern NCerror nc3d_getvarx(int ncid, int varid, + const size_t *startp, + const size_t *countp, + const ptrdiff_t *stridep, + void *data, + nc_type dsttype0); + +/**************************************************/ + +extern NCerror nc3d_open(const char* path, int mode, int* ncidp); +extern int nc3d_close(int ncid); +extern NCerror restruct(NCDAPCOMMON*, CDFnode* ddsroot, CDFnode* pattern, NClist*); +extern void setvisible(CDFnode* root, int visible); +extern NCerror mapnodes(CDFnode* dstroot, CDFnode* srcroot); +extern void unmap(CDFnode* root); + +#if 0 +extern NCerror fetchpatternmetadata(NCDAPCOMMON* nccomm); +extern NCerror fetchconstrainedmetadata(NCDAPCOMMON* nccomm); +extern void applyclientparamcontrols(NCDAPCOMMON*); +extern NCerror suppressunusablevars(NCDAPCOMMON*); +extern void estimatevarsizes(NCDAPCOMMON*); +extern NCerror showprojection(NCDAPCOMMON*, CDFnode* var); +#endif + +/* From: dapcvt.c*/ +extern NCerror dapconvert(nc_type, nc_type, char*, char*, size_t); +extern int dapcvtattrval(nc_type, void*, NClist*, NCattribute*); + +#endif /*DAPINCLUDES_H*/ diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapnc.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapnc.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dapnc.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapnc.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapodom.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapodom.c similarity index 97% rename from contrib/netcdf/4.4.1.1/libdap2/dapodom.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapodom.c index 2675f47ecae..965f335e219 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dapodom.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapodom.c @@ -3,7 +3,7 @@ * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "dapodom.h" /**********************************************/ @@ -79,14 +79,14 @@ dapodom_print(Dapodometer* odom) char tmp[64]; line[0] = '\0'; if(odom->rank == 0) { - strcat(line,"[]"); + strlcat(line,"[]",sizeof(line)); } else for(i=0;irank;i++) { sprintf(tmp,"[%lu/%lu:%lu:%lu]", (size_t)odom->index[i], (size_t)odom->start[i], (size_t)odom->stride[i], (size_t)odom->length[i]); - strcat(line,tmp); + strlcat(line,tmp,sizeof(line)); } return line; } diff --git a/contrib/netcdf/4.4.1.1/libdap2/dapodom.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dapodom.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dapodom.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dapodom.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/daputil.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.c similarity index 88% rename from contrib/netcdf/4.4.1.1/libdap2/daputil.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.c index 36885c74f31..bef69c20291 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/daputil.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.c @@ -12,51 +12,15 @@ #include "oc.h" extern int oc_dumpnode(OClink, OCddsnode); -#include "ncdap.h" -#include "dapalign.h" +#include "dapincludes.h" +#include "ncoffsets.h" #define LBRACKET '[' #define RBRACKET ']' static char* repairname(const char* name, const char* badchars); - -/**************************************************/ -/** - * Provide a hidden interface to allow utilities - * to check if a given path name is really an ncdap3 url. - * If no, return null, else return basename of the url - * minus any extension. - */ - -int -nc__testurl(const char* path, char** basenamep) -{ - NCURI* uri; - int ok = ncuriparse(path,&uri); - if(ok) { - char* slash = (uri->file == NULL ? NULL : strrchr(uri->file, '/')); - char* dot; - if(slash == NULL) slash = (char*)path; else slash++; - slash = nulldup(slash); - - if(slash == NULL) - dot = NULL; - else - dot = strrchr(slash, '.'); - - if(dot != NULL && dot != slash) *dot = '\0'; - - if(basenamep) - *basenamep=slash; - else { - if(slash) - free(slash); - } - ncurifree(uri); - } - return ok; -} +static int nccpadding(unsigned long offset, int alignment); /**************************************************/ @@ -77,18 +41,16 @@ cdflegalname(char* name) to the external netCDF variable type. The proper way is to, for example, convert unsigned short to an int to maintain the values. - Unfortuneately, libnc-dap does not do this: + Unfortunately, libnc-dap does not do this: it translates the types directly. For example libnc-dap upgrades the DAP byte type, which is unsigned char, to NC_BYTE, which signed char. - Oh well. - For netcdf-4, we can do proper type conversion. + Oh well. So we do the same. */ nc_type nctypeconvert(NCDAPCOMMON* drno, nc_type nctype) { nc_type upgrade = NC_NAT; - if(drno->controls.flags & NCF_NC3) { /* libnc-dap mimic invariant is to maintain type size */ switch (nctype) { case NC_CHAR: upgrade = NC_CHAR; break; @@ -98,33 +60,12 @@ nctypeconvert(NCDAPCOMMON* drno, nc_type nctype) case NC_USHORT: upgrade = NC_SHORT; break; case NC_INT: upgrade = NC_INT; break; case NC_UINT: upgrade = NC_INT; break; - case NC_INT64: upgrade = NC_INT64; break; - case NC_UINT64: upgrade = NC_UINT64; break; case NC_FLOAT: upgrade = NC_FLOAT; break; case NC_DOUBLE: upgrade = NC_DOUBLE; break; case NC_URL: case NC_STRING: upgrade = NC_CHAR; break; default: break; } - } else if(drno->controls.flags & NCF_NC4) { - /* netcdf-4 conversion is more correct */ - switch (nctype) { - case NC_CHAR: upgrade = NC_CHAR; break; - case NC_BYTE: upgrade = NC_BYTE; break; - case NC_UBYTE: upgrade = NC_UBYTE; break; - case NC_SHORT: upgrade = NC_SHORT; break; - case NC_USHORT: upgrade = NC_USHORT; break; - case NC_INT: upgrade = NC_INT; break; - case NC_UINT: upgrade = NC_UINT; break; - case NC_INT64: upgrade = NC_INT64; break; - case NC_UINT64: upgrade = NC_UINT64; break; - case NC_FLOAT: upgrade = NC_FLOAT; break; - case NC_DOUBLE: upgrade = NC_DOUBLE; break; - case NC_URL: - case NC_STRING: upgrade = NC_STRING; break; - default: break; - } - } return upgrade; } @@ -272,8 +213,7 @@ dapparamvalue(NCDAPCOMMON* nccomm, const char* key) const char* value; if(nccomm == NULL || key == NULL) return 0; - if(!ncurilookup(nccomm->oc.url,key,&value)) - return NULL; + value=ncurilookup(nccomm->oc.url,key); return value; } @@ -289,7 +229,7 @@ dapparamcheck(NCDAPCOMMON* nccomm, const char* key, const char* subkey) char* p; if(nccomm == NULL || key == NULL) return 0; - if(!ncurilookup(nccomm->oc.url,key,&value)) + if((value=ncurilookup(nccomm->oc.url,key)) == NULL) return 0; if(subkey == NULL) return 1; p = strstr(value,subkey); @@ -378,7 +318,7 @@ makeocpathstring(OClink conn, OCddsnode node, const char* sep) NCbytes* pathname = NULL; /* If we are asking for the dataset path only, - then nclude it, otherwise elide it + then include it, otherwise elide it */ oc_dds_type(conn,node,&octype); if(octype == OC_Dataset) { @@ -479,13 +419,13 @@ simplepathstring(NClist* names, char* separator) len += strlen(name); len += strlen(separator); } - len++; /* null terminator */ - result = (char*)malloc(len); + len++; /* room for strlcat to null terminate */ + result = (char*)malloc(len+1); result[0] = '\0'; for(i=0;i 0) strcat(result,separator); - strcat(result,segment); + if(i > 0) strlcat(result,separator,len); + strlcat(result,segment,len); } return result; } @@ -604,7 +544,8 @@ getlimitnumber(const char* limit) case 'K': case 'k': multiplier = KILOBYTE; break; default: break; } - sscanf(limit,"%lu",&lu); + if(sscanf(limit,"%lu",&lu) != 1) + return 0; return (lu*multiplier); } @@ -733,7 +674,7 @@ dap_fetch(NCDAPCOMMON* nccomm, OClink conn, const char* ce, if(SHOWFETCH) { /* Build uri string minus the constraint and #tag */ - char* baseurl = ncuribuild(nccomm->oc.url,NULL,ext,0); + char* baseurl = ncuribuild(nccomm->oc.url,NULL,ext,NCURIBASE); if(ce == NULL) LOG1(NCLOGNOTE,"fetch: %s",baseurl); else @@ -778,12 +719,12 @@ oc_dumpnode(conn,*rootp); /* Check a name to see if it contains illegal dap characters */ -static char* baddapchars = "./"; +static const char* baddapchars = "./"; int dap_badname(char* name) { - char* p; + const char* p; if(name == NULL) return 0; for(p=baddapchars;*p;p++) { if(strchr(name,*p) != NULL) @@ -813,10 +754,13 @@ repairname(const char* name, const char* badchars) const char *p; char *q; int c; + int nnlen = 0; if(name == NULL) return NULL; - newname = (char*)malloc(1+(3*strlen(name))); /* max needed */ - newname[0] = '\0'; /* so we can use strcat */ + nnlen = (3*strlen(name)); /* max needed */ + nnlen++; /* room for strlcat to add nul */ + newname = (char*)malloc(1+nnlen); /* max needed */ + newname[0] = '\0'; /* so we can use strlcat */ for(p=name,q=newname;(c=*p);p++) { if(strchr(badchars,c) != NULL) { int digit; @@ -827,12 +771,34 @@ repairname(const char* name, const char* badchars) digit = (c & 0x0f); newchar[2] = hexdigits[digit]; newchar[3] = '\0'; - strcat(newname,newchar); + strlcat(newname,newchar,nnlen); q += 3; /*strlen(newchar)*/ } else *q++ = c; - *q = '\0'; /* so we can always do strcat */ + *q = '\0'; /* so we can always do strlcat */ } *q = '\0'; /* ensure trailing null */ return newname; } + +char* +dap_getselection(NCURI* uri) +{ + char* p; + char* q = uri->query; + if(q == NULL) return NULL; + p = strchr(q,'&'); + if(p == NULL) return NULL; + return strdup(p+1); +} + +/* Compute padding */ +static int +nccpadding(unsigned long offset, int alignment) +{ + int pad,rem; + rem = (alignment==0?0:(offset % alignment)); + pad = (rem==0?0:(alignment - rem)); + return pad; +} + diff --git a/contrib/netcdf/4.4.1.1/libdap2/daputil.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.h similarity index 90% rename from contrib/netcdf/4.4.1.1/libdap2/daputil.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.h index 44dd0467bc3..816b063d86a 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/daputil.h +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/daputil.h @@ -65,22 +65,11 @@ extern void dapexpandescapes(char *termstring); extern int dapalignbuffer(NCbytes*, int alignment); extern size_t dapdimproduct(NClist* dimensions); -#if defined(DLL_NETCDF) -# if defined(DLL_EXPORT) -# define NCC_EXTRA __declspec(dllexport) -#else -# define NCC_EXTRA __declspec(dllimport) -# endif -NCC_EXTRA extern int nc__testurl(const char* path, char** basename); -#else -extern int nc__testurl(const char* parth, char** basename); -#endif - - /* Provide a wrapper for oc_fetch so we can log what it does */ extern NCerror dap_fetch(struct NCDAPCOMMON*,OClink,const char*,OCdxd,OCobject*); extern int dap_badname(char* name); extern char* dap_repairname(char* name); +extern char* dap_getselection(NCURI* uri); #endif /*DAPUTIL_H*/ diff --git a/contrib/netcdf/4.4.1.1/libdap2/dce.y b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dce.y similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dce.y rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dce.y diff --git a/contrib/netcdf/4.4.1.1/libdap2/dceconstraints.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceconstraints.c similarity index 99% rename from contrib/netcdf/4.4.1.1/libdap2/dceconstraints.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dceconstraints.c index 67428e6fbd9..2e5a8516558 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dceconstraints.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceconstraints.c @@ -10,13 +10,7 @@ #include #include -#include "nclist.h" -#include "ncbytes.h" -#include "nclog.h" - -#include "netcdf.h" -#include "dceconstraints.h" -#include "dapdebug.h" +#include "dapincludes.h" #include "dceparselex.h" #define DEBUG diff --git a/contrib/netcdf/4.4.1.1/libdap2/dceconstraints.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceconstraints.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dceconstraints.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dceconstraints.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/dcelex.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dcelex.c similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dcelex.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dcelex.c diff --git a/contrib/netcdf/4.4.1.1/libdap2/dceparse.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceparse.c similarity index 94% rename from contrib/netcdf/4.4.1.1/libdap2/dceparse.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dceparse.c index b9588f9bd99..c356a7d2864 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/dceparse.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceparse.c @@ -128,14 +128,17 @@ range(DCEparsestate* state, Object sfirst, Object sstride, Object slast) /* Note: that incoming arguments are strings; we must convert to size_t; but we do know they are legal integers or NULL */ - sscanf((char*)sfirst,"%lu",&first); /* always defined */ - if(slast != NULL) - sscanf((char*)slast,"%lu",&last); - else + if(sscanf((char*)sfirst,"%lu",&first) != 1) /* always defined */ + return NULL; + if(slast != NULL) { + if(sscanf((char*)slast,"%lu",&last) != 1) + return NULL; + } else last = first; - if(sstride != NULL) - sscanf((char*)sstride,"%lu",&stride); - else + if(sstride != NULL) { + if(sscanf((char*)sstride,"%lu",&stride) != 1) + return NULL; + } else stride = 1; /* default */ if(stride == 0) @@ -158,7 +161,8 @@ Object range1(DCEparsestate* state, Object rangenumber) { int range = -1; - sscanf((char*)rangenumber,"%u",&range); + if(sscanf((char*)rangenumber,"%u",&range) != 1) + range = -1; if(range < 0) { dceerror(state,"Illegal range index"); } @@ -199,7 +203,8 @@ array_indices(DCEparsestate* state, Object list0, Object indexno) long long start = -1; NClist* list = (NClist*)list0; if(list == NULL) list = nclistnew(); - sscanf((char*)indexno,"%lld",&start); + if(sscanf((char*)indexno,"%lld",&start) != 1) + start = -1; if(start < 0) { dceerror(state,"Illegal array index"); start = 1; @@ -328,7 +333,10 @@ dceerror(DCEparsestate* state, char* msg) static void dce_parse_cleanup(DCEparsestate* state) { + if(state == NULL) return; dcelexcleanup(&state->lexstate); /* will free */ + /* Free up the state */ + free(state); } static DCEparsestate* diff --git a/contrib/netcdf/4.4.1.1/libdap2/dceparselex.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dceparselex.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dceparselex.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dceparselex.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/dcetab.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dcetab.c similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dcetab.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dcetab.c diff --git a/contrib/netcdf/4.4.1.1/libdap2/dcetab.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/dcetab.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/dcetab.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/dcetab.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/getvara.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/getvara.c similarity index 99% rename from contrib/netcdf/4.4.1.1/libdap2/getvara.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/getvara.c index 508e5792a04..a2c0283c29d 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/getvara.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/getvara.c @@ -4,7 +4,7 @@ *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "dapodom.h" #include "dapdump.h" #include "ncd2dispatch.h" @@ -505,7 +505,8 @@ movetor(NCDAPCOMMON* nccomm, if(xnode->etype == NC_STRING || xnode->etype == NC_URL) hasstringdim = 1; /* Get the mode */ - mode = oc_data_mode(conn,currentcontent); + ocstat = oc_data_mode(conn,currentcontent,&mode); + if(ocstat != OC_NOERR) {THROWCHK(ocstat); goto done;} #ifdef DEBUG2 fprintf(stderr,"moveto: nctype=%d depth=%d dimindex=%d mode=%s", @@ -821,7 +822,7 @@ fprintf(stderr,"\n"); count = dcesegmentsize(segment,0,rank0); /* how many to read */ internlen = interntypesize*count; /* Read the whole variable directly into memory.*/ - ocstat = oc_data_readn(conn,currentcontent,dap_zero,count,internlen,memory->next); + ocstat = oc_data_readn(conn,currentcontent,NC_coord_zero,count,internlen,memory->next); /* bump memory pointer */ memory->next += internlen; if(ocstat != OC_NOERR) {THROWCHK(ocstat); goto done;} @@ -878,7 +879,7 @@ fprintf(stderr,"\n"); size_t internlen; count = dcesegmentsize(segment,0,rank0); /* how many to read */ internlen = interntypesize*count; - ocstat = oc_data_readn(conn,currentcontent,dap_zero,count,internlen,memory->next); + ocstat = oc_data_readn(conn,currentcontent,NC_coord_zero,count,internlen,memory->next); if(ocstat != OC_NOERR) {THROWCHK(ocstat); goto done;} } } diff --git a/contrib/netcdf/4.4.1.1/libdap2/getvara.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/getvara.h similarity index 100% rename from contrib/netcdf/4.4.1.1/libdap2/getvara.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/getvara.h diff --git a/contrib/netcdf/4.4.1.1/libdap2/nccommon.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/nccommon.h similarity index 85% rename from contrib/netcdf/4.4.1.1/libdap2/nccommon.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/nccommon.h index abb7b0f6feb..e3bbdedd55d 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/nccommon.h +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/nccommon.h @@ -6,6 +6,8 @@ #ifndef NCCOMMON_H #define NCCOMMON_H 1 +#include "dapincludes.h" + /* Mnemonics */ #ifndef BOOL #define BOOL int @@ -56,41 +58,6 @@ struct NCcache; struct NCslice; struct NCsegment; struct OClist; -/**************************************************/ -/* -Collect single bit flags that -affect the operation of the system. -*/ - -typedef unsigned int NCFLAGS; -# define SETFLAG(controls,flag) ((controls.flags) |= (flag)) -# define CLRFLAG(controls,flag) ((controls.flags) &= ~(flag)) -# define FLAGSET(controls,flag) (((controls.flags) & (flag)) != 0) - -/* Defined flags */ -#define NCF_NC3 (0x0001) /* DAP->netcdf-3 */ -#define NCF_NC4 (0x0002) /* DAP->netcdf-4 */ -#define NCF_NCDAP (0x0004) /* Do libnc-dap mimic */ -#define NCF_CACHE (0x0008) /* Cache enabled/disabled */ -#define NCF_UPGRADE (0x0010) /* Do proper type upgrades */ -#define NCF_UNCONSTRAINABLE (0x0020) /* Not a constrainable URL */ -#define NCF_SHOWFETCH (0x0040) /* show fetch calls */ -#define NCF_ONDISK (0x0080) /* cause oc to store data on disk */ -#define NCF_WHOLEVAR (0x0100) /* retrieve only whole variables (as opposed to partial variable) into cache */ -#define NCF_PREFETCH (0x0200) /* Cache prefetch enabled/disabled */ -#define NCF_PREFETCH_EAGER (0x0400) /* Do eager prefetch; 0=>lazy */ -#define NCF_PREFETCH_ALL (0x0800) /* Prefetch all variables */ -#ifdef COLUMBIA_HACK -#define NCF_COLUMBIA (0x80000000) /* Hack for columbia server */ -#endif - -/* Define all the default on flags */ -#define DFALT_ON_FLAGS (NCF_CACHE|NCF_PREFETCH) - -typedef struct NCCONTROLS { - NCFLAGS flags; -} NCCONTROLS; - struct NCTMODEL { int translation; char* model; @@ -145,14 +112,11 @@ typedef struct NCCDF { size_t smallsizelimit; /* what constitutes a small object? */ size_t totalestimatedsize; const char* separator; /* constant; do not free */ + /* Following fields should be set from the unconstrained dds only */ /* global string dimension */ struct CDFnode* globalstringdim; char* recorddimname; /* From DODS_EXTRA */ struct CDFnode* recorddim; -#if 0 - /* libncdap4 only */ - NClist* usertypes; /* nodes which will represent netcdf types */ -#endif } NCCDF; /* Define a structure holding common info for NCDAP */ @@ -162,7 +126,11 @@ typedef struct NCDAPCOMMON { NCCDF cdf; NCOC oc; NCCONTROLS controls; /* Control flags and parameters */ - int nc3id; /* nc3 file ncid used to hold metadata */ + struct { + int realfile; /* 1 => we created actual temp file */ + char* filename; /* of the substrate file */ + int nc3id; /* substrate nc4 file ncid used to hold metadata; not same as external id */ + } substrate; } NCDAPCOMMON; /**************************************************/ @@ -231,16 +199,16 @@ typedef struct NCDODS { char* dimname; } NCDODS; -typedef struct NCalignment { +typedef struct NCD2alignment { unsigned long size; /* size of single instance of this type*/ unsigned long alignment; /* alignment of this field */ unsigned long offset; /* offset of this field in parent */ -} NCalignment; +} NCD2alignment; typedef struct NCtypesize { BOOL aligned; /* have instance and field been defined? */ - NCalignment instance; /* Alignment, etc for instance data */ - NCalignment field; /* Alignment, etc WRT to parent */ + NCD2alignment instance; /* Alignment, etc for instance data */ + NCD2alignment field; /* Alignment, etc WRT to parent */ } NCtypesize; /* Closely mimics struct OCnode*/ @@ -342,6 +310,6 @@ extern int nc__opendap(void); #define getncid(drno) (((NC*)drno)->ext_ncid) #define getdap(drno) ((NCDAPCOMMON*)((NC*)drno)->dispatchdata) -#define getnc3id(drno) (getdap(drno)->nc3id) +#define getnc3id(drno) (getdap(drno)->substrate.nc3id) #endif /*NCCOMMON_H*/ diff --git a/contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.c similarity index 91% rename from contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.c index b679c4d36b8..d9f2dd22491 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.c @@ -3,16 +3,18 @@ * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" #include "ncd2dispatch.h" -#include "dapalign.h" +#include "ncrc.h" +#include "ncoffsets.h" +#ifdef DEBUG2 +#include "dapdump.h" +#endif #ifdef _MSC_VER #include #endif -#define NCRCFILE "NCRCFILE" - #ifdef HAVE_GETRLIMIT # ifdef HAVE_SYS_RESOURCE_H # include @@ -27,16 +29,13 @@ static char* constrainableprotocols[] = {"http", "https",NULL}; static int ncd2initialized = 0; -size_t dap_one[NC_MAX_VAR_DIMS]; -size_t dap_zero[NC_MAX_VAR_DIMS]; - /* Forward */ static NCerror buildncstructures(NCDAPCOMMON*); static NCerror builddims(NCDAPCOMMON*); static char* getdefinename(CDFnode* node); static NCerror buildvars(NCDAPCOMMON*); static NCerror buildglobalattrs(NCDAPCOMMON*, CDFnode* root); -static NCerror buildattribute(NCDAPCOMMON*, NCattribute*, nc_type, int); +static NCerror buildattribute(NCDAPCOMMON*, CDFnode*, NCattribute*); static void computedimindexanon(CDFnode* dim, CDFnode* var); static void replacedims(NClist* dims); static int equivalentdim(CDFnode* basedim, CDFnode* dupdim); @@ -64,8 +63,7 @@ static NCerror applyclientparams(NCDAPCOMMON*); static int NCD2_create(const char *path, int cmode, size_t initialsz, int basepe, size_t *chunksizehintp, - int use_parallel, void* mpidata, - NC_Dispatch*,NC* ncp); + void* mpidata, NC_Dispatch*,NC* ncp); static int NCD2_redef(int ncid); static int NCD2__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, size_t r_align); @@ -138,6 +136,7 @@ NCDEFAULT_put_varm, NCD2_inq_var_all, NCD2_var_par_access, +NCD2_def_var_fill, #ifdef USE_NETCDF4 NCD2_show_metadata, @@ -173,8 +172,8 @@ NCD2_def_opaque, NCD2_def_var_deflate, NCD2_def_var_fletcher32, NCD2_def_var_chunking, -NCD2_def_var_fill, NCD2_def_var_endian, +NCD2_def_var_filter, NCD2_set_var_chunk_cache, NCD2_get_var_chunk_cache, @@ -184,20 +183,10 @@ NCD2_get_var_chunk_cache, NC_Dispatch* NCD2_dispatch_table = NULL; /* moved here from ddispatch.c */ -static NC_Dispatch NCD2_dispatcher; - int NCD2_initialize(void) { - int i; - NCD2_dispatch_table = &NCD2_dispatch_base; - /* Local Initialization */ - compute_nccalignments(); - for(i=0;iint_ncid = nc__pseudofd(); /* create a unique id */ @@ -328,18 +311,20 @@ NCD2_open(const char * path, int mode, #endif #ifdef OCCOMPILEBYDEFAULT + { int rullen = 0; /* set the compile flag by default */ - dapcomm->oc.rawurltext = (char*)emalloc(strlen(path)+strlen("[compile]")+1); - strcpy(dapcomm->oc.rawurltext,"[compile]"); - strcat(dapcomm->oc.rawurltext, path); + rullen = strlen(path)+strlen("[compile]");; + rullen++; /* strlcat nul */ + dapcomm->oc.rawurltext = (char*)emalloc(rullen+1); + strncpy(dapcomm->oc.rawurltext,"[compile]",rullen); + strlcat(dapcomm->oc.rawurltext, path, rullen); + } #else dapcomm->oc.rawurltext = strdup(path); #endif - ncuriparse(dapcomm->oc.rawurltext,&dapcomm->oc.url); - - /* parse the client parameters */ - ncuridecodeparams(dapcomm->oc.url); + if(ncuriparse(dapcomm->oc.rawurltext,&dapcomm->oc.url) != NCU_OK) + {ncstat = NC_EURL; goto done;} if(!constrainable(dapcomm->oc.url)) SETFLAG(dapcomm->controls,NCF_UNCONSTRAINABLE); @@ -359,9 +344,9 @@ NCD2_open(const char * path, int mode, /* fail if we are unconstrainable but have constraints */ if(FLAGSET(dapcomm->controls,NCF_UNCONSTRAINABLE)) { - if(dapcomm->oc.url->constraint != NULL) { + if(dapcomm->oc.url->query != NULL) { nclog(NCLOGWARN,"Attempt to constrain an unconstrainable data source: %s", - dapcomm->oc.url->constraint); + dapcomm->oc.url->query); ncstat = THROW(NC_EDAPCONSTRAINT); goto done; } @@ -374,37 +359,41 @@ NCD2_open(const char * path, int mode, /* Create fake file name: exact name must be unique, but is otherwise irrelevant because we are using NC_DISKLESS */ - snprintf(tmpname,sizeof(tmpname),"%d",drno->int_ncid); + snprintf(tmpname,sizeof(tmpname),"tmp_%d",drno->int_ncid); /* Now, use the file to create the hidden, in-memory netcdf file. We want this hidden file to always be NC_CLASSIC, so we need to force default format temporarily in case user changed it. + Since diskless is enabled, create file in-memory. */ { - int new = NC_CLASSIC_MODEL; + int new = 0; /* format netcdf-3 */ int old = 0; + int ncflags = NC_CLOBBER|NC_CLASSIC_MODEL; + ncflags |= NC_DISKLESS; nc_set_default_format(new,&old); /* save and change */ - ncstat = nc_create(tmpname,NC_DISKLESS|NC_CLASSIC_MODEL,&nc3id); + ncstat = nc_create(tmpname,ncflags,&nc3id); nc_set_default_format(old,&new); /* restore */ + dapcomm->substrate.realfile = ((ncflags & NC_DISKLESS) != 0); + dapcomm->substrate.filename = strdup(tmpname); + if(tmpname == NULL) ncstat = NC_ENOMEM; + dapcomm->substrate.nc3id = nc3id; } if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;} - dapcomm->nc3id = nc3id; /* Avoid fill */ nc_set_fill(nc3id,NC_NOFILL,NULL); } - dapcomm->oc.dapconstraint = (DCEconstraint*)dcecreate(CES_CONSTRAINT); dapcomm->oc.dapconstraint->projections = nclistnew(); dapcomm->oc.dapconstraint->selections = nclistnew(); /* Parse constraints to make sure they are syntactically correct */ - ncstat = dapparsedapconstraints(dapcomm,dapcomm->oc.url->constraint,dapcomm->oc.dapconstraint); + ncstat = dapparsedapconstraints(dapcomm,dapcomm->oc.url->query,dapcomm->oc.dapconstraint); if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;} /* Construct a url for oc minus any constraint and params*/ - dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL, - (NCURISTD ^ NCURICONSTRAINTS)); + dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,NCURIBASE); /* Pass to OC */ ocstat = oc_open(dapcomm->oc.urltext,&dapcomm->oc.conn); @@ -542,16 +531,16 @@ fprintf(stderr,"constrained dds: %s\n",dumptree(dapcomm->cdf.ddsroot)); /* using the modified constraint, rebuild the constraint string */ if(FLAGSET(dapcomm->controls,NCF_UNCONSTRAINABLE)) { /* ignore all constraints */ - dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,0); + dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,NCURIBASE); } else { char* constraintstring = dcebuildconstraintstring(dapcomm->oc.dapconstraint); - ncurisetconstraints(dapcomm->oc.url,constraintstring); + ncurisetquery(dapcomm->oc.url,constraintstring); nullfree(constraintstring); - dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,NCURICONSTRAINTS); + dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,NCURISVC); } #ifdef DEBUG -fprintf(stderr,"ncdap3: final constraint: %s\n",dapcomm->oc.url->constraint); +fprintf(stderr,"ncdap3: final constraint: %s\n",dapcomm->oc.url->query); #endif /* Estimate the variable sizes */ @@ -601,13 +590,13 @@ fprintf(stderr,"ncdap3: final constraint: %s\n",dapcomm->oc.url->constraint); return ncstat; done: - if(drno != NULL) NCD2_close(drno->ext_ncid); + if(drno != NULL) NCD2_close(drno->ext_ncid,NULL); if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat); return THROW(ncstat); } int -NCD2_close(int ncid) +NCD2_close(int ncid, void* ignore) { NC* drno; NCDAPCOMMON* dapcomm; @@ -635,7 +624,6 @@ buildncstructures(NCDAPCOMMON* dapcomm) { NCerror ncstat = NC_NOERR; CDFnode* dds = dapcomm->cdf.ddsroot; - NC* ncsub; ncstat = buildglobalattrs(dapcomm,dds); if(ncstat != NC_NOERR) goto done; @@ -657,7 +645,6 @@ builddims(NCDAPCOMMON* dapcomm) NCerror ncstat = NC_NOERR; int dimid; NClist* dimset = NULL; - NC* drno = dapcomm->controller; NC* ncsub; char* definename; @@ -685,7 +672,7 @@ builddims(NCDAPCOMMON* dapcomm) if(dapcomm->cdf.recorddim != NULL) { CDFnode* unlimited = dapcomm->cdf.recorddim; definename = getdefinename(unlimited); - ncstat = nc_def_dim(dapcomm->nc3id, + ncstat = nc_def_dim(dapcomm->substrate.nc3id, definename, NC_UNLIMITED, &unlimited->ncid); @@ -693,12 +680,12 @@ builddims(NCDAPCOMMON* dapcomm) if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;} /* get the id for the substrate */ - ncstat = NC_check_id(dapcomm->nc3id,&ncsub); + ncstat = NC_check_id(dapcomm->substrate.nc3id,&ncsub); if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;} #if 0 nc3sub = (NC3_INFO*)&ncsub->dispatchdata; /* Set the effective size of UNLIMITED; - note that this cannot easily be done thru the normal API.*/ + note that this cannot easily be done through the normal API.*/ NC_set_numrecs(nc3sub,unlimited->dim.declsize); #endif @@ -712,7 +699,7 @@ builddims(NCDAPCOMMON* dapcomm) fprintf(stderr,"define: dim: %s=%ld\n",dim->ncfullname,(long)dim->dim.declsize); #endif definename = getdefinename(dim); - ncstat = nc_def_dim(dapcomm->nc3id,definename,dim->dim.declsize,&dimid); + ncstat = nc_def_dim(dapcomm->substrate.nc3id,definename,dim->dim.declsize,&dimid); if(ncstat != NC_NOERR) { THROWCHK(ncstat); nullfree(definename); goto done; } @@ -742,7 +729,6 @@ buildvars(NCDAPCOMMON* dapcomm) NCerror ncstat = NC_NOERR; int varid; NClist* varnodes = dapcomm->cdf.ddsroot->tree->varnodes; - NC* drno = dapcomm->controller; char* definename; ASSERT((varnodes != NULL)); @@ -767,9 +753,6 @@ fprintf(stderr,"buildvars.candidate=|%s|\n",var->ncfullname); dimids[j] = dim->ncid; } } - - - definename = getdefinename(var); #ifdef DEBUG1 @@ -784,7 +767,7 @@ fprintf(stderr,"[%ld]",dim->dim.declsize); } fprintf(stderr,"\n"); #endif - ncstat = nc_def_var(dapcomm->nc3id, + ncstat = nc_def_var(dapcomm->substrate.nc3id, definename, var->externaltype, ncrank, @@ -799,7 +782,22 @@ fprintf(stderr,"\n"); if(var->attributes != NULL) { for(j=0;jattributes);j++) { NCattribute* att = (NCattribute*)nclistget(var->attributes,j); - ncstat = buildattribute(dapcomm,att,var->etype,varid); + /* Check for _FillValue/Variable mismatch */ + if(strcmp(att->name,"_FillValue")==0) { + if(att->etype != var->etype) { + /* Log a message */ + nclog(NCLOGERR,"_FillValue/Variable type mismatch: variable=%s",var->ncbasename); + /* See if mismatch is allowed */ + if(FLAGSET(dapcomm->controls,NCF_FILLMISMATCH)) { + /* Forcibly change the attribute type to match */ + att->etype = var->etype; + } else { + ncstat = NC_EBADTYPE; /* fail */ + goto done; + } + } + } + ncstat = buildattribute(dapcomm,var,att); if(ncstat != NC_NOERR) goto done; } } @@ -820,12 +818,11 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) char *nltxt, *p; NCbytes* buf = NULL; NClist* cdfnodes; - NC* drno = dapcomm->controller; if(root->attributes != NULL) { for(i=0;iattributes);i++) { NCattribute* att = (NCattribute*)nclistget(root->attributes,i); - ncstat = buildattribute(dapcomm,att,NC_NAT,NC_GLOBAL); + ncstat = buildattribute(dapcomm,NULL,att); if(ncstat != NC_NOERR) goto done; } } @@ -845,7 +842,7 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) } } if(ncbyteslength(buf) > 0) { - ncstat = nc_put_att_text(dapcomm->nc3id,NC_GLOBAL,"_sequence_dimensions", + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,NC_GLOBAL,"_sequence_dimensions", ncbyteslength(buf),ncbytescontents(buf)); } } @@ -856,12 +853,12 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) if(dapparamcheck(dapcomm,"show","translate")) { /* Add a global attribute to show the translation */ - ncstat = nc_put_att_text(dapcomm->nc3id,NC_GLOBAL,"_translate", + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,NC_GLOBAL,"_translate", strlen("netcdf-3"),"netcdf-3"); } if(dapparamcheck(dapcomm,"show","url")) { if(dapcomm->oc.rawurltext != NULL) - ncstat = nc_put_att_text(dapcomm->nc3id,NC_GLOBAL,"_url", + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,NC_GLOBAL,"_url", strlen(dapcomm->oc.rawurltext),dapcomm->oc.rawurltext); } if(dapparamcheck(dapcomm,"show","dds")) { @@ -872,7 +869,7 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) /* replace newlines with spaces*/ nltxt = nulldup(txt); for(p=nltxt;*p;p++) {if(*p == '\n' || *p == '\r' || *p == '\t') {*p = ' ';}}; - ncstat = nc_put_att_text(dapcomm->nc3id,NC_GLOBAL,"_dds",strlen(nltxt),nltxt); + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,NC_GLOBAL,"_dds",strlen(nltxt),nltxt); nullfree(nltxt); } } @@ -883,7 +880,7 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) if(txt != NULL) { nltxt = nulldup(txt); for(p=nltxt;*p;p++) {if(*p == '\n' || *p == '\r' || *p == '\t') {*p = ' ';}}; - ncstat = nc_put_att_text(dapcomm->nc3id,NC_GLOBAL,"_das",strlen(nltxt),nltxt); + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,NC_GLOBAL,"_das",strlen(nltxt),nltxt); nullfree(nltxt); } } @@ -894,12 +891,13 @@ buildglobalattrs(NCDAPCOMMON* dapcomm, CDFnode* root) } static NCerror -buildattribute(NCDAPCOMMON* dapcomm, NCattribute* att, nc_type vartype, int varid) +buildattribute(NCDAPCOMMON* dapcomm, CDFnode* var, NCattribute* att) { int i; NCerror ncstat = NC_NOERR; unsigned int nvalues = nclistlength(att->values); - NC* drno = dapcomm->controller; + int varid = (var == NULL ? NC_GLOBAL : var->ncid); + void* mem = NULL; /* If the type of the attribute is string, then we need*/ /* to convert to a single character string by concatenation. @@ -913,57 +911,40 @@ buildattribute(NCDAPCOMMON* dapcomm, NCattribute* att, nc_type vartype, int vari char* s = (char*)nclistget(att->values,i); newlen += (1+strlen(s)); } - if(newlen > 0) - newstring = (char*)malloc(newlen); - - MEMCHECK(newstring,NC_ENOMEM); + newlen++; /* for strlcat nul */ + newstring = (char*)malloc(newlen+1); + MEMCHECK(newstring,NC_ENOMEM); newstring[0] = '\0'; for(i=0;ivalues,i); - if(i > 0) strcat(newstring,"\n"); - strcat(newstring,s); + if(i > 0) strlcat(newstring,"\n",newlen); + strlcat(newstring,s,newlen); } dapexpandescapes(newstring); if(newstring[0]=='\0') - ncstat = nc_put_att_text(dapcomm->nc3id,varid,att->name,1,newstring); + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,varid,att->name,1,newstring); else - ncstat = nc_put_att_text(dapcomm->nc3id,varid,att->name,strlen(newstring),newstring); + ncstat = nc_put_att_text(dapcomm->substrate.nc3id,varid,att->name,strlen(newstring),newstring); free(newstring); if(ncstat) goto done; } else { nc_type atype; unsigned int typesize; - void* mem = NULL; - /* It turns out that some servers upgrade the type - of _FillValue in order to correctly preserve the - original value. However, since the type of the - underlying variable is not changes, we get a type - mismatch. So, make sure the type of the fillvalue - is the same as that of the controlling variable. - */ - if(varid != NC_GLOBAL && strcmp(att->name,"_FillValue")==0) - atype = nctypeconvert(dapcomm,vartype); - else - atype = nctypeconvert(dapcomm,att->etype); + atype = nctypeconvert(dapcomm,att->etype); typesize = nctypesizeof(atype); if (nvalues > 0) { - mem = malloc(typesize * nvalues); -#ifdef _MSC_VER - _ASSERTE(_CrtCheckMemory()); -#endif + mem = malloc(typesize * nvalues); } - ncstat = dapcvtattrval(atype,mem,att->values); -#ifdef _MSC_VER - _ASSERTE(_CrtCheckMemory()); -#endif - if(ncstat) {nullfree(mem); goto done;} - ncstat = nc_put_att(dapcomm->nc3id,varid,att->name,atype,nvalues,mem); -#ifdef _MSC_VER - _ASSERTE(_CrtCheckMemory()); -#endif - if(ncstat) {nullfree(mem); goto done;} + ncstat = dapcvtattrval(atype,mem,att->values,att); + if(ncstat == NC_ERANGE) + nclog(NCLOGERR,"Attribute value out of range: %s:%s", + (var==NULL?"":var->ncbasename),att->name); + if(ncstat) goto done; + ncstat = nc_put_att(dapcomm->substrate.nc3id,varid,att->name,atype,nvalues,mem); + if(ncstat) goto done; } done: + if(mem) free(mem); return THROW(ncstat); } @@ -994,7 +975,7 @@ getdefinename(CDFnode* node) } int -NCDAP_ping(const char* url) +NCDAP2_ping(const char* url) { OCerror ocstat = OC_NOERR; ocstat = oc_ping(url); @@ -1145,11 +1126,14 @@ fprintf(stderr,"conflict: %s[%lu] %s[%lu]\n", nullfree(dim->ncbasename); if(dim->dim.index1 > 0) {/* need to fix conflicting names (see above) */ char sindex[64]; + size_t baselen; snprintf(sindex,sizeof(sindex),"_%d",dim->dim.index1); - dim->ncbasename = (char*)malloc(strlen(sindex)+strlen(legalname)+1); + baselen = strlen(sindex)+strlen(legalname); + baselen++; /* for strlcat nul */ + dim->ncbasename = (char*)malloc(baselen+1); if(dim->ncbasename == NULL) {nullfree(legalname); return NC_ENOMEM;} - strcpy(dim->ncbasename,legalname); - strcat(dim->ncbasename,sindex); + strncpy(dim->ncbasename,legalname,baselen); + strlcat(dim->ncbasename,sindex,baselen); nullfree(legalname); } else {/* standard case */ dim->ncbasename = legalname; @@ -1201,6 +1185,16 @@ constrainable(NCURI* durl) return 0; } +/* Lookup a parameter key; case insensitive */ +static const char* +paramlookup(NCDAPCOMMON* state, const char* key) +{ + const char* value = NULL; + if(state == NULL || key == NULL || state->oc.url == NULL) return NULL; + value = ncurilookup(state->oc.url,key); + return value; +} + /* Note: this routine only applies some common client parameters, other routines may apply specific ones. @@ -1214,24 +1208,24 @@ applyclientparams(NCDAPCOMMON* nccomm) int dfaltseqlim = DEFAULTSEQLIMIT; const char* value; char tmpname[NC_MAX_NAME+32]; - char* pathstr; + char* pathstr = NULL; OClink conn = nccomm->oc.conn; unsigned long limit; ASSERT(nccomm->oc.url != NULL); nccomm->cdf.cache->cachelimit = DFALTCACHELIMIT; - value = oc_clientparam_get(conn,"cachelimit"); + value = paramlookup(nccomm,"cachelimit"); limit = getlimitnumber(value); if(limit > 0) nccomm->cdf.cache->cachelimit = limit; nccomm->cdf.fetchlimit = DFALTFETCHLIMIT; - value = oc_clientparam_get(conn,"fetchlimit"); + value = paramlookup(nccomm,"fetchlimit"); limit = getlimitnumber(value); if(limit > 0) nccomm->cdf.fetchlimit = limit; nccomm->cdf.smallsizelimit = DFALTSMALLLIMIT; - value = oc_clientparam_get(conn,"smallsizelimit"); + value = paramlookup(nccomm,"smallsizelimit"); limit = getlimitnumber(value); if(limit > 0) nccomm->cdf.smallsizelimit = limit; @@ -1243,38 +1237,46 @@ applyclientparams(NCDAPCOMMON* nccomm) } } #endif - value = oc_clientparam_get(conn,"cachecount"); + value = paramlookup(nccomm,"cachecount"); limit = getlimitnumber(value); if(limit > 0) nccomm->cdf.cache->cachecount = limit; /* Ignore limit if not caching */ if(!FLAGSET(nccomm->controls,NCF_CACHE)) nccomm->cdf.cache->cachecount = 0; - if(oc_clientparam_get(conn,"nolimit") != NULL) + if(paramlookup(nccomm,"nolimit") != NULL) dfaltseqlim = 0; - value = oc_clientparam_get(conn,"limit"); + value = paramlookup(nccomm,"limit"); if(value != NULL && strlen(value) != 0) { if(sscanf(value,"%d",&len) && len > 0) dfaltseqlim = len; } nccomm->cdf.defaultsequencelimit = dfaltseqlim; /* allow embedded _ */ - value = oc_clientparam_get(conn,"stringlength"); + value = paramlookup(nccomm,"stringlength"); + if(value == NULL) + value = paramlookup(nccomm,"maxstrlen"); if(value != NULL && strlen(value) != 0) { if(sscanf(value,"%d",&len) && len > 0) dfaltstrlen = len; - } + } nccomm->cdf.defaultstringlength = dfaltstrlen; /* String dimension limits apply to variables */ for(i=0;icdf.ddsroot->tree->varnodes);i++) { CDFnode* var = (CDFnode*)nclistget(nccomm->cdf.ddsroot->tree->varnodes,i); - /* Define the client param stringlength for this variable*/ + /* Define the client param stringlength/maxstrlen for this variable*/ + /* create the variable path name */ var->maxstringlength = 0; /* => use global dfalt */ - strcpy(tmpname,"stringlength_"); + strncpy(tmpname,"stringlength_",sizeof(tmpname)); pathstr = makeocpathstring(conn,var->ocnode,"."); - strncat(tmpname,pathstr,NC_MAX_NAME); + strlcat(tmpname,pathstr,sizeof(tmpname)); + value = paramlookup(nccomm,tmpname); + if(value == NULL) { + strcpy(tmpname,"maxstrlen_"); + strncat(tmpname,pathstr,NC_MAX_NAME); + value = paramlookup(nccomm,tmpname); + } nullfree(pathstr); - value = oc_clientparam_get(conn,tmpname); if(value != NULL && strlen(value) != 0) { if(sscanf(value,"%d",&len) && len > 0) var->maxstringlength = len; } @@ -1284,14 +1286,14 @@ applyclientparams(NCDAPCOMMON* nccomm) CDFnode* var = (CDFnode*)nclistget(nccomm->cdf.ddsroot->tree->nodes,i); if(var->nctype != NC_Sequence) continue; var->sequencelimit = dfaltseqlim; - strcpy(tmpname,"nolimit_"); + strncpy(tmpname,"nolimit_",sizeof(tmpname)); pathstr = makeocpathstring(conn,var->ocnode,"."); - strncat(tmpname,pathstr,NC_MAX_NAME); - if(oc_clientparam_get(conn,tmpname) != NULL) + strlcat(tmpname,pathstr,sizeof(tmpname)); + if(paramlookup(nccomm,tmpname) != NULL) var->sequencelimit = 0; - strcpy(tmpname,"limit_"); - strncat(tmpname,pathstr,NC_MAX_NAME); - value = oc_clientparam_get(conn,tmpname); + strncpy(tmpname,"limit_",sizeof(tmpname)); + strlcat(tmpname,pathstr,sizeof(tmpname)); + value = paramlookup(nccomm,tmpname); if(value != NULL && strlen(value) != 0) { if(sscanf(value,"%d",&len) && len > 0) var->sequencelimit = len; @@ -1300,7 +1302,7 @@ applyclientparams(NCDAPCOMMON* nccomm) } /* test for the appropriate fetch flags */ - value = oc_clientparam_get(conn,"fetch"); + value = paramlookup(nccomm,"fetch"); if(value != NULL && strlen(value) > 0) { if(value[0] == 'd' || value[0] == 'D') { SETFLAG(nccomm->controls,NCF_ONDISK); @@ -1308,7 +1310,7 @@ applyclientparams(NCDAPCOMMON* nccomm) } /* test for the force-whole-var flag */ - value = oc_clientparam_get(conn,"wholevar"); + value = paramlookup(nccomm,"wholevar"); if(value != NULL) { SETFLAG(nccomm->controls,NCF_WHOLEVAR); } @@ -1448,7 +1450,7 @@ addstringdims(NCDAPCOMMON* dapcomm) if(dimsize == 0) sdim = dapcomm->cdf.globalstringdim; /* use default */ else { - /* create a psuedo dimension for the charification of the string*/ + /* create a pseudo dimension for the charification of the string*/ if(var->dodsspecial.dimname != NULL) { strncpy(dimname,var->dodsspecial.dimname,sizeof(dimname)); dimname[sizeof(dimname)-1] = '\0'; @@ -1755,6 +1757,7 @@ countsequence(NCDAPCOMMON* dapcomm, CDFnode* xseq, size_t* sizep) static NCerror freeNCDAPCOMMON(NCDAPCOMMON* dapcomm) { + if(dapcomm == NULL) return NC_NOERR; freenccache(dapcomm,dapcomm->cdf.cache); nclistfree(dapcomm->cdf.projectedvars); nullfree(dapcomm->cdf.recorddimname); @@ -1775,6 +1778,11 @@ freeNCDAPCOMMON(NCDAPCOMMON* dapcomm) dcefree((DCEnode*)dapcomm->oc.dapconstraint); dapcomm->oc.dapconstraint = NULL; + /* Note that the ncio layer will figure out that the tmp file needs to be deleted, + so we do not have to do it. + */ + nullfree(dapcomm->substrate.filename); /* always reclaim */ + free(dapcomm); return NC_NOERR; @@ -1844,8 +1852,8 @@ computeseqcountconstraints(NCDAPCOMMON* dapcomm, CDFnode* seq, NCbytes* seqcount } } /* Finally, add in any selection from the original URL */ - if(dapcomm->oc.url->selection != NULL) - ncbytescat(seqcountconstraints,dapcomm->oc.url->selection); + if(dap_getselection(dapcomm->oc.url) != NULL) + ncbytescat(seqcountconstraints,dap_getselection(dapcomm->oc.url)); nclistfree(path); return NC_NOERR; } @@ -1992,7 +2000,7 @@ fetchpatternmetadata(NCDAPCOMMON* dapcomm) if(FLAGSET(dapcomm->controls,NCF_UNCONSTRAINABLE)) ce = NULL; else - ce = nulldup(dapcomm->oc.url->selection); + ce = nulldup(dap_getselection(dapcomm->oc.url)); /* Get selection constrained DDS */ ncstat = dap_fetch(dapcomm,dapcomm->oc.conn,ce,OCDDS,&ocroot); @@ -2034,7 +2042,7 @@ fetchpatternmetadata(NCDAPCOMMON* dapcomm) if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;} } -#ifdef DEBUG +#ifdef DEBUG2 fprintf(stderr,"full pattern:\n%s",dumptree(dapcomm->cdf.fullddsroot)); #endif @@ -2075,7 +2083,7 @@ fetchconstrainedmetadata(NCDAPCOMMON* dapcomm) if(ncstat) goto fail; } -#ifdef DEBUG +#ifdef DEBUG2 fprintf(stderr,"constrained:\n%s",dumptree(dapcomm->cdf.ddsroot)); #endif @@ -2085,7 +2093,6 @@ fprintf(stderr,"constrained:\n%s",dumptree(dapcomm->cdf.ddsroot)); dapcomm->oc.ocdasroot); if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;} } - /* map the constrained DDS to the unconstrained DDS */ ncstat = mapnodes(dapcomm->cdf.ddsroot,dapcomm->cdf.fullddsroot); if(ncstat) goto fail; @@ -2196,6 +2203,12 @@ applyclientparamcontrols(NCDAPCOMMON* dapcomm) if(dapparamcheck(dapcomm,"show","fetch")) SETFLAG(dapcomm->controls,NCF_SHOWFETCH); + /* enable/disable _FillValue/Variable Mis-match */ + if(dapparamcheck(dapcomm,"fillmismatch",NULL)) + SETFLAG(dapcomm->controls,NCF_FILLMISMATCH); + else if(dapparamcheck(dapcomm,"nofillmismatch",NULL)) + CLRFLAG(dapcomm->controls,NCF_FILLMISMATCH); + nclog(NCLOGNOTE,"Caching=%d",FLAGSET(dapcomm->controls,NCF_CACHE)); } @@ -2386,7 +2399,8 @@ NCD2_inq_var_all(int ncid, int varid, char *name, nc_type* xtypep, int* shufflep, int* deflatep, int* deflate_levelp, int* fletcher32p, int* contiguousp, size_t* chunksizesp, int* no_fill, void* fill_valuep, int* endiannessp, - int* options_maskp, int* pixels_per_blockp) + unsigned int* idp, size_t* nparamsp, unsigned int* params + ) { NC* drno; int ret; @@ -2396,7 +2410,8 @@ NCD2_inq_var_all(int ncid, int varid, char *name, nc_type* xtypep, shufflep, deflatep, deflate_levelp, fletcher32p, contiguousp, chunksizesp, no_fill, fill_valuep, endiannessp, - options_maskp, pixels_per_blockp); + idp,nparamsp,params + ); return THROW(ret); } @@ -2426,6 +2441,15 @@ NCD2_var_par_access(int ncid, int p2, int p3) return THROW(NC_ENOPAR); } +int +NCD2_def_var_fill(int ncid, int p2, int p3, const void* p4) +{ + NC* drno; + int ret; + if((ret = NC_check_id(ncid, (NC**)&drno)) != NC_NOERR) return THROW(ret); + ret = nc_def_var_fill(getnc3id(drno), p2, p3, p4); + return THROW(ret); +} #ifdef USE_NETCDF4 @@ -2756,22 +2780,22 @@ NCD2_def_var_chunking(int ncid, int p2, int p3, const size_t* p4) } int -NCD2_def_var_fill(int ncid, int p2, int p3, const void* p4) +NCD2_def_var_endian(int ncid, int p2, int p3) { NC* drno; int ret; if((ret = NC_check_id(ncid, (NC**)&drno)) != NC_NOERR) return THROW(ret); - ret = nc_def_var_fill(getnc3id(drno), p2, p3, p4); + ret = nc_def_var_endian(getnc3id(drno), p2, p3); return THROW(ret); } int -NCD2_def_var_endian(int ncid, int p2, int p3) +NCD2_def_var_filter(int ncid, int varid, unsigned int id, size_t n, const unsigned int* params) { NC* drno; int ret; if((ret = NC_check_id(ncid, (NC**)&drno)) != NC_NOERR) return THROW(ret); - ret = nc_def_var_endian(getnc3id(drno), p2, p3); + ret = nc_def_var_filter(getnc3id(drno), varid, id, n, params); return THROW(ret); } @@ -2795,4 +2819,4 @@ NCD2_get_var_chunk_cache(int ncid, int p2, size_t* p3, size_t* p4, float* p5) return THROW(ret); } -#endif // USE_NETCDF4 +#endif /* USE_NETCDF4 */ diff --git a/contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.h b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.h similarity index 85% rename from contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.h rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.h index 9b3e8265ef0..fd6731d2276 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/ncd2dispatch.h +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncd2dispatch.h @@ -43,244 +43,239 @@ extern "C" { #endif -EXTERNL int +extern int NCD2_open(const char *path, int mode, int basepe, size_t *chunksizehintp, - int use_parallel, void* mpidata, - struct NC_Dispatch* dispatch, NC* ncp); + void* mpidata, struct NC_Dispatch* dispatch, NC* ncp); -EXTERNL int -NCD2_close(int ncid); +extern int +NCD2_close(int ncid,void*); -EXTERNL int +extern int NCD2_inq_format_extended(int ncid, int* formatp, int* modep); -EXTERNL int +extern int NCD2_set_fill(int ncid, int fillmode, int *old_modep); -EXTERNL int +extern int NCD2_set_base_pe(int ncid, int pe); -EXTERNL int +extern int NCD2_inq_base_pe(int ncid, int *pe); -EXTERNL int +extern int NCD2_inq_format(int ncid, int *formatp); -EXTERNL int +extern int NCD2_inq_format_extended(int ncid, int *formatp, int *modep); -EXTERNL int +extern int NCD2_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp); -EXTERNL int +extern int NCD2_inq_type(int, nc_type, char *, size_t *); /* Begin _dim */ -EXTERNL int +extern int NCD2_def_dim(int ncid, const char *name, size_t len, int *idp); -EXTERNL int +extern int NCD2_inq_dimid(int ncid, const char *name, int *idp); -EXTERNL int +extern int NCD2_inq_dim(int ncid, int dimid, char *name, size_t *lenp); -EXTERNL int +extern int NCD2_inq_unlimdim(int ncid, int *unlimdimidp); -EXTERNL int +extern int NCD2_rename_dim(int ncid, int dimid, const char *name); /* End _dim */ /* Begin _att */ -EXTERNL int +extern int NCD2_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp); -EXTERNL int +extern int NCD2_inq_attid(int ncid, int varid, const char *name, int *idp); -EXTERNL int +extern int NCD2_inq_attname(int ncid, int varid, int attnum, char *name); -EXTERNL int +extern int NCD2_rename_att(int ncid, int varid, const char *name, const char *newname); -EXTERNL int +extern int NCD2_del_att(int ncid, int varid, const char*); /* End _att */ /* Begin {put,get}_att */ -EXTERNL int +extern int NCD2_get_att(int ncid, int varid, const char *name, void *value, nc_type); -EXTERNL int +extern int NCD2_put_att(int ncid, int varid, const char *name, nc_type datatype, size_t len, const void *value, nc_type); /* End {put,get}_att */ /* Begin _var */ -EXTERNL int +extern int NCD2_def_var(int ncid, const char *name, nc_type xtype, int ndims, const int *dimidsp, int *varidp); -EXTERNL int +extern int NCD2_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, int *ndimsp, int *dimidsp, int *nattsp, int *shufflep, int *deflatep, int *deflate_levelp, int *fletcher32p, int *contiguousp, size_t *chunksizesp, int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp); + unsigned int* idp, size_t* nparamsp, unsigned int* params + ); -EXTERNL int +extern int NC3_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep, int *ndimsp, int *dimidsp, int *nattsp, int *shufflep, int *deflatep, int *deflate_levelp, int *fletcher32p, int *contiguousp, size_t *chunksizesp, int *no_fill, void *fill_valuep, int *endiannessp, - int *options_maskp, int *pixels_per_blockp); + unsigned int* idp, size_t* nparamsp, unsigned int* params + ); -EXTERNL int +extern int NCD2_inq_varid(int ncid, const char *name, int *varidp); -EXTERNL int +extern int NCD2_rename_var(int ncid, int varid, const char *name); /* End _var */ -EXTERNL int +extern int NCD2_var_par_access(int, int, int); +extern int +NCD2_def_var_fill(int, int, int, const void *); + /* netCDF4 API only */ #ifdef USE_NETCDF4 - EXTERNL int + extern int NCD2_inq_ncid(int, const char *, int *); - EXTERNL int + extern int NCD2_inq_grps(int, int *, int *); - EXTERNL int + extern int NCD2_inq_grpname(int, char *); - EXTERNL int + extern int NCD2_inq_grpname_full(int, size_t *, char *); - EXTERNL int + extern int NCD2_inq_grp_parent(int, int *); - EXTERNL int + extern int NCD2_inq_grp_full_ncid(int, const char *, int *); - EXTERNL int + extern int NCD2_inq_varids(int, int * nvars, int *); - EXTERNL int + extern int NCD2_inq_dimids(int, int * ndims, int *, int); - EXTERNL int + extern int NCD2_inq_typeids(int, int * ntypes, int *); - EXTERNL int + extern int NCD2_inq_type_equal(int, nc_type, int, nc_type, int *); - EXTERNL int + extern int NCD2_rename_grp(int, const char *); - EXTERNL int + extern int NCD2_inq_user_type(int, nc_type, char *, size_t *, nc_type *, size_t *, int *); - EXTERNL int + extern int NCD2_insert_compound(int, nc_type, const char *, size_t, nc_type); - EXTERNL int + extern int NCD2_insert_array_compound(int, nc_type, const char *, size_t, nc_type, int, const int *); - EXTERNL int + extern int NCD2_inq_typeid(int, const char *, nc_type *); - EXTERNL int + extern int NCD2_inq_compound_field(int, nc_type, int, char *, size_t *, nc_type *, int *, int *); - EXTERNL int + extern int NCD2_inq_compound_fieldindex(int, nc_type, const char *, int *); - EXTERNL int + extern int NCD2_def_vlen(int, const char *, nc_type base_typeid, nc_type *); - EXTERNL int + extern int NCD2_put_vlen_element(int, int, void *, size_t, const void *); - EXTERNL int + extern int NCD2_get_vlen_element(int, int, const void *, size_t *, void *); - EXTERNL int + extern int NCD2_insert_enum(int, nc_type, const char *, const void *); - EXTERNL int + extern int NCD2_inq_enum_member(int, nc_type, int, char *, void *); - EXTERNL int + extern int NCD2_inq_enum_ident(int, nc_type, long long, char *); - EXTERNL int + extern int NCD2_def_var_deflate(int, int, int, int, int); - EXTERNL int + extern int NCD2_def_var_fletcher32(int, int, int); - EXTERNL int + extern int NCD2_def_var_chunking(int, int, int, const size_t *); - EXTERNL int - NCD2_def_var_fill(int, int, int, const void *); - - EXTERNL int + extern int NCD2_def_var_endian(int, int, int); - EXTERNL int + extern int + NCD2_def_var_filter(int, int, unsigned int, size_t, const unsigned int*); + + extern int NCD2_inq_unlimdims(int, int *, int *); - EXTERNL int + extern int NCD2_show_metadata(int); - EXTERNL int + extern int NCD2_def_compound(int, size_t, const char *, nc_type *); - EXTERNL int + extern int NCD2_def_enum(int, nc_type, const char *, nc_type *); - EXTERNL int + extern int NCD2_def_grp(int, const char *, int *); - EXTERNL int + extern int NCD2_def_opaque(int, size_t, const char *, nc_type *); - EXTERNL int + extern int NCD2_set_var_chunk_cache(int, int, size_t, size_t, float); -EXTERNL int +extern int NCD2_get_var_chunk_cache(int, int, size_t *, size_t *, float *); - #endif //USE_NETCDF4 - - - - - - -extern int NCD2_initialize(void); - #if defined(__cplusplus) } #endif diff --git a/contrib/netcdf/4.4.1.1/libdap2/ncdaperr.c b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncdaperr.c similarity index 98% rename from contrib/netcdf/4.4.1.1/libdap2/ncdaperr.c rename to contrib/netcdf/netcdf-c-4.6.2/libdap2/ncdaperr.c index 476cd553d05..1833280c2b3 100644 --- a/contrib/netcdf/4.4.1.1/libdap2/ncdaperr.c +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap2/ncdaperr.c @@ -3,7 +3,7 @@ * See netcdf/COPYRIGHT file for copying and redistribution conditions. *********************************************************************/ -#include "ncdap.h" +#include "dapincludes.h" NCerror ocerrtoncerr(OCerror ocerr) diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/CMakeLists.txt b/contrib/netcdf/netcdf-c-4.6.2/libdap4/CMakeLists.txt new file mode 100644 index 00000000000..ce586a498f3 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/CMakeLists.txt @@ -0,0 +1,32 @@ +SET(dap4_SOURCES d4crc32.c d4curlfunctions.c d4fix.c d4data.c d4file.c d4parser.c d4meta.c d4varx.c d4dump.c d4swap.c d4chunk.c d4printer.c d4read.c d4http.c d4util.c d4odom.c d4cvt.c d4debug.c ncd4dispatch.c ezxml_extra.c ezxml.c) + +add_library(dap4 OBJECT ${dap4_SOURCES}) + +### +# Options related to the man page generation. +### + +### +# The C API man page. +### + +set(man_MANS netcdf.3) + +set(ARGS_MANPAGE -DAPI=C) + +IF (USE_NETCDF4) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) +ENDIF(USE_NETCDF4) + +IF (BUILD_DAP) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) +ENDIF(BUILD_DAP) + +IF (BUILD_PARALLEL) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) +ENDIF(BUILD_PARALLEL) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} dce.y CMakeLists.txt Makefile.am) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.am b/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.am new file mode 100644 index 00000000000..3dd113090eb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.am @@ -0,0 +1,80 @@ +## This is a automake file, part of Unidata's netCDF package. +# Copyright 2005, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to libdap2. Whatever that +# is! + +# Put together AM_CPPFLAGS and AM_LDFLAGS. +include $(top_srcdir)/lib_flags.am + +# We may have to add to these later. +DISTCLEANFILES = +MAINTAINERCLEANFILES = +CLEANFILES = +EXTRA_DIST = CMakeLists.txt + +LDADD= + +#d4curlflags.c + +SRC= \ +d4crc32.c \ +d4curlfunctions.c \ +d4fix.c \ +d4data.c \ +d4file.c \ +d4parser.c \ +d4meta.c \ +d4varx.c \ +d4dump.c \ +d4swap.c \ +d4chunk.c \ +d4printer.c \ +d4read.c \ +d4http.c \ +d4util.c \ +d4odom.c \ +d4cvt.c \ +d4debug.c \ +ncd4dispatch.c \ +ezxml_extra.c \ +ezxml.c + +HDRS= \ +ncd4dispatch.h \ +ncd4types.h \ +ncd4.h \ +d4chunk.h \ +d4http.h \ +d4read.h \ +d4curlfunctions.h \ +d4util.h \ +d4debug.h \ +d4odom.h \ +d4bytes.h \ +d4includes.h \ +ezxml.h + +if ENABLE_DAP4 +if USE_NETCDF4 +AM_CPPFLAGS += -I$(top_srcdir)/libsrc4 +endif + +# Build convenience library +noinst_LTLIBRARIES = libdap4.la +libdap4_la_SOURCES = $(SRC) $(HDRS) +libdap4_la_CPPFLAGS = $(AM_CPPFLAGS) +libdap4_la_LIBADD = + +endif # ENABLE_DAP4 + +# Show what is needed to insert a new version of ezxml +# primary fix: The original ezxml.[ch] uses '//' comments; +# unpack and replace with '/*..*/' +EZXML=ezxml-0.8.6.tar.gz +ezxml:: + rm -fr ./ezxml ./ezxml.[ch] ./license.txt + tar -zxf ./${EZXML} + sed -e 's|//\(.*\)|/*\1*/|' ./ezxml.c + sed -e 's|//\(.*\)|/*\1*/|' ./ezxml.h + cp ezxml/license.txt . diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.in b/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.in new file mode 100644 index 00000000000..ea2218f7762 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/Makefile.in @@ -0,0 +1,843 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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. + +@SET_MAKE@ + +# Copyright 2005, see the COPYRIGHT file for more information. + +# This automake file generates the Makefile to libdap2. Whatever that +# is! + +# This is part of the netCDF package. +# Copyright 2005 University Corporation for Atmospheric Research/Unidata +# See COPYRIGHT file for conditions of use. +# +# Assemble the CPPFLAGS and LDFLAGS that point to all the needed +# libraries for netCDF-4. +# + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +@USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2 +@ENABLE_DAP4_TRUE@@USE_NETCDF4_TRUE@am__append_2 = -I$(top_srcdir)/libsrc4 +subdir = libdap4 +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)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libdap4_la_DEPENDENCIES = +am__libdap4_la_SOURCES_DIST = d4crc32.c d4curlfunctions.c d4fix.c \ + d4data.c d4file.c d4parser.c d4meta.c d4varx.c d4dump.c \ + d4swap.c d4chunk.c d4printer.c d4read.c d4http.c d4util.c \ + d4odom.c d4cvt.c d4debug.c ncd4dispatch.c ezxml_extra.c \ + ezxml.c ncd4dispatch.h ncd4types.h ncd4.h d4chunk.h d4http.h \ + d4read.h d4curlfunctions.h d4util.h d4debug.h d4odom.h \ + d4bytes.h d4includes.h ezxml.h +am__objects_1 = libdap4_la-d4crc32.lo libdap4_la-d4curlfunctions.lo \ + libdap4_la-d4fix.lo libdap4_la-d4data.lo libdap4_la-d4file.lo \ + libdap4_la-d4parser.lo libdap4_la-d4meta.lo \ + libdap4_la-d4varx.lo libdap4_la-d4dump.lo libdap4_la-d4swap.lo \ + libdap4_la-d4chunk.lo libdap4_la-d4printer.lo \ + libdap4_la-d4read.lo libdap4_la-d4http.lo libdap4_la-d4util.lo \ + libdap4_la-d4odom.lo libdap4_la-d4cvt.lo libdap4_la-d4debug.lo \ + libdap4_la-ncd4dispatch.lo libdap4_la-ezxml_extra.lo \ + libdap4_la-ezxml.lo +am__objects_2 = +@ENABLE_DAP4_TRUE@am_libdap4_la_OBJECTS = $(am__objects_1) \ +@ENABLE_DAP4_TRUE@ $(am__objects_2) +libdap4_la_OBJECTS = $(am_libdap4_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +@ENABLE_DAP4_TRUE@am_libdap4_la_rpath = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = +am__maybe_remake_depfiles = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libdap4_la_SOURCES) +DIST_SOURCES = $(am__libdap4_la_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__extra_recursive_targets = check-valgrind-recursive \ + check-valgrind-memcheck-recursive \ + check-valgrind-helgrind-recursive check-valgrind-drd-recursive \ + check-valgrind-sgcheck-recursive +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/lib_flags.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINFILE_NAME = @BINFILE_NAME@ +BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@ +CC = @CC@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CONFIG_DATE = @CONFIG_DATE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@ +DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@ +DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +DOXYGEN_SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLED_DOC_SECTIONS = @ENABLED_DOC_SECTIONS@ +ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@ +ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@ +ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@ +ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAS_CDF5 = @HAS_CDF5@ +HAS_DAP = @HAS_DAP@ +HAS_DAP2 = @HAS_DAP2@ +HAS_DAP4 = @HAS_DAP4@ +HAS_DISKLESS = @HAS_DISKLESS@ +HAS_ERANGE_FILL = @HAS_ERANGE_FILL@ +HAS_HDF4 = @HAS_HDF4@ +HAS_HDF5 = @HAS_HDF5@ +HAS_JNA = @HAS_JNA@ +HAS_LOGGING = @HAS_LOGGING@ +HAS_MMAP = @HAS_MMAP@ +HAS_NC2 = @HAS_NC2@ +HAS_NC4 = @HAS_NC4@ +HAS_PARALLEL = @HAS_PARALLEL@ +HAS_PARALLEL4 = @HAS_PARALLEL4@ +HAS_PNETCDF = @HAS_PNETCDF@ +HAS_SZLIB = @HAS_SZLIB@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISCMAKE = @ISCMAKE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +M4FLAGS = @M4FLAGS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPIEXEC = @MPIEXEC@ +MSVC = @MSVC@ +NC_ENABLE_DOXYGEN_PDF_OUTPUT = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@ +NC_HAS_CDF5 = @NC_HAS_CDF5@ +NC_HAS_DAP2 = @NC_HAS_DAP2@ +NC_HAS_DAP4 = @NC_HAS_DAP4@ +NC_HAS_DISKLESS = @NC_HAS_DISKLESS@ +NC_HAS_ERANGE_FILL = @NC_HAS_ERANGE_FILL@ +NC_HAS_HDF4 = @NC_HAS_HDF4@ +NC_HAS_HDF5 = @NC_HAS_HDF5@ +NC_HAS_JNA = @NC_HAS_JNA@ +NC_HAS_MMAP = @NC_HAS_MMAP@ +NC_HAS_NC2 = @NC_HAS_NC2@ +NC_HAS_NC4 = @NC_HAS_NC4@ +NC_HAS_PARALLEL = @NC_HAS_PARALLEL@ +NC_HAS_PARALLEL4 = @NC_HAS_PARALLEL4@ +NC_HAS_PNETCDF = @NC_HAS_PNETCDF@ +NC_HAS_SZIP = @NC_HAS_SZIP@ +NC_LIBS = @NC_LIBS@ +NC_M4 = @NC_M4@ +NC_RELAX_COORD_BOUND = @NC_RELAX_COORD_BOUND@ +NC_VERSION = @NC_VERSION@ +NC_VERSION_MAJOR = @NC_VERSION_MAJOR@ +NC_VERSION_MINOR = @NC_VERSION_MINOR@ +NC_VERSION_NOTE = @NC_VERSION_NOTE@ +NC_VERSION_PATCH = @NC_VERSION_PATCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NOUNDEFINED = @NOUNDEFINED@ +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@ +RELAX_COORD_BOUND = @RELAX_COORD_BOUND@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOW_DOXYGEN_TAG_LIST = @SHOW_DOXYGEN_TAG_LIST@ +STRIP = @STRIP@ +VALGRIND = @VALGRIND@ +VALGRIND_ENABLED = @VALGRIND_ENABLED@ +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_DUMPBIN = @ac_ct_DUMPBIN@ +am__leading_dot = @am__leading_dot@ +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@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +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@ +valgrind_enabled_tools = @valgrind_enabled_tools@ +valgrind_tools = @valgrind_tools@ +AM_TESTS_ENVIRONMENT = export TOPSRCDIR=${abs_top_srcdir}; export TOPBUILDDIR=${abs_top_builddir}; + +# Put together AM_CPPFLAGS and AM_LDFLAGS. + +# We may have to add to these later. +DISTCLEANFILES = +MAINTAINERCLEANFILES = +CLEANFILES = +EXTRA_DIST = CMakeLists.txt +LDADD = + +#d4curlflags.c +SRC = \ +d4crc32.c \ +d4curlfunctions.c \ +d4fix.c \ +d4data.c \ +d4file.c \ +d4parser.c \ +d4meta.c \ +d4varx.c \ +d4dump.c \ +d4swap.c \ +d4chunk.c \ +d4printer.c \ +d4read.c \ +d4http.c \ +d4util.c \ +d4odom.c \ +d4cvt.c \ +d4debug.c \ +ncd4dispatch.c \ +ezxml_extra.c \ +ezxml.c + +HDRS = \ +ncd4dispatch.h \ +ncd4types.h \ +ncd4.h \ +d4chunk.h \ +d4http.h \ +d4read.h \ +d4curlfunctions.h \ +d4util.h \ +d4debug.h \ +d4odom.h \ +d4bytes.h \ +d4includes.h \ +ezxml.h + + +# Build convenience library +@ENABLE_DAP4_TRUE@noinst_LTLIBRARIES = libdap4.la +@ENABLE_DAP4_TRUE@libdap4_la_SOURCES = $(SRC) $(HDRS) +@ENABLE_DAP4_TRUE@libdap4_la_CPPFLAGS = $(AM_CPPFLAGS) +@ENABLE_DAP4_TRUE@libdap4_la_LIBADD = + +# Show what is needed to insert a new version of ezxml +# primary fix: The original ezxml.[ch] uses '//' comments; +# unpack and replace with '/*..*/' +EZXML = ezxml-0.8.6.tar.gz +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.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 --ignore-deps libdap4/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps libdap4/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/lib_flags.am $(am__empty): + +$(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): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libdap4.la: $(libdap4_la_OBJECTS) $(libdap4_la_DEPENDENCIES) $(EXTRA_libdap4_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(am_libdap4_la_rpath) $(libdap4_la_OBJECTS) $(libdap4_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +libdap4_la-d4crc32.lo: d4crc32.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4crc32.lo `test -f 'd4crc32.c' || echo '$(srcdir)/'`d4crc32.c + +libdap4_la-d4curlfunctions.lo: d4curlfunctions.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4curlfunctions.lo `test -f 'd4curlfunctions.c' || echo '$(srcdir)/'`d4curlfunctions.c + +libdap4_la-d4fix.lo: d4fix.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4fix.lo `test -f 'd4fix.c' || echo '$(srcdir)/'`d4fix.c + +libdap4_la-d4data.lo: d4data.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4data.lo `test -f 'd4data.c' || echo '$(srcdir)/'`d4data.c + +libdap4_la-d4file.lo: d4file.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4file.lo `test -f 'd4file.c' || echo '$(srcdir)/'`d4file.c + +libdap4_la-d4parser.lo: d4parser.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4parser.lo `test -f 'd4parser.c' || echo '$(srcdir)/'`d4parser.c + +libdap4_la-d4meta.lo: d4meta.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4meta.lo `test -f 'd4meta.c' || echo '$(srcdir)/'`d4meta.c + +libdap4_la-d4varx.lo: d4varx.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4varx.lo `test -f 'd4varx.c' || echo '$(srcdir)/'`d4varx.c + +libdap4_la-d4dump.lo: d4dump.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4dump.lo `test -f 'd4dump.c' || echo '$(srcdir)/'`d4dump.c + +libdap4_la-d4swap.lo: d4swap.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4swap.lo `test -f 'd4swap.c' || echo '$(srcdir)/'`d4swap.c + +libdap4_la-d4chunk.lo: d4chunk.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4chunk.lo `test -f 'd4chunk.c' || echo '$(srcdir)/'`d4chunk.c + +libdap4_la-d4printer.lo: d4printer.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4printer.lo `test -f 'd4printer.c' || echo '$(srcdir)/'`d4printer.c + +libdap4_la-d4read.lo: d4read.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4read.lo `test -f 'd4read.c' || echo '$(srcdir)/'`d4read.c + +libdap4_la-d4http.lo: d4http.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4http.lo `test -f 'd4http.c' || echo '$(srcdir)/'`d4http.c + +libdap4_la-d4util.lo: d4util.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4util.lo `test -f 'd4util.c' || echo '$(srcdir)/'`d4util.c + +libdap4_la-d4odom.lo: d4odom.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4odom.lo `test -f 'd4odom.c' || echo '$(srcdir)/'`d4odom.c + +libdap4_la-d4cvt.lo: d4cvt.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4cvt.lo `test -f 'd4cvt.c' || echo '$(srcdir)/'`d4cvt.c + +libdap4_la-d4debug.lo: d4debug.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-d4debug.lo `test -f 'd4debug.c' || echo '$(srcdir)/'`d4debug.c + +libdap4_la-ncd4dispatch.lo: ncd4dispatch.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-ncd4dispatch.lo `test -f 'ncd4dispatch.c' || echo '$(srcdir)/'`ncd4dispatch.c + +libdap4_la-ezxml_extra.lo: ezxml_extra.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-ezxml_extra.lo `test -f 'ezxml_extra.c' || echo '$(srcdir)/'`ezxml_extra.c + +libdap4_la-ezxml.lo: ezxml.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap4_la-ezxml.lo `test -f 'ezxml.c' || echo '$(srcdir)/'`ezxml.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +check-valgrind-local: +check-valgrind-memcheck-local: +check-valgrind-helgrind-local: +check-valgrind-drd-local: +check-valgrind-sgcheck-local: + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +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) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +check-valgrind: check-valgrind-am + +check-valgrind-am: check-valgrind-local + +check-valgrind-drd: check-valgrind-drd-am + +check-valgrind-drd-am: check-valgrind-drd-local + +check-valgrind-helgrind: check-valgrind-helgrind-am + +check-valgrind-helgrind-am: check-valgrind-helgrind-local + +check-valgrind-memcheck: check-valgrind-memcheck-am + +check-valgrind-memcheck-am: check-valgrind-memcheck-local + +check-valgrind-sgcheck: check-valgrind-sgcheck-am + +check-valgrind-sgcheck-am: check-valgrind-sgcheck-local + +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-valgrind-am \ + check-valgrind-drd-am check-valgrind-drd-local \ + check-valgrind-helgrind-am check-valgrind-helgrind-local \ + check-valgrind-local check-valgrind-memcheck-am \ + check-valgrind-memcheck-local check-valgrind-sgcheck-am \ + check-valgrind-sgcheck-local clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + +ezxml:: + rm -fr ./ezxml ./ezxml.[ch] ./license.txt + tar -zxf ./${EZXML} + sed -e 's|//\(.*\)|/*\1*/|' ./ezxml.c + sed -e 's|//\(.*\)|/*\1*/|' ./ezxml.h + cp ezxml/license.txt . + +# 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/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4bytes.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4bytes.h new file mode 100644 index 00000000000..2ad1c610ef9 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4bytes.h @@ -0,0 +1,31 @@ +/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc. + See the COPYRIGHT file for more information. */ + +#ifndef D4BYTES_H +#define D4BYTES_H 1 + +typedef struct D4bytes { + size_t alloc; + size_t used; + void* memory; +} D4bytes; + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +extern "C" { +#endif + +extern D4bytes* d4bytesnew(void); +extern void d4bytesfree(D4bytes*); +extern void* d4bytesalloc(D4bytes*,size_t); +extern void* d4byteszero(D4bytes*,size_t); +extern D4bytes* d4bytesconcat(D4bytes*,D4bytes*); + +#define d4byteslength(d4) ((d4)->used) +#define d4bytesmemory(d4) ((d4)->memory) +#define d4bytesreset(d4) {(d4)->used = 0;} + +#if defined(_CPLUSPLUS_) || defined(__CPLUSPLUS__) || defined(__CPLUSPLUS) +} +#endif + +#endif /*D4BYTES_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.c new file mode 100644 index 00000000000..c85b48b7b26 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.c @@ -0,0 +1,207 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#include "d4chunk.h" + +/**************************************************/ + +/* Header flags */ +#define LAST_CHUNK (1) +#define ERR_CHUNK (2) +#define LITTLE_ENDIAN_CHUNK (4) +#define NOCHECKSUM_CHUNK (8) + +#define ALL_CHUNK_FLAGS (LAST_CHUNK|ERR_CHUNK|LITTLE_ENDIAN_CHUNK|NOCHECKSUM_CHUNK) + +/**************************************************/ + +/* +Given a packet as read from the wire via http (or a file), convert in +place from chunked format to a single continguous set of bytes. If an +error packet is recovered, then make that available to the caller and +return an error. Also return whether the data was big endian encoded +and whether it has checksums. +Notes: +*/ + +/* Define a local struct for convenience */ +struct HDR {unsigned int flags; unsigned int count;}; + +/* Forward */ +static void* getheader(void* p, struct HDR* hdr, int hostlittleendian); +static int processerrchunk(NCD4meta* metadata, void* errchunk, unsigned int count); + +/**************************************************/ + +int +NCD4_dechunk(NCD4meta* metadata) +{ + unsigned char* p; + unsigned char* q; + struct HDR hdr; + + if(metadata->mode == NCD4_DSR) + return THROW(NC_EDMR); + + metadata->serial.errdata = NULL; + metadata->serial.dmr = NULL; + metadata->serial.dap = NULL; + metadata->serial.hostlittleendian = NCD4_isLittleEndian(); + metadata->serial.remotelittleendian = 0; /* do not actually know yet */ + metadata->serial.remotechecksumming = 0; /* do not actually know yet */ + metadata->localchecksumming = 0; /* do not actually know yet */ + + /* Assume proper mode has been inferred already. */ + + /* Verify the mode; assume that the is optional */ + q = metadata->serial.rawdata; + if(memcmp(q,"mode != NCD4_DMR) + return THROW(NC_EDMR); + /* setup as dmr only */ + metadata->serial.dmr = (char*)metadata->serial.rawdata; /* temp */ + metadata->serial.dmr[metadata->serial.rawsize-1] = '\0'; + metadata->serial.dmr = strdup((char *)q); + if(metadata->serial.dmr == NULL) + return THROW(NC_ENOMEM); + return THROW(NC_NOERR); + } + + /* We must be processing a DAP mode packet */ + p = metadata->serial.rawdata; + metadata->serial.dap = p; + +#ifdef D4DUMPRAW + NCD4_tagdump(metadata->serial.rawsize,metadata->serial.rawdata,0,"RAW"); +#endif + + /* Get the DMR chunk header*/ + p = getheader(p,&hdr,metadata->serial.hostlittleendian); + if(hdr.count == 0) + return THROW(NC_EDMR); + if(hdr.flags & ERR_CHUNK) { + return processerrchunk(metadata, (void*)p, hdr.count); + } + + metadata->serial.remotechecksumming = ((hdr.flags & NOCHECKSUM_CHUNK) ? 0 : 1); + metadata->localchecksumming = metadata->serial.remotechecksumming; + + metadata->serial.remotelittleendian = ((hdr.flags & LITTLE_ENDIAN_CHUNK) ? 1 : 0); + metadata->serial.dmr = (char*)p; + metadata->serial.dmr[hdr.count-1] = '\0'; + metadata->serial.dmr = strdup(metadata->serial.dmr); + if(metadata->serial.dmr == NULL) + return THROW(NC_ENOMEM); + p += hdr.count; + + if(hdr.flags & LAST_CHUNK) + return THROW(NC_ENODATA); + /* Read and compress the data chunks */ + q = metadata->serial.dap; + for(;;) { + p = getheader(p,&hdr,metadata->serial.hostlittleendian); + if(hdr.flags & ERR_CHUNK) { + return processerrchunk(metadata, (void*)p, hdr.count); + } + /* data chunk; possibly last; possibly empty */ + if(hdr.count > 0) { + d4memmove(q,p,hdr.count); /* will overwrite the header */ + p += hdr.count; + q += hdr.count; + } + if(hdr.flags & LAST_CHUNK) break; + } + metadata->serial.dapsize = (size_t)DELTA(q,metadata->serial.dap); +#ifdef D4DUMPDMR + fprintf(stderr,"%s\n",metadata->serial.dmr); + fflush(stderr); +#endif +#ifdef D4DUMPDAP + NCD4_tagdump(metadata->serial.dapsize,metadata->serial.dap,0,"DAP"); +#endif + return THROW(NC_NOERR); +} + +static int +processerrchunk(NCD4meta* metadata, void* errchunk, unsigned int count) +{ + metadata->serial.errdata = (char*)d4alloc(count+1); + if(metadata->serial.errdata == NULL) + return THROW(NC_ENOMEM); + memcpy(metadata->serial.errdata,errchunk,count); + metadata->serial.errdata[count] = '\0'; + return THROW(NC_ENODATA); /* slight lie */ +} + +/* At the moment, the Hyrax test server + is serving up the chunk data as little endian. + So use a heuristic to see which endianness + makes the more sense. + This fails for very small dap data sections. +*/ +static void* +getheader(void* p, struct HDR* hdr, int hostlittleendian) +{ + unsigned char bytes[4]; +#ifdef HYRAXHACK + struct HDR hyrax; + unsigned char orig[4]; + memcpy(orig,p,sizeof(bytes));/* save a copy */ +#endif + memcpy(bytes,p,sizeof(bytes)); + p = INCR(p,4); /* on-the-wire hdr is 4 bytes */ + /* assume header is network (big) order */ + hdr->flags = bytes[0]; /* big endian => flags are in byte 0 */ + bytes[0] = 0; /* so we can do byte swap to get count */ + if(hostlittleendian) + swapinline32(bytes); /* host is little endian */ + hdr->count = *(unsigned int*)bytes; /* get count */ +#ifdef HYRAXHACK + memcpy(bytes,orig,sizeof(bytes)); /* restore */ + hyrax.flags = bytes[3]; + bytes[3] = 0; /* so we can do byte swap to get count */ + if(!hostlittleendian) + swapinline32(bytes); /* host is big endian */ + hyrax.count = *(unsigned int*)bytes; /* get count */ + /* See which makes more sense */ + if(hyrax.flags <= ALL_CHUNK_FLAGS && hyrax.count >= 0 && hyrax.count < hdr->count) { + /* Use hyrax version */ + *hdr = hyrax; + } +#endif + return p; +} + +/** +Given a raw response, attempt to infer the mode: DMR, DAP, DSR. +Since DSR is not standardizes, it becomes the default. +*/ +int +NCD4_infermode(NCD4meta* meta) +{ + d4size_t size = meta->serial.rawsize; + char* raw = meta->serial.rawdata; + + if(size < 16) + return THROW(NC_EDAP); /* must have at least this to hold a hdr + partial dmr*/ + if(memcmp(raw,"mode = NCD4_DMR; + goto done; + } + raw += 4; /* Pretend we have a DAP hdr */ + if(memcmp(raw,"mode = NCD4_DAP; + goto done; + } + /* Default to DSR */ + meta->mode = NCD4_DSR; + +done: + return NC_NOERR; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.h new file mode 100644 index 00000000000..eecf500eff7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4chunk.h @@ -0,0 +1,11 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4CHUNK_H +#define D4CHUNK_H 1 +/**************************************************/ + + +#endif /*D4CHUNK_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4crc32.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4crc32.c new file mode 100644 index 00000000000..460c8efb39f --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4crc32.c @@ -0,0 +1,103 @@ +/*- + * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or + * code or tables extracted from it, as desired without restriction. + * + * First, the polynomial itself and its table of feedback terms. The + * polynomial is + * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 + * + * Note that we take it "backwards" and put the highest-order term in + * the lowest-order bit. The X^32 term is "implied"; the LSB is the + * X^31 term, etc. The X^0 term (usually shown as "+1") results in + * the MSB being 1 + * + * Note that the usual hardware shift register implementation, which + * is what we're using (we're merely optimizing it by doing eight-bit + * chunks at a time) shifts bits into the lowest-order term. In our + * implementation, that means shifting towards the right. Why do we + * do it this way? Because the calculated CRC must be transmitted in + * order from highest-order term to lowest-order term. UARTs transmit + * characters in order from LSB to MSB. By storing the CRC this way + * we hand it to the UART in the order low-byte to high-byte; the UART + * sends each low-bit to hight-bit; and the result is transmission bit + * by bit from highest- to lowest-order term without requiring any bit + * shuffling on our part. Reception works similarly + * + * The feedback terms table consists of 256, 32-bit entries. Notes + * + * The table can be generated at runtime if desired; code to do so + * is shown later. It might not be obvious, but the feedback + * terms simply represent the results of eight shift/xor opera + * tions for all combinations of data and CRC register values + * + * The values must be right-shifted by eight bits by the "updcrc + * logic; the shift must be unsigned (bring in zeroes). On some + * hardware you could probably optimize the shift in assembler by + * using byte-swap instructions + * polynomial $edb88320 + * + * + * CRC32 code derived from work by Gary S. Brown. + */ + +#include "d4includes.h" + +static const uint32_t crc32_tab[] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, + 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, + 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, + 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, + 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, + 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, + 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, + 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, + 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, + 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, + 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, + 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d +}; + +uint32_t +NCD4_crc32(uint32_t crc, const void *buf, size_t size) +{ + const uint8_t *p; + + p = buf; + crc = crc ^ ~0U; + + while (size--) + crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); + + return crc ^ ~0U; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.c new file mode 100644 index 00000000000..7279d7289e4 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.c @@ -0,0 +1,450 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#include "d4curlfunctions.h" + +#define MAX_REDIRECTS 20L + +/* Mnemonic */ +#define OPTARG void* + +/* Condition on libcurl version */ +/* Set up an alias as needed */ +#ifndef HAVE_CURLOPT_KEYPASSWD +#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD +#endif + +#define D4BUFFERSIZE "HTTP.READ.BUFFERSIZE" +#define D4KEEPALIVE "HTTP.KEEPALIVE" + +#ifdef HAVE_CURLOPT_BUFFERSIZE +#ifndef CURL_MAX_READ_SIZE +#define CURL_MAX_READ_SIZE (512*1024) +#endif +#endif + +#define CHECK(state,flag,value) {if(check(state,flag,(void*)value) != NC_NOERR) {goto done;}} + +/* forward */ +static int set_curlflag(NCD4INFO*, int flag); +static int set_curlopt(NCD4INFO*, int flag, void* value); + +static int +check(NCD4INFO* info, int flag, void* value) +{ + int ret = set_curlopt(info,flag,value); + return THROW(ret); +} + +/* +Set a specific curl flag; primary wrapper for curl_easy_setopt +*/ +static int +set_curlopt(NCD4INFO* state, int flag, void* value) +{ + int ret = NC_NOERR; + CURLcode cstat = CURLE_OK; + cstat = curl_easy_setopt(state->curl->curl,flag,value); + if(cstat != CURLE_OK) + ret = NC_ECURL; + return THROW(ret); +} + +/* +Update a specific flag from state +*/ +static int +set_curlflag(NCD4INFO* state, int flag) +{ + int ret = NC_NOERR; + switch (flag) { + case CURLOPT_USERPWD: /* Do both user and pwd */ + if(state->auth.creds.user != NULL + && state->auth.creds.pwd != NULL) { + CHECK(state, CURLOPT_USERNAME, state->auth.creds.user); + CHECK(state, CURLOPT_PASSWORD, state->auth.creds.pwd); + CHECK(state, CURLOPT_HTTPAUTH, (OPTARG)CURLAUTH_ANY); + } + break; + case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE: + if(state->auth.curlflags.cookiejar) { + /* Assume we will read and write cookies to same place */ + CHECK(state, CURLOPT_COOKIEJAR, state->auth.curlflags.cookiejar); + CHECK(state, CURLOPT_COOKIEFILE, state->auth.curlflags.cookiejar); + } + break; + case CURLOPT_NETRC: case CURLOPT_NETRC_FILE: + if(state->auth.curlflags.netrc) { + CHECK(state, CURLOPT_NETRC, (OPTARG)CURL_NETRC_REQUIRED); + CHECK(state, CURLOPT_NETRC_FILE, state->auth.curlflags.netrc); + } + break; + case CURLOPT_VERBOSE: + if(state->auth.curlflags.verbose) + CHECK(state, CURLOPT_VERBOSE, (OPTARG)1L); + break; + case CURLOPT_TIMEOUT: + if(state->auth.curlflags.timeout) + CHECK(state, CURLOPT_TIMEOUT, (OPTARG)((long)state->auth.curlflags.timeout)); + break; + case CURLOPT_USERAGENT: + if(state->auth.curlflags.useragent) + CHECK(state, CURLOPT_USERAGENT, state->auth.curlflags.useragent); + break; + case CURLOPT_FOLLOWLOCATION: + CHECK(state, CURLOPT_FOLLOWLOCATION, (OPTARG)1L); + break; + case CURLOPT_MAXREDIRS: + CHECK(state, CURLOPT_MAXREDIRS, (OPTARG)MAX_REDIRECTS); + break; + case CURLOPT_ERRORBUFFER: + CHECK(state, CURLOPT_ERRORBUFFER, state->curl->errdata.errorbuf); + break; + case CURLOPT_ENCODING: +#ifdef CURLOPT_ENCODING + if(state->auth.curlflags.compress) { + CHECK(state, CURLOPT_ENCODING,"deflate, gzip"); + } +#endif + break; + case CURLOPT_PROXY: + if(state->auth.proxy.host != NULL) { + CHECK(state, CURLOPT_PROXY, state->auth.proxy.host); + CHECK(state, CURLOPT_PROXYPORT, (OPTARG)(long)state->auth.proxy.port); + if(state->auth.proxy.user != NULL + && state->auth.proxy.pwd != NULL) { + CHECK(state, CURLOPT_PROXYUSERNAME, state->auth.proxy.user); + CHECK(state, CURLOPT_PROXYPASSWORD, state->auth.proxy.pwd); +#ifdef CURLOPT_PROXYAUTH + CHECK(state, CURLOPT_PROXYAUTH, (long)CURLAUTH_ANY); +#endif + } + } + break; + case CURLOPT_USE_SSL: + case CURLOPT_SSLCERT: case CURLOPT_SSLKEY: + case CURLOPT_SSL_VERIFYPEER: case CURLOPT_SSL_VERIFYHOST: + { + struct ssl* ssl = &state->auth.ssl; + CHECK(state, CURLOPT_SSL_VERIFYPEER, (OPTARG)(ssl->verifypeer?1L:0L)); + CHECK(state, CURLOPT_SSL_VERIFYHOST, (OPTARG)(ssl->verifyhost?1L:0L)); + if(ssl->certificate) + CHECK(state, CURLOPT_SSLCERT, ssl->certificate); + if(ssl->key) + CHECK(state, CURLOPT_SSLKEY, ssl->key); + if(ssl->keypasswd) + /* libcurl prior to 7.16.4 used 'CURLOPT_SSLKEYPASSWD' */ + CHECK(state, CURLOPT_KEYPASSWD, ssl->keypasswd); + if(ssl->cainfo) + CHECK(state, CURLOPT_CAINFO, ssl->cainfo); + if(ssl->capath) + CHECK(state, CURLOPT_CAPATH, ssl->capath); + } + break; + +#ifdef HAVE_CURLOPT_BUFFERSIZE + case CURLOPT_BUFFERSIZE: + CHECK(state, CURLOPT_BUFFERSIZE, (OPTARG)state->curl->buffersize); + break; +#endif + +#ifdef HAVE_CURLOPT_KEEPALIVE + case CURLOPT_TCP_KEEPALIVE: + if(state->curl->keepalive.active != 0) + CHECK(state, CURLOPT_TCP_KEEPALIVE, (OPTARG)1L); + if(state->curl->keepalive.idle > 0) + CHECK(state, CURLOPT_TCP_KEEPIDLE, (OPTARG)state->curl->keepalive.idle); + if(state->curl->keepalive.interval > 0) + CHECK(state, CURLOPT_TCP_KEEPINTVL, (OPTARG)state->curl->keepalive.interval); + break; +#endif + + default: + nclog(NCLOGWARN,"Attempt to update unexpected curl flag: %d",flag); + break; + } +done: + return THROW(ret); +} + +/* Set various general curl flags per fetch */ +int +NCD4_set_flags_perfetch(NCD4INFO* state) +{ + int ret = NC_NOERR; + /* currently none */ + return THROW(ret); +} + +/* Set various general curl flags per link */ + +int +NCD4_set_flags_perlink(NCD4INFO* state) +{ + int ret = NC_NOERR; + /* Following are always set */ + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_ENCODING); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_NETRC); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_VERBOSE); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_TIMEOUT); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_USERAGENT); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_COOKIEJAR); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_USERPWD); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_PROXY); + if(ret == NC_NOERR) ret = set_curlflag(state,CURLOPT_USE_SSL); + if(ret == NC_NOERR) ret = set_curlflag(state, CURLOPT_FOLLOWLOCATION); + if(ret == NC_NOERR) ret = set_curlflag(state, CURLOPT_MAXREDIRS); + if(ret == NC_NOERR) ret = set_curlflag(state, CURLOPT_ERRORBUFFER); + + /* Optional */ +#ifdef HAVE_CURLOPT_BUFFERSIZE + if(ret == NC_NOERR && state->curl->buffersize > 0) + ret = set_curlflag(state, CURLOPT_BUFFERSIZE); +#endif +#ifdef HAVE_CURLOPT_KEEPALIVE + if(ret == NC_NOERR && state->curl->keepalive.active != 0) + ret = set_curlflag(state, CURLOPT_TCP_KEEPALIVE); +#endif + +#if 0 + /* Set the CURL. options */ + if(ret == NC_NOERR) ret = set_curl_options(state); +#endif + return THROW(ret); +} + +#if 0 +/** +Directly set any options starting with 'CURL.' +*/ +static int +set_curl_options(NCD4INFO* state) +{ + int ret = NC_NOERR; + NClist* store = NULL; + int i; + char* hostport = NULL; + + hostport = NC_combinehostport(state->uri); + + store = ncrc_globalstate.rcinfo.triples; + + for(i=0;ihost ? strlen(triple->host) : 0); + const char* flagname; + if(strncmp("CURL.",triple->key,5) != 0) continue; /* not a curl flag */ + /* do hostport prefix comparison */ + if(hostport != NULL) { + int t = 0; + if(triple->host != NULL) + t = strncmp(hostport,triple->host,hostlen); + if(t != 0) continue; + } + flagname = triple->key+5; /* 5 == strlen("CURL."); */ + flag = NCD4_curlflagbyname(flagname); + if(flag == NULL) {ret = NC_ECURL; goto done;} + ret = set_curlopt(state,flag->flag,cvt(triple->value,flag->type)); + } + done: + nullfree(hostport); + return THROW(ret); +} + +static void* +cvt(char* value, enum CURLFLAGTYPE type) +{ + switch (type) { + case CF_LONG: { + /* Try to convert to long value */ + const char* p = value; + char* q = NULL; + long longvalue = strtol(p,&q,10); + if(*q != '\0') + return NULL; + return (void*)longvalue; + } + case CF_STRING: + return (void*)value; + case CF_UNKNOWN: case CF_OTHER: + return (void*)value; + } + return NULL; +} +#endif + +void +NCD4_curl_debug(NCD4INFO* state) +{ + state->auth.curlflags.verbose = 1; + set_curlflag(state,CURLOPT_VERBOSE); + set_curlflag(state,CURLOPT_ERRORBUFFER); +} + +/* Misc. */ + +/* Determine if this version of curl supports + "file://..." &/or "https://..." urls. +*/ +void +NCD4_curl_protocols(NCD4INFO* state) +{ + const char* const* proto; /*weird*/ + curl_version_info_data* curldata; + curldata = curl_version_info(CURLVERSION_NOW); + for(proto=curldata->protocols;*proto;proto++) { + if(strcmp("http",*proto)==0) {state->auth.curlflags.proto_https=1;} + } +#ifdef D4DEBUG + nclog(NCLOGNOTE,"Curl https:// support = %d",state->auth.curlflags.proto_https); +#endif +} + +/* + Extract state values from .rc file +*/ +ncerror +NCD4_get_rcproperties(NCD4INFO* state) +{ + ncerror err = NC_NOERR; + char* option = NULL; +#ifdef HAVE_CURLOPT_BUFFERSIZE + option = NC_rclookup(D4BUFFERSIZE,state->uri->uri); + if(option != NULL && strlen(option) != 0) { + long bufsize; + if(strcasecmp(option,"max")==0) + bufsize = CURL_MAX_READ_SIZE; + else if(sscanf(option,"%ld",&bufsize) != 1 || bufsize <= 0) + fprintf(stderr,"Illegal %s size\n",D4BUFFERSIZE); + state->curl->buffersize = bufsize; + } +#endif +#ifdef HAVE_CURLOPT_KEEPALIVE + option = NC_rclookup(D4KEEPALIVE,state->uri->uri); + if(option != NULL && strlen(option) != 0) { + /* The keepalive value is of the form 0 or n/m, + where n is the idle time and m is the interval time; + setting either to zero will prevent that field being set.*/ + if(strcasecmp(option,"on")==0) { + state->curl->keepalive.active = 1; + } else { + unsigned long idle=0; + unsigned long interval=0; + if(sscanf(option,"%lu/%lu",&idle,&interval) != 2) + fprintf(stderr,"Illegal KEEPALIVE VALUE: %s\n",option); + state->curl->keepalive.idle = idle; + state->curl->keepalive.interval = interval; + state->curl->keepalive.active = 1; + } + } +#endif + return err; +} + +#if 0 +/* +"Inverse" of set_curlflag; +Given a flag and value, it updates state. +Update a specific flag from state->curlflags. +*/ +int +NCD4_set_curlstate(NCD4INFO* state, int flag, void* value) +{ + int ret = NC_NOERR; + switch (flag) { + case CURLOPT_USERPWD: + if(info->creds.userpwd != NULL) free(info->creds.userpwd); + info->creds.userpwd = strdup((char*)value); + break; + case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE: + if(info->curlflags.cookiejar != NULL) free(info->curlflags.cookiejar); + info->curlflags.cookiejar = strdup((char*)value); + break; + case CURLOPT_NETRC: case CURLOPT_NETRC_FILE: + if(info->curlflags.netrc != NULL) free(info->curlflags.netrc); + info->curlflags.netrc = strdup((char*)value); + break; + case CURLOPT_VERBOSE: + info->curlflags.verbose = (long)value; + break; + case CURLOPT_TIMEOUT: + info->curlflags.timeout = (long)value; + break; + case CURLOPT_USERAGENT: + if(info->curlflags.useragent != NULL) free(info->curlflags.useragent); + info->curlflags.useragent = strdup((char*)value); + break; + case CURLOPT_FOLLOWLOCATION: + /* no need to store; will always be set */ + break; + case CURLOPT_MAXREDIRS: + /* no need to store; will always be set */ + break; + case CURLOPT_ERRORBUFFER: + /* no need to store; will always be set */ + break; + case CURLOPT_ENCODING: + /* no need to store; will always be set to fixed value */ + break; + case CURLOPT_PROXY: + /* We assume that the value is the proxy url */ + if(info->proxy.host != NULL) free(info->proxy.host); + if(info->proxy.userpwd != NULL) free(info->proxy.userpwd); + info->proxy.host = NULL; + info->proxy.userpwd = NULL; + if(!NCD4_parseproxy(state,(char*)value)) + {ret = NC_EINVAL; goto done;} + break; + case CURLOPT_SSLCERT: + if(info->ssl.certificate != NULL) free(info->ssl.certificate); + info->ssl.certificate = strdup((char*)value); + break; + case CURLOPT_SSLKEY: + if(info->ssl.key != NULL) free(info->ssl.key); + info->ssl.key = strdup((char*)value); + break; + case CURLOPT_KEYPASSWD: + if(info->ssl.keypasswd!= NULL) free(info->ssl.keypasswd); + info->ssl.keypasswd = strdup((char*)value); + break; + case CURLOPT_SSL_VERIFYPEER: + info->ssl.verifypeer = (long)value; + break; + case CURLOPT_SSL_VERIFYHOST: + info->ssl.verifyhost = (long)value; + break; + case CURLOPT_CAINFO: + if(info->ssl.cainfo != NULL) free(info->ssl.cainfo); + info->ssl.cainfo = strdup((char*)value); + break; + case CURLOPT_CAPATH: + if(info->ssl.capath != NULL) free(info->ssl.capath); + info->ssl.capath = strdup((char*)value); + break; + + default: break; + } +done: + return THROW(ret); +} +#endif + +void +NCD4_curl_printerror(NCD4INFO* state) +{ + fprintf(stderr,"curl error details: %s\n",state->curl->errdata.errorbuf); +} + +CURLcode +NCD4_reportcurlerror(CURLcode cstat) +{ + if(cstat != CURLE_OK) { + fprintf(stderr,"CURL Error: %s\n",curl_easy_strerror(cstat)); + } + fflush(stderr); + return cstat; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.h new file mode 100644 index 00000000000..52fe1b5d26a --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4curlfunctions.h @@ -0,0 +1,38 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4CURLFUNCTIONS_H +#define D4CURLFUNCTIONS_H + +/* Aliases to older names */ +#ifndef HAVE_CURLOPT_KEYPASSWD +#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD +#endif +#ifndef HAVE_CURLINFO_RESPONSE_CODE +#define CURLINFO_RESPONSE_CODE CURLINFO_HTTP_CODE +#endif + +enum CURLFLAGTYPE {CF_UNKNOWN=0,CF_OTHER=1,CF_STRING=2,CF_LONG=3}; +struct CURLFLAG { + const char* name; + int flag; + int value; + enum CURLFLAGTYPE type; +}; + +extern ncerror NCD4_set_curlopt(NCD4INFO* state, int flag, void* value); + +extern ncerror NCD4_set_flags_perfetch(NCD4INFO*); +extern ncerror NCD4_set_flags_perlink(NCD4INFO*); + +extern ncerror NCD4_set_curlflag(NCD4INFO*,int); + +extern void NCD4_curl_debug(NCD4INFO* state); + +extern struct CURLFLAG* NCD4_curlflagbyname(const char* name); +extern void NCD4_curl_protocols(NCD4INFO*); +extern ncerror NCD4_get_rcproperties(NCD4INFO* state); + +#endif /*D4CURLFUNCTIONS_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4cvt.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4cvt.c new file mode 100644 index 00000000000..2b686110de1 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4cvt.c @@ -0,0 +1,224 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ +#include "config.h" +#include +#include "netcdf.h" + +#ifdef _MSC_VER +#include +#endif + +/* +Code taken directly from libdap4/dapcvt.c +*/ + +/* Forward */ +static size_t nctypesizeof(nc_type nctype); + + +int +NCD4_convert(nc_type srctype, nc_type dsttype, char* memory0, char* value0, size_t count) +{ + int ncstat = NC_NOERR; + size_t i; + char* memory = memory0; + char* value = value0; + + /* In order to deal with the DAP upgrade problem, + try to preserve the bit patterns + */ + + /* Provide space and pointer casts for intermediate results */ + signed char ncbyte; + signed char* ncbytep; + char ncchar; + char* nccharp; + short ncshort; + short* ncshortp; + int ncint; + int* ncintp; + float ncfloat; + float* ncfloatp; + double ncdouble; + double* ncdoublep; + unsigned char ncubyte; + unsigned char* ncubytep; + unsigned short ncushort; + unsigned short* ncushortp; + unsigned int ncuint; + unsigned int* ncuintp; + long long ncint64; + long long* ncint64p; + unsigned long long ncuint64; + unsigned long long* ncuint64p; + + +#define CASE(nc1,nc2) (nc1*256+nc2) +#define CUT8(e) ((unsigned char)((e) & 0xff)) +#define CUT16(e) ((unsigned short)((e) & 0xffff)) +#define CUT32(e) ((unsigned int)((e) & 0xffffffff)) +#define ARM(vs,ncs,ts,vd,ncd,td) \ +case CASE(ncs,ncd):\ + vs##p = (ts *)value;\ + vs = *vs##p;\ + vd##p = (td *)memory;\ + *vd##p = (td)vs;\ + break; + + for(i=0;i +#include +#include "ezxml.h" +#include "d4includes.h" +#include "d4odom.h" + +/** +This code serves two purposes +1. Preprocess the dap4 serialization wrt endianness, etc. + (NCD4_processdata) +2. Walk a specified variable instance to convert to netcdf4 + memory representation. + (NCD4_fillinstance) + +*/ + +/***************************************************/ +/* Forwards */ +static int fillstring(NCD4meta*, void** offsetp, void** dstp, NClist* blobs); +static int fillopfixed(NCD4meta*, d4size_t opaquesize, void** offsetp, void** dstp); +static int fillopvar(NCD4meta*, NCD4node* type, void** offsetp, void** dstp, NClist* blobs); +static int fillstruct(NCD4meta*, NCD4node* type, void** offsetp, void** dstp, NClist* blobs); +static int fillseq(NCD4meta*, NCD4node* type, void** offsetp, void** dstp, NClist* blobs); + +/***************************************************/ +/* Macro define procedures */ + +#ifdef D4DUMPCSUM +static unsigned int debugcrc32(unsigned int crc, const void *buf, size_t size) +{ + int i; + fprintf(stderr,"crc32: "); + for(i=0;icontainer == NULL || (var)->container->sort == NCD4_GROUP) + +/***************************************************/ +/* API */ + +int +NCD4_processdata(NCD4meta* meta) +{ + int ret = NC_NOERR; + int i; + NClist* toplevel = NULL; + NCD4node* root = meta->root; + void* offset; + + /* Recursively walk the tree in prefix order + to get the top-level variables; also mark as unvisited */ + toplevel = nclistnew(); + NCD4_getToplevelVars(meta,root,toplevel); + + /* If necessary, byte swap the serialized data */ + /* Do we need to swap the dap4 data? */ + meta->swap = (meta->serial.hostlittleendian != meta->serial.remotelittleendian); + + /* Compute the offset and size of the toplevel vars in the raw dap data. */ + offset = meta->serial.dap; + for(i=0;iswap) { + if((ret=NCD4_swapdata(meta,toplevel))) + FAIL(ret,"byte swapping failed"); + } + + /* Compute the checksums of the top variables */ + if(meta->localchecksumming) { + for(i=0;idata.dap4data.memory,var->data.dap4data.size); + var->data.localchecksum = csum; + } + } + + /* verify checksums */ + if(!meta->ignorechecksums && meta->serial.remotechecksumming) { + for(i=0;idata.localchecksum != var->data.remotechecksum) { + nclog(NCLOGERR,"Checksum mismatch: %s\n",var->name); + ret = NC_EDAP; + goto done; + } + } + } +done: + if(toplevel) nclistfree(toplevel); + return THROW(ret); +} + +/* +Build a single instance of a type. The blobs +argument accumulates any malloc'd data so we can +reclaim it in case of an error. + +Activity is to walk the variable's data to +produce a copy that is compatible with the +netcdf4 memory format. + +Assumes that NCD4_processdata has been called. +*/ + +int +NCD4_fillinstance(NCD4meta* meta, NCD4node* type, void** offsetp, void** dstp, NClist* blobs) +{ + int ret = NC_NOERR; + void* offset = *offsetp; + void* dst = *dstp; + d4size_t memsize = type->meta.memsize; + d4size_t dapsize = type->meta.dapsize; + + /* If the type is fixed size, then just copy it */ + if(type->subsort <= NC_UINT64 || type->subsort == NC_ENUM) { + /* memsize and dapsize are the same */ + assert(memsize == dapsize); + memcpy(dst,offset,dapsize); + offset = INCR(offset,dapsize); + } else switch(type->subsort) { + case NC_STRING: /* oob strings */ + if((ret=fillstring(meta,&offset,&dst,blobs))) + FAIL(ret,"fillinstance"); + break; + case NC_OPAQUE: + if(type->opaque.size > 0) { + /* We know the size and its the same for all instances */ + if((ret=fillopfixed(meta,type->opaque.size,&offset,&dst))) + FAIL(ret,"fillinstance"); + } else { + /* Size differs per instance, so we need to convert each opaque to a vlen */ + if((ret=fillopvar(meta,type,&offset,&dst,blobs))) + FAIL(ret,"fillinstance"); + } + break; + case NC_STRUCT: + if((ret=fillstruct(meta,type,&offset,&dst,blobs))) + FAIL(ret,"fillinstance"); + break; + case NC_SEQ: + if((ret=fillseq(meta,type,&offset,&dst,blobs))) + FAIL(ret,"fillinstance"); + break; + default: + ret = NC_EINVAL; + FAIL(ret,"fillinstance"); + } + *dstp = dst; + *offsetp = offset; /* return just past this object in dap data */ +done: + return THROW(ret); +} + +static int +fillstruct(NCD4meta* meta, NCD4node* type, void** offsetp, void** dstp, NClist* blobs) +{ + int i,ret = NC_NOERR; + void* offset = *offsetp; + void* dst = *dstp; + +#ifdef CLEARSTRUCT + /* Avoid random data within aligned structs */ + memset(dst,0,type->meta.memsize); +#endif + + /* Walk and read each field taking alignments into account */ + for(i=0;ivars);i++) { + NCD4node* field = nclistget(type->vars,i); + NCD4node* ftype = field->basetype; + void* fdst = INCR(dst,field->meta.offset); + if((ret=NCD4_fillinstance(meta,ftype,&offset,&fdst,blobs))) + FAIL(ret,"fillstruct"); + } + dst = INCR(dst,type->meta.memsize); + *dstp = dst; + *offsetp = offset; +done: + return THROW(ret); +} + +static int +fillseq(NCD4meta* meta, NCD4node* type, void** offsetp, void** dstp, NClist* blobs) +{ + int ret = NC_NOERR; + d4size_t i,recordcount; + void* offset; + nc_vlen_t* dst; + NCD4node* vlentype; + d4size_t recordsize; + + offset = *offsetp; + + dst = (nc_vlen_t*)*dstp; + vlentype = type->basetype; + recordsize = vlentype->meta.memsize; + + /* Get record count (remember, it is already properly swapped) */ + recordcount = GETCOUNTER(offset); + SKIPCOUNTER(offset); + dst->len = (size_t)recordcount; + + /* compute the required memory */ + dst->p = d4alloc(recordsize*recordcount); + if(dst->p == NULL) + FAIL(NC_ENOMEM,"fillseq"); + + for(i=0;ip),(recordsize * i)); + if((ret=NCD4_fillinstance(meta,vlentype,&offset,&recdst,blobs))) + FAIL(ret,"fillseq"); + } + dst++; + *dstp = dst; + *offsetp = offset; +done: + return THROW(ret); +} + +/* +Extract and oob a single string instance +*/ +static int +fillstring(NCD4meta* meta, void** offsetp, void** dstp, NClist* blobs) +{ + int ret = NC_NOERR; + d4size_t count; + void* offset = *offsetp; + char** dst = *dstp; + char* q; + + /* Get string count (remember, it is already properly swapped) */ + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + /* Transfer out of band */ + q = (char*)d4alloc(count+1); + if(q == NULL) + {FAIL(NC_ENOMEM,"out of space");} + memcpy(q,offset,count); + q[count] = '\0'; + /* Write the pointer to the string */ + *dst = q; + dst++; + *dstp = dst; + offset = INCR(offset,count); + *offsetp = offset; +#if 0 + nclistpush(blobs,q); +#else + q = NULL; +#endif +done: + return THROW(ret); +} + +static int +fillopfixed(NCD4meta* meta, d4size_t opaquesize, void** offsetp, void** dstp) +{ + int ret = NC_NOERR; + d4size_t count, actual; + int delta; + void* offset = *offsetp; + void* dst = *dstp; + + /* Get opaque count */ + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + /* verify that it is the correct size */ + actual = count; + delta = actual - opaquesize; + if(delta != 0) { +#ifdef FIXEDOPAQUE + nclog(NCLOGWARN,"opaque changed from %lu to %lu",actual,opaquesize); + memset(dst,0,opaquesize); /* clear in case we have short case */ + count = (delta < 0 ? actual : opaquesize); +#else + FAIL(NC_EVARSIZE,"Expected opaque size to be %lld; found %lld",opaquesize,count); +#endif + } + /* move */ + memcpy(dst,offset,count); + dst = INCR(dst,count); + *dstp = dst; + offset = INCR(offset,count); + *offsetp = offset; +#ifndef FIXEDOPAQUE +done: +#endif + return THROW(ret); +} + +/* +Move a dap4 variable length opaque out of band. +We treat as if it was (in cdl) ubyte(*). +*/ + +static int +fillopvar(NCD4meta* meta, NCD4node* type, void** offsetp, void** dstp, NClist* blobs) +{ + int ret = NC_NOERR; + d4size_t count; + nc_vlen_t* vlen; + void* offset = *offsetp; + void* dst = *dstp; + char* q; + + /* alias dst format */ + vlen = (nc_vlen_t*)dst; + + /* Get opaque count */ + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + /* Transfer out of band */ + q = (char*)d4alloc(count); + if(q == NULL) FAIL(NC_ENOMEM,"out of space"); + memcpy(q,offset,count); + vlen->p = q; + vlen->len = (size_t)count; + q = NULL; /*nclistpush(blobs,q);*/ + dst = INCR(dst,sizeof(nc_vlen_t)); + *dstp = dst; + offset = INCR(offset,count); + *offsetp = offset; +done: + return THROW(ret); +} + + +/**************************************************/ +/* Utilities */ +int +NCD4_getToplevelVars(NCD4meta* meta, NCD4node* group, NClist* toplevel) +{ + int ret = NC_NOERR; + int i; + + if(group == NULL) + group = meta->root; + + /* Collect vars in this group */ + for(i=0;ivars);i++) { + NCD4node* node = (NCD4node*)nclistget(group->vars,i); + nclistpush(toplevel,node); + node->visited = 0; /* We will set later to indicate written vars */ +#ifdef D4DEBUGDATA +fprintf(stderr,"toplevel: var=%s\n",node->name); +#endif + } + /* Now, recurse into subgroups; will produce prefix order */ + for(i=0;igroups);i++) { + NCD4node* g = (NCD4node*)nclistget(group->groups,i); + if((ret=NCD4_getToplevelVars(meta,g,toplevel))) goto done; + } +done: + return THROW(ret); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.c new file mode 100644 index 00000000000..8d11c761673 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.c @@ -0,0 +1,164 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ +#include "config.h" +#include +#include + +#include "d4includes.h" +#include "ncdispatch.h" +#include "netcdf_aux.h" + +int ncdap4debug = 0; + +#ifdef D4CATCH +/* Place breakpoint here to catch errors close to where they occur*/ +int +d4breakpoint(int err) {return err;} + +int +d4throw(int err) +{ + if(err == 0) return err; + return d4breakpoint(err); +} +#endif + +int +d4panic(const char* fmt, ...) +{ + va_list args; + if(fmt != NULL) { + va_start(args, fmt); + vfprintf(stderr, fmt, args); + fprintf(stderr, "\n" ); + va_end( args ); + } else { + fprintf(stderr, "panic" ); + } + fprintf(stderr, "\n" ); + fflush(stderr); + return 0; +} + +const char* +NCD4_sortname(NCD4sort sort) +{ + switch (sort) { + case NCD4_NULL: return "NCD4_NULL"; + case NCD4_ATTR: return "NCD4_ATTR"; + case NCD4_ATTRSET: return "NCD4_ATTRSET"; + case NCD4_XML: return "NCD4_XML"; + case NCD4_DIM: return "NCD4_DIM"; + case NCD4_GROUP: return "NCD4_GROUP"; + case NCD4_TYPE: return "NCD4_TYPE"; + case NCD4_VAR: return "NCD4_VAR"; + case NCD4_ECONST: return "NCD4_ECONST"; + default: break; + } + return "unknown"; +} + +const char* +NCD4_subsortname(nc_type subsort) +{ + switch (subsort) { + case NC_NAT: return "NC_NAT"; + case NC_BYTE: return "NC_BYTE"; + case NC_CHAR: return "NC_CHAR"; + case NC_SHORT: return "NC_SHORT"; + case NC_INT: return "NC_INT"; + case NC_FLOAT: return "NC_FLOAT"; + case NC_DOUBLE: return "NC_DOUBLE"; + case NC_UBYTE: return "NC_UBYTE"; + case NC_USHORT: return "NC_USHORT"; + case NC_UINT: return "NC_UINT"; + case NC_INT64: return "NC_INT64"; + case NC_UINT64: return "NC_UINT64"; + case NC_STRING: return "NC_STRING"; + case NC_VLEN: return "NC_VLEN"; + case NC_OPAQUE: return "NC_OPAQUE"; + case NC_ENUM: return "NC_ENUM"; + case NC_COMPOUND: return "NC_COMPOUND"; + default: break; + } + return "unknown"; +} + +/* +For debugging purposes, it is desirable to fake an nccopy +bv inserting the data into the substrate and then writing it out. +*/ + +int +NCD4_debugcopy(NCD4INFO* info) +{ + int i,ret=NC_NOERR; + NCD4meta* meta = info->substrate.metadata; + NClist* topvars = nclistnew(); + NC* ncp = info->controller; + + /* Walk each top level variable, read all of it and write it to the substrate */ + if((ret=NCD4_getToplevelVars(meta, NULL, topvars))) + goto done; + /* Read from the dap data by going thru the dap4 interface */ + for(i=0;ibasetype; + NCD4node* grp = NCD4_groupFor(var); + int grpid = grp->meta.id; + int varid = var->meta.id; + d4size_t varsize; + void* memory = NULL; + size_t dimprod = NCD4_dimproduct(var); + int ncid = info->substrate.nc4id; + + varsize = type->meta.memsize * dimprod; + memory = d4alloc(varsize); + if(memory == NULL) + {ret = NC_ENOMEM; goto done;} + { + /* We need to read via NCD4 */ + int d4gid = makedap4id(ncp,grpid); + if((ret=nc_get_var(d4gid,varid,memory))) + goto done; + } + /* Now, turn around and write it to the substrate. + WARNING: we have to specify the shape ourselves + because, if unlimited is involved then there is + potentially a difference between the substrate unlimited + size and the dap4 data specified size. In fact, + the substrate will always be zero unless debugcopy is used. + */ + { + size_t edges[NC_MAX_VAR_DIMS]; + int d; + for(d=0;ddims);d++) { + NCD4node* dim = (NCD4node*)nclistget(var->dims,d); + edges[d] = (size_t)dim->dim.size; + } + if((ret=nc_put_vara(grpid,varid,nc_sizevector0,edges,memory))) + goto done; + } + if((ret=ncaux_reclaim_data(ncid,type->meta.id,memory,dimprod))) + goto done; + free(memory); + memory = NULL; + } +done: + if(topvars) + nclistfree(topvars); + if(ret != NC_NOERR) { + fprintf(stderr,"debugcopy: %d %s\n",ret,nc_strerror(ret)); + } + return THROW(ret); +} + +/* Provide a string printer that can be called from gdb */ +void +NCD4_printstring(const char* s) +{ + fprintf(stderr,"%s\n",s); + fflush(stderr); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.h new file mode 100644 index 00000000000..4d4ff68d163 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4debug.h @@ -0,0 +1,70 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ +#ifndef D4DEBUG_H +#define D4DEBUG_H + +#include +#include + +#undef D4DEBUG /* general debug */ +#undef D4DEBUGPARSER +#undef D4DEBUGMETA +#undef D4DUMPDAP +#undef D4DUMPRAW +#undef D4DEBUGDATA +#undef D4DUMPDMR +#undef D4DUMPCSUM + +#ifdef D4DEBUG +#define D4DEBUGPARSER +#define D4DEBUGMETA +#define D4DEBUGDATA +#define D4DUMPCSUM +#define D4DUMPDMR +#define D4DUMPDAP +#endif + + +#define D4CATCH /* Warning: significant performance impact */ + +#define PANIC(msg) assert(d4panic(msg)); +#define PANIC1(msg,arg) assert(d4panic(msg,arg)); +#define PANIC2(msg,arg1,arg2) assert(d4panic(msg,arg1,arg2)); + +#define ASSERT(expr) if(!(expr)) {PANIC(#expr);} else {} + +extern int ncd4debug; + +extern int d4panic(const char* fmt, ...); + +#define MEMCHECK(var) {if((var)==NULL) return (NC_ENOMEM);} + +#ifdef D4CATCH +/* Place breakpoint on dapbreakpoint to catch errors close to where they occur*/ +#define THROW(e) d4throw(e) +#define THROWCHK(e) (void)d4throw(e) +extern int d4breakpoint(int err); +extern int d4throw(int err); +#else +#define THROW(e) (e) +#define THROWCHK(e) +#endif + +#ifdef D4DEBUG +#define SHOWFETCH (1) +#else +#define SHOWFETCH FLAGSET(nccomm->controls,NCF_SHOWFETCH) +#endif + +#define LOG0(level,msg) nclog(level,msg) +#define LOG1(level,msg,a1) nclog(level,msg,a1) +#define LOG2(level,msg,a1,a2) nclog(level,msg,a1,a2) + +extern const char* NCD4_sortname(NCD4sort sort); +extern const char* NCD4_subsortname(nc_type subsort); + +extern int NCD4_debugcopy(NCD4INFO* info); + +#endif /*D4DEBUG_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4dump.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4dump.c new file mode 100644 index 00000000000..0384fa9ec8d --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4dump.c @@ -0,0 +1,110 @@ +/* Copyright 2012, UCAR/Unidata. + See the LICENSE file for more information. +*/ + +#include "d4includes.h" + +/* +Provide a simple dump of binary data +*/ + +/**************************************************/ + +void +NCD4_dumpbytes(size_t size, const void* data0, int swap) +{ + size_t extended; + void* data; + char* pos; + size_t i; + + extended = size + 8; + data = calloc(1,extended); /* provide some space to simplify the code */ + memcpy(data,data0,size); + for(i=0,pos=data;i= 0x7f) v.s[0] = '?'; + fprintf(stderr,"[%03lu] %02x %03u %4d", (unsigned long)i, v.u8[0], v.u8[0], v.i8[0]); + fprintf(stderr," 0x%08x %12u %13d", v.u32[0], v.u32[0], v.i32[0]); + fprintf(stderr," 0x%04x %06u %7d", v.u16[0], v.u16[0], v.i16[0]); + fprintf(stderr," '%s'\n",v.s); + fflush(stderr); + } +} + +void +NCD4_tagdump(size_t size, const void* data0, int swap, const char* tag) +{ + fprintf(stderr,"++++++++++ %s ++++++++++\n",tag); + NCD4_dumpbytes(size,data0,swap); + fprintf(stderr,"++++++++++ %s ++++++++++\n",tag); + fflush(stderr); +} + +/* Dump the variables in a group */ +void +NCD4_dumpvars(NCD4node* group) +{ + int i; + fprintf(stderr,"%s.vars:\n",group->name); + for(i=0;ivars);i++) { + NCD4node* var = (NCD4node*)nclistget(group->vars,i); + NCD4node* type; + + switch (var->subsort) { + default: + type = var->basetype; + fprintf(stderr,"<%s name=\"%s\"/>\n",type->name,var->name); + break; + case NC_STRUCT: + fprintf(stderr,"<%s name=\"%s\"/>\n","Struct",var->name); + break; + case NC_SEQ: + fprintf(stderr,"<%s name=\"%s\"/>\n","Sequence",var->name); + break; + } + } + fflush(stderr); +} + +union ATOMICS* +NCD4_dumpatomic(NCD4node* var, void* data) +{ + union ATOMICS* p = (union ATOMICS*)data; + return p; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4file.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4file.c new file mode 100644 index 00000000000..cbb69b1d4c5 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4file.c @@ -0,0 +1,523 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "ncdispatch.h" +#include "ncd4dispatch.h" +#include "d4includes.h" +#include "d4read.h" +#include "d4curlfunctions.h" + +#ifdef _MSC_VER +#include +#include +#endif + +#ifdef HAVE_SYS_STAT_H +#include +#endif + +/**************************************************/ +/* Forward */ + +static void applyclientmetacontrols(NCD4meta* meta); +static int constrainable(NCURI*); +static void freeCurl(NCD4curl*); +static void freeInfo(NCD4INFO*); +static int paramcheck(NCD4INFO*, const char* key, const char* subkey); +static const char* getparam(NCD4INFO* info, const char* key); +static int set_curl_properties(NCD4INFO*); + +/**************************************************/ +/* Constants */ + +static const char* checkseps = "+,:;"; + +/**************************************************/ +int +NCD4_open(const char * path, int mode, + int basepe, size_t *chunksizehintp, + void *mpidata, NC_Dispatch *dispatch, NC *nc) +{ + int ret = NC_NOERR; + NCD4INFO* d4info = NULL; + const char* value; + NCD4meta* meta; + + if(path == NULL) + return THROW(NC_EDAPURL); + + assert(dispatch != NULL); + + /* Setup our NC and NCDAPCOMMON state*/ + + d4info = (NCD4INFO*)calloc(1,sizeof(NCD4INFO)); + if(d4info == NULL) {ret = NC_ENOMEM; goto done;} + + nc->dispatchdata = d4info; + nc->int_ncid = nc__pseudofd(); /* create a unique id */ + d4info->controller = (NC*)nc; + + /* Parse url and params */ + if(ncuriparse(nc->path,&d4info->uri) != NCU_OK) + {ret = NC_EDAPURL; goto done;} + + /* Load auth info from rc file */ + if((ret = NC_authsetup(&d4info->auth, d4info->uri))) + goto done; + NCD4_curl_protocols(d4info); + + if(!constrainable(d4info->uri)) + SETFLAG(d4info->controls.flags,NCF_UNCONSTRAINABLE); + + /* fail if we are unconstrainable but have constraints */ + if(FLAGSET(d4info->controls.flags,NCF_UNCONSTRAINABLE)) { + if(d4info->uri->query != NULL) { + nclog(NCLOGWARN,"Attempt to constrain an unconstrainable data source: %s", + d4info->uri->query); + ret = THROW(NC_EDAPCONSTRAINT); + goto done; + } + } + + /* process control client parameters */ + NCD4_applyclientparamcontrols(d4info); + + /* Use libsrc4 code (netcdf-4) for storing metadata */ + { + char tmpname[NC_MAX_NAME]; + + /* Create fake file name: exact name must be unique, + but is otherwise irrelevant because we are using NC_DISKLESS + */ + if(strlen(d4info->controls.substratename) > 0) + snprintf(tmpname,sizeof(tmpname),"%s",d4info->controls.substratename); + else + snprintf(tmpname,sizeof(tmpname),"tmp_%d",nc->int_ncid); + + /* Now, use the file to create the hidden substrate netcdf file. + We want this hidden file to always be NC_NETCDF4, so we need to + force default format temporarily in case user changed it. + Since diskless is enabled, create file in-memory. + */ + { + int new = NC_NETCDF4; + int old = 0; + int ncid = 0; + int ncflags = NC_NETCDF4|NC_CLOBBER; + ncflags |= NC_DISKLESS; + if(FLAGSET(d4info->controls.debugflags,NCF_DEBUG_COPY)) { + /* Cause data to be dumped to real file */ + ncflags |= NC_WRITE; + ncflags &= ~(NC_DISKLESS); /* use real file */ + } + nc_set_default_format(new,&old); /* save and change */ + ret = nc_create(tmpname,ncflags,&ncid); + nc_set_default_format(old,&new); /* restore */ + d4info->substrate.realfile = ((ncflags & NC_DISKLESS) == 0); + d4info->substrate.filename = strdup(tmpname); + if(d4info->substrate.filename == NULL) ret = NC_ENOMEM; + d4info->substrate.nc4id = ncid; + } + if(ret != NC_NOERR) goto done; + /* Avoid fill */ + nc_set_fill(getnc4id(nc),NC_NOFILL,NULL); + } + + /* Turn on logging; only do this after oc_open*/ + if((value = ncurilookup(d4info->uri,"log")) != NULL) { + ncloginit(); + if(nclogopen(value)) + ncsetlogging(1); + ncloginit(); + if(nclogopen(value)) + ncsetlogging(1); + } + + /* Setup a curl connection */ + { + CURL* curl = NULL; /* curl handle*/ + d4info->curl = (NCD4curl*)calloc(1,sizeof(NCD4curl)); + if(d4info->curl == NULL) + {ret = NC_ENOMEM; goto done;} + /* create the connection */ + if((ret=NCD4_curlopen(&curl))!= NC_NOERR) goto done; + d4info->curl->curl = curl; + /* Load misc rc properties */ + NCD4_get_rcproperties(d4info); + if((ret=set_curl_properties(d4info))!= NC_NOERR) goto done; + /* Set the one-time curl flags */ + if((ret=NCD4_set_flags_perlink(d4info))!= NC_NOERR) goto done; +#if 1 /* temporarily make per-link */ + if((ret=NCD4_set_flags_perfetch(d4info))!= NC_NOERR) goto done; +#endif + } + + d4info->curl->packet = ncbytesnew(); + ncbytessetalloc(d4info->curl->packet,DFALTPACKETSIZE); /*initial reasonable size*/ + + /* fetch the dmr + data*/ + { + int inmem = FLAGSET(d4info->controls.flags,NCF_ONDISK) ? 0 : 1; + if((ret = NCD4_readDAP(d4info,inmem))) goto done; + } + + /* if the url goes astray to a random web page, then try to just dump it */ + { + char* response = ncbytescontents(d4info->curl->packet); + size_t responselen = ncbyteslength(d4info->curl->packet); + + /* Apply some heuristics to see what we have. + The leading byte will have the chunk flags, which should + be less than 0x0f (for now). However, it will not be zero if + the data was little-endian + */ + if(responselen == 0 || response[0] >= ' ') { + /* does not look like a chunk, so probable server failure */ + if(responselen == 0) + nclog(NCLOGERR,"Empty DAP4 response"); + else {/* probable html response */ + nclog(NCLOGERR,"Unexpected DAP response:"); + nclog(NCLOGERR,"=============================="); + nclogtext(NCLOGERR,response); + nclog(NCLOGERR,"==============================\n"); + } + ret = NC_EDAPSVC; + fflush(stderr); + goto done; + } + } + + /* Build the meta data */ + if((d4info->substrate.metadata=NCD4_newmeta(ncbyteslength(d4info->curl->packet), + ncbytescontents(d4info->curl->packet)))==NULL) + {ret = NC_ENOMEM; goto done;} + meta = d4info->substrate.metadata; + meta->controller = d4info; + meta->ncid = getnc4id(nc); /* Transfer netcdf ncid */ + + /* process meta control parameters */ + applyclientmetacontrols(meta); + + /* Infer the mode */ + if((ret=NCD4_infermode(meta))) goto done; + + if((ret=NCD4_dechunk(meta))) goto done; + +#ifdef D4DUMPDMR + { + fprintf(stderr,"=============\n"); + fputs(d4info->substrate.metadata->serial.dmr,stderr); + fprintf(stderr,"\n=============\n"); + fflush(stderr); + } +#endif + + if((ret = NCD4_parse(d4info->substrate.metadata))) goto done; +#ifdef D4DEBUGMETA + { + fprintf(stderr,"\n/////////////\n"); + NCbytes* buf = ncbytesnew(); + NCD4_print(d4info->substrate.metadata,buf); + ncbytesnull(buf); + fputs(ncbytescontents(buf),stderr); + ncbytesfree(buf); + fprintf(stderr,"\n/////////////\n"); + fflush(stderr); + } +#endif + if((ret = NCD4_metabuild(d4info->substrate.metadata,d4info->substrate.metadata->ncid))) goto done; + if(ret != NC_NOERR && ret != NC_EVARSIZE) goto done; + if((ret = NCD4_processdata(d4info->substrate.metadata))) goto done; + + return THROW(ret); + +done: + if(ret) { + freeInfo(d4info); + nc->dispatchdata = NULL; + } + return THROW(ret); +} + +int +NCD4_close(int ncid, void* ignore) +{ + int ret = NC_NOERR; + NC* nc; + NCD4INFO* d4info; + int substrateid; + + ret = NC_check_id(ncid, (NC**)&nc); + if(ret != NC_NOERR) goto done; + d4info = (NCD4INFO*)nc->dispatchdata; + substrateid = makenc4id(nc,ncid); + + /* We call abort rather than close to avoid trying to write anything, + except if we are debugging + */ + if(FLAGSET(d4info->controls.debugflags,NCF_DEBUG_COPY)) { + /* Dump the data into the substrate */ + if((ret = NCD4_debugcopy(d4info))) + goto done; + ret = nc_close(substrateid); + } else { + ret = nc_abort(substrateid); + } + + freeInfo(d4info); + +done: + return THROW(ret); +} + +int +NCD4_abort(int ncid) +{ + return NCD4_close(ncid,NULL); +} + +/**************************************************/ + +/* Reclaim an NCD4INFO instance */ +static void +freeInfo(NCD4INFO* d4info) +{ + if(d4info == NULL) return; + d4info->controller = NULL; /* break link */ + nullfree(d4info->rawurltext); + nullfree(d4info->urltext); + ncurifree(d4info->uri); + freeCurl(d4info->curl); + nullfree(d4info->data.memory); + nullfree(d4info->data.ondiskfilename); + if(d4info->data.ondiskfile != NULL) + fclose(d4info->data.ondiskfile); + nullfree(d4info->fileproto.filename); + if(d4info->substrate.realfile + && !FLAGSET(d4info->controls.debugflags,NCF_DEBUG_COPY)) { + /* We used real file, so we need to delete the temp file + unless we are debugging. + Assume caller has done nc_close|nc_abort on the ncid. + Note that in theory, this should not be necessary since + AFAIK the substrate file is still in def mode, and + when aborted, it should be deleted. But that is not working + for some reason, so we delete it ourselves. + */ +#if 0 + if(d4info->substrate.filename != NULL) { + unlink(d4info->substrate.filename); + } +#endif + } + nullfree(d4info->substrate.filename); /* always reclaim */ + NCD4_reclaimMeta(d4info->substrate.metadata); + NC_authclear(&d4info->auth); + nclistfree(d4info->blobs); + free(d4info); +} + +static void +freeCurl(NCD4curl* curl) +{ + if(curl == NULL) return; + NCD4_curlclose(curl->curl); + ncbytesfree(curl->packet); + nullfree(curl->errdata.code); + nullfree(curl->errdata.message); + free(curl); +} + +/* Define the set of protocols known to be constrainable */ +static const char* constrainableprotocols[] = {"http", "https",NULL}; + +static int +constrainable(NCURI* durl) +{ + const char** protocol = constrainableprotocols; + for(;*protocol;protocol++) { + if(strcmp(durl->protocol,*protocol)==0) + return 1; + } + return 0; +} + +/* +Set curl properties for link based on rc files etc. +*/ +static int +set_curl_properties(NCD4INFO* d4info) +{ + int ret = NC_NOERR; + + if(d4info->auth.curlflags.useragent == NULL) { + char* agent; + size_t len = strlen(DFALTUSERAGENT) + strlen(VERSION); + len++; /*strlcat nul*/ + agent = (char*)malloc(len+1); + strncpy(agent,DFALTUSERAGENT,len); + strlcat(agent,VERSION,len); + d4info->auth.curlflags.useragent = agent; + } + + /* Some servers (e.g. thredds and columbia) appear to require a place + to put cookies in order for some security functions to work + */ + if(d4info->auth.curlflags.cookiejar != NULL + && strlen(d4info->auth.curlflags.cookiejar) == 0) { + free(d4info->auth.curlflags.cookiejar); + d4info->auth.curlflags.cookiejar = NULL; + } + + if(d4info->auth.curlflags.cookiejar == NULL) { + /* If no cookie file was defined, define a default */ + char* path = NULL; + char* newpath = NULL; + int len; + errno = 0; + /* Create the unique cookie file name */ + len = + strlen(ncrc_globalstate.tempdir) + + 1 /* '/' */ + + strlen("ncd4cookies"); + path = (char*)malloc(len+1); + if(path == NULL) return NC_ENOMEM; + snprintf(path,len,"%s/nc4cookies",ncrc_globalstate.tempdir); + /* Create the unique cookie file name */ + newpath = NC_mktmp(path); + free(path); + if(newpath == NULL) { + fprintf(stderr,"Cannot create cookie file\n"); + goto fail; + } + d4info->auth.curlflags.cookiejar = newpath; + d4info->auth.curlflags.cookiejarcreated = 1; + errno = 0; + } + assert(d4info->auth.curlflags.cookiejar != NULL); + + /* Make sure the cookie jar exists and can be read and written */ + { + FILE* f = NULL; + char* fname = d4info->auth.curlflags.cookiejar; + /* See if the file exists already */ + f = fopen(fname,"r"); + if(f == NULL) { + /* Ok, create it */ + f = fopen(fname,"w+"); + if(f == NULL) { + fprintf(stderr,"Cookie file cannot be read and written: %s\n",fname); + {ret= NC_EPERM; goto fail;} + } + } else { /* test if file can be written */ + fclose(f); + f = fopen(fname,"r+"); + if(f == NULL) { + fprintf(stderr,"Cookie file is cannot be written: %s\n",fname); + {ret = NC_EPERM; goto fail;} + } + } + if(f != NULL) fclose(f); + } + + return THROW(ret); + +fail: + return THROW(ret); +} + +void +NCD4_applyclientparamcontrols(NCD4INFO* info) +{ + const char* value; + + /* clear the flags */ + CLRFLAG(info->controls.flags,NCF_CACHE); + CLRFLAG(info->controls.flags,NCF_SHOWFETCH); + CLRFLAG(info->controls.flags,NCF_NC4); + CLRFLAG(info->controls.flags,NCF_NCDAP); + CLRFLAG(info->controls.flags,NCF_FILLMISMATCH); + + /* Turn on any default on flags */ + SETFLAG(info->controls.flags,DFALT_ON_FLAGS); + SETFLAG(info->controls.flags,(NCF_NC4|NCF_NCDAP)); + + if(paramcheck(info,"show","fetch")) + SETFLAG(info->controls.flags,NCF_SHOWFETCH); + + if(paramcheck(info,"translate","nc4")) + info->controls.translation = NCD4_TRANSNC4; + + /* Look at the debug flags */ + if(paramcheck(info,"debug","copy")) + SETFLAG(info->controls.debugflags,NCF_DEBUG_COPY); /* => close */ + + value = getparam(info,"substratename"); + if(value != NULL) + strncpy(info->controls.substratename,value,NC_MAX_NAME); + + info->controls.opaquesize = DFALTOPAQUESIZE; + value = getparam(info,"opaquesize"); + if(value != NULL) { + long long len = 0; + if(sscanf(value,"%lld",&len) != 1 || len == 0) + nclog(NCLOGWARN,"bad [opaquesize] tag: %s",value); + else + info->controls.opaquesize = (size_t)len; + } + + value = getparam(info,"fillmismatch"); + if(value != NULL) + SETFLAG(info->controls.flags,NCF_FILLMISMATCH); + + value = getparam(info,"nofillmismatch"); + if(value != NULL) + CLRFLAG(info->controls.debugflags,NCF_FILLMISMATCH); +} + +static void +applyclientmetacontrols(NCD4meta* meta) +{ + NCD4INFO* info = meta->controller; + const char* value = getparam(info,"checksummode"); + if(value != NULL) { + if(strcmp(value,"ignore")==0) + meta->ignorechecksums = 1; + } +} + +/* Search for substring in value of param. If substring == NULL; then just + check if param is defined. +*/ +static int +paramcheck(NCD4INFO* info, const char* key, const char* subkey) +{ + const char* value; + char* p; + + value = getparam(info, key); + if(value == NULL) + return 0; + if(subkey == NULL) return 1; + p = strstr(value,subkey); + if(p == NULL) return 0; + p += strlen(subkey); + if(*p != '\0' && strchr(checkseps,*p) == NULL) return 0; + return 1; +} + +/* +Given a parameter key, return its value or NULL if not defined. +*/ +static const char* +getparam(NCD4INFO* info, const char* key) +{ + const char* value; + + if(info == NULL || key == NULL) return NULL; + if((value=ncurilookup(info->uri,key)) == NULL) + return NULL; + return value; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4fix.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4fix.c new file mode 100644 index 00000000000..e28d88b0ba6 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4fix.c @@ -0,0 +1,554 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include +#include + +#include "d4includes.h" +#include "ezxml.h" + +/* +The primary purpose of this code is to provide node and data walkers +to do a variety of things. + +* (topo) + a. topologically sort the set of allnodes in postfix order. + +* (delimit) + a. Delimit the top-level vars in the dap4data and also compute checksum + +* (move) + a. Walk the (toplevel) var's data to get to the count'th instance. + +*/ + +/**************************************************/ + +#define COUNTSIZE 8 + +/**************************************************/ +/* Forward */ + +static int delimitAtomicVar(NCD4meta*, NCD4node* var, void** offsetp); +static int delimitOpaqueVar(NCD4meta*, NCD4node* var, void** offsetp); +static int delimitSeq(NCD4meta*, NCD4node* var, void** offsetp); +static int delimitSeqArray(NCD4meta*, NCD4node* var, void** offsetp); +static int delimitStruct(NCD4meta*, NCD4node* var, void** offsetp); +static int delimitStructArray(NCD4meta*, NCD4node* var, void** offsetp); +static int skipInstance(NCD4meta*, NCD4node* type, void** offsetp); +static int skipAtomicInstance(NCD4meta*, NCD4node* type, void** offsetp); +static int skipStructInstance(NCD4meta*, NCD4node* type, void** offsetp); +static int skipSeqInstance(NCD4meta*, NCD4node* vlentype, void** offsetp); + +static void walk(NCD4node* node, NClist* sorted); + +#ifdef D4DEBUGDATA +static void +ADDNODE(NClist* list, NCD4node* node) +{ + fprintf(stderr,"addnode: %s: %s %s (%llu)\n", + node->name, + NCD4_sortname(node->sort), + NCD4_subsortname(node->subsort), + node); + fflush(stderr); + nclistpush(list,node); +} +#else +#define ADDNODE(list,node) nclistpush((list),(node)) +#endif + + + +/**************************************************/ +/* Topo sort in postfix order */ + +int +NCD4_toposort(NCD4meta* compiler) +{ + int i, ret=NC_NOERR; + size_t len = nclistlength(compiler->allnodes); + NCD4node** list = (NCD4node**)nclistcontents(compiler->allnodes); + NCD4node** p; + NClist* sorted = nclistnew(); + nclistsetalloc(sorted,len); + for(i=0,p=list;isort) { /* Collect things known to have no dependencies */ + case NCD4_DIM: + node->visited = 1; + ADDNODE(sorted,node); + break; + case NCD4_TYPE: + if(node->subsort <= NC_MAX_ATOMIC_TYPE || node->subsort == NC_OPAQUE) { + node->visited = 1; + ADDNODE(sorted,node); + } else + node->visited = 0; + break; + default: + node->visited = 0; + } + } + walk(compiler->root,sorted); + /* Last step is to add in any remaining unvisited nodes, but report them */ + for(i=0,p=list;ivisited) continue; +#ifdef D4DEBUGDATA +fprintf(stderr,"unvisited node: %s\n",node->name); fflush(stderr); +#endif + node->visited = 1; + ADDNODE(sorted,node); + } + nclistfree(compiler->allnodes); + compiler->allnodes = sorted; +#ifdef D4DEBUGDATA +{int i; +for(i=0;iname); +fflush(stderr); +} +#endif + return THROW(ret); +} + +/* +Do depth first search +*/ +static void +walk(NCD4node* node, NClist* sorted) +{ + int i; + + if(node->visited) return; + node->visited = 1; + + switch (node->sort) { + case NCD4_GROUP: /* depends on its elements and attributes and subgroups */ + for(i=0;igroup.elements);i++) { + NCD4node* elem = (NCD4node*)nclistget(node->group.elements,i); + walk(elem,sorted); + } + break; + case NCD4_TYPE: /* Need to discriminate on the subsort */ + switch (node->subsort) { + case NC_SEQ: + /* Depends on its basetype */ + walk(node->basetype,sorted); + break; + case NC_STRUCT: /* Depends on its fields */ + for(i=0;ivars);i++) { + NCD4node* f = (NCD4node*)nclistget(node->vars,i); + walk(f,sorted); + } + break; + case NC_ENUM: /* Depends on its basetype, but since that is atomic, we can ignore */ + /* fall thru */ + default: /* Atomic or opaque, so already marked */ + break; + } + break; + + case NCD4_VAR: /* Depends on: dimensions and basetype and maps */ + for(i=0;idims);i++) { + NCD4node* d = (NCD4node*)nclistget(node->dims,i); + walk(d,sorted); + } + walk(node->basetype,sorted); + for(i=0;imaps);i++) { + NCD4node* m = (NCD4node*)nclistget(node->maps,i); + walk(m,sorted); + } + break; + + case NCD4_ATTR: /* Depends on its base type */ + walk(node->basetype,sorted); + break; + + case NCD4_ATTRSET: /* Depends on its contained attributes, but handled after switch */ + /* fall thru */ + default: /* depends on nothing else */ + break; + } + + /* Do Attributes last */ + for(i=0;iattributes);i++) { + NCD4node* a = (NCD4node*)nclistget(node->attributes,i); + walk(a,sorted); + } + ADDNODE(sorted,node); +} + + +/**************************************************/ +/* Mark the offset and length of each var/field + inside the raw dapdata. + Assumes it is called before byte swapping, so we + need to do swapping of counts and the final remote checksum. +*/ + +int +NCD4_delimit(NCD4meta* compiler, NCD4node* topvar, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + + offset = *offsetp; + ASSERT((ISTOPLEVEL(topvar))); + topvar->data.dap4data.memory = offset; + if(topvar->sort == NCD4_VAR) { + switch (topvar->subsort) { + case NC_STRUCT: + if((ret=delimitStructArray(compiler,topvar,&offset))) goto done; + break; + case NC_SEQ: + if((ret=delimitSeqArray(compiler,topvar,&offset))) goto done; + break; + default: + if((ret=delimitAtomicVar(compiler,topvar,&offset))) goto done; + break; + } + } + /* Track the variable size (in the dap4 data) but do not include + any checksum */ + topvar->data.dap4data.size = (d4size_t)(((char*)offset) - ((char*)*offsetp)); + /* extract the dap4 data checksum, if present */ + if(compiler->serial.remotechecksumming) { + union ATOMICS csum; + memcpy(csum.u8,offset,CHECKSUMSIZE); + topvar->data.remotechecksum = csum.u32[0]; + if(compiler->swap) swapinline32(&topvar->data.remotechecksum); + offset = INCR(offset,CHECKSUMSIZE); + } + *offsetp = offset; +done: + return THROW(ret); +} + +/* Includes opaque and enum */ +static int +delimitAtomicVar(NCD4meta* compiler, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + int typesize; + d4size_t i; + d4size_t dimproduct; + nc_type tid; + NCD4node* basetype; + NCD4node* truetype; + + assert(var->sort == NCD4_VAR); + dimproduct = NCD4_dimproduct(var); + basetype = var->basetype; + if(basetype->subsort == NC_OPAQUE) + return delimitOpaqueVar(compiler,var,offsetp); + + truetype = basetype; + if(truetype->subsort == NC_ENUM) + truetype = basetype->basetype; + + offset = *offsetp; + tid = truetype->subsort; + typesize = NCD4_typesize(tid); + if(tid != NC_STRING) { + offset = INCR(offset,(typesize*dimproduct)); + } else if(tid == NC_STRING) { /* walk the counts */ + unsigned long long count; + for(i=0;iswap) swapinline64(&count); + /* skip count bytes */ + offset = INCR(offset,count); + } + } + *offsetp = offset; + return THROW(ret); +} + +static int +delimitOpaqueVar(NCD4meta* compiler, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + unsigned long long count; + d4size_t dimproduct = NCD4_dimproduct(var); + + offset = *offsetp; + for(i=0;iswap) swapinline64(&count); + offset = INCR(offset,count); + } + *offsetp = offset; + return THROW(ret); +} + +static int +delimitStructArray(NCD4meta* compiler, NCD4node* varortype, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + d4size_t dimproduct; + NCD4node* type; + + if(varortype->sort == NCD4_VAR) { + dimproduct = NCD4_dimproduct(varortype); + type = varortype->basetype; + } else { + dimproduct = 1; + type = varortype; + } + + offset = *offsetp; + for(i=0;ivars);i++) { + NCD4node* field = (NCD4node*)nclistget(basetype->vars,i); + switch (field->subsort) { + default: + if((ret=delimitAtomicVar(compiler,field,&offset))) goto done; + break; + case NC_STRUCT: /* recurse */ + if((ret=delimitStructArray(compiler,field,&offset))) goto done; + break; + case NC_SEQ: + if((ret=delimitSeqArray(compiler,field,&offset))) goto done; + break; + } + } + *offsetp = offset; +done: + return THROW(ret); +} + +static int +delimitSeqArray(NCD4meta* compiler, NCD4node* varortype, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + d4size_t dimproduct; + NCD4node* type; + + if(varortype->sort == NCD4_VAR) { + dimproduct = NCD4_dimproduct(varortype); + type = varortype->basetype; + } else { + dimproduct = 1; + type = varortype; + } + + offset = *offsetp; + for(i=0;isubsort == NC_VLEN); + recordtype = vlentype->basetype; + + offset = *offsetp; + + /* Get he record count */ + recordcount = GETCOUNTER(offset); + SKIPCOUNTER(offset); + if(compiler->swap) swapinline64(&recordcount); + + for(i=0;isubsort) { + case NC_STRUCT: + if((ret=delimitStructArray(compiler,recordtype,&offset))) goto done; + break; + case NC_SEQ: + if((ret=delimitSeqArray(compiler,recordtype,&offset))) goto done; + break; + default: + if((ret=delimitAtomicVar(compiler,recordtype,&offset))) goto done; + break; + } + } + *offsetp = offset; +done: + return THROW(ret); +} + +/**************************************************/ +/* +Walk the (toplevel) var's data to get to the count'th instance. +For efficiency, it can be supplied with a previous case. +Assumes it is called after byte swapping and offsetting. +Assumes that var is not fixed size. +*/ + +int +NCD4_moveto(NCD4meta* compiler, NCD4node* var, d4size_t count, void** offsetp) +{ + int ret = NC_NOERR; + void* offset = NULL; + d4size_t startcount = 0; + NCD4node* basetype = NULL; + + ASSERT((ISTOPLEVEL(var))); + + offset = *offsetp; + startcount = 0; + basetype = var->basetype; + for(;startcount < count;startcount++) { + if((ret=skipInstance(compiler,basetype,&offset))) + goto done; + } + *offsetp = offset; +done: + return THROW(ret); +} + +static int +skipInstance(NCD4meta* compiler, NCD4node* type, void** offsetp) +{ + int ret = NC_NOERR; + void* offset = NULL; + + offset = *offsetp; + switch (type->subsort) { + case NC_STRUCT: + if((ret=skipStructInstance(compiler,type,&offset))) goto done; + break; + case NC_SEQ: + if((ret=skipSeqInstance(compiler,type,&offset))) goto done; + break; + default: + if((ret=skipAtomicInstance(compiler,type,&offset))) goto done; + break; + } + *offsetp = offset; +done: + return THROW(ret); +} + +/* Includes opaque and enum */ +static int +skipAtomicInstance(NCD4meta* compiler, NCD4node* type, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t count; + int typesize; + + offset = *offsetp; + + switch (type->subsort) { + default: /* fixed size atomic type */ + typesize = NCD4_typesize(type->meta.id); + offset = INCR(offset,typesize); + break; + case NC_STRING: + /* Get string count */ + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + /* skip count bytes */ + offset = INCR(offset,count); + break; + case NC_OPAQUE: + /* get count */ + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + offset = INCR(offset,count); + break; + case NC_ENUM: + return skipAtomicInstance(compiler,type->basetype,offsetp); + } + *offsetp = offset; + return THROW(ret); +} + +static int +skipStructInstance(NCD4meta* compiler, NCD4node* type, void** offsetp) +{ + int ret = NC_NOERR; + d4size_t i,j; + void* offset; + + offset = *offsetp; + /* Skip each field */ + for(i=0;ivars);i++) { + NCD4node* field = (NCD4node*)nclistget(type->vars,i); + NCD4node* ftype = field->basetype; + d4size_t dimproduct = NCD4_dimproduct(field); + for(j=0;jbasetype; + ASSERT((structtype->subsort == NC_STRUCT)); + + /* Get record count */ + recordcount = GETCOUNTER(offset); + SKIPCOUNTER(offset); + + for(i=0;istream); + if (count > 0) { + fetchdata->size += (count * size); + } else { + nclog(NCLOGWARN,"WriteFileCallback: zero sized write"); + } +#ifdef PROGRESS + nclog(NCLOGNOTE,"callback: %lu bytes",(d4size_t)realsize); +#endif + return count; +} + +static size_t +WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) +{ + size_t realsize = size * nmemb; + NCbytes* buf = (NCbytes*) data; + if(realsize == 0) + nclog(NCLOGWARN,"WriteMemoryCallback: zero sized chunk"); + /* Optimize for reading potentially large dods datasets */ + if(!ncbytesavail(buf,realsize)) { + /* double the size of the packet */ + ncbytessetalloc(buf,2*ncbytesalloc(buf)); + } + ncbytesappendn(buf, ptr, realsize); +#ifdef PROGRESS + nclog(NCLOGNOTE,"callback: %lu bytes",(d4size_t)realsize); +#endif + return realsize; +} + +int +NCD4_curlopen(CURL** curlp) +{ + int ret = NC_NOERR; + CURLcode cstat = CURLE_OK; + CURL* curl; + /* initialize curl*/ + curl = curl_easy_init(); + if (curl == NULL) + ret = NC_ECURL; + else { + cstat = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1); + if (cstat != CURLE_OK) + ret = NC_ECURL; + } + if (curlp) + *curlp = curl; + if(cstat != CURLE_OK) { + nclog(NCLOGERR, "curl error: %s", curl_easy_strerror(cstat)); + ret = curlerrtoncerr(cstat); + } + return THROW(ret); +} + +void +NCD4_curlclose(CURL* curl) +{ + if (curl != NULL) + curl_easy_cleanup(curl); +} + +int +NCD4_fetchlastmodified(CURL* curl, char* url, long* filetime) +{ + int ret = NC_NOERR; + CURLcode cstat = CURLE_OK; + + /* Set the URL */ + cstat = curl_easy_setopt(curl, CURLOPT_URL, (void*)url); + if (cstat != CURLE_OK) + goto fail; + + /* Ask for head */ + cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30); /* 30sec timeout*/ + cstat = curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2); + cstat = curl_easy_setopt(curl, CURLOPT_HEADER, 1); + cstat = curl_easy_setopt(curl, CURLOPT_NOBODY, 1); + cstat = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1); + cstat = curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1); + + cstat = curl_easy_perform(curl); + if(cstat != CURLE_OK) goto fail; + if(filetime != NULL) + cstat = curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime); + if(cstat != CURLE_OK) goto fail; + return THROW(ret); + +fail: + if(cstat != CURLE_OK) { + nclog(NCLOGERR, "curl error: %s", curl_easy_strerror(cstat)); + ret = curlerrtoncerr(cstat); + } + return THROW(ret); +} + +int +NCD4_ping(const char* url) +{ + int ret = NC_NOERR; + CURLcode cstat = CURLE_OK; + CURL* curl = NULL; + NCbytes* buf = NULL; + + /* Create a CURL instance */ + ret = NCD4_curlopen(&curl); + if(ret != NC_NOERR) return THROW(ret); + + /* Use redirects */ + cstat = curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L); + if (cstat != CURLE_OK) + goto done; + cstat = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + if (cstat != CURLE_OK) + goto done; + + /* use a very short timeout: 10 seconds */ + cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)5); + if (cstat != CURLE_OK) + goto done; + + /* fail on HTTP 400 code errors */ + cstat = curl_easy_setopt(curl, CURLOPT_FAILONERROR, (long)1); + if (cstat != CURLE_OK) + goto done; + + /* Try to get the file */ + buf = ncbytesnew(); + ret = NCD4_fetchurl(curl,url,buf,NULL); + if(ret == NC_NOERR) { + /* Don't trust curl to return an error when request gets 404 */ + long http_code = 0; + cstat = curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, &http_code); + if (cstat != CURLE_OK) + goto done; + if(http_code >= 400) { + cstat = CURLE_HTTP_RETURNED_ERROR; + goto done; + } + } else + goto done; + +done: + ncbytesfree(buf); + NCD4_curlclose(curl); + if(cstat != CURLE_OK) { + nclog(NCLOGERR, "curl error: %s", curl_easy_strerror(cstat)); + ret = curlerrtoncerr(cstat); + } + return THROW(ret); +} + +static int +curlerrtoncerr(CURLcode cstat) +{ + switch (cstat) { + case CURLE_OK: return THROW(NC_NOERR); + case CURLE_URL_MALFORMAT: + return THROW(NC_EURL); + case CURLE_COULDNT_RESOLVE_HOST: + case CURLE_COULDNT_CONNECT: + case CURLE_REMOTE_ACCESS_DENIED: + case CURLE_TOO_MANY_REDIRECTS: + return THROW(NC_EDAPSVC); + case CURLE_OUT_OF_MEMORY: + return THROW(NC_ENOMEM); + /* Eventually would be nice to convert these */ + case CURLE_SSL_CONNECT_ERROR: + case CURLE_READ_ERROR: + case CURLE_OPERATION_TIMEDOUT: + case CURLE_SSL_CERTPROBLEM: + case CURLE_FILESIZE_EXCEEDED: + case CURLE_SSL_CACERT_BADFILE: + default: break; + } + return THROW(NC_ECURL); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4http.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4http.h new file mode 100644 index 00000000000..dbd307a6eec --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4http.h @@ -0,0 +1,24 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4HTTP_H +#define D4HTTP_H 1 + +extern int curlopen(CURL** curlp); +extern void curlclose(CURL*); + +extern ncerror ncd4_fetchurl(CURL*, const char*, NCbytes*, long*, struct credentials*); +extern ncerror ncd4_fetchurl_file(CURL*, const char*, FILE*, d4size_t*, long*); + +extern long ncd4_fetchhttpcode(CURL* curl); + +extern ncerror ncd4_fetchlastmodified(CURL* curl, char* url, long* filetime); + +extern ncerror ncd4_curlopen(CURL** curlp); +extern void ncd4_curlclose(CURL* curlp); + +extern ncerror ncd4_ping(const char* url); + +#endif /*D4HTTP_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4includes.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4includes.h new file mode 100644 index 00000000000..6979e787691 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4includes.h @@ -0,0 +1,52 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4INCLUDES_H +#define D4INCLUDES_H 1 + +#include "config.h" +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +#include + +#ifdef HAVE_SYS_TIME_H +#include +#endif + +#ifdef HAVE_GETRLIMIT +# ifdef HAVE_SYS_RESOURCE_H +# include +# endif +# ifdef HAVE_SYS_RESOURCE_H +# include +# endif +#endif + +#include "netcdf.h" +#include "nc.h" +#include "ncrc.h" +#include "ncbytes.h" +#include "nclist.h" +#include "ncuri.h" +#include "nclog.h" +#include "ncdap.h" + +#include "d4util.h" + +#include "ncd4types.h" +#include "ncd4.h" + +#include "d4debug.h" +#include "d4chunk.h" + +#endif /*D4INCLUDES_H*/ + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4meta.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4meta.c new file mode 100644 index 00000000000..57e8ffd3ff7 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4meta.c @@ -0,0 +1,1149 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#include +#include "nc4internal.h" +#include "ncoffsets.h" +#include "ezxml.h" + +/** + * Build the netcdf-4 metadata from the NCD4node nodes. + */ + +/***************************************************/ +/* Forwards */ + +static char* backslashEscape(const char* s); +static char* getFieldFQN(NCD4node* field, const char* tail); +static int build(NCD4meta* builder, NCD4node* root); +static int buildAtomicVar(NCD4meta* builder, NCD4node* var); +static int buildAttributes(NCD4meta* builder, NCD4node* varorgroup); +static int buildCompound(NCD4meta* builder, NCD4node* cmpdtype, NCD4node* group, char* name); +static int buildDimension(NCD4meta* builder, NCD4node* dim); +static int buildEnumeration(NCD4meta* builder, NCD4node* en); +static int buildGroups(NCD4meta*, NCD4node* parent); +static int buildMaps(NCD4meta* builder, NCD4node* var); +static int buildMetaData(NCD4meta* builder, NCD4node* var); +static int buildOpaque(NCD4meta* builder, NCD4node* op); +static int buildSequence(NCD4meta* builder, NCD4node* seq); +static int buildStructure(NCD4meta* builder, NCD4node* structvar); +static int buildStructureType(NCD4meta* builder, NCD4node* structtype); +static int buildVariable(NCD4meta* builder, NCD4node* var); +static int buildVlenType(NCD4meta* builder, NCD4node* seqtype); +static int compileAttrValues(NCD4meta* builder, NCD4node* attr, void** memoryp, NClist* blobs); +static void computeOffsets(NCD4meta* builder, NCD4node* cmpd); +static int convertString(union ATOMICS* converter, NCD4node* type, const char* s); +static void* copyAtomic(union ATOMICS* converter, nc_type type, size_t len, void* dst, NClist* blobs); +static int decodeEconst(NCD4meta* builder, NCD4node* enumtype, const char* nameorval, union ATOMICS* converter); +static int downConvert(union ATOMICS* converter, NCD4node* type); +static void freeStringMemory(char** mem, int count); +static size_t getDimrefs(NCD4node* var, int* dimids); +static size_t getDimsizes(NCD4node* var, int* dimsizes); +static d4size_t getpadding(d4size_t offset, size_t alignment); +static int markdapsize(NCD4meta* meta); +static int markfixedsize(NCD4meta* meta); +static void savegroupbyid(NCD4meta*,NCD4node* group); +static void savevarbyid(NCD4node* group, NCD4node* var); +#ifndef FIXEDOPAQUE +static int buildBytestringType(NCD4meta* builder); +#endif + +/***************************************************/ +/* API */ + +int +NCD4_metabuild(NCD4meta* metadata, int ncid) +{ + int ret = NC_NOERR; + int i; + + metadata->ncid = ncid; + metadata->root->meta.id = ncid; + + /* Fix up the atomic types */ + for(i=0;iallnodes);i++) { + NCD4node* n = (NCD4node*)nclistget(metadata->allnodes,i); + if(n->sort != NCD4_TYPE) continue; + if(n->subsort > NC_MAX_ATOMIC_TYPE) continue; + n->meta.id = n->subsort; + n->meta.isfixedsize = (n->subsort == NC_STRING ? 0 : 1); + if(n->subsort <= NC_STRING) + n->meta.dapsize = NCD4_typesize(n->subsort); + } + + /* Topo sort the set of all nodes */ + NCD4_toposort(metadata); + markfixedsize(metadata); + markdapsize(metadata); + /* Process the metadata state */ + if((ret = build(metadata,metadata->root))) goto done; + /* Done with the metadata*/ + if((ret=nc_enddef(metadata->ncid))) + goto done; + +done: + return THROW(ret); +} + + +/* Create an empty NCD4meta object for + use in subsequent calls + (is the the right src file to hold this?) +*/ + +NCD4meta* +NCD4_newmeta(size_t rawsize, void* rawdata) +{ + NCD4meta* meta = (NCD4meta*)calloc(1,sizeof(NCD4meta)); + if(meta == NULL) return NULL; + meta->allnodes = nclistnew(); + meta->serial.rawsize = rawsize; + meta->serial.rawdata = rawdata; +#ifdef D4DEBUG + meta->debuglevel = 1; +#endif + return meta; +} + +void +NCD4_setdebuglevel(NCD4meta* meta, int debuglevel) +{ + meta->debuglevel = debuglevel; +} + +void +NCD4_reclaimMeta(NCD4meta* dataset) +{ + int i; + if(dataset == NULL) return; + for(i=0;iallnodes);i++) { + NCD4node* node = (NCD4node*)nclistget(dataset->allnodes,i); + reclaimNode(node); + } + nullfree(dataset->error.parseerror); + nullfree(dataset->error.message); + nullfree(dataset->error.context); + nullfree(dataset->error.otherinfo); + nullfree(dataset->serial.errdata); + nclistfree(dataset->groupbyid); +#if 0 + for(i=0;iblobs);i++) { + void* p = nclistget(dataset->blobs,i); + nullfree(p); + } + nclistfree(dataset->blobs); +#endif + nclistfree(dataset->allnodes); + nullfree(dataset->serial.dmr); + free(dataset); +} + +void +reclaimNode(NCD4node* node) +{ + if(node == NULL) return; + nullfree(node->name); + nclistfree(node->groups); + nclistfree(node->vars); + nclistfree(node->types); + nclistfree(node->dims); + nclistfree(node->attributes); + nclistfree(node->maps); + nclistfreeall(node->xmlattributes); + nclistfreeall(node->attr.values); + nclistfree(node->en.econsts); + nclistfree(node->group.elements); + nullfree(node->group.dapversion); + nullfree(node->group.dmrversion); + nullfree(node->group.datasetname); + nclistfree(node->group.varbyid); + nullfree(node->nc4.orig.name); + nullfree(node); +} + +/**************************************************/ + +/* Recursively walk the tree to create the metadata */ +static int +build(NCD4meta* builder, NCD4node* root) +{ + int i,ret = NC_NOERR; + size_t len = nclistlength(builder->allnodes); + + /* Tag the root group */ + savegroupbyid(builder,root); + + /* Compute the sizes for all type objects. Will of necessity + compute the offsets for compound types as well + */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_TYPE) continue; + switch (x->subsort) { + case NC_OPAQUE: + case NC_ENUM: + case NC_SEQ: + default: /* Atomic */ + x->meta.memsize = NCD4_computeTypeSize(builder,x); + x->meta.alignment = x->meta.memsize; /* Same for these cases */ + break; + case NC_STRUCT: + /* We need to compute the field offsets in order to compute the struct size */ + computeOffsets(builder,x); + break; + } + } + + /* Start by defining group tree separately so we can maintain + order */ + if((ret=buildGroups(builder,root))) goto done; + + /* Now, walks selected other nodes to define the netcdf-4 substrate metadata */ + + /* Walk and define the dimensions */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_DIM) continue; + if((ret=buildDimension(builder,x))) + goto done; + } + + /* Walk and define the enums */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_TYPE) continue; + if(x->subsort != NC_ENUM) continue; + if((ret=buildEnumeration(builder,x))) + goto done; + } + + /* Walk and define the opaques */ +#ifndef FIXEDOPAQUE + /* If _bytestring was required by parser, then create it */ + if(builder->_bytestring != NULL && (ret = buildBytestringType(builder))) + goto done; +#endif + /* Create other opaque types */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_TYPE) continue; + if(x->subsort != NC_OPAQUE) continue; + if(x->opaque.size > 0 && (ret=buildOpaque(builder,x))) + goto done; + } + + /* Walk and define the compounds and sequences */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_TYPE) continue; + switch(x->subsort) { + case NC_STRUCT: + if((ret=buildStructureType(builder,x))) + goto done; + break; + case NC_SEQ: + if((ret=buildVlenType(builder,x))) + goto done; + break; + default: /* ignore */ break; + } + } + + /* Compute the type size for all type */ + for(i=0;iallnodes,i); + if(x->sort != NCD4_TYPE) continue;; + NCD4_computeTypeSize(builder,x); + } + + /* Finally, define the top-level variables */ + for(i=0;iallnodes,i); + if(ISVAR(x->sort) && ISTOPLEVEL(x)) { + if((ret=buildVariable(builder,x))) goto done; + } + } + +done: + return THROW(ret); +} + +static int +buildGroups(NCD4meta* builder, NCD4node* parent) +{ + int i,ret=NC_NOERR; +#ifdef D4DEBUG + fprintf(stderr,"build group: %s\n",parent->name); +#endif + /* Define any group level attributes */ + if((ret = buildAttributes(builder,parent))) goto done; + + for(i=0;igroups);i++) { + NCD4node* g = (NCD4node*)nclistget(parent->groups,i); + if(g->group.isdataset) { + g->meta.id = builder->ncid; + } else { + NCCHECK((nc_def_grp(parent->meta.id,g->name,&g->meta.id))); + savegroupbyid(builder,g); + } + if((ret=buildGroups(builder,g))) goto done; /* recurse */ + } +done: + return THROW(ret); +} + +static int +buildDimension(NCD4meta* builder, NCD4node* dim) +{ + int ret = NC_NOERR; + NCD4node* group = NCD4_groupFor(dim); + if(dim->dim.isunlimited) { + NCCHECK((nc_def_dim(group->meta.id,dim->name,NC_UNLIMITED,&dim->meta.id))); + } else { + NCCHECK((nc_def_dim(group->meta.id,dim->name,(size_t)dim->dim.size,&dim->meta.id))); + } +done: + return THROW(ret); +} + +static int +buildEnumeration(NCD4meta* builder, NCD4node* en) +{ + int i,ret = NC_NOERR; + NCD4node* group = NCD4_groupFor(en); + NCCHECK((nc_def_enum(group->meta.id,en->basetype->meta.id,en->name,&en->meta.id))); + for(i=0;ien.econsts);i++) { + NCD4node* ec = (NCD4node*)nclistget(en->en.econsts,i); + NCCHECK((nc_insert_enum(group->meta.id, en->meta.id, ec->name, ec->en.ecvalue.i8))); + } +done: + return THROW(ret); +} + +static int +buildOpaque(NCD4meta* builder, NCD4node* op) +{ + int ret = NC_NOERR; + NCD4node* group = NCD4_groupFor(op); + char* name = op->name; + + assert(op->opaque.size > 0); + /* Two cases, with and without UCARTAGORIGTYPE */ + if(op->nc4.orig.name != NULL) { + name = op->nc4.orig.name; + group = op->nc4.orig.group; + } + NCCHECK((nc_def_opaque(group->meta.id,op->opaque.size,name,&op->meta.id))); +done: + return THROW(ret); +} + +#ifndef FIXEDOPAQUE +static int +buildBytestringType(NCD4meta* builder) +{ + int ret = NC_NOERR; + NCD4node* bstring = builder->_bytestring; + + assert(bstring != NULL); /* Will fail if we need bytestring and it was not created in d4parse*/ + + /* Define once */ + if(bstring->meta.id > 0) goto done; + /* create in root as ubyte(*) vlen named "_bytestring" */ + NCCHECK((nc_def_vlen(builder->root->meta.id,bstring->name,NC_UBYTE,&bstring->meta.id))); + +done: + return THROW(ret); +} +#endif + +static int +buildVariable(NCD4meta* builder, NCD4node* var) +{ + int ret = NC_NOERR; + + switch (var->subsort) { + default: + if((ret = buildAtomicVar(builder,var))) goto done; + break; + case NC_STRUCT: + if((ret = buildStructure(builder,var))) goto done; + break; + case NC_SEQ: + if((ret = buildSequence(builder,var))) goto done; + break; + } +done: + return THROW(ret); +} + +static int +buildMetaData(NCD4meta* builder, NCD4node* var) +{ + int ret = NC_NOERR; + if((ret = buildAttributes(builder,var))) goto done; + if((ret = buildMaps(builder,var))) goto done; +done: + return THROW(ret); +} + +static int +buildMaps(NCD4meta* builder, NCD4node* var) +{ + int i,ret = NC_NOERR; + size_t count = nclistlength(var->maps); + char** memory = NULL; + char** p; + NCD4node* group; + + if(count == 0) goto done; + + /* Add an attribute to the parent variable + listing fqn's of all specified variables in map order*/ + memory = (char**)d4alloc(count*sizeof(char*)); + if(memory == NULL) {ret=NC_ENOMEM; goto done;} + p = memory; + for(i=0;imaps,i); + char* fqn = NCD4_makeFQN(mapref); + *p++ = fqn; + } + /* Make map info visible in the netcdf-4 file */ + group = NCD4_groupFor(var); + NCCHECK((nc_put_att(group->meta.id,var->meta.id,NC4TAGMAPS,NC_STRING,count,memory))); +done: + if(memory != NULL) + freeStringMemory(memory,count); + return THROW(ret); +} + +static int +buildAttributes(NCD4meta* builder, NCD4node* varorgroup) +{ + int i,ret = NC_NOERR; + NClist* blobs = NULL; + + for(i=0;iattributes);i++) { + NCD4node* attr = nclistget(varorgroup->attributes,i); + void* memory = NULL; + size_t count = nclistlength(attr->attr.values); + NCD4node* group; + int varid; + + /* Suppress all UCARTAG attributes */ + if(strncmp(attr->name,UCARTAG,strlen(UCARTAG)) == 0) + continue; + + if(ISGROUP(varorgroup->sort)) + varid = NC_GLOBAL; + else + varid = varorgroup->meta.id; + blobs = nclistnew(); + if((ret=compileAttrValues(builder,attr,&memory,blobs))) { + nullfree(memory); + FAIL(ret,"Malformed attribute value(s) for: %s",attr->name); + } + group = NCD4_groupFor(varorgroup); + NCCHECK((nc_put_att(group->meta.id,varid,attr->name,attr->basetype->meta.id,count,memory))); + nclistfreeall(blobs); blobs = NULL; + nullfree(memory); + } +done: + nclistfreeall(blobs); + return THROW(ret); +} + +static int +buildStructureType(NCD4meta* builder, NCD4node* structtype) +{ + int tid,ret = NC_NOERR; + NCD4node* group = NULL; + char* name = NULL; + + group = NCD4_groupFor(structtype); /* default */ + + /* Figure out the type name and containing group */ + if(structtype->nc4.orig.name != NULL) { + name = strdup(structtype->nc4.orig.name); + group = structtype->nc4.orig.group; + } else { + name = getFieldFQN(structtype,"_t"); + } + + /* Step 2: See if already defined */ + if(nc_inq_typeid(group->meta.id,name,&tid) == NC_NOERR) {/* Already exists */ + FAIL(NC_ENAMEINUSE,"Inferred type name conflict",name); + } + + /* Since netcdf does not support forward references, + we presume all field types are defined */ + if((ret=buildCompound(builder,structtype,group,name))) goto done; + +done: + nullfree(name); + return THROW(ret); +} + +static int +buildVlenType(NCD4meta* builder, NCD4node* vlentype) +{ + int ret = NC_NOERR; + NCD4node* group; + NCD4node* basetype; + nc_type tid = NC_NAT; + char* name = NULL; + + group = NCD4_groupFor(vlentype); + + /* Figure out the type name and containing group */ + if(vlentype->nc4.orig.name != NULL) { + name = strdup(vlentype->nc4.orig.name); + group = vlentype->nc4.orig.group; + } else { + name = getFieldFQN(vlentype,NULL); + } + + /* See if already defined */ + if(nc_inq_typeid(group->meta.id,name,&tid) == NC_NOERR) {/* Already exists */ + FAIL(NC_ENAMEINUSE,"Inferred type name conflict",name); + } + + /* Get the baseline type */ + basetype = vlentype->basetype; + /* build the vlen type */ + NCCHECK(nc_def_vlen(group->meta.id, name, basetype->meta.id, &vlentype->meta.id)); + +done: + nullfree(name); + return THROW(ret); +} + +static int +buildCompound(NCD4meta* builder, NCD4node* cmpdtype, NCD4node* group, char* name) +{ + int i,ret = NC_NOERR; + + /* Step 1: compute field offsets */ + computeOffsets(builder,cmpdtype); + + /* Step 2: define this node's compound type */ + NCCHECK((nc_def_compound(group->meta.id,(size_t)cmpdtype->meta.memsize,name,&cmpdtype->meta.id))); + + /* Step 3: add the fields to type */ + for(i=0;ivars);i++) { + int rank; + int dimsizes[NC_MAX_VAR_DIMS]; + NCD4node* field = (NCD4node*)nclistget(cmpdtype->vars,i); + rank = nclistlength(field->dims); + if(rank == 0) { /* scalar */ + NCCHECK((nc_insert_compound(group->meta.id, cmpdtype->meta.id, + field->name, field->meta.offset, + field->basetype->meta.id))); + } else if(rank > 0) { /* array */ + int idimsizes[NC_MAX_VAR_DIMS]; + int j; + getDimsizes(field,dimsizes); + /* nc_insert_array_compound: dimsizes arg is not size_t */ + for(j=0;jmeta.id, cmpdtype->meta.id, + field->name, field->meta.offset, + field->basetype->meta.id, + rank, idimsizes))); + } + } + +done: + return THROW(ret); +} + +static int +buildAtomicVar(NCD4meta* builder, NCD4node* var) +{ + int ret = NC_NOERR; + size_t rank; + int dimids[NC_MAX_VAR_DIMS]; + NCD4node* group; + + group = NCD4_groupFor(var); + +#ifdef D4DEBUG + fprintf(stderr,"build var: %s.%s\n",group->name,var->name); fflush(stderr); +#endif + + rank = getDimrefs(var,dimids); + NCCHECK((nc_def_var(group->meta.id,var->name,var->basetype->meta.id,rank,dimids,&var->meta.id))); + /* Tag the var */ + savevarbyid(group,var); + + /* Build attributes and map attributes */ + if((ret = buildMetaData(builder,var))) goto done; +done: + return THROW(ret); +} + +static int +buildStructure(NCD4meta* builder, NCD4node* structvar) +{ + int ret = NC_NOERR; + NCD4node* group; + int rank; + int dimids[NC_MAX_VAR_DIMS]; + + /* Step 1: define the variable */ + rank = nclistlength(structvar->dims); + getDimrefs(structvar,dimids); + group = NCD4_groupFor(structvar); + NCCHECK((nc_def_var(group->meta.id,structvar->name,structvar->basetype->meta.id,rank,dimids,&structvar->meta.id))); + /* Tag the var */ + savevarbyid(group,structvar); + + /* Build attributes and map attributes WRT the variable */ + if((ret = buildMetaData(builder,structvar))) goto done; + +done: + return THROW(ret); +} + +static int +buildSequence(NCD4meta* builder, NCD4node* seq) +{ + + int ret = NC_NOERR; + NCD4node* group; + int rank; + int dimids[NC_MAX_VAR_DIMS]; + + rank = nclistlength(seq->dims); + getDimrefs(seq,dimids); + group = NCD4_groupFor(seq); + NCCHECK((nc_def_var(group->meta.id,seq->name,seq->basetype->meta.id,rank,dimids,&seq->meta.id))); + savevarbyid(group,seq); + + /* Build attributes and map attributes WRT the variable */ + if((ret = buildMetaData(builder,seq))) goto done; + +done: + return THROW(ret); +} + +/***************************************************/ +/* Utilities */ + +/* Insert a group into the groupbyid for a group */ +static void +savegroupbyid(NCD4meta* meta, NCD4node* group) +{ + if(meta->groupbyid == NULL) + meta->groupbyid = nclistnew(); + nclistsetalloc(meta->groupbyid,GROUPIDPART(group->meta.id)); + nclistinsert(meta->groupbyid,GROUPIDPART(group->meta.id),group); +} + +/* Insert a var into the varbyid for a group */ +static void +savevarbyid(NCD4node* group, NCD4node* var) +{ + if(group->group.varbyid == NULL) + group->group.varbyid = nclistnew(); + nclistsetalloc(group->group.varbyid,var->meta.id); + nclistinsert(group->group.varbyid,var->meta.id,var); +} + +/* Collect FQN path from node upto (but not including) + the first enclosing group and create an name from it +*/ +static char* +getFieldFQN(NCD4node* field, const char* tail) +{ + int i; + NCD4node* x = NULL; + NClist* path = NULL; + NCbytes* fqn = NULL; + char* result; + + path = nclistnew(); + for(x=field;!ISGROUP(x->sort);x=x->container) { + nclistinsert(path,0,x); + } + fqn = ncbytesnew(); + for(i=0;iname); + if(escaped == NULL) return NULL; + if(i > 0) ncbytesappend(fqn,'.'); + ncbytescat(fqn,escaped); + free(escaped); + } + nclistfree(path); + if(tail != NULL) + ncbytescat(fqn,tail); + result = ncbytesextract(fqn); + ncbytesfree(fqn); + return result; +} + +static size_t +getDimrefs(NCD4node* var, int* dimids) +{ + int i; + int rank = nclistlength(var->dims); + for(i=0;idims,i); + dimids[i] = dim->meta.id; + } + return rank; +} + +static size_t +getDimsizes(NCD4node* var, int* dimsizes) +{ + int i; + int rank = nclistlength(var->dims); + for(i=0;idims,i); + dimsizes[i] = (int)dim->dim.size; + } + return rank; +} + +/**************************************************/ +/* Utilities */ + +static void +freeStringMemory(char** mem, int count) +{ + int i; + if(mem == NULL) return; + for(i=0;icontainer; + NCD4node* basetype = attr->basetype; + NClist* values = attr->attr.values; + int count = nclistlength(values); + + memset((void*)&converter,0,sizeof(converter)); + + /* Deal with _FillValue */ + if(container->sort == NCD4_VAR && strcmp(attr->name,"_FillValue")==0) { + /* Verify or fix or fail on type match */ + if(container->basetype != basetype) { + /* _FillValue/Variable type mismatch */ + if(FLAGSET(builder->controller->controls.flags,NCF_FILLMISMATCH)) { + /* Force type match */ + basetype = (attr->basetype = container->basetype); + } else {/* Fail */ + FAIL(NC_EBADTYPE,"_FillValue/Variable type mismatch: %s:%s",container->name,attr->name); + } + } + } + isenum = (basetype->subsort == NC_ENUM); + truebase = (isenum ? basetype->basetype : basetype); + if(!ISTYPE(truebase->sort) || (truebase->meta.id > NC_MAX_ATOMIC_TYPE)) + FAIL(NC_EBADTYPE,"Illegal attribute type: %s",basetype->name); + size = NCD4_typesize(truebase->meta.id); + if((memory = (unsigned char*)d4alloc(count*size))==NULL) + return THROW(NC_ENOMEM); + p = memory; + for(i=0;iname); + } + ret = downConvert(&converter,truebase); + p = copyAtomic(&converter,truebase->meta.id,NCD4_typesize(truebase->meta.id),p,blobs); + } + if(memoryp) *memoryp = memory; +done: + return THROW(ret); +} + +static void* +copyAtomic(union ATOMICS* converter, nc_type type, size_t len, void* dst, NClist* blobs) +{ + switch (type) { + case NC_CHAR: case NC_BYTE: case NC_UBYTE: + memcpy(dst,&converter->u8[0],len); break; + case NC_SHORT: case NC_USHORT: + memcpy(dst,&converter->u16[0],len); break; + case NC_INT: case NC_UINT: + memcpy(dst,&converter->u32[0],len); break; + case NC_INT64: case NC_UINT64: + memcpy(dst,&converter->u64[0],len); break; + case NC_FLOAT: + memcpy(dst,&converter->f32[0],len); break; + case NC_DOUBLE: + memcpy(dst,&converter->f64[0],len); break; + case NC_STRING: + memcpy(dst,&converter->s[0],len); + nclistpush(blobs,converter->s[0]); + converter->s[0] = NULL; /* avoid duplicate free */ + break; + }/*switch*/ + return (((char*)dst)+len); +} + +static int +convertString(union ATOMICS* converter, NCD4node* type, const char* s) +{ + switch (type->subsort) { + case NC_BYTE: + case NC_SHORT: + case NC_INT: + case NC_INT64: + if(sscanf(s,"%lld",&converter->i64[0]) != 1) return THROW(NC_ERANGE); + break; + case NC_UBYTE: + case NC_USHORT: + case NC_UINT: + case NC_UINT64: + if(sscanf(s,"%llu",&converter->u64[0]) != 1) return THROW(NC_ERANGE); + break; + case NC_FLOAT: + case NC_DOUBLE: + if(sscanf(s,"%lf",&converter->f64[0]) != 1) return THROW(NC_ERANGE); + break; + case NC_CHAR: + converter->i8[0] = s[0]; + break; + case NC_STRING: + converter->s[0]= strdup(s); + break; + }/*switch*/ + return downConvert(converter,type); +} + +static int +downConvert(union ATOMICS* converter, NCD4node* type) +{ + d4size_t u64 = converter->u64[0]; + long long i64 = converter->i64[0]; + double f64 = converter->f64[0]; + char* s = converter->s[0]; + switch (type->subsort) { + case NC_CHAR: + case NC_BYTE: + converter->i8[0] = (char)i64; + break; + case NC_UBYTE: + converter->u8[0] = (unsigned char)u64; + break; + case NC_SHORT: + converter->i16[0] = (short)i64; + break; + case NC_USHORT: + converter->u16[0] = (unsigned short)u64; + break; + case NC_INT: + converter->i32[0] = (int)i64; + break; + case NC_UINT: + converter->u32[0] = (unsigned int)u64; + break; + case NC_INT64: + converter->i64[0] = i64; + break; + case NC_UINT64: + converter->u64[0]= u64; + break; + case NC_FLOAT: + converter->f32[0] = (float)f64; + break; + case NC_DOUBLE: + converter->f64[0] = f64; + break; + case NC_STRING: + converter->s[0]= s; + break; + }/*switch*/ + return THROW(NC_NOERR); +} + +/* +Given an enum type, and a string representing an econst, +convert to integer. +Note: this will work if the econst string is a number or a econst name +*/ +static int +decodeEconst(NCD4meta* builder, NCD4node* enumtype, const char* nameorval, union ATOMICS* converter) +{ + int i,ret=NC_NOERR; + union ATOMICS number; + NCD4node* match = NULL; + + /* First, see if the value is an econst name */ + for(i=0;ien.econsts);i++) { + NCD4node* ec = (NCD4node*)nclistget(enumtype->en.econsts,i); + if(strcmp(ec->name,nameorval)==0) {match = ec; break;} + } + /* If no match, try to invert as a number to see if there is a matching econst */ + if(!match) { + /* get the incoming value as number */ + if((ret=convertString(&number,enumtype->basetype,nameorval))) + goto done; + for(i=0;ien.econsts);i++) { + NCD4node* ec = (NCD4node*)nclistget(enumtype->en.econsts,i); + if(ec->en.ecvalue.u64[0] == number.u64[0]) {match = ec; break;} + } + } + if(match == NULL) + FAIL(NC_EINVAL,"No enum const matching value: %s",nameorval); + if(converter) *converter = match->en.ecvalue; +done: + return THROW(ret); +} + +static char* +backslashEscape(const char* s) +{ + const char* p; + char* q; + size_t len; + char* escaped = NULL; + + len = strlen(s); + escaped = (char*)d4alloc(1+(2*len)); /* max is everychar is escaped */ + if(escaped == NULL) return NULL; + for(p=s,q=escaped;*p;p++) { + char c = *p; + switch (c) { + case '\\': + case '/': + case '.': + case '@': + *q++ = '\\'; *q++ = '\\'; + break; + default: *q++ = c; break; + } + } + *q = '\0'; + return escaped; +} + +/* Tag each compound type as fixed size or not + Assumes: + - atomic types defined and marked + - topo sorted +*/ + +static int +markfixedsize(NCD4meta* meta) +{ + int i,j; + for(i=0;iallnodes);i++) { + int fixed = 1; + NCD4node* n = (NCD4node*)nclistget(meta->allnodes,i); + if(n->sort != NCD4_TYPE) continue; + switch (n->subsort) { + case NC_STRUCT: + for(j=0;jvars);j++) { + NCD4node* field = (NCD4node*)nclistget(n->vars,j); + if(!field->basetype->meta.isfixedsize) { + fixed = 0; + break; + } + } + n->meta.isfixedsize = fixed; + break; + case NC_ENUM: + n->meta.isfixedsize = 1; + break; + default: /* leave as is */ + break; + } + } + return NC_NOERR; +} + +/* Compute compound type field offsets and compound type total size */ +static void +computeOffsets(NCD4meta* builder, NCD4node* cmpd) +{ + int i; + d4size_t offset = 0; + d4size_t largestalign = 1; + d4size_t size = 0; + + for(i=0;ivars);i++) { + NCD4node* field = (NCD4node*)nclistget(cmpd->vars,i); + NCD4node* ftype = field->basetype; + size_t alignment; + if(ftype->subsort == NC_STRUCT) { + /* Recurse */ + computeOffsets(builder, ftype); + assert(ftype->meta.memsize > 0); + size=ftype->meta.memsize; + alignment = ftype->meta.alignment; + } else {/* Size and alignment will already have been set */ + assert(ftype->meta.memsize > 0); + alignment = ftype->meta.alignment; + size=ftype->meta.memsize; + } +#if 0 + } else if(ftype->subsort == NC_SEQ) { /* VLEN */ + alignment = nctypealignment(NC_VLEN); + assert(ftype->meta.memsize > 0); size=ftype->meta.memsize; + //size = NCD4_computeTypeSize(builder,ftype); + } else if(ftype->subsort == NC_OPAQUE) { + /* Either fixed or a vlen */ + assert(ftype->meta.memsize > 0); size=ftype->meta.memsize; + if(ftype->opaque.size == 0) {/* treat like vlen */ + alignment = nctypealignment(NC_VLEN); + //size = NCD4_computeTypeSize(builder,ftype); + } else { /* fixed size */ + alignment = nctypealignment(NC_OPAQUE); + //size = NCD4_computeTypeSize(builder,ftype); + } + } else if(ftype->subsort == NC_ENUM) { + NCD4node* truetype = ftype->basetype; + alignment = nctypealignment(truetype->meta.id); + assert(ftype->meta.memsize > 0); size=ftype->meta.memsize; + //size = NCD4_computeTypeSize(builder,truetype); + } else { /* Basically a primitive */ + alignment = nctypealignment(ftype->meta.id); + assert(ftype->meta.memsize > 0); size=ftype->meta.memsize; + //size = NCD4_computeTypeSize(builder,ftype); + } +#endif + if(alignment > largestalign) + largestalign = alignment; + /* Add possible padding wrt to previous field */ + offset += getpadding(offset,alignment); + field->meta.offset = offset; + assert(ftype->meta.memsize > 0); + size = ftype->meta.memsize; + //field->meta.memsize = size; + /* Now ultiply by the field dimproduct*/ + if(nclistlength(field->dims) > 0) { + d4size_t count = NCD4_dimproduct(field); + size = (size * count); + } + offset += size; + } + /* Compute compound-level info */ + /* A struct alignment is the same as largestalign */ + cmpd->meta.alignment = largestalign; + offset += (offset % largestalign); /* round up compound size */ + cmpd->meta.memsize = offset; +} + +/* +Compute the in-memory size of an instance of a type. +Note that nc_inq_type is used, so that C struct field +alignment is taken into account for compound types. +The variables total size will be this * dimproduct. +*/ +size_t +NCD4_computeTypeSize(NCD4meta* builder, NCD4node* type) +{ + size_t size = 0; + + switch (type->sort) { + case NCD4_TYPE: + switch (type->subsort) { + default: size = NCD4_typesize(type->meta.id); break; + case NC_OPAQUE: + size = (type->opaque.size == 0 ? sizeof(nc_vlen_t) : type->opaque.size); + break; + case NC_ENUM: + size = NCD4_computeTypeSize(builder,type->basetype); + break; + case NC_SEQ: + size = sizeof(nc_vlen_t); + break; + case NC_STRUCT: { + int ret; + NCD4node* group = NCD4_groupFor(type); + if((ret = nc_inq_type(group->meta.id,type->meta.id,/*name*/NULL,&size))) + return 0; + }; break; + } + break; + default: break; /* ignore */ + } + type->meta.memsize = size; + return size; +} + +static d4size_t +getpadding(d4size_t offset, size_t alignment) +{ + d4size_t rem = (alignment==0?0:(offset % alignment)); + d4size_t pad = (rem==0?0:(alignment - rem)); + return pad; +} + +/* Compute the dap data size for each type; note that this + is unlikely to be the same as the meta.memsize unless + the type is atomic and is <= NC_UINT64. +*/ + +static int +markdapsize(NCD4meta* meta) +{ + int i,j; + for(i=0;iallnodes);i++) { + NCD4node* type = (NCD4node*)nclistget(meta->allnodes,i); + size_t totalsize; + if(type->sort != NCD4_TYPE) continue; + switch (type->subsort) { + case NC_STRUCT: + totalsize = 0; + for(j=0;jvars);j++) { + NCD4node* field = (NCD4node*)nclistget(type->vars,j); + size_t size = field->basetype->meta.dapsize; + if(size == 0) { + totalsize = 0; + break; + } else + totalsize += size; + } + type->meta.dapsize = totalsize; + break; + case NC_SEQ: + type->meta.dapsize = 0; /* has no fixed size */ + break; + case NC_OPAQUE: + type->meta.dapsize = type->opaque.size; + break; + case NC_ENUM: + type->meta.dapsize = type->basetype->meta.dapsize; + break; + case NC_STRING: + type->meta.dapsize = 0; /* has no fixed size */ + break; + default: + assert(type->subsort <= NC_UINT64); + /* Already assigned */ + break; + } + } + return NC_NOERR; +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.c new file mode 100644 index 00000000000..419bb41f58c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.c @@ -0,0 +1,170 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "config.h" +#include +#include +#include "netcdf.h" +#include "d4util.h" +#include "d4odom.h" + +/**********************************************/ +/* Define methods for a dimension dapodometer*/ + +/* Build an odometer covering slices startslice upto, + but not including, stopslice +*/ + +/* +Future optimization. It is sometimes the case that +some suffix of the index set cover a contiguous chunk +of the index space. This happens when the index positions +starting at p upto rank have a start of zero, a count +the same as the max index size, and a stride of one. +Then we can effectively tread indices 0 thru p-1 as +a short odometer that steps through the chunks. +In practice, it is usually only ncdump that does this. +A simpler optimization that is to see if the (start,count) +covers the whole index space and has stride one. +We can detect and use this optimization elsewhere to +circumvent use of the odometer altogether. +See d4odometer#NCD4_odomWhole(). +*/ + +D4odometer* +d4odom_new(size_t rank, + const size_t* start, const size_t* count, + const ptrdiff_t* stride, const size_t* size) +{ + int i; + D4odometer* odom = (D4odometer*)calloc(1,sizeof(D4odometer)); + if(odom == NULL) + return NULL; + odom->rank = rank; + assert(odom->rank <= NC_MAX_VAR_DIMS); + for(i=0;irank;i++) { + size_t istart,icount,istop,ideclsize; + ptrdiff_t istride; + istart = (start != NULL ? start[i] : 0); + icount = (count != NULL ? count[i] : (size != NULL ? size[i] : 1)); + istride = (size_t)(stride != NULL ? stride[i] : 1); + istop = istart + icount*istride; + ideclsize = (size != NULL ? size[i]: (istop - istart)); + odom->start[i] = istart; + odom->stop[i] = istop; + odom->stride[i] = istride; + odom->declsize[i] = ideclsize; + odom->index[i] = odom->start[i]; + } + return odom; +} + +void +d4odom_free(D4odometer* odom) +{ + if(odom) free(odom); +} + +#if 0 +char* +d4odom_print(D4odometer* odom) +{ + int i; + static char line[1024]; + char tmp[64]; + line[0] = '\0'; + if(odom->rank == 0) { + strlcat(line,"[]",sizeof(line)); + } else for(i=0;irank;i++) { + sprintf(tmp,"[%lu/%lu:%lu:%lu]", + (size_t)odom->index[i], + (size_t)odom->start[i], + (size_t)odom->stride[i], + (size_t)odom->length[i]); + strlcat(line,tmp,sizeof(line)); + } + return line; +} +#endif + +int +d4odom_more(D4odometer* odom) +{ + return (odom->index[0] < odom->stop[0]); +} + +d4size_t +d4odom_next(D4odometer* odom) +{ + int i; /* do not make unsigned */ + d4size_t count; + if(odom->rank == 0) { /*scalar*/ + odom->index[0]++; + return 0; + } + count = d4odom_offset(odom); /* convenience */ + for(i=odom->rank-1;i>=0;i--) { + odom->index[i] += odom->stride[i]; + if(odom->index[i] < odom->stop[i]) break; + if(i == 0) break; /* leave the 0th entry if it overflows*/ + odom->index[i] = odom->start[i]; /* reset this position*/ + } + return count; +} + +/* Convert current d4odometer settings to a single integer offset*/ +d4size_t +d4odom_offset(D4odometer* odom) +{ + int i; + d4size_t offset = 0; + for(i=0;irank;i++) { + offset *= odom->declsize[i]; + offset += odom->index[i]; + } + return offset; +} + +/**************************************************/ +/* +Given a d4odometer, compute the total +number of elements in its space. +*/ + +d4size_t +d4odom_nelements(D4odometer* odom) +{ + size_t i; + d4size_t count = 1; + for(i=0;irank;i++) { + count *= odom->declsize[i]; + } + return count; +} + +int +d4odom_isWhole(D4odometer* odom) +{ + int i; + for(i=0;irank;i++) { + if(odom->start[i] != 0 + || odom->stride[i] != 1 + || odom->stop[i] != odom->declsize[i]) + return 0; + } + return 1; +} + +/* Scalar Odometer support */ +D4odometer* +d4scalarodom_new(void) +{ + D4odometer* odom = (D4odometer*)calloc(1,sizeof(D4odometer)); + odom->rank = 0; + /* Fake things to execute exactly once */ + odom->index[0] = 0; + odom->stop[0] = 1; + return odom; +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.h new file mode 100644 index 00000000000..385ebc90a48 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4odom.h @@ -0,0 +1,38 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4ODOM_H +#define D4ODOM_H 1 + +typedef struct D4odometer { + int rank; + size_t index[NC_MAX_VAR_DIMS]; + size_t start[NC_MAX_VAR_DIMS]; +#if 0 + size_t count[NC_MAX_VAR_DIMS]; +#endif + size_t stride[NC_MAX_VAR_DIMS]; + size_t stop[NC_MAX_VAR_DIMS]; + size_t declsize[NC_MAX_VAR_DIMS]; +} D4odometer; + +extern D4odometer* d4scalarodom_new(void); + +extern D4odometer* d4odom_new(size_t rank, + const size_t* start, const size_t* count, + const ptrdiff_t* stride, const size_t* size); + +extern void d4odom_free(D4odometer*); + +extern int d4odom_more(D4odometer* odom); +extern d4size_t d4odom_next(D4odometer* odom); + +extern d4size_t d4odom_offset(D4odometer* odom); + +extern d4size_t d4odom_nelements(D4odometer* odom); + +extern int d4odom_isWhole(D4odometer* odom); + +#endif /*D4ODOM_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4parser.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4parser.c new file mode 100644 index 00000000000..7c202f8732c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4parser.c @@ -0,0 +1,1536 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#include +#include +#include "ezxml.h" + +/** + * Implement the Dap4 Parser Using a DOM Parser + * + * This code creates in internal representation of the netcdf-4 metadata + * to avoid having to make so many calls into the netcdf library. + */ + +/***************************************************/ + +/* +Map an xml node name to an interpretation. +We use NCD4_NULL when we directly interpret +the tag and do not need to search for it. +E.g Dataset, Dim, econst, etc. +If the sort is NCD4_NULL, then that means it is +irrelevant because that keyword will never be +searched for in this table. +*/ +static const struct KEYWORDINFO { + char* tag; /* The xml tag e.g. */ + NCD4sort sort; /* What kind of node are we building */ + nc_type subsort; /* discriminator */ + char* aliasfor; /* Some names are aliases for others */ +} keywordmap[] = { +{"Attribute", NCD4_ATTR,NC_NAT,NULL}, +{"Byte", NCD4_VAR,NC_BYTE,"Int8"}, +{"Char", NCD4_VAR,NC_CHAR,NULL}, +{"Dataset", NCD4_NULL,NC_NAT,NULL}, +{"Dim", NCD4_NULL,NC_NAT,NULL}, +{"Dimension", NCD4_DIM,NC_NAT,NULL}, +{"Enum", NCD4_VAR,NC_ENUM,NULL}, +{"Enumconst", NCD4_NULL,NC_NAT,NULL}, +{"Enumeration", NCD4_TYPE,NC_ENUM,NULL}, +{"Float32", NCD4_VAR,NC_FLOAT,NULL}, +{"Float64", NCD4_VAR,NC_DOUBLE,NULL}, +{"Group", NCD4_GROUP,NC_NAT,NULL}, +{"Int16", NCD4_VAR,NC_SHORT,NULL}, +{"Int32", NCD4_VAR,NC_INT,NULL}, +{"Int64", NCD4_VAR,NC_INT64,NULL}, +{"Int8", NCD4_VAR,NC_BYTE,NULL}, +{"Map", NCD4_NULL,NC_NAT,NULL}, +{"Opaque", NCD4_VAR,NC_OPAQUE,NULL}, +{"OtherXML", NCD4_XML,NC_NAT,NULL}, +{"Sequence", NCD4_VAR,NC_SEQ,NULL}, +{"String", NCD4_VAR,NC_STRING,NULL}, +{"Structure", NCD4_VAR,NC_STRUCT,NULL}, +{"UByte", NCD4_VAR,NC_UBYTE,"UInt8"}, +{"UInt16", NCD4_VAR,NC_USHORT,NULL}, +{"UInt32", NCD4_VAR,NC_UINT,NULL}, +{"UInt64", NCD4_VAR,NC_UINT64,NULL}, +{"UInt8", NCD4_VAR,NC_UBYTE,NULL}, +{"URL", NCD4_VAR,NC_STRING,"String"}, +}; +typedef struct KEYWORDINFO KEYWORDINFO; + +static const struct ATOMICTYPEINFO { + char* name; nc_type type; size_t size; +} atomictypeinfo[] = { +/* Keep in sorted order for binary search */ +{"Byte",NC_BYTE,sizeof(char)}, +{"Char",NC_CHAR,sizeof(char)}, +{"Float32",NC_FLOAT,sizeof(float)}, +{"Float64",NC_DOUBLE,sizeof(double)}, +{"Int16",NC_SHORT,sizeof(short)}, +{"Int32",NC_INT,sizeof(int)}, +{"Int64",NC_INT64,sizeof(long long)}, +{"Int8",NC_BYTE,sizeof(char)}, +{"String",NC_STRING,sizeof(char*)}, +{"UByte",NC_UBYTE,sizeof(unsigned char)}, +{"UInt16",NC_USHORT,sizeof(unsigned short)}, +{"UInt32",NC_UINT,sizeof(unsigned int)}, +{"UInt64",NC_UINT64,sizeof(unsigned long long)}, +{"UInt8",NC_UBYTE,sizeof(unsigned char)}, +{NULL,NC_NAT,0} +}; + +/***************************************************/ + +#ifdef D4DEBUG +static void setname(NCD4node* node, const char* name) +{ + nullfree(node->name); + (node)->name = strdup(name); \ + fprintf(stderr,"setname: node=%lx name=%s\n",(unsigned long)(node),(node)->name); \ +} +#define SETNAME(node,src) setname((node),src) +#else +#define SETNAME(node,src) do {nullfree((node)->name); (node)->name = strdup(src);} while(0); +#endif + +/***************************************************/ + +extern const char** ezxml_all_attr(ezxml_t xml, int* countp); + +/* Forwards */ + +static int addOrigType(NCD4parser*, NCD4node* src, NCD4node* dst, const char* tag); +static int defineAtomicTypes(NCD4parser*); +static void classify(NCD4node* container, NCD4node* node); +static int convertString(union ATOMICS*, NCD4node* type, const char* s); +static int downConvert(union ATOMICS*, NCD4node* type); +static int fillgroup(NCD4parser*, NCD4node* group, ezxml_t xml); +static NCD4node* getOpaque(NCD4parser*, ezxml_t varxml, NCD4node* group); +static int getValueStrings(NCD4parser*, NCD4node*, ezxml_t xattr, NClist*); +static int isReserved(const char* name); +static const KEYWORDINFO* keyword(const char* name); +static NCD4node* lookupAtomictype(NCD4parser*, const char* name); +static NCD4node* lookFor(NClist* elems, const char* name, NCD4sort sort); +static NCD4node* lookupFQN(NCD4parser*, const char* sfqn, NCD4sort); +static int lookupFQNList(NCD4parser*, NClist* fqn, NCD4sort sort, NCD4node** result); +static NCD4node* makeAnonDim(NCD4parser*, const char* sizestr); +static int makeNode(NCD4parser*, NCD4node* parent, ezxml_t, NCD4sort, nc_type, NCD4node**); +static int parseAtomicVar(NCD4parser*, NCD4node* container, ezxml_t xml, NCD4node**); +static int parseAttributes(NCD4parser*, NCD4node* container, ezxml_t xml); +static int parseDimensions(NCD4parser*, NCD4node* group, ezxml_t xml); +static int parseDimRefs(NCD4parser*, NCD4node* var, ezxml_t xml); +static int parseEconsts(NCD4parser*, NCD4node* en, ezxml_t xml); +static int parseEnumerations(NCD4parser*, NCD4node* group, ezxml_t dom); +static int parseFields(NCD4parser*, NCD4node* container, ezxml_t xml); +static int parseError(NCD4parser*, ezxml_t errxml); +static int parseGroups(NCD4parser*, NCD4node* group, ezxml_t dom); +static int parseMaps(NCD4parser*, NCD4node* var, ezxml_t xml); +static int parseMetaData(NCD4parser*, NCD4node* node, ezxml_t xml); +static int parseStructure(NCD4parser*, NCD4node* container, ezxml_t dom, NCD4node**); +static int parseSequence(NCD4parser*, NCD4node* container, ezxml_t dom,NCD4node**); +static int parseLL(const char* text, long long*); +static int parseULL(const char* text, unsigned long long*); +static int parseVariables(NCD4parser*, NCD4node* group, ezxml_t xml); +static int parseVariable(NCD4parser*, NCD4node* group, ezxml_t xml, NCD4node**); +static void reclaimParser(NCD4parser* parser); +static void record(NCD4parser*, NCD4node* node); +static int splitOrigType(NCD4parser*, const char* fqn, NCD4node* var); +static void track(NCD4parser*, NCD4node* node); +static int traverse(NCD4parser*, ezxml_t dom); +#ifndef FIXEDOPAQUE +static int defineBytestringType(NCD4parser*); +#endif + +/***************************************************/ +/* API */ + +int +NCD4_parse(NCD4meta* metadata) +{ + int ret = NC_NOERR; + NCD4parser* parser = NULL; + int ilen; + ezxml_t dom = NULL; + + /* Create and fill in the parser state */ + parser = (NCD4parser*)calloc(1,sizeof(NCD4parser)); + if(parser == NULL) {ret=NC_ENOMEM; goto done;} + parser->metadata = metadata; + ilen = strlen(parser->metadata->serial.dmr); + dom = ezxml_parse_str(parser->metadata->serial.dmr,ilen); + if(dom == NULL) {ret=NC_ENOMEM; goto done;} + parser->types = nclistnew(); + parser->dims = nclistnew(); + parser->vars = nclistnew(); +#ifdef D4DEBUG + parser->debuglevel = 1; +#endif + + /*Walk the DOM tree */ + ret = traverse(parser,dom); + +done: + if(dom != NULL) + ezxml_free(dom); + reclaimParser(parser); + return THROW(ret); +} + +static void +reclaimParser(NCD4parser* parser) +{ + int i,len; + if(parser == NULL) return; + nclistfree(parser->types); + nclistfree(parser->dims); + nclistfree(parser->vars); + /* Reclaim unused atomic type nodes */ + len = nclistlength(parser->atomictypes); + for(i=0;iused[i]) + reclaimNode((NCD4node*)nclistget(parser->atomictypes,i)); + } + nclistfree(parser->atomictypes); + nullfree(parser->used); + free (parser); +} + +/**************************************************/ + +/* Recursively walk the DOM tree to create the metadata */ +static int +traverse(NCD4parser* parser, ezxml_t dom) +{ + int ret = NC_NOERR; + + /* See if we have an or */ + if(strcmp(dom->name,"Error")==0) { + ret=parseError(parser,dom); + ret=NC_EDMR; + goto done; + } else if(strcmp(dom->name,"Dataset")==0) { + const char* xattr = NULL; + if((ret=makeNode(parser,NULL,NULL,NCD4_GROUP,NC_NULL,&parser->metadata->root))) goto done; + parser->metadata->root->group.isdataset = 1; + parser->metadata->root->meta.id = parser->metadata->ncid; + parser->metadata->groupbyid = nclistnew(); + SETNAME(parser->metadata->root,"/"); + xattr = ezxml_attr(dom,"name"); + if(xattr != NULL) parser->metadata->root->group.datasetname = strdup(xattr); + xattr = ezxml_attr(dom,"dapVersion"); + if(xattr != NULL) parser->metadata->root->group.dapversion = strdup(xattr); + xattr = ezxml_attr(dom,"dmrVersion"); + if(xattr != NULL) parser->metadata->root->group.dmrversion = strdup(xattr); + /* fill in the atomic types */ + if((ret=defineAtomicTypes(parser))) goto done; + /* Recursively walk the tree */ + if((ret = fillgroup(parser,parser->metadata->root,dom))) goto done; + } else + FAIL(NC_EINVAL,"Unexpected dom root name: %s",dom->name); +done: + return THROW(ret); +} + +static int +fillgroup(NCD4parser* parser, NCD4node* group, ezxml_t xml) +{ + int ret = NC_NOERR; + + /* Extract Dimensions */ + if((ret = parseDimensions(parser,group,xml))) goto done; + /* Extract Enum types */ + if((ret = parseEnumerations(parser,group,xml))) goto done; + /* Extract variables */ + if((ret = parseVariables(parser,group,xml))) goto done; + /* Extract subgroups*/ + if((ret = parseGroups(parser,group,xml))) goto done; + /* Parse group level attributes */ + if((ret = parseAttributes(parser,group,xml))) goto done; +done: + return THROW(ret); +} + +static int +parseDimensions(NCD4parser* parser, NCD4node* group, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + for(x=ezxml_child(xml, "Dimension");x != NULL;x = ezxml_next(x)) { + NCD4node* dimnode = NULL; + unsigned long long size; + const char* sizestr; + const char* unlimstr; + sizestr = ezxml_attr(x,"size"); + if(sizestr == NULL) + FAIL(NC_EDIMSIZE,"Dimension has no size"); + unlimstr = ezxml_attr(x,UCARTAGUNLIM); + if((ret = parseULL(sizestr,&size))) goto done; + if((ret=makeNode(parser,group,x,NCD4_DIM,NC_NULL,&dimnode))) goto done; + dimnode->dim.size = (long long)size; + dimnode->dim.isunlimited = (unlimstr != NULL); + /* Process attributes */ + if((ret = parseAttributes(parser,dimnode,x))) goto done; + classify(group,dimnode); + } +done: + return THROW(ret); +} + +static int +parseEnumerations(NCD4parser* parser, NCD4node* group, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + + for(x=ezxml_child(xml, "Enumeration");x != NULL;x = ezxml_next(x)) { + NCD4node* node = NULL; + NCD4node* basetype = NULL; + const char* fqn = ezxml_attr(x,"basetype"); + basetype = lookupFQN(parser,fqn,NCD4_TYPE); + if(basetype == NULL) { + FAIL(NC_EBADTYPE,"Enumeration has unknown type: ",fqn); + } + if((ret=makeNode(parser,group,x,NCD4_TYPE,NC_ENUM,&node))) goto done; + node->basetype = basetype; + if((ret=parseEconsts(parser,node,x))) goto done; + if(nclistlength(node->en.econsts) == 0) + FAIL(NC_EINVAL,"Enumeration has no values"); + classify(group,node); + /* Finally, see if this type has UCARTAGORIGTYPE xml attribute */ + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + const char* typetag = ezxml_attr(x,UCARTAGORIGTYPE); + if(typetag != NULL) { + } + } + } +done: + return THROW(ret); +} + +static int +parseEconsts(NCD4parser* parser, NCD4node* en, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + NClist* econsts = nclistnew(); + + for(x=ezxml_child(xml, "EnumConst");x != NULL;x = ezxml_next(x)) { + NCD4node* ec = NULL; + const char* name; + const char* svalue; + name = ezxml_attr(x,"name"); + if(name == NULL) FAIL(NC_EBADNAME,"Enum const with no name"); + if((ret=makeNode(parser,en,x,NCD4_ECONST,NC_NULL,&ec))) goto done ; + svalue = ezxml_attr(x,"value"); + if(svalue == NULL) + FAIL(NC_EINVAL,"Enumeration Constant has no value"); + if((ret=convertString(&ec->en.ecvalue,en->basetype,svalue))) + FAIL(NC_EINVAL,"Non-numeric Enumeration Constant: %s->%s",ec->name,svalue); + PUSH(econsts,ec); + } + en->en.econsts = econsts; +done: + return THROW(ret); +} + +static int +parseVariables(NCD4parser* parser, NCD4node* group, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + for(x=xml->child;x != NULL;x=x->ordered) { + NCD4node* node = NULL; + const KEYWORDINFO* info = keyword(x->name); + if(info == NULL) + FAIL(NC_ETRANSLATION,"Unexpected node type: %s",x->name); + /* Check if we need to process this node */ + if(!ISVAR(info->sort)) continue; /* Handle elsewhere */ + node = NULL; + ret = parseVariable(parser,group,x,&node); + if(ret != NC_NOERR || node == NULL) break; + } +done: + return THROW(ret); +} + +static int +parseVariable(NCD4parser* parser, NCD4node* container, ezxml_t xml, NCD4node** nodep) +{ + int ret = NC_NOERR; + NCD4node* node = NULL; + const KEYWORDINFO* info = keyword(xml->name); + + switch (info->subsort) { + case NC_STRUCT: + ret = parseStructure(parser,container,xml,&node); + break; + case NC_SEQ: + ret = parseSequence(parser,container,xml,&node); + break; + default: + ret = parseAtomicVar(parser,container,xml,&node); + } + *nodep = node; + + return THROW(ret); +} + +static int +parseMetaData(NCD4parser* parser, NCD4node* container, ezxml_t xml) +{ + int ret = NC_NOERR; + /* Process dimrefs */ + if((ret=parseDimRefs(parser,container,xml))) goto done; + /* Process attributes */ + if((ret = parseAttributes(parser,container,xml))) goto done; + /* Process maps */ + if((ret = parseMaps(parser,container,xml))) goto done; +done: + return THROW(ret); +} + +static int +parseStructure(NCD4parser* parser, NCD4node* container, ezxml_t xml, NCD4node** nodep) +{ + int ret = NC_NOERR; + NCD4node* var = NULL; + NCD4node* type = NULL; + NCD4node* group = NULL; + char* fqnname = NULL; + + group = NCD4_groupFor(container); /* default: put type in the same group as var */ + + /* Make the structure as a variable with same name as structure; will be fixed later */ + if((ret=makeNode(parser,container,xml,NCD4_VAR,NC_STRUCT,&var))) goto done; + classify(container,var); + + /* Make the structure as a type with (for now) partial fqn name from the variable */ + if((ret=makeNode(parser,group,xml,NCD4_TYPE,NC_STRUCT,&type))) goto done; + classify(group,type); + /* Set the basetype */ + var->basetype = type; + /* Now change the struct typename */ + fqnname = NCD4_makeName(var,"_"); + if(fqnname == NULL) + FAIL(NC_ENOMEM,"Out of memory"); + SETNAME(type,fqnname); + + /* Parse Fields into the type */ + if((ret = parseFields(parser,type,xml))) goto done; + + /* Parse attributes, dims, and maps into the var */ + if((ret = parseMetaData(parser,var,xml))) goto done; + + record(parser,var); + + /* See if this var has UCARTAGORIGTYPE attribute */ + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + const char* typetag = ezxml_attr(xml,UCARTAGORIGTYPE); + if(typetag != NULL) { + /* yes, place it on the type */ + if((ret=addOrigType(parser,var,type,typetag))) goto done; + } + } + + if(nodep) *nodep = var; + +done: + nullfree(fqnname); + return THROW(ret); +} + +static int +parseFields(NCD4parser* parser, NCD4node* container, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + for(x=xml->child;x != NULL;x=x->ordered) { + NCD4node* node = NULL; + const KEYWORDINFO* info = keyword(x->name); + if(!ISVAR(info->sort)) continue; /* not a field */ + ret = parseVariable(parser,container,x,&node); + if(ret) goto done; + } +done: + return THROW(ret); +} + +/* +Specialized version of parseFields that is used +to attach a singleton field to a vlentype +*/ +static int +parseVlenField(NCD4parser* parser, NCD4node* container, ezxml_t xml, NCD4node** fieldp) +{ + int ret = NC_NOERR; + NCD4node* field = NULL; + ezxml_t x; + for(x=xml->child;x != NULL;x=x->ordered) { + const KEYWORDINFO* info = keyword(x->name); + if(!ISVAR(info->sort)) continue; /* not a field */ + if(field != NULL) + {ret = NC_EBADTYPE; goto done;} + if((ret = parseVariable(parser,container,x,&field))) + goto done; + } + if(fieldp) *fieldp = field; +done: + return THROW(ret); +} + +static int +parseSequence(NCD4parser* parser, NCD4node* container, ezxml_t xml, NCD4node** nodep) +{ + int ret = NC_NOERR; + NCD4node* var = NULL; + NCD4node* structtype = NULL; + NCD4node* vlentype = NULL; + NCD4node* group = NULL; + char name[NC_MAX_NAME]; + char* fqnname = NULL; + int usevlen = 0; + + group = NCD4_groupFor(container); + + /* Convert a sequence variable into two or three things: + 1. a compound type representing the fields of the sequence. + 2. a vlen type whose basetype is #1 + 3. a variable whose basetype is #2. + If we can infer that the sequence was riginally produced + from a netcdf-4 vlen, then we can avoid createing #1. + Naming is as follows. Assume the var name is V + and the NCD4_makeName of the var is V1..._Vn. + 1. var name is V. + 2. vlen type is V1..._VN_t + 3. compound type (if any) is V1..._VN_cmpd (Note, d4meta will append _t to this) + */ + + /* Determine if we need to build a structure type or can go straight to a vlen + Test: UCARTAGVLEN xml attribute is set + */ + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + const char* vlentag = ezxml_attr(xml,UCARTAGVLEN); + if(vlentag != NULL) + usevlen = 1; + } else + usevlen = 0; + + /* make secondary names from the var fqn name */ + if(usevlen) { + /* Parse the singleton field and then use it to fix up the var */ + if((ret=parseVlenField(parser,container,xml,&var))) + goto done; + /* compute a partial fqn */ + fqnname = NCD4_makeName(var,"_"); + if(fqnname == NULL) + {ret = NC_ENOMEM; goto done;} + /* Now, create the vlen type using the field's basetype */ + if((ret=makeNode(parser,group,xml,NCD4_TYPE,NC_SEQ,&vlentype))) goto done; + classify(group,vlentype); + vlentype->basetype = var->basetype; + /* Use name _t */ + strncpy(name,fqnname,sizeof(name)); + strncat(name,"_t", sizeof(name) - strlen(name) - 1); + SETNAME(vlentype,name); + /* Set the basetype */ + var->basetype = vlentype; + } else { + /* Start by creating the var node; will be fixed up later */ + if((ret=makeNode(parser,container,xml,NCD4_VAR,NC_SEQ,&var))) goto done; + classify(container,var); + fqnname = NCD4_makeName(var,"_"); + if(fqnname == NULL) + {ret = NC_ENOMEM; goto done;} + if((ret=makeNode(parser,group,xml,NCD4_TYPE,NC_STRUCT,&structtype))) goto done; + classify(group,structtype); + /* Use name _base */ + strncpy(name,fqnname,sizeof(name)); + strncat(name,"_base", sizeof(name) - strlen(name) - 1); + SETNAME(structtype,name); + /* Parse Fields into type */ + if((ret = parseFields(parser,structtype,xml))) goto done; + /* Create a seq type whose basetype is the compound type */ + if((ret=makeNode(parser,group,xml,NCD4_TYPE,NC_SEQ,&vlentype))) goto done; + classify(group,vlentype); + /* Use name _t */ + strncpy(name,fqnname,sizeof(name)); + strncat(name,"_t", sizeof(name) - strlen(name) - 1); + SETNAME(vlentype,name); + vlentype->basetype = structtype; + /* Set the basetype */ + var->basetype = vlentype; + } + + /* Parse attributes, dims, and maps into var*/ + if((ret = parseMetaData(parser,var,xml))) goto done; + + record(parser,var); + + /* See if this var has UCARTAGORIGTYPE attribute */ + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + const char* typetag = ezxml_attr(xml,UCARTAGORIGTYPE); + if(typetag != NULL) { + /* yes, place it on the type */ + if((ret=addOrigType(parser,var,vlentype,typetag))) goto done; + } + } + if(nodep) *nodep = var; + +done: + if(fqnname) free(fqnname); + return THROW(ret); +} + +static int +parseGroups(NCD4parser* parser, NCD4node* parent, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + for(x=ezxml_child(xml, "Group");x != NULL;x = ezxml_next(x)) { + NCD4node* group = NULL; + const char* name = ezxml_attr(x,"name"); + if(name == NULL) FAIL(NC_EBADNAME,"Group has no name"); + if((ret=makeNode(parser,parent,x,NCD4_GROUP,NC_NULL,&group))) goto done; + group->group.varbyid = nclistnew(); + if((ret = fillgroup(parser,group,x))) goto done; + /* Parse group attributes */ + if((ret = parseAttributes(parser,group,x))) goto done; + PUSH(parent->groups,group); + } +done: + return THROW(ret); +} + +static int +parseAtomicVar(NCD4parser* parser, NCD4node* container, ezxml_t xml, NCD4node** nodep) +{ + int ret = NC_NOERR; + NCD4node* node = NULL; + NCD4node* base = NULL; + const char* typename; + const KEYWORDINFO* info; + NCD4node* group; + + /* Check for aliases */ + for(typename=xml->name;;) { + info = keyword(typename); + if(info->aliasfor == NULL) break; + typename = info->aliasfor; + } + group = NCD4_groupFor(container); + /* Locate its basetype; handle opaque and enum separately */ + if(info->subsort == NC_ENUM) { + const char* enumfqn = ezxml_attr(xml,"enum"); + if(enumfqn == NULL) + base = NULL; + else + base = lookupFQN(parser,enumfqn,NCD4_TYPE); + } else if(info->subsort == NC_OPAQUE) { + /* See if the xml references an opaque type name */ + base = getOpaque(parser,xml,group); + } else { + base = lookupFQN(parser,info->tag,NCD4_TYPE); + } + if(base == NULL || !ISTYPE(base->sort)) { + FAIL(NC_EBADTYPE,"Unexpected variable type: %s",info->tag); + } + if((ret=makeNode(parser,container,xml,NCD4_VAR,base->subsort,&node))) goto done; + classify(container,node); + node->basetype = base; + /* Parse attributes, dims, and maps */ + if((ret = parseMetaData(parser,node,xml))) goto done; + /* See if this var has UCARTAGORIGTYPE attribute */ + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + const char* typetag = ezxml_attr(xml,UCARTAGORIGTYPE); + if(typetag != NULL) { + /* yes, place it on the type */ + if((ret=addOrigType(parser,node,node,typetag))) goto done; + } + } + if(nodep) *nodep = node; +done: + return THROW(ret); +} + +static int +parseDimRefs(NCD4parser* parser, NCD4node* var, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + for(x=ezxml_child(xml, "Dim");x!= NULL;x=ezxml_next(x)) { + NCD4node* dim = NULL; + const char* fqn; + + fqn = ezxml_attr(x,"name"); + if(fqn != NULL) { + dim = lookupFQN(parser,fqn,NCD4_DIM); + if(dim == NULL) { + FAIL(NC_EBADDIM,"Cannot locate dim with name: %s",fqn); + } + } else { + const char* sizestr = ezxml_attr(x,"size"); + if(sizestr == NULL) { + FAIL(NC_EBADDIM,"Dimension reference has no name and no size"); + } + /* Make or reuse anonymous dimension in root group */ + dim = makeAnonDim(parser,sizestr); + if(dim == NULL) + FAIL(NC_EBADDIM,"Cannot create anonymous dimension for size: %s",sizestr); + } + PUSH(var->dims,dim); + } +done: + return THROW(ret); +} + +static int +parseMaps(NCD4parser* parser, NCD4node* var, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + + for(x=ezxml_child(xml, "Map");x!= NULL;x=ezxml_next(x)) { + NCD4node* mapref = NULL; + const char* fqn; + fqn = ezxml_attr(x,"name"); + if(fqn == NULL) + FAIL(NC_ENOTVAR," has no name attribute"); + mapref = lookupFQN(parser,fqn,NCD4_VAR); + if(mapref == NULL) + FAIL(NC_ENOTVAR," name does not refer to a variable: %s",fqn); + PUSH(var->maps,mapref); + } +done: + return THROW(ret); +} + +static int +parseAttributes(NCD4parser* parser, NCD4node* container, ezxml_t xml) +{ + int ret = NC_NOERR; + ezxml_t x; + NClist* values = NULL; + + /* First, transfer any reserved xml attributes */ + { + int count = 0; + const char** all = NULL; + all = ezxml_all_attr(xml,&count); + if(all != NULL && count > 0) { + const char** p; + container->xmlattributes = nclistnew(); + for(p=all;*p;p+=2) { + if(isReserved(*p)) { + nclistpush(container->xmlattributes,strdup(p[0])); + nclistpush(container->xmlattributes,strdup(p[1])); + } + } + } + } + + for(x=ezxml_child(xml, "Attribute");x!= NULL;x=ezxml_next(x)) { + const char* name = ezxml_attr(x,"name"); + const char* type = ezxml_attr(x,"type"); + NCD4node* attr = NULL; + NCD4node* basetype; + + if(name == NULL) FAIL(NC_EBADNAME,"Missing name"); +#ifdef HYRAXHACK + /* Hyrax specifies type="container" for container types */ + if(strcmp(type,"container")==0 + || strcmp(type,"Container")==0) + type = NULL; +#endif + if(type == NULL) { + /* containers not supported; ignore */ + continue; + } + + if((ret=makeNode(parser,container,x,NCD4_ATTR,NC_NULL,&attr))) goto done; + basetype = lookupFQN(parser,type,NCD4_TYPE); + if(basetype == NULL) + FAIL(NC_EBADTYPE,"Unknown type: ",type); + if(basetype->subsort == NC_NAT && basetype->subsort != NC_ENUM) + FAIL(NC_EBADTYPE," type must be atomic or enum: ",type); + attr->basetype = basetype; + values = nclistnew(); + if((ret=getValueStrings(parser,basetype,x,values))) { + FAIL(NC_EINVAL,"Malformed attribute: %s",name); + } + attr->attr.values = values; values = NULL; + PUSH(container->attributes,attr); + } +done: + if(ret != NC_NOERR) { + nclistfreeall(values); + } + return THROW(ret); +} + +static int +parseError(NCD4parser* parser, ezxml_t errxml) +{ + const char* shttpcode = ezxml_attr(errxml,"httpcode"); + ezxml_t x; + if(shttpcode == NULL) shttpcode = "400"; + if(sscanf(shttpcode,"%d",&parser->metadata->error.httpcode) != 1) + nclog(NCLOGERR,"Malformed response"); + x=ezxml_child(errxml, "Message"); + if(x != NULL) { + const char* txt = ezxml_txt(x); + parser->metadata->error.message = (txt == NULL ? NULL : strdup(txt)); + } + x=ezxml_child(errxml, "Context"); + if(x != NULL) { + const char* txt = ezxml_txt(x); + parser->metadata->error.context = (txt == NULL ? NULL : strdup(txt)); + } + x=ezxml_child(errxml, "OtherInformation"); + if(x != NULL) { + const char* txt = ezxml_txt(x); + parser->metadata->error.otherinfo = (txt == NULL ? NULL : strdup(txt)); + } + return THROW(NC_NOERR); +} + +/* +Find or create an opaque type +*/ +static NCD4node* +getOpaque(NCD4parser* parser, ezxml_t varxml, NCD4node* group) +{ + int i, ret = NC_NOERR; + long long len; + NCD4node* opaquetype = NULL; + const char* xattr; + +#ifndef FIXEDOPAQUE + len = 0; +#else + len = parser->metadata->controller->controls.opaquesize; +#endif + if(parser->metadata->controller->controls.translation == NCD4_TRANSNC4) { + /* See if this var has UCARTAGOPAQUE attribute */ + xattr = ezxml_attr(varxml,UCARTAGOPAQUE); + if(xattr != NULL) { + long long tmp = 0; + if((ret = parseLL(xattr,&tmp)) || (tmp < 0)) + FAIL(NC_EINVAL,"Illegal opaque len: %s",xattr); + len = tmp; + } + } +#ifndef FIXEDOPAQUE + if(len == 0) { + /* Need to use _bytestring */ + if((ret=defineBytestringType(parser))) + goto done; + assert(parser->metadata->_bytestring != NULL); + opaquetype = parser->metadata->_bytestring; + } else +#endif + { /*(len > 0) || FIXEDOPAQUE */ + /* Try to locate existing opaque type with this length */ + for(i=0;itypes); i++) { + NCD4node* op = (NCD4node*)nclistget(parser->types,i); + if(op->subsort != NC_OPAQUE) continue; + if(op->opaque.size == len) {opaquetype = op; break;} + } + if(opaquetype == NULL) {/* create it */ + char name[NC_MAX_NAME+1]; + /* Make name be "opaqueN" */ + snprintf(name,NC_MAX_NAME,"opaque%lld_t",len); + /* Opaque types are always created in the current group */ + if((ret=makeNode(parser,group,NULL,NCD4_TYPE,NC_OPAQUE,&opaquetype))) + goto done; + SETNAME(opaquetype,name); + opaquetype->opaque.size = len; + if(opaquetype != NULL) + record(parser,opaquetype); + } + } +done: + return opaquetype; +} + +/* get all value strings */ +static int +getValueStrings(NCD4parser* parser, NCD4node* type, ezxml_t xattr, NClist* svalues) +{ + const char* s; + /* See first if we have a "value" xml attribute */ + s = ezxml_attr(xattr,"value"); + if(s != NULL) + PUSH(svalues,strdup(s)); + else {/* look for subnodes */ + ezxml_t x; + for(x=ezxml_child(xattr, "Value");x != NULL;x = ezxml_next(x)) { + char* es; + char* ds; + /* We assume that either their is a single xml attribute called "value", + or there is a single chunk of text containing possibly multiple values. + */ + s = ezxml_attr(x,"value"); + if(s == NULL) {/* See if there is a text part. */ + s = x->txt; + if(s == NULL) s = ""; + } + /* Need to de-escape the string */ + es = NCD4_entityescape(s); + ds = NCD4_deescape(es); + nclistpush(svalues,ds); + nullfree(es); + } + } + return THROW(NC_NOERR); +} + +/***************************************************/ +/* Utilities */ + +NCD4node* +NCD4_groupFor(NCD4node* node) +{ + while(node->sort != NCD4_GROUP) node = node->container; + return node; +} + +/* Determine is a name is reserved */ +static int +isReserved(const char* name) +{ + if(name == NULL) return 0; + return (name[0] == RESERVECHAR); +} + +/* If a node has the UCARTAGORIGTYPE attribute, + then capture that annotation. */ +static int +addOrigType(NCD4parser* parser, NCD4node* src, NCD4node* dst, const char* oldname) +{ + int ret = NC_NOERR; + + if(dst == NULL) dst = src; + /* Record the original type in the destination*/ + if((ret=splitOrigType(parser,oldname,dst))) goto done; +done: + return THROW(ret); +} + +static int +splitOrigType(NCD4parser* parser, const char* fqn, NCD4node* type) +{ + int ret = NC_NOERR; + NClist* pieces = nclistnew(); + NCD4node* group = NULL; + char* name = NULL; + + if((ret=NCD4_parseFQN(fqn,pieces))) goto done; + /* It should be the case that the pieces are {/group}+/name */ + name = (char*)nclistpop(pieces); + if((ret = lookupFQNList(parser,pieces,NCD4_GROUP,&group))) goto done; + if(group == NULL) { + FAIL(NC_ENOGRP,"Non-existent group in FQN: ",fqn); + } + type->nc4.orig.name = strdup(name+1); /* plus 1 to skip the leading separator */ + type->nc4.orig.group = group; + +done: + return THROW(ret); +} + +/* Locate an attribute. + If not found, then *attrp will be null +*/ +NCD4node* +NCD4_findAttr(NCD4node* container, const char* attrname) +{ + int i; + /* Look directly under this xml for */ + for(i=0;iattributes);i++) { + NCD4node* attr = (NCD4node*)nclistget(container->attributes,i); + if(strcmp(attr->name,attrname)!=0) continue; + return attr; + } + return NULL; +} + +/* +Parse a simple string of digits into an unsigned long long +Return the value. +*/ + +static int +parseULL(const char* text, unsigned long long* ullp) +{ + extern int errno; + char* endptr; + unsigned long long uint64 = 0; + + errno = 0; endptr = NULL; +#ifdef HAVE_STRTOULL + uint64 = strtoull(text,&endptr,10); + if(errno == ERANGE) + return THROW(NC_ERANGE); +#else /*!(defined HAVE_STRTOLL && defined HAVE_STRTOULL)*/ + sscanf((char*)text, "%llu", &uint64); + /* Have no useful way to detect out of range */ +#endif /*!(defined HAVE_STRTOLL && defined HAVE_STRTOULL)*/ + if(ullp) *ullp = uint64; + return THROW(NC_NOERR); +} + +/* +Parse a simple string of digits into an signed long long +Return the value. +*/ + +static int +parseLL(const char* text, long long* llp) +{ + extern int errno; + char* endptr; + long long int64 = 0; + + errno = 0; endptr = NULL; +#ifdef HAVE_STRTOLL + int64 = strtoll(text,&endptr,10); + if(errno == ERANGE) + return THROW(NC_ERANGE); +#else /*!(defined HAVE_STRTOLL && defined HAVE_STRTOLL)*/ + sscanf((char*)text, "%lld", &int64); + /* Have no useful way to detect out of range */ +#endif /*!(defined HAVE_STRTOLL && defined HAVE_STRTOLL)*/ + if(llp) *llp = int64; + return THROW(NC_NOERR); +} + +/* +Convert a sequence of fqn names into a specific node. +WARNING: This is highly specialized in that it assumes +that the final object is one of: dimension, type, or var. +This means that e.g. groups, attributes, econsts, cannot +be found by this procedure. +*/ +static int +lookupFQNList(NCD4parser* parser, NClist* fqn, NCD4sort sort, NCD4node** result) +{ + int ret = NC_NOERR; + int i,nsteps; + NCD4node* current; + char* name = NULL; + NCD4node* node = NULL; + + /* Step 1: walk thru groups until can go no further */ + current = parser->metadata->root; + nsteps = nclistlength(fqn); + for(i=1;isort)); + name = (char*)nclistget(fqn,i); + /* See if we can find a matching subgroup */ + node = lookFor(current->group.elements,name,NCD4_GROUP); + if(node == NULL) + break; /* reached the end of the group part of the fqn */ + current = node; + } + /* Invariant: + 1. i == nsteps => node != null => last node was a group: + it must be our target + 2. i == (nsteps-1) => non-group node at the end; disambiguate + 3. i < (nsteps - 1) => need a compound var to continue + */ + if(i == nsteps) { + if(sort != NCD4_GROUP) goto sortfail; + goto done; + } + if(i == (nsteps - 1)) { + assert (node == NULL); + node = lookFor(current->group.elements,name,sort); + if(node == NULL) goto sortfail; + goto done; + } + assert (i < (nsteps - 1)); /* case 3 */ + /* We have steps to take, so node better be a compound var */ + node = lookFor(current->group.elements,name,NCD4_VAR); + if(node == NULL || !ISCMPD(node->basetype->subsort)) + goto fail; + /* So we are at a compound variable, so walk its fields recursively */ + /* Use the type to do the walk */ + current = node->basetype; + assert (i < (nsteps - 1)); + i++; /* skip variable name */ + for(;;i++) { + int j; + name = (char*)nclistget(fqn,i); + assert(ISTYPE(current->sort) && ISCMPD(current->subsort)); + for(node=NULL,j=0;jvars);j++) { + NCD4node* field = (NCD4node*)nclistget(current->vars,j); + if(strcmp(field->name,name)==0) + {node = field; break;} + } + if(node == NULL) + goto sortfail; /* no match, so failed */ + if(i == (nsteps - 1)) + break; + if(!ISCMPD(node->basetype->subsort)) + goto fail; /* more steps, but no compound field, so failed */ + current = node->basetype; + } +done: + if(result) *result = node; + return THROW(ret); +fail: + ret = NC_EINVAL; + goto done; +sortfail: + ret = NC_EBADID; + goto done; +} + +static NCD4node* +lookFor(NClist* elems, const char* name, NCD4sort sort) +{ + int n,i; + if(elems == NULL || nclistlength(elems) == 0) return NULL; + n = nclistlength(elems); + for(i=0;iname,name) == 0 && (sort == node->sort)) + return node; + } + return NULL; +} + +void +NCD4_printElems(NCD4node* group) +{ + int n,i; + NClist* elems; + elems = group->group.elements; + if(elems == NULL || nclistlength(elems) == 0) return; + n = nclistlength(elems); + for(i=0;iname,node->sort,node->subsort); + } + fflush(stderr); +} + +static NCD4node* +lookupFQN(NCD4parser* parser, const char* sfqn, NCD4sort sort) +{ + int ret = NC_NOERR; + NClist* fqnlist = nclistnew(); + NCD4node* match = NULL; + + /* Short circuit atomic types */ + if(NCD4_TYPE == sort) { + match = lookupAtomictype(parser,(sfqn[0]=='/'?sfqn+1:sfqn)); + if(match != NULL) + goto done; + } + if((ret=NCD4_parseFQN(sfqn,fqnlist))) goto done; + if((ret=lookupFQNList(parser,fqnlist,sort,&match))) goto done; +done: + nclistfreeall(fqnlist); + return (ret == NC_NOERR ? match : NULL); +} + +static const KEYWORDINFO* +keyword(const char* name) +{ + int n = sizeof(keywordmap)/sizeof(KEYWORDINFO); + int L = 0; + int R = (n - 1); + int m, cmp; + const struct KEYWORDINFO* p; + for(;;) { + if(L > R) break; + m = (L + R) / 2; + p = &keywordmap[m]; + cmp = strcasecmp(p->tag,name); + if(cmp == 0) return p; + if(cmp < 0) + L = (m + 1); + else /*cmp > 0*/ + R = (m - 1); + } + return NULL; +} + +#ifndef FIXEDOPAQUE +static int +defineBytestringType(NCD4parser* parser) +{ + int ret = NC_NOERR; + NCD4node* bstring = NULL; + if(parser->metadata->_bytestring == NULL) { + /* Construct a single global opaque type for mapping DAP opaque type */ + ret = makeNode(parser,parser->metadata->root,NULL,NCD4_TYPE,NC_OPAQUE,&bstring); + if(ret != NC_NOERR) goto done; + SETNAME(bstring,"_bytestring"); + bstring->opaque.size = 0; + bstring->basetype = lookupAtomictype(parser,"UInt8"); + PUSH(parser->metadata->root->types,bstring); + parser->metadata->_bytestring = bstring; + } else + bstring = parser->metadata->_bytestring; +done: + return THROW(ret); +} +#endif + +static int +defineAtomicTypes(NCD4parser* parser) +{ + int ret = NC_NOERR; + NCD4node* node; + const struct ATOMICTYPEINFO* ati; + + parser->atomictypes = nclistnew(); + if(parser->atomictypes == NULL) + return THROW(NC_ENOMEM); + for(ati=atomictypeinfo;ati->name;ati++) { + if((ret=makeNode(parser,parser->metadata->root,NULL,NCD4_TYPE,ati->type,&node))) goto done; + SETNAME(node,ati->name); + node->container = parser->metadata->root; + record(parser,node); + PUSH(parser->atomictypes,node); + } + parser->used = (char*)calloc(1,nclistlength(parser->atomictypes)); + if(parser->used == NULL) {ret = NC_ENOMEM; goto done;} + +done: + return THROW(ret); +} + +/* Binary search the set of set of atomictypes */ +static NCD4node* +lookupAtomictype(NCD4parser* parser, const char* name) +{ + int n = nclistlength(parser->atomictypes); + int L = 0; + int R = (n - 1); + int m, cmp; + NCD4node* p; + + for(;;) { + if(L > R) break; + m = (L + R) / 2; + p = (NCD4node*)nclistget(parser->atomictypes,m); + cmp = strcasecmp(p->name,name); + if(cmp == 0) return p; + if(cmp < 0) + L = (m + 1); + else /*cmp > 0*/ + R = (m - 1); + } + return NULL; +} + +/**************************************************/ + +static int +makeNode(NCD4parser* parser, NCD4node* parent, ezxml_t xml, NCD4sort sort, nc_type subsort, NCD4node** nodep) +{ + int ret = NC_NOERR; + NCD4node* node = (NCD4node*)calloc(1,sizeof(NCD4node)); + + if(node == NULL) return THROW(NC_ENOMEM); + node->sort = sort; + node->subsort = subsort; + node->container = parent; + /* Set node name, if it exists */ + if(xml != NULL) { + const char* name = ezxml_attr(xml,"name"); + if(name != NULL) { + if(strlen(name) > NC_MAX_NAME) { + nclog(NCLOGERR,"Name too long: %s",name); + } + SETNAME(node,name); + } + } + if(parent != NULL) { + if(parent->sort == NCD4_GROUP) + PUSH(parent->group.elements,node); + } + track(parser,node); + if(nodep) *nodep = node; + return THROW(ret); +} + +static NCD4node* +makeAnonDim(NCD4parser* parser, const char* sizestr) +{ + long long size = 0; + int ret; + char name[NC_MAX_NAME+1]; + NCD4node* dim = NULL; + NCD4node* root = parser->metadata->root; + + ret = parseLL(sizestr,&size); + if(ret) return NULL; + snprintf(name,NC_MAX_NAME,"/_Anonymous%lld",size); + /* See if it exists already */ + dim = lookupFQN(parser,name,NCD4_DIM); + if(dim == NULL) {/* create it */ + if((ret=makeNode(parser,root,NULL,NCD4_DIM,NC_NULL,&dim))) goto done; + SETNAME(dim,name+1); /* leave out the '/' separator */ + dim->dim.size = (long long)size; + dim->dim.isanonymous = 1; + PUSH(root->dims,dim); + } +done: + return (ret?NULL:dim); +} + +/* +Classify inserts the node into the proper container list +based on the node's sort. +*/ +static void +classify(NCD4node* container, NCD4node* node) +{ + if(ISGROUP(container->sort)) + nclistpush(container->group.elements,node); + switch (node->sort) { + case NCD4_GROUP: + PUSH(container->groups,node); + break; + case NCD4_DIM: + PUSH(container->dims,node); + break; + case NCD4_TYPE: + PUSH(container->types,node); + break; + case NCD4_VAR: + PUSH(container->vars,node); + break; + case NCD4_ATTR: case NCD4_XML: + PUSH(container->attributes,node); + break; + default: break; + } +} + +/* +Classify inserts the node into the proper parser global list +based on the node's sort. +*/ +static void +record(NCD4parser* parser, NCD4node* node) +{ + switch (node->sort) { + case NCD4_GROUP: + PUSH(parser->groups,node); + break; + case NCD4_DIM: + PUSH(parser->dims,node); + break; + case NCD4_TYPE: + PUSH(parser->types,node); + break; + case NCD4_VAR: + PUSH(parser->vars,node); + break; + default: break; + } +} + +/* +Undo a classify and record +for a field node. +Used by buildSequenceType. +*/ +#if 0 +static void +forget(NCD4parser* parser, NCD4node* var) +{ + int i; + NCD4node* container = var->container; + assert(ISVAR(var->sort) && ISTYPE(container->sort) && ISCMPD(container->subsort)); + /* Unrecord: remove from the parser lists */ + for(i=0;ivars;i++) { + NCD4node* test = nclistget(parser->vars,i); + if(test == var) { + nclistremove(parser->vars,i); + break; + } + } + /* Unclassify: remove from the container var list */ + for(i=0;ivars;i++) { + NCD4node* test = nclistget(container->vars,i); + if(test == var) { + nclistremove(container->vars,i); + break; + } + } +} +#endif + +static void +track(NCD4parser* parser, NCD4node* node) +{ +#ifdef D4DEBUG + fprintf(stderr,"track: node=%lx sort=%d subsort=%d",(unsigned long)node,node->sort,node->subsort); + if(node->name != NULL) + fprintf(stderr," name=%s\n",node->name); + fprintf(stderr,"\n"); +#endif + PUSH(parser->metadata->allnodes,node); +#ifdef D4DEBUG + fprintf(stderr,"track: |allnodes|=%ld\n",nclistlength(parser->metadata->allnodes)); + fflush(stderr); +#endif +} + +/**************************************************/ + +static int +convertString(union ATOMICS* converter, NCD4node* type, const char* s) +{ + switch (type->subsort) { + case NC_BYTE: + case NC_SHORT: + case NC_INT: + case NC_INT64: + if(sscanf(s,"%lld",converter->i64) != 1) return THROW(NC_ERANGE); + break; + case NC_UBYTE: + case NC_USHORT: + case NC_UINT: + case NC_UINT64: + if(sscanf(s,"%llu",converter->u64) != 1) return THROW(NC_ERANGE); + break; + case NC_FLOAT: + case NC_DOUBLE: + if(sscanf(s,"%lf",converter->f64) != 1) return THROW(NC_ERANGE); + break; + case NC_STRING: + converter->s[0]= strdup(s); + break; + }/*switch*/ + return downConvert(converter,type); +} + +static int +downConvert(union ATOMICS* converter, NCD4node* type) +{ + unsigned long long u64 = converter->u64[0]; + long long i64 = converter->i64[0]; + double f64 = converter->f64[0]; + char* s = converter->s[0]; + switch (type->subsort) { + case NC_BYTE: + converter->i8[0] = (char)i64; + break; + case NC_UBYTE: + converter->u8[0] = (unsigned char)u64; + break; + case NC_SHORT: + converter->i16[0] = (short)i64; + break; + case NC_USHORT: + converter->u16[0] = (unsigned short)u64; + break; + case NC_INT: + converter->i32[0] = (int)i64; + break; + case NC_UINT: + converter->u32[0] = (unsigned int)u64; + break; + case NC_INT64: + converter->i64[0] = i64; + break; + case NC_UINT64: + converter->u64[0]= u64; + break; + case NC_FLOAT: + converter->f32[0] = (float)f64; + break; + case NC_DOUBLE: + converter->f64[0] = f64; + break; + case NC_STRING: + converter->s[0]= s; + break; + }/*switch*/ + return THROW(NC_NOERR); +} + +#if 0 +/* Try to remove excess text from a value set */ +static int +valueParse(NCD4node* type, const char* values0, NClist* vlist) +{ + char* values; + char* p; + char* q; + char* s; + char* line; + ptrdiff_t len; + + if(values0 == NULL || (len=strlen(values0)) == 0) + return THROW(NC_NOERR); + values = strdup(values0); + /* Compress the text by removing sequences of blanks and newlines: + note that this will fail for string typed values that might have + embedded blanks, so in that case, we assume each string is on a separate line. + For NC_CHAR, we treat like strings, except we use the last char in the line + as the value. This is all heuristic. + */ + switch (type->subsort) { + case NC_STRING: + p = values; + for(;;) { + if(*p == '\0') break; + line = p; + /* Start by looking for \n or \r\n */ + for(;*p;p++) {if(*p == '\n') break;} + q = p - 1; + *p++ = '\0'; + if(*q == '\r') {*q = '\0';} + nclistpush(vlist,strdup(line)); + } + break; + case NC_CHAR: + p = values; + for(;*p;) { + char c[2]; + line = p; + /* Start by looking for \n or \r\n */ + for(;*p;p++) {if(*p == '\n') break;} + q = p; + *p++ = '\0'; + q--; + if(*q == '\r') {*q = '\0';} + len = strlen(line); + if(len > 0) { + c[0] = *q; + c[1] = '\0'; + nclistpush(vlist,strdup(c)); + } + } + break; + default: + p = values; + for(;*p;p++) {if(*p <= ' ') *p = '\n';} + line = values; + for(p=line;*p;p++) {if(*p == '\n') break;} + for(line=values;*line;) { + size_t size = strlen(line); + if(size > 0) + nclistpush(vlist,strdup(line)); + line += (size+1); /* skip terminating nul */ + } + break; + } + free(values); + return THROW(NC_NOERR); +} +#endif diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4printer.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4printer.c new file mode 100644 index 00000000000..778f11c456c --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4printer.c @@ -0,0 +1,591 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" + +/** +This provides a simple dap4 metadata -> xml printer. +Used to test the parser +*/ + +#define NCD4_parse t_parse /* to avoid dup defs */ + +#include "ncd4types.h" +#include "ncd4.h" + +/**************************************************/ + +typedef struct D4printer { + NCbytes* out; + NCbytes* tmp; + NCD4meta* metadata; +} D4printer; + +/**************************************************/ + +#define CAT(x) ncbytescat(out->out,x) +#define INDENT(x) indent(out,x) + + +/**************************************************/ +/* Forwards */ + +static void atomicsToString(D4printer*, union ATOMICS* value, nc_type type); +static int hasMetaData(NCD4node* node); +static void indent(D4printer*, int depth); +static int printAttribute(D4printer*, NCD4node* attr, int depth); +static int printDataset(D4printer* out, NCD4node* node, int depth); +static int printDimref(D4printer*, NCD4node* d, int depth); +static int printGroup(D4printer* out, NCD4node* node, int depth); +static int printGroupBody(D4printer* out, NCD4node* node, int depth); +static int printMap(D4printer* out, NCD4node* mapref, int depth); +static int printMetaData(D4printer* out, NCD4node* node, int depth); +static int printNode(D4printer*, NCD4node* node, int depth); +static int printValue(D4printer*, const char* value, int depth); +static int printVariable(D4printer*, NCD4node* var, int depth); +static int printXMLAttributeAtomics(D4printer*, char* name, union ATOMICS* value, nc_type type); +static int printXMLAttributeName(D4printer*, char* name, const char* value); +static int printXMLAttributeSize(D4printer*, char* name, size_t value); +static int printXMLAttributeString(D4printer*, char* name, const char* value); + +/**************************************************/ + +int +NCD4_print(NCD4meta* metadata, NCbytes* output) +{ + int ret = NC_NOERR; + D4printer out; + if(metadata == NULL || output == NULL) return THROW(NC_EINVAL); + out.out = output; + out.tmp = ncbytesnew(); + out.metadata = metadata; + ret = printNode(&out,metadata->root,0); + ncbytesfree(out.tmp); + return THROW(ret); +} + +/*************************************************/ + +/** + * Print an arbitrary file and its subnodes in xml + * Handling newlines is a bit tricky because they may be + * embedded for e.g. groups, enums, + * etc. So the rule is that the + * last newline is elided and left + * for the caller to print. + * Exceptions: printMetadata + * printDimrefs. + * + * @param out - the output buffer + * @param node - the tree to print + * @param depth - the depth of our code + */ + +static int +printNode(D4printer* out, NCD4node* node, int depth) +{ + int ret = NC_NOERR; + int i; + char* fqn = NULL; + + switch (node->sort) { + case NCD4_GROUP: + if(node->group.isdataset) + printDataset(out,node,depth); + else + printGroup(out,node,depth); + break; + + case NCD4_DIM: + INDENT(depth); + CAT("name != NULL) + printXMLAttributeName(out, "name", node->name); + printXMLAttributeSize(out, "size", node->dim.size); + if(node->dim.isunlimited) + printXMLAttributeString(out, UCARTAGUNLIM, "1"); + CAT("/>"); + break; + + case NCD4_TYPE: + switch (node->subsort) { + default: break; + case NC_OPAQUE: + INDENT(depth); CAT("tmp); + printXMLAttributeName(out, "name", node->name); + if(node->opaque.size > 0) + printXMLAttributeSize(out, "size", node->opaque.size); + CAT("/>"); + break; + case NC_ENUM: + INDENT(depth); CAT("name); + if(node->basetype->subsort <= NC_MAX_ATOMIC_TYPE) + printXMLAttributeName(out, "basetype", node->basetype->name); + else { + char* fqn = NULL; + printXMLAttributeName(out, "basetype", (fqn = NCD4_makeFQN(node->basetype))); + nullfree(fqn); + } + CAT(">\n"); + depth++; + for(i=0;ien.econsts);i++) { + NCD4node* ec = (NCD4node*)nclistget(node->en.econsts,i); + INDENT(depth); + CAT("name); + printXMLAttributeAtomics(out, "value", &ec->en.ecvalue, node->basetype->subsort); + CAT("/>\n"); + } + depth--; + INDENT(depth); CAT(""); + break; + case NC_STRUCT: + INDENT(depth); + CAT("name); + CAT(">\n"); + depth++; + for(i=0;ivars);i++) { + NCD4node* field = (NCD4node*)nclistget(node->vars,i); + printVariable(out,field,depth); + CAT("\n"); + } + if((ret=printMetaData(out,node,depth))) goto done; + depth--; + INDENT(depth); + CAT(""); + break; + case NC_SEQ: + INDENT(depth); + CAT("name); + printXMLAttributeName(out, "type", (fqn=NCD4_makeFQN(node->basetype))); + if(hasMetaData(node)) { + CAT(">\n"); + depth++; + if((ret=printMetaData(out,node,depth))) goto done; + depth--; + INDENT(depth); + CAT(""); + } else + CAT("/>"); + break; + } break; + case NCD4_VAR: /* Only top-level vars are printed here */ + if(ISTOPLEVEL(node)) { + if((ret=printVariable(out,node,depth))) goto done; + CAT("\n"); + } + break; + + default: abort(); break; + } +done: + nullfree(fqn); + return THROW(ret); +} + +static int +printVariable(D4printer* out, NCD4node* var, int depth) +{ + int ret = NC_NOERR; + NCD4node* basetype = var->basetype; + char* fqn = NULL; + + INDENT(depth); CAT("<"); + switch (var->subsort) { + default: + CAT(basetype->name); + printXMLAttributeName(out, "name", var->name); + break; + case NC_ENUM: + CAT("Enum"); + printXMLAttributeName(out, "name", var->name); + printXMLAttributeName(out, "enum", (fqn=NCD4_makeFQN(basetype))); + break; + case NC_OPAQUE: + CAT("Opaque"); + printXMLAttributeName(out, "name", var->name); + printXMLAttributeName(out, "type", (fqn=NCD4_makeFQN(basetype))); + break; + case NC_SEQ: + CAT("Seq"); + printXMLAttributeName(out, "name", var->name); + printXMLAttributeName(out, "type", (fqn=NCD4_makeFQN(basetype))); + break; + case NC_STRUCT: + CAT("Struct"); + printXMLAttributeName(out, "name", var->name); + printXMLAttributeName(out, "type", (fqn=NCD4_makeFQN(basetype))); + break; + } + if(hasMetaData(var)) { + CAT(">\n"); + depth++; + if((ret=printMetaData(out,var,depth))) goto done; + depth--; + INDENT(depth); CAT("subsort == NC_ENUM) + CAT("Enum"); + else if(basetype->subsort == NC_OPAQUE) + CAT("Opaque"); + else if(basetype->subsort == NC_STRUCT) + CAT("Struct"); + else if(basetype->subsort == NC_SEQ) + CAT("Sequence"); + else + CAT(basetype->name); + CAT(">"); + } else + CAT("/>"); +done: + nullfree(fqn); + return THROW(ret); +} + +static int +printDataset(D4printer* out, NCD4node* node, int depth) +{ + int ret = NC_NOERR; + CAT("group.datasetname); + CAT("\n"); + INDENT(depth); + printXMLAttributeName(out,"dapVersion",node->group.dapversion); + CAT("\n"); + INDENT(depth); + printXMLAttributeName(out,"dmrVersion",node->group.dmrversion); + CAT("\n"); + INDENT(depth); + printXMLAttributeName(out,"xmlns","http://xml.opendap.org/ns/DAP/4.0#"); + CAT("\n"); + INDENT(depth); + printXMLAttributeName(out,"xmlns:dap","http://xml.opendap.org/ns/DAP/4.0#"); + depth--; + CAT(">\n"); + depth++; + ret = printGroupBody(out,node,depth); + depth--; + INDENT(depth); + CAT(""); + return THROW(ret); +} + +static int +printGroup(D4printer* out, NCD4node* node, int depth) +{ + int ret = NC_NOERR; + INDENT(depth); + CAT("name); + CAT(">\n"); + depth++; + ret = printGroupBody(out,node,depth); + depth--; + INDENT(depth); + CAT(""); + return THROW(ret); +} + +static int +printGroupBody(D4printer* out, NCD4node* node, int depth) +{ + int ret = NC_NOERR; + int i,ngroups,nvars,ntypes,ndims,nattrs; + + ngroups = nclistlength(node->groups); + nvars = nclistlength(node->vars); + ntypes = nclistlength(node->types); + ndims = nclistlength(node->dims); + nattrs = nclistlength(node->attributes); + + if(ndims > 0) { + INDENT(depth); + CAT("\n"); + depth++; + for(i=0;idims);i++) { + NCD4node* dim = (NCD4node*)nclistget(node->dims,i); + printNode(out,dim,depth); + CAT("\n"); + } + depth--; + INDENT(depth); + CAT("\n"); + } + if(ntypes > 0) { + INDENT(depth); + CAT("\n"); + depth++; + for(i=0;itypes);i++) { + NCD4node* type = (NCD4node*)nclistget(node->types,i); + if(type->subsort <= NC_MAX_ATOMIC_TYPE) continue; + printNode(out,type,depth); + CAT("\n"); + } + depth--; + INDENT(depth); + CAT("\n"); + } + if(nvars > 0) { + INDENT(depth); + CAT("\n"); + depth++; + for(i=0;ivars);i++) { + NCD4node* var = (NCD4node*)nclistget(node->vars,i); + printNode(out,var,depth); + } + depth--; + INDENT(depth); + CAT("\n"); + } + if(nattrs > 0) { + for(i=0;iattributes);i++) { + NCD4node* attr = (NCD4node*)nclistget(node->attributes,i); + printAttribute(out,attr,depth); + CAT("\n"); + } + } + if(ngroups > 0) { + INDENT(depth); + CAT("\n"); + depth++; + for(i=0;igroups);i++) { + NCD4node* g = (NCD4node*)nclistget(node->groups,i); + printNode(out,g,depth); + CAT("\n"); + } + depth--; + INDENT(depth); + CAT("\n"); + } + return THROW(ret); +} + +static int +printMetaData(D4printer* out, NCD4node* node, int depth) +{ + int ret = NC_NOERR; + int i; + + if(nclistlength(node->dims) > 0) { + for(i=0;idims);i++) { + NCD4node* dim = (NCD4node*)nclistget(node->dims,i); + printDimref(out,dim,depth); + CAT("\n"); + } + } + if(nclistlength(node->maps) > 0) { + for(i=0;imaps);i++) { + NCD4node* mapref = (NCD4node*)nclistget(node->maps,i); + printMap(out,mapref,depth); + CAT("\n"); + } + } + if(nclistlength(node->attributes) > 0) { + for(i=0;iattributes);i++) { + NCD4node* attr = (NCD4node*)nclistget(node->attributes,i); + printAttribute(out,attr,depth); + CAT("\n"); + } + } + return THROW(ret); +} + +static int +printXMLAttributeName(D4printer* out, char* name, const char* value) +{ + int ret = NC_NOERR; + char* escaped = NULL; + + if(name == NULL) return THROW(ret); + if(value == NULL) value = ""; + CAT(" "); CAT(name); CAT("=\""); + /* add xml entity escaping */ + escaped = NCD4_entityescape(value); + CAT(escaped); + CAT("\""); + nullfree(escaped); + return THROW(ret); +} + + +static int +printXMLAttributeString(D4printer* out, char* name, const char* value) +{ + int ret = NC_NOERR; + char* escaped = NULL; + if(name == NULL) return THROW(ret); + CAT(" "); CAT(name); + CAT("="); + CAT("\""); + if(value == NULL) value = ""; + /* add xml entity escaping */ + escaped = NCD4_entityescape(value); + CAT(escaped); + CAT("\""); + nullfree(escaped); + return THROW(ret); +} + +static int +printXMLAttributeSize(D4printer* out, char* name, size_t value) +{ + union ATOMICS atomics; + atomics.u64[0] = (unsigned long long)value; + return printXMLAttributeAtomics(out,name,&atomics,NC_UINT64); +} + +static int +printXMLAttributeAtomics(D4printer* out, char* name, union ATOMICS* value, nc_type type) +{ + int ret = NC_NOERR; + CAT(" "); CAT(name); CAT("=\""); + atomicsToString(out,value,type); + CAT(ncbytescontents(out->tmp)); + CAT("\""); + return THROW(ret); +} + +static int +printAttribute(D4printer* out, NCD4node* attr, int depth) +{ + int ret = NC_NOERR; + int i = 0; + char* fqn = NULL; + + INDENT(depth); CAT("name); + if(attr->basetype->subsort <= NC_MAX_ATOMIC_TYPE) + printXMLAttributeName(out,"type",attr->basetype->name); + else { + printXMLAttributeName(out,"type",(fqn = NCD4_makeFQN(attr->basetype))); + } + CAT(">\n"); + depth++; + for(i=0;iattr.values);i++) { + printValue(out,(const char*)nclistget(attr->attr.values,i),depth); + CAT("\n"); + } + depth--; + INDENT(depth); + CAT(""); + + nullfree(fqn); + return THROW(ret); +} + +/** + * Print the dimrefs for a variable's dimensions. + * If the variable has a non-whole projection, then use size + * else use the dimension name. + * + * @param var whole dimensions are to be printed + * @throws DapException + */ +static int +printDimref(D4printer* out, NCD4node* d, int depth) +{ + char* fqn = NULL; + INDENT(depth); + CAT(""); + nullfree(fqn); + return THROW(NC_NOERR); +} + +static int +printValue(D4printer* out, const char* value, int depth) +{ + int ret = NC_NOERR; + INDENT(depth); + CAT(""); + return THROW(ret); +} + +static int +printMap(D4printer* out, NCD4node* mapref, int depth) +{ + char* fqn = NULL; + INDENT(depth); + CAT(""); + nullfree(fqn); + return THROW(NC_NOERR); +} + +/*************************************************/ +/* Misc. Static Utilities */ + +static void +indent(D4printer* out, int depth) +{ + while(depth-- > 0) ncbytescat(out->out," "); +} + +static int +hasMetaData(NCD4node* node) +{ + return (nclistlength(node->dims) > 0 + || nclistlength(node->attributes) > 0 + || nclistlength(node->maps) > 0); +} + +static void +atomicsToString(D4printer* out, union ATOMICS* value, nc_type type) +{ + char tmp[256]; + ncbytesclear(out->tmp); + switch (type) { + case NC_CHAR: + snprintf(tmp,sizeof(tmp),"'%c'",value->i8[0]); + break; + case NC_BYTE: + snprintf(tmp,sizeof(tmp),"%d",value->i8[0]); + break; + case NC_UBYTE: + snprintf(tmp,sizeof(tmp),"%u",value->u8[0]); + break; + case NC_SHORT: + snprintf(tmp,sizeof(tmp),"%d",value->i16[0]); + break; + case NC_USHORT: + snprintf(tmp,sizeof(tmp),"%u",value->u16[0]); + break; + case NC_INT: + snprintf(tmp,sizeof(tmp),"%d",value->i32[0]); + break; + case NC_UINT: + snprintf(tmp,sizeof(tmp),"%u",value->u32[0]); + break; + case NC_INT64: + snprintf(tmp,sizeof(tmp),"%lld",value->i64[0]); + break; + case NC_UINT64: + snprintf(tmp,sizeof(tmp),"%llu",value->u64[0]); + break; + case NC_FLOAT: + snprintf(tmp,sizeof(tmp),"%g",value->f32[0]); + break; + case NC_DOUBLE: + snprintf(tmp,sizeof(tmp),"%g",value->f64[0]); + break; + case NC_STRING: + ncbytescat(out->tmp,"\""); + ncbytescat(out->tmp,value->s[0]); + ncbytescat(out->tmp,"\""); + break; + default: abort(); + } + if(type != NC_STRING) ncbytescat(out->tmp,tmp); + ncbytesnull(out->tmp); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.c new file mode 100644 index 00000000000..598c683cb41 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.c @@ -0,0 +1,204 @@ +#include "d4includes.h" +#include "d4curlfunctions.h" +#ifdef HAVE_FCNTL_H +#include +#endif +#include "ncwinpath.h" + +/* Do conversion if this code was compiled via Vis. Studio or Mingw */ + +/*Forward*/ +static int readpacket(NCD4INFO* state, NCURI*, NCbytes*, NCD4mode, long*); +static int readfile(NCD4INFO* state, const NCURI*, const char* suffix, NCbytes* packet); +static int readfiletofile(NCD4INFO* state, const NCURI*, const char* suffix, FILE* stream, d4size_t*); + +#ifdef HAVE_GETTIMEOFDAY +static struct timeval time0; +static struct timeval time1; + +static double +deltatime() +{ + double t0, t1; + t0 = ((double)time0.tv_sec); + t0 += ((double)time0.tv_usec) / 1000000.0; + t1 = ((double)time1.tv_sec); + t1 += ((double)time1.tv_usec) / 1000000.0; + return (t1 - t0); +} +#endif + +int +NCD4_readDMR(NCD4INFO* state) +{ + int stat = NC_NOERR; + long lastmodified = -1; + + stat = readpacket(state,state->uri,state->curl->packet,NCD4_DMR,&lastmodified); + if(stat == NC_NOERR) + state->data.dmrlastmodified = lastmodified; + return THROW(stat); +} + +int +NCD4_readDAP(NCD4INFO* state, int flags) +{ + int stat = NC_NOERR; + long lastmod = -1; + + if((flags & NCF_ONDISK) == 0) { + stat = readpacket(state,state->uri,state->curl->packet,NCD4_DAP,&lastmod); + if(stat == NC_NOERR) + state->data.daplastmodified = lastmod; + } else { /*((flags & NCF_ONDISK) != 0) */ + NCURI* url = state->uri; + int fileprotocol = (strcmp(url->protocol,"file")==0); + if(fileprotocol) { + stat = readfiletofile(state, url, ".dap", state->data.ondiskfile, &state->data.datasize); + } else { + char* readurl = NULL; + int flags = 0; + if(!fileprotocol) flags |= NCURIQUERY; + flags |= NCURIENCODE; + flags |= NCURIPWD; +#ifdef FIX + ncurisetconstraints(url,state->constraint); +#endif + readurl = ncuribuild(url,NULL,".dods",NCURISVC); + if(readurl == NULL) + return THROW(NC_ENOMEM); + stat = NCD4_fetchurl_file(state->curl, readurl, state->data.ondiskfile, + &state->data.datasize, &lastmod); + nullfree(readurl); + if(stat == NC_NOERR) + state->data.daplastmodified = lastmod; + } + } + return THROW(stat); +} + +static const char* +dxxextension(int dxx) +{ + switch(dxx) { + case NCD4_DMR: return ".dmr"; + case NCD4_DAP: return ".dap"; + default: break; + } + return NULL; +} + +static int +readpacket(NCD4INFO* state, NCURI* url, NCbytes* packet, NCD4mode dxx, long* lastmodified) +{ + int stat = NC_NOERR; + int fileprotocol = 0; + const char* suffix = dxxextension(dxx); + CURL* curl = state->curl->curl; + + fileprotocol = (strcmp(url->protocol,"file")==0); + + if(fileprotocol) { + /* Short circuit file://... urls*/ + /* We do this because the test code always needs to read files*/ + stat = readfile(state, url,suffix,packet); + } else { + char* fetchurl = NULL; + int flags = NCURIBASE; + if(!fileprotocol) flags |= NCURIQUERY; + flags |= NCURIENCODE; + fetchurl = ncuribuild(url,NULL,suffix,flags); + MEMCHECK(fetchurl); + if(FLAGSET(state->controls.flags,NCF_SHOWFETCH)) { + nclog(NCLOGDBG,"fetch url=%s",fetchurl); +#ifdef HAVE_GETTIMEOFDAY + gettimeofday(&time0,NULL); +#endif + } + stat = NCD4_fetchurl(curl,fetchurl,packet,lastmodified); + nullfree(fetchurl); + if(stat) goto fail; + if(FLAGSET(state->controls.flags,NCF_SHOWFETCH)) { + double secs = 0; +#ifdef HAVE_GETTIMEOFDAY + gettimeofday(&time1,NULL); + secs = deltatime(); +#endif + nclog(NCLOGDBG,"fetch complete: %0.3f",secs); + } + } +#ifdef D4DEBUG + { +fprintf(stderr,"readpacket: packet.size=%lu\n", + (unsigned long)ncbyteslength(packet)); + } +#endif +fail: + return THROW(stat); +} + +static int +readfiletofile(NCD4INFO* state, const NCURI* uri, const char* suffix, FILE* stream, d4size_t* sizep) +{ + int stat = NC_NOERR; + NCbytes* packet = ncbytesnew(); + size_t len; + stat = readfile(state, uri,suffix,packet); +#ifdef D4DEBUG +fprintf(stderr,"readfiletofile: packet.size=%lu\n", + (unsigned long)ncbyteslength(packet)); +#endif + if(stat != NC_NOERR) goto unwind; + len = nclistlength(packet); + if(stat == NC_NOERR) { + size_t written; + fseek(stream,0,SEEK_SET); + written = fwrite(ncbytescontents(packet),1,len,stream); + if(written != len) { +#ifdef D4DEBUG +fprintf(stderr,"readfiletofile: written!=length: %lu :: %lu\n", + (unsigned long)written,(unsigned long)len); +#endif + stat = NC_EIO; + } + } + if(sizep != NULL) *sizep = len; +unwind: + ncbytesfree(packet); + return THROW(stat); +} + +static int +readfile(NCD4INFO* state, const NCURI* uri, const char* suffix, NCbytes* packet) +{ + int stat = NC_NOERR; + NCbytes* tmp = ncbytesnew(); + char* filename = NULL; + + ncbytescat(tmp,uri->path); + if(suffix != NULL) ncbytescat(tmp,suffix); + ncbytesnull(tmp); + filename = ncbytesextract(tmp); + ncbytesfree(tmp); + + state->fileproto.filename = filename; /* filename is alloc'd here anyway */ + + if(FLAGSET(state->controls.flags,NCF_SHOWFETCH)) { + char* surl = NULL; +#ifdef HAVE_GETTIMEOFDAY + gettimeofday(&time0,NULL); +#endif + surl = ncuribuild((NCURI*)uri,NULL,NULL,NCURIALL); + nclog(NCLOGDBG,"fetch uri=%s file=%s",surl,filename); + } + stat = NC_readfile(filename,packet); + if(FLAGSET(state->controls.flags,NCF_SHOWFETCH)) { + double secs; +#ifdef HAVE_GETTIMEOFDAY + gettimeofday(&time1,NULL); + secs = deltatime(); +#endif + nclog(NCLOGDBG,"fetch complete: %0.3f",secs); + } + return THROW(stat); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.h new file mode 100644 index 00000000000..a672e4babeb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4read.h @@ -0,0 +1,12 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4READ_H +#define D4READ_H + +extern int NCD4_readDMR(NCD4INFO*); +extern int NCD4_readDAP(NCD4INFO*, int inmemory); + +#endif /*READ_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4swap.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4swap.c new file mode 100644 index 00000000000..6a48d8fad5b --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4swap.c @@ -0,0 +1,260 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#include +#include "d4includes.h" +#include "ezxml.h" + +/* +The primary purpose of this code is to recursively traverse +the incoming data to get the endianness correct. +*/ + +/* Forward */ + +static int walkAtomicVar(NCD4meta*, NCD4node*, NCD4node*, void** offsetp); +static int walkOpaqueVar(NCD4meta*,NCD4node*, NCD4node*, void** offsetp); +static int walkStructArray(NCD4meta*,NCD4node*, NCD4node*, void** offsetp); +static int walkStruct(NCD4meta*, NCD4node*, NCD4node*, void** offsetp); +static int walkSeqArray(NCD4meta*, NCD4node*, NCD4node*, void** offsetp); +static int walkSeq(NCD4meta*,NCD4node*, NCD4node*, void** offsetp); + +/**************************************************/ + +/* +Assumes that compiler->swap is true; does necessary +byte swapping. +*/ +int +NCD4_swapdata(NCD4meta* compiler, NClist* topvars) +{ + int ret = NC_NOERR; + int i; + void* offset; + + offset = compiler->serial.dap; + for(i=0;idata.dap4data.memory = offset; + switch (var->subsort) { + default: + if((ret=walkAtomicVar(compiler,var,var,&offset))) goto done; + break; + case NC_OPAQUE: + /* The only thing we need to do is swap the counts */ + if((ret=walkOpaqueVar(compiler,var,var,&offset))) goto done; + break; + case NC_STRUCT: + if((ret=walkStructArray(compiler,var,var,&offset))) goto done; + break; + case NC_SEQ: + if((ret=walkSeqArray(compiler,var,var,&offset))) goto done; + break; + } + var->data.dap4data.size = DELTA(offset,var->data.dap4data.memory); + /* skip checksum, if there is one */ + if(compiler->serial.remotechecksumming) + offset = INCR(offset,CHECKSUMSIZE); + } +done: + return THROW(ret); +} + +static int +walkAtomicVar(NCD4meta* compiler, NCD4node* topvar, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + nc_type subsort; + d4size_t dimproduct; + NCD4node* basetype; + + basetype = (var->sort == NCD4_TYPE ? var : var->basetype); + subsort = basetype->subsort; + dimproduct = (var->sort == NCD4_TYPE ? 1 : NCD4_dimproduct(var)); + + offset = *offsetp; + if(subsort == NC_ENUM) + subsort = var->basetype->basetype->subsort; + /* Only need to swap multi-byte integers and floats */ + if(subsort != NC_STRING) { + int typesize = NCD4_typesize(subsort); + d4size_t totalsize = typesize*dimproduct; + if(typesize == 1) { + offset = INCR(offset,totalsize); + } else { /*(typesize > 1)*/ + for(i=0;iswap) { + switch (typesize) { + case 2: swapinline16(sp); break; + case 4: swapinline32(sp); break; + case 8: swapinline64(sp); break; + default: break; + } + } + offset = INCR(offset,typesize); + } + } + } else if(subsort == NC_STRING) { /* remaining case; just convert the counts */ + COUNTERTYPE count; + for(i=0;iswap) + swapinline64(offset); + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + /* skip count bytes */ + offset = INCR(offset,count); + } + } + *offsetp = offset; + return THROW(ret); +} + +static int +walkOpaqueVar(NCD4meta* compiler, NCD4node* topvar, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + unsigned long long count; + d4size_t dimproduct = NCD4_dimproduct(var); + + dimproduct = (var->sort == NCD4_TYPE ? 1 : NCD4_dimproduct(var)); + + offset = *offsetp; + for(i=0;iswap) + swapinline64(offset); + count = GETCOUNTER(offset); + SKIPCOUNTER(offset); + offset = INCR(offset,count); + } + *offsetp = offset; + return THROW(ret); +} + +static int +walkStructArray(NCD4meta* compiler, NCD4node* topvar, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + d4size_t dimproduct = NCD4_dimproduct(var); + NCD4node* basetype = var->basetype; + + offset = *offsetp; + for(i=0;ivars);i++) { + NCD4node* field = (NCD4node*)nclistget(structtype->vars,i); + NCD4node* fieldbase = field->basetype; + switch (fieldbase->subsort) { + default: + if((ret=walkAtomicVar(compiler,topvar,field,&offset))) goto done; + break; + case NC_OPAQUE: + /* The only thing we need to do is swap the counts */ + if((ret=walkOpaqueVar(compiler,topvar,field,&offset))) goto done; + break; + case NC_STRUCT: + if((ret=walkStructArray(compiler,topvar,field,&offset))) goto done; + break; + case NC_SEQ: + if((ret=walkSeqArray(compiler,topvar,field,&offset))) goto done; + break; + } + } + *offsetp = offset; +done: + return THROW(ret); +} + +static int +walkSeqArray(NCD4meta* compiler, NCD4node* topvar, NCD4node* var, void** offsetp) +{ + int ret = NC_NOERR; + void* offset; + d4size_t i; + d4size_t dimproduct; + NCD4node* seqtype; + + assert(var->sort == NCD4_VAR); + dimproduct = NCD4_dimproduct(var); + seqtype = var->basetype; + + offset = *offsetp; + for(i=0;iswap) + swapinline64(&recordcount); + + basetype = vlentype->basetype; /* This may be of any type potentially */ + assert(basetype->sort == NCD4_TYPE); + + for(i=0;isubsort) { + default: /* atomic basetype */ + if((ret=walkAtomicVar(compiler,topvar,basetype,&offset))) goto done; + break; + case NC_OPAQUE: + if((ret=walkOpaqueVar(compiler,topvar,basetype,&offset))) goto done; + break; + case NC_STRUCT: + /* We can treat each record like a structure instance */ + if((ret=walkStruct(compiler,topvar,basetype,&offset))) goto done; + break; + case NC_SEQ: + if((ret=walkSeq(compiler,topvar,basetype,&offset))) goto done; + break; + } + } + *offsetp = offset; +done: + return THROW(ret); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.c new file mode 100644 index 00000000000..be6e2305fe2 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.c @@ -0,0 +1,443 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "d4includes.h" +#ifdef HAVE_SYS_STAT_H +#include +#endif +#ifdef HAVE_FCNTL_H +#include +#endif +#ifdef _MSC_VER +#include +#endif + +#define LBRACKET '[' +#define RBRACKET ']' + +/**************************************************/ +/* Forward */ + +static char* backslashEscape(const char* s); + +/**************************************************/ +/** + * Provide a hidden interface to allow utilities + * to check if a given path name is really an ncdap4 url. + * If no, return null, else return basename of the url + * minus any extension. + */ + +int +ncd4__testurl(const char* path, char** basenamep) +{ + NCURI* uri; + int ok = NC_NOERR; + if(ncuriparse(path,&uri) != NCU_OK) + ok = NC_EURL; + else { + char* slash = (uri->path == NULL ? NULL : strrchr(uri->path, '/')); + char* dot; + if(slash == NULL) slash = (char*)path; else slash++; + slash = nulldup(slash); + if(slash == NULL) + dot = NULL; + else + dot = strrchr(slash, '.'); + if(dot != NULL && dot != slash) *dot = '\0'; + if(basenamep) + *basenamep=slash; + else if(slash) + free(slash); + } + ncurifree(uri); + return ok; +} + +/* Return 1 if this machine is little endian */ +int +NCD4_isLittleEndian(void) +{ + union { + unsigned char bytes[SIZEOF_INT]; + int i; + } u; + u.i = 1; + return (u.bytes[0] == 1 ? 1 : 0); +} + +/* Compute the size of an atomic type, except opaque */ +size_t +NCD4_typesize(nc_type tid) +{ + switch(tid) { + case NC_BYTE: case NC_UBYTE: case NC_CHAR: return 1; + case NC_SHORT: case NC_USHORT: return sizeof(short); + case NC_INT: case NC_UINT: return sizeof(int); + case NC_FLOAT: return sizeof(float); + case NC_DOUBLE: return sizeof(double); + case NC_INT64: case NC_UINT64: return sizeof(long long); + case NC_STRING: return sizeof(char*); + default: break; + } + return 0; +} + +d4size_t +NCD4_dimproduct(NCD4node* node) +{ + int i; + d4size_t product = 1; + for(i=0;idims);i++) { + NCD4node* dim = (NCD4node*)nclistget(node->dims,i); + product *= dim->dim.size; + } + return product; +} + +/* Caller must free return value */ +char* +NCD4_makeFQN(NCD4node* node) +{ + char* fqn = NULL; + char* escaped; + int i; + NCD4node* g = node; + NClist* path = nclistnew(); + size_t estimate; + + for(estimate=0;g != NULL;g=g->container) { + estimate += strlen(g->name); + nclistinsert(path,0,g); + } + estimate = (estimate*2) + 2*nclistlength(path); + estimate++; /*strlcat nul*/ + fqn = (char*)malloc(estimate+1); + if(fqn == NULL) goto done; + fqn[0] = '\0'; + /* Create the group-based fqn prefix */ + /* start at 1 to avoid dataset */ + for(i=1;isort != NCD4_GROUP) break; + /* Add in the group name */ + escaped = backslashEscape(elem->name); + if(escaped == NULL) {free(fqn); fqn = NULL; goto done;} + strlcat(fqn,"/",estimate); + strlcat(fqn,escaped,estimate); + free(escaped); + } + /* Add in the final name part (if not group) */ + if(i < nclistlength(path)) { + int last = nclistlength(path)-1; + NCD4node* n = (NCD4node*)nclistget(path,last); + char* name = NCD4_makeName(n,"."); + strlcat(fqn,"/",estimate); + strlcat(fqn,name,estimate); + nullfree(name); + } + +done: + nclistfree(path); + return fqn; +} + +/* +create the last part of the fqn +(post groups) +*/ +char* +NCD4_makeName(NCD4node* elem, const char* sep) +{ + int i; + size_t estimate = 0; + NCD4node* n; + NClist* path = nclistnew(); + char* fqn = NULL; + + /* Collect the path upto, but not including, the first containing group */ + for(estimate=0,n=elem;n->sort != NCD4_GROUP;n=n->container) { + nclistinsert(path,0,n); + estimate += (1+(2*strlen(n->name))); + } + estimate++; /*strlcat nul*/ + fqn = (char*)malloc(estimate+1); + if(fqn == NULL) goto done; + fqn[0] = '\0'; + + for(i=0;iname); + if(escaped == NULL) {free(fqn); fqn = NULL; goto done;} + if(i > 0) + strlcat(fqn,sep,estimate); + strlcat(fqn,escaped,estimate); + free(escaped); + } +done: + nclistfree(path); + return fqn; +} + +static char* +backslashEscape(const char* s) +{ + const char* p; + char* q; + size_t len; + char* escaped = NULL; + + len = strlen(s); + escaped = (char*)malloc(1+(2*len)); /* max is everychar is escaped */ + if(escaped == NULL) return NULL; + for(p=s,q=escaped;*p;p++) { + char c = *p; + switch (c) { + case '\\': + case '/': + case '.': + case '@': + *q++ = '\\'; *q++ = '\\'; + break; + default: *q++ = c; break; + } + } + *q = '\0'; + return escaped; +} + +/* Parse an fqn into a sequence of names; + using '/', and then (conditionally) '.' */ +int +NCD4_parseFQN(const char* fqn0, NClist* pieces) +{ + int ret = NC_NOERR; + int count; + char* p; + char* start; + char* fqn = NULL; + + if(fqn0 == NULL) fqn0 = "/"; + fqn = strdup(fqn0[0] == '/' ? fqn0+1 : fqn0); + start = fqn; + /* Step 0: insert rootname */ + nclistpush(pieces,strdup("/")); + /* Step 1: Break fqn into pieces at occurrences of '/' */ + count = 0; + for(p=start;*p;) { + switch(*p) { + case '\\': /* leave the escapes in place */ + p+=2; + break; + case '/': /*capture the piece name */ + *p++ = '\0'; + start = p; /* mark start of the next part */ + count++; + break; + default: /* ordinary char */ + p++; + break; + } + } +#ifdef ALLOWFIELDMAPS + /* Step 2, walk the final piece to break up based on '.' */ + for(p=start;*p;) { + switch(*p) { + case '\\': /* leave the escapes in place */ + p+=2; + break; + case '.': /*capture the piece name */ + *p++ = '\0'; + start = p; + count++; + break; + default: /* ordinary char */ + p++; + break; + } + } +#endif + count++; /* acct for last piece */ + /* Step 3: capture and de-scape the pieces */ + for(p=fqn;count > 0;count--) { + char* descaped = NCD4_deescape(p); + nclistpush(pieces,descaped); + p = p + strlen(p) + 1; /* skip past the terminating nul */ + } + if(fqn != NULL) free(fqn); + return THROW(ret); +} + +char* +NCD4_deescape(const char* esc) +{ + size_t len; + char* s; + const char* p; + char* q; + + if(esc == NULL) return NULL; + len = strlen(esc); + s = (char*)malloc(len+1); + if(s == NULL) return NULL; + for(p=esc,q=s;*p;) { + switch (*p) { + case '\\': + p++; + /* fall thru */ + default: *q++ = *p++; break; + } + } + *q = '\0'; + return s; +} + +char* +NCD4_entityescape(const char* s) +{ + const char* p; + char* q; + size_t len; + char* escaped = NULL; + const char* entity; + + len = strlen(s); + escaped = (char*)malloc(1+(6*len)); /* 6 = |'| */ + if(escaped == NULL) return NULL; + for(p=s,q=escaped;*p;p++) { + char c = *p; + switch (c) { + case '&': entity = "&"; break; + case '<': entity = "<"; break; + case '>': entity = ">"; break; + case '"': entity = """; break; + case '\'': entity = "'"; break; + default : entity = NULL; break; + } + if(entity == NULL) + *q++ = c; + else { + len = strlen(entity); + memcpy(q,entity,len); + q+=len; + } + } + *q = '\0'; + return escaped; +} + +int +NCD4_readfile(const char* filename, NCbytes* content) +{ + int ret = NC_NOERR; + FILE* stream = NULL; + char part[1024]; + + stream = fopen(filename,"r"); + if(stream == NULL) {ret=errno; goto done;} + for(;;) { + size_t count = fread(part, 1, sizeof(part), stream); + if(count <= 0) break; + ncbytesappendn(content,part,count); + if(ferror(stream)) {ret = NC_EIO; goto done;} + if(feof(stream)) break; + } + ncbytesnull(content); +done: + if(stream) fclose(stream); + return ret; +} + +/** +Wrap mktmp and return the generated name +*/ + +int +NCD4_mktmp(const char* base, char** tmpnamep) +{ + int fd; + char tmp[NC_MAX_PATH]; +#ifdef HAVE_MKSTEMP + mode_t mask; +#endif + + strncpy(tmp,base,sizeof(tmp)); +#ifdef HAVE_MKSTEMP + strncat(tmp,"XXXXXX", sizeof(tmp) - strlen(tmp) - 1); + /* Note Potential problem: old versions of this function + leave the file in mode 0666 instead of 0600 */ + mask=umask(0077); + fd = mkstemp(tmp); + (void)umask(mask); +#else /* !HAVE_MKSTEMP */ + /* Need to simulate by using some kind of pseudo-random number */ + { + int rno = rand(); + char spid[7]; + if(rno < 0) rno = -rno; + snprintf(spid,sizeof(spid),"%06d",rno); + strncat(tmp,spid,sizeof(tmp)); +#if defined(_WIN32) || defined(_WIN64) + fd=open(tmp,O_RDWR|O_BINARY|O_CREAT, _S_IREAD|_S_IWRITE); +# else + fd=open(tmp,O_RDWR|O_CREAT|O_EXCL, S_IRWXU); +# endif + } +#endif /* !HAVE_MKSTEMP */ + if(fd < 0) { + nclog(NCLOGERR, "Could not create temp file: %s",tmp); + return THROW(NC_EPERM); + } else + close(fd); + if(tmpnamep) *tmpnamep = strdup(tmp); + return THROW(NC_NOERR); +} + +void +NCD4_hostport(NCURI* uri, char* space, size_t len) +{ + if(space != NULL && len > 0) { + space[0] = '\0'; /* so we can use strncat */ + if(uri->host != NULL) { + strncat(space,uri->host,len); + if(uri->port != NULL) { + strncat(space,":",len); + strncat(space,uri->port,len); + } + } + } +} + +void +NCD4_userpwd(NCURI* uri, char* space, size_t len) +{ + if(space != NULL && len > 0) { + space[0] = '\0'; /* so we can use strncat */ + if(uri->user != NULL && uri->password != NULL) { + strncat(space,uri->user,len); + strncat(space,":",len); + strncat(space,uri->password,len); + } + } +} + +/**************************************************/ +/* Error reporting */ + +int +NCD4_error(int code, const int line, const char* file, const char* fmt, ...) +{ + va_list argv; + fprintf(stderr,"(%s:%d) ",file,line); + va_start(argv,fmt); + ncvlog(NCLOGERR,fmt,argv); + return code; +} + +int +NCD4_errorNC(int code, const int line, const char* file) +{ + return NCD4_error(code,line,file,nc_strerror(code)); +} diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.h b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.h new file mode 100644 index 00000000000..00f39eb03bb --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4util.h @@ -0,0 +1,77 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#ifndef D4UTIL_H +#define D4UTIL_H 1 + +#ifdef HAVE_MEMMOVE +#define d4memmove(dst,src,n) memmove(dst,src,n) +#else +#define d4memmove(dst,src,n) localmemmove(dst,src,n) +#endif + +/* This is intended to be big enough to work as + an offset/position/size for a file or a memory block. +*/ +typedef unsigned long long d4size_t; + +/* Define an counted memory marker */ +typedef struct D4blob {d4size_t size; void* memory;} D4blob; + +/**************************************************/ + +/* signature: void swapinline16(void* ip) */ +#define swapinline16(ip) \ +{ \ + union {char b[2]; unsigned short i;} u; \ + char* src = (char*)(ip); \ + u.b[0] = src[1]; \ + u.b[1] = src[0]; \ + *((unsigned short*)ip) = u.i; \ +} + +/* signature: void swapinline32(void* ip) */ +#define swapinline32(ip) \ +{ \ + union {char b[4]; unsigned int i;} u; \ + char* src = (char*)(ip); \ + u.b[0] = src[3]; \ + u.b[1] = src[2]; \ + u.b[2] = src[1]; \ + u.b[3] = src[0]; \ + *((unsigned int*)ip) = u.i; \ +} + +/* signature: void swapinline64(void* ip) */ +#define swapinline64(ip) \ +{ \ + union {char b[8]; unsigned long long i;} u; \ + char* src = (char*)(ip); \ + u.b[0] = src[7]; \ + u.b[1] = src[6]; \ + u.b[2] = src[5]; \ + u.b[3] = src[4]; \ + u.b[4] = src[3]; \ + u.b[5] = src[2]; \ + u.b[6] = src[1]; \ + u.b[7] = src[0]; \ + *((unsigned long long*)ip) = u.i; \ +} + +/***************************************************/ +/* Define the NCD4node.data.flags */ + +#define HASNIL (0) /* no flags set */ +#define HASSEQ (1) /* transitively contains sequence(s)*/ +#define HASSTR (2) /* transitively contains strings */ +#define HASOPFIX (4) /* transitively contains fixed size opaques */ +#define HASOPVAR (8) /* transitively contains variable size opaques */ +#define LEAFSEQ (16) /* mark leaf sequences */ +#define HASANY (HASNIL|HASSEQ|HASSTR|HASOPTFIX|HASOPVAR) +/***************************************************/ + +extern int ncd4__testurl(const char* parth, char** basename); + +#endif /*D4UTIL_H*/ diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4varx.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4varx.c new file mode 100644 index 00000000000..4316b66bd46 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/d4varx.c @@ -0,0 +1,185 @@ +/********************************************************************* + * Copyright 2016, UCAR/Unidata + * See netcdf/COPYRIGHT file for copying and redistribution conditions. + *********************************************************************/ + +#include "config.h" +#include "ncdispatch.h" +#include "ncd4dispatch.h" +#include "nc4internal.h" +#include "d4includes.h" +#include "d4odom.h" + +/* Forward */ +static int getvarx(int ncid, int varid, NCD4INFO**, NCD4node** varp, nc_type* xtypep, size_t*, nc_type* nc4typep, size_t*); + +int +NCD4_get_vara(int ncid, int varid, + const size_t *start, const size_t *edges, + void *value, + nc_type memtype) +{ + int ret; + /* TODO: optimize since we know stride is 1 */ + ret = NCD4_get_vars(ncid,varid,start,edges,nc_ptrdiffvector1,value,memtype); + return ret; +} + +int +NCD4_get_vars(int ncid, int varid, + const size_t *start, const size_t *edges, const ptrdiff_t* stride, + void *memoryin, nc_type xtype) +{ + int i,ret; + NCD4INFO* info; + NCD4meta* meta; + NCD4node* ncvar; + NCD4node* nctype; + D4odometer* odom = NULL; + nc_type nc4type; + size_t nc4size, xsize; + void* instance = NULL; /* Staging area in case we have to convert */ + NClist* blobs = NULL; + int rank; + size_t dimsizes[NC_MAX_VAR_DIMS]; + d4size_t dimproduct; + size_t dstcount; + + if((ret=getvarx(ncid, varid, &info, &ncvar, &xtype, &xsize, &nc4type, &nc4size))) + {THROW(ret); goto done;} + + meta = info->substrate.metadata; + nctype = ncvar->basetype; + rank = nclistlength(ncvar->dims); + blobs = nclistnew(); + + instance = malloc(nc4size); + if(instance == NULL) + {ret = THROW(NC_ENOMEM); goto done;} + + dimproduct = NCD4_dimproduct(ncvar); + /* build size vector */ + for(i=0;idims,i); + dimsizes[i] = (size_t)dim->dim.size; + } + + /* Extract and desired subset of data */ + if(rank > 0) + odom = d4odom_new(rank,start,edges,stride,dimsizes); + else + odom = d4scalarodom_new(); + dstcount = 0; /* We always write into dst starting at position 0*/ + for(;d4odom_more(odom);dstcount++) { + void* xpos; + void* offset; + void* dst; + d4size_t count; + count = d4odom_next(odom); + if(count >= dimproduct) { + ret = THROW(NC_EINVALCOORDS); + goto done; + } + xpos = INCR(memoryin,(xsize * dstcount)); /* ultimate destination */ + /* We need to compute the offset in the dap4 data of this instance; + for fixed size types, this is easy, otherwise we have to walk + the variable size type + */ + if(nctype->meta.isfixedsize) { + offset = INCR(ncvar->data.dap4data.memory,(nc4size * count)); + } else { + offset = ncvar->data.dap4data.memory; + /* We have to walk to the count'th location in the data */ + if((ret=NCD4_moveto(meta,ncvar,count,&offset))) + {THROW(ret); goto done;} + } + dst = instance; + if((ret=NCD4_fillinstance(meta,nctype,&offset,&dst,blobs))) + {THROW(ret); goto done;} + if(xtype == nc4type) { + /* We can just copy out the data */ + memcpy(xpos,instance,nc4size); + } else { /* Need to convert */ + if((ret=NCD4_convert(nc4type,xtype,xpos,instance,1))) + {THROW(ret); goto done;} + } + } + +done: + /* cleanup */ + if(odom != NULL) + d4odom_free(odom); + if(instance != NULL) + free(instance); + if(ret != NC_NOERR) { /* reclaim all malloc'd data if there is an error*/ + for(i=0;isubstrate.metadata; + if(meta == NULL) + {ret = THROW(NC_EBADID); goto done;} + + /* Locate var node via (grpid,varid) */ + grp_id = GROUPIDPART(ncid); + + group = nclistget(meta->groupbyid,grp_id); + if(group == NULL) + return THROW(NC_EBADID); + var = nclistget(group->group.varbyid,varid); + if(var == NULL) + return THROW(NC_EBADID); + type = var->basetype; + actualtype = type->meta.id; + instancesize = type->meta.memsize; + + /* Figure out the type conversion, if any */ + xtype = *xtypep; + if(xtype == NC_NAT) + xtype = actualtype; + if(xtype != actualtype && xtype > NC_MAX_ATOMIC_TYPE) + return THROW(NC_EBADTYPE); + if((xtype == NC_CHAR || xtype == NC_STRING) + && (actualtype != NC_CHAR && actualtype != NC_STRING)) + return THROW(NC_ECHAR); + if(xtype <= NC_MAX_ATOMIC_TYPE) + xsize = NCD4_typesize(xtype); + else + xsize = instancesize; + + /* Return relevant info */ + if(infop) *infop = info; + if(xtypep) *xtypep = xtype; + if(xsizep) *xsizep = xsize; + if(nc4typep) *nc4typep = actualtype; + if(nc4sizep) *nc4sizep = instancesize; + if(varp) *varp = var; +done: + return THROW(ret); +} + diff --git a/contrib/netcdf/netcdf-c-4.6.2/libdap4/ezxml.c b/contrib/netcdf/netcdf-c-4.6.2/libdap4/ezxml.c new file mode 100644 index 00000000000..59d76b41762 --- /dev/null +++ b/contrib/netcdf/netcdf-c-4.6.2/libdap4/ezxml.c @@ -0,0 +1,973 @@ +/* ezxml.c + * + * Copyright 2004-2006 Aaron Voisine + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include "ezxml.h" + +#define EZXML_WS "\t\r\n " /* whitespace*/ +#define EZXML_ERRL 128 /* maximum error string length*/ + +typedef struct ezxml_root *ezxml_root_t; +struct ezxml_root { /* additional data for the root tag*/ + struct ezxml xml; /* is a super-struct built on top of ezxml struct*/ + ezxml_t cur; /* current xml tree insertion point*/ + char *m; /* original xml string*/ + size_t len; /* length of allocated memory for mmap, -1 for malloc*/ + char *u; /* UTF-8 conversion of string if original was UTF-16*/ + char *s; /* start of work area*/ + char *e; /* end of work area*/ + char **ent; /* general entities (ampersand sequences)*/ + char ***attr; /* default attributes*/ + char ***pi; /* processing instructions*/ + short standalone; /* non-zero if */ + char err[EZXML_ERRL]; /* error string*/ +}; + +char *EZXML_NIL[] = { NULL }; /* empty, null terminated array of strings*/ + +/* returns the first child tag with the given name or NULL if not found*/ +ezxml_t ezxml_child(ezxml_t xml, const char *name) +{ + xml = (xml) ? xml->child : NULL; + while (xml && strcmp(name, xml->name)) xml = xml->sibling; + return xml; +} + +/* returns the Nth tag with the same name in the same subsection or NULL if not*/ +/* found*/ +ezxml_t ezxml_idx(ezxml_t xml, int idx) +{ + for (; xml && idx; idx--) xml = xml->next; + return xml; +} + +/* returns the value of the requested tag attribute or NULL if not found*/ +const char *ezxml_attr(ezxml_t xml, const char *attr) +{ + int i = 0, j = 1; + ezxml_root_t root = (ezxml_root_t)xml; + + if (! xml || ! xml->attr) return NULL; + while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2; + if (xml->attr[i]) return xml->attr[i + 1]; /* found attribute*/ + + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; /* root tag*/ + for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++); + if (! root->attr[i]) return NULL; /* no matching default attributes*/ + while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3; + return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; /* found default*/ +} + +/* same as ezxml_get but takes an already initialized va_list*/ +ezxml_t ezxml_vget(ezxml_t xml, va_list ap) +{ + char *name = va_arg(ap, char *); + int idx = -1; + + if (name && *name) { + idx = va_arg(ap, int); + xml = ezxml_child(xml, name); + } + return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); +} + +/* Traverses the xml tree to retrieve a specific subtag. Takes a variable*/ +/* length list of tag names and indexes. The argument list must be terminated*/ +/* by either an index of -1 or an empty string tag name. Example: */ +/* title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1);*/ +/* This retrieves the title of the 3rd book on the 1st shelf of library.*/ +/* Returns NULL if not found.*/ +ezxml_t ezxml_get(ezxml_t xml, ...) +{ + va_list ap; + ezxml_t r; + + va_start(ap, xml); + r = ezxml_vget(xml, ap); + va_end(ap); + return r; +} + +/* returns a null terminated array of processing instructions for the given*/ +/* target*/ +const char **ezxml_pi(ezxml_t xml, const char *target) +{ + ezxml_root_t root = (ezxml_root_t)xml; + int i = 0; + + if (! root) return (const char **)EZXML_NIL; + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; /* root tag*/ + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; /* find target*/ + return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL); +} + +/* set an error string and return root*/ +ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) +{ + va_list ap; + int line = 1; + char *t, fmt[EZXML_ERRL]; + + for (t = root->s; t < s; t++) if (*t == '\n') line++; + snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); + + va_start(ap, err); + vsnprintf(root->err, EZXML_ERRL, fmt, ap); + va_end(ap); + + return &root->xml; +} + +/* Recursively decodes entity and character references and normalizes new lines*/ +/* ent is a null terminated array of alternating entity names and values. set t*/ +/* to '&' for general entity decoding, '%' for parameter entity decoding, 'c'*/ +/* for cdata sections, ' ' for attribute normalization, or '*' for non-cdata*/ +/* attribute normalization. Returns s, or if the decoded string is longer than*/ +/* s, returns a malloced string that must be freed.*/ +char *ezxml_decode(char *s, char **ent, char t) +{ + char *e, *r = s, *m = s; + long b, c, d, l; + + for (; *s; s++) { /* normalize line endings*/ + while (*s == '\r') { + *(s++) = '\n'; + if (*s == '\n') memmove(s, (s + 1), strlen(s)); + } + } + + for (s = r; ; ) { + while (*s && *s != '&' && (*s != '%' || t != '%') && !isspace(*s)) s++; + + if (! *s) break; + else if (t != 'c' && ! strncmp(s, "&#", 2)) { /* character reference*/ + if (s[2] == 'x') c = strtol(s + 3, &e, 16); /* base 16*/ + else c = strtol(s + 2, &e, 10); /* base 10*/ + if (! c || *e != ';') { s++; continue; } /* not a character ref*/ + + if (c < 0x80) *(s++) = c; /* US-ASCII subset*/ + else { /* multi-byte UTF-8 sequence*/ + for (b = 0, d = c; d; d /= 2) b++; /* number of bits in c*/ + b = (b - 2) / 5; /* number of bytes in payload*/ + *(s++) = (0xFF << (7 - b)) | (c >> (6 * b)); /* head*/ + while (b) *(s++) = 0x80 | ((c >> (6 * --b)) & 0x3F); /* payload*/ + } + + memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';'))); + } + else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) || + (*s == '%' && t == '%')) { /* entity reference*/ + for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b])); + b += 2); /* find entity in entity list*/ + + if (ent[b++]) { /* found a match*/ + if ((c = strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) { + l = (d = (s - r)) + c + strlen(e); /* new length*/ + r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l); + e = strchr((s = r + d), ';'); /* fix up pointers*/ + } + + memmove(s + c, e + 1, strlen(e)); /* shift rest of string*/ + strncpy(s, ent[b], c); /* copy in replacement text*/ + } + else s++; /* not a known entity*/ + } + else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' '; + else s++; /* no decoding needed*/ + } + + if (t == '*') { /* normalize spaces for non-cdata attributes*/ + for (s = r; *s; s++) { + if ((l = strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1); + while (*s && *s != ' ') s++; + } + if (--s >= r && *s == ' ') *s = '\0'; /* trim any trailing space*/ + } + return r; +} + +/* called when parser finds start of new tag*/ +void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) +{ + ezxml_t xml = root->cur; + + if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); + else xml->name = name; /* first open tag*/ + + xml->attr = attr; + root->cur = xml; /* update tag insertion point*/ +} + +/* called when parser finds character content between open and closing tag*/ +void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t) +{ + ezxml_t xml = root->cur; + char *m = s; + size_t l; + + if (! xml || ! xml->name || ! len) return; /* sanity check*/ + + s[len] = '\0'; /* null terminate text (calling functions anticipate this)*/ + len = strlen(s = ezxml_decode(s, root->ent, t)) + 1; + + if (! *(xml->txt)) xml->txt = s; /* initial character content*/ + else { /* allocate our own memory and make a copy*/ + xml->txt = (xml->flags & EZXML_TXTM) /* allocate some space*/ + ? realloc(xml->txt, (l = strlen(xml->txt)) + len) + : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt); + strcpy(xml->txt + l, s); /* add new char content*/ + if (s != m) free(s); /* free s if it was malloced by ezxml_decode()*/ + } + + if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM); +} + +/* called when parser finds closing tag*/ +ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s) +{ + if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name)) + return ezxml_err(root, s, "unexpected closing tag ", name); + + root->cur = root->cur->parent; + return NULL; +} + +/* checks for circular entity references, returns non-zero if no circular*/ +/* references are found, zero otherwise*/ +int ezxml_ent_ok(char *name, char *s, char **ent) +{ + int i; + + for (; ; s++) { + while (*s && *s != '&') s++; /* find next entity reference*/ + if (! *s) return 1; + if (! strncmp(s + 1, name, strlen(name))) return 0; /* circular ref.*/ + for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2); + if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0; + } +} + +/* called when the parser finds a processing instruction*/ +void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len) +{ + int i = 0, j = 1; + char *target = s; + + s[len] = '\0'; /* null terminate instruction*/ + if (*(s += strcspn(s, EZXML_WS))) { + *s = '\0'; /* null terminate target*/ + s += strspn(s + 1, EZXML_WS) + 1; /* skip whitespace after target*/ + } + + if (! strcmp(target, "xml")) { /* */ + if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10, + EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1; + return; + } + + if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; /*first pi*/ + + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; /* find target*/ + if (! root->pi[i]) { /* new target*/ + root->pi = realloc(root->pi, sizeof(char **) * (i + 2)); + root->pi[i] = malloc(sizeof(char *) * 3); + root->pi[i][0] = target; + root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); /* terminate pi list*/ + root->pi[i][2] = strdup(""); /* empty document position list*/ + } + + while (root->pi[i][j]) j++; /* find end of instruction list for this target*/ + root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3)); + root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1); + strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<"); + root->pi[i][j + 1] = NULL; /* null terminate pi list for this target*/ + root->pi[i][j] = s; /* set instruction*/ +} + +/* called when the parser finds an internal doctype subset*/ +short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) +{ + char q, *c, *t, *n = NULL, *v, **ent, **pe; + int i, j; + + pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); + + for (s[len] = '\0'; s; ) { + while (*s && *s != '<' && *s != '%') s++; /* find next declaration*/ + + if (! *s) break; + else if (! strncmp(s, "'); + continue; + } + + for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++); + ent = realloc(ent, (i + 3) * sizeof(char *)); /* space for next ent*/ + if (*c == '%') pe = ent; + else root->ent = ent; + + *(++s) = '\0'; /* null terminate name*/ + if ((s = strchr(v, q))) *(s++) = '\0'; /* null terminate value*/ + ent[i + 1] = ezxml_decode(v, pe, '%'); /* set value*/ + ent[i + 2] = NULL; /* null terminate entity list*/ + if (! ezxml_ent_ok(n, ent[i + 1], ent)) { /* circular reference*/ + if (ent[i + 1] != v) free(ent[i + 1]); + ezxml_err(root, v, "circular entity declaration &%s", n); + break; + } + else ent[i] = n; /* set entity name*/ + } + else if (! strncmp(s, "")) == '>') continue; + else *s = '\0'; /* null terminate tag name*/ + for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); + + for(;;) { + s++; + if(!(*(n = s + strspn(s, EZXML_WS)) && *n != '>')) break; + if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; /* attr name*/ + else { ezxml_err(root, t, "malformed ") - 1; + if (*c == ' ') continue; /* cdata is default, nothing to do*/ + v = NULL; + } + else if ((*s == '"' || *s == '\'') && /* default value*/ + (s = strchr(v = s + 1, *s))) *s = '\0'; + else { ezxml_err(root, t, "malformed attr[i]) { /* new tag name*/ + root->attr = (! i) ? malloc(2 * sizeof(char **)) + : realloc(root->attr, + (i + 2) * sizeof(char **)); + root->attr[i] = malloc(2 * sizeof(char *)); + root->attr[i][0] = t; /* set tag name*/ + root->attr[i][1] = (char *)(root->attr[i + 1] = NULL); + } + + for (j = 1; root->attr[i][j]; j += 3); /* find end of list*/ + root->attr[i] = realloc(root->attr[i], + (j + 4) * sizeof(char *)); + + root->attr[i][j + 3] = NULL; /* null terminate list*/ + root->attr[i][j + 2] = c; /* is it cdata?*/ + root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) + : NULL; + root->attr[i][j] = n; /* attribute name */ + } + } + else if (! strncmp(s, ""); /* comments*/ + else if (! strncmp(s, ""))) + ezxml_proc_inst(root, c, s++ - c); + } + else if (*s == '<') s = strchr(s, '>'); /* skip other declarations*/ + else if (*(s++) == '%' && ! root->standalone) break; + } + + free(pe); + return ! *root->err; +} + +/* Converts a UTF-16 string to UTF-8. Returns a new string that must be freed*/ +/* or NULL if no conversion was needed.*/ +char *ezxml_str2utf8(char **s, size_t *len) +{ + char *u; + size_t l = 0, sl, max = *len; + long c, d; + int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1; + + if (be == -1) return NULL; /* not UTF-16*/ + + u = malloc(max); + for (sl = 2; sl < *len - 1; sl += 2) { + c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) /*UTF-16BE*/ + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); /*UTF-16LE*/ + if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { /* high-half*/ + d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); + c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000; + } + + while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE); + if (c < 0x80) u[l++] = c; /* US-ASCII subset*/ + else { /* multi-byte UTF-8 sequence*/ + for (b = 0, d = c; d; d /= 2) b++; /* bits in c*/ + b = (b - 2) / 5; /* bytes in payload*/ + u[l++] = (0xFF << (7 - b)) | (c >> (6 * b)); /* head*/ + while (b) u[l++] = 0x80 | ((c >> (6 * --b)) & 0x3F); /* payload*/ + } + } + return *s = realloc(u, *len = l); +} + +/* frees a tag attribute list*/ +void ezxml_free_attr(char **attr) { + int i = 0; + char *m; + + if (! attr || attr == EZXML_NIL) return; /* nothing to free*/ + while (attr[i]) i += 2; /* find end of attribute list*/ + m = attr[i + 1]; /* list of which names and values are malloced*/ + for (i = 0; m[i]; i++) { + if (m[i] & EZXML_NAMEM) free(attr[i * 2]); + if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]); + } + free(m); + free(attr); +} + +/* parse the given xml string and return an ezxml structure*/ +ezxml_t ezxml_parse_str(char *s, size_t len) +{ + ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL); + char q, e, *d, **attr, **a = NULL; /* initialize a to avoid compile warning*/ + int l, i, j; + + root->m = s; + if (! len) return ezxml_err(root, NULL, "root tag missing"); + root->u = ezxml_str2utf8(&s, &len); /* convert utf-16 to utf-8*/ + root->e = (root->s = s) + len; /* record start and end of work area*/ + + e = s[len - 1]; /* save end char*/ + s[len - 1] = '\0'; /* turn end char into null terminator*/ + + while (*s && *s != '<') s++; /* find first tag*/ + if (! *s) return ezxml_err(root, s, "root tag missing"); + + for (; ; ) { + attr = (char **)EZXML_NIL; + d = ++s; + + if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { /* new tag*/ + if (! root->cur) + return ezxml_err(root, d, "markup outside of root element"); + + s += strcspn(s, EZXML_WS "/>"); + while (isspace(*s)) *(s++) = '\0'; /* null terminate tag name*/ + + if (*s && *s != '/' && *s != '>') /* find tag in default attr list*/ + for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); + + for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { /* new attrib*/ + attr = (l) ? realloc(attr, (l + 4) * sizeof(char *)) + : malloc(4 * sizeof(char *)); /* allocate space*/ + attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2) + : malloc(2); /* mem for list of maloced vals*/ + strcpy(attr[l + 3] + (l / 2), " "); /* value is not malloced*/ + attr[l + 2] = NULL; /* null terminate list*/ + attr[l + 1] = ""; /* temporary attribute value*/ + attr[l] = s; /* set attribute name*/ + + s += strcspn(s, EZXML_WS "=/>"); + if (*s == '=' || isspace(*s)) { + *(s++) = '\0'; /* null terminate tag attribute name*/ + q = *(s += strspn(s, EZXML_WS "=")); + if (q == '"' || q == '\'') { /* attribute value*/ + attr[l + 1] = ++s; + while (*s && *s != q) s++; + if (*s) *(s++) = '\0'; /* null terminate attribute val*/ + else { + ezxml_free_attr(attr); + return ezxml_err(root, d, "missing %c", q); + } + + for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3); + attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, (a + && a[j]) ? *a[j + 2] : ' '); + if (attr[l + 1] < d || attr[l + 1] > s) + attr[l + 3][l / 2] = EZXML_TXTM; /* value malloced*/ + } + } + while (isspace(*s)) s++; + } + + if (*s == '/') { /* self closing tag*/ + *(s++) = '\0'; + if ((*s && *s != '>') || (! *s && e != '>')) { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + ezxml_open_tag(root, d, attr); + ezxml_close_tag(root, d, s); + } + else if ((q = *s) == '>' || (! *s && e == '>')) { /* open tag*/ + *s = '\0'; /* temporarily null terminate tag name*/ + ezxml_open_tag(root, d, attr); + *s = q; + } + else { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + } + else if (*s == '/') { /* close tag*/ + s += strcspn(d = s + 1, EZXML_WS ">") + 1; + if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >"); + *s = '\0'; /* temporarily null terminate tag name*/ + if (ezxml_close_tag(root, d, s)) return &root->xml; + if (isspace(*s = q)) s += strspn(s, EZXML_WS); + } + else if (! strncmp(s, "!--", 3)) { /* xml comment*/ + if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) || + (! *s && e != '>')) return ezxml_err(root, d, "unclosed